]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blob - bip39-standalone.html
Add nubits
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / bip39-standalone.html
1 <!DOCTYPE html>
2 <html>
3 <head lang="en">
4 <meta charset="utf-8" />
5 <title>BIP39 - Mnemonic Code</title>
6 <style>/*!
7 * Bootstrap v3.2.0 (http://getbootstrap.com)
8 * Copyright 2011-2014 Twitter, Inc.
9 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
10 *//*! 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}}</style>
11 <meta content="Mnemonic code for generating deterministic keys" name="description"/>
12 <meta content="width=device-width, initial-scale=1.0" name="viewport" />
13 <meta content="bitcoin mnemonic converter" name="description" />
14 <meta content="Ian Coleman" name="author" />
15 <link type="image/x-icon" rel="icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII=" />
16
17 <style>
18 body {
19 padding-bottom: 32px;
20 }
21 .form-control[readonly] {
22 cursor: text;
23 }
24 .feedback-container {
25 position: fixed;
26 top: 0;
27 width: 100%;
28 text-align: center;
29 z-index: 4;
30 }
31 .feedback {
32 display: table;
33 padding: 0.5em 1em;
34 background-color: orange;
35 margin: 0 auto;
36 font-size: 2em;
37 color: #444;
38 border: 2px solid #555;
39 border-top: 0;
40 border-bottom-left-radius: 20px 20px;
41 border-bottom-right-radius: 20px 20px;
42 }
43 .no-border {
44 border: 0;
45 box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
46 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
47 }
48 .phrase {
49 word-break: keep-all;
50 }
51 .generate-container .strength {
52 /* override mobile width from bootstrap */
53 width: auto!important;
54 display: inline-block;
55 }
56 .languages a {
57 padding-left: 10px;
58 }
59 .languages a:nth-of-type(1) {
60 margin-left: -12px;
61 padding-left: 0;
62 }
63 .monospace {
64 font-family: monospace;
65 }
66 .entropy-container .filtered,
67 .entropy-container .binary {
68 word-wrap: break-word;
69 }
70 .entropy-container li {
71 padding-bottom: 5px;
72 }
73 .card-suit {
74 font-size: 19px;
75 line-height: 0;
76 }
77 .card-suit.club {
78 color: #009F00;
79 }
80 .card-suit.diamond {
81 color: #3D5DC4;
82 }
83 .card-suit.heart {
84 color: #F00;
85 }
86 .card-suit.spade {
87 color: #000;
88 }
89 .qr-container {
90 position: fixed;
91 top: 0;
92 right: 0;
93 text-align: center;
94 background-color: #FFF;
95 border: 1px solid #CCC;
96 }
97 .qr-image {
98 margin: 5px;
99 }
100 .qr-hint,
101 .qr-warning {
102 padding: 2px;
103 max-width: 150px;
104 }
105 .more-info {
106 cursor: help;
107 border-bottom: 1px dashed #000;
108 text-decoration: none;
109 }
110 .version {
111 position: absolute;
112 top: 5px;
113 right: 5px;
114 }
115 </style>
116 </head>
117 <body>
118 <div class="container">
119
120 <h1 class="text-center">Mnemonic Code Converter</h1>
121 <p class="version">v0.2.7</p>
122 <hr>
123 <div class="row">
124 <div class="col-md-12">
125 <h2>Mnemonic</h2>
126 <form class="form-horizontal" role="form">
127 <div class="form-group">
128 <div class="col-sm-2"></div>
129 <div class="col-sm-10">
130 <p>You can enter an existing BIP39 mnemonic, 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>
131 <p>
132 For more info see the
133 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target="_blank">BIP39 spec</a>.
134 </p>
135 </div>
136 </div>
137 <div class="form-group generate-container">
138 <label class="col-sm-2 control-label"></label>
139 <div class="col-sm-10">
140 <div class="form-inline">
141 <div class="input-group-inline">
142 <span>Generate a random mnemonic, or enter your own below</span>:
143 <button class="btn generate">Generate</button>
144 <select id="strength" class="strength form-control">
145 <option value="3">3</option>
146 <option value="6">6</option>
147 <option value="9">9</option>
148 <option value="12">12</option>
149 <option value="15" selected>15</option>
150 <option value="18">18</option>
151 <option value="21">21</option>
152 <option value="24">24</option>
153 </select>
154 <span>words</span>
155 </div>
156 </div>
157 </div>
158 </div>
159 <div class="entropy-container hidden">
160 <div class="form-group text-danger">
161 <label class="col-sm-2 control-label">Warning</label>
162 <div class="col-sm-10 form-control-static">
163 <span>Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.</span>
164 <a href="#entropy-notes">Read more</a>
165 </div>
166 </div>
167 <div class="form-group">
168 <label for="entropy" class="col-sm-2 control-label">Entropy</label>
169 <div class="col-sm-7">
170 <textarea id="entropy" rows="2" class="entropy form-control" placeholder="Accepts either binary, base 6, 6-sided dice, base 10, hexadecimal or cards"></textarea>
171 <div class="row filter-warning text-danger hidden">
172 <p class="col-sm-12">
173 <strong>
174 Some characters have been discarded
175 </strong>
176 </p>
177 </div>
178 <div class="row">
179 <label class="col-sm-3 control-label"><span class="more-info" title="Based on estimates from zxcvbn using Filtered Entropy">Time To Crack</span></label>
180 <div class="crack-time col-sm-3 form-control-static"></div>
181 <label class="col-sm-3 control-label">Event Count</label>
182 <div class="event-count col-sm-3 form-control-static"></div>
183 </div>
184 <div class="row">
185 <label class="col-sm-3 control-label">Entropy Type</label>
186 <div class="type col-sm-3 form-control-static"></div>
187 <label class="col-sm-3 control-label">Bits Per Event</label>
188 <div class="bits-per-event col-sm-3 form-control-static"></div>
189 </div>
190 <div class="row">
191 <label class="col-sm-3 control-label">Raw Entropy Words</label>
192 <div class="word-count col-sm-3 form-control-static"></div>
193 <label class="col-sm-3 control-label"><span class="more-info" title="Total bits of entropy may be less than indicated if any entropy event uses a weak source.">Total Bits</span></label>
194 <div class="bits col-sm-3 form-control-static"></div>
195 </div>
196 <label class="col-sm-3 control-label">Filtered Entropy</label>
197 <div class="filtered col-sm-9 form-control-static"></div>
198 <label class="col-sm-3 control-label">Raw Binary</label>
199 <div class="binary col-sm-9 form-control-static"></div>
200 <label class="col-sm-3 control-label">Mnemonic Length</label>
201 <div class="col-sm-9">
202 <select class="mnemonic-length form-control">
203 <option value="raw" selected>Use Raw Entropy (3 words per 32 bits)</option>
204 <option value="12">12 <span>Words</span></option>
205 <option value="15">15 <span>Words</option>
206 <option value="18">18 <span>Words</span></option>
207 <option value="21">21 <span>Words</span></option>
208 <option value="24">24 <span>Words</span></option>
209 </select>
210 </div>
211 </div>
212 <div class="col-sm-3">
213 <p>Valid entropy values include:</p>
214 <ul>
215 <li><strong>Binary</strong> [0-1]<br>101010011</li>
216 <li><strong>Base 6</strong> [0-5]<br>123434014</li>
217 <li><strong>Dice</strong> [1-6]<br>62535634</li>
218 <li><strong>Base 10</strong> [0-9]<br>90834528</li>
219 <li><strong>Hex</strong> [0-9A-F]<br>4187a8bfd9</li>
220 <li><strong>Card</strong> [A2-9TJQK][CDHS]<br>ahqs9dtc</li>
221 </ul>
222 </div>
223 </div>
224 </div>
225 <div class="form-group">
226 <div class="col-sm-2"></div>
227 <div class="col-sm-10 checkbox">
228 <label>
229 <input type="checkbox" class="use-entropy">
230 <span>Supply my own source of entropy</span>
231 </label>
232 </div>
233 </div>
234 <div class="form-group">
235 <label class="col-sm-2 control-label">Mnemonic Language</label>
236 <div class="col-sm-10 languages">
237 <div class="form-control no-border">
238 <a href="#english">English</a>
239 <a href="#japanese" title="Japanese">日本語</a>
240 <a href="#spanish" title="Spanish">Español</a>
241 <a href="#chinese_simplified" title="Chinese (Simplified)">中文(简体)</a>
242 <a href="#chinese_traditional" title="Chinese (Traditional)">中文(繁體)</a>
243 <a href="#french" title="French">Français</a>
244 <a href="#italian" title="Italian">Italiano</a>
245 </div>
246 </div>
247 </div>
248 <div class="form-group">
249 <label for="phrase" class="col-sm-2 control-label">BIP39 Mnemonic</label>
250 <div class="col-sm-10">
251 <textarea id="phrase" class="phrase form-control" data-show-qr></textarea>
252 </div>
253 </div>
254 <div class="form-group">
255 <label for="passphrase" class="col-sm-2 control-label">BIP39 Passphrase (optional)</label>
256 <div class="col-sm-10">
257 <textarea id="passphrase" class="passphrase form-control"></textarea>
258 </div>
259 </div>
260 <div class="form-group">
261 <label for="seed" class="col-sm-2 control-label">BIP39 Seed</label>
262 <div class="col-sm-10">
263 <textarea id="seed" class="seed form-control" readonly="readonly" data-show-qr></textarea>
264 </div>
265 </div>
266 <div class="form-group">
267 <label for="network-phrase" class="col-sm-2 control-label">Coin</label>
268 <div class="col-sm-10">
269 <select id="network-phrase" class="network form-control">
270 <!-- populated by javascript -->
271 </select>
272 </div>
273 </div>
274 <div class="form-group">
275 <label for="root-key" class="col-sm-2 control-label">BIP32 Root Key</label>
276 <div class="col-sm-10">
277 <textarea id="root-key" class="root-key form-control" data-show-qr></textarea>
278 </div>
279 </div>
280 <div class="form-group litecoin-ltub-container hidden">
281 <label for="litecoin-use-ltub" class="col-sm-2 control-label">Prefixes</label>
282 <div class="col-sm-10 checkbox">
283 <label>
284 <input type="checkbox" id="litecoin-use-ltub" class="litecoin-use-ltub">
285 Use <code>Ltpv / Ltub</code> instead of <code>xprv / xpub</code>
286 </label>
287 </div>
288 </div>
289 </form>
290 </div>
291 </div>
292
293 <hr>
294
295 <div class="row">
296 <div class="col-md-12">
297 <h2>Derivation Path</h2>
298 <ul class="derivation-type nav nav-tabs" role="tablist">
299 <li id="bip32-tab">
300 <a href="#bip32" role="tab" data-toggle="tab">BIP32</a>
301 </li>
302 <li id="bip44-tab" class="active">
303 <a href="#bip44" role="tab" data-toggle="tab">BIP44</a>
304 </li>
305 <li id="bip49-tab">
306 <a href="#bip49" role="tab" data-toggle="tab">BIP49</a>
307 </li>
308 </ul>
309 <div class="derivation-type tab-content">
310 <div id="bip44" class="tab-pane active">
311 <form class="form-horizontal" role="form">
312 <br>
313 <div class="col-sm-2"></div>
314 <div class="col-sm-10">
315 <p>
316 For more info see the
317 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">BIP44 spec</a>.
318 </p>
319 </div>
320 <div class="form-group">
321 <label for="purpose" class="col-sm-2 control-label">
322 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank">Purpose</a>
323 </label>
324 <div class="col-sm-10">
325 <input id="purpose" type="text" class="purpose form-control" value="44" readonly>
326 </div>
327 </div>
328 <div class="form-group">
329 <label for="coin" class="col-sm-2 control-label">
330 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank">Coin</a>
331 </label>
332 <div class="col-sm-10">
333 <input id="coin" type="text" class="coin form-control" value="0" readonly>
334 </div>
335 </div>
336 <div class="form-group">
337 <label for="account" class="col-sm-2 control-label">
338 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank">Account</a>
339 </label>
340 <div class="col-sm-10">
341 <input id="account" type="text" class="account form-control" value="0">
342 </div>
343 </div>
344 <div class="form-group">
345 <label for="change" class="col-sm-2 control-label">
346 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank">External / Internal</a>
347 </label>
348 <div class="col-sm-10">
349 <input id="change" type="text" class="change form-control" value="0">
350 </div>
351 </div>
352 <div class="form-group">
353 <label class="col-sm-2 control-label">
354 </label>
355 <div class="col-sm-10">
356 <p>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.</p>
357 </div>
358 </div>
359 <div class="form-group">
360 <label for="account-xprv" class="col-sm-2 control-label">
361 <span>Account Extended Private Key</span>
362 </label>
363 <div class="col-sm-10">
364 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
365 </div>
366 </div>
367 <div class="form-group">
368 <label for="account-xpub" class="col-sm-2 control-label">
369 <span>Account Extended Public Key</span>
370 </label>
371 <div class="col-sm-10">
372 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
373 </div>
374 </div>
375 <div class="form-group">
376 <label class="col-sm-2 control-label">
377 </label>
378 <div class="col-sm-10">
379 <p>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
380 </div>
381 </div>
382 <div class="form-group">
383 <label for="bip44-path" class="col-sm-2 control-label">BIP32 Derivation Path</label>
384 <div class="col-sm-10">
385 <input id="bip44-path" type="text" class="path form-control" value="m/44'/0'/0'/0" readonly="readonly">
386 </div>
387 </div>
388 </form>
389 </div>
390 <div id="bip32" class="tab-pane">
391 <form class="form-horizontal" role="form">
392 <br>
393 <div class="col-sm-2"></div>
394 <div class="col-sm-10">
395 <p>
396 For more info see the
397 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">BIP32 spec</a>
398 </p>
399 </div>
400 <div class="form-group">
401 <label for="bip32-client" class="col-sm-2 control-label">Client</label>
402 <div class="col-sm-10">
403 <select id="bip32-client" class="client form-control">
404 <option value="custom">Custom derivation path</option>
405 <!-- populated by javascript -->
406 </select>
407 </div>
408 </div>
409 <div class="form-group">
410 <label for="bip32-path" class="col-sm-2 control-label">BIP32 Derivation Path</label>
411 <div class="col-sm-10">
412 <input id="bip32-path" type="text" class="path form-control" value="m/0">
413 </div>
414 </div>
415 <div class="form-group">
416 <div class="col-sm-2"></div>
417 <label class="col-sm-10">
418 <input class="hardened-addresses" type="checkbox">
419 <span>Use hardened addresses</span>
420 </label>
421 </div>
422 <div class="form-group">
423 <div class="col-sm-2"></div>
424 <label class="col-sm-10">
425 <input class="p2wpkh-nested-in-p2sh" type="checkbox">
426 <span>Use SegWit addresses (ie P2WPKH Nested In P2SH)</span>
427 </label>
428 </div>
429 <div class="form-group">
430 <label for="core-path" class="col-sm-2 control-label">Bitcoin Core</label>
431 <div class="col-sm-10">
432 <p class="form-control no-border">
433 Use path <code>m/0'/0'</code> with hardened addresses.
434 </p>
435 <p class="form-control no-border">
436 For more info see the
437 <a href="https://github.com/bitcoin/bitcoin/pull/8035" target="_blank">Bitcoin Core BIP32 implementation</a>
438 </p>
439 </div>
440 </div>
441 <div class="form-group">
442 <label for="core-path" class="col-sm-2 control-label">Multibit</label>
443 <div class="col-sm-10">
444 <p class="form-control no-border">
445 <span>Use path <code>m/0'/0</code>.</span>
446 </p>
447 <p class="form-control no-border">
448 <span>For more info see</span>
449 <a href="https://multibit.org/" target="_blank">MultiBit HD</a>
450 </p>
451 </div>
452 </div>
453 <div class="form-group">
454 <label class="col-sm-2 control-label">Block Explorers</label>
455 <div class="col-sm-10">
456 <p class="form-control no-border">
457 <span>Use path <code>m/44'/0'/0'</code>.</span>
458 <span>Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.</span>
459 </p>
460 <p class="form-control no-border">
461 <span>Can be used with</span>:
462 <a href="https://blockchain.info/" target="_blank">blockchain.info</a>
463 </p>
464 </div>
465 </div>
466 </form>
467 </div>
468 <div id="bip49" class="tab-pane">
469 <form class="form-horizontal" role="form">
470 <br>
471 <div class="unavailable hidden">
472 <div class="form-group">
473 <div class="col-sm-2"></div>
474 <div class="col-sm-10">
475 <p>BIP49 is unavailable for this coin.</p>
476 </div>
477 </div>
478 </div>
479 <div class="available">
480 <div class="col-sm-2"></div>
481 <div class="col-sm-10">
482 <p>
483 For more info see the
484 <a href="https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki" target="_blank">BIP49 spec</a>.
485 </p>
486 </div>
487 <div class="form-group">
488 <label for="purpose" class="col-sm-2 control-label">
489 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank">Purpose</a>
490 </label>
491 <div class="col-sm-10">
492 <input id="purpose" type="text" class="purpose form-control" value="49" readonly>
493 </div>
494 </div>
495 <div class="form-group">
496 <label for="coin" class="col-sm-2 control-label">
497 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank">Coin</a>
498 </label>
499 <div class="col-sm-10">
500 <input id="coin" type="text" class="coin form-control" value="0" readonly>
501 </div>
502 </div>
503 <div class="form-group">
504 <label for="account" class="col-sm-2 control-label">
505 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank">Account</a>
506 </label>
507 <div class="col-sm-10">
508 <input id="account" type="text" class="account form-control" value="0">
509 </div>
510 </div>
511 <div class="form-group">
512 <label for="change" class="col-sm-2 control-label">
513 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank">External / Internal</a>
514 </label>
515 <div class="col-sm-10">
516 <input id="change" type="text" class="change form-control" value="0">
517 </div>
518 </div>
519 <div class="form-group">
520 <label class="col-sm-2 control-label">
521 </label>
522 <div class="col-sm-10">
523 <p>The account extended keys can be used for importing to most BIP49 compatible wallets.</p>
524 </div>
525 </div>
526 <div class="form-group">
527 <label for="account-xprv" class="col-sm-2 control-label">
528 <span>Account Extended Private Key</span>
529 </label>
530 <div class="col-sm-10">
531 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
532 </div>
533 </div>
534 <div class="form-group">
535 <label for="account-xpub" class="col-sm-2 control-label">
536 <span>Account Extended Public Key</span>
537 </label>
538 <div class="col-sm-10">
539 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
540 </div>
541 </div>
542 <div class="form-group">
543 <label class="col-sm-2 control-label">
544 </label>
545 <div class="col-sm-10">
546 <p>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
547 </div>
548 </div>
549 <div class="form-group">
550 <label for="bip49-path" class="col-sm-2 control-label">BIP32 Derivation Path</label>
551 <div class="col-sm-10">
552 <input id="bip49-path" type="text" class="path form-control" value="m/49'/0'/0'/0" readonly="readonly">
553 </div>
554 </div>
555 </div>
556 </form>
557 </div>
558 </div>
559 <form class="form-horizontal" role="form">
560 <div class="form-group">
561 <label for="extended-priv-key" class="col-sm-2 control-label">BIP32 Extended Private Key</label>
562 <div class="col-sm-10">
563 <textarea id="extended-priv-key" class="extended-priv-key form-control" readonly="readonly" data-show-qr></textarea>
564 </div>
565 </div>
566 <div class="form-group">
567 <label for="extended-pub-key" class="col-sm-2 control-label">BIP32 Extended Public Key</label>
568 <div class="col-sm-10">
569 <textarea id="extended-pub-key" class="extended-pub-key form-control" readonly="readonly" data-show-qr></textarea>
570 </div>
571 </div>
572 </form>
573 </div>
574 </div>
575
576 <hr>
577
578 <div class="row">
579 <div class="col-md-12">
580 <h2>Derived Addresses</h2>
581 <p>Note these addreses are derived from the BIP32 Extended Key</p>
582 <table class="table table-striped">
583 <thead>
584 <th>
585 <div class="input-group">
586 <span>Path</span>&nbsp;&nbsp;
587 <button class="index-toggle">Toggle</button>
588 </div>
589 </th>
590 <th>
591 <div class="input-group">
592 <span>Address</span>&nbsp;&nbsp;
593 <button class="address-toggle">Toggle</button>
594 </div>
595 </th>
596 <th>
597 <div class="input-group">
598 <span>Public Key</span>&nbsp;&nbsp;
599 <button class="public-key-toggle">Toggle</button>
600 </div>
601 </th>
602 <th>
603 <div class="input-group">
604 <span>Private Key</span>&nbsp;&nbsp;
605 <button class="private-key-toggle">Toggle</button>
606 </div>
607 </th>
608 </thead>
609 <tbody class="addresses monospace">
610 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
611 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
612 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
613 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
614 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
615 </tbody>
616 </table>
617 </div>
618 </div>
619 <span>Show more rows</span>:
620 <input type="number" class="rows-to-add" value="20">
621 <button class="more">Show</button>
622
623 <hr>
624
625 <div class="row">
626 <div class="col-md-12">
627 <h2>More info</h2>
628 <h3>BIP39 <span class="small">Mnemonic code for generating deterministic keys</span></h3>
629 <p>
630 Read more at the
631 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a>
632 </p>
633 <h3>BIP32 <span class="small">Hierarchical Deterministic Wallets</span></h3>
634 <p>
635 Read more at the
636 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a>
637 </p>
638 <p>
639 See the demo at
640 <a href="http://bip32.org/" target="_blank">bip32.org</a>
641 </p>
642 <h3>BIP44 <span class="small">Multi-Account Hierarchy for Deterministic Wallets</span></h3>
643 <p>
644 Read more at the
645 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a>
646 </p>
647 <h3>BIP49 <span class="small">Derivation scheme for P2WPKH-nested-in-P2SH based accounts</span></h3>
648 <p>
649 Read more at the
650 <a href="https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki" target="_blank">official BIP49 spec</a>
651 </p>
652 <h3>Private Keys</h3>
653 <p>
654 <span>
655 Use private keys at
656 <a href="https://web.archive.org/web/20150707020924/https://brainwallet.org/" target="_blank">brainwallet.org</a>.
657 </span>
658 <span>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span>
659 </p>
660 <h3 id="entropy-notes">Entropy</h3>
661 <p>
662 <span>
663 Entropy values must be sourced from a
664 <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>.
665 </span>
666 <span>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span>
667 <span>
668 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address,
669 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't
670 random enough for the needs of this tool.
671 </span>
672 </p>
673 <p>
674 <strong><span>Do not store entropy.</span></strong>
675 </p>
676 <p>
677 <span>Storing entropy (such as keeping a deck of cards in a specific shuffled order) is unreliable compared to storing a mnemonic.</span>
678 <span>Instead of storing entropy, store the mnemonic generated from the entropy.</span>
679 <span><a href="https://en.wikipedia.org/wiki/Steganography#Physical" target="_blank">Steganography</a> may be beneficial when storing the mnemonic.</span>
680 </p>
681 <p>
682 <span>
683 The random mnemonic generator on this page uses a
684 <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>.
685 </span>
686 <span>The built in random generator can generally be trusted more than your own intuition about randomness.</span>
687 <span>If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.</span>
688 <span>In that case you might choose to use your own source of entropy.</span>
689 </p>
690 <p>
691 <a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank">You are not a good source of entropy.</a>
692 </p>
693 <h3>License</h3>
694 <p>
695 <span>Please refer to <a href="https://github.com/iancoleman/bip39/blob/master/LICENSE" target="_blank">the software license</a> for more detail.
696 </span>
697 </p>
698 <p>The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.</p>
699 </div>
700 </div>
701
702 <hr>
703
704 <div class="row">
705 <div class="col-md-12">
706 <h2>Alternative Tools</h2>
707 <p>This tool is interoperable with any BIP39 wallet.</p>
708 <p>Some similar tools to this one (ie not consumer wallets) are</p>
709 <p>
710 <a href="https://bip32jp.github.io/english/">
711 https://bip32jp.github.io/english/
712 </a>
713 </p>
714 </div>
715 </div>
716
717 <hr>
718
719 <div class="row">
720 <div class="col-md-12">
721
722 <h2>Offline Usage</h2>
723
724 <p>
725 You can use this tool without having to be online.
726 </p>
727 <p>
728 In your browser, select file save-as, and save this page
729 as a file.
730 </p>
731 <p>
732 Double-click that file to open it in a browser
733 on any offline computer.
734 </p>
735 <p>
736 <span>Alternatively, download the file from the repository</span>
737 -
738 <a href="https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39</a>
739 </p>
740
741 </div>
742 </div>
743
744 <hr>
745
746 <div class="row">
747 <div class="col-md-12">
748
749 <h2>This project is 100% open-source code</h2>
750
751 <p>
752 <span>Get the source code from the repository</span>
753 -
754 <a href="https://github.com/iancoleman/bip39" target="_blank">
755 https://github.com/iancoleman/bip39
756 </a>
757 </p>
758
759 <h3>Libraries</h3>
760
761 <p>
762 <span>BitcoinJS - </span>
763 <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank">
764 https://github.com/bitcoinjs/bitcoinjs-lib
765 </a>
766 </p>
767
768 <p>
769 <span>jsBIP39 - </span>
770 <a href="https://github.com/iancoleman/jsbip39" target="_blank">
771 https://github.com/iancoleman/jsbip39
772 </a>
773 </p>
774
775 <p>
776 <span>sjcl - </span>
777 <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank">
778 https://github.com/bitwiseshiftleft/sjcl
779 </a>
780 </p>
781
782 <p>
783 <span>jQuery - </span>
784 <a href="https://jquery.com/" target="_blank">
785 https://jquery.com/
786 </a>
787 </p>
788
789 <p>
790 <span>Twitter Bootstrap - </span>
791 <a href="http://getbootstrap.com/" target="_blank">
792 http://getbootstrap.com/
793 </a>
794 </p>
795
796 </div>
797 </div>
798
799 </div>
800
801 <div class="qr-container hidden">
802 <div class="qr-hint bg-primary hidden">Click field to hide QR</div>
803 <div class="qr-hint bg-primary">Click field to show QR</div>
804 <div class="qr-hider hidden">
805 <div class="qr-image"></div>
806 <div class="qr-warning bg-primary">Caution: Scanner may keep history</div>
807 </div>
808 </div>
809
810 <div class="feedback-container">
811 <div class="feedback">Loading...</div>
812 </div>
813
814 <script type="text/template" id="address-row-template">
815 <tr>
816 <td class="index"><span></span></td>
817 <td class="address"><span data-show-qr></span></td>
818 <td class="pubkey"><span data-show-qr></span></td>
819 <td class="privkey"><span data-show-qr></span></td>
820 </tr>
821 </script>
822 <script>// From
823 // https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
824 // Required for ethereumjs-utils.js when run in phantomjs-2.1.1
825 // but is not required in any modern browsers.
826 // For more information, see
827 // https://www.bountysource.com/issues/38485709-error-rendering-plot-with-phantomjs
828
829 //----------------------------------------------------------------------
830 //
831 // ECMAScript 2015 Polyfills
832 //
833 //----------------------------------------------------------------------
834
835 (function (global) {
836 "use strict";
837
838 // Set this to always override native implementations, for testing
839 // the polyfill in browsers with partial/full ES2015 support.
840 var OVERRIDE_NATIVE_FOR_TESTING = false;
841
842 var undefined = (void 0); // Paranoia
843
844 // Helpers
845
846 function strict(o) {
847 return o === global ? undefined : o;
848 }
849
850 function hook(o, p, f) {
851 var op = o[p];
852 console.assert(typeof op === 'function', 'Hooking a non-function');
853 o[p] = function() {
854 var o = strict(this);
855 var r = f.apply(o, arguments);
856 return r !== undefined ? r : op.apply(o, arguments);
857 };
858 }
859
860 function isSymbol(s) {
861 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
862 }
863
864 function getPropertyDescriptor(target, name) {
865 var desc = Object.getOwnPropertyDescriptor(target, name);
866 var proto = Object.getPrototypeOf(target);
867 while (!desc && proto) {
868 desc = Object.getOwnPropertyDescriptor(proto, name);
869 proto = Object.getPrototypeOf(proto);
870 }
871 return desc;
872 }
873
874 var enqueue = (function(nativePromise, nativeSetImmediate) {
875 if (nativePromise)
876 return function(job) { nativePromise.resolve().then(function() { job(); }); };
877 if (nativeSetImmediate)
878 return function(job) { nativeSetImmediate(job); };
879 return function(job) { setTimeout(job, 0); };
880 }(global['Promise'], global['setImmediate']));
881
882 function define(o, p, v, override) {
883 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
884 return;
885
886 if (typeof v === 'function') {
887 // Sanity check that functions are appropriately named (where possible)
888 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
889 Object.defineProperty(o, p, {
890 value: v,
891 configurable: true,
892 enumerable: false,
893 writable: true
894 });
895 } else {
896 Object.defineProperty(o, p, {
897 value: v,
898 configurable: false,
899 enumerable: false,
900 writable: false
901 });
902 }
903 }
904
905 function set_internal(o, p, v) {
906 Object.defineProperty(o, p, {
907 value: v,
908 configurable: false,
909 enumerable: false,
910 writable: true
911 });
912 }
913
914 // Snapshot intrinsic functions
915 var $isNaN = global.isNaN,
916 $parseInt = global.parseInt,
917 $parseFloat = global.parseFloat;
918
919 var E = Math.E,
920 LOG10E = Math.LOG10E,
921 LOG2E = Math.LOG2E,
922 abs = Math.abs,
923 ceil = Math.ceil,
924 exp = Math.exp,
925 floor = Math.floor,
926 log = Math.log,
927 max = Math.max,
928 min = Math.min,
929 pow = Math.pow,
930 random = Math.random,
931 sqrt = Math.sqrt;
932
933 var orig_match = String.prototype.match,
934 orig_replace = String.prototype.replace,
935 orig_search = String.prototype.search,
936 orig_split = String.prototype.split;
937
938 // These are used for implementing the polyfills, but not exported.
939
940 // Inspired by https://gist.github.com/1638059
941 /** @constructor */
942 function EphemeronTable() {
943 var secretKey = ObjectCreate(null);
944
945 function conceal(o) {
946 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
947 Object.defineProperty(o, 'valueOf', {
948 value: (function(secretKey) {
949 return function (k) {
950 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
951 };
952 }(secretKey)),
953 configurable: true,
954 writeable: true,
955 enumerable: false
956 });
957 return secrets;
958 }
959
960 function reveal(o) {
961 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
962 return v === o ? null : v;
963 }
964
965 return {
966 clear: function() {
967 secretKey = ObjectCreate(null);
968 },
969 remove: function(key) {
970 var secrets = reveal(key);
971 if (secrets && HasOwnProperty(secrets, 'value')) {
972 delete secrets.value;
973 return true;
974 }
975 return false;
976 },
977 get: function(key, defaultValue) {
978 var secrets = reveal(key);
979 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
980 },
981 has: function(key) {
982 var secrets = reveal(key);
983 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
984 },
985 set: function(key, value) {
986 var secrets = reveal(key) || conceal(key);
987 secrets.value = value;
988 }
989 };
990 }
991
992 var empty = Object.create(null);
993
994 //----------------------------------------------------------------------
995 //
996 // ECMAScript 2015
997 // http://www.ecma-international.org/ecma-262/6.0/
998 //
999 //----------------------------------------------------------------------
1000
1001 // ---------------------------------------
1002 // 19.4 Symbol Objects
1003 // ---------------------------------------
1004
1005 // NOTE: Symbols are defined here - out of spec order - since we need the
1006 // properties and prototype to be populated for other polyfills.
1007
1008 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
1009
1010 var symbolForKey;
1011 (function() {
1012 var secret = Object.create(null);
1013 var symbolMap = {};
1014 symbolForKey = function(k) {
1015 return symbolMap[k];
1016 };
1017
1018 var GlobalSymbolRegistry = [];
1019
1020 function unique(bits) {
1021 return Array(bits + 1).join('x').replace(/x/g, function() {
1022 return random() < 0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
1023 });
1024 }
1025
1026 // 19.4.1 The Symbol Constructor
1027 // 19.4.1.1 Symbol ( description=undefined )
1028 function Symbol(description) {
1029 if (!(this instanceof Symbol)) return new Symbol(description, secret);
1030 if (this instanceof Symbol && arguments[1] !== secret) throw TypeError();
1031
1032 var descString = description === undefined ? undefined : String(description);
1033
1034 set_internal(this, '[[SymbolData]]', unique(128));
1035 set_internal(this, '[[Description]]', descString);
1036
1037 symbolMap[this] = this;
1038 return this;
1039 }
1040
1041 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
1042 global.Symbol = Symbol;
1043
1044 // 19.4.2 Properties of the Symbol Constructor
1045
1046 // 19.4.2.1 Symbol.for (key)
1047 define(Symbol, 'for', function for_(key) {
1048 var stringKey = String(key);
1049 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
1050 var e = GlobalSymbolRegistry[i];
1051 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
1052 }
1053 var newSymbol = Symbol(key);
1054 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
1055 return newSymbol;
1056 });
1057
1058 // 19.4.2.2 Symbol.hasInstance
1059 // 19.4.2.3 Symbol.isConcatSpreadable
1060
1061 // 19.4.2.4 Symbol.iterator
1062 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
1063
1064 // 19.4.2.5 Symbol.keyFor (sym)
1065 define(Symbol, 'keyFor', function keyFor(sym) {
1066 if (!(sym instanceof Symbol)) throw TypeError();
1067 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
1068 var e = GlobalSymbolRegistry[i];
1069 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
1070 }
1071 return undefined;
1072 });
1073
1074 // 19.4.2.6 Symbol.match
1075 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
1076
1077 // 19.4.2.7 Symbol.prototype
1078
1079 // 19.4.2.8 Symbol.replace
1080 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
1081
1082 // 19.4.2.9 Symbol.search
1083 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
1084
1085 // 19.4.2.10 Symbol.species
1086
1087 // 19.4.2.11 Symbol.search
1088 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
1089
1090 // 19.4.2.12 Symbol.toPrimitive
1091
1092 // 19.4.2.13 Symbol.toStringTag
1093 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
1094
1095 // 19.4.2.14 Symbol.unscopables
1096
1097 // 19.4.3 Properties of the Symbol Prototype Object
1098 // 19.4.3.1 Symbol.prototype.constructor
1099
1100 // 19.4.3.2 Symbol.prototype.toString ( )
1101 Object.defineProperty(Symbol.prototype, 'toString', {
1102 value: function toString() {
1103 var s = strict(this);
1104 var desc = s['[[Description]]'];
1105 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
1106 },
1107 configurable: true, writeable: true, enumerable: false });
1108
1109 // 19.4.3.3 Symbol.prototype.valueOf ( )
1110 Object.defineProperty(Symbol.prototype, 'valueOf', {
1111 value: function valueOf() {
1112 // To prevent automatic string conversion:
1113 throw TypeError();
1114
1115 // Spec has approximately the following:
1116 //var s = strict(this);
1117 //if (Type(s) === 'symbol') return s;
1118 //if (Type(s) !== 'object') throw TypeError();
1119 //if (!('[[SymbolData]]' in s)) throw TypeError();
1120 //return s['[[SymbolData]]'];
1121 },
1122 configurable: true, writeable: true, enumerable: false });
1123
1124 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1125 // (Done later to polyfill partial implementations)
1126
1127 // 19.4.4 Properties of Symbol Instances
1128 }());
1129
1130 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
1131
1132 // Defined here so that other prototypes can reference it
1133 // 25.1.2 The %IteratorPrototype% Object
1134 var $IteratorPrototype$ = {};
1135
1136 //----------------------------------------
1137 // 6 ECMAScript Data Types and Values
1138 //----------------------------------------
1139
1140 // 6.1 ECMAScript Language Types
1141
1142 // "Type(x)" is used as shorthand for "the type of x"...
1143 function Type(v) {
1144 switch (typeof v) {
1145 case 'undefined': return 'undefined';
1146 case 'boolean': return 'boolean';
1147 case 'number': return 'number';
1148 case 'string': return 'string';
1149 case 'symbol': return 'symbol';
1150 default:
1151 if (v === null) return 'null';
1152 if (v instanceof global.Symbol) return 'symbol';
1153 return 'object';
1154 }
1155 }
1156
1157 // 6.1.5.1 Well-Known Symbols
1158 var $$iterator = global.Symbol.iterator,
1159 $$match = global.Symbol.match,
1160 $$replace = global.Symbol.replace,
1161 $$search = global.Symbol.search,
1162 $$split = global.Symbol.split,
1163 $$toStringTag = global.Symbol.toStringTag;
1164
1165 //----------------------------------------
1166 // 7 Abstract Operations
1167 //----------------------------------------
1168
1169 //----------------------------------------
1170 // 7.1 Type Conversion
1171 //----------------------------------------
1172
1173 // 7.1.1 ToPrimitive ( input [, PreferredType] )
1174 // just use valueOf()
1175
1176 // 7.1.2 ToBoolean ( argument )
1177 // just use Boolean()
1178
1179 // 7.1.3 ToNumber ( argument )
1180 // just use Number()
1181
1182 // 7.1.4 ToInteger ( argument )
1183 function ToInteger(n) {
1184 n = Number(n);
1185 if ($isNaN(n)) return 0;
1186 if (n === 0 || n === Infinity || n === -Infinity) return n;
1187 return ((n < 0) ? -1 : 1) * floor(abs(n));
1188 }
1189
1190 // 7.1.5 ToInt32 ( argument )
1191 function ToInt32(v) { return v >> 0; }
1192
1193 // 7.1.6 ToUint32 ( argument )
1194 function ToUint32(v) { return v >>> 0; }
1195
1196 // 7.1.7 ToInt16 ( argument )
1197 function ToInt16(v) { return (v << 16) >> 16; }
1198
1199 // 7.1.8 ToUint16 ( argument )
1200 function ToUint16(v) { return v & 0xFFFF; }
1201
1202 // 7.1.9 ToInt8 ( argument )
1203 function ToInt8(v) { return (v << 24) >> 24; }
1204
1205 // 7.1.10 ToUint8 ( argument )
1206 function ToUint8(v) { return v & 0xFF; }
1207
1208 // 7.1.11 ToUint8Clamp ( argument )
1209 function ToUint8Clamp(argument) {
1210 var number = Number(argument);
1211 if ($isNaN(number)) return 0;
1212 if (number <= 0) return 0;
1213 if (number >= 255) return 255;
1214 var f = floor(number);
1215 if ((f + 0.5) < number) return f + 1;
1216 if (number < (f + 0.5)) return f;
1217 if (f % 2) return f + 1;
1218 return f;
1219 }
1220
1221 // 7.1.12 ToString ( argument )
1222 // just use String()
1223
1224 // 7.1.13 ToObject ( argument )
1225 function ToObject(v) {
1226 if (v === null || v === undefined) throw TypeError();
1227 return Object(v);
1228 }
1229
1230 // 7.1.14 ToPropertyKey ( argument )
1231 function ToPropertyKey(v) {
1232 return String(v);
1233 }
1234
1235 // 7.1.15 ToLength ( argument )
1236 function ToLength(v) {
1237 var len = ToInteger(v);
1238 if (len <= 0) return 0;
1239 if (len === Infinity) return 0x20000000000000 - 1; // 2^53-1
1240 return min(len, 0x20000000000000 - 1); // 2^53-1
1241 }
1242
1243 // 7.1.16 CanonicalNumericIndexString ( argument )
1244
1245 //----------------------------------------
1246 // 7.2 Testing and Comparison Operations
1247 //----------------------------------------
1248
1249 // 7.2.1 RequireObjectCoercible ( argument )
1250 // 7.2.2 IsArray ( argument )
1251
1252 // 7.2.3 IsCallable ( argument )
1253 function IsCallable(o) { return typeof o === 'function'; }
1254
1255 // 7.2.4 IsConstructor ( argument )
1256 function IsConstructor(o) {
1257 // Hacks for Safari 7 TypedArray XXXConstructor objects
1258 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1259 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1260 // TODO: Can this be improved on?
1261 return typeof o === 'function';
1262 }
1263
1264 // 7.2.5 IsExtensible (O)
1265 // 7.2.6 IsInteger ( argument )
1266
1267 // 7.2.7 IsPropertyKey ( argument )
1268 function IsPropertyKey(argument) {
1269 if (Type(argument) === 'string') return true;
1270 if (Type(argument) === 'symbol') return true;
1271 return false;
1272 }
1273
1274 // 7.2.8 IsRegExp ( argument )
1275 // 7.2.5 IsConstructor ( argument )
1276
1277 // 7.2.9 SameValue(x, y)
1278 function SameValue(x, y) {
1279 if (typeof x !== typeof y) return false;
1280 switch (typeof x) {
1281 case 'undefined':
1282 return true;
1283 case 'number':
1284 if (x !== x && y !== y) return true;
1285 if (x === 0 && y === 0) return 1/x === 1/y;
1286 return x === y;
1287 case 'boolean':
1288 case 'string':
1289 case 'object':
1290 default:
1291 return x === y;
1292 }
1293 }
1294
1295 // 7.2.10 SameValueZero(x, y)
1296 function SameValueZero(x, y) {
1297 if (typeof x !== typeof y) return false;
1298 switch (typeof x) {
1299 case 'undefined':
1300 return true;
1301 case 'number':
1302 if (x !== x && y !== y) return true;
1303 return x === y;
1304 case 'boolean':
1305 case 'string':
1306 case 'object':
1307 default:
1308 return x === y;
1309 }
1310 }
1311
1312 //----------------------------------------
1313 // 7.3 Operations on Objects
1314 //----------------------------------------
1315
1316 // 7.3.1 Get (O, P)
1317 // - just use o.p or o[p]
1318
1319 // 7.3.2 GetV (V, P)
1320 function GetV(v, p) {
1321 var o = ToObject(v);
1322 return o[p];
1323 }
1324
1325 // 7.3.3 Set (O, P, V, Throw)
1326 // - just use o.p = v or o[p] = v
1327
1328
1329
1330
1331 // 7.3.9 GetMethod (O, P)
1332 function GetMethod(o, p) {
1333 var func = GetV(o, p);
1334 if (func === undefined || func === null) return undefined;
1335 if (!IsCallable(func)) throw TypeError();
1336 return func;
1337 }
1338
1339 // 7.3.10 HasProperty (O, P)
1340 function HasProperty(o, p) {
1341 while (o) {
1342 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1343 if (Type(o) !== 'object') return false;
1344 o = Object.getPrototypeOf(o);
1345 }
1346 return false;
1347 }
1348
1349 // 7.3.11 HasOwnProperty (O, P)
1350 function HasOwnProperty(o, p) {
1351 return Object.prototype.hasOwnProperty.call(o, p);
1352 }
1353
1354 //----------------------------------------
1355 // 7.4 Operations on Iterator Objects
1356 //----------------------------------------
1357
1358 // 7.4.1 GetIterator ( obj, method )
1359 function GetIterator(obj, method) {
1360 if (arguments.length < 2)
1361 method = GetMethod(obj, $$iterator);
1362 var iterator = method.call(obj);
1363 if (Type(iterator) !== 'object') throw TypeError();
1364 return iterator;
1365 }
1366
1367 // 7.4.2 IteratorNext ( iterator, value )
1368 function IteratorNext(iterator, value) {
1369 if (arguments.length < 2)
1370 var result = iterator.next();
1371 else
1372 result = iterator.next(value);
1373 if (Type(result) !== 'object') throw TypeError();
1374 return result;
1375 }
1376
1377 // 7.4.3 IteratorComplete ( iterResult )
1378 function IteratorComplete(iterResult) {
1379 console.assert(Type(iterResult) === 'object');
1380 return Boolean(iterResult.done);
1381 }
1382
1383 // 7.4.4 IteratorValue ( iterResult )
1384 function IteratorValue(iterResult) {
1385 console.assert(Type(iterResult) === 'object');
1386 return iterResult.value;
1387 }
1388
1389 // 7.4.5 IteratorStep ( iterator )
1390 function IteratorStep( iterator, value ) {
1391 var result = IteratorNext(iterator, value);
1392 var done = result['done'];
1393 if (Boolean(done) === true) return false;
1394 return result;
1395 }
1396
1397 // 7.4.6 IteratorClose( iterator, completion )
1398 function IteratorClose( iterator, completion ) {
1399 console.assert(Type(iterator) === 'object');
1400 var _return = GetMethod(iterator, 'return');
1401 if (_return === undefined) return completion;
1402 try {
1403 var innerResult = _return[iterator]();
1404 } catch (result) {
1405 // TODO: If completion.[[type]] is throw, return completion
1406 return result;
1407 }
1408 if (Type(innerResult) !== 'object') throw TypeError();
1409 return completion;
1410 }
1411
1412 // 7.4.7 CreateIterResultObject (value, done)
1413 function CreateIterResultObject(value, done) {
1414 console.assert(Type(done) === 'boolean');
1415 var obj = {};
1416 obj["value"] = value;
1417 obj["done"] = done;
1418 return obj;
1419 }
1420
1421 // 7.4.8 CreateListIterator (list)
1422 // 7.4.8.1 ListIterator next( )
1423 // 7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1424 // 7.4.9.1 CompoundIterator next( )
1425
1426 //----------------------------------------
1427 // 8 Executable Code and Execution Contexts
1428 //----------------------------------------
1429
1430 //----------------------------------------
1431 // 8.4 Jobs and Job Queues
1432 //----------------------------------------
1433
1434 // 8.4.1 EnqueueJob ( queueName, job, arguments)
1435 function EnqueueJob(queueName, job, args) {
1436 var fn = function() { job.apply(undefined, args); };
1437 enqueue(fn);
1438 }
1439
1440 // 8.4.2 NextJob result
1441 function NextJob(result) {
1442 // no-op
1443 }
1444
1445 //----------------------------------------
1446 // 9 Ordinary and Exotic Objects Behaviors
1447 //----------------------------------------
1448
1449 // 9.1.11 [[Enumerate]] ()
1450 function Enumerate(obj) {
1451 var e = [];
1452 if (Object(obj) !== obj) return e;
1453 var visited = new Set;
1454 while (obj !== null) {
1455 Object.getOwnPropertyNames(obj).forEach(function(name) {
1456 if (!visited.has(name)) {
1457 var desc = Object.getOwnPropertyDescriptor(obj, name);
1458 if (desc) {
1459 visited.add(name);
1460 if (desc.enumerable) e.push(name);
1461 }
1462 }
1463 });
1464 obj = Object.getPrototypeOf(obj);
1465 }
1466 return e[$$iterator]();
1467 }
1468
1469 // 9.1.12 [[OwnPropertyKeys]] ( )
1470 function OwnPropertyKeys(o) {
1471 return Object.getOwnPropertyNames(o);
1472 }
1473
1474 // 9.1.13 ObjectCreate(proto, internalSlotsList)
1475 function ObjectCreate(proto, internalSlotsList) {
1476 return Object.create(proto, internalSlotsList);
1477 }
1478
1479 // ---------------------------------------
1480 // 19 Fundamental Objects
1481 // ---------------------------------------
1482
1483 // ---------------------------------------
1484 // 19.1 Object Objects
1485 // ---------------------------------------
1486
1487 // 19.1.1 The Object Constructor
1488 // 19.1.1.1 Object ( [ value ] )
1489 // 19.1.2 Properties of the Object Constructor
1490 // 19.1.2.1 Object.assign ( target, ...sources )
1491 define(
1492 Object, 'assign',
1493 function assign(target, /*...*/sources) {
1494 var to = ToObject(target);
1495 if (arguments.length < 2) return to;
1496
1497 var sourcesIndex = 1;
1498 while (sourcesIndex < arguments.length) {
1499 var nextSource = arguments[sourcesIndex++];
1500 if (nextSource === undefined || nextSource === null) {
1501 var keys = [];
1502 } else {
1503 var from = ToObject(nextSource);
1504 keys = OwnPropertyKeys(from);
1505 }
1506 for (var keysIndex = 0; keysIndex < keys.length; ++keysIndex) {
1507 var nextKey = keys[keysIndex];
1508 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1509 if (desc !== undefined && desc.enumerable) {
1510 var propValue = from[nextKey];
1511 to[nextKey] = propValue;
1512 }
1513 }
1514 }
1515 return to;
1516 });
1517
1518 // 19.1.2.2 Object.create ( O [ , Properties ] )
1519 // 19.1.2.3 Object.defineProperties ( O, Properties )
1520 // 19.1.2.4 Object.defineProperty ( O, P, Attributes )
1521 // 19.1.2.5 Object.freeze ( O )
1522 // 19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1523
1524 (function() {
1525 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1526 $getOwnPropertyNames = Object.getOwnPropertyNames,
1527 $keys = Object.keys,
1528 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1529
1530 function isStringKey(k) { return !symbolForKey(k); }
1531
1532 // 19.1.2.7 Object.getOwnPropertyNames ( O )
1533 define(
1534 Object, 'getOwnPropertyNames',
1535 function getOwnPropertyNames(o) {
1536 if (Object.prototype.toString.call(o) === '[object Window]') {
1537 // Workaround for cross-realm calling by IE itself.
1538 // https://github.com/inexorabletash/polyfill/issues/96
1539 try {
1540 return $getOwnPropertyNames(o).filter(isStringKey);
1541 } catch (_) {
1542 return $window_names.slice();
1543 }
1544 }
1545 return $getOwnPropertyNames(o).filter(isStringKey);
1546 }, !nativeSymbols);
1547
1548 // 19.1.2.8 Object.getOwnPropertySymbols ( O )
1549 define(
1550 Object, 'getOwnPropertySymbols',
1551 function getOwnPropertySymbols(o) {
1552 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1553 }, !nativeSymbols);
1554
1555 // 19.1.2.14 Object.keys ( O )
1556 define(
1557 Object, 'keys',
1558 function keys(o) {
1559 return $keys(o).filter(isStringKey);
1560 }, !nativeSymbols);
1561 }());
1562
1563 // 19.1.2.9 Object.getPrototypeOf ( O )
1564 // 19.1.2.10 Object.is ( value1, value2 )
1565 define(
1566 Object, 'is',
1567 function is(value1, value2) {
1568 return SameValue(value1, value2);
1569 });
1570
1571 // 19.1.2.11 Object.isExtensible ( O )
1572 // 19.1.2.12 Object.isFrozen ( O )
1573 // 19.1.2.13 Object.isSealed ( O )
1574
1575 // 19.1.2.14 Object.keys ( O )
1576 // see above
1577
1578 // 19.1.2.15 Object.preventExtensions ( O )
1579 // 19.1.2.16 Object.prototype
1580 // 19.1.2.17 Object.seal ( O )
1581
1582 // 19.1.2.18 Object.setPrototypeOf ( O, proto )
1583 define(
1584 Object, 'setPrototypeOf',
1585 function setPrototypeOf(o, proto) {
1586 if (Type(o) !== 'object') throw TypeError();
1587 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1588 o.__proto__ = proto;
1589 return o;
1590 }
1591 );
1592
1593 // 19.1.3 Properties of the Object Prototype Object
1594 // 19.1.3.1 Object.prototype.constructor
1595 // 19.1.3.2 Object.prototype.hasOwnProperty ( V )
1596 // 19.1.3.3 Object.prototype.isPrototypeOf ( V )
1597 // 19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1598 // 19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1599 // 19.1.3.6 Object.prototype.toString ( )
1600 hook(Object.prototype, 'toString',
1601 function() {
1602 var o = strict(this);
1603 if (o === Object(o) && $$toStringTag in o) {
1604 return '[object ' + o[$$toStringTag] + ']';
1605 }
1606 return undefined;
1607 });
1608
1609 // 19.1.3.7 Object.prototype.valueOf ( )
1610 // 19.1.4 Properties of Object Instances
1611
1612 // ---------------------------------------
1613 // 19.2 Function Objects
1614 // ---------------------------------------
1615
1616 // 19.2.1 The Function Constructor
1617 // 19.2.1.1 Function ( p1, p2, … , pn, body )
1618 // 19.2.2 Properties of the Function Constructor
1619 // 19.2.2.1 Function.length
1620 // 19.2.2.2 Function.prototype
1621 // 19.2.3 Properties of the Function Prototype Object
1622 // 19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1623 // 19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1624 // 19.2.3.3 Function.prototype.call (thisArg , ...args)
1625 // 19.2.3.4 Function.prototype.constructor
1626 // 19.2.3.5 Function.prototype.toString ( )
1627 // 19.2.3.6 Function.prototype[@@hasInstance] ( V )
1628 // 19.2.4 Function Instances
1629 // 19.2.4.1 length
1630 // 19.2.4.2 name
1631 // 19.2.4.3 prototype
1632
1633 // (No polyfillable changes from ES5)
1634
1635 // ---------------------------------------
1636 // 19.3 Boolean Objects
1637 // ---------------------------------------
1638
1639 // 19.3.1 The Boolean Constructor
1640 // 19.3.1.1 Boolean ( value )
1641 // 19.3.2 Properties of the Boolean Constructor
1642 // 19.3.2.1 Boolean.prototype
1643 // 19.3.3 Properties of the Boolean Prototype Object
1644 // 19.3.3.1 Boolean.prototype.constructor
1645 // 19.3.3.2 Boolean.prototype.toString ( )
1646 // 19.3.3.3 Boolean.prototype.valueOf ( )
1647 // 19.3.4 Properties of Boolean Instances
1648
1649 // (No polyfillable changes from ES5)
1650
1651 // ---------------------------------------
1652 // 19.4 Symbol Objects
1653 // ---------------------------------------
1654
1655 // Moved earlier in this script, so that other polyfills can depend on them.
1656
1657 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1658 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1659
1660 // ---------------------------------------
1661 // 19.5 Error Objects
1662 // ---------------------------------------
1663
1664 // 19.5.1 The Error Constructor
1665 // 19.5.1.1 Error ( message )
1666 // 19.5.1.2 new Error( ...argumentsList )
1667 // 19.5.2 Properties of the Error Constructor
1668 // 19.5.2.1 Error.prototype
1669 // 19.5.3 Properties of the Error Prototype Object
1670 // 19.5.3.1 Error.prototype.constructor
1671 // 19.5.3.2 Error.prototype.message
1672 // 19.5.3.3 Error.prototype.name
1673 // 19.5.3.4 Error.prototype.toString ( )
1674 // 19.5.4 Properties of Error Instances
1675 // 19.5.5 Native Error Types Used in This Standard
1676 // 19.5.5.1 EvalError
1677 // 19.5.5.2 RangeError
1678 // 19.5.5.3 ReferenceError
1679 // 19.5.5.4 SyntaxError
1680 // 19.5.5.5 TypeError
1681 // 19.5.5.6 URIError
1682 // 19.5.6 NativeError Object Structure
1683 // 19.5.6.1 NativeError Constructors
1684 // 19.5.6.1.1 NativeError ( message )
1685 // 19.5.6.1.2 new NativeError ( ...argumentsList )
1686 // 19.5.6.2 Properties of the NativeError Constructors
1687 // 19.5.6.2.1 NativeError.prototype
1688 // 19.5.6.3 Properties of the NativeError Prototype Objects
1689 // 19.5.6.4 Properties of NativeError Instances
1690
1691 // (No polyfillable changes from ES5)
1692
1693 // ---------------------------------------
1694 // 20 Numbers and Dates
1695 // ---------------------------------------
1696
1697 // ---------------------------------------
1698 // 20.1 Number Objects
1699 // ---------------------------------------
1700
1701 // 20.1.1 The Number Constructor
1702 // 20.1.1.1 Number ( [ value ] )
1703 // 20.1.1.2 new Number ( ...argumentsList )
1704 // 20.1.2 Properties of the Number Constructor
1705
1706 // 20.1.2.1 Number.EPSILON
1707 define(
1708 Number, 'EPSILON',
1709 (function () {
1710 var next, result;
1711 for (next = 1; 1 + next !== 1; next = next / 2)
1712 result = next;
1713 return result;
1714 }()));
1715
1716 // 20.1.2.2 Number.isFinite ( number )
1717 define(
1718 Number, 'isFinite',
1719 function isFinite(number) {
1720 if (Type(number) !== 'number') return false;
1721 if (number !== number || number === +Infinity || number === -Infinity) return false;
1722 return true;
1723 });
1724
1725 // 20.1.2.3 Number.isInteger ( number )
1726 define(
1727 Number, 'isInteger',
1728 function isInteger(number) {
1729 if (Type(number) !== 'number') return false;
1730 if (number !== number || number === +Infinity || number === -Infinity) return false;
1731 var integer = ToInteger(number);
1732 if (integer !== number) return false;
1733 return true;
1734 });
1735
1736 // 20.1.2.4 Number.isNaN ( number )
1737 define(
1738 Number, 'isNaN',
1739 function isNaN(number) {
1740 if (Type(number) !== 'number') return false;
1741 if (number !== number) return true;
1742 return false;
1743 });
1744
1745 // 20.1.2.5 Number.isSafeInteger ( number )
1746 define(
1747 Number, 'isSafeInteger',
1748 function isSafeInteger(number) {
1749 if (Type(number) !== 'number') return false;
1750 if (number !== number || number === +Infinity || number === -Infinity) return false;
1751 var integer = ToInteger(number);
1752 if (integer !== number) return false;
1753 if (abs(integer) <= (0x20000000000000 - 1)) // 2^53-1
1754 return true;
1755 return false;
1756 });
1757
1758 // 20.1.2.6 Number.MAX_SAFE_INTEGER
1759 define(
1760 Number, 'MAX_SAFE_INTEGER',
1761 9007199254740991); // 2^53-1
1762
1763 // 20.1.2.7 Number.MAX_VALUE
1764
1765 // 20.1.2.8 Number.MIN_SAFE_INTEGER
1766 define(
1767 Number, 'MIN_SAFE_INTEGER',
1768 -9007199254740991); // -2^53+1
1769
1770 // 20.1.2.9 Number.MIN_VALUE
1771 // 20.1.2.10 Number.NaN
1772 // 20.1.2.11 Number.NEGATIVE_INFINITY
1773
1774 // 20.1.2.12 Number.parseFloat ( string )
1775 define(Number, 'parseFloat', $parseFloat);
1776
1777 // 20.1.2.13 Number.parseInt ( string, radix )
1778 define(Number, 'parseInt', $parseInt);
1779
1780 // 20.1.2.14 Number.POSITIVE_INFINITY
1781 // 20.1.2.15 Number.prototype
1782
1783 // 20.1.3 Properties of the Number Prototype Object
1784 // 20.1.3.1 Number.prototype.constructor
1785 // 20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1786 // 20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1787 // 20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1788 // 20.1.3.5 Number.prototype.toPrecision ( precision )
1789 // 20.1.3.6 Number.prototype.toString ( [ radix ] )
1790 // 20.1.3.7 Number.prototype.valueOf ( )
1791 // 20.1.4 Properties of Number Instances
1792
1793 // ---------------------------------------
1794 // 20.2 The Math Object
1795 // ---------------------------------------
1796
1797 // 20.2.1 Value Properties of the Math Object
1798 // 20.2.1.1 Math.E
1799 // 20.2.1.2 Math.LN10
1800 // 20.2.1.3 Math.LN2
1801 // 20.2.1.4 Math.LOG10E
1802 // 20.2.1.5 Math.LOG2E
1803 // 20.2.1.6 Math.PI
1804 // 20.2.1.7 Math.SQRT1_2
1805 // 20.2.1.8 Math.SQRT2
1806
1807 // 20.2.1.9 Math [ @@toStringTag ]
1808 define(Math, $$toStringTag, 'Math');
1809
1810 // 20.2.2 Function Properties of the Math Object
1811 // 20.2.2.1 Math.abs ( x )
1812 // 20.2.2.2 Math.acos ( x )
1813
1814 // 20.2.2.3 Math.acosh(x)
1815 define(
1816 Math, 'acosh',
1817 function acosh(x) {
1818 x = Number(x);
1819 return log(x + sqrt(x * x - 1));
1820 });
1821
1822 // 20.2.2.4 Math.asin ( x )
1823
1824 // 20.2.2.5 Math.asinh( x )
1825 define(
1826 Math, 'asinh',
1827 function asinh(x) {
1828 x = Number(x);
1829 if (SameValue(x, -0)) {
1830 return x;
1831 }
1832 var s = sqrt(x * x + 1);
1833 return (s === -x) ? log(0) : log(x + s);
1834 });
1835
1836 // 20.2.2.6 Math.atan ( x )
1837
1838 // 20.2.2.7 Math.atanh( x )
1839 define(
1840 Math, 'atanh',
1841 function atanh(x) {
1842 x = Number(x);
1843 return (x === 0) ? x : log((1 + x) / (1 - x)) / 2;
1844 });
1845
1846 // 20.2.2.8 Math.atan2 ( y, x )
1847
1848 // 20.2.2.9 Math.cbrt ( x )
1849 define(
1850 Math, 'cbrt',
1851 function cbrt(x) {
1852 x = Number(x);
1853 if ($isNaN(x/x)) {
1854 return x;
1855 }
1856 var r = pow(abs(x), 1/3);
1857 var t = x/r/r;
1858 return r + (r * (t-r) / (2*r + t));
1859 });
1860
1861 // 20.2.2.10 Math.ceil ( x )
1862
1863 // 20.2.2.11 Math.clz32 ( x )
1864 define(
1865 Math, 'clz32',
1866 function clz32(x) {
1867 function clz8(x) {
1868 return (x & 0xf0) ? (x & 0x80 ? 0 : x & 0x40 ? 1 : x & 0x20 ? 2 : 3) :
1869 (x & 0x08 ? 4 : x & 0x04 ? 5 : x & 0x02 ? 6 : x & 0x01 ? 7 : 8);
1870 }
1871 x = ToUint32(x);
1872 return x & 0xff000000 ? clz8(x >> 24) :
1873 x & 0xff0000 ? clz8(x >> 16) + 8 :
1874 x & 0xff00 ? clz8(x >> 8) + 16 : clz8(x) + 24;
1875 });
1876
1877
1878
1879 // 20.2.2.12 Math.cos ( x )
1880
1881 // 20.2.2.13 Math.cosh ( x )
1882 define(
1883 Math, 'cosh',
1884 function cosh(x) {
1885 x = Number(x);
1886 return (pow(E, x) + pow(E, -x)) / 2;
1887 });
1888
1889 // 20.2.2.14 Math.exp ( x )
1890
1891 // 20.2.2.15 Math.expm1 ( x )
1892 define(
1893 Math, 'expm1',
1894 function expm1(x) {
1895 x = Number(x);
1896 // from: http://www.johndcook.com/cpp_log1p.html
1897 if (SameValue(x, -0)) {
1898 return -0;
1899 } else if (abs(x) < 1e-5) {
1900 return x + 0.5 * x * x; // two terms of Taylor expansion
1901 } else {
1902 return exp(x) - 1;
1903 }
1904 });
1905
1906 // 20.2.2.16 Math.floor ( x )
1907
1908 // 20.2.2.17 Math.fround ( x )
1909 define(
1910 Math, 'fround',
1911 function fround(x) {
1912 if ($isNaN(x)) {
1913 return NaN;
1914 }
1915 if (1/x === +Infinity || 1/x === -Infinity || x === +Infinity || x === -Infinity) {
1916 return x;
1917 }
1918 return (new Float32Array([x]))[0];
1919 });
1920
1921 // 20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
1922 define(
1923 Math, 'hypot',
1924 function hypot() {
1925 var values = [];
1926 var m = 0, sawNaN = false;
1927 for (var i = 0; i < arguments.length; ++i) {
1928 var n = abs(Number(arguments[i]));
1929 if (n === Infinity) return n;
1930 if (n !== n) sawNaN = true;
1931 if (n > m) m = n;
1932 values[i] = n;
1933 }
1934 if (sawNaN) return NaN;
1935 if (m === 0) return +0;
1936 var sum = +0;
1937 for (i = 0; i < values.length; ++i) {
1938 var r = values[i] / m;
1939 sum = sum + r * r;
1940 }
1941 return m * sqrt(sum);
1942 });
1943
1944 // 20.2.2.19 Math.imul ( x, y )
1945 define(
1946 Math, 'imul',
1947 function imul(x, y) {
1948 var a = ToUint32(x);
1949 var b = ToUint32(y);
1950 // (slow but accurate)
1951 var ah = (a >>> 16) & 0xffff;
1952 var al = a & 0xffff;
1953 var bh = (b >>> 16) & 0xffff;
1954 var bl = b & 0xffff;
1955 return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
1956 }, ('imul' in Math && Math.imul(1, 0x80000000) === 0) // Safari 7 bug
1957 );
1958
1959 // 20.2.2.20 Math.log ( x )
1960
1961 // 20.2.2.21 Math.log1p ( x )
1962 define(
1963 Math, 'log1p',
1964 function log1p(x) {
1965 x = Number(x);
1966 // from: http://www.johndcook.com/cpp_expm1.html
1967 if (x < -1) {
1968 return NaN;
1969 } else if (SameValue(x, -0)) {
1970 return -0;
1971 } else if (abs(x) > 1e-4) {
1972 return log(1 + x);
1973 } else {
1974 return (-0.5 * x + 1) * x;
1975 }
1976 });
1977
1978 // 20.2.2.22 Math.log10 ( x )
1979 define(
1980 Math, 'log10',
1981 function log10(x) {
1982 x = Number(x);
1983 return log(x) * LOG10E;
1984 });
1985
1986 // 20.2.2.23 Math.log2 ( x )
1987 define(
1988 Math, 'log2',
1989 function log2(x) {
1990 x = Number(x);
1991 return log(x) * LOG2E;
1992 });
1993
1994 // 20.2.2.24 Math.max ( value1, value2 , ...values )
1995 // 20.2.2.25 Math.min ( value1, value2 , ...values )
1996 // 20.2.2.26 Math.pow ( x, y )
1997 // 20.2.2.27 Math.random ( )
1998 // 20.2.2.28 Math.round ( x )
1999
2000 // 20.2.2.29 Math.sign(x)
2001 define(
2002 Math, 'sign',
2003 function sign(x) {
2004 x = Number(x);
2005 return x < 0 ? -1 : x > 0 ? 1 : x;
2006 });
2007
2008 // 20.2.2.30 Math.sin ( x )
2009
2010 // 20.2.2.31 Math.sinh( x )
2011 define(
2012 Math, 'sinh',
2013 function sinh(x) {
2014 x = Number(x);
2015 return SameValue(x, -0) ? x : (pow(E, x) - pow(E, -x)) / 2;
2016 });
2017
2018 // 20.2.2.32 Math.sqrt ( x )
2019 // 20.2.2.33 Math.tan ( x )
2020
2021 // 20.2.2.34 Math.tanh ( x )
2022 define(
2023 Math, 'tanh',
2024 function tanh(x) {
2025 x = Number(x);
2026 var n = pow(E, 2 * x) - 1,
2027 d = pow(E, 2 * x) + 1;
2028 if (SameValue(x, -0))
2029 return x;
2030 return (n === d) ? 1 : n / d; // Handle Infinity/Infinity
2031 });
2032
2033 // 20.2.2.35 Math.trunc ( x )
2034 define(
2035 Math, 'trunc',
2036 function trunc(x) {
2037 x = Number(x);
2038 return $isNaN(x) ? NaN :
2039 x < 0 ? ceil(x) : floor(x);
2040 });
2041
2042 // ---------------------------------------
2043 // 20.3 Date Objects
2044 // ---------------------------------------
2045
2046 // 20.3.1 Overview of Date Objects and Definitions of Abstract Operations
2047 // 20.3.1.1 Time Values and Time Range
2048 // 20.3.1.2 Day Number and Time within Day
2049 // 20.3.1.3 Year Number
2050 // 20.3.1.4 Month Number
2051 // 20.3.1.5 Date Number
2052 // 20.3.1.6 Week Day
2053 // 20.3.1.7 Local Time Zone Adjustment
2054 // 20.3.1.8 Daylight Saving Time Adjustment
2055 // 20.3.1.9 Local Time
2056 // 20.3.1.10 Hours, Minutes, Second, and Milliseconds
2057 // 20.3.1.11 MakeTime (hour, min, sec, ms)
2058 // 20.3.1.12 MakeDay (year, month, date)
2059 // 20.3.1.13 MakeDate (day, time)
2060 // 20.3.1.14 TimeClip (time)
2061 // 20.3.1.15 Date Time String Format
2062 // 20.3.1.15.1 Extended years
2063 // 20.3.2 The Date Constructor
2064 // 20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2065 // 20.3.2.2 Date ( value )
2066 // 20.3.2.3 Date ( )
2067 // 20.3.3 Properties of the Date Constructor
2068 // 20.3.3.1 Date.now ( )
2069 // 20.3.3.2 Date.parse (string)
2070 // 20.3.3.3 Date.prototype
2071 // 20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2072 // 20.3.4 Properties of the Date Prototype Object
2073 // 20.3.4.1 Date.prototype.constructor
2074 // 20.3.4.2 Date.prototype.getDate ( )
2075 // 20.3.4.3 Date.prototype.getDay ( )
2076 // 20.3.4.4 Date.prototype.getFullYear ( )
2077 // 20.3.4.5 Date.prototype.getHours ( )
2078 // 20.3.4.6 Date.prototype.getMilliseconds ( )
2079 // 20.3.4.7 Date.prototype.getMinutes ( )
2080 // 20.3.4.8 Date.prototype.getMonth ( )
2081 // 20.3.4.9 Date.prototype.getSeconds ( )
2082 // 20.3.4.10 Date.prototype.getTime ( )
2083 // 20.3.4.11 Date.prototype.getTimezoneOffset ( )
2084 // 20.3.4.12 Date.prototype.getUTCDate ( )
2085 // 20.3.4.13 Date.prototype.getUTCDay ( )
2086 // 20.3.4.14 Date.prototype.getUTCFullYear ( )
2087 // 20.3.4.15 Date.prototype.getUTCHours ( )
2088 // 20.3.4.16 Date.prototype.getUTCMilliseconds ( )
2089 // 20.3.4.17 Date.prototype.getUTCMinutes ( )
2090 // 20.3.4.18 Date.prototype.getUTCMonth ( )
2091 // 20.3.4.19 Date.prototype.getUTCSeconds ( )
2092 // 20.3.4.20 Date.prototype.setDate ( date )
2093 // 20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
2094 // 20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
2095 // 20.3.4.23 Date.prototype.setMilliseconds ( ms )
2096 // 20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
2097 // 20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
2098 // 20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
2099 // 20.3.4.27 Date.prototype.setTime ( time )
2100 // 20.3.4.28 Date.prototype.setUTCDate ( date )
2101 // 20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
2102 // 20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
2103 // 20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
2104 // 20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
2105 // 20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
2106 // 20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
2107 // 20.3.4.35 Date.prototype.toDateString ( )
2108 // 20.3.4.36 Date.prototype.toISOString ( )
2109 // 20.3.4.37 Date.prototype.toJSON ( key )
2110 // 20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
2111 // 20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2112 // 20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
2113 // 20.3.4.41 Date.prototype.toString ( )
2114 // 20.3.4.42 Date.prototype.toTimeString ( )
2115 // 20.3.4.43 Date.prototype.toUTCString ( )
2116 // 20.3.4.44 Date.prototype.valueOf ( )
2117 // 20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
2118 // 20.3.5 Properties of Date Instances
2119
2120 // (No polyfillable changes from ES5)
2121
2122 // ---------------------------------------
2123 // 21 Text Processing
2124 // ---------------------------------------
2125
2126 var string_regexp_dispatch = (function() {
2127 var faux = {}, secret = Symbol();
2128 faux[Symbol.match] = function() { return secret; };
2129 return ("").match(faux) === secret;
2130 }());
2131
2132 // 21.1 String Objects
2133 // 21.1.1 The String Constructor
2134 // 21.1.1.1 String ( value )
2135 // 21.1.2 Properties of the String Constructor
2136 // 21.1.2.1 String.fromCharCode ( ...codeUnits )
2137
2138 // 21.1.2.2 String.fromCodePoint ( ...codePoints )
2139 define(
2140 String, 'fromCodePoint',
2141 function fromCodePoint(/*...codePoints*/) {
2142 var codePoints = arguments,
2143 length = codePoints.length,
2144 elements = [],
2145 nextIndex = 0;
2146 while (nextIndex < length) {
2147 var next = codePoints[nextIndex];
2148 var nextCP = Number(next);
2149 if (!SameValue(nextCP, ToInteger(nextCP)) ||
2150 nextCP < 0 || nextCP > 0x10FFFF) {
2151 throw RangeError('Invalid code point ' + nextCP);
2152 }
2153 if (nextCP < 0x10000) {
2154 elements.push(String.fromCharCode(nextCP));
2155 } else {
2156 nextCP -= 0x10000;
2157 elements.push(String.fromCharCode((nextCP >> 10) + 0xD800));
2158 elements.push(String.fromCharCode((nextCP % 0x400) + 0xDC00));
2159 }
2160 nextIndex += 1;
2161 }
2162 return elements.join('');
2163 });
2164
2165 // 21.1.2.3 String.prototype
2166
2167 // 21.1.2.4 String.raw ( template , ...substitutions )
2168 define(
2169 String, 'raw',
2170 function raw(template /*, ...substitutions*/) {
2171 var substitutions = [].slice.call(arguments, 1);
2172
2173 var cooked = Object(template);
2174 var rawValue = cooked['raw'];
2175 var raw = Object(rawValue);
2176 var len = raw['length'];
2177 var literalSegments = ToLength(len);
2178 if (literalSegments <= 0) return '';
2179 var stringElements = [];
2180 var nextIndex = 0;
2181 while (true) {
2182 var next = raw[nextIndex];
2183 var nextSeg = String(next);
2184 stringElements.push(nextSeg);
2185 if (nextIndex + 1 === literalSegments)
2186 return stringElements.join('');
2187 next = substitutions[nextIndex];
2188 var nextSub = String(next);
2189 stringElements.push(nextSub);
2190 nextIndex = nextIndex + 1;
2191 }
2192 });
2193
2194 // See https://githib.com/inexorabletash/uate for a more useful version.
2195
2196 // 21.1.3 Properties of the String Prototype Object
2197 // 21.1.3.1 String.prototype.charAt ( pos )
2198 // 21.1.3.2 String.prototype.charCodeAt ( pos )
2199
2200 // 21.1.3.3 String.prototype.codePointAt ( pos )
2201 define(
2202 String.prototype, 'codePointAt',
2203 function codePointAt(pos) {
2204 var o = strict(this);
2205 var s = String(o);
2206 var position = ToInteger(pos);
2207 var size = s.length;
2208 if (position < 0 || position >= size) return undefined;
2209 var first = s.charCodeAt(position);
2210 if (first < 0xD800 || first > 0xDBFF || position + 1 === size) return first;
2211 var second = s.charCodeAt(position + 1);
2212 if (second < 0xDC00 || second > 0xDFFF) return first;
2213 return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
2214 });
2215
2216 // 21.1.3.4 String.prototype.concat ( ...args )
2217 // 21.1.3.5 String.prototype.constructor
2218
2219 // 21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2220 define(
2221 String.prototype, 'endsWith',
2222 function endsWith(searchString) {
2223 var endPosition = arguments[1];
2224
2225 var o = strict(this);
2226 var s = String(o);
2227 var searchStr = String(searchString);
2228 var len = s.length;
2229 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2230 var end = min(max(pos, 0), len);
2231 var searchLength = searchStr.length;
2232 var start = end - searchLength;
2233 if (start < 0) return false;
2234 if (s.substring(start, start + searchLength) === searchStr) return true;
2235 return false;
2236 });
2237
2238 // 21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2239 define(
2240 String.prototype, 'includes',
2241 function includes(searchString) {
2242 var position = arguments[1];
2243
2244 var o = strict(this);
2245 var s = String(o);
2246 var searchStr = String(searchString);
2247 var pos = ToInteger(position);
2248 var len = s.length;
2249 var start = min(max(pos, 0), len);
2250 return s.indexOf(searchStr, start) !== -1;
2251 });
2252
2253 // 21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2254 // 21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2255 // 21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2256 // 21.1.3.11 String.prototype.match ( regexp )
2257 define(
2258 String.prototype, 'match',
2259 function match(regexp) {
2260 var o = strict(this);
2261 var s = String(o);
2262 if (HasProperty(regexp, $$match)) var rx = regexp;
2263 else rx = new RegExp(regexp);
2264 return rx[$$match](s);
2265 }, !string_regexp_dispatch);
2266
2267 // 21.1.3.12 String.prototype.normalize ( [ form ] )
2268
2269 // Not practical due to table sizes; if needed, pull in:
2270 // https://github.com/walling/unorm/
2271
2272 // 21.1.3.13 String.prototype.repeat ( count )
2273 define(
2274 String.prototype, 'repeat',
2275 function repeat(count) {
2276 var o = strict(this);
2277 var s = String(o);
2278 var n = ToInteger(count);
2279 if (n < 0) throw RangeError();
2280 if (n === Infinity) throw RangeError();
2281 var t = new Array(n + 1).join(s);
2282 return t;
2283 });
2284
2285 // 21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2286 define(
2287 String.prototype, 'replace',
2288 function replace(searchValue, replaceValue) {
2289 var o = strict(this);
2290 if (HasProperty(searchValue, $$replace))
2291 return searchValue[$$replace](o, replaceValue);
2292 return orig_replace.call(o, searchValue, replaceValue);
2293 }, !string_regexp_dispatch);
2294
2295 // 21.1.3.15 String.prototype.search ( regexp )
2296 define(
2297 String.prototype, 'search',
2298 function search(regexp) {
2299 var o = strict(this);
2300 var string = String(o);
2301 if (HasProperty(regexp, $$search)) var rx = regexp;
2302 else rx = new RegExp(regexp);
2303 return rx[$$search](string);
2304 }, !string_regexp_dispatch);
2305
2306 // 21.1.3.16 String.prototype.slice ( start, end )
2307 // 21.1.3.17 String.prototype.split ( separator, limit )
2308 define(
2309 String.prototype, 'split',
2310 function split(separator, limit) {
2311 var o = strict(this);
2312 if (HasProperty(separator, $$split))
2313 return separator[$$split](o, limit);
2314 return orig_split.call(o, separator, limit);
2315 }, !string_regexp_dispatch);
2316
2317 // 21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2318 define(
2319 String.prototype, 'startsWith',
2320 function startsWith(searchString) {
2321 var position = arguments[1];
2322
2323 var o = strict(this);
2324 var s = String(o);
2325 var searchStr = String(searchString);
2326 var pos = ToInteger(position);
2327 var len = s.length;
2328 var start = min(max(pos, 0), len);
2329 var searchLength = searchStr.length;
2330 if (searchLength + start > len) return false;
2331 if (s.substring(start, start + searchLength) === searchStr) return true;
2332 return false;
2333 });
2334
2335 // 21.1.3.19 String.prototype.substring ( start, end )
2336 // 21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2337 // 21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2338 // 21.1.3.22 String.prototype.toLowerCase ( )
2339 // 21.1.3.23 String.prototype.toString ( )
2340 // 21.1.3.24 String.prototype.toUpperCase ( )
2341 // 21.1.3.25 String.prototype.trim ( )
2342 // 21.1.3.26 String.prototype.valueOf ( )
2343
2344 // 21.1.3.27 String.prototype [ @@iterator ]( )
2345 define(
2346 String.prototype, $$iterator,
2347 function entries() {
2348 return CreateStringIterator(this, 'value');
2349 });
2350
2351 // 21.1.4 Properties of String Instances
2352 // 21.1.4.1 length
2353
2354 // 21.1.5 String Iterator Objects
2355 /** @constructor */
2356 function StringIterator() {}
2357
2358 // 21.1.5.1 CreateStringIterator Abstract Operation
2359 function CreateStringIterator(string, kind) {
2360 var s = String(string);
2361 var iterator = new StringIterator;
2362 set_internal(iterator, '[[IteratedString]]', s);
2363 set_internal(iterator, '[[StringIteratorNextIndex]]', 0);
2364 set_internal(iterator, '[[StringIterationKind]]', kind);
2365 return iterator;
2366 }
2367
2368 // 21.1.5.2 The %StringIteratorPrototype% Object
2369 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2370 StringIterator.prototype = $StringIteratorPrototype$;
2371
2372 // 21.1.5.2.1 %StringIteratorPrototype%.next ( )
2373 define(
2374 $StringIteratorPrototype$, 'next',
2375 function next() {
2376 var o = ToObject(this);
2377 var s = String(o['[[IteratedString]]']),
2378 index = o['[[StringIteratorNextIndex]]'],
2379 len = s.length;
2380 if (index >= len) {
2381 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2382 return CreateIterResultObject(undefined, true);
2383 }
2384 var cp = s.codePointAt(index);
2385 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp > 0xFFFF ? 2 : 1));
2386 return CreateIterResultObject(String.fromCodePoint(cp), false);
2387 });
2388
2389 // 21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2390 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2391
2392 // 21.1.5.3 Properties of String Iterator Instances
2393
2394 // ---------------------------------------
2395 // 21.2 RegExp (Regular Expression) Objects
2396 // ---------------------------------------
2397
2398 // 21.2.1 Patterns
2399 // 21.2.2 Pattern Semantics
2400 // 21.2.2.1 Notation
2401 // 21.2.2.2 Pattern
2402 // 21.2.2.3 Disjunction
2403 // 21.2.2.4 Alternative
2404 // 21.2.2.5 Term
2405 // 21.2.2.6 Assertion
2406 // 21.2.2.7 Quantifier
2407 // 21.2.2.8 Atom
2408 // 21.2.2.9 AtomEscape
2409 // 21.2.2.10 CharacterEscape
2410 // 21.2.2.11 DecimalEscape
2411 // 21.2.2.12 CharacterClassEscape
2412 // 21.2.2.13 CharacterClass
2413 // 21.2.2.14 ClassRanges
2414 // 21.2.2.15 NonemptyClassRanges
2415 // 21.2.2.16 NonemptyClassRangesNoDash
2416 // 21.2.2.17 ClassAtom
2417 // 21.2.2.18 ClassAtomNoDash
2418 // 21.2.2.19 ClassEscape
2419 // 21.2.3 The RegExp Constructor
2420 // 21.2.3.1 RegExp ( pattern, flags )
2421 // 21.2.3.2 new RegExp( ...argumentsList )
2422 // 21.2.3.3 Abstract Operations for the RegExp Constructor
2423 // 21.2.4 Properties of the RegExp Constructor
2424 // 21.2.4.1 RegExp.prototype
2425 // 21.2.5 Properties of the RegExp Prototype Object
2426 // 21.2.5.1 RegExp.prototype.constructor
2427 // 21.2.5.2 RegExp.prototype.exec ( string )
2428
2429 // 21.2.5.3 get RegExp.prototype.flags
2430 if (!('flags' in RegExp.prototype)) {
2431 Object.defineProperty(
2432 RegExp.prototype, 'flags', {
2433 get: function() {
2434 var s = String(this);
2435 return s.substring(s.lastIndexOf('/') + 1);
2436 }
2437 });
2438 }
2439
2440 // 21.2.5.4 get RegExp.prototype.global
2441 // 21.2.5.5 get RegExp.prototype.ignoreCase
2442
2443 // 21.2.5.6 RegExp.prototype [ @@match ] ( string )
2444 define(RegExp.prototype, $$match, function(string) {
2445 var o = strict(this);
2446 return orig_match.call(string, o);
2447 });
2448
2449 // 21.2.5.7 get RegExp.prototype.multiline
2450
2451 // 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2452 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2453 var o = strict(this);
2454 return orig_replace.call(string, o, replaceValue);
2455 });
2456
2457 // 21.2.5.9 RegExp.prototype [ @@search ] ( string )
2458 define(RegExp.prototype, $$search, function(string) {
2459 var o = strict(this);
2460 return orig_search.call(string, o);
2461 });
2462
2463 // 21.2.5.10 get RegExp.prototype.source
2464
2465 // 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2466 define(RegExp.prototype, $$split, function(string, limit) {
2467 var o = strict(this);
2468 return orig_split.call(string, o, limit);
2469 });
2470
2471 // 21.2.5.12 get RegExp.prototype.sticky
2472 // 21.2.5.13 RegExp.prototype.test( S )
2473 // 21.2.5.14 RegExp.prototype.toString ( )
2474 // 21.2.5.15 get RegExp.prototype.unicode
2475
2476 // 21.2.6 Properties of RegExp Instances
2477 // 21.2.6.1 lastIndex
2478
2479 // (No polyfillable changes from ES5)
2480
2481 // ---------------------------------------
2482 // 22 Indexed Collections
2483 // ---------------------------------------
2484
2485 // ---------------------------------------
2486 // 22.1 Array Objects
2487 // ---------------------------------------
2488
2489 // 22.1.1 The Array Constructor
2490 // 22.1.1.1 Array ( )
2491 // 22.1.1.2 Array (len)
2492 // 22.1.1.3 Array (...items )
2493
2494 // 22.1.2 Properties of the Array Constructor
2495
2496 // 22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2497 define(
2498 Array, 'from',
2499 function from(items) {
2500 var mapfn = arguments[1];
2501 var thisArg = arguments[2];
2502
2503 var c = strict(this);
2504 if (mapfn === undefined) {
2505 var mapping = false;
2506 } else {
2507 if (!IsCallable(mapfn)) throw TypeError();
2508 var t = thisArg;
2509 mapping = true;
2510 }
2511 var usingIterator = GetMethod(items, $$iterator);
2512 if (usingIterator !== undefined) {
2513 if (IsConstructor(c)) {
2514 var a = new c();
2515 } else {
2516 a = new Array(0);
2517 }
2518 var iterator = GetIterator(items, usingIterator);
2519 var k = 0;
2520 while (true) {
2521 var next = IteratorStep(iterator);
2522 if (next === false) {
2523 a.length = k;
2524 return a;
2525 }
2526 var nextValue = IteratorValue(next);
2527 if (mapping)
2528 var mappedValue = mapfn.call(t, nextValue);
2529 else
2530 mappedValue = nextValue;
2531 a[k] = mappedValue;
2532 k += 1;
2533 }
2534 }
2535 var arrayLike = ToObject(items);
2536 var lenValue = arrayLike.length;
2537 var len = ToLength(lenValue);
2538 if (IsConstructor(c)) {
2539 a = new c(len);
2540 } else {
2541 a = new Array(len);
2542 }
2543 k = 0;
2544 while (k < len) {
2545 var kValue = arrayLike[k];
2546 if (mapping)
2547 mappedValue = mapfn.call(t, kValue, k);
2548 else
2549 mappedValue = kValue;
2550 a[k] = mappedValue;
2551 k += 1;
2552 }
2553 a.length = len;
2554 return a;
2555 });
2556
2557 // 22.1.2.2 Array.isArray ( arg )
2558
2559 // 22.1.2.3 Array.of ( ...items )
2560 define(
2561 Array, 'of',
2562 function of() {
2563 var items = arguments;
2564
2565 var lenValue = items.length;
2566 var len = ToUint32(lenValue);
2567 var c = strict(this), a;
2568 if (IsConstructor(c)) {
2569 a = new c(len);
2570 a = ToObject(a);
2571 } else {
2572 a = new Array(len);
2573 }
2574 var k = 0;
2575 while (k < len) {
2576 a[k] = items[k];
2577 k += 1;
2578 }
2579 a.length = len;
2580 return a;
2581 });
2582
2583 // 22.1.2.4 Array.prototype
2584 // 22.1.2.5 get Array [ @@species ]
2585 // 22.1.3 Properties of the Array Prototype Object
2586 // 22.1.3.1 Array.prototype.concat ( ...arguments )
2587 // 22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2588 // 22.1.3.2 Array.prototype.constructor
2589 // 22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2590 define(
2591 Array.prototype, 'copyWithin',
2592 function copyWithin(target, start/*, end*/) {
2593 var end = arguments[2];
2594
2595 var o = ToObject(this);
2596 var lenVal = o.length;
2597 var len = ToLength(lenVal);
2598 len = max(len, 0);
2599 var relativeTarget = ToInteger(target);
2600 var to;
2601 if (relativeTarget < 0)
2602 to = max(len + relativeTarget, 0);
2603 else
2604 to = min(relativeTarget, len);
2605 var relativeStart = ToInteger(start);
2606 var from;
2607 if (relativeStart < 0)
2608 from = max(len + relativeStart, 0);
2609 else
2610 from = min(relativeStart, len);
2611 var relativeEnd;
2612 if (end === undefined)
2613 relativeEnd = len;
2614 else
2615 relativeEnd = ToInteger(end);
2616 var final;
2617 if (relativeEnd < 0)
2618 final = max(len + relativeEnd, 0);
2619 else
2620 final = min(relativeEnd, len);
2621 var count = min(final - from, len - to);
2622 var direction;
2623 if (from < to && to < from + count) {
2624 direction = -1;
2625 from = from + count - 1;
2626 to = to + count - 1;
2627 } else {
2628 direction = 1;
2629 }
2630 while (count > 0) {
2631 var fromKey = String(from);
2632 var toKey = String(to);
2633 var fromPresent = HasProperty(o, fromKey);
2634 if (fromPresent) {
2635 var fromVal = o[fromKey];
2636 o[toKey] = fromVal;
2637 } else {
2638 delete o[toKey];
2639 }
2640 from = from + direction;
2641 to = to + direction;
2642 count = count - 1;
2643 }
2644 return o;
2645 });
2646
2647 // 22.1.3.4 Array.prototype.entries ( )
2648 var nativeArrayIteratorMethods =
2649 ('entries' in Array.prototype && 'next' in [].entries());
2650
2651 define(
2652 Array.prototype, 'entries',
2653 function entries() {
2654 return CreateArrayIterator(this, 'key+value');
2655 }, !nativeArrayIteratorMethods);
2656
2657 // 22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2658
2659 // 22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2660 define(
2661 Array.prototype, 'fill',
2662 function fill(value/*, start, end*/) {
2663 var start = arguments[1],
2664 end = arguments[2];
2665
2666 var o = ToObject(this);
2667 var lenVal = o.length;
2668 var len = ToLength(lenVal);
2669 len = max(len, 0);
2670 var relativeStart = ToInteger(start);
2671 var k;
2672 if (relativeStart < 0)
2673 k = max((len + relativeStart), 0);
2674 else
2675 k = min(relativeStart, len);
2676 var relativeEnd;
2677 if (end === undefined)
2678 relativeEnd = len;
2679 else
2680 relativeEnd = ToInteger(end);
2681 var final;
2682 if (relativeEnd < 0)
2683 final = max((len + relativeEnd), 0);
2684 else
2685 final = min(relativeEnd, len);
2686 while (k < final) {
2687 var pk = String(k);
2688 o[pk] = value;
2689 k += 1;
2690 }
2691 return o;
2692 });
2693
2694 // 22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2695
2696 // 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2697 define(
2698 Array.prototype, 'find',
2699 function find(predicate) {
2700 var o = ToObject(this);
2701 var lenValue = o.length;
2702 var len = ToInteger(lenValue);
2703 if (!IsCallable(predicate)) throw TypeError();
2704 var t = arguments.length > 1 ? arguments[1] : undefined;
2705 var k = 0;
2706 while (k < len) {
2707 var pk = String(k);
2708 var kPresent = HasProperty(o, pk);
2709 if (kPresent) {
2710 var kValue = o[pk];
2711 var testResult = predicate.call(t, kValue, k, o);
2712 if (Boolean(testResult)) {
2713 return kValue;
2714 }
2715 }
2716 ++k;
2717 }
2718 return undefined;
2719 });
2720
2721 // 22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2722 define(
2723 Array.prototype, 'findIndex',
2724 function findIndex(predicate) {
2725 var o = ToObject(this);
2726 var lenValue = o.length;
2727 var len = ToLength(lenValue);
2728 if (!IsCallable(predicate)) throw TypeError();
2729 var t = arguments.length > 1 ? arguments[1] : undefined;
2730 var k = 0;
2731 while (k < len) {
2732 var pk = String(k);
2733 var kPresent = HasProperty(o, pk);
2734 if (kPresent) {
2735 var kValue = o[pk];
2736 var testResult = predicate.call(t, kValue, k, o);
2737 if (Boolean(testResult)) {
2738 return k;
2739 }
2740 }
2741 ++k;
2742 }
2743 return -1;
2744 });
2745
2746 // 22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2747 // 22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2748 // 22.1.3.12 Array.prototype.join (separator)
2749
2750 // 22.1.3.13 Array.prototype.keys ( )
2751 define(
2752 Array.prototype, 'keys',
2753 function keys() {
2754 return CreateArrayIterator(this, 'key');
2755 }, !nativeArrayIteratorMethods);
2756
2757 // 22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2758 // 22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2759 // 22.1.3.16 Array.prototype.pop ( )
2760 // 22.1.3.17 Array.prototype.push ( ...items )
2761 // 22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2762 // 22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2763 // 22.1.3.20 Array.prototype.reverse ( )
2764 // 22.1.3.21 Array.prototype.shift ( )
2765 // 22.1.3.22 Array.prototype.slice (start, end)
2766 // 22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2767 // 22.1.3.24 Array.prototype.sort (comparefn)
2768 // 22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2769 // 22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2770 // 22.1.3.27 Array.prototype.toString ( )
2771 // 22.1.3.28 Array.prototype.unshift ( ...items )
2772
2773 // 22.1.3.29 Array.prototype.values ( )
2774 define(
2775 Array.prototype, 'values',
2776 function values() {
2777 return CreateArrayIterator(this, 'value');
2778 }, !nativeArrayIteratorMethods);
2779
2780 // 22.1.3.30 Array.prototype [ @@iterator ] ( )
2781 define(
2782 Array.prototype, $$iterator,
2783 Array.prototype.values
2784 );
2785
2786 // 22.1.3.31 Array.prototype [ @@unscopables ]
2787 // 22.1.4 Properties of Array Instances
2788 // 22.1.4.1 length
2789
2790 // 22.1.5 Array Iterator Objects
2791 function ArrayIterator() {}
2792
2793 // 22.1.5.1 CreateArrayIterator Abstract Operation
2794 function CreateArrayIterator(array, kind) {
2795 var o = ToObject(array);
2796 var iterator = new ArrayIterator;
2797 set_internal(iterator, '[[IteratedObject]]', o);
2798 set_internal(iterator, '[[ArrayIteratorNextIndex]]', 0);
2799 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2800 return iterator;
2801 }
2802
2803 // 22.1.5.2 The %ArrayIteratorPrototype% Object
2804 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
2805 ArrayIterator.prototype = $ArrayIteratorPrototype$;
2806
2807 // 22.1.5.2.1 %ArrayIteratorPrototype%. next( )
2808 define(
2809 $ArrayIteratorPrototype$, 'next',
2810 function next() {
2811 var o = strict(this);
2812 if (Type(o) !== 'object') throw TypeError();
2813 var a = o['[[IteratedObject]]'],
2814 index = o['[[ArrayIteratorNextIndex]]'],
2815 itemKind = o['[[ArrayIterationKind]]'],
2816 lenValue = a.length,
2817 len = ToUint32(lenValue),
2818 elementKey,
2819 elementValue;
2820 if (itemKind.indexOf('sparse') !== -1) {
2821 var found = false;
2822 while (!found && index < len) {
2823 elementKey = String(index);
2824 found = HasProperty(a, elementKey);
2825 if (!found) {
2826 index += 1;
2827 }
2828 }
2829 }
2830 if (index >= len) {
2831 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
2832 return CreateIterResultObject(undefined, true);
2833 }
2834 elementKey = index;
2835 set_internal(o, '[[ArrayIteratorNextIndex]]', index + 1);
2836 if (itemKind.indexOf('value') !== -1)
2837 elementValue = a[elementKey];
2838 if (itemKind.indexOf('key+value') !== -1)
2839 return CreateIterResultObject([elementKey, elementValue], false);
2840 if (itemKind.indexOf('key') !== -1)
2841 return CreateIterResultObject(elementKey, false);
2842 if (itemKind === 'value')
2843 return CreateIterResultObject(elementValue, false);
2844 throw Error('Internal error');
2845 });
2846
2847 // 22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
2848 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
2849
2850 // 22.1.5.3 Properties of Array Iterator Instances
2851
2852
2853 // ---------------------------------------
2854 // 22.2 TypedArray Objects
2855 // ---------------------------------------
2856
2857 // See typedarray.js for TypedArray polyfill
2858
2859 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
2860 'Int16Array', 'Uint16Array',
2861 'Int32Array', 'Uint32Array',
2862 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
2863 if (!($TypedArrayName$ in global))
2864 return;
2865 var $TypedArray$ = global[$TypedArrayName$];
2866
2867 // 22.2.1 The %TypedArray% Intrinsic Object
2868 // 22.2.1.1 %TypedArray% ( length )
2869 // 22.2.1.2 %TypedArray% ( typedArray )
2870 // 22.2.1.3 %TypedArray% ( object )
2871 // 22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
2872 // 22.2.1.5 %TypedArray% ( all other argument combinations )
2873 // 22.2.2 Properties of the %TypedArray% Intrinsic Object
2874
2875 // 22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
2876 define(
2877 $TypedArray$, 'from',
2878 function from(source) {
2879 var mapfn = arguments[1];
2880 var thisArg = arguments[2];
2881
2882 var c = strict(this);
2883 if (!IsConstructor(c)) throw TypeError();
2884 if (mapfn === undefined) {
2885 var mapping = false;
2886 } else {
2887 if (IsCallable(mapfn)) throw TypeError();
2888 var t = thisArg;
2889 mapping = true;
2890 }
2891 var usingIterator = GetMethod(source, $$iterator);
2892 if (usingIterator !== undefined) {
2893 var iterator = GetIterator(source, usingIterator);
2894 var values = [];
2895 var next = true;
2896 while (next !== false) {
2897 next = IteratorStep(iterator);
2898 if (next !== false) {
2899 var nextValue = IteratorValue(next);
2900 values.push(nextValue);
2901 }
2902 }
2903 var len = values.length;
2904 var newObj = new c(len);
2905 var k = 0;
2906 while (k < len) {
2907 var kValue = values.shift();
2908 if (mapping) {
2909 var mappedValue = mapfn.call(t, kValue);
2910 } else {
2911 mappedValue = kValue;
2912 }
2913 newObj[k] = mappedValue;
2914 ++k;
2915 }
2916 console.assert(values.length === 0);
2917 return newObj;
2918 }
2919 var arrayLike = ToObject(source);
2920 var lenValue = arrayLike.length;
2921 len = ToLength(lenValue);
2922 newObj = new c(len);
2923 k = 0;
2924 while (k < len) {
2925 kValue = arrayLike[k];
2926 if (mapping) {
2927 mappedValue = mapfn.call(t, kValue, k);
2928 } else {
2929 mappedValue = kValue;
2930 }
2931 newObj[k] = mappedValue;
2932 ++k;
2933 }
2934 return newObj;
2935 });
2936
2937 // 22.2.2.2 %TypedArray%.of ( ...items )
2938 define(
2939 $TypedArray$, 'of',
2940 function of() {
2941 var items = arguments;
2942
2943 var len = items.length;
2944 var c = strict(this);
2945 var newObj = new c(len);
2946 var k = 0;
2947 while (k < len) {
2948 newObj[k] = items[k];
2949 ++k;
2950 }
2951 return newObj;
2952 });
2953
2954 // 22.2.2.3 %TypedArray%.prototype
2955 // 22.2.2.4 get %TypedArray% [ @@species ]
2956 // 22.2.3 Properties of the %TypedArrayPrototype% Object
2957 // 22.2.3.1 get %TypedArray%.prototype.buffer
2958 // 22.2.3.2 get %TypedArray%.prototype.byteLength
2959 // 22.2.3.3 get %TypedArray%.prototype.byteOffset
2960 // 22.2.3.4 %TypedArray%.prototype.constructor
2961
2962 // 22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
2963 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
2964
2965 // 22.2.3.6 %TypedArray%.prototype.entries ( )
2966 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
2967
2968 // 22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
2969 define($TypedArray$.prototype, 'every', Array.prototype.every);
2970
2971 // 22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
2972 define(
2973 $TypedArray$.prototype, 'fill',
2974 //Array.prototype.fill // Doesn't work in Safari 7
2975 function fill(value/*, start, end*/) {
2976 var start = arguments[1],
2977 end = arguments[2];
2978
2979 var o = ToObject(this);
2980 var lenVal = o.length;
2981 var len = ToLength(lenVal);
2982 len = max(len, 0);
2983 var relativeStart = ToInteger(start);
2984 var k;
2985 if (relativeStart < 0) k = max((len + relativeStart), 0);
2986 else k = min(relativeStart, len);
2987 var relativeEnd;
2988 if (end === undefined) relativeEnd = len;
2989 else relativeEnd = ToInteger(end);
2990 var final;
2991 if (relativeEnd < 0) final = max((len + relativeEnd), 0);
2992 else final = min(relativeEnd, len);
2993 while (k < final) {
2994 var pk = String(k);
2995 o[pk] = value;
2996 k += 1;
2997 }
2998 return o;
2999 });
3000
3001 // 22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
3002 define(
3003 $TypedArray$.prototype, 'filter',
3004 function filter(callbackfn) {
3005 var thisArg = arguments[1];
3006
3007 var o = ToObject(this);
3008 var lenVal = o.length;
3009 var len = ToLength(lenVal);
3010 if (!IsCallable(callbackfn)) throw TypeError();
3011 var t = thisArg;
3012 var c = o.constructor;
3013 var kept = [];
3014 var k = 0;
3015 var captured = 0;
3016 while (k < len) {
3017 var kValue = o[k];
3018 var selected = callbackfn.call(t, kValue, k, o);
3019 if (selected) {
3020 kept.push(kValue);
3021 ++captured;
3022 }
3023 ++k;
3024 }
3025 var a = new c(captured);
3026 var n = 0;
3027 for (var i = 0; i < kept.length; ++i) {
3028 var e = kept[i];
3029 a[n] = e;
3030 ++n;
3031 }
3032 return a;
3033 });
3034
3035 // 22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
3036 define($TypedArray$.prototype, 'find', Array.prototype.find);
3037
3038 // 22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
3039 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
3040
3041 // 22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
3042 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
3043
3044 // 22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
3045 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
3046
3047 // 22.2.3.14 %TypedArray%.prototype.join ( separator )
3048 define($TypedArray$.prototype, 'join', Array.prototype.join);
3049
3050 // 22.2.3.15 %TypedArray%.prototype.keys ( )
3051 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
3052
3053 // 22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
3054 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
3055
3056 // 22.2.3.17 get %TypedArray%.prototype.length
3057
3058 // 22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
3059 define(
3060 $TypedArray$.prototype, 'map',
3061 function map(callbackfn) {
3062 var thisArg = arguments[1];
3063
3064 var o = ToObject(this);
3065 var lenValue = o.length;
3066 var len = ToLength(lenValue);
3067 if (!IsCallable(callbackfn)) throw TypeError();
3068 var t = thisArg;
3069 var a = undefined;
3070 var c = o.constructor;
3071 if (IsConstructor(c))
3072 a = new c(len);
3073 if (a === undefined)
3074 a = new Array(len);
3075 var k = 0;
3076 while (k < len) {
3077 var kPresent = HasProperty(o, k);
3078 if (kPresent) {
3079 var kValue = o[k];
3080 var mappedValue = callbackfn.call(t, kValue, k, o);
3081 a[k] = mappedValue;
3082 }
3083 ++k;
3084 }
3085 return a;
3086 });
3087
3088 // 22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
3089 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
3090
3091 // 22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
3092 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
3093
3094 // 22.2.3.21 %TypedArray%.prototype.reverse ( )
3095 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
3096
3097 // 22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
3098 // 22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
3099 // 22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
3100
3101 // 22.2.3.23 %TypedArray%.prototype.slice ( start, end )
3102 define(
3103 $TypedArray$.prototype, 'slice',
3104 function slice(start, end) {
3105 var o = ToObject(this);
3106 var lenVal = o.length;
3107 var len = ToLength(lenVal);
3108 var relativeStart = ToInteger(start);
3109 var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
3110 var relativeEnd = (end === undefined) ? len : ToInteger(end);
3111 var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
3112 var count = final - k;
3113 var c = o.constructor;
3114 if (IsConstructor(c)) {
3115 var a = new c(count);
3116 } else {
3117 throw TypeError();
3118 }
3119 var n = 0;
3120 while (k < final) {
3121 var kValue = o[k];
3122 a[n] = kValue;
3123 ++k;
3124 ++n;
3125 }
3126 return a;
3127 });
3128
3129 // 22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
3130 define($TypedArray$.prototype, 'some', Array.prototype.some);
3131
3132 // 22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
3133 define(
3134 $TypedArray$.prototype, 'sort',
3135 function sort() {
3136 var comparefn = arguments[0];
3137
3138 function sortCompare(x, y) {
3139 console.assert(Type(x) === 'number' && Type(y) === 'number');
3140 if (x !== x && y !== y) return +0;
3141 if (x !== x) return 1;
3142 if (y !== y) return -1;
3143 if (comparefn !== undefined) {
3144 return comparefn(x, y);
3145 }
3146 if (x < y) return -1;
3147 if (x > y) return 1;
3148 return +0;
3149 }
3150 return Array.prototype.sort.call(this, sortCompare);
3151 });
3152
3153 // 22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
3154 // 22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
3155 // 22.2.3.28 %TypedArray%.prototype.toString ( )
3156
3157 // 22.2.3.29 %TypedArray%.prototype.values ( )
3158 define($TypedArray$.prototype, 'values', Array.prototype.values);
3159
3160 // 22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
3161 define(
3162 $TypedArray$.prototype, $$iterator,
3163 $TypedArray$.prototype.values
3164 );
3165
3166 // 22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3167 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3168
3169 // 22.2.4 The TypedArray Constructors
3170 // 22.2.4.1TypedArray( ... argumentsList)
3171 // 22.2.5 Properties of the TypedArray Constructors
3172 // 22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3173 // 22.2.5.2 TypedArray.prototype
3174 // 22.2.6 Properties of TypedArray Prototype Objects
3175 // 22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3176 // 22.2.6.2 TypedArray.prototype.constructor
3177 // 22.2.7 Properties of TypedArray Instances
3178 });
3179
3180 // ---------------------------------------
3181 // 23 Keyed Collection
3182 // ---------------------------------------
3183
3184 // ---------------------------------------
3185 // 23.1 Map Objects
3186 // ---------------------------------------
3187
3188 (function() {
3189 // 23.1.1 The Map Constructor
3190
3191 // 23.1.1.1 Map ( [ iterable ] )
3192 /** @constructor */
3193 function Map(/*iterable*/) {
3194 var map = strict(this);
3195 var iterable = arguments[0];
3196
3197 if (Type(map) !== 'object') throw TypeError();
3198 if ('[[MapData]]' in map) throw TypeError();
3199
3200 if (iterable !== undefined) {
3201 var adder = map['set'];
3202 if (!IsCallable(adder)) throw TypeError();
3203 var iter = GetIterator(ToObject(iterable));
3204 }
3205 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3206 if (iter === undefined) return map;
3207 while (true) {
3208 var next = IteratorStep(iter);
3209 if (next === false)
3210 return map;
3211 var nextItem = IteratorValue(next);
3212 if (Type(nextItem) !== 'object') throw TypeError();
3213 var k = nextItem[0];
3214 var v = nextItem[1];
3215 adder.call(map, k, v);
3216 }
3217
3218 return map;
3219 }
3220
3221 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3222 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3223 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3224 (new global.Map([['a', 1]]).size !== 1))
3225 global.Map = Map;
3226
3227
3228 function MapDataIndexOf(mapData, key) {
3229 var i;
3230 if (key === key) return mapData.keys.indexOf(key);
3231 // Slow case for NaN
3232 for (i = 0; i < mapData.keys.length; i += 1)
3233 if (SameValueZero(mapData.keys[i], key)) return i;
3234 return -1;
3235 }
3236
3237 // 23.1.1.2 new Map ( ... argumentsList )
3238 // 23.1.2 Properties of the Map Constructor
3239 // 23.1.2.1 Map.prototype
3240 var $MapPrototype$ = {};
3241 Map.prototype = $MapPrototype$;
3242
3243 // 23.1.2.2 get Map [ @@species ]
3244
3245 // 23.1.3 Properties of the Map Prototype Object
3246 // 23.1.3.1 Map.prototype.clear ()
3247 define(
3248 Map.prototype, 'clear',
3249 function clear() {
3250 var m = strict(this);
3251 if (Type(m) !== 'object') throw TypeError();
3252 if (!('[[MapData]]' in m)) throw TypeError();
3253 if (m['[[MapData]]'] === undefined) throw TypeError();
3254 var entries = m['[[MapData]]'];
3255 entries.keys.length = 0;
3256 entries.values.length = 0;
3257 return undefined;
3258 });
3259
3260 // 23.1.3.2 Map.prototype.constructor
3261
3262 // 23.1.3.3 Map.prototype.delete ( key )
3263 define(
3264 Map.prototype, 'delete',
3265 function delete_(key) {
3266 var m = strict(this);
3267 if (Type(m) !== 'object') throw TypeError();
3268 if (!('[[MapData]]' in m)) throw TypeError();
3269 if (m['[[MapData]]'] === undefined) throw TypeError();
3270 var entries = m['[[MapData]]'];
3271 var i = MapDataIndexOf(entries, key);
3272 if (i < 0) return false;
3273 entries.keys[i] = empty;
3274 entries.values[i] = empty;
3275 return true;
3276 });
3277
3278 // 23.1.3.4 Map.prototype.entries ( )
3279 define(
3280 Map.prototype, 'entries',
3281 function entries() {
3282 var m = strict(this);
3283 if (Type(m) !== 'object') throw TypeError();
3284 return CreateMapIterator(m, 'key+value');
3285 });
3286
3287 // 23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3288 define(
3289 Map.prototype, 'forEach',
3290 function forEach(callbackfn /*, thisArg*/) {
3291 var thisArg = arguments[1];
3292
3293 var m = strict(this);
3294 if (Type(m) !== 'object') throw TypeError();
3295 if (!('[[MapData]]' in m)) throw TypeError();
3296 if (m['[[MapData]]'] === undefined) throw TypeError();
3297 var entries = m['[[MapData]]'];
3298
3299 if (!IsCallable(callbackfn)) {
3300 throw TypeError('First argument to forEach is not callable.');
3301 }
3302 for (var i = 0; i < entries.keys.length; ++i) {
3303 if (entries.keys[i] !== empty) {
3304 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3305 }
3306 }
3307 return undefined;
3308 });
3309
3310 // 23.1.3.6 Map.prototype.get ( key )
3311 define(
3312 Map.prototype, 'get',
3313 function get(key) {
3314 var m = strict(this);
3315 if (Type(m) !== 'object') throw TypeError();
3316 if (!('[[MapData]]' in m)) throw TypeError();
3317 if (m['[[MapData]]'] === undefined) throw TypeError();
3318 var entries = m['[[MapData]]'];
3319 var i = MapDataIndexOf(entries, key);
3320 if (i >= 0) return entries.values[i];
3321 return undefined;
3322 });
3323
3324 // 23.1.3.7 Map.prototype.has ( key )
3325 define(
3326 Map.prototype, 'has',
3327 function has(key) {
3328 var m = strict(this);
3329 if (Type(m) !== 'object') throw TypeError();
3330 if (!('[[MapData]]' in m)) throw TypeError();
3331 if (m['[[MapData]]'] === undefined) throw TypeError();
3332 var entries = m['[[MapData]]'];
3333 if (MapDataIndexOf(entries, key) >= 0) return true;
3334 return false;
3335 });
3336
3337 // 23.1.3.8 Map.prototype.keys ( )
3338 define(
3339 Map.prototype, 'keys',
3340 function keys() {
3341 var m = strict(this);
3342 if (Type(m) !== 'object') throw TypeError();
3343 return CreateMapIterator(m, 'key');
3344 });
3345
3346 // 23.1.3.9 Map.prototype.set ( key , value )
3347 define(
3348 Map.prototype, 'set',
3349 function set(key, value) {
3350 var m = strict(this);
3351 if (Type(m) !== 'object') throw TypeError();
3352 if (!('[[MapData]]' in m)) throw TypeError();
3353 if (m['[[MapData]]'] === undefined) throw TypeError();
3354 var entries = m['[[MapData]]'];
3355 var i = MapDataIndexOf(entries, key);
3356 if (i < 0) i = entries.keys.length;
3357 if (SameValue(key, -0)) key = 0;
3358 entries.keys[i] = key;
3359 entries.values[i] = value;
3360 return m;
3361 });
3362
3363 // 23.1.3.10 get Map.prototype.size
3364 Object.defineProperty(
3365 Map.prototype, 'size', {
3366 get: function() {
3367 var m = strict(this);
3368 if (Type(m) !== 'object') throw TypeError();
3369 if (!('[[MapData]]' in m)) throw TypeError();
3370 if (m['[[MapData]]'] === undefined) throw TypeError();
3371 var entries = m['[[MapData]]'];
3372 var count = 0;
3373 for (var i = 0; i < entries.keys.length; ++i) {
3374 if (entries.keys[i] !== empty)
3375 count = count + 1;
3376 }
3377 return count;
3378 }
3379 });
3380
3381 // 23.1.3.11 Map.prototype.values ( )
3382 define(
3383 Map.prototype, 'values',
3384 function values() {
3385 var m = strict(this);
3386 if (Type(m) !== 'object') throw TypeError();
3387 return CreateMapIterator(m, 'value');
3388 });
3389
3390 // 23.1.3.12 Map.prototype [ @@iterator ]( )
3391 define(
3392 Map.prototype, $$iterator,
3393 function() {
3394 var m = strict(this);
3395 if (Type(m) !== 'object') throw TypeError();
3396 return CreateMapIterator(m, 'key+value');
3397 });
3398
3399 // 23.1.3.13 Map.prototype [ @@toStringTag ]
3400 define(global.Map.prototype, $$toStringTag, 'Map');
3401
3402 // 23.1.4 Properties of Map Instances
3403 // 23.1.5 Map Iterator Objects
3404
3405 /** @constructor */
3406 function MapIterator() {}
3407
3408 // 23.1.5.1 CreateMapIterator Abstract Operation
3409 function CreateMapIterator(map, kind) {
3410 if (Type(map) !== 'object') throw TypeError();
3411 if (!('[[MapData]]' in map)) throw TypeError();
3412 if (map['[[MapData]]'] === undefined) throw TypeError();
3413 var iterator = new MapIterator;
3414 set_internal(iterator, '[[Map]]', map);
3415 set_internal(iterator, '[[MapNextIndex]]', 0);
3416 set_internal(iterator, '[[MapIterationKind]]', kind);
3417 return iterator;
3418 }
3419
3420 // 23.1.5.2 The %MapIteratorPrototype% Object
3421 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3422 MapIterator.prototype = $MapIteratorPrototype$;
3423
3424 // 23.1.5.2.1 %MapIteratorPrototype%.next ( )
3425 define(
3426 $MapIteratorPrototype$, 'next',
3427 function next() {
3428 var o = strict(this);
3429 if (Type(o) !== 'object') throw TypeError();
3430 var m = o['[[Map]]'],
3431 index = o['[[MapNextIndex]]'],
3432 itemKind = o['[[MapIterationKind]]'],
3433 entries = m['[[MapData]]'];
3434 while (index < entries.keys.length) {
3435 var e = {key: entries.keys[index], value: entries.values[index]};
3436 index = index += 1;
3437 set_internal(o, '[[MapNextIndex]]', index);
3438 if (e.key !== empty) {
3439 if (itemKind === 'key') {
3440 return CreateIterResultObject(e.key, false);
3441 } else if (itemKind === 'value') {
3442 return CreateIterResultObject(e.value, false);
3443 } else {
3444 return CreateIterResultObject([e.key, e.value], false);
3445 }
3446 }
3447 }
3448 return CreateIterResultObject(undefined, true);
3449 });
3450
3451 // 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3452 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3453
3454 // 23.1.5.3 Properties of Map Iterator Instances
3455 }());
3456
3457 // ---------------------------------------
3458 // 23.2 Set Objects
3459 // ---------------------------------------
3460
3461 (function() {
3462 // 23.2.1 The Set Constructor
3463 // 23.2.1.1 Set ( [ iterable ] )
3464
3465 /** @constructor */
3466 function Set(/*iterable*/) {
3467 var set = strict(this);
3468 var iterable = arguments[0];
3469
3470 if (Type(set) !== 'object') throw TypeError();
3471 if ('[[SetData]]' in set) throw TypeError();
3472
3473 if (iterable !== undefined) {
3474 var adder = set['add'];
3475 if (!IsCallable(adder)) throw TypeError();
3476 var iter = GetIterator(ToObject(iterable));
3477 }
3478 set_internal(set, '[[SetData]]', []);
3479 if (iter === undefined) return set;
3480 while (true) {
3481 var next = IteratorStep(iter);
3482 if (next === false)
3483 return set;
3484 var nextValue = IteratorValue(next);
3485 adder.call(set, nextValue);
3486 }
3487
3488 return set;
3489 }
3490
3491 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3492 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3493 (new global.Set([1]).size !== 1))
3494 global.Set = Set;
3495
3496 function SetDataIndexOf(setData, key) {
3497 var i;
3498 if (key === key)
3499 return setData.indexOf(key);
3500 // Slow case for NaN
3501 for (i = 0; i < setData.length; i += 1)
3502 if (SameValueZero(setData[i], key)) return i;
3503 return -1;
3504 }
3505
3506 // 23.2.1.2 new Set ( ...argumentsList )
3507 // 23.2.2 Properties of the Set Constructor
3508
3509 // 23.2.2.1 Set.prototype
3510 var $SetPrototype$ = {};
3511 Set.prototype = $SetPrototype$;
3512
3513 // 23.2.2.2 get Set [ @@species ]
3514 // 23.2.3 Properties of the Set Prototype Object
3515
3516 // 23.2.3.1 Set.prototype.add (value )
3517 define(
3518 Set.prototype, 'add',
3519 function add(value) {
3520 var s = strict(this);
3521 if (Type(s) !== 'object') throw TypeError();
3522 if (!('[[SetData]]' in s)) throw TypeError();
3523 if (s['[[SetData]]'] === undefined) throw TypeError();
3524 if (SameValue(value, -0)) value = 0;
3525 var entries = s['[[SetData]]'];
3526 var i = SetDataIndexOf(entries, value);
3527 if (i < 0) i = s['[[SetData]]'].length;
3528 s['[[SetData]]'][i] = value;
3529
3530 return s;
3531 });
3532
3533 // 23.2.3.2 Set.prototype.clear ()
3534 define(
3535 Set.prototype, 'clear',
3536 function clear() {
3537 var s = strict(this);
3538 if (Type(s) !== 'object') throw TypeError();
3539 if (!('[[SetData]]' in s)) throw TypeError();
3540 if (s['[[SetData]]'] === undefined) throw TypeError();
3541 var entries = s['[[SetData]]'];
3542 entries.length = 0;
3543 return undefined;
3544 });
3545
3546 // 23.2.3.3 Set.prototype.constructor
3547 // 23.2.3.4 Set.prototype.delete ( value )
3548 define(
3549 Set.prototype, 'delete',
3550 function delete_(value) {
3551 var s = strict(this);
3552 if (Type(s) !== 'object') throw TypeError();
3553 if (!('[[SetData]]' in s)) throw TypeError();
3554 if (s['[[SetData]]'] === undefined) throw TypeError();
3555 var entries = s['[[SetData]]'];
3556 var i = SetDataIndexOf(entries, value);
3557 if (i < 0) return false;
3558 entries[i] = empty;
3559 return true;
3560 });
3561
3562 // 23.2.3.5 Set.prototype.entries ( )
3563 define(
3564 Set.prototype, 'entries',
3565 function entries() {
3566 var s = strict(this);
3567 if (Type(s) !== 'object') throw TypeError();
3568 return CreateSetIterator(s, 'key+value');
3569 });
3570
3571 // 23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3572 define(
3573 Set.prototype, 'forEach',
3574 function forEach(callbackfn/*, thisArg*/) {
3575 var thisArg = arguments[1];
3576
3577 var s = strict(this);
3578 if (Type(s) !== 'object') throw TypeError();
3579 if (!('[[SetData]]' in s)) throw TypeError();
3580 if (s['[[SetData]]'] === undefined) throw TypeError();
3581 var entries = s['[[SetData]]'];
3582
3583 if (!IsCallable(callbackfn)) {
3584 throw TypeError('First argument to forEach is not callable.');
3585 }
3586 for (var i = 0; i < entries.length; ++i) {
3587 if (entries[i] !== empty) {
3588 callbackfn.call(thisArg, entries[i], entries[i], s);
3589 }
3590 }
3591 });
3592
3593 // 23.2.3.7 Set.prototype.has ( value )
3594 define(
3595 Set.prototype, 'has',
3596 function has(key) {
3597 var s = strict(this);
3598 if (Type(s) !== 'object') throw TypeError();
3599 if (!('[[SetData]]' in s)) throw TypeError();
3600 if (s['[[SetData]]'] === undefined) throw TypeError();
3601 var entries = s['[[SetData]]'];
3602 return SetDataIndexOf(entries, key) !== -1;
3603 });
3604
3605 // 23.2.3.8 Set.prototype.keys ( )
3606 // See Set.prototype.values
3607
3608 // 23.2.3.9 get Set.prototype.size
3609 Object.defineProperty(
3610 Set.prototype, 'size', {
3611 get: function() {
3612 var s = strict(this);
3613 if (Type(s) !== 'object') throw TypeError();
3614 if (!('[[SetData]]' in s)) throw TypeError();
3615 if (s['[[SetData]]'] === undefined) throw TypeError();
3616 var entries = s['[[SetData]]'];
3617 var count = 0;
3618 for (var i = 0; i < entries.length; ++i) {
3619 if (entries[i] !== empty)
3620 count = count + 1;
3621 }
3622 return count;
3623 }
3624 });
3625
3626 // 23.2.3.10 Set.prototype.values ( )
3627 define(
3628 Set.prototype, 'values',
3629 function values() {
3630 var s = strict(this);
3631 if (Type(s) !== 'object') throw TypeError();
3632 return CreateSetIterator(s, 'value');
3633 });
3634 // NOTE: function name is still 'values':
3635 Set.prototype.keys = Set.prototype.values;
3636
3637 // 23.2.3.11 Set.prototype [@@iterator ] ( )
3638 define(
3639 Set.prototype, $$iterator,
3640 function() {
3641 var s = strict(this);
3642 if (Type(s) !== 'object') throw TypeError();
3643 return CreateSetIterator(s);
3644 });
3645
3646 // 23.2.3.12 Set.prototype [ @@toStringTag ]
3647 define(global.Set.prototype, $$toStringTag, 'Set');
3648
3649 // 23.2.4 Properties of Set Instances
3650 // 23.2.5 Set Iterator Objects
3651 /** @constructor */
3652 function SetIterator() {}
3653
3654 // 23.2.5.1 CreateSetIterator Abstract Operation
3655 function CreateSetIterator(set, kind) {
3656 if (Type(set) !== 'object') throw TypeError();
3657 if (!('[[SetData]]' in set)) throw TypeError();
3658 if (set['[[SetData]]'] === undefined) throw TypeError();
3659 var iterator = new SetIterator;
3660 set_internal(iterator, '[[IteratedSet]]', set);
3661 set_internal(iterator, '[[SetNextIndex]]', 0);
3662 set_internal(iterator, '[[SetIterationKind]]', kind);
3663 return iterator;
3664 }
3665
3666 // 23.2.5.2 The %SetIteratorPrototype% Object
3667 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3668 SetIterator.prototype = $SetIteratorPrototype$;
3669
3670 // 23.2.5.2.1 %SetIteratorPrototype%.next( )
3671 define(
3672 $SetIteratorPrototype$, 'next',
3673 function next() {
3674 var o = strict(this);
3675 if (Type(o) !== 'object') throw TypeError();
3676 var s = o['[[IteratedSet]]'],
3677 index = o['[[SetNextIndex]]'],
3678 itemKind = o['[[SetIterationKind]]'],
3679 entries = s['[[SetData]]'];
3680 while (index < entries.length) {
3681 var e = entries[index];
3682 index = index += 1;
3683 set_internal(o, '[[SetNextIndex]]', index);
3684 if (e !== empty) {
3685 if (itemKind === 'key+value')
3686 return CreateIterResultObject([e, e], false);
3687 return CreateIterResultObject(e, false);
3688 }
3689 }
3690 return CreateIterResultObject(undefined, true);
3691 });
3692
3693 // 23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3694 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3695
3696 // 23.2.5.3 Properties of Set Iterator Instances
3697
3698 }());
3699
3700 // ---------------------------------------
3701 // 23.3 WeakMap Objects
3702 // ---------------------------------------
3703
3704 (function() {
3705 // 23.3.1 The WeakMap Constructor
3706 // 23.3.1.1 WeakMap ( [ iterable ] )
3707 /** @constructor */
3708 function WeakMap(/*iterable*/) {
3709 var map = strict(this);
3710 var iterable = arguments[0];
3711
3712 if (Type(map) !== 'object') throw TypeError();
3713 if ('[[WeakMapData]]' in map) throw TypeError();
3714
3715 if (iterable !== undefined) {
3716 var adder = map['set'];
3717 if (!IsCallable(adder)) throw TypeError();
3718 var iter = GetIterator(ToObject(iterable));
3719 }
3720 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3721 if (iter === undefined) return map;
3722 while (true) {
3723 var next = IteratorStep(iter);
3724 if (next === false)
3725 return map;
3726 var nextValue = IteratorValue(next);
3727 if (Type(nextValue) !== 'object') throw TypeError();
3728 var k = nextValue[0];
3729 var v = nextValue[1];
3730 adder.call(map, k, v);
3731 }
3732
3733 return map;
3734 }
3735
3736 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3737 global.WeakMap = WeakMap;
3738
3739 // 23.3.2 Properties of the WeakMap Constructor
3740 // 23.3.2.1 WeakMap.prototype
3741 var $WeakMapPrototype$ = {};
3742 WeakMap.prototype = $WeakMapPrototype$;
3743
3744
3745
3746 // 23.3.2.2 WeakMap[ @@create ] ( )
3747 // 23.3.3 Properties of the WeakMap Prototype Object
3748
3749 // 23.3.3.1 WeakMap.prototype.constructor
3750
3751 // 23.3.3.2 WeakMap.prototype.delete ( key )
3752 define(
3753 WeakMap.prototype, 'delete',
3754 function delete_(key) {
3755 var M = strict(this);
3756 if (Type(M) !== 'object') throw TypeError();
3757 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3758 if (Type(key) !== 'object') throw TypeError('Expected object');
3759 return M['[[WeakMapData]]'].remove(key);
3760 });
3761
3762 // 23.3.3.3 WeakMap.prototype.get ( key )
3763 define(
3764 WeakMap.prototype, 'get',
3765 function get(key, defaultValue) {
3766 var M = strict(this);
3767 if (Type(M) !== 'object') throw TypeError();
3768 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3769 if (Type(key) !== 'object') throw TypeError('Expected object');
3770 return M['[[WeakMapData]]'].get(key, defaultValue);
3771 });
3772
3773 // 23.3.3.4 WeakMap.prototype.has ( key )
3774 define(
3775 WeakMap.prototype, 'has',
3776 function has(key) {
3777 var M = strict(this);
3778 if (Type(M) !== 'object') throw TypeError();
3779 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3780 if (Type(key) !== 'object') throw TypeError('Expected object');
3781 return M['[[WeakMapData]]'].has(key);
3782 });
3783
3784 // 23.3.3.5 WeakMap.prototype.set ( key , value )
3785 define(
3786 WeakMap.prototype, 'set',
3787 function set(key, value) {
3788 var M = strict(this);
3789 if (Type(M) !== 'object') throw TypeError();
3790 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3791 if (Type(key) !== 'object') throw TypeError('Expected object');
3792 M['[[WeakMapData]]'].set(key, value);
3793 return M;
3794 });
3795
3796 // 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3797 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3798
3799 // 23.3.4 Properties of WeakMap Instances
3800
3801 // Polyfills for incomplete native implementations:
3802 (function() {
3803 var wm = new global.WeakMap();
3804 var orig = global.WeakMap.prototype.set;
3805 define(global.WeakMap.prototype, 'set', function set() {
3806 orig.apply(this, arguments);
3807 return this;
3808 }, wm.set({}, 0) !== wm);
3809 }());
3810 }());
3811
3812 // ---------------------------------------
3813 // 23.4 WeakSet Objects
3814 // ---------------------------------------
3815
3816 (function() {
3817 // 23.4.1 The WeakSet Constructor
3818 // 23.4.1.1 WeakSet ( [ iterable ] )
3819 /** @constructor */
3820 function WeakSet(/*iterable*/) {
3821 var set = strict(this);
3822 var iterable = arguments[0];
3823
3824 if (Type(set) !== 'object') throw TypeError();
3825 if ('[[WeakSetData]]' in set) throw TypeError();
3826
3827 if (iterable !== undefined) {
3828 var adder = set['add'];
3829 if (!IsCallable(adder)) throw TypeError();
3830 var iter = GetIterator(ToObject(iterable));
3831 }
3832 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
3833 if (iter === undefined) return set;
3834 while (true) {
3835 var next = IteratorStep(iter);
3836 if (next === false)
3837 return set;
3838 var nextValue = IteratorValue(next);
3839 adder.call(set, nextValue);
3840 }
3841
3842 return set;
3843 }
3844
3845 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3846 global.WeakSet = WeakSet;
3847
3848 // 23.4.2 Properties of the WeakSet Constructor
3849 // 23.4.2.1 WeakSet.prototype
3850 var $WeakSetPrototype$ = {};
3851 WeakSet.prototype = $WeakSetPrototype$;
3852
3853 // 23.4.3 Properties of the WeakSet Prototype Object
3854 // 23.4.3.1 WeakSet.prototype.add (value )
3855 define(
3856 WeakSet.prototype, 'add',
3857 function add(value) {
3858 var S = strict(this);
3859 if (Type(S) !== 'object') throw TypeError();
3860 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3861 if (Type(value) !== 'object') throw TypeError('Expected object');
3862 S['[[WeakSetData]]'].set(value, true);
3863 return S;
3864 });
3865
3866 // 23.4.3.2 WeakSet.prototype.constructor
3867 // 23.4.3.3 WeakSet.prototype.delete ( value )
3868 define(
3869 WeakSet.prototype, 'delete',
3870 function delete_(value) {
3871 var S = strict(this);
3872 if (Type(S) !== 'object') throw TypeError();
3873 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3874 if (Type(value) !== 'object') throw TypeError('Expected object');
3875 return S['[[WeakSetData]]'].remove(value);
3876 });
3877
3878 // 23.4.3.4 WeakSet.prototype.has ( value )
3879 define(
3880 WeakSet.prototype, 'has',
3881 function has(key) {
3882 var S = strict(this);
3883 if (Type(S) !== 'object') throw TypeError();
3884 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3885 if (Type(key) !== 'object') throw TypeError('Expected object');
3886 return S['[[WeakSetData]]'].has(key);
3887 });
3888
3889 // 23.4.3.5 WeakSet.prototype [ @@toStringTag ]
3890 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
3891
3892 // 23.4.4 Properties of WeakSet Instances
3893
3894 // Polyfills for incomplete native implementations:
3895 (function() {
3896 var ws = new global.WeakSet();
3897 var orig = global.WeakSet.prototype.add;
3898 define(global.WeakSet.prototype, 'add', function add() {
3899 orig.apply(this, arguments);
3900 return this;
3901 }, ws.add({}) !== ws);
3902 }());
3903 }());
3904
3905 // ---------------------------------------
3906 // 24 Structured Data
3907 // ---------------------------------------
3908
3909 // ---------------------------------------
3910 // 24.1 ArrayBuffer Objects
3911 // ---------------------------------------
3912
3913 // See typedarray.js for TypedArray polyfill
3914
3915 (function() {
3916 if (!('ArrayBuffer' in global))
3917 return;
3918
3919 // 24.1.1 Abstract Operations For ArrayBuffer Objects
3920 // 24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
3921 // 24.1.1.2 IsDetachedBuffer( arrayBuffer )
3922 // 24.1.1.3 DetachArrayBuffer( arrayBuffer )
3923 // 24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
3924 // 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
3925 // 24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
3926 // 24.1.2 The ArrayBuffer Constructor
3927 // 24.1.2.1 ArrayBuffer( length )
3928 // 24.1.3 Properties of the ArrayBuffer Constructor
3929
3930 // 24.1.3.1 ArrayBuffer.isView ( arg )
3931 define(
3932 ArrayBuffer, 'isView',
3933 function isView(arg) {
3934 if (Type(arg) !== 'object') return false;
3935 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
3936 return false;
3937 });
3938
3939 // 24.1.3.2 ArrayBuffer.prototype
3940 // 24.1.3.3 get ArrayBuffer [ @@species ]
3941 // 24.1.4 Properties of the ArrayBuffer Prototype Object
3942 // 24.1.4.1 get ArrayBuffer.prototype.byteLength
3943 // 24.1.4.2 ArrayBuffer.prototype.constructor
3944 // 24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
3945
3946 // 24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
3947 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
3948
3949 // 24.1.5 Properties of the ArrayBuffer Instances
3950 }());
3951
3952 // ---------------------------------------
3953 // 24.2 DataView Objects
3954 // ---------------------------------------
3955
3956 // See typedarray.js for TypedArray polyfill
3957
3958 (function() {
3959 if (!('DataView' in global))
3960 return;
3961
3962 // 24.2.1 Abstract Operations For DataView Objects
3963 // 24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
3964 // 24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
3965 // 24.2.2 The DataView Constructor
3966 // 24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
3967 // 24.2.3 Properties of the DataView Constructor
3968 // 24.2.3.1 DataView.prototype
3969 // 24.2.4 Properties of the DataView Prototype Object
3970 // 24.2.4.1 get DataView.prototype.buffer
3971 // 24.2.4.2 get DataView.prototype.byteLength
3972 // 24.2.4.3 get DataView.prototype.byteOffset
3973 // 24.2.4.4 DataView.prototype.constructor
3974 // 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
3975 // 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
3976 // 24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
3977 // 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
3978 // 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
3979 // 24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
3980 // 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
3981 // 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
3982 // 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
3983 // 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
3984 // 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
3985 // 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
3986 // 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
3987 // 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
3988 // 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
3989 // 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
3990
3991 // 24.2.4.21 DataView.prototype[ @@toStringTag ]
3992 define(DataView.prototype, $$toStringTag, 'DataView');
3993
3994 // 24.2.5 Properties of DataView Instances
3995 }());
3996
3997 // ---------------------------------------
3998 // 24.3 The JSON Object
3999 // ---------------------------------------
4000
4001 // 24.3.1 JSON.parse ( text [ , reviver ] )
4002 // 24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
4003 // 24.3.3 JSON [ @@toStringTag ]
4004 define(JSON, $$toStringTag, 'JSON');
4005
4006 // ---------------------------------------
4007 // 25.1 Iteration
4008 // ---------------------------------------
4009
4010 // 25.1.1 Common Iteration Interfaces
4011 // 25.1.1.1 The Iterable Interface
4012 // 25.1.1.2 The Iterator Interface
4013 // 25.1.1.3 The IteratorResult Interface
4014
4015 // 25.1.2 The %IteratorPrototype% Object
4016 // Defined earlier, so other prototypes can reference it.
4017 // 25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
4018 define($IteratorPrototype$, $$iterator, function() {
4019 return this;
4020 });
4021
4022
4023 // ---------------------------------------
4024 // 25.4 Promise Objects
4025 // ---------------------------------------
4026
4027 (function() {
4028 // 25.4 Promise Objects
4029
4030 // 25.4.1 Promise Abstract Operations
4031
4032 // 25.4.1.1 PromiseCapability Records
4033 // 25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
4034
4035 function IfAbruptRejectPromise(value, capability) {
4036 var rejectResult = capability['[[Reject]]'].call(undefined, value);
4037 return capability['[[Promise]]'];
4038 }
4039
4040 // 25.4.1.2 PromiseReaction Records
4041
4042 // 25.4.1.3 CreateResolvingFunctions ( promise )
4043
4044 function CreateResolvingFunctions(promise) {
4045 var alreadyResolved = {'[[value]]': false};
4046 var resolve = PromiseResolveFunction();
4047 set_internal(resolve, '[[Promise]]', promise);
4048 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
4049 var reject = PromiseRejectFunction();
4050 set_internal(reject, '[[Promise]]', promise);
4051 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
4052 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
4053 }
4054
4055 // 25.4.1.3.1 Promise Reject Functions
4056
4057 function PromiseRejectFunction() {
4058 var F = function(reason) {
4059 console.assert(Type(F['[[Promise]]']) === 'object');
4060 var promise = F['[[Promise]]'];
4061 var alreadyResolved = F['[[AlreadyResolved]]'];
4062 if (alreadyResolved['[[value]]']) return undefined;
4063 set_internal(alreadyResolved, '[[value]]', true);
4064 return RejectPromise(promise, reason);
4065 };
4066 return F;
4067 }
4068
4069 // 25.4.1.3.2 Promise Resolve Functions
4070
4071 function PromiseResolveFunction() {
4072 var F = function(resolution) {
4073 console.assert(Type(F['[[Promise]]']) === 'object');
4074 var promise = F['[[Promise]]'];
4075 var alreadyResolved = F['[[AlreadyResolved]]'];
4076 if (alreadyResolved['[[value]]']) return undefined;
4077 set_internal(alreadyResolved, '[[value]]', true);
4078
4079 if (SameValue(resolution, promise)) {
4080 var selfResolutionError = TypeError();
4081 return RejectPromise(promise, selfResolutionError);
4082 }
4083 if (Type(resolution) !== 'object')
4084 return FulfillPromise(promise, resolution);
4085 try {
4086 var then = resolution['then'];
4087 } catch(then) {
4088 return RejectPromise(promise, then);
4089 }
4090 if (!IsCallable(then))
4091 return FulfillPromise(promise, resolution);
4092 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
4093 return undefined;
4094 };
4095 return F;
4096 }
4097
4098 // 25.4.1.4 FulfillPromise ( promise, value )
4099
4100 function FulfillPromise(promise, value) {
4101 console.assert(promise['[[PromiseState]]'] === 'pending');
4102 var reactions = promise['[[PromiseFulfillReactions]]'];
4103 set_internal(promise, '[[PromiseResult]]', value);
4104 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4105 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4106 set_internal(promise, '[[PromiseState]]', 'fulfilled');
4107 return TriggerPromiseReactions(reactions, value);
4108 }
4109
4110 // 25.4.1.5 NewPromiseCapability ( C )
4111
4112 function NewPromiseCapability(c) {
4113 // To keep Promise hermetic, this doesn't look much like the spec.
4114 return CreatePromiseCapabilityRecord(undefined, c);
4115 }
4116
4117 // 25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
4118
4119 function CreatePromiseCapabilityRecord(promise, constructor) {
4120 // To keep Promise hermetic, this doesn't look much like the spec.
4121 console.assert(IsConstructor(constructor));
4122 var promiseCapability = {};
4123 set_internal(promiseCapability, '[[Promise]]', promise);
4124 set_internal(promiseCapability, '[[Resolve]]', undefined);
4125 set_internal(promiseCapability, '[[Reject]]', undefined);
4126 var executor = GetCapabilitiesExecutor();
4127 set_internal(executor, '[[Capability]]', promiseCapability);
4128
4129 // NOTE: Differs from spec; object is constructed here
4130 var constructorResult = promise = new constructor(executor);
4131 set_internal(promiseCapability, '[[Promise]]', promise);
4132
4133 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
4134 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
4135 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
4136 return promiseCapability;
4137 }
4138
4139 // 25.4.1.5.2 GetCapabilitiesExecutor Functions
4140
4141 function GetCapabilitiesExecutor() {
4142 var F = function(resolve, reject) {
4143 console.assert(F['[[Capability]]']);
4144 var promiseCapability = F['[[Capability]]'];
4145 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
4146 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
4147 set_internal(promiseCapability, '[[Resolve]]', resolve);
4148 set_internal(promiseCapability, '[[Reject]]', reject);
4149 return undefined;
4150 };
4151 return F;
4152 }
4153
4154 // 25.4.1.6 IsPromise ( x )
4155
4156 function IsPromise(x) {
4157 if (Type(x) !== 'object') return false;
4158 if (!('[[PromiseState]]' in x)) return false;
4159 if (x['[[PromiseState]]'] === undefined) return false;
4160 return true;
4161 }
4162
4163 // 25.4.1.7 RejectPromise ( promise, reason )
4164
4165 function RejectPromise(promise, reason) {
4166 console.assert(promise['[[PromiseState]]'] === 'pending');
4167 var reactions = promise['[[PromiseRejectReactions]]'];
4168 set_internal(promise, '[[PromiseResult]]', reason);
4169 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4170 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4171 set_internal(promise, '[[PromiseState]]', 'rejected');
4172 return TriggerPromiseReactions(reactions, reason);
4173 }
4174
4175 // 25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4176
4177 function TriggerPromiseReactions(reactions, argument) {
4178 for (var i = 0, len = reactions.length; i < len; ++i)
4179 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4180 return undefined;
4181 }
4182
4183 // 25.4.2 Promise Jobs
4184
4185 // 25.4.2.1 PromiseReactionJob ( reaction, argument )
4186
4187 function PromiseReactionJob(reaction, argument) {
4188 var promiseCapability = reaction['[[Capabilities]]'];
4189 var handler = reaction['[[Handler]]'];
4190 var handlerResult, status;
4191 try {
4192 if (handler === 'Identity') handlerResult = argument;
4193 else if (handler === 'Thrower') throw argument;
4194 else handlerResult = handler.call(undefined, argument);
4195 } catch (handlerResult) {
4196 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4197 NextJob(status); return;
4198 }
4199 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4200 NextJob(status);
4201 }
4202
4203 // 25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4204
4205 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4206 // SPEC BUG: promise vs. promiseToResolve
4207 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4208 try {
4209 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4210 resolvingFunctions['[[Reject]]']);
4211 } catch (thenCallResult) {
4212 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4213 NextJob(status); return;
4214 }
4215 NextJob(thenCallResult);
4216 }
4217
4218 // 25.4.3 The Promise Constructor
4219
4220 // 25.4.3.1 Promise ( executor )
4221
4222 function Promise(executor) {
4223 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4224 Object.defineProperty(this, '[[PromiseState]]', config);
4225 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4226 Object.defineProperty(this, '[[PromiseResult]]', config);
4227 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4228 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4229
4230 var promise = this;
4231 if (Type(promise) !== 'object') throw new TypeError();
4232 if (!('[[PromiseState]]' in promise)) throw TypeError();
4233 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4234 if (!IsCallable(executor)) throw TypeError();
4235
4236 set_internal(promise, '[[PromiseConstructor]]', Promise);
4237
4238 return InitializePromise(promise, executor);
4239 }
4240
4241 // 25.4.3.1.1 InitializePromise ( promise, executor )
4242
4243 function InitializePromise(promise, executor) {
4244 console.assert('[[PromiseState]]' in promise);
4245 console.assert(IsCallable(executor));
4246 set_internal(promise, '[[PromiseState]]', 'pending');
4247 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4248 set_internal(promise, '[[PromiseRejectReactions]]', []);
4249 var resolvingFunctions = CreateResolvingFunctions(promise);
4250 try {
4251 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4252 resolvingFunctions['[[Reject]]']);
4253 } catch (completion) {
4254 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4255 }
4256 return promise;
4257 }
4258
4259 // 25.4.4 Properties of the Promise Constructor
4260 // 25.4.4.1 Promise.all ( iterable )
4261
4262 define(Promise, 'all', function all(iterable) {
4263 var c = strict(this);
4264 var promiseCapability = NewPromiseCapability(c);
4265 try {
4266 var iterator = GetIterator(iterable);
4267 } catch (value) {
4268 promiseCapability['[[Reject]]'].call(undefined, value);
4269 return promiseCapability['[[Promise]]'];
4270 }
4271 var values = [];
4272 var remainingElementsCount = { value: 1 };
4273 var index = 0;
4274 while (true) {
4275 try {
4276 var next = IteratorStep(iterator);
4277 } catch (value) {
4278 promiseCapability['[[Reject]]'].call(undefined, value);
4279 return promiseCapability['[[Promise]]'];
4280 }
4281 if (!next) {
4282 remainingElementsCount.value -= 1;
4283 if (remainingElementsCount.value === 0) {
4284 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4285
4286
4287 }
4288 return promiseCapability['[[Promise]]'];
4289 }
4290 try {
4291 var nextValue = IteratorValue(next);
4292 } catch (value) {
4293 promiseCapability['[[Reject]]'].call(undefined, value);
4294 return promiseCapability['[[Promise]]'];
4295 }
4296 try {
4297 var nextPromise = c.resolve(nextValue);
4298 } catch (value) {
4299 promiseCapability['[[Reject]]'].call(undefined, value);
4300 return promiseCapability['[[Promise]]'];
4301 }
4302 var resolveElement = PromiseAllResolveElementFunction();
4303 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4304 set_internal(resolveElement, '[[Index]]', index);
4305 set_internal(resolveElement, '[[Values]]', values);
4306 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4307 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4308 remainingElementsCount.value += 1;
4309 try {
4310 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4311 } catch (value) {
4312 promiseCapability['[[Reject]]'].call(undefined, value);
4313 return promiseCapability['[[Promise]]'];
4314 }
4315 index += 1;
4316 }
4317 });
4318
4319 // 25.4.4.1.1 Promise.all Resolve Element Functions
4320
4321 function PromiseAllResolveElementFunction() {
4322 var F = function(x) {
4323 var alreadyCalled = F['[[AlreadyCalled]]'];
4324 if (alreadyCalled.value) return undefined;
4325 alreadyCalled.value = true;
4326 var index = F['[[Index]]'];
4327 var values = F['[[Values]]'];
4328 var promiseCapability = F['[[Capabilities]]'];
4329 var remainingElementsCount = F['[[RemainingElements]]'];
4330 try {
4331 values[index] = x;
4332 } catch (result) {
4333 promiseCapability['[[Reject]]'].call(undefined, result);
4334 return promiseCapability['[[Promise]]'];
4335 }
4336 remainingElementsCount.value -= 1;
4337 if (remainingElementsCount.value === 0)
4338 return promiseCapability['[[Resolve]]'].call(undefined, values);
4339 return undefined;
4340 };
4341 return F;
4342 }
4343
4344 // 25.4.4.2 Promise.prototype
4345
4346 Promise.prototype = {};
4347
4348 // 25.4.4.3 Promise.race ( iterable )
4349
4350 define(Promise, 'race', function race(iterable) {
4351 var c = strict(this);
4352 var promiseCapability = NewPromiseCapability(c);
4353 try {
4354 var iterator = GetIterator(iterable);
4355 } catch (value) {
4356 promiseCapability['[[Reject]]'].call(undefined, value);
4357 return promiseCapability['[[Promise]]'];
4358 }
4359 while (true) {
4360 try {
4361 var next = IteratorStep(iterator);
4362 } catch (value) {
4363 promiseCapability['[[Reject]]'].call(undefined, value);
4364 return promiseCapability['[[Promise]]'];
4365 }
4366 if (!next) return promiseCapability['[[Promise]]'];
4367 try {
4368 var nextValue = IteratorValue(next);
4369 } catch (value) {
4370 promiseCapability['[[Reject]]'].call(undefined, value);
4371 return promiseCapability['[[Promise]]'];
4372 }
4373 try {
4374 var nextPromise = c.resolve(nextValue);
4375 } catch (value) {
4376 promiseCapability['[[Reject]]'].call(undefined, value);
4377 return promiseCapability['[[Promise]]'];
4378 }
4379 try {
4380 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4381 } catch (value) {
4382 promiseCapability['[[Reject]]'].call(undefined, value);
4383 return promiseCapability['[[Promise]]'];
4384 }
4385 }
4386 });
4387
4388 // 25.4.4.4 Promise.reject ( r )
4389
4390 define(Promise, 'reject', function reject(r) {
4391 var c = strict(this);
4392 var promiseCapability = NewPromiseCapability(c);
4393 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4394 return promiseCapability['[[Promise]]'];
4395 });
4396
4397 // 25.4.4.5 Promise.resolve ( x )
4398
4399 define(Promise, 'resolve', function resolve(x) {
4400 var c = strict(this);
4401 if (IsPromise(x)) {
4402 var constructor = x['[[PromiseConstructor]]'];
4403 if (SameValue(constructor, c)) return x;
4404 }
4405 var promiseCapability = NewPromiseCapability(c);
4406 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4407 return promiseCapability['[[Promise]]'];
4408 });
4409
4410 // 25.4.4.6 Promise [ @@create ] ( )
4411 // 25.4.4.6.1 AllocatePromise ( constructor )
4412 // 25.4.5 Properties of the Promise Prototype Object
4413 // 25.4.5.1 Promise.prototype.catch ( onRejected )
4414
4415 define(Promise.prototype, 'catch', function catch_(onRejected) {
4416 var promise = this;
4417 return promise.then(undefined, onRejected);
4418 });
4419
4420 // 25.4.5.2 Promise.prototype.constructor
4421
4422 Promise.prototype.constructor = Promise;
4423
4424 // 25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4425
4426 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4427 var promise = this;
4428 if (!IsPromise(promise)) throw TypeError();
4429 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4430 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4431 var c = promise.constructor;
4432 var promiseCapability = NewPromiseCapability(c);
4433 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4434 '[[Handler]]': onFulfilled };
4435 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4436 '[[Handler]]': onRejected };
4437 if (promise['[[PromiseState]]'] === 'pending') {
4438 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4439 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4440 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4441 var value = promise['[[PromiseResult]]'];
4442 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4443 } else if (promise['[[PromiseState]]'] === 'rejected') {
4444 var reason = promise['[[PromiseResult]]'];
4445 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4446 }
4447 return promiseCapability['[[Promise]]'];
4448 });
4449
4450 // 25.4.6 Properties of Promise Instances
4451
4452 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4453 global.Promise = Promise;
4454
4455 // Patch early Promise.cast vs. Promise.resolve implementations
4456 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4457 }());
4458
4459 // 25.4.5.1 Promise.prototype [ @@toStringTag ]
4460 define(Promise.prototype, $$toStringTag, 'Promise');
4461
4462 // ---------------------------------------
4463 // 26 Reflection
4464 // ---------------------------------------
4465
4466 (function() {
4467 // 26.1 The Reflect Object
4468 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4469 global.Reflect = {};
4470
4471 // 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4472 define(
4473 Reflect, 'apply',
4474 function apply(target, thisArgument, argumentsList) {
4475 if (!IsCallable(target)) throw TypeError();
4476 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4477 });
4478
4479 // 26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4480 define(
4481 Reflect, 'construct',
4482 function construct(target, argumentsList) {
4483 return __cons(target, argumentsList);
4484 });
4485
4486 // 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4487 define(
4488 Reflect, 'defineProperty',
4489 function defineProperty(target, propertyKey, attributes) {
4490 try {
4491 Object.defineProperty(target, propertyKey, attributes);
4492 return true;
4493 } catch (_) {
4494 return false;
4495 }
4496 });
4497
4498 // 26.1.4 Reflect.deleteProperty ( target, propertyKey )
4499 define(
4500 Reflect, 'deleteProperty',
4501 function deleteProperty(target,name) {
4502 try {
4503 delete target[name];
4504 return !HasOwnProperty(target, name);
4505 } catch (_) {
4506 return false;
4507 }
4508 });
4509
4510 // 26.1.5 Reflect.enumerate ( target )
4511 define(
4512 Reflect, 'enumerate',
4513 function enumerate(target) {
4514 target = ToObject(target);
4515 var iterator = Enumerate(target);
4516 return iterator;
4517 });
4518
4519 // 26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4520 define(
4521 Reflect, 'get',
4522 function get(target, name, receiver) {
4523 target = ToObject(target);
4524 name = String(name);
4525 receiver = (receiver === undefined) ? target : ToObject(receiver);
4526 var desc = getPropertyDescriptor(target, name);
4527 if (desc && 'get' in desc)
4528 return Function.prototype.call.call(desc['get'], receiver);
4529 return target[name];
4530 });
4531
4532 // 26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4533 define(
4534 Reflect, 'getOwnPropertyDescriptor',
4535 Object.getOwnPropertyDescriptor);
4536
4537 // 26.1.8 Reflect.getPrototypeOf ( target )
4538 define(
4539 Reflect, 'getPrototypeOf',
4540 Object.getPrototypeOf);
4541
4542 // 26.1.9 Reflect.has ( target, propertyKey )
4543 define(
4544 Reflect, 'has',
4545 function has(target,name) {
4546 return String(name) in ToObject(target);
4547 });
4548
4549 // 26.1.10 Reflect.isExtensible (target)
4550 define(
4551 Reflect, 'isExtensible',
4552 Object.isExtensible);
4553
4554 // 26.1.11 Reflect.ownKeys ( target )
4555 define(
4556 Reflect, 'ownKeys',
4557 function ownKeys(target) {
4558 var obj = ToObject(target);
4559 return Object.getOwnPropertyNames(obj);
4560 });
4561
4562 // 26.1.12 Reflect.preventExtensions ( target )
4563 define(
4564 Reflect, 'preventExtensions',
4565 function preventExtensions(target) {
4566 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4567 });
4568
4569 // 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4570 define(
4571 Reflect, 'set',
4572 function set(target, name, value, receiver) {
4573 target = ToObject(target);
4574 name = String(name);
4575 receiver = (receiver === undefined) ? target : ToObject(receiver);
4576 var desc = getPropertyDescriptor(target, name);
4577 try {
4578 if (desc && 'set' in desc)
4579 Function.prototype.call.call(desc['set'], receiver, value);
4580 else
4581 target[name] = value;
4582 return true;
4583 } catch (_) {
4584 return false;
4585 }
4586 });
4587
4588 // 26.1.14 Reflect.setPrototypeOf ( target, proto )
4589 define(
4590 Reflect, 'setPrototypeOf',
4591 function setPrototypeOf(target, proto) {
4592 try {
4593 target.__proto__ = proto;
4594 return Reflect.getPrototypeOf(target) === proto;
4595 } catch(_) {
4596 return false;
4597 }
4598 });
4599
4600 }());
4601
4602 // ---------------------------------------
4603 // 26.2 Proxy Objects
4604 // ---------------------------------------
4605
4606 // Not polyfillable.
4607
4608 }(self));
4609
4610 // This helper is defined outside the main scope so that the use of
4611 // 'eval' does not taint the scope for minifiers.
4612 function __cons(t, a) {
4613 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4614 }
4615 </script>
4616 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.foo = f()}})(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);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.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(require,module,exports){
4617 'use strict'
4618
4619 exports.byteLength = byteLength
4620 exports.toByteArray = toByteArray
4621 exports.fromByteArray = fromByteArray
4622
4623 var lookup = []
4624 var revLookup = []
4625 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4626
4627 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4628 for (var i = 0, len = code.length; i < len; ++i) {
4629 lookup[i] = code[i]
4630 revLookup[code.charCodeAt(i)] = i
4631 }
4632
4633 revLookup['-'.charCodeAt(0)] = 62
4634 revLookup['_'.charCodeAt(0)] = 63
4635
4636 function placeHoldersCount (b64) {
4637 var len = b64.length
4638 if (len % 4 > 0) {
4639 throw new Error('Invalid string. Length must be a multiple of 4')
4640 }
4641
4642 // the number of equal signs (place holders)
4643 // if there are two placeholders, than the two characters before it
4644 // represent one byte
4645 // if there is only one, then the three characters before it represent 2 bytes
4646 // this is just a cheap hack to not do indexOf twice
4647 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
4648 }
4649
4650 function byteLength (b64) {
4651 // base64 is 4/3 + up to two characters of the original data
4652 return b64.length * 3 / 4 - placeHoldersCount(b64)
4653 }
4654
4655 function toByteArray (b64) {
4656 var i, j, l, tmp, placeHolders, arr
4657 var len = b64.length
4658 placeHolders = placeHoldersCount(b64)
4659
4660 arr = new Arr(len * 3 / 4 - placeHolders)
4661
4662 // if there are placeholders, only get up to the last complete 4 chars
4663 l = placeHolders > 0 ? len - 4 : len
4664
4665 var L = 0
4666
4667 for (i = 0, j = 0; i < l; i += 4, j += 3) {
4668 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
4669 arr[L++] = (tmp >> 16) & 0xFF
4670 arr[L++] = (tmp >> 8) & 0xFF
4671 arr[L++] = tmp & 0xFF
4672 }
4673
4674 if (placeHolders === 2) {
4675 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
4676 arr[L++] = tmp & 0xFF
4677 } else if (placeHolders === 1) {
4678 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
4679 arr[L++] = (tmp >> 8) & 0xFF
4680 arr[L++] = tmp & 0xFF
4681 }
4682
4683 return arr
4684 }
4685
4686 function tripletToBase64 (num) {
4687 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
4688 }
4689
4690 function encodeChunk (uint8, start, end) {
4691 var tmp
4692 var output = []
4693 for (var i = start; i < end; i += 3) {
4694 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
4695 output.push(tripletToBase64(tmp))
4696 }
4697 return output.join('')
4698 }
4699
4700 function fromByteArray (uint8) {
4701 var tmp
4702 var len = uint8.length
4703 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
4704 var output = ''
4705 var parts = []
4706 var maxChunkLength = 16383 // must be multiple of 3
4707
4708 // go through the array every three bytes, we'll deal with trailing stuff later
4709 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
4710 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
4711 }
4712
4713 // pad the end with zeros, but make sure to not forget the extra bytes
4714 if (extraBytes === 1) {
4715 tmp = uint8[len - 1]
4716 output += lookup[tmp >> 2]
4717 output += lookup[(tmp << 4) & 0x3F]
4718 output += '=='
4719 } else if (extraBytes === 2) {
4720 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
4721 output += lookup[tmp >> 10]
4722 output += lookup[(tmp >> 4) & 0x3F]
4723 output += lookup[(tmp << 2) & 0x3F]
4724 output += '='
4725 }
4726
4727 parts.push(output)
4728
4729 return parts.join('')
4730 }
4731
4732 },{}],2:[function(require,module,exports){
4733 /*!
4734 * The buffer module from node.js, for the browser.
4735 *
4736 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
4737 * @license MIT
4738 */
4739 /* eslint-disable no-proto */
4740
4741 'use strict'
4742
4743 var base64 = require('base64-js')
4744 var ieee754 = require('ieee754')
4745
4746 exports.Buffer = Buffer
4747 exports.SlowBuffer = SlowBuffer
4748 exports.INSPECT_MAX_BYTES = 50
4749
4750 var K_MAX_LENGTH = 0x7fffffff
4751 exports.kMaxLength = K_MAX_LENGTH
4752
4753 /**
4754 * If `Buffer.TYPED_ARRAY_SUPPORT`:
4755 * === true Use Uint8Array implementation (fastest)
4756 * === false Print warning and recommend using `buffer` v4.x which has an Object
4757 * implementation (most compatible, even IE6)
4758 *
4759 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
4760 * Opera 11.6+, iOS 4.2+.
4761 *
4762 * We report that the browser does not support typed arrays if the are not subclassable
4763 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
4764 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
4765 * for __proto__ and has a buggy typed array implementation.
4766 */
4767 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
4768
4769 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
4770 typeof console.error === 'function') {
4771 console.error(
4772 'This browser lacks typed array (Uint8Array) support which is required by ' +
4773 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
4774 )
4775 }
4776
4777 function typedArraySupport () {
4778 // Can typed array instances can be augmented?
4779 try {
4780 var arr = new Uint8Array(1)
4781 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
4782 return arr.foo() === 42
4783 } catch (e) {
4784 return false
4785 }
4786 }
4787
4788 function createBuffer (length) {
4789 if (length > K_MAX_LENGTH) {
4790 throw new RangeError('Invalid typed array length')
4791 }
4792 // Return an augmented `Uint8Array` instance
4793 var buf = new Uint8Array(length)
4794 buf.__proto__ = Buffer.prototype
4795 return buf
4796 }
4797
4798 /**
4799 * The Buffer constructor returns instances of `Uint8Array` that have their
4800 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
4801 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
4802 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
4803 * returns a single octet.
4804 *
4805 * The `Uint8Array` prototype remains unmodified.
4806 */
4807
4808 function Buffer (arg, encodingOrOffset, length) {
4809 // Common case.
4810 if (typeof arg === 'number') {
4811 if (typeof encodingOrOffset === 'string') {
4812 throw new Error(
4813 'If encoding is specified then the first argument must be a string'
4814 )
4815 }
4816 return allocUnsafe(arg)
4817 }
4818 return from(arg, encodingOrOffset, length)
4819 }
4820
4821 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
4822 if (typeof Symbol !== 'undefined' && Symbol.species &&
4823 Buffer[Symbol.species] === Buffer) {
4824 Object.defineProperty(Buffer, Symbol.species, {
4825 value: null,
4826 configurable: true,
4827 enumerable: false,
4828 writable: false
4829 })
4830 }
4831
4832 Buffer.poolSize = 8192 // not used by this implementation
4833
4834 function from (value, encodingOrOffset, length) {
4835 if (typeof value === 'number') {
4836 throw new TypeError('"value" argument must not be a number')
4837 }
4838
4839 if (value instanceof ArrayBuffer) {
4840 return fromArrayBuffer(value, encodingOrOffset, length)
4841 }
4842
4843 if (typeof value === 'string') {
4844 return fromString(value, encodingOrOffset)
4845 }
4846
4847 return fromObject(value)
4848 }
4849
4850 /**
4851 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
4852 * if value is a number.
4853 * Buffer.from(str[, encoding])
4854 * Buffer.from(array)
4855 * Buffer.from(buffer)
4856 * Buffer.from(arrayBuffer[, byteOffset[, length]])
4857 **/
4858 Buffer.from = function (value, encodingOrOffset, length) {
4859 return from(value, encodingOrOffset, length)
4860 }
4861
4862 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
4863 // https://github.com/feross/buffer/pull/148
4864 Buffer.prototype.__proto__ = Uint8Array.prototype
4865 Buffer.__proto__ = Uint8Array
4866
4867 function assertSize (size) {
4868 if (typeof size !== 'number') {
4869 throw new TypeError('"size" argument must be a number')
4870 } else if (size < 0) {
4871 throw new RangeError('"size" argument must not be negative')
4872 }
4873 }
4874
4875 function alloc (size, fill, encoding) {
4876 assertSize(size)
4877 if (size <= 0) {
4878 return createBuffer(size)
4879 }
4880 if (fill !== undefined) {
4881 // Only pay attention to encoding if it's a string. This
4882 // prevents accidentally sending in a number that would
4883 // be interpretted as a start offset.
4884 return typeof encoding === 'string'
4885 ? createBuffer(size).fill(fill, encoding)
4886 : createBuffer(size).fill(fill)
4887 }
4888 return createBuffer(size)
4889 }
4890
4891 /**
4892 * Creates a new filled Buffer instance.
4893 * alloc(size[, fill[, encoding]])
4894 **/
4895 Buffer.alloc = function (size, fill, encoding) {
4896 return alloc(size, fill, encoding)
4897 }
4898
4899 function allocUnsafe (size) {
4900 assertSize(size)
4901 return createBuffer(size < 0 ? 0 : checked(size) | 0)
4902 }
4903
4904 /**
4905 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
4906 * */
4907 Buffer.allocUnsafe = function (size) {
4908 return allocUnsafe(size)
4909 }
4910 /**
4911 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
4912 */
4913 Buffer.allocUnsafeSlow = function (size) {
4914 return allocUnsafe(size)
4915 }
4916
4917 function fromString (string, encoding) {
4918 if (typeof encoding !== 'string' || encoding === '') {
4919 encoding = 'utf8'
4920 }
4921
4922 if (!Buffer.isEncoding(encoding)) {
4923 throw new TypeError('"encoding" must be a valid string encoding')
4924 }
4925
4926 var length = byteLength(string, encoding) | 0
4927 var buf = createBuffer(length)
4928
4929 var actual = buf.write(string, encoding)
4930
4931 if (actual !== length) {
4932 // Writing a hex string, for example, that contains invalid characters will
4933 // cause everything after the first invalid character to be ignored. (e.g.
4934 // 'abxxcd' will be treated as 'ab')
4935 buf = buf.slice(0, actual)
4936 }
4937
4938 return buf
4939 }
4940
4941 function fromArrayLike (array) {
4942 var length = array.length < 0 ? 0 : checked(array.length) | 0
4943 var buf = createBuffer(length)
4944 for (var i = 0; i < length; i += 1) {
4945 buf[i] = array[i] & 255
4946 }
4947 return buf
4948 }
4949
4950 function fromArrayBuffer (array, byteOffset, length) {
4951 if (byteOffset < 0 || array.byteLength < byteOffset) {
4952 throw new RangeError('\'offset\' is out of bounds')
4953 }
4954
4955 if (array.byteLength < byteOffset + (length || 0)) {
4956 throw new RangeError('\'length\' is out of bounds')
4957 }
4958
4959 var buf
4960 if (byteOffset === undefined && length === undefined) {
4961 buf = new Uint8Array(array)
4962 } else if (length === undefined) {
4963 buf = new Uint8Array(array, byteOffset)
4964 } else {
4965 buf = new Uint8Array(array, byteOffset, length)
4966 }
4967
4968 // Return an augmented `Uint8Array` instance
4969 buf.__proto__ = Buffer.prototype
4970 return buf
4971 }
4972
4973 function fromObject (obj) {
4974 if (Buffer.isBuffer(obj)) {
4975 var len = checked(obj.length) | 0
4976 var buf = createBuffer(len)
4977
4978 if (buf.length === 0) {
4979 return buf
4980 }
4981
4982 obj.copy(buf, 0, 0, len)
4983 return buf
4984 }
4985
4986 if (obj) {
4987 if (isArrayBufferView(obj) || 'length' in obj) {
4988 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
4989 return createBuffer(0)
4990 }
4991 return fromArrayLike(obj)
4992 }
4993
4994 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
4995 return fromArrayLike(obj.data)
4996 }
4997 }
4998
4999 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
5000 }
5001
5002 function checked (length) {
5003 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
5004 // length is NaN (which is otherwise coerced to zero.)
5005 if (length >= K_MAX_LENGTH) {
5006 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
5007 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
5008 }
5009 return length | 0
5010 }
5011
5012 function SlowBuffer (length) {
5013 if (+length != length) { // eslint-disable-line eqeqeq
5014 length = 0
5015 }
5016 return Buffer.alloc(+length)
5017 }
5018
5019 Buffer.isBuffer = function isBuffer (b) {
5020 return b != null && b._isBuffer === true
5021 }
5022
5023 Buffer.compare = function compare (a, b) {
5024 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
5025 throw new TypeError('Arguments must be Buffers')
5026 }
5027
5028 if (a === b) return 0
5029
5030 var x = a.length
5031 var y = b.length
5032
5033 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
5034 if (a[i] !== b[i]) {
5035 x = a[i]
5036 y = b[i]
5037 break
5038 }
5039 }
5040
5041 if (x < y) return -1
5042 if (y < x) return 1
5043 return 0
5044 }
5045
5046 Buffer.isEncoding = function isEncoding (encoding) {
5047 switch (String(encoding).toLowerCase()) {
5048 case 'hex':
5049 case 'utf8':
5050 case 'utf-8':
5051 case 'ascii':
5052 case 'latin1':
5053 case 'binary':
5054 case 'base64':
5055 case 'ucs2':
5056 case 'ucs-2':
5057 case 'utf16le':
5058 case 'utf-16le':
5059 return true
5060 default:
5061 return false
5062 }
5063 }
5064
5065 Buffer.concat = function concat (list, length) {
5066 if (!Array.isArray(list)) {
5067 throw new TypeError('"list" argument must be an Array of Buffers')
5068 }
5069
5070 if (list.length === 0) {
5071 return Buffer.alloc(0)
5072 }
5073
5074 var i
5075 if (length === undefined) {
5076 length = 0
5077 for (i = 0; i < list.length; ++i) {
5078 length += list[i].length
5079 }
5080 }
5081
5082 var buffer = Buffer.allocUnsafe(length)
5083 var pos = 0
5084 for (i = 0; i < list.length; ++i) {
5085 var buf = list[i]
5086 if (!Buffer.isBuffer(buf)) {
5087 throw new TypeError('"list" argument must be an Array of Buffers')
5088 }
5089 buf.copy(buffer, pos)
5090 pos += buf.length
5091 }
5092 return buffer
5093 }
5094
5095 function byteLength (string, encoding) {
5096 if (Buffer.isBuffer(string)) {
5097 return string.length
5098 }
5099 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
5100 return string.byteLength
5101 }
5102 if (typeof string !== 'string') {
5103 string = '' + string
5104 }
5105
5106 var len = string.length
5107 if (len === 0) return 0
5108
5109 // Use a for loop to avoid recursion
5110 var loweredCase = false
5111 for (;;) {
5112 switch (encoding) {
5113 case 'ascii':
5114 case 'latin1':
5115 case 'binary':
5116 return len
5117 case 'utf8':
5118 case 'utf-8':
5119 case undefined:
5120 return utf8ToBytes(string).length
5121 case 'ucs2':
5122 case 'ucs-2':
5123 case 'utf16le':
5124 case 'utf-16le':
5125 return len * 2
5126 case 'hex':
5127 return len >>> 1
5128 case 'base64':
5129 return base64ToBytes(string).length
5130 default:
5131 if (loweredCase) return utf8ToBytes(string).length // assume utf8
5132 encoding = ('' + encoding).toLowerCase()
5133 loweredCase = true
5134 }
5135 }
5136 }
5137 Buffer.byteLength = byteLength
5138
5139 function slowToString (encoding, start, end) {
5140 var loweredCase = false
5141
5142 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
5143 // property of a typed array.
5144
5145 // This behaves neither like String nor Uint8Array in that we set start/end
5146 // to their upper/lower bounds if the value passed is out of range.
5147 // undefined is handled specially as per ECMA-262 6th Edition,
5148 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
5149 if (start === undefined || start < 0) {
5150 start = 0
5151 }
5152 // Return early if start > this.length. Done here to prevent potential uint32
5153 // coercion fail below.
5154 if (start > this.length) {
5155 return ''
5156 }
5157
5158 if (end === undefined || end > this.length) {
5159 end = this.length
5160 }
5161
5162 if (end <= 0) {
5163 return ''
5164 }
5165
5166 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
5167 end >>>= 0
5168 start >>>= 0
5169
5170 if (end <= start) {
5171 return ''
5172 }
5173
5174 if (!encoding) encoding = 'utf8'
5175
5176 while (true) {
5177 switch (encoding) {
5178 case 'hex':
5179 return hexSlice(this, start, end)
5180
5181 case 'utf8':
5182 case 'utf-8':
5183 return utf8Slice(this, start, end)
5184
5185 case 'ascii':
5186 return asciiSlice(this, start, end)
5187
5188 case 'latin1':
5189 case 'binary':
5190 return latin1Slice(this, start, end)
5191
5192 case 'base64':
5193 return base64Slice(this, start, end)
5194
5195 case 'ucs2':
5196 case 'ucs-2':
5197 case 'utf16le':
5198 case 'utf-16le':
5199 return utf16leSlice(this, start, end)
5200
5201 default:
5202 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5203 encoding = (encoding + '').toLowerCase()
5204 loweredCase = true
5205 }
5206 }
5207 }
5208
5209 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
5210 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
5211 // reliably in a browserify context because there could be multiple different
5212 // copies of the 'buffer' package in use. This method works even for Buffer
5213 // instances that were created from another copy of the `buffer` package.
5214 // See: https://github.com/feross/buffer/issues/154
5215 Buffer.prototype._isBuffer = true
5216
5217 function swap (b, n, m) {
5218 var i = b[n]
5219 b[n] = b[m]
5220 b[m] = i
5221 }
5222
5223 Buffer.prototype.swap16 = function swap16 () {
5224 var len = this.length
5225 if (len % 2 !== 0) {
5226 throw new RangeError('Buffer size must be a multiple of 16-bits')
5227 }
5228 for (var i = 0; i < len; i += 2) {
5229 swap(this, i, i + 1)
5230 }
5231 return this
5232 }
5233
5234 Buffer.prototype.swap32 = function swap32 () {
5235 var len = this.length
5236 if (len % 4 !== 0) {
5237 throw new RangeError('Buffer size must be a multiple of 32-bits')
5238 }
5239 for (var i = 0; i < len; i += 4) {
5240 swap(this, i, i + 3)
5241 swap(this, i + 1, i + 2)
5242 }
5243 return this
5244 }
5245
5246 Buffer.prototype.swap64 = function swap64 () {
5247 var len = this.length
5248 if (len % 8 !== 0) {
5249 throw new RangeError('Buffer size must be a multiple of 64-bits')
5250 }
5251 for (var i = 0; i < len; i += 8) {
5252 swap(this, i, i + 7)
5253 swap(this, i + 1, i + 6)
5254 swap(this, i + 2, i + 5)
5255 swap(this, i + 3, i + 4)
5256 }
5257 return this
5258 }
5259
5260 Buffer.prototype.toString = function toString () {
5261 var length = this.length
5262 if (length === 0) return ''
5263 if (arguments.length === 0) return utf8Slice(this, 0, length)
5264 return slowToString.apply(this, arguments)
5265 }
5266
5267 Buffer.prototype.equals = function equals (b) {
5268 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
5269 if (this === b) return true
5270 return Buffer.compare(this, b) === 0
5271 }
5272
5273 Buffer.prototype.inspect = function inspect () {
5274 var str = ''
5275 var max = exports.INSPECT_MAX_BYTES
5276 if (this.length > 0) {
5277 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
5278 if (this.length > max) str += ' ... '
5279 }
5280 return '<Buffer ' + str + '>'
5281 }
5282
5283 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
5284 if (!Buffer.isBuffer(target)) {
5285 throw new TypeError('Argument must be a Buffer')
5286 }
5287
5288 if (start === undefined) {
5289 start = 0
5290 }
5291 if (end === undefined) {
5292 end = target ? target.length : 0
5293 }
5294 if (thisStart === undefined) {
5295 thisStart = 0
5296 }
5297 if (thisEnd === undefined) {
5298 thisEnd = this.length
5299 }
5300
5301 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
5302 throw new RangeError('out of range index')
5303 }
5304
5305 if (thisStart >= thisEnd && start >= end) {
5306 return 0
5307 }
5308 if (thisStart >= thisEnd) {
5309 return -1
5310 }
5311 if (start >= end) {
5312 return 1
5313 }
5314
5315 start >>>= 0
5316 end >>>= 0
5317 thisStart >>>= 0
5318 thisEnd >>>= 0
5319
5320 if (this === target) return 0
5321
5322 var x = thisEnd - thisStart
5323 var y = end - start
5324 var len = Math.min(x, y)
5325
5326 var thisCopy = this.slice(thisStart, thisEnd)
5327 var targetCopy = target.slice(start, end)
5328
5329 for (var i = 0; i < len; ++i) {
5330 if (thisCopy[i] !== targetCopy[i]) {
5331 x = thisCopy[i]
5332 y = targetCopy[i]
5333 break
5334 }
5335 }
5336
5337 if (x < y) return -1
5338 if (y < x) return 1
5339 return 0
5340 }
5341
5342 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
5343 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
5344 //
5345 // Arguments:
5346 // - buffer - a Buffer to search
5347 // - val - a string, Buffer, or number
5348 // - byteOffset - an index into `buffer`; will be clamped to an int32
5349 // - encoding - an optional encoding, relevant is val is a string
5350 // - dir - true for indexOf, false for lastIndexOf
5351 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
5352 // Empty buffer means no match
5353 if (buffer.length === 0) return -1
5354
5355 // Normalize byteOffset
5356 if (typeof byteOffset === 'string') {
5357 encoding = byteOffset
5358 byteOffset = 0
5359 } else if (byteOffset > 0x7fffffff) {
5360 byteOffset = 0x7fffffff
5361 } else if (byteOffset < -0x80000000) {
5362 byteOffset = -0x80000000
5363 }
5364 byteOffset = +byteOffset // Coerce to Number.
5365 if (numberIsNaN(byteOffset)) {
5366 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
5367 byteOffset = dir ? 0 : (buffer.length - 1)
5368 }
5369
5370 // Normalize byteOffset: negative offsets start from the end of the buffer
5371 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
5372 if (byteOffset >= buffer.length) {
5373 if (dir) return -1
5374 else byteOffset = buffer.length - 1
5375 } else if (byteOffset < 0) {
5376 if (dir) byteOffset = 0
5377 else return -1
5378 }
5379
5380 // Normalize val
5381 if (typeof val === 'string') {
5382 val = Buffer.from(val, encoding)
5383 }
5384
5385 // Finally, search either indexOf (if dir is true) or lastIndexOf
5386 if (Buffer.isBuffer(val)) {
5387 // Special case: looking for empty string/buffer always fails
5388 if (val.length === 0) {
5389 return -1
5390 }
5391 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
5392 } else if (typeof val === 'number') {
5393 val = val & 0xFF // Search for a byte value [0-255]
5394 if (typeof Uint8Array.prototype.indexOf === 'function') {
5395 if (dir) {
5396 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
5397 } else {
5398 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
5399 }
5400 }
5401 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
5402 }
5403
5404 throw new TypeError('val must be string, number or Buffer')
5405 }
5406
5407 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
5408 var indexSize = 1
5409 var arrLength = arr.length
5410 var valLength = val.length
5411
5412 if (encoding !== undefined) {
5413 encoding = String(encoding).toLowerCase()
5414 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
5415 encoding === 'utf16le' || encoding === 'utf-16le') {
5416 if (arr.length < 2 || val.length < 2) {
5417 return -1
5418 }
5419 indexSize = 2
5420 arrLength /= 2
5421 valLength /= 2
5422 byteOffset /= 2
5423 }
5424 }
5425
5426 function read (buf, i) {
5427 if (indexSize === 1) {
5428 return buf[i]
5429 } else {
5430 return buf.readUInt16BE(i * indexSize)
5431 }
5432 }
5433
5434 var i
5435 if (dir) {
5436 var foundIndex = -1
5437 for (i = byteOffset; i < arrLength; i++) {
5438 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
5439 if (foundIndex === -1) foundIndex = i
5440 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
5441 } else {
5442 if (foundIndex !== -1) i -= i - foundIndex
5443 foundIndex = -1
5444 }
5445 }
5446 } else {
5447 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
5448 for (i = byteOffset; i >= 0; i--) {
5449 var found = true
5450 for (var j = 0; j < valLength; j++) {
5451 if (read(arr, i + j) !== read(val, j)) {
5452 found = false
5453 break
5454 }
5455 }
5456 if (found) return i
5457 }
5458 }
5459
5460 return -1
5461 }
5462
5463 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
5464 return this.indexOf(val, byteOffset, encoding) !== -1
5465 }
5466
5467 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
5468 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
5469 }
5470
5471 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
5472 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
5473 }
5474
5475 function hexWrite (buf, string, offset, length) {
5476 offset = Number(offset) || 0
5477 var remaining = buf.length - offset
5478 if (!length) {
5479 length = remaining
5480 } else {
5481 length = Number(length)
5482 if (length > remaining) {
5483 length = remaining
5484 }
5485 }
5486
5487 // must be an even number of digits
5488 var strLen = string.length
5489 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
5490
5491 if (length > strLen / 2) {
5492 length = strLen / 2
5493 }
5494 for (var i = 0; i < length; ++i) {
5495 var parsed = parseInt(string.substr(i * 2, 2), 16)
5496 if (numberIsNaN(parsed)) return i
5497 buf[offset + i] = parsed
5498 }
5499 return i
5500 }
5501
5502 function utf8Write (buf, string, offset, length) {
5503 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
5504 }
5505
5506 function asciiWrite (buf, string, offset, length) {
5507 return blitBuffer(asciiToBytes(string), buf, offset, length)
5508 }
5509
5510 function latin1Write (buf, string, offset, length) {
5511 return asciiWrite(buf, string, offset, length)
5512 }
5513
5514 function base64Write (buf, string, offset, length) {
5515 return blitBuffer(base64ToBytes(string), buf, offset, length)
5516 }
5517
5518 function ucs2Write (buf, string, offset, length) {
5519 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
5520 }
5521
5522 Buffer.prototype.write = function write (string, offset, length, encoding) {
5523 // Buffer#write(string)
5524 if (offset === undefined) {
5525 encoding = 'utf8'
5526 length = this.length
5527 offset = 0
5528 // Buffer#write(string, encoding)
5529 } else if (length === undefined && typeof offset === 'string') {
5530 encoding = offset
5531 length = this.length
5532 offset = 0
5533 // Buffer#write(string, offset[, length][, encoding])
5534 } else if (isFinite(offset)) {
5535 offset = offset >>> 0
5536 if (isFinite(length)) {
5537 length = length >>> 0
5538 if (encoding === undefined) encoding = 'utf8'
5539 } else {
5540 encoding = length
5541 length = undefined
5542 }
5543 } else {
5544 throw new Error(
5545 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
5546 )
5547 }
5548
5549 var remaining = this.length - offset
5550 if (length === undefined || length > remaining) length = remaining
5551
5552 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
5553 throw new RangeError('Attempt to write outside buffer bounds')
5554 }
5555
5556 if (!encoding) encoding = 'utf8'
5557
5558 var loweredCase = false
5559 for (;;) {
5560 switch (encoding) {
5561 case 'hex':
5562 return hexWrite(this, string, offset, length)
5563
5564 case 'utf8':
5565 case 'utf-8':
5566 return utf8Write(this, string, offset, length)
5567
5568 case 'ascii':
5569 return asciiWrite(this, string, offset, length)
5570
5571 case 'latin1':
5572 case 'binary':
5573 return latin1Write(this, string, offset, length)
5574
5575 case 'base64':
5576 // Warning: maxLength not taken into account in base64Write
5577 return base64Write(this, string, offset, length)
5578
5579 case 'ucs2':
5580 case 'ucs-2':
5581 case 'utf16le':
5582 case 'utf-16le':
5583 return ucs2Write(this, string, offset, length)
5584
5585 default:
5586 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5587 encoding = ('' + encoding).toLowerCase()
5588 loweredCase = true
5589 }
5590 }
5591 }
5592
5593 Buffer.prototype.toJSON = function toJSON () {
5594 return {
5595 type: 'Buffer',
5596 data: Array.prototype.slice.call(this._arr || this, 0)
5597 }
5598 }
5599
5600 function base64Slice (buf, start, end) {
5601 if (start === 0 && end === buf.length) {
5602 return base64.fromByteArray(buf)
5603 } else {
5604 return base64.fromByteArray(buf.slice(start, end))
5605 }
5606 }
5607
5608 function utf8Slice (buf, start, end) {
5609 end = Math.min(buf.length, end)
5610 var res = []
5611
5612 var i = start
5613 while (i < end) {
5614 var firstByte = buf[i]
5615 var codePoint = null
5616 var bytesPerSequence = (firstByte > 0xEF) ? 4
5617 : (firstByte > 0xDF) ? 3
5618 : (firstByte > 0xBF) ? 2
5619 : 1
5620
5621 if (i + bytesPerSequence <= end) {
5622 var secondByte, thirdByte, fourthByte, tempCodePoint
5623
5624 switch (bytesPerSequence) {
5625 case 1:
5626 if (firstByte < 0x80) {
5627 codePoint = firstByte
5628 }
5629 break
5630 case 2:
5631 secondByte = buf[i + 1]
5632 if ((secondByte & 0xC0) === 0x80) {
5633 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
5634 if (tempCodePoint > 0x7F) {
5635 codePoint = tempCodePoint
5636 }
5637 }
5638 break
5639 case 3:
5640 secondByte = buf[i + 1]
5641 thirdByte = buf[i + 2]
5642 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
5643 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
5644 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
5645 codePoint = tempCodePoint
5646 }
5647 }
5648 break
5649 case 4:
5650 secondByte = buf[i + 1]
5651 thirdByte = buf[i + 2]
5652 fourthByte = buf[i + 3]
5653 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
5654 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
5655 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
5656 codePoint = tempCodePoint
5657 }
5658 }
5659 }
5660 }
5661
5662 if (codePoint === null) {
5663 // we did not generate a valid codePoint so insert a
5664 // replacement char (U+FFFD) and advance only 1 byte
5665 codePoint = 0xFFFD
5666 bytesPerSequence = 1
5667 } else if (codePoint > 0xFFFF) {
5668 // encode to utf16 (surrogate pair dance)
5669 codePoint -= 0x10000
5670 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
5671 codePoint = 0xDC00 | codePoint & 0x3FF
5672 }
5673
5674 res.push(codePoint)
5675 i += bytesPerSequence
5676 }
5677
5678 return decodeCodePointsArray(res)
5679 }
5680
5681 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
5682 // the lowest limit is Chrome, with 0x10000 args.
5683 // We go 1 magnitude less, for safety
5684 var MAX_ARGUMENTS_LENGTH = 0x1000
5685
5686 function decodeCodePointsArray (codePoints) {
5687 var len = codePoints.length
5688 if (len <= MAX_ARGUMENTS_LENGTH) {
5689 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
5690 }
5691
5692 // Decode in chunks to avoid "call stack size exceeded".
5693 var res = ''
5694 var i = 0
5695 while (i < len) {
5696 res += String.fromCharCode.apply(
5697 String,
5698 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
5699 )
5700 }
5701 return res
5702 }
5703
5704 function asciiSlice (buf, start, end) {
5705 var ret = ''
5706 end = Math.min(buf.length, end)
5707
5708 for (var i = start; i < end; ++i) {
5709 ret += String.fromCharCode(buf[i] & 0x7F)
5710 }
5711 return ret
5712 }
5713
5714 function latin1Slice (buf, start, end) {
5715 var ret = ''
5716 end = Math.min(buf.length, end)
5717
5718 for (var i = start; i < end; ++i) {
5719 ret += String.fromCharCode(buf[i])
5720 }
5721 return ret
5722 }
5723
5724 function hexSlice (buf, start, end) {
5725 var len = buf.length
5726
5727 if (!start || start < 0) start = 0
5728 if (!end || end < 0 || end > len) end = len
5729
5730 var out = ''
5731 for (var i = start; i < end; ++i) {
5732 out += toHex(buf[i])
5733 }
5734 return out
5735 }
5736
5737 function utf16leSlice (buf, start, end) {
5738 var bytes = buf.slice(start, end)
5739 var res = ''
5740 for (var i = 0; i < bytes.length; i += 2) {
5741 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
5742 }
5743 return res
5744 }
5745
5746 Buffer.prototype.slice = function slice (start, end) {
5747 var len = this.length
5748 start = ~~start
5749 end = end === undefined ? len : ~~end
5750
5751 if (start < 0) {
5752 start += len
5753 if (start < 0) start = 0
5754 } else if (start > len) {
5755 start = len
5756 }
5757
5758 if (end < 0) {
5759 end += len
5760 if (end < 0) end = 0
5761 } else if (end > len) {
5762 end = len
5763 }
5764
5765 if (end < start) end = start
5766
5767 var newBuf = this.subarray(start, end)
5768 // Return an augmented `Uint8Array` instance
5769 newBuf.__proto__ = Buffer.prototype
5770 return newBuf
5771 }
5772
5773 /*
5774 * Need to make sure that buffer isn't trying to write out of bounds.
5775 */
5776 function checkOffset (offset, ext, length) {
5777 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
5778 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
5779 }
5780
5781 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
5782 offset = offset >>> 0
5783 byteLength = byteLength >>> 0
5784 if (!noAssert) checkOffset(offset, byteLength, this.length)
5785
5786 var val = this[offset]
5787 var mul = 1
5788 var i = 0
5789 while (++i < byteLength && (mul *= 0x100)) {
5790 val += this[offset + i] * mul
5791 }
5792
5793 return val
5794 }
5795
5796 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
5797 offset = offset >>> 0
5798 byteLength = byteLength >>> 0
5799 if (!noAssert) {
5800 checkOffset(offset, byteLength, this.length)
5801 }
5802
5803 var val = this[offset + --byteLength]
5804 var mul = 1
5805 while (byteLength > 0 && (mul *= 0x100)) {
5806 val += this[offset + --byteLength] * mul
5807 }
5808
5809 return val
5810 }
5811
5812 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
5813 offset = offset >>> 0
5814 if (!noAssert) checkOffset(offset, 1, this.length)
5815 return this[offset]
5816 }
5817
5818 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
5819 offset = offset >>> 0
5820 if (!noAssert) checkOffset(offset, 2, this.length)
5821 return this[offset] | (this[offset + 1] << 8)
5822 }
5823
5824 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
5825 offset = offset >>> 0
5826 if (!noAssert) checkOffset(offset, 2, this.length)
5827 return (this[offset] << 8) | this[offset + 1]
5828 }
5829
5830 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
5831 offset = offset >>> 0
5832 if (!noAssert) checkOffset(offset, 4, this.length)
5833
5834 return ((this[offset]) |
5835 (this[offset + 1] << 8) |
5836 (this[offset + 2] << 16)) +
5837 (this[offset + 3] * 0x1000000)
5838 }
5839
5840 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
5841 offset = offset >>> 0
5842 if (!noAssert) checkOffset(offset, 4, this.length)
5843
5844 return (this[offset] * 0x1000000) +
5845 ((this[offset + 1] << 16) |
5846 (this[offset + 2] << 8) |
5847 this[offset + 3])
5848 }
5849
5850 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
5851 offset = offset >>> 0
5852 byteLength = byteLength >>> 0
5853 if (!noAssert) checkOffset(offset, byteLength, this.length)
5854
5855 var val = this[offset]
5856 var mul = 1
5857 var i = 0
5858 while (++i < byteLength && (mul *= 0x100)) {
5859 val += this[offset + i] * mul
5860 }
5861 mul *= 0x80
5862
5863 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5864
5865 return val
5866 }
5867
5868 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
5869 offset = offset >>> 0
5870 byteLength = byteLength >>> 0
5871 if (!noAssert) checkOffset(offset, byteLength, this.length)
5872
5873 var i = byteLength
5874 var mul = 1
5875 var val = this[offset + --i]
5876 while (i > 0 && (mul *= 0x100)) {
5877 val += this[offset + --i] * mul
5878 }
5879 mul *= 0x80
5880
5881 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5882
5883 return val
5884 }
5885
5886 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
5887 offset = offset >>> 0
5888 if (!noAssert) checkOffset(offset, 1, this.length)
5889 if (!(this[offset] & 0x80)) return (this[offset])
5890 return ((0xff - this[offset] + 1) * -1)
5891 }
5892
5893 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
5894 offset = offset >>> 0
5895 if (!noAssert) checkOffset(offset, 2, this.length)
5896 var val = this[offset] | (this[offset + 1] << 8)
5897 return (val & 0x8000) ? val | 0xFFFF0000 : val
5898 }
5899
5900 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
5901 offset = offset >>> 0
5902 if (!noAssert) checkOffset(offset, 2, this.length)
5903 var val = this[offset + 1] | (this[offset] << 8)
5904 return (val & 0x8000) ? val | 0xFFFF0000 : val
5905 }
5906
5907 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
5908 offset = offset >>> 0
5909 if (!noAssert) checkOffset(offset, 4, this.length)
5910
5911 return (this[offset]) |
5912 (this[offset + 1] << 8) |
5913 (this[offset + 2] << 16) |
5914 (this[offset + 3] << 24)
5915 }
5916
5917 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
5918 offset = offset >>> 0
5919 if (!noAssert) checkOffset(offset, 4, this.length)
5920
5921 return (this[offset] << 24) |
5922 (this[offset + 1] << 16) |
5923 (this[offset + 2] << 8) |
5924 (this[offset + 3])
5925 }
5926
5927 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
5928 offset = offset >>> 0
5929 if (!noAssert) checkOffset(offset, 4, this.length)
5930 return ieee754.read(this, offset, true, 23, 4)
5931 }
5932
5933 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
5934 offset = offset >>> 0
5935 if (!noAssert) checkOffset(offset, 4, this.length)
5936 return ieee754.read(this, offset, false, 23, 4)
5937 }
5938
5939 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
5940 offset = offset >>> 0
5941 if (!noAssert) checkOffset(offset, 8, this.length)
5942 return ieee754.read(this, offset, true, 52, 8)
5943 }
5944
5945 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
5946 offset = offset >>> 0
5947 if (!noAssert) checkOffset(offset, 8, this.length)
5948 return ieee754.read(this, offset, false, 52, 8)
5949 }
5950
5951 function checkInt (buf, value, offset, ext, max, min) {
5952 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
5953 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
5954 if (offset + ext > buf.length) throw new RangeError('Index out of range')
5955 }
5956
5957 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
5958 value = +value
5959 offset = offset >>> 0
5960 byteLength = byteLength >>> 0
5961 if (!noAssert) {
5962 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5963 checkInt(this, value, offset, byteLength, maxBytes, 0)
5964 }
5965
5966 var mul = 1
5967 var i = 0
5968 this[offset] = value & 0xFF
5969 while (++i < byteLength && (mul *= 0x100)) {
5970 this[offset + i] = (value / mul) & 0xFF
5971 }
5972
5973 return offset + byteLength
5974 }
5975
5976 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
5977 value = +value
5978 offset = offset >>> 0
5979 byteLength = byteLength >>> 0
5980 if (!noAssert) {
5981 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5982 checkInt(this, value, offset, byteLength, maxBytes, 0)
5983 }
5984
5985 var i = byteLength - 1
5986 var mul = 1
5987 this[offset + i] = value & 0xFF
5988 while (--i >= 0 && (mul *= 0x100)) {
5989 this[offset + i] = (value / mul) & 0xFF
5990 }
5991
5992 return offset + byteLength
5993 }
5994
5995 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
5996 value = +value
5997 offset = offset >>> 0
5998 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
5999 this[offset] = (value & 0xff)
6000 return offset + 1
6001 }
6002
6003 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
6004 value = +value
6005 offset = offset >>> 0
6006 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
6007 this[offset] = (value & 0xff)
6008 this[offset + 1] = (value >>> 8)
6009 return offset + 2
6010 }
6011
6012 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
6013 value = +value
6014 offset = offset >>> 0
6015 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
6016 this[offset] = (value >>> 8)
6017 this[offset + 1] = (value & 0xff)
6018 return offset + 2
6019 }
6020
6021 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
6022 value = +value
6023 offset = offset >>> 0
6024 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
6025 this[offset + 3] = (value >>> 24)
6026 this[offset + 2] = (value >>> 16)
6027 this[offset + 1] = (value >>> 8)
6028 this[offset] = (value & 0xff)
6029 return offset + 4
6030 }
6031
6032 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
6033 value = +value
6034 offset = offset >>> 0
6035 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
6036 this[offset] = (value >>> 24)
6037 this[offset + 1] = (value >>> 16)
6038 this[offset + 2] = (value >>> 8)
6039 this[offset + 3] = (value & 0xff)
6040 return offset + 4
6041 }
6042
6043 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
6044 value = +value
6045 offset = offset >>> 0
6046 if (!noAssert) {
6047 var limit = Math.pow(2, (8 * byteLength) - 1)
6048
6049 checkInt(this, value, offset, byteLength, limit - 1, -limit)
6050 }
6051
6052 var i = 0
6053 var mul = 1
6054 var sub = 0
6055 this[offset] = value & 0xFF
6056 while (++i < byteLength && (mul *= 0x100)) {
6057 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
6058 sub = 1
6059 }
6060 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6061 }
6062
6063 return offset + byteLength
6064 }
6065
6066 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
6067 value = +value
6068 offset = offset >>> 0
6069 if (!noAssert) {
6070 var limit = Math.pow(2, (8 * byteLength) - 1)
6071
6072 checkInt(this, value, offset, byteLength, limit - 1, -limit)
6073 }
6074
6075 var i = byteLength - 1
6076 var mul = 1
6077 var sub = 0
6078 this[offset + i] = value & 0xFF
6079 while (--i >= 0 && (mul *= 0x100)) {
6080 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
6081 sub = 1
6082 }
6083 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6084 }
6085
6086 return offset + byteLength
6087 }
6088
6089 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
6090 value = +value
6091 offset = offset >>> 0
6092 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
6093 if (value < 0) value = 0xff + value + 1
6094 this[offset] = (value & 0xff)
6095 return offset + 1
6096 }
6097
6098 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
6099 value = +value
6100 offset = offset >>> 0
6101 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6102 this[offset] = (value & 0xff)
6103 this[offset + 1] = (value >>> 8)
6104 return offset + 2
6105 }
6106
6107 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
6108 value = +value
6109 offset = offset >>> 0
6110 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6111 this[offset] = (value >>> 8)
6112 this[offset + 1] = (value & 0xff)
6113 return offset + 2
6114 }
6115
6116 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
6117 value = +value
6118 offset = offset >>> 0
6119 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6120 this[offset] = (value & 0xff)
6121 this[offset + 1] = (value >>> 8)
6122 this[offset + 2] = (value >>> 16)
6123 this[offset + 3] = (value >>> 24)
6124 return offset + 4
6125 }
6126
6127 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
6128 value = +value
6129 offset = offset >>> 0
6130 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6131 if (value < 0) value = 0xffffffff + value + 1
6132 this[offset] = (value >>> 24)
6133 this[offset + 1] = (value >>> 16)
6134 this[offset + 2] = (value >>> 8)
6135 this[offset + 3] = (value & 0xff)
6136 return offset + 4
6137 }
6138
6139 function checkIEEE754 (buf, value, offset, ext, max, min) {
6140 if (offset + ext > buf.length) throw new RangeError('Index out of range')
6141 if (offset < 0) throw new RangeError('Index out of range')
6142 }
6143
6144 function writeFloat (buf, value, offset, littleEndian, noAssert) {
6145 value = +value
6146 offset = offset >>> 0
6147 if (!noAssert) {
6148 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
6149 }
6150 ieee754.write(buf, value, offset, littleEndian, 23, 4)
6151 return offset + 4
6152 }
6153
6154 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
6155 return writeFloat(this, value, offset, true, noAssert)
6156 }
6157
6158 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
6159 return writeFloat(this, value, offset, false, noAssert)
6160 }
6161
6162 function writeDouble (buf, value, offset, littleEndian, noAssert) {
6163 value = +value
6164 offset = offset >>> 0
6165 if (!noAssert) {
6166 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
6167 }
6168 ieee754.write(buf, value, offset, littleEndian, 52, 8)
6169 return offset + 8
6170 }
6171
6172 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
6173 return writeDouble(this, value, offset, true, noAssert)
6174 }
6175
6176 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
6177 return writeDouble(this, value, offset, false, noAssert)
6178 }
6179
6180 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
6181 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
6182 if (!start) start = 0
6183 if (!end && end !== 0) end = this.length
6184 if (targetStart >= target.length) targetStart = target.length
6185 if (!targetStart) targetStart = 0
6186 if (end > 0 && end < start) end = start
6187
6188 // Copy 0 bytes; we're done
6189 if (end === start) return 0
6190 if (target.length === 0 || this.length === 0) return 0
6191
6192 // Fatal error conditions
6193 if (targetStart < 0) {
6194 throw new RangeError('targetStart out of bounds')
6195 }
6196 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
6197 if (end < 0) throw new RangeError('sourceEnd out of bounds')
6198
6199 // Are we oob?
6200 if (end > this.length) end = this.length
6201 if (target.length - targetStart < end - start) {
6202 end = target.length - targetStart + start
6203 }
6204
6205 var len = end - start
6206 var i
6207
6208 if (this === target && start < targetStart && targetStart < end) {
6209 // descending copy from end
6210 for (i = len - 1; i >= 0; --i) {
6211 target[i + targetStart] = this[i + start]
6212 }
6213 } else if (len < 1000) {
6214 // ascending copy from start
6215 for (i = 0; i < len; ++i) {
6216 target[i + targetStart] = this[i + start]
6217 }
6218 } else {
6219 Uint8Array.prototype.set.call(
6220 target,
6221 this.subarray(start, start + len),
6222 targetStart
6223 )
6224 }
6225
6226 return len
6227 }
6228
6229 // Usage:
6230 // buffer.fill(number[, offset[, end]])
6231 // buffer.fill(buffer[, offset[, end]])
6232 // buffer.fill(string[, offset[, end]][, encoding])
6233 Buffer.prototype.fill = function fill (val, start, end, encoding) {
6234 // Handle string cases:
6235 if (typeof val === 'string') {
6236 if (typeof start === 'string') {
6237 encoding = start
6238 start = 0
6239 end = this.length
6240 } else if (typeof end === 'string') {
6241 encoding = end
6242 end = this.length
6243 }
6244 if (val.length === 1) {
6245 var code = val.charCodeAt(0)
6246 if (code < 256) {
6247 val = code
6248 }
6249 }
6250 if (encoding !== undefined && typeof encoding !== 'string') {
6251 throw new TypeError('encoding must be a string')
6252 }
6253 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
6254 throw new TypeError('Unknown encoding: ' + encoding)
6255 }
6256 } else if (typeof val === 'number') {
6257 val = val & 255
6258 }
6259
6260 // Invalid ranges are not set to a default, so can range check early.
6261 if (start < 0 || this.length < start || this.length < end) {
6262 throw new RangeError('Out of range index')
6263 }
6264
6265 if (end <= start) {
6266 return this
6267 }
6268
6269 start = start >>> 0
6270 end = end === undefined ? this.length : end >>> 0
6271
6272 if (!val) val = 0
6273
6274 var i
6275 if (typeof val === 'number') {
6276 for (i = start; i < end; ++i) {
6277 this[i] = val
6278 }
6279 } else {
6280 var bytes = Buffer.isBuffer(val)
6281 ? val
6282 : new Buffer(val, encoding)
6283 var len = bytes.length
6284 for (i = 0; i < end - start; ++i) {
6285 this[i + start] = bytes[i % len]
6286 }
6287 }
6288
6289 return this
6290 }
6291
6292 // HELPER FUNCTIONS
6293 // ================
6294
6295 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
6296
6297 function base64clean (str) {
6298 // Node strips out invalid characters like \n and \t from the string, base64-js does not
6299 str = str.trim().replace(INVALID_BASE64_RE, '')
6300 // Node converts strings with length < 2 to ''
6301 if (str.length < 2) return ''
6302 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
6303 while (str.length % 4 !== 0) {
6304 str = str + '='
6305 }
6306 return str
6307 }
6308
6309 function toHex (n) {
6310 if (n < 16) return '0' + n.toString(16)
6311 return n.toString(16)
6312 }
6313
6314 function utf8ToBytes (string, units) {
6315 units = units || Infinity
6316 var codePoint
6317 var length = string.length
6318 var leadSurrogate = null
6319 var bytes = []
6320
6321 for (var i = 0; i < length; ++i) {
6322 codePoint = string.charCodeAt(i)
6323
6324 // is surrogate component
6325 if (codePoint > 0xD7FF && codePoint < 0xE000) {
6326 // last char was a lead
6327 if (!leadSurrogate) {
6328 // no lead yet
6329 if (codePoint > 0xDBFF) {
6330 // unexpected trail
6331 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6332 continue
6333 } else if (i + 1 === length) {
6334 // unpaired lead
6335 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6336 continue
6337 }
6338
6339 // valid lead
6340 leadSurrogate = codePoint
6341
6342 continue
6343 }
6344
6345 // 2 leads in a row
6346 if (codePoint < 0xDC00) {
6347 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6348 leadSurrogate = codePoint
6349 continue
6350 }
6351
6352 // valid surrogate pair
6353 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
6354 } else if (leadSurrogate) {
6355 // valid bmp char, but last char was a lead
6356 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6357 }
6358
6359 leadSurrogate = null
6360
6361 // encode utf8
6362 if (codePoint < 0x80) {
6363 if ((units -= 1) < 0) break
6364 bytes.push(codePoint)
6365 } else if (codePoint < 0x800) {
6366 if ((units -= 2) < 0) break
6367 bytes.push(
6368 codePoint >> 0x6 | 0xC0,
6369 codePoint & 0x3F | 0x80
6370 )
6371 } else if (codePoint < 0x10000) {
6372 if ((units -= 3) < 0) break
6373 bytes.push(
6374 codePoint >> 0xC | 0xE0,
6375 codePoint >> 0x6 & 0x3F | 0x80,
6376 codePoint & 0x3F | 0x80
6377 )
6378 } else if (codePoint < 0x110000) {
6379 if ((units -= 4) < 0) break
6380 bytes.push(
6381 codePoint >> 0x12 | 0xF0,
6382 codePoint >> 0xC & 0x3F | 0x80,
6383 codePoint >> 0x6 & 0x3F | 0x80,
6384 codePoint & 0x3F | 0x80
6385 )
6386 } else {
6387 throw new Error('Invalid code point')
6388 }
6389 }
6390
6391 return bytes
6392 }
6393
6394 function asciiToBytes (str) {
6395 var byteArray = []
6396 for (var i = 0; i < str.length; ++i) {
6397 // Node's code seems to be doing this and not & 0x7F..
6398 byteArray.push(str.charCodeAt(i) & 0xFF)
6399 }
6400 return byteArray
6401 }
6402
6403 function utf16leToBytes (str, units) {
6404 var c, hi, lo
6405 var byteArray = []
6406 for (var i = 0; i < str.length; ++i) {
6407 if ((units -= 2) < 0) break
6408
6409 c = str.charCodeAt(i)
6410 hi = c >> 8
6411 lo = c % 256
6412 byteArray.push(lo)
6413 byteArray.push(hi)
6414 }
6415
6416 return byteArray
6417 }
6418
6419 function base64ToBytes (str) {
6420 return base64.toByteArray(base64clean(str))
6421 }
6422
6423 function blitBuffer (src, dst, offset, length) {
6424 for (var i = 0; i < length; ++i) {
6425 if ((i + offset >= dst.length) || (i >= src.length)) break
6426 dst[i + offset] = src[i]
6427 }
6428 return i
6429 }
6430
6431 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
6432 function isArrayBufferView (obj) {
6433 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
6434 }
6435
6436 function numberIsNaN (obj) {
6437 return obj !== obj // eslint-disable-line no-self-compare
6438 }
6439
6440 },{"base64-js":1,"ieee754":3}],3:[function(require,module,exports){
6441 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
6442 var e, m
6443 var eLen = nBytes * 8 - mLen - 1
6444 var eMax = (1 << eLen) - 1
6445 var eBias = eMax >> 1
6446 var nBits = -7
6447 var i = isLE ? (nBytes - 1) : 0
6448 var d = isLE ? -1 : 1
6449 var s = buffer[offset + i]
6450
6451 i += d
6452
6453 e = s & ((1 << (-nBits)) - 1)
6454 s >>= (-nBits)
6455 nBits += eLen
6456 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6457
6458 m = e & ((1 << (-nBits)) - 1)
6459 e >>= (-nBits)
6460 nBits += mLen
6461 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6462
6463 if (e === 0) {
6464 e = 1 - eBias
6465 } else if (e === eMax) {
6466 return m ? NaN : ((s ? -1 : 1) * Infinity)
6467 } else {
6468 m = m + Math.pow(2, mLen)
6469 e = e - eBias
6470 }
6471 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
6472 }
6473
6474 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
6475 var e, m, c
6476 var eLen = nBytes * 8 - mLen - 1
6477 var eMax = (1 << eLen) - 1
6478 var eBias = eMax >> 1
6479 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
6480 var i = isLE ? 0 : (nBytes - 1)
6481 var d = isLE ? 1 : -1
6482 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
6483
6484 value = Math.abs(value)
6485
6486 if (isNaN(value) || value === Infinity) {
6487 m = isNaN(value) ? 1 : 0
6488 e = eMax
6489 } else {
6490 e = Math.floor(Math.log(value) / Math.LN2)
6491 if (value * (c = Math.pow(2, -e)) < 1) {
6492 e--
6493 c *= 2
6494 }
6495 if (e + eBias >= 1) {
6496 value += rt / c
6497 } else {
6498 value += rt * Math.pow(2, 1 - eBias)
6499 }
6500 if (value * c >= 2) {
6501 e++
6502 c /= 2
6503 }
6504
6505 if (e + eBias >= eMax) {
6506 m = 0
6507 e = eMax
6508 } else if (e + eBias >= 1) {
6509 m = (value * c - 1) * Math.pow(2, mLen)
6510 e = e + eBias
6511 } else {
6512 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
6513 e = 0
6514 }
6515 }
6516
6517 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
6518
6519 e = (e << mLen) | m
6520 eLen += mLen
6521 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
6522
6523 buffer[offset + i - d] |= s * 128
6524 }
6525
6526 },{}],4:[function(require,module,exports){
6527 window.basex = require('base-x')
6528 },{"base-x":5}],5:[function(require,module,exports){
6529 // base-x encoding
6530 // Forked from https://github.com/cryptocoinjs/bs58
6531 // Originally written by Mike Hearn for BitcoinJ
6532 // Copyright (c) 2011 Google Inc
6533 // Ported to JavaScript by Stefan Thomas
6534 // Merged Buffer refactorings from base58-native by Stephen Pair
6535 // Copyright (c) 2013 BitPay Inc
6536
6537 var Buffer = require('safe-buffer').Buffer
6538
6539 module.exports = function base (ALPHABET) {
6540 var ALPHABET_MAP = {}
6541 var BASE = ALPHABET.length
6542 var LEADER = ALPHABET.charAt(0)
6543
6544 // pre-compute lookup table
6545 for (var z = 0; z < ALPHABET.length; z++) {
6546 var x = ALPHABET.charAt(z)
6547
6548 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
6549 ALPHABET_MAP[x] = z
6550 }
6551
6552 function encode (source) {
6553 if (source.length === 0) return ''
6554
6555 var digits = [0]
6556 for (var i = 0; i < source.length; ++i) {
6557 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
6558 carry += digits[j] << 8
6559 digits[j] = carry % BASE
6560 carry = (carry / BASE) | 0
6561 }
6562
6563 while (carry > 0) {
6564 digits.push(carry % BASE)
6565 carry = (carry / BASE) | 0
6566 }
6567 }
6568
6569 var string = ''
6570
6571 // deal with leading zeros
6572 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
6573 // convert digits to a string
6574 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
6575
6576 return string
6577 }
6578
6579 function decodeUnsafe (string) {
6580 if (string.length === 0) return Buffer.allocUnsafe(0)
6581
6582 var bytes = [0]
6583 for (var i = 0; i < string.length; i++) {
6584 var value = ALPHABET_MAP[string[i]]
6585 if (value === undefined) return
6586
6587 for (var j = 0, carry = value; j < bytes.length; ++j) {
6588 carry += bytes[j] * BASE
6589 bytes[j] = carry & 0xff
6590 carry >>= 8
6591 }
6592
6593 while (carry > 0) {
6594 bytes.push(carry & 0xff)
6595 carry >>= 8
6596 }
6597 }
6598
6599 // deal with leading zeros
6600 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
6601 bytes.push(0)
6602 }
6603
6604 return Buffer.from(bytes.reverse())
6605 }
6606
6607 function decode (string) {
6608 var buffer = decodeUnsafe(string)
6609 if (buffer) return buffer
6610
6611 throw new Error('Non-base' + BASE + ' character')
6612 }
6613
6614 return {
6615 encode: encode,
6616 decodeUnsafe: decodeUnsafe,
6617 decode: decode
6618 }
6619 }
6620
6621 },{"safe-buffer":6}],6:[function(require,module,exports){
6622 module.exports = require('buffer')
6623
6624 },{"buffer":2}]},{},[4])(4)
6625 });</script>
6626 <script>(function (root) {
6627 "use strict";
6628
6629 /***** unorm.js *****/
6630
6631 /*
6632 * UnicodeNormalizer 1.0.0
6633 * Copyright (c) 2008 Matsuza
6634 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
6635 * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
6636 * $Rev: 13309 $
6637 */
6638
6639 var DEFAULT_FEATURE = [null, 0, {}];
6640 var CACHE_THRESHOLD = 10;
6641 var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;
6642 var NCount = VCount * TCount; // 588
6643 var SCount = LCount * NCount; // 11172
6644
6645 var UChar = function(cp, feature){
6646 this.codepoint = cp;
6647 this.feature = feature;
6648 };
6649
6650 // Strategies
6651 var cache = {};
6652 var cacheCounter = [];
6653 for (var i = 0; i <= 0xFF; ++i){
6654 cacheCounter[i] = 0;
6655 }
6656
6657 function fromCache(next, cp, needFeature){
6658 var ret = cache[cp];
6659 if(!ret){
6660 ret = next(cp, needFeature);
6661 if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){
6662 cache[cp] = ret;
6663 }
6664 }
6665 return ret;
6666 }
6667
6668 function fromData(next, cp, needFeature){
6669 var hash = cp & 0xFF00;
6670 var dunit = UChar.udata[hash] || {};
6671 var f = dunit[cp];
6672 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
6673 }
6674 function fromCpOnly(next, cp, needFeature){
6675 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
6676 }
6677 function fromRuleBasedJamo(next, cp, needFeature){
6678 var j;
6679 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
6680 return next(cp, needFeature);
6681 }
6682 if(LBase <= cp && cp < LBase + LCount){
6683 var c = {};
6684 var base = (cp - LBase) * VCount;
6685 for (j = 0; j < VCount; ++j){
6686 c[VBase + j] = SBase + TCount * (j + base);
6687 }
6688 return new UChar(cp, [,,c]);
6689 }
6690
6691 var SIndex = cp - SBase;
6692 var TIndex = SIndex % TCount;
6693 var feature = [];
6694 if(TIndex !== 0){
6695 feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
6696 } else {
6697 feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
6698 feature[2] = {};
6699 for (j = 1; j < TCount; ++j){
6700 feature[2][TBase + j] = cp + j;
6701 }
6702 }
6703 return new UChar(cp, feature);
6704 }
6705 function fromCpFilter(next, cp, needFeature){
6706 return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
6707 }
6708
6709 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
6710
6711 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
6712 return function (cp, needFeature) {
6713 return strategy(next, cp, needFeature);
6714 };
6715 }, null);
6716
6717 UChar.isHighSurrogate = function(cp){
6718 return cp >= 0xD800 && cp <= 0xDBFF;
6719 };
6720 UChar.isLowSurrogate = function(cp){
6721 return cp >= 0xDC00 && cp <= 0xDFFF;
6722 };
6723
6724 UChar.prototype.prepFeature = function(){
6725 if(!this.feature){
6726 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
6727 }
6728 };
6729
6730 UChar.prototype.toString = function(){
6731 if(this.codepoint < 0x10000){
6732 return String.fromCharCode(this.codepoint);
6733 } else {
6734 var x = this.codepoint - 0x10000;
6735 return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
6736 }
6737 };
6738
6739 UChar.prototype.getDecomp = function(){
6740 this.prepFeature();
6741 return this.feature[0] || null;
6742 };
6743
6744 UChar.prototype.isCompatibility = function(){
6745 this.prepFeature();
6746 return !!this.feature[1] && (this.feature[1] & (1 << 8));
6747 };
6748 UChar.prototype.isExclude = function(){
6749 this.prepFeature();
6750 return !!this.feature[1] && (this.feature[1] & (1 << 9));
6751 };
6752 UChar.prototype.getCanonicalClass = function(){
6753 this.prepFeature();
6754 return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
6755 };
6756 UChar.prototype.getComposite = function(following){
6757 this.prepFeature();
6758 if(!this.feature[2]){
6759 return null;
6760 }
6761 var cp = this.feature[2][following.codepoint];
6762 return cp ? UChar.fromCharCode(cp) : null;
6763 };
6764
6765 var UCharIterator = function(str){
6766 this.str = str;
6767 this.cursor = 0;
6768 };
6769 UCharIterator.prototype.next = function(){
6770 if(!!this.str && this.cursor < this.str.length){
6771 var cp = this.str.charCodeAt(this.cursor++);
6772 var d;
6773 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
6774 cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;
6775 ++this.cursor;
6776 }
6777 return UChar.fromCharCode(cp);
6778 } else {
6779 this.str = null;
6780 return null;
6781 }
6782 };
6783
6784 var RecursDecompIterator = function(it, cano){
6785 this.it = it;
6786 this.canonical = cano;
6787 this.resBuf = [];
6788 };
6789
6790 RecursDecompIterator.prototype.next = function(){
6791 function recursiveDecomp(cano, uchar){
6792 var decomp = uchar.getDecomp();
6793 if(!!decomp && !(cano && uchar.isCompatibility())){
6794 var ret = [];
6795 for(var i = 0; i < decomp.length; ++i){
6796 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
6797 ret = ret.concat(a);
6798 }
6799 return ret;
6800 } else {
6801 return [uchar];
6802 }
6803 }
6804 if(this.resBuf.length === 0){
6805 var uchar = this.it.next();
6806 if(!uchar){
6807 return null;
6808 }
6809 this.resBuf = recursiveDecomp(this.canonical, uchar);
6810 }
6811 return this.resBuf.shift();
6812 };
6813
6814 var DecompIterator = function(it){
6815 this.it = it;
6816 this.resBuf = [];
6817 };
6818
6819 DecompIterator.prototype.next = function(){
6820 var cc;
6821 if(this.resBuf.length === 0){
6822 do{
6823 var uchar = this.it.next();
6824 if(!uchar){
6825 break;
6826 }
6827 cc = uchar.getCanonicalClass();
6828 var inspt = this.resBuf.length;
6829 if(cc !== 0){
6830 for(; inspt > 0; --inspt){
6831 var uchar2 = this.resBuf[inspt - 1];
6832 var cc2 = uchar2.getCanonicalClass();
6833 if(cc2 <= cc){
6834 break;
6835 }
6836 }
6837 }
6838 this.resBuf.splice(inspt, 0, uchar);
6839 } while(cc !== 0);
6840 }
6841 return this.resBuf.shift();
6842 };
6843
6844 var CompIterator = function(it){
6845 this.it = it;
6846 this.procBuf = [];
6847 this.resBuf = [];
6848 this.lastClass = null;
6849 };
6850
6851 CompIterator.prototype.next = function(){
6852 while(this.resBuf.length === 0){
6853 var uchar = this.it.next();
6854 if(!uchar){
6855 this.resBuf = this.procBuf;
6856 this.procBuf = [];
6857 break;
6858 }
6859 if(this.procBuf.length === 0){
6860 this.lastClass = uchar.getCanonicalClass();
6861 this.procBuf.push(uchar);
6862 } else {
6863 var starter = this.procBuf[0];
6864 var composite = starter.getComposite(uchar);
6865 var cc = uchar.getCanonicalClass();
6866 if(!!composite && (this.lastClass < cc || this.lastClass === 0)){
6867 this.procBuf[0] = composite;
6868 } else {
6869 if(cc === 0){
6870 this.resBuf = this.procBuf;
6871 this.procBuf = [];
6872 }
6873 this.lastClass = cc;
6874 this.procBuf.push(uchar);
6875 }
6876 }
6877 }
6878 return this.resBuf.shift();
6879 };
6880
6881 var createIterator = function(mode, str){
6882 switch(mode){
6883 case "NFD":
6884 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
6885 case "NFKD":
6886 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
6887 case "NFC":
6888 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
6889 case "NFKC":
6890 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
6891 }
6892 throw mode + " is invalid";
6893 };
6894 var normalize = function(mode, str){
6895 var it = createIterator(mode, str);
6896 var ret = "";
6897 var uchar;
6898 while(!!(uchar = it.next())){
6899 ret += uchar.toString();
6900 }
6901 return ret;
6902 };
6903
6904 /* API functions */
6905 function nfd(str){
6906 return normalize("NFD", str);
6907 }
6908
6909 function nfkd(str){
6910 return normalize("NFKD", str);
6911 }
6912
6913 function nfc(str){
6914 return normalize("NFC", str);
6915 }
6916
6917 function nfkc(str){
6918 return normalize("NFKC", str);
6919 }
6920
6921 /* Unicode data */
6922 UChar.udata={
6923 0:{60:[,,{824:8814}],61:[,,{824:8800}],62:[,,{824:8815}],65:[,,{768:192,769:193,770:194,771:195,772:256,774:258,775:550,776:196,777:7842,778:197,780:461,783:512,785:514,803:7840,805:7680,808:260}],66:[,,{775:7682,803:7684,817:7686}],67:[,,{769:262,770:264,775:266,780:268,807:199}],68:[,,{775:7690,780:270,803:7692,807:7696,813:7698,817:7694}],69:[,,{768:200,769:201,770:202,771:7868,772:274,774:276,775:278,776:203,777:7866,780:282,783:516,785:518,803:7864,807:552,808:280,813:7704,816:7706}],70:[,,{775:7710}],71:[,,{769:500,770:284,772:7712,774:286,775:288,780:486,807:290}],72:[,,{770:292,775:7714,776:7718,780:542,803:7716,807:7720,814:7722}],73:[,,{768:204,769:205,770:206,771:296,772:298,774:300,775:304,776:207,777:7880,780:463,783:520,785:522,803:7882,808:302,816:7724}],74:[,,{770:308}],75:[,,{769:7728,780:488,803:7730,807:310,817:7732}],76:[,,{769:313,780:317,803:7734,807:315,813:7740,817:7738}],77:[,,{769:7742,775:7744,803:7746}],78:[,,{768:504,769:323,771:209,775:7748,780:327,803:7750,807:325,813:7754,817:7752}],79:[,,{768:210,769:211,770:212,771:213,772:332,774:334,775:558,776:214,777:7886,779:336,780:465,783:524,785:526,795:416,803:7884,808:490}],80:[,,{769:7764,775:7766}],82:[,,{769:340,775:7768,780:344,783:528,785:530,803:7770,807:342,817:7774}],83:[,,{769:346,770:348,775:7776,780:352,803:7778,806:536,807:350}],84:[,,{775:7786,780:356,803:7788,806:538,807:354,813:7792,817:7790}],85:[,,{768:217,769:218,770:219,771:360,772:362,774:364,776:220,777:7910,778:366,779:368,780:467,783:532,785:534,795:431,803:7908,804:7794,808:370,813:7798,816:7796}],86:[,,{771:7804,803:7806}],87:[,,{768:7808,769:7810,770:372,775:7814,776:7812,803:7816}],88:[,,{775:7818,776:7820}],89:[,,{768:7922,769:221,770:374,771:7928,772:562,775:7822,776:376,777:7926,803:7924}],90:[,,{769:377,770:7824,775:379,780:381,803:7826,817:7828}],97:[,,{768:224,769:225,770:226,771:227,772:257,774:259,775:551,776:228,777:7843,778:229,780:462,783:513,785:515,803:7841,805:7681,808:261}],98:[,,{775:7683,803:7685,817:7687}],99:[,,{769:263,770:265,775:267,780:269,807:231}],100:[,,{775:7691,780:271,803:7693,807:7697,813:7699,817:7695}],101:[,,{768:232,769:233,770:234,771:7869,772:275,774:277,775:279,776:235,777:7867,780:283,783:517,785:519,803:7865,807:553,808:281,813:7705,816:7707}],102:[,,{775:7711}],103:[,,{769:501,770:285,772:7713,774:287,775:289,780:487,807:291}],104:[,,{770:293,775:7715,776:7719,780:543,803:7717,807:7721,814:7723,817:7830}],105:[,,{768:236,769:237,770:238,771:297,772:299,774:301,776:239,777:7881,780:464,783:521,785:523,803:7883,808:303,816:7725}],106:[,,{770:309,780:496}],107:[,,{769:7729,780:489,803:7731,807:311,817:7733}],108:[,,{769:314,780:318,803:7735,807:316,813:7741,817:7739}],109:[,,{769:7743,775:7745,803:7747}],110:[,,{768:505,769:324,771:241,775:7749,780:328,803:7751,807:326,813:7755,817:7753}],111:[,,{768:242,769:243,770:244,771:245,772:333,774:335,775:559,776:246,777:7887,779:337,780:466,783:525,785:527,795:417,803:7885,808:491}],112:[,,{769:7765,775:7767}],114:[,,{769:341,775:7769,780:345,783:529,785:531,803:7771,807:343,817:7775}],115:[,,{769:347,770:349,775:7777,780:353,803:7779,806:537,807:351}],116:[,,{775:7787,776:7831,780:357,803:7789,806:539,807:355,813:7793,817:7791}],117:[,,{768:249,769:250,770:251,771:361,772:363,774:365,776:252,777:7911,778:367,779:369,780:468,783:533,785:535,795:432,803:7909,804:7795,808:371,813:7799,816:7797}],118:[,,{771:7805,803:7807}],119:[,,{768:7809,769:7811,770:373,775:7815,776:7813,778:7832,803:7817}],120:[,,{775:7819,776:7821}],121:[,,{768:7923,769:253,770:375,771:7929,772:563,775:7823,776:255,777:7927,778:7833,803:7925}],122:[,,{769:378,770:7825,775:380,780:382,803:7827,817:7829}],160:[[32],256],168:[[32,776],256,{768:8173,769:901,834:8129}],170:[[97],256],175:[[32,772],256],178:[[50],256],179:[[51],256],180:[[32,769],256],181:[[956],256],184:[[32,807],256],185:[[49],256],186:[[111],256],188:[[49,8260,52],256],189:[[49,8260,50],256],190:[[51,8260,52],256],192:[[65,768]],193:[[65,769]],194:[[65,770],,{768:7846,769:7844,771:7850,777:7848}],195:[[65,771]],196:[[65,776],,{772:478}],197:[[65,778],,{769:506}],198:[,,{769:508,772:482}],199:[[67,807],,{769:7688}],200:[[69,768]],201:[[69,769]],202:[[69,770],,{768:7872,769:7870,771:7876,777:7874}],203:[[69,776]],204:[[73,768]],205:[[73,769]],206:[[73,770]],207:[[73,776],,{769:7726}],209:[[78,771]],210:[[79,768]],211:[[79,769]],212:[[79,770],,{768:7890,769:7888,771:7894,777:7892}],213:[[79,771],,{769:7756,772:556,776:7758}],214:[[79,776],,{772:554}],216:[,,{769:510}],217:[[85,768]],218:[[85,769]],219:[[85,770]],220:[[85,776],,{768:475,769:471,772:469,780:473}],221:[[89,769]],224:[[97,768]],225:[[97,769]],226:[[97,770],,{768:7847,769:7845,771:7851,777:7849}],227:[[97,771]],228:[[97,776],,{772:479}],229:[[97,778],,{769:507}],230:[,,{769:509,772:483}],231:[[99,807],,{769:7689}],232:[[101,768]],233:[[101,769]],234:[[101,770],,{768:7873,769:7871,771:7877,777:7875}],235:[[101,776]],236:[[105,768]],237:[[105,769]],238:[[105,770]],239:[[105,776],,{769:7727}],241:[[110,771]],242:[[111,768]],243:[[111,769]],244:[[111,770],,{768:7891,769:7889,771:7895,777:7893}],245:[[111,771],,{769:7757,772:557,776:7759}],246:[[111,776],,{772:555}],248:[,,{769:511}],249:[[117,768]],250:[[117,769]],251:[[117,770]],252:[[117,776],,{768:476,769:472,772:470,780:474}],253:[[121,769]],255:[[121,776]]},
6924 256:{256:[[65,772]],257:[[97,772]],258:[[65,774],,{768:7856,769:7854,771:7860,777:7858}],259:[[97,774],,{768:7857,769:7855,771:7861,777:7859}],260:[[65,808]],261:[[97,808]],262:[[67,769]],263:[[99,769]],264:[[67,770]],265:[[99,770]],266:[[67,775]],267:[[99,775]],268:[[67,780]],269:[[99,780]],270:[[68,780]],271:[[100,780]],274:[[69,772],,{768:7700,769:7702}],275:[[101,772],,{768:7701,769:7703}],276:[[69,774]],277:[[101,774]],278:[[69,775]],279:[[101,775]],280:[[69,808]],281:[[101,808]],282:[[69,780]],283:[[101,780]],284:[[71,770]],285:[[103,770]],286:[[71,774]],287:[[103,774]],288:[[71,775]],289:[[103,775]],290:[[71,807]],291:[[103,807]],292:[[72,770]],293:[[104,770]],296:[[73,771]],297:[[105,771]],298:[[73,772]],299:[[105,772]],300:[[73,774]],301:[[105,774]],302:[[73,808]],303:[[105,808]],304:[[73,775]],306:[[73,74],256],307:[[105,106],256],308:[[74,770]],309:[[106,770]],310:[[75,807]],311:[[107,807]],313:[[76,769]],314:[[108,769]],315:[[76,807]],316:[[108,807]],317:[[76,780]],318:[[108,780]],319:[[76,183],256],320:[[108,183],256],323:[[78,769]],324:[[110,769]],325:[[78,807]],326:[[110,807]],327:[[78,780]],328:[[110,780]],329:[[700,110],256],332:[[79,772],,{768:7760,769:7762}],333:[[111,772],,{768:7761,769:7763}],334:[[79,774]],335:[[111,774]],336:[[79,779]],337:[[111,779]],340:[[82,769]],341:[[114,769]],342:[[82,807]],343:[[114,807]],344:[[82,780]],345:[[114,780]],346:[[83,769],,{775:7780}],347:[[115,769],,{775:7781}],348:[[83,770]],349:[[115,770]],350:[[83,807]],351:[[115,807]],352:[[83,780],,{775:7782}],353:[[115,780],,{775:7783}],354:[[84,807]],355:[[116,807]],356:[[84,780]],357:[[116,780]],360:[[85,771],,{769:7800}],361:[[117,771],,{769:7801}],362:[[85,772],,{776:7802}],363:[[117,772],,{776:7803}],364:[[85,774]],365:[[117,774]],366:[[85,778]],367:[[117,778]],368:[[85,779]],369:[[117,779]],370:[[85,808]],371:[[117,808]],372:[[87,770]],373:[[119,770]],374:[[89,770]],375:[[121,770]],376:[[89,776]],377:[[90,769]],378:[[122,769]],379:[[90,775]],380:[[122,775]],381:[[90,780]],382:[[122,780]],383:[[115],256,{775:7835}],416:[[79,795],,{768:7900,769:7898,771:7904,777:7902,803:7906}],417:[[111,795],,{768:7901,769:7899,771:7905,777:7903,803:7907}],431:[[85,795],,{768:7914,769:7912,771:7918,777:7916,803:7920}],432:[[117,795],,{768:7915,769:7913,771:7919,777:7917,803:7921}],439:[,,{780:494}],452:[[68,381],256],453:[[68,382],256],454:[[100,382],256],455:[[76,74],256],456:[[76,106],256],457:[[108,106],256],458:[[78,74],256],459:[[78,106],256],460:[[110,106],256],461:[[65,780]],462:[[97,780]],463:[[73,780]],464:[[105,780]],465:[[79,780]],466:[[111,780]],467:[[85,780]],468:[[117,780]],469:[[220,772]],470:[[252,772]],471:[[220,769]],472:[[252,769]],473:[[220,780]],474:[[252,780]],475:[[220,768]],476:[[252,768]],478:[[196,772]],479:[[228,772]],480:[[550,772]],481:[[551,772]],482:[[198,772]],483:[[230,772]],486:[[71,780]],487:[[103,780]],488:[[75,780]],489:[[107,780]],490:[[79,808],,{772:492}],491:[[111,808],,{772:493}],492:[[490,772]],493:[[491,772]],494:[[439,780]],495:[[658,780]],496:[[106,780]],497:[[68,90],256],498:[[68,122],256],499:[[100,122],256],500:[[71,769]],501:[[103,769]],504:[[78,768]],505:[[110,768]],506:[[197,769]],507:[[229,769]],508:[[198,769]],509:[[230,769]],510:[[216,769]],511:[[248,769]],66045:[,220]},
6925 512:{512:[[65,783]],513:[[97,783]],514:[[65,785]],515:[[97,785]],516:[[69,783]],517:[[101,783]],518:[[69,785]],519:[[101,785]],520:[[73,783]],521:[[105,783]],522:[[73,785]],523:[[105,785]],524:[[79,783]],525:[[111,783]],526:[[79,785]],527:[[111,785]],528:[[82,783]],529:[[114,783]],530:[[82,785]],531:[[114,785]],532:[[85,783]],533:[[117,783]],534:[[85,785]],535:[[117,785]],536:[[83,806]],537:[[115,806]],538:[[84,806]],539:[[116,806]],542:[[72,780]],543:[[104,780]],550:[[65,775],,{772:480}],551:[[97,775],,{772:481}],552:[[69,807],,{774:7708}],553:[[101,807],,{774:7709}],554:[[214,772]],555:[[246,772]],556:[[213,772]],557:[[245,772]],558:[[79,775],,{772:560}],559:[[111,775],,{772:561}],560:[[558,772]],561:[[559,772]],562:[[89,772]],563:[[121,772]],658:[,,{780:495}],688:[[104],256],689:[[614],256],690:[[106],256],691:[[114],256],692:[[633],256],693:[[635],256],694:[[641],256],695:[[119],256],696:[[121],256],728:[[32,774],256],729:[[32,775],256],730:[[32,778],256],731:[[32,808],256],732:[[32,771],256],733:[[32,779],256],736:[[611],256],737:[[108],256],738:[[115],256],739:[[120],256],740:[[661],256],66272:[,220]},
6926 768:{768:[,230],769:[,230],770:[,230],771:[,230],772:[,230],773:[,230],774:[,230],775:[,230],776:[,230,{769:836}],777:[,230],778:[,230],779:[,230],780:[,230],781:[,230],782:[,230],783:[,230],784:[,230],785:[,230],786:[,230],787:[,230],788:[,230],789:[,232],790:[,220],791:[,220],792:[,220],793:[,220],794:[,232],795:[,216],796:[,220],797:[,220],798:[,220],799:[,220],800:[,220],801:[,202],802:[,202],803:[,220],804:[,220],805:[,220],806:[,220],807:[,202],808:[,202],809:[,220],810:[,220],811:[,220],812:[,220],813:[,220],814:[,220],815:[,220],816:[,220],817:[,220],818:[,220],819:[,220],820:[,1],821:[,1],822:[,1],823:[,1],824:[,1],825:[,220],826:[,220],827:[,220],828:[,220],829:[,230],830:[,230],831:[,230],832:[[768],230],833:[[769],230],834:[,230],835:[[787],230],836:[[776,769],230],837:[,240],838:[,230],839:[,220],840:[,220],841:[,220],842:[,230],843:[,230],844:[,230],845:[,220],846:[,220],848:[,230],849:[,230],850:[,230],851:[,220],852:[,220],853:[,220],854:[,220],855:[,230],856:[,232],857:[,220],858:[,220],859:[,230],860:[,233],861:[,234],862:[,234],863:[,233],864:[,234],865:[,234],866:[,233],867:[,230],868:[,230],869:[,230],870:[,230],871:[,230],872:[,230],873:[,230],874:[,230],875:[,230],876:[,230],877:[,230],878:[,230],879:[,230],884:[[697]],890:[[32,837],256],894:[[59]],900:[[32,769],256],901:[[168,769]],902:[[913,769]],903:[[183]],904:[[917,769]],905:[[919,769]],906:[[921,769]],908:[[927,769]],910:[[933,769]],911:[[937,769]],912:[[970,769]],913:[,,{768:8122,769:902,772:8121,774:8120,787:7944,788:7945,837:8124}],917:[,,{768:8136,769:904,787:7960,788:7961}],919:[,,{768:8138,769:905,787:7976,788:7977,837:8140}],921:[,,{768:8154,769:906,772:8153,774:8152,776:938,787:7992,788:7993}],927:[,,{768:8184,769:908,787:8008,788:8009}],929:[,,{788:8172}],933:[,,{768:8170,769:910,772:8169,774:8168,776:939,788:8025}],937:[,,{768:8186,769:911,787:8040,788:8041,837:8188}],938:[[921,776]],939:[[933,776]],940:[[945,769],,{837:8116}],941:[[949,769]],942:[[951,769],,{837:8132}],943:[[953,769]],944:[[971,769]],945:[,,{768:8048,769:940,772:8113,774:8112,787:7936,788:7937,834:8118,837:8115}],949:[,,{768:8050,769:941,787:7952,788:7953}],951:[,,{768:8052,769:942,787:7968,788:7969,834:8134,837:8131}],953:[,,{768:8054,769:943,772:8145,774:8144,776:970,787:7984,788:7985,834:8150}],959:[,,{768:8056,769:972,787:8000,788:8001}],961:[,,{787:8164,788:8165}],965:[,,{768:8058,769:973,772:8161,774:8160,776:971,787:8016,788:8017,834:8166}],969:[,,{768:8060,769:974,787:8032,788:8033,834:8182,837:8179}],970:[[953,776],,{768:8146,769:912,834:8151}],971:[[965,776],,{768:8162,769:944,834:8167}],972:[[959,769]],973:[[965,769]],974:[[969,769],,{837:8180}],976:[[946],256],977:[[952],256],978:[[933],256,{769:979,776:980}],979:[[978,769]],980:[[978,776]],981:[[966],256],982:[[960],256],1008:[[954],256],1009:[[961],256],1010:[[962],256],1012:[[920],256],1013:[[949],256],1017:[[931],256],66422:[,230],66423:[,230],66424:[,230],66425:[,230],66426:[,230]},
6927 1024:{1024:[[1045,768]],1025:[[1045,776]],1027:[[1043,769]],1030:[,,{776:1031}],1031:[[1030,776]],1036:[[1050,769]],1037:[[1048,768]],1038:[[1059,774]],1040:[,,{774:1232,776:1234}],1043:[,,{769:1027}],1045:[,,{768:1024,774:1238,776:1025}],1046:[,,{774:1217,776:1244}],1047:[,,{776:1246}],1048:[,,{768:1037,772:1250,774:1049,776:1252}],1049:[[1048,774]],1050:[,,{769:1036}],1054:[,,{776:1254}],1059:[,,{772:1262,774:1038,776:1264,779:1266}],1063:[,,{776:1268}],1067:[,,{776:1272}],1069:[,,{776:1260}],1072:[,,{774:1233,776:1235}],1075:[,,{769:1107}],1077:[,,{768:1104,774:1239,776:1105}],1078:[,,{774:1218,776:1245}],1079:[,,{776:1247}],1080:[,,{768:1117,772:1251,774:1081,776:1253}],1081:[[1080,774]],1082:[,,{769:1116}],1086:[,,{776:1255}],1091:[,,{772:1263,774:1118,776:1265,779:1267}],1095:[,,{776:1269}],1099:[,,{776:1273}],1101:[,,{776:1261}],1104:[[1077,768]],1105:[[1077,776]],1107:[[1075,769]],1110:[,,{776:1111}],1111:[[1110,776]],1116:[[1082,769]],1117:[[1080,768]],1118:[[1091,774]],1140:[,,{783:1142}],1141:[,,{783:1143}],1142:[[1140,783]],1143:[[1141,783]],1155:[,230],1156:[,230],1157:[,230],1158:[,230],1159:[,230],1217:[[1046,774]],1218:[[1078,774]],1232:[[1040,774]],1233:[[1072,774]],1234:[[1040,776]],1235:[[1072,776]],1238:[[1045,774]],1239:[[1077,774]],1240:[,,{776:1242}],1241:[,,{776:1243}],1242:[[1240,776]],1243:[[1241,776]],1244:[[1046,776]],1245:[[1078,776]],1246:[[1047,776]],1247:[[1079,776]],1250:[[1048,772]],1251:[[1080,772]],1252:[[1048,776]],1253:[[1080,776]],1254:[[1054,776]],1255:[[1086,776]],1256:[,,{776:1258}],1257:[,,{776:1259}],1258:[[1256,776]],1259:[[1257,776]],1260:[[1069,776]],1261:[[1101,776]],1262:[[1059,772]],1263:[[1091,772]],1264:[[1059,776]],1265:[[1091,776]],1266:[[1059,779]],1267:[[1091,779]],1268:[[1063,776]],1269:[[1095,776]],1272:[[1067,776]],1273:[[1099,776]]},
6928 1280:{1415:[[1381,1410],256],1425:[,220],1426:[,230],1427:[,230],1428:[,230],1429:[,230],1430:[,220],1431:[,230],1432:[,230],1433:[,230],1434:[,222],1435:[,220],1436:[,230],1437:[,230],1438:[,230],1439:[,230],1440:[,230],1441:[,230],1442:[,220],1443:[,220],1444:[,220],1445:[,220],1446:[,220],1447:[,220],1448:[,230],1449:[,230],1450:[,220],1451:[,230],1452:[,230],1453:[,222],1454:[,228],1455:[,230],1456:[,10],1457:[,11],1458:[,12],1459:[,13],1460:[,14],1461:[,15],1462:[,16],1463:[,17],1464:[,18],1465:[,19],1466:[,19],1467:[,20],1468:[,21],1469:[,22],1471:[,23],1473:[,24],1474:[,25],1476:[,230],1477:[,220],1479:[,18]},
6929 1536:{1552:[,230],1553:[,230],1554:[,230],1555:[,230],1556:[,230],1557:[,230],1558:[,230],1559:[,230],1560:[,30],1561:[,31],1562:[,32],1570:[[1575,1619]],1571:[[1575,1620]],1572:[[1608,1620]],1573:[[1575,1621]],1574:[[1610,1620]],1575:[,,{1619:1570,1620:1571,1621:1573}],1608:[,,{1620:1572}],1610:[,,{1620:1574}],1611:[,27],1612:[,28],1613:[,29],1614:[,30],1615:[,31],1616:[,32],1617:[,33],1618:[,34],1619:[,230],1620:[,230],1621:[,220],1622:[,220],1623:[,230],1624:[,230],1625:[,230],1626:[,230],1627:[,230],1628:[,220],1629:[,230],1630:[,230],1631:[,220],1648:[,35],1653:[[1575,1652],256],1654:[[1608,1652],256],1655:[[1735,1652],256],1656:[[1610,1652],256],1728:[[1749,1620]],1729:[,,{1620:1730}],1730:[[1729,1620]],1746:[,,{1620:1747}],1747:[[1746,1620]],1749:[,,{1620:1728}],1750:[,230],1751:[,230],1752:[,230],1753:[,230],1754:[,230],1755:[,230],1756:[,230],1759:[,230],1760:[,230],1761:[,230],1762:[,230],1763:[,220],1764:[,230],1767:[,230],1768:[,230],1770:[,220],1771:[,230],1772:[,230],1773:[,220]},
6930 1792:{1809:[,36],1840:[,230],1841:[,220],1842:[,230],1843:[,230],1844:[,220],1845:[,230],1846:[,230],1847:[,220],1848:[,220],1849:[,220],1850:[,230],1851:[,220],1852:[,220],1853:[,230],1854:[,220],1855:[,230],1856:[,230],1857:[,230],1858:[,220],1859:[,230],1860:[,220],1861:[,230],1862:[,220],1863:[,230],1864:[,220],1865:[,230],1866:[,230],2027:[,230],2028:[,230],2029:[,230],2030:[,230],2031:[,230],2032:[,230],2033:[,230],2034:[,220],2035:[,230]},
6931 2048:{2070:[,230],2071:[,230],2072:[,230],2073:[,230],2075:[,230],2076:[,230],2077:[,230],2078:[,230],2079:[,230],2080:[,230],2081:[,230],2082:[,230],2083:[,230],2085:[,230],2086:[,230],2087:[,230],2089:[,230],2090:[,230],2091:[,230],2092:[,230],2093:[,230],2137:[,220],2138:[,220],2139:[,220],2276:[,230],2277:[,230],2278:[,220],2279:[,230],2280:[,230],2281:[,220],2282:[,230],2283:[,230],2284:[,230],2285:[,220],2286:[,220],2287:[,220],2288:[,27],2289:[,28],2290:[,29],2291:[,230],2292:[,230],2293:[,230],2294:[,220],2295:[,230],2296:[,230],2297:[,220],2298:[,220],2299:[,230],2300:[,230],2301:[,230],2302:[,230],2303:[,230]},
6932 2304:{2344:[,,{2364:2345}],2345:[[2344,2364]],2352:[,,{2364:2353}],2353:[[2352,2364]],2355:[,,{2364:2356}],2356:[[2355,2364]],2364:[,7],2381:[,9],2385:[,230],2386:[,220],2387:[,230],2388:[,230],2392:[[2325,2364],512],2393:[[2326,2364],512],2394:[[2327,2364],512],2395:[[2332,2364],512],2396:[[2337,2364],512],2397:[[2338,2364],512],2398:[[2347,2364],512],2399:[[2351,2364],512],2492:[,7],2503:[,,{2494:2507,2519:2508}],2507:[[2503,2494]],2508:[[2503,2519]],2509:[,9],2524:[[2465,2492],512],2525:[[2466,2492],512],2527:[[2479,2492],512]},
6933 2560:{2611:[[2610,2620],512],2614:[[2616,2620],512],2620:[,7],2637:[,9],2649:[[2582,2620],512],2650:[[2583,2620],512],2651:[[2588,2620],512],2654:[[2603,2620],512],2748:[,7],2765:[,9],68109:[,220],68111:[,230],68152:[,230],68153:[,1],68154:[,220],68159:[,9],68325:[,230],68326:[,220]},
6934 2816:{2876:[,7],2887:[,,{2878:2891,2902:2888,2903:2892}],2888:[[2887,2902]],2891:[[2887,2878]],2892:[[2887,2903]],2893:[,9],2908:[[2849,2876],512],2909:[[2850,2876],512],2962:[,,{3031:2964}],2964:[[2962,3031]],3014:[,,{3006:3018,3031:3020}],3015:[,,{3006:3019}],3018:[[3014,3006]],3019:[[3015,3006]],3020:[[3014,3031]],3021:[,9]},
6935 3072:{3142:[,,{3158:3144}],3144:[[3142,3158]],3149:[,9],3157:[,84],3158:[,91],3260:[,7],3263:[,,{3285:3264}],3264:[[3263,3285]],3270:[,,{3266:3274,3285:3271,3286:3272}],3271:[[3270,3285]],3272:[[3270,3286]],3274:[[3270,3266],,{3285:3275}],3275:[[3274,3285]],3277:[,9]},
6936 3328:{3398:[,,{3390:3402,3415:3404}],3399:[,,{3390:3403}],3402:[[3398,3390]],3403:[[3399,3390]],3404:[[3398,3415]],3405:[,9],3530:[,9],3545:[,,{3530:3546,3535:3548,3551:3550}],3546:[[3545,3530]],3548:[[3545,3535],,{3530:3549}],3549:[[3548,3530]],3550:[[3545,3551]]},
6937 3584:{3635:[[3661,3634],256],3640:[,103],3641:[,103],3642:[,9],3656:[,107],3657:[,107],3658:[,107],3659:[,107],3763:[[3789,3762],256],3768:[,118],3769:[,118],3784:[,122],3785:[,122],3786:[,122],3787:[,122],3804:[[3755,3737],256],3805:[[3755,3745],256]},
6938 3840:{3852:[[3851],256],3864:[,220],3865:[,220],3893:[,220],3895:[,220],3897:[,216],3907:[[3906,4023],512],3917:[[3916,4023],512],3922:[[3921,4023],512],3927:[[3926,4023],512],3932:[[3931,4023],512],3945:[[3904,4021],512],3953:[,129],3954:[,130],3955:[[3953,3954],512],3956:[,132],3957:[[3953,3956],512],3958:[[4018,3968],512],3959:[[4018,3969],256],3960:[[4019,3968],512],3961:[[4019,3969],256],3962:[,130],3963:[,130],3964:[,130],3965:[,130],3968:[,130],3969:[[3953,3968],512],3970:[,230],3971:[,230],3972:[,9],3974:[,230],3975:[,230],3987:[[3986,4023],512],3997:[[3996,4023],512],4002:[[4001,4023],512],4007:[[4006,4023],512],4012:[[4011,4023],512],4025:[[3984,4021],512],4038:[,220]},
6939 4096:{4133:[,,{4142:4134}],4134:[[4133,4142]],4151:[,7],4153:[,9],4154:[,9],4237:[,220],4348:[[4316],256],69702:[,9],69759:[,9],69785:[,,{69818:69786}],69786:[[69785,69818]],69787:[,,{69818:69788}],69788:[[69787,69818]],69797:[,,{69818:69803}],69803:[[69797,69818]],69817:[,9],69818:[,7]},
6940 4352:{69888:[,230],69889:[,230],69890:[,230],69934:[[69937,69927]],69935:[[69938,69927]],69937:[,,{69927:69934}],69938:[,,{69927:69935}],69939:[,9],69940:[,9],70003:[,7],70080:[,9]},
6941 4608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},
6942 4864:{4957:[,230],4958:[,230],4959:[,230],70460:[,7],70471:[,,{70462:70475,70487:70476}],70475:[[70471,70462]],70476:[[70471,70487]],70477:[,9],70502:[,230],70503:[,230],70504:[,230],70505:[,230],70506:[,230],70507:[,230],70508:[,230],70512:[,230],70513:[,230],70514:[,230],70515:[,230],70516:[,230]},
6943 5120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},
6944 5376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},
6945 5632:{71231:[,9],71350:[,9],71351:[,7]},
6946 5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
6947 6144:{6313:[,228]},
6948 6400:{6457:[,222],6458:[,230],6459:[,220]},
6949 6656:{6679:[,230],6680:[,220],6752:[,9],6773:[,230],6774:[,230],6775:[,230],6776:[,230],6777:[,230],6778:[,230],6779:[,230],6780:[,230],6783:[,220],6832:[,230],6833:[,230],6834:[,230],6835:[,230],6836:[,230],6837:[,220],6838:[,220],6839:[,220],6840:[,220],6841:[,220],6842:[,220],6843:[,230],6844:[,230],6845:[,220]},
6950 6912:{6917:[,,{6965:6918}],6918:[[6917,6965]],6919:[,,{6965:6920}],6920:[[6919,6965]],6921:[,,{6965:6922}],6922:[[6921,6965]],6923:[,,{6965:6924}],6924:[[6923,6965]],6925:[,,{6965:6926}],6926:[[6925,6965]],6929:[,,{6965:6930}],6930:[[6929,6965]],6964:[,7],6970:[,,{6965:6971}],6971:[[6970,6965]],6972:[,,{6965:6973}],6973:[[6972,6965]],6974:[,,{6965:6976}],6975:[,,{6965:6977}],6976:[[6974,6965]],6977:[[6975,6965]],6978:[,,{6965:6979}],6979:[[6978,6965]],6980:[,9],7019:[,230],7020:[,220],7021:[,230],7022:[,230],7023:[,230],7024:[,230],7025:[,230],7026:[,230],7027:[,230],7082:[,9],7083:[,9],7142:[,7],7154:[,9],7155:[,9]},
6951 7168:{7223:[,7],7376:[,230],7377:[,230],7378:[,230],7380:[,1],7381:[,220],7382:[,220],7383:[,220],7384:[,220],7385:[,220],7386:[,230],7387:[,230],7388:[,220],7389:[,220],7390:[,220],7391:[,220],7392:[,230],7394:[,1],7395:[,1],7396:[,1],7397:[,1],7398:[,1],7399:[,1],7400:[,1],7405:[,220],7412:[,230],7416:[,230],7417:[,230]},
6952 7424:{7468:[[65],256],7469:[[198],256],7470:[[66],256],7472:[[68],256],7473:[[69],256],7474:[[398],256],7475:[[71],256],7476:[[72],256],7477:[[73],256],7478:[[74],256],7479:[[75],256],7480:[[76],256],7481:[[77],256],7482:[[78],256],7484:[[79],256],7485:[[546],256],7486:[[80],256],7487:[[82],256],7488:[[84],256],7489:[[85],256],7490:[[87],256],7491:[[97],256],7492:[[592],256],7493:[[593],256],7494:[[7426],256],7495:[[98],256],7496:[[100],256],7497:[[101],256],7498:[[601],256],7499:[[603],256],7500:[[604],256],7501:[[103],256],7503:[[107],256],7504:[[109],256],7505:[[331],256],7506:[[111],256],7507:[[596],256],7508:[[7446],256],7509:[[7447],256],7510:[[112],256],7511:[[116],256],7512:[[117],256],7513:[[7453],256],7514:[[623],256],7515:[[118],256],7516:[[7461],256],7517:[[946],256],7518:[[947],256],7519:[[948],256],7520:[[966],256],7521:[[967],256],7522:[[105],256],7523:[[114],256],7524:[[117],256],7525:[[118],256],7526:[[946],256],7527:[[947],256],7528:[[961],256],7529:[[966],256],7530:[[967],256],7544:[[1085],256],7579:[[594],256],7580:[[99],256],7581:[[597],256],7582:[[240],256],7583:[[604],256],7584:[[102],256],7585:[[607],256],7586:[[609],256],7587:[[613],256],7588:[[616],256],7589:[[617],256],7590:[[618],256],7591:[[7547],256],7592:[[669],256],7593:[[621],256],7594:[[7557],256],7595:[[671],256],7596:[[625],256],7597:[[624],256],7598:[[626],256],7599:[[627],256],7600:[[628],256],7601:[[629],256],7602:[[632],256],7603:[[642],256],7604:[[643],256],7605:[[427],256],7606:[[649],256],7607:[[650],256],7608:[[7452],256],7609:[[651],256],7610:[[652],256],7611:[[122],256],7612:[[656],256],7613:[[657],256],7614:[[658],256],7615:[[952],256],7616:[,230],7617:[,230],7618:[,220],7619:[,230],7620:[,230],7621:[,230],7622:[,230],7623:[,230],7624:[,230],7625:[,230],7626:[,220],7627:[,230],7628:[,230],7629:[,234],7630:[,214],7631:[,220],7632:[,202],7633:[,230],7634:[,230],7635:[,230],7636:[,230],7637:[,230],7638:[,230],7639:[,230],7640:[,230],7641:[,230],7642:[,230],7643:[,230],7644:[,230],7645:[,230],7646:[,230],7647:[,230],7648:[,230],7649:[,230],7650:[,230],7651:[,230],7652:[,230],7653:[,230],7654:[,230],7655:[,230],7656:[,230],7657:[,230],7658:[,230],7659:[,230],7660:[,230],7661:[,230],7662:[,230],7663:[,230],7664:[,230],7665:[,230],7666:[,230],7667:[,230],7668:[,230],7669:[,230],7676:[,233],7677:[,220],7678:[,230],7679:[,220]},
6953 7680:{7680:[[65,805]],7681:[[97,805]],7682:[[66,775]],7683:[[98,775]],7684:[[66,803]],7685:[[98,803]],7686:[[66,817]],7687:[[98,817]],7688:[[199,769]],7689:[[231,769]],7690:[[68,775]],7691:[[100,775]],7692:[[68,803]],7693:[[100,803]],7694:[[68,817]],7695:[[100,817]],7696:[[68,807]],7697:[[100,807]],7698:[[68,813]],7699:[[100,813]],7700:[[274,768]],7701:[[275,768]],7702:[[274,769]],7703:[[275,769]],7704:[[69,813]],7705:[[101,813]],7706:[[69,816]],7707:[[101,816]],7708:[[552,774]],7709:[[553,774]],7710:[[70,775]],7711:[[102,775]],7712:[[71,772]],7713:[[103,772]],7714:[[72,775]],7715:[[104,775]],7716:[[72,803]],7717:[[104,803]],7718:[[72,776]],7719:[[104,776]],7720:[[72,807]],7721:[[104,807]],7722:[[72,814]],7723:[[104,814]],7724:[[73,816]],7725:[[105,816]],7726:[[207,769]],7727:[[239,769]],7728:[[75,769]],7729:[[107,769]],7730:[[75,803]],7731:[[107,803]],7732:[[75,817]],7733:[[107,817]],7734:[[76,803],,{772:7736}],7735:[[108,803],,{772:7737}],7736:[[7734,772]],7737:[[7735,772]],7738:[[76,817]],7739:[[108,817]],7740:[[76,813]],7741:[[108,813]],7742:[[77,769]],7743:[[109,769]],7744:[[77,775]],7745:[[109,775]],7746:[[77,803]],7747:[[109,803]],7748:[[78,775]],7749:[[110,775]],7750:[[78,803]],7751:[[110,803]],7752:[[78,817]],7753:[[110,817]],7754:[[78,813]],7755:[[110,813]],7756:[[213,769]],7757:[[245,769]],7758:[[213,776]],7759:[[245,776]],7760:[[332,768]],7761:[[333,768]],7762:[[332,769]],7763:[[333,769]],7764:[[80,769]],7765:[[112,769]],7766:[[80,775]],7767:[[112,775]],7768:[[82,775]],7769:[[114,775]],7770:[[82,803],,{772:7772}],7771:[[114,803],,{772:7773}],7772:[[7770,772]],7773:[[7771,772]],7774:[[82,817]],7775:[[114,817]],7776:[[83,775]],7777:[[115,775]],7778:[[83,803],,{775:7784}],7779:[[115,803],,{775:7785}],7780:[[346,775]],7781:[[347,775]],7782:[[352,775]],7783:[[353,775]],7784:[[7778,775]],7785:[[7779,775]],7786:[[84,775]],7787:[[116,775]],7788:[[84,803]],7789:[[116,803]],7790:[[84,817]],7791:[[116,817]],7792:[[84,813]],7793:[[116,813]],7794:[[85,804]],7795:[[117,804]],7796:[[85,816]],7797:[[117,816]],7798:[[85,813]],7799:[[117,813]],7800:[[360,769]],7801:[[361,769]],7802:[[362,776]],7803:[[363,776]],7804:[[86,771]],7805:[[118,771]],7806:[[86,803]],7807:[[118,803]],7808:[[87,768]],7809:[[119,768]],7810:[[87,769]],7811:[[119,769]],7812:[[87,776]],7813:[[119,776]],7814:[[87,775]],7815:[[119,775]],7816:[[87,803]],7817:[[119,803]],7818:[[88,775]],7819:[[120,775]],7820:[[88,776]],7821:[[120,776]],7822:[[89,775]],7823:[[121,775]],7824:[[90,770]],7825:[[122,770]],7826:[[90,803]],7827:[[122,803]],7828:[[90,817]],7829:[[122,817]],7830:[[104,817]],7831:[[116,776]],7832:[[119,778]],7833:[[121,778]],7834:[[97,702],256],7835:[[383,775]],7840:[[65,803],,{770:7852,774:7862}],7841:[[97,803],,{770:7853,774:7863}],7842:[[65,777]],7843:[[97,777]],7844:[[194,769]],7845:[[226,769]],7846:[[194,768]],7847:[[226,768]],7848:[[194,777]],7849:[[226,777]],7850:[[194,771]],7851:[[226,771]],7852:[[7840,770]],7853:[[7841,770]],7854:[[258,769]],7855:[[259,769]],7856:[[258,768]],7857:[[259,768]],7858:[[258,777]],7859:[[259,777]],7860:[[258,771]],7861:[[259,771]],7862:[[7840,774]],7863:[[7841,774]],7864:[[69,803],,{770:7878}],7865:[[101,803],,{770:7879}],7866:[[69,777]],7867:[[101,777]],7868:[[69,771]],7869:[[101,771]],7870:[[202,769]],7871:[[234,769]],7872:[[202,768]],7873:[[234,768]],7874:[[202,777]],7875:[[234,777]],7876:[[202,771]],7877:[[234,771]],7878:[[7864,770]],7879:[[7865,770]],7880:[[73,777]],7881:[[105,777]],7882:[[73,803]],7883:[[105,803]],7884:[[79,803],,{770:7896}],7885:[[111,803],,{770:7897}],7886:[[79,777]],7887:[[111,777]],7888:[[212,769]],7889:[[244,769]],7890:[[212,768]],7891:[[244,768]],7892:[[212,777]],7893:[[244,777]],7894:[[212,771]],7895:[[244,771]],7896:[[7884,770]],7897:[[7885,770]],7898:[[416,769]],7899:[[417,769]],7900:[[416,768]],7901:[[417,768]],7902:[[416,777]],7903:[[417,777]],7904:[[416,771]],7905:[[417,771]],7906:[[416,803]],7907:[[417,803]],7908:[[85,803]],7909:[[117,803]],7910:[[85,777]],7911:[[117,777]],7912:[[431,769]],7913:[[432,769]],7914:[[431,768]],7915:[[432,768]],7916:[[431,777]],7917:[[432,777]],7918:[[431,771]],7919:[[432,771]],7920:[[431,803]],7921:[[432,803]],7922:[[89,768]],7923:[[121,768]],7924:[[89,803]],7925:[[121,803]],7926:[[89,777]],7927:[[121,777]],7928:[[89,771]],7929:[[121,771]]},
6954 7936:{7936:[[945,787],,{768:7938,769:7940,834:7942,837:8064}],7937:[[945,788],,{768:7939,769:7941,834:7943,837:8065}],7938:[[7936,768],,{837:8066}],7939:[[7937,768],,{837:8067}],7940:[[7936,769],,{837:8068}],7941:[[7937,769],,{837:8069}],7942:[[7936,834],,{837:8070}],7943:[[7937,834],,{837:8071}],7944:[[913,787],,{768:7946,769:7948,834:7950,837:8072}],7945:[[913,788],,{768:7947,769:7949,834:7951,837:8073}],7946:[[7944,768],,{837:8074}],7947:[[7945,768],,{837:8075}],7948:[[7944,769],,{837:8076}],7949:[[7945,769],,{837:8077}],7950:[[7944,834],,{837:8078}],7951:[[7945,834],,{837:8079}],7952:[[949,787],,{768:7954,769:7956}],7953:[[949,788],,{768:7955,769:7957}],7954:[[7952,768]],7955:[[7953,768]],7956:[[7952,769]],7957:[[7953,769]],7960:[[917,787],,{768:7962,769:7964}],7961:[[917,788],,{768:7963,769:7965}],7962:[[7960,768]],7963:[[7961,768]],7964:[[7960,769]],7965:[[7961,769]],7968:[[951,787],,{768:7970,769:7972,834:7974,837:8080}],7969:[[951,788],,{768:7971,769:7973,834:7975,837:8081}],7970:[[7968,768],,{837:8082}],7971:[[7969,768],,{837:8083}],7972:[[7968,769],,{837:8084}],7973:[[7969,769],,{837:8085}],7974:[[7968,834],,{837:8086}],7975:[[7969,834],,{837:8087}],7976:[[919,787],,{768:7978,769:7980,834:7982,837:8088}],7977:[[919,788],,{768:7979,769:7981,834:7983,837:8089}],7978:[[7976,768],,{837:8090}],7979:[[7977,768],,{837:8091}],7980:[[7976,769],,{837:8092}],7981:[[7977,769],,{837:8093}],7982:[[7976,834],,{837:8094}],7983:[[7977,834],,{837:8095}],7984:[[953,787],,{768:7986,769:7988,834:7990}],7985:[[953,788],,{768:7987,769:7989,834:7991}],7986:[[7984,768]],7987:[[7985,768]],7988:[[7984,769]],7989:[[7985,769]],7990:[[7984,834]],7991:[[7985,834]],7992:[[921,787],,{768:7994,769:7996,834:7998}],7993:[[921,788],,{768:7995,769:7997,834:7999}],7994:[[7992,768]],7995:[[7993,768]],7996:[[7992,769]],7997:[[7993,769]],7998:[[7992,834]],7999:[[7993,834]],8000:[[959,787],,{768:8002,769:8004}],8001:[[959,788],,{768:8003,769:8005}],8002:[[8000,768]],8003:[[8001,768]],8004:[[8000,769]],8005:[[8001,769]],8008:[[927,787],,{768:8010,769:8012}],8009:[[927,788],,{768:8011,769:8013}],8010:[[8008,768]],8011:[[8009,768]],8012:[[8008,769]],8013:[[8009,769]],8016:[[965,787],,{768:8018,769:8020,834:8022}],8017:[[965,788],,{768:8019,769:8021,834:8023}],8018:[[8016,768]],8019:[[8017,768]],8020:[[8016,769]],8021:[[8017,769]],8022:[[8016,834]],8023:[[8017,834]],8025:[[933,788],,{768:8027,769:8029,834:8031}],8027:[[8025,768]],8029:[[8025,769]],8031:[[8025,834]],8032:[[969,787],,{768:8034,769:8036,834:8038,837:8096}],8033:[[969,788],,{768:8035,769:8037,834:8039,837:8097}],8034:[[8032,768],,{837:8098}],8035:[[8033,768],,{837:8099}],8036:[[8032,769],,{837:8100}],8037:[[8033,769],,{837:8101}],8038:[[8032,834],,{837:8102}],8039:[[8033,834],,{837:8103}],8040:[[937,787],,{768:8042,769:8044,834:8046,837:8104}],8041:[[937,788],,{768:8043,769:8045,834:8047,837:8105}],8042:[[8040,768],,{837:8106}],8043:[[8041,768],,{837:8107}],8044:[[8040,769],,{837:8108}],8045:[[8041,769],,{837:8109}],8046:[[8040,834],,{837:8110}],8047:[[8041,834],,{837:8111}],8048:[[945,768],,{837:8114}],8049:[[940]],8050:[[949,768]],8051:[[941]],8052:[[951,768],,{837:8130}],8053:[[942]],8054:[[953,768]],8055:[[943]],8056:[[959,768]],8057:[[972]],8058:[[965,768]],8059:[[973]],8060:[[969,768],,{837:8178}],8061:[[974]],8064:[[7936,837]],8065:[[7937,837]],8066:[[7938,837]],8067:[[7939,837]],8068:[[7940,837]],8069:[[7941,837]],8070:[[7942,837]],8071:[[7943,837]],8072:[[7944,837]],8073:[[7945,837]],8074:[[7946,837]],8075:[[7947,837]],8076:[[7948,837]],8077:[[7949,837]],8078:[[7950,837]],8079:[[7951,837]],8080:[[7968,837]],8081:[[7969,837]],8082:[[7970,837]],8083:[[7971,837]],8084:[[7972,837]],8085:[[7973,837]],8086:[[7974,837]],8087:[[7975,837]],8088:[[7976,837]],8089:[[7977,837]],8090:[[7978,837]],8091:[[7979,837]],8092:[[7980,837]],8093:[[7981,837]],8094:[[7982,837]],8095:[[7983,837]],8096:[[8032,837]],8097:[[8033,837]],8098:[[8034,837]],8099:[[8035,837]],8100:[[8036,837]],8101:[[8037,837]],8102:[[8038,837]],8103:[[8039,837]],8104:[[8040,837]],8105:[[8041,837]],8106:[[8042,837]],8107:[[8043,837]],8108:[[8044,837]],8109:[[8045,837]],8110:[[8046,837]],8111:[[8047,837]],8112:[[945,774]],8113:[[945,772]],8114:[[8048,837]],8115:[[945,837]],8116:[[940,837]],8118:[[945,834],,{837:8119}],8119:[[8118,837]],8120:[[913,774]],8121:[[913,772]],8122:[[913,768]],8123:[[902]],8124:[[913,837]],8125:[[32,787],256],8126:[[953]],8127:[[32,787],256,{768:8141,769:8142,834:8143}],8128:[[32,834],256],8129:[[168,834]],8130:[[8052,837]],8131:[[951,837]],8132:[[942,837]],8134:[[951,834],,{837:8135}],8135:[[8134,837]],8136:[[917,768]],8137:[[904]],8138:[[919,768]],8139:[[905]],8140:[[919,837]],8141:[[8127,768]],8142:[[8127,769]],8143:[[8127,834]],8144:[[953,774]],8145:[[953,772]],8146:[[970,768]],8147:[[912]],8150:[[953,834]],8151:[[970,834]],8152:[[921,774]],8153:[[921,772]],8154:[[921,768]],8155:[[906]],8157:[[8190,768]],8158:[[8190,769]],8159:[[8190,834]],8160:[[965,774]],8161:[[965,772]],8162:[[971,768]],8163:[[944]],8164:[[961,787]],8165:[[961,788]],8166:[[965,834]],8167:[[971,834]],8168:[[933,774]],8169:[[933,772]],8170:[[933,768]],8171:[[910]],8172:[[929,788]],8173:[[168,768]],8174:[[901]],8175:[[96]],8178:[[8060,837]],8179:[[969,837]],8180:[[974,837]],8182:[[969,834],,{837:8183}],8183:[[8182,837]],8184:[[927,768]],8185:[[908]],8186:[[937,768]],8187:[[911]],8188:[[937,837]],8189:[[180]],8190:[[32,788],256,{768:8157,769:8158,834:8159}]},
6955 8192:{8192:[[8194]],8193:[[8195]],8194:[[32],256],8195:[[32],256],8196:[[32],256],8197:[[32],256],8198:[[32],256],8199:[[32],256],8200:[[32],256],8201:[[32],256],8202:[[32],256],8209:[[8208],256],8215:[[32,819],256],8228:[[46],256],8229:[[46,46],256],8230:[[46,46,46],256],8239:[[32],256],8243:[[8242,8242],256],8244:[[8242,8242,8242],256],8246:[[8245,8245],256],8247:[[8245,8245,8245],256],8252:[[33,33],256],8254:[[32,773],256],8263:[[63,63],256],8264:[[63,33],256],8265:[[33,63],256],8279:[[8242,8242,8242,8242],256],8287:[[32],256],8304:[[48],256],8305:[[105],256],8308:[[52],256],8309:[[53],256],8310:[[54],256],8311:[[55],256],8312:[[56],256],8313:[[57],256],8314:[[43],256],8315:[[8722],256],8316:[[61],256],8317:[[40],256],8318:[[41],256],8319:[[110],256],8320:[[48],256],8321:[[49],256],8322:[[50],256],8323:[[51],256],8324:[[52],256],8325:[[53],256],8326:[[54],256],8327:[[55],256],8328:[[56],256],8329:[[57],256],8330:[[43],256],8331:[[8722],256],8332:[[61],256],8333:[[40],256],8334:[[41],256],8336:[[97],256],8337:[[101],256],8338:[[111],256],8339:[[120],256],8340:[[601],256],8341:[[104],256],8342:[[107],256],8343:[[108],256],8344:[[109],256],8345:[[110],256],8346:[[112],256],8347:[[115],256],8348:[[116],256],8360:[[82,115],256],8400:[,230],8401:[,230],8402:[,1],8403:[,1],8404:[,230],8405:[,230],8406:[,230],8407:[,230],8408:[,1],8409:[,1],8410:[,1],8411:[,230],8412:[,230],8417:[,230],8421:[,1],8422:[,1],8423:[,230],8424:[,220],8425:[,230],8426:[,1],8427:[,1],8428:[,220],8429:[,220],8430:[,220],8431:[,220],8432:[,230]},
6956 8448:{8448:[[97,47,99],256],8449:[[97,47,115],256],8450:[[67],256],8451:[[176,67],256],8453:[[99,47,111],256],8454:[[99,47,117],256],8455:[[400],256],8457:[[176,70],256],8458:[[103],256],8459:[[72],256],8460:[[72],256],8461:[[72],256],8462:[[104],256],8463:[[295],256],8464:[[73],256],8465:[[73],256],8466:[[76],256],8467:[[108],256],8469:[[78],256],8470:[[78,111],256],8473:[[80],256],8474:[[81],256],8475:[[82],256],8476:[[82],256],8477:[[82],256],8480:[[83,77],256],8481:[[84,69,76],256],8482:[[84,77],256],8484:[[90],256],8486:[[937]],8488:[[90],256],8490:[[75]],8491:[[197]],8492:[[66],256],8493:[[67],256],8495:[[101],256],8496:[[69],256],8497:[[70],256],8499:[[77],256],8500:[[111],256],8501:[[1488],256],8502:[[1489],256],8503:[[1490],256],8504:[[1491],256],8505:[[105],256],8507:[[70,65,88],256],8508:[[960],256],8509:[[947],256],8510:[[915],256],8511:[[928],256],8512:[[8721],256],8517:[[68],256],8518:[[100],256],8519:[[101],256],8520:[[105],256],8521:[[106],256],8528:[[49,8260,55],256],8529:[[49,8260,57],256],8530:[[49,8260,49,48],256],8531:[[49,8260,51],256],8532:[[50,8260,51],256],8533:[[49,8260,53],256],8534:[[50,8260,53],256],8535:[[51,8260,53],256],8536:[[52,8260,53],256],8537:[[49,8260,54],256],8538:[[53,8260,54],256],8539:[[49,8260,56],256],8540:[[51,8260,56],256],8541:[[53,8260,56],256],8542:[[55,8260,56],256],8543:[[49,8260],256],8544:[[73],256],8545:[[73,73],256],8546:[[73,73,73],256],8547:[[73,86],256],8548:[[86],256],8549:[[86,73],256],8550:[[86,73,73],256],8551:[[86,73,73,73],256],8552:[[73,88],256],8553:[[88],256],8554:[[88,73],256],8555:[[88,73,73],256],8556:[[76],256],8557:[[67],256],8558:[[68],256],8559:[[77],256],8560:[[105],256],8561:[[105,105],256],8562:[[105,105,105],256],8563:[[105,118],256],8564:[[118],256],8565:[[118,105],256],8566:[[118,105,105],256],8567:[[118,105,105,105],256],8568:[[105,120],256],8569:[[120],256],8570:[[120,105],256],8571:[[120,105,105],256],8572:[[108],256],8573:[[99],256],8574:[[100],256],8575:[[109],256],8585:[[48,8260,51],256],8592:[,,{824:8602}],8594:[,,{824:8603}],8596:[,,{824:8622}],8602:[[8592,824]],8603:[[8594,824]],8622:[[8596,824]],8653:[[8656,824]],8654:[[8660,824]],8655:[[8658,824]],8656:[,,{824:8653}],8658:[,,{824:8655}],8660:[,,{824:8654}]},
6957 8704:{8707:[,,{824:8708}],8708:[[8707,824]],8712:[,,{824:8713}],8713:[[8712,824]],8715:[,,{824:8716}],8716:[[8715,824]],8739:[,,{824:8740}],8740:[[8739,824]],8741:[,,{824:8742}],8742:[[8741,824]],8748:[[8747,8747],256],8749:[[8747,8747,8747],256],8751:[[8750,8750],256],8752:[[8750,8750,8750],256],8764:[,,{824:8769}],8769:[[8764,824]],8771:[,,{824:8772}],8772:[[8771,824]],8773:[,,{824:8775}],8775:[[8773,824]],8776:[,,{824:8777}],8777:[[8776,824]],8781:[,,{824:8813}],8800:[[61,824]],8801:[,,{824:8802}],8802:[[8801,824]],8804:[,,{824:8816}],8805:[,,{824:8817}],8813:[[8781,824]],8814:[[60,824]],8815:[[62,824]],8816:[[8804,824]],8817:[[8805,824]],8818:[,,{824:8820}],8819:[,,{824:8821}],8820:[[8818,824]],8821:[[8819,824]],8822:[,,{824:8824}],8823:[,,{824:8825}],8824:[[8822,824]],8825:[[8823,824]],8826:[,,{824:8832}],8827:[,,{824:8833}],8828:[,,{824:8928}],8829:[,,{824:8929}],8832:[[8826,824]],8833:[[8827,824]],8834:[,,{824:8836}],8835:[,,{824:8837}],8836:[[8834,824]],8837:[[8835,824]],8838:[,,{824:8840}],8839:[,,{824:8841}],8840:[[8838,824]],8841:[[8839,824]],8849:[,,{824:8930}],8850:[,,{824:8931}],8866:[,,{824:8876}],8872:[,,{824:8877}],8873:[,,{824:8878}],8875:[,,{824:8879}],8876:[[8866,824]],8877:[[8872,824]],8878:[[8873,824]],8879:[[8875,824]],8882:[,,{824:8938}],8883:[,,{824:8939}],8884:[,,{824:8940}],8885:[,,{824:8941}],8928:[[8828,824]],8929:[[8829,824]],8930:[[8849,824]],8931:[[8850,824]],8938:[[8882,824]],8939:[[8883,824]],8940:[[8884,824]],8941:[[8885,824]]},
6958 8960:{9001:[[12296]],9002:[[12297]]},
6959 9216:{9312:[[49],256],9313:[[50],256],9314:[[51],256],9315:[[52],256],9316:[[53],256],9317:[[54],256],9318:[[55],256],9319:[[56],256],9320:[[57],256],9321:[[49,48],256],9322:[[49,49],256],9323:[[49,50],256],9324:[[49,51],256],9325:[[49,52],256],9326:[[49,53],256],9327:[[49,54],256],9328:[[49,55],256],9329:[[49,56],256],9330:[[49,57],256],9331:[[50,48],256],9332:[[40,49,41],256],9333:[[40,50,41],256],9334:[[40,51,41],256],9335:[[40,52,41],256],9336:[[40,53,41],256],9337:[[40,54,41],256],9338:[[40,55,41],256],9339:[[40,56,41],256],9340:[[40,57,41],256],9341:[[40,49,48,41],256],9342:[[40,49,49,41],256],9343:[[40,49,50,41],256],9344:[[40,49,51,41],256],9345:[[40,49,52,41],256],9346:[[40,49,53,41],256],9347:[[40,49,54,41],256],9348:[[40,49,55,41],256],9349:[[40,49,56,41],256],9350:[[40,49,57,41],256],9351:[[40,50,48,41],256],9352:[[49,46],256],9353:[[50,46],256],9354:[[51,46],256],9355:[[52,46],256],9356:[[53,46],256],9357:[[54,46],256],9358:[[55,46],256],9359:[[56,46],256],9360:[[57,46],256],9361:[[49,48,46],256],9362:[[49,49,46],256],9363:[[49,50,46],256],9364:[[49,51,46],256],9365:[[49,52,46],256],9366:[[49,53,46],256],9367:[[49,54,46],256],9368:[[49,55,46],256],9369:[[49,56,46],256],9370:[[49,57,46],256],9371:[[50,48,46],256],9372:[[40,97,41],256],9373:[[40,98,41],256],9374:[[40,99,41],256],9375:[[40,100,41],256],9376:[[40,101,41],256],9377:[[40,102,41],256],9378:[[40,103,41],256],9379:[[40,104,41],256],9380:[[40,105,41],256],9381:[[40,106,41],256],9382:[[40,107,41],256],9383:[[40,108,41],256],9384:[[40,109,41],256],9385:[[40,110,41],256],9386:[[40,111,41],256],9387:[[40,112,41],256],9388:[[40,113,41],256],9389:[[40,114,41],256],9390:[[40,115,41],256],9391:[[40,116,41],256],9392:[[40,117,41],256],9393:[[40,118,41],256],9394:[[40,119,41],256],9395:[[40,120,41],256],9396:[[40,121,41],256],9397:[[40,122,41],256],9398:[[65],256],9399:[[66],256],9400:[[67],256],9401:[[68],256],9402:[[69],256],9403:[[70],256],9404:[[71],256],9405:[[72],256],9406:[[73],256],9407:[[74],256],9408:[[75],256],9409:[[76],256],9410:[[77],256],9411:[[78],256],9412:[[79],256],9413:[[80],256],9414:[[81],256],9415:[[82],256],9416:[[83],256],9417:[[84],256],9418:[[85],256],9419:[[86],256],9420:[[87],256],9421:[[88],256],9422:[[89],256],9423:[[90],256],9424:[[97],256],9425:[[98],256],9426:[[99],256],9427:[[100],256],9428:[[101],256],9429:[[102],256],9430:[[103],256],9431:[[104],256],9432:[[105],256],9433:[[106],256],9434:[[107],256],9435:[[108],256],9436:[[109],256],9437:[[110],256],9438:[[111],256],9439:[[112],256],9440:[[113],256],9441:[[114],256],9442:[[115],256],9443:[[116],256],9444:[[117],256],9445:[[118],256],9446:[[119],256],9447:[[120],256],9448:[[121],256],9449:[[122],256],9450:[[48],256]},
6960 10752:{10764:[[8747,8747,8747,8747],256],10868:[[58,58,61],256],10869:[[61,61],256],10870:[[61,61,61],256],10972:[[10973,824],512]},
6961 11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
6962 11520:{11631:[[11617],256],11647:[,9],11744:[,230],11745:[,230],11746:[,230],11747:[,230],11748:[,230],11749:[,230],11750:[,230],11751:[,230],11752:[,230],11753:[,230],11754:[,230],11755:[,230],11756:[,230],11757:[,230],11758:[,230],11759:[,230],11760:[,230],11761:[,230],11762:[,230],11763:[,230],11764:[,230],11765:[,230],11766:[,230],11767:[,230],11768:[,230],11769:[,230],11770:[,230],11771:[,230],11772:[,230],11773:[,230],11774:[,230],11775:[,230]},
6963 11776:{11935:[[27597],256],12019:[[40863],256]},
6964 12032:{12032:[[19968],256],12033:[[20008],256],12034:[[20022],256],12035:[[20031],256],12036:[[20057],256],12037:[[20101],256],12038:[[20108],256],12039:[[20128],256],12040:[[20154],256],12041:[[20799],256],12042:[[20837],256],12043:[[20843],256],12044:[[20866],256],12045:[[20886],256],12046:[[20907],256],12047:[[20960],256],12048:[[20981],256],12049:[[20992],256],12050:[[21147],256],12051:[[21241],256],12052:[[21269],256],12053:[[21274],256],12054:[[21304],256],12055:[[21313],256],12056:[[21340],256],12057:[[21353],256],12058:[[21378],256],12059:[[21430],256],12060:[[21448],256],12061:[[21475],256],12062:[[22231],256],12063:[[22303],256],12064:[[22763],256],12065:[[22786],256],12066:[[22794],256],12067:[[22805],256],12068:[[22823],256],12069:[[22899],256],12070:[[23376],256],12071:[[23424],256],12072:[[23544],256],12073:[[23567],256],12074:[[23586],256],12075:[[23608],256],12076:[[23662],256],12077:[[23665],256],12078:[[24027],256],12079:[[24037],256],12080:[[24049],256],12081:[[24062],256],12082:[[24178],256],12083:[[24186],256],12084:[[24191],256],12085:[[24308],256],12086:[[24318],256],12087:[[24331],256],12088:[[24339],256],12089:[[24400],256],12090:[[24417],256],12091:[[24435],256],12092:[[24515],256],12093:[[25096],256],12094:[[25142],256],12095:[[25163],256],12096:[[25903],256],12097:[[25908],256],12098:[[25991],256],12099:[[26007],256],12100:[[26020],256],12101:[[26041],256],12102:[[26080],256],12103:[[26085],256],12104:[[26352],256],12105:[[26376],256],12106:[[26408],256],12107:[[27424],256],12108:[[27490],256],12109:[[27513],256],12110:[[27571],256],12111:[[27595],256],12112:[[27604],256],12113:[[27611],256],12114:[[27663],256],12115:[[27668],256],12116:[[27700],256],12117:[[28779],256],12118:[[29226],256],12119:[[29238],256],12120:[[29243],256],12121:[[29247],256],12122:[[29255],256],12123:[[29273],256],12124:[[29275],256],12125:[[29356],256],12126:[[29572],256],12127:[[29577],256],12128:[[29916],256],12129:[[29926],256],12130:[[29976],256],12131:[[29983],256],12132:[[29992],256],12133:[[30000],256],12134:[[30091],256],12135:[[30098],256],12136:[[30326],256],12137:[[30333],256],12138:[[30382],256],12139:[[30399],256],12140:[[30446],256],12141:[[30683],256],12142:[[30690],256],12143:[[30707],256],12144:[[31034],256],12145:[[31160],256],12146:[[31166],256],12147:[[31348],256],12148:[[31435],256],12149:[[31481],256],12150:[[31859],256],12151:[[31992],256],12152:[[32566],256],12153:[[32593],256],12154:[[32650],256],12155:[[32701],256],12156:[[32769],256],12157:[[32780],256],12158:[[32786],256],12159:[[32819],256],12160:[[32895],256],12161:[[32905],256],12162:[[33251],256],12163:[[33258],256],12164:[[33267],256],12165:[[33276],256],12166:[[33292],256],12167:[[33307],256],12168:[[33311],256],12169:[[33390],256],12170:[[33394],256],12171:[[33400],256],12172:[[34381],256],12173:[[34411],256],12174:[[34880],256],12175:[[34892],256],12176:[[34915],256],12177:[[35198],256],12178:[[35211],256],12179:[[35282],256],12180:[[35328],256],12181:[[35895],256],12182:[[35910],256],12183:[[35925],256],12184:[[35960],256],12185:[[35997],256],12186:[[36196],256],12187:[[36208],256],12188:[[36275],256],12189:[[36523],256],12190:[[36554],256],12191:[[36763],256],12192:[[36784],256],12193:[[36789],256],12194:[[37009],256],12195:[[37193],256],12196:[[37318],256],12197:[[37324],256],12198:[[37329],256],12199:[[38263],256],12200:[[38272],256],12201:[[38428],256],12202:[[38582],256],12203:[[38585],256],12204:[[38632],256],12205:[[38737],256],12206:[[38750],256],12207:[[38754],256],12208:[[38761],256],12209:[[38859],256],12210:[[38893],256],12211:[[38899],256],12212:[[38913],256],12213:[[39080],256],12214:[[39131],256],12215:[[39135],256],12216:[[39318],256],12217:[[39321],256],12218:[[39340],256],12219:[[39592],256],12220:[[39640],256],12221:[[39647],256],12222:[[39717],256],12223:[[39727],256],12224:[[39730],256],12225:[[39740],256],12226:[[39770],256],12227:[[40165],256],12228:[[40565],256],12229:[[40575],256],12230:[[40613],256],12231:[[40635],256],12232:[[40643],256],12233:[[40653],256],12234:[[40657],256],12235:[[40697],256],12236:[[40701],256],12237:[[40718],256],12238:[[40723],256],12239:[[40736],256],12240:[[40763],256],12241:[[40778],256],12242:[[40786],256],12243:[[40845],256],12244:[[40860],256],12245:[[40864],256]},
6965 12288:{12288:[[32],256],12330:[,218],12331:[,228],12332:[,232],12333:[,222],12334:[,224],12335:[,224],12342:[[12306],256],12344:[[21313],256],12345:[[21316],256],12346:[[21317],256],12358:[,,{12441:12436}],12363:[,,{12441:12364}],12364:[[12363,12441]],12365:[,,{12441:12366}],12366:[[12365,12441]],12367:[,,{12441:12368}],12368:[[12367,12441]],12369:[,,{12441:12370}],12370:[[12369,12441]],12371:[,,{12441:12372}],12372:[[12371,12441]],12373:[,,{12441:12374}],12374:[[12373,12441]],12375:[,,{12441:12376}],12376:[[12375,12441]],12377:[,,{12441:12378}],12378:[[12377,12441]],12379:[,,{12441:12380}],12380:[[12379,12441]],12381:[,,{12441:12382}],12382:[[12381,12441]],12383:[,,{12441:12384}],12384:[[12383,12441]],12385:[,,{12441:12386}],12386:[[12385,12441]],12388:[,,{12441:12389}],12389:[[12388,12441]],12390:[,,{12441:12391}],12391:[[12390,12441]],12392:[,,{12441:12393}],12393:[[12392,12441]],12399:[,,{12441:12400,12442:12401}],12400:[[12399,12441]],12401:[[12399,12442]],12402:[,,{12441:12403,12442:12404}],12403:[[12402,12441]],12404:[[12402,12442]],12405:[,,{12441:12406,12442:12407}],12406:[[12405,12441]],12407:[[12405,12442]],12408:[,,{12441:12409,12442:12410}],12409:[[12408,12441]],12410:[[12408,12442]],12411:[,,{12441:12412,12442:12413}],12412:[[12411,12441]],12413:[[12411,12442]],12436:[[12358,12441]],12441:[,8],12442:[,8],12443:[[32,12441],256],12444:[[32,12442],256],12445:[,,{12441:12446}],12446:[[12445,12441]],12447:[[12424,12426],256],12454:[,,{12441:12532}],12459:[,,{12441:12460}],12460:[[12459,12441]],12461:[,,{12441:12462}],12462:[[12461,12441]],12463:[,,{12441:12464}],12464:[[12463,12441]],12465:[,,{12441:12466}],12466:[[12465,12441]],12467:[,,{12441:12468}],12468:[[12467,12441]],12469:[,,{12441:12470}],12470:[[12469,12441]],12471:[,,{12441:12472}],12472:[[12471,12441]],12473:[,,{12441:12474}],12474:[[12473,12441]],12475:[,,{12441:12476}],12476:[[12475,12441]],12477:[,,{12441:12478}],12478:[[12477,12441]],12479:[,,{12441:12480}],12480:[[12479,12441]],12481:[,,{12441:12482}],12482:[[12481,12441]],12484:[,,{12441:12485}],12485:[[12484,12441]],12486:[,,{12441:12487}],12487:[[12486,12441]],12488:[,,{12441:12489}],12489:[[12488,12441]],12495:[,,{12441:12496,12442:12497}],12496:[[12495,12441]],12497:[[12495,12442]],12498:[,,{12441:12499,12442:12500}],12499:[[12498,12441]],12500:[[12498,12442]],12501:[,,{12441:12502,12442:12503}],12502:[[12501,12441]],12503:[[12501,12442]],12504:[,,{12441:12505,12442:12506}],12505:[[12504,12441]],12506:[[12504,12442]],12507:[,,{12441:12508,12442:12509}],12508:[[12507,12441]],12509:[[12507,12442]],12527:[,,{12441:12535}],12528:[,,{12441:12536}],12529:[,,{12441:12537}],12530:[,,{12441:12538}],12532:[[12454,12441]],12535:[[12527,12441]],12536:[[12528,12441]],12537:[[12529,12441]],12538:[[12530,12441]],12541:[,,{12441:12542}],12542:[[12541,12441]],12543:[[12467,12488],256]},
6966 12544:{12593:[[4352],256],12594:[[4353],256],12595:[[4522],256],12596:[[4354],256],12597:[[4524],256],12598:[[4525],256],12599:[[4355],256],12600:[[4356],256],12601:[[4357],256],12602:[[4528],256],12603:[[4529],256],12604:[[4530],256],12605:[[4531],256],12606:[[4532],256],12607:[[4533],256],12608:[[4378],256],12609:[[4358],256],12610:[[4359],256],12611:[[4360],256],12612:[[4385],256],12613:[[4361],256],12614:[[4362],256],12615:[[4363],256],12616:[[4364],256],12617:[[4365],256],12618:[[4366],256],12619:[[4367],256],12620:[[4368],256],12621:[[4369],256],12622:[[4370],256],12623:[[4449],256],12624:[[4450],256],12625:[[4451],256],12626:[[4452],256],12627:[[4453],256],12628:[[4454],256],12629:[[4455],256],12630:[[4456],256],12631:[[4457],256],12632:[[4458],256],12633:[[4459],256],12634:[[4460],256],12635:[[4461],256],12636:[[4462],256],12637:[[4463],256],12638:[[4464],256],12639:[[4465],256],12640:[[4466],256],12641:[[4467],256],12642:[[4468],256],12643:[[4469],256],12644:[[4448],256],12645:[[4372],256],12646:[[4373],256],12647:[[4551],256],12648:[[4552],256],12649:[[4556],256],12650:[[4558],256],12651:[[4563],256],12652:[[4567],256],12653:[[4569],256],12654:[[4380],256],12655:[[4573],256],12656:[[4575],256],12657:[[4381],256],12658:[[4382],256],12659:[[4384],256],12660:[[4386],256],12661:[[4387],256],12662:[[4391],256],12663:[[4393],256],12664:[[4395],256],12665:[[4396],256],12666:[[4397],256],12667:[[4398],256],12668:[[4399],256],12669:[[4402],256],12670:[[4406],256],12671:[[4416],256],12672:[[4423],256],12673:[[4428],256],12674:[[4593],256],12675:[[4594],256],12676:[[4439],256],12677:[[4440],256],12678:[[4441],256],12679:[[4484],256],12680:[[4485],256],12681:[[4488],256],12682:[[4497],256],12683:[[4498],256],12684:[[4500],256],12685:[[4510],256],12686:[[4513],256],12690:[[19968],256],12691:[[20108],256],12692:[[19977],256],12693:[[22235],256],12694:[[19978],256],12695:[[20013],256],12696:[[19979],256],12697:[[30002],256],12698:[[20057],256],12699:[[19993],256],12700:[[19969],256],12701:[[22825],256],12702:[[22320],256],12703:[[20154],256]},
6967 12800:{12800:[[40,4352,41],256],12801:[[40,4354,41],256],12802:[[40,4355,41],256],12803:[[40,4357,41],256],12804:[[40,4358,41],256],12805:[[40,4359,41],256],12806:[[40,4361,41],256],12807:[[40,4363,41],256],12808:[[40,4364,41],256],12809:[[40,4366,41],256],12810:[[40,4367,41],256],12811:[[40,4368,41],256],12812:[[40,4369,41],256],12813:[[40,4370,41],256],12814:[[40,4352,4449,41],256],12815:[[40,4354,4449,41],256],12816:[[40,4355,4449,41],256],12817:[[40,4357,4449,41],256],12818:[[40,4358,4449,41],256],12819:[[40,4359,4449,41],256],12820:[[40,4361,4449,41],256],12821:[[40,4363,4449,41],256],12822:[[40,4364,4449,41],256],12823:[[40,4366,4449,41],256],12824:[[40,4367,4449,41],256],12825:[[40,4368,4449,41],256],12826:[[40,4369,4449,41],256],12827:[[40,4370,4449,41],256],12828:[[40,4364,4462,41],256],12829:[[40,4363,4457,4364,4453,4523,41],256],12830:[[40,4363,4457,4370,4462,41],256],12832:[[40,19968,41],256],12833:[[40,20108,41],256],12834:[[40,19977,41],256],12835:[[40,22235,41],256],12836:[[40,20116,41],256],12837:[[40,20845,41],256],12838:[[40,19971,41],256],12839:[[40,20843,41],256],12840:[[40,20061,41],256],12841:[[40,21313,41],256],12842:[[40,26376,41],256],12843:[[40,28779,41],256],12844:[[40,27700,41],256],12845:[[40,26408,41],256],12846:[[40,37329,41],256],12847:[[40,22303,41],256],12848:[[40,26085,41],256],12849:[[40,26666,41],256],12850:[[40,26377,41],256],12851:[[40,31038,41],256],12852:[[40,21517,41],256],12853:[[40,29305,41],256],12854:[[40,36001,41],256],12855:[[40,31069,41],256],12856:[[40,21172,41],256],12857:[[40,20195,41],256],12858:[[40,21628,41],256],12859:[[40,23398,41],256],12860:[[40,30435,41],256],12861:[[40,20225,41],256],12862:[[40,36039,41],256],12863:[[40,21332,41],256],12864:[[40,31085,41],256],12865:[[40,20241,41],256],12866:[[40,33258,41],256],12867:[[40,33267,41],256],12868:[[21839],256],12869:[[24188],256],12870:[[25991],256],12871:[[31631],256],12880:[[80,84,69],256],12881:[[50,49],256],12882:[[50,50],256],12883:[[50,51],256],12884:[[50,52],256],12885:[[50,53],256],12886:[[50,54],256],12887:[[50,55],256],12888:[[50,56],256],12889:[[50,57],256],12890:[[51,48],256],12891:[[51,49],256],12892:[[51,50],256],12893:[[51,51],256],12894:[[51,52],256],12895:[[51,53],256],12896:[[4352],256],12897:[[4354],256],12898:[[4355],256],12899:[[4357],256],12900:[[4358],256],12901:[[4359],256],12902:[[4361],256],12903:[[4363],256],12904:[[4364],256],12905:[[4366],256],12906:[[4367],256],12907:[[4368],256],12908:[[4369],256],12909:[[4370],256],12910:[[4352,4449],256],12911:[[4354,4449],256],12912:[[4355,4449],256],12913:[[4357,4449],256],12914:[[4358,4449],256],12915:[[4359,4449],256],12916:[[4361,4449],256],12917:[[4363,4449],256],12918:[[4364,4449],256],12919:[[4366,4449],256],12920:[[4367,4449],256],12921:[[4368,4449],256],12922:[[4369,4449],256],12923:[[4370,4449],256],12924:[[4366,4449,4535,4352,4457],256],12925:[[4364,4462,4363,4468],256],12926:[[4363,4462],256],12928:[[19968],256],12929:[[20108],256],12930:[[19977],256],12931:[[22235],256],12932:[[20116],256],12933:[[20845],256],12934:[[19971],256],12935:[[20843],256],12936:[[20061],256],12937:[[21313],256],12938:[[26376],256],12939:[[28779],256],12940:[[27700],256],12941:[[26408],256],12942:[[37329],256],12943:[[22303],256],12944:[[26085],256],12945:[[26666],256],12946:[[26377],256],12947:[[31038],256],12948:[[21517],256],12949:[[29305],256],12950:[[36001],256],12951:[[31069],256],12952:[[21172],256],12953:[[31192],256],12954:[[30007],256],12955:[[22899],256],12956:[[36969],256],12957:[[20778],256],12958:[[21360],256],12959:[[27880],256],12960:[[38917],256],12961:[[20241],256],12962:[[20889],256],12963:[[27491],256],12964:[[19978],256],12965:[[20013],256],12966:[[19979],256],12967:[[24038],256],12968:[[21491],256],12969:[[21307],256],12970:[[23447],256],12971:[[23398],256],12972:[[30435],256],12973:[[20225],256],12974:[[36039],256],12975:[[21332],256],12976:[[22812],256],12977:[[51,54],256],12978:[[51,55],256],12979:[[51,56],256],12980:[[51,57],256],12981:[[52,48],256],12982:[[52,49],256],12983:[[52,50],256],12984:[[52,51],256],12985:[[52,52],256],12986:[[52,53],256],12987:[[52,54],256],12988:[[52,55],256],12989:[[52,56],256],12990:[[52,57],256],12991:[[53,48],256],12992:[[49,26376],256],12993:[[50,26376],256],12994:[[51,26376],256],12995:[[52,26376],256],12996:[[53,26376],256],12997:[[54,26376],256],12998:[[55,26376],256],12999:[[56,26376],256],13000:[[57,26376],256],13001:[[49,48,26376],256],13002:[[49,49,26376],256],13003:[[49,50,26376],256],13004:[[72,103],256],13005:[[101,114,103],256],13006:[[101,86],256],13007:[[76,84,68],256],13008:[[12450],256],13009:[[12452],256],13010:[[12454],256],13011:[[12456],256],13012:[[12458],256],13013:[[12459],256],13014:[[12461],256],13015:[[12463],256],13016:[[12465],256],13017:[[12467],256],13018:[[12469],256],13019:[[12471],256],13020:[[12473],256],13021:[[12475],256],13022:[[12477],256],13023:[[12479],256],13024:[[12481],256],13025:[[12484],256],13026:[[12486],256],13027:[[12488],256],13028:[[12490],256],13029:[[12491],256],13030:[[12492],256],13031:[[12493],256],13032:[[12494],256],13033:[[12495],256],13034:[[12498],256],13035:[[12501],256],13036:[[12504],256],13037:[[12507],256],13038:[[12510],256],13039:[[12511],256],13040:[[12512],256],13041:[[12513],256],13042:[[12514],256],13043:[[12516],256],13044:[[12518],256],13045:[[12520],256],13046:[[12521],256],13047:[[12522],256],13048:[[12523],256],13049:[[12524],256],13050:[[12525],256],13051:[[12527],256],13052:[[12528],256],13053:[[12529],256],13054:[[12530],256]},
6968 13056:{13056:[[12450,12497,12540,12488],256],13057:[[12450,12523,12501,12449],256],13058:[[12450,12531,12506,12450],256],13059:[[12450,12540,12523],256],13060:[[12452,12491,12531,12464],256],13061:[[12452,12531,12481],256],13062:[[12454,12457,12531],256],13063:[[12456,12473,12463,12540,12489],256],13064:[[12456,12540,12459,12540],256],13065:[[12458,12531,12473],256],13066:[[12458,12540,12512],256],13067:[[12459,12452,12522],256],13068:[[12459,12521,12483,12488],256],13069:[[12459,12525,12522,12540],256],13070:[[12460,12525,12531],256],13071:[[12460,12531,12510],256],13072:[[12462,12460],256],13073:[[12462,12491,12540],256],13074:[[12461,12517,12522,12540],256],13075:[[12462,12523,12480,12540],256],13076:[[12461,12525],256],13077:[[12461,12525,12464,12521,12512],256],13078:[[12461,12525,12513,12540,12488,12523],256],13079:[[12461,12525,12527,12483,12488],256],13080:[[12464,12521,12512],256],13081:[[12464,12521,12512,12488,12531],256],13082:[[12463,12523,12476,12452,12525],256],13083:[[12463,12525,12540,12493],256],13084:[[12465,12540,12473],256],13085:[[12467,12523,12490],256],13086:[[12467,12540,12509],256],13087:[[12469,12452,12463,12523],256],13088:[[12469,12531,12481,12540,12512],256],13089:[[12471,12522,12531,12464],256],13090:[[12475,12531,12481],256],13091:[[12475,12531,12488],256],13092:[[12480,12540,12473],256],13093:[[12487,12471],256],13094:[[12489,12523],256],13095:[[12488,12531],256],13096:[[12490,12494],256],13097:[[12494,12483,12488],256],13098:[[12495,12452,12484],256],13099:[[12497,12540,12475,12531,12488],256],13100:[[12497,12540,12484],256],13101:[[12496,12540,12524,12523],256],13102:[[12500,12450,12473,12488,12523],256],13103:[[12500,12463,12523],256],13104:[[12500,12467],256],13105:[[12499,12523],256],13106:[[12501,12449,12521,12483,12489],256],13107:[[12501,12451,12540,12488],256],13108:[[12502,12483,12471,12455,12523],256],13109:[[12501,12521,12531],256],13110:[[12504,12463,12479,12540,12523],256],13111:[[12506,12477],256],13112:[[12506,12491,12498],256],13113:[[12504,12523,12484],256],13114:[[12506,12531,12473],256],13115:[[12506,12540,12472],256],13116:[[12505,12540,12479],256],13117:[[12509,12452,12531,12488],256],13118:[[12508,12523,12488],256],13119:[[12507,12531],256],13120:[[12509,12531,12489],256],13121:[[12507,12540,12523],256],13122:[[12507,12540,12531],256],13123:[[12510,12452,12463,12525],256],13124:[[12510,12452,12523],256],13125:[[12510,12483,12495],256],13126:[[12510,12523,12463],256],13127:[[12510,12531,12471,12519,12531],256],13128:[[12511,12463,12525,12531],256],13129:[[12511,12522],256],13130:[[12511,12522,12496,12540,12523],256],13131:[[12513,12460],256],13132:[[12513,12460,12488,12531],256],13133:[[12513,12540,12488,12523],256],13134:[[12516,12540,12489],256],13135:[[12516,12540,12523],256],13136:[[12518,12450,12531],256],13137:[[12522,12483,12488,12523],256],13138:[[12522,12521],256],13139:[[12523,12500,12540],256],13140:[[12523,12540,12502,12523],256],13141:[[12524,12512],256],13142:[[12524,12531,12488,12466,12531],256],13143:[[12527,12483,12488],256],13144:[[48,28857],256],13145:[[49,28857],256],13146:[[50,28857],256],13147:[[51,28857],256],13148:[[52,28857],256],13149:[[53,28857],256],13150:[[54,28857],256],13151:[[55,28857],256],13152:[[56,28857],256],13153:[[57,28857],256],13154:[[49,48,28857],256],13155:[[49,49,28857],256],13156:[[49,50,28857],256],13157:[[49,51,28857],256],13158:[[49,52,28857],256],13159:[[49,53,28857],256],13160:[[49,54,28857],256],13161:[[49,55,28857],256],13162:[[49,56,28857],256],13163:[[49,57,28857],256],13164:[[50,48,28857],256],13165:[[50,49,28857],256],13166:[[50,50,28857],256],13167:[[50,51,28857],256],13168:[[50,52,28857],256],13169:[[104,80,97],256],13170:[[100,97],256],13171:[[65,85],256],13172:[[98,97,114],256],13173:[[111,86],256],13174:[[112,99],256],13175:[[100,109],256],13176:[[100,109,178],256],13177:[[100,109,179],256],13178:[[73,85],256],13179:[[24179,25104],256],13180:[[26157,21644],256],13181:[[22823,27491],256],13182:[[26126,27835],256],13183:[[26666,24335,20250,31038],256],13184:[[112,65],256],13185:[[110,65],256],13186:[[956,65],256],13187:[[109,65],256],13188:[[107,65],256],13189:[[75,66],256],13190:[[77,66],256],13191:[[71,66],256],13192:[[99,97,108],256],13193:[[107,99,97,108],256],13194:[[112,70],256],13195:[[110,70],256],13196:[[956,70],256],13197:[[956,103],256],13198:[[109,103],256],13199:[[107,103],256],13200:[[72,122],256],13201:[[107,72,122],256],13202:[[77,72,122],256],13203:[[71,72,122],256],13204:[[84,72,122],256],13205:[[956,8467],256],13206:[[109,8467],256],13207:[[100,8467],256],13208:[[107,8467],256],13209:[[102,109],256],13210:[[110,109],256],13211:[[956,109],256],13212:[[109,109],256],13213:[[99,109],256],13214:[[107,109],256],13215:[[109,109,178],256],13216:[[99,109,178],256],13217:[[109,178],256],13218:[[107,109,178],256],13219:[[109,109,179],256],13220:[[99,109,179],256],13221:[[109,179],256],13222:[[107,109,179],256],13223:[[109,8725,115],256],13224:[[109,8725,115,178],256],13225:[[80,97],256],13226:[[107,80,97],256],13227:[[77,80,97],256],13228:[[71,80,97],256],13229:[[114,97,100],256],13230:[[114,97,100,8725,115],256],13231:[[114,97,100,8725,115,178],256],13232:[[112,115],256],13233:[[110,115],256],13234:[[956,115],256],13235:[[109,115],256],13236:[[112,86],256],13237:[[110,86],256],13238:[[956,86],256],13239:[[109,86],256],13240:[[107,86],256],13241:[[77,86],256],13242:[[112,87],256],13243:[[110,87],256],13244:[[956,87],256],13245:[[109,87],256],13246:[[107,87],256],13247:[[77,87],256],13248:[[107,937],256],13249:[[77,937],256],13250:[[97,46,109,46],256],13251:[[66,113],256],13252:[[99,99],256],13253:[[99,100],256],13254:[[67,8725,107,103],256],13255:[[67,111,46],256],13256:[[100,66],256],13257:[[71,121],256],13258:[[104,97],256],13259:[[72,80],256],13260:[[105,110],256],13261:[[75,75],256],13262:[[75,77],256],13263:[[107,116],256],13264:[[108,109],256],13265:[[108,110],256],13266:[[108,111,103],256],13267:[[108,120],256],13268:[[109,98],256],13269:[[109,105,108],256],13270:[[109,111,108],256],13271:[[80,72],256],13272:[[112,46,109,46],256],13273:[[80,80,77],256],13274:[[80,82],256],13275:[[115,114],256],13276:[[83,118],256],13277:[[87,98],256],13278:[[86,8725,109],256],13279:[[65,8725,109],256],13280:[[49,26085],256],13281:[[50,26085],256],13282:[[51,26085],256],13283:[[52,26085],256],13284:[[53,26085],256],13285:[[54,26085],256],13286:[[55,26085],256],13287:[[56,26085],256],13288:[[57,26085],256],13289:[[49,48,26085],256],13290:[[49,49,26085],256],13291:[[49,50,26085],256],13292:[[49,51,26085],256],13293:[[49,52,26085],256],13294:[[49,53,26085],256],13295:[[49,54,26085],256],13296:[[49,55,26085],256],13297:[[49,56,26085],256],13298:[[49,57,26085],256],13299:[[50,48,26085],256],13300:[[50,49,26085],256],13301:[[50,50,26085],256],13302:[[50,51,26085],256],13303:[[50,52,26085],256],13304:[[50,53,26085],256],13305:[[50,54,26085],256],13306:[[50,55,26085],256],13307:[[50,56,26085],256],13308:[[50,57,26085],256],13309:[[51,48,26085],256],13310:[[51,49,26085],256],13311:[[103,97,108],256]},
6969 27136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},
6970 27392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},
6971 42496:{42607:[,230],42612:[,230],42613:[,230],42614:[,230],42615:[,230],42616:[,230],42617:[,230],42618:[,230],42619:[,230],42620:[,230],42621:[,230],42652:[[1098],256],42653:[[1100],256],42655:[,230],42736:[,230],42737:[,230]},
6972 42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
6973 43008:{43014:[,9],43204:[,9],43232:[,230],43233:[,230],43234:[,230],43235:[,230],43236:[,230],43237:[,230],43238:[,230],43239:[,230],43240:[,230],43241:[,230],43242:[,230],43243:[,230],43244:[,230],43245:[,230],43246:[,230],43247:[,230],43248:[,230],43249:[,230]},
6974 43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
6975 43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
6976 43776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},
6977 48128:{113822:[,1]},
6978 53504:{119134:[[119127,119141],512],119135:[[119128,119141],512],119136:[[119135,119150],512],119137:[[119135,119151],512],119138:[[119135,119152],512],119139:[[119135,119153],512],119140:[[119135,119154],512],119141:[,216],119142:[,216],119143:[,1],119144:[,1],119145:[,1],119149:[,226],119150:[,216],119151:[,216],119152:[,216],119153:[,216],119154:[,216],119163:[,220],119164:[,220],119165:[,220],119166:[,220],119167:[,220],119168:[,220],119169:[,220],119170:[,220],119173:[,230],119174:[,230],119175:[,230],119176:[,230],119177:[,230],119178:[,220],119179:[,220],119210:[,230],119211:[,230],119212:[,230],119213:[,230],119227:[[119225,119141],512],119228:[[119226,119141],512],119229:[[119227,119150],512],119230:[[119228,119150],512],119231:[[119227,119151],512],119232:[[119228,119151],512]},
6979 53760:{119362:[,230],119363:[,230],119364:[,230]},
6980 54272:{119808:[[65],256],119809:[[66],256],119810:[[67],256],119811:[[68],256],119812:[[69],256],119813:[[70],256],119814:[[71],256],119815:[[72],256],119816:[[73],256],119817:[[74],256],119818:[[75],256],119819:[[76],256],119820:[[77],256],119821:[[78],256],119822:[[79],256],119823:[[80],256],119824:[[81],256],119825:[[82],256],119826:[[83],256],119827:[[84],256],119828:[[85],256],119829:[[86],256],119830:[[87],256],119831:[[88],256],119832:[[89],256],119833:[[90],256],119834:[[97],256],119835:[[98],256],119836:[[99],256],119837:[[100],256],119838:[[101],256],119839:[[102],256],119840:[[103],256],119841:[[104],256],119842:[[105],256],119843:[[106],256],119844:[[107],256],119845:[[108],256],119846:[[109],256],119847:[[110],256],119848:[[111],256],119849:[[112],256],119850:[[113],256],119851:[[114],256],119852:[[115],256],119853:[[116],256],119854:[[117],256],119855:[[118],256],119856:[[119],256],119857:[[120],256],119858:[[121],256],119859:[[122],256],119860:[[65],256],119861:[[66],256],119862:[[67],256],119863:[[68],256],119864:[[69],256],119865:[[70],256],119866:[[71],256],119867:[[72],256],119868:[[73],256],119869:[[74],256],119870:[[75],256],119871:[[76],256],119872:[[77],256],119873:[[78],256],119874:[[79],256],119875:[[80],256],119876:[[81],256],119877:[[82],256],119878:[[83],256],119879:[[84],256],119880:[[85],256],119881:[[86],256],119882:[[87],256],119883:[[88],256],119884:[[89],256],119885:[[90],256],119886:[[97],256],119887:[[98],256],119888:[[99],256],119889:[[100],256],119890:[[101],256],119891:[[102],256],119892:[[103],256],119894:[[105],256],119895:[[106],256],119896:[[107],256],119897:[[108],256],119898:[[109],256],119899:[[110],256],119900:[[111],256],119901:[[112],256],119902:[[113],256],119903:[[114],256],119904:[[115],256],119905:[[116],256],119906:[[117],256],119907:[[118],256],119908:[[119],256],119909:[[120],256],119910:[[121],256],119911:[[122],256],119912:[[65],256],119913:[[66],256],119914:[[67],256],119915:[[68],256],119916:[[69],256],119917:[[70],256],119918:[[71],256],119919:[[72],256],119920:[[73],256],119921:[[74],256],119922:[[75],256],119923:[[76],256],119924:[[77],256],119925:[[78],256],119926:[[79],256],119927:[[80],256],119928:[[81],256],119929:[[82],256],119930:[[83],256],119931:[[84],256],119932:[[85],256],119933:[[86],256],119934:[[87],256],119935:[[88],256],119936:[[89],256],119937:[[90],256],119938:[[97],256],119939:[[98],256],119940:[[99],256],119941:[[100],256],119942:[[101],256],119943:[[102],256],119944:[[103],256],119945:[[104],256],119946:[[105],256],119947:[[106],256],119948:[[107],256],119949:[[108],256],119950:[[109],256],119951:[[110],256],119952:[[111],256],119953:[[112],256],119954:[[113],256],119955:[[114],256],119956:[[115],256],119957:[[116],256],119958:[[117],256],119959:[[118],256],119960:[[119],256],119961:[[120],256],119962:[[121],256],119963:[[122],256],119964:[[65],256],119966:[[67],256],119967:[[68],256],119970:[[71],256],119973:[[74],256],119974:[[75],256],119977:[[78],256],119978:[[79],256],119979:[[80],256],119980:[[81],256],119982:[[83],256],119983:[[84],256],119984:[[85],256],119985:[[86],256],119986:[[87],256],119987:[[88],256],119988:[[89],256],119989:[[90],256],119990:[[97],256],119991:[[98],256],119992:[[99],256],119993:[[100],256],119995:[[102],256],119997:[[104],256],119998:[[105],256],119999:[[106],256],120000:[[107],256],120001:[[108],256],120002:[[109],256],120003:[[110],256],120005:[[112],256],120006:[[113],256],120007:[[114],256],120008:[[115],256],120009:[[116],256],120010:[[117],256],120011:[[118],256],120012:[[119],256],120013:[[120],256],120014:[[121],256],120015:[[122],256],120016:[[65],256],120017:[[66],256],120018:[[67],256],120019:[[68],256],120020:[[69],256],120021:[[70],256],120022:[[71],256],120023:[[72],256],120024:[[73],256],120025:[[74],256],120026:[[75],256],120027:[[76],256],120028:[[77],256],120029:[[78],256],120030:[[79],256],120031:[[80],256],120032:[[81],256],120033:[[82],256],120034:[[83],256],120035:[[84],256],120036:[[85],256],120037:[[86],256],120038:[[87],256],120039:[[88],256],120040:[[89],256],120041:[[90],256],120042:[[97],256],120043:[[98],256],120044:[[99],256],120045:[[100],256],120046:[[101],256],120047:[[102],256],120048:[[103],256],120049:[[104],256],120050:[[105],256],120051:[[106],256],120052:[[107],256],120053:[[108],256],120054:[[109],256],120055:[[110],256],120056:[[111],256],120057:[[112],256],120058:[[113],256],120059:[[114],256],120060:[[115],256],120061:[[116],256],120062:[[117],256],120063:[[118],256]},
6981 54528:{120064:[[119],256],120065:[[120],256],120066:[[121],256],120067:[[122],256],120068:[[65],256],120069:[[66],256],120071:[[68],256],120072:[[69],256],120073:[[70],256],120074:[[71],256],120077:[[74],256],120078:[[75],256],120079:[[76],256],120080:[[77],256],120081:[[78],256],120082:[[79],256],120083:[[80],256],120084:[[81],256],120086:[[83],256],120087:[[84],256],120088:[[85],256],120089:[[86],256],120090:[[87],256],120091:[[88],256],120092:[[89],256],120094:[[97],256],120095:[[98],256],120096:[[99],256],120097:[[100],256],120098:[[101],256],120099:[[102],256],120100:[[103],256],120101:[[104],256],120102:[[105],256],120103:[[106],256],120104:[[107],256],120105:[[108],256],120106:[[109],256],120107:[[110],256],120108:[[111],256],120109:[[112],256],120110:[[113],256],120111:[[114],256],120112:[[115],256],120113:[[116],256],120114:[[117],256],120115:[[118],256],120116:[[119],256],120117:[[120],256],120118:[[121],256],120119:[[122],256],120120:[[65],256],120121:[[66],256],120123:[[68],256],120124:[[69],256],120125:[[70],256],120126:[[71],256],120128:[[73],256],120129:[[74],256],120130:[[75],256],120131:[[76],256],120132:[[77],256],120134:[[79],256],120138:[[83],256],120139:[[84],256],120140:[[85],256],120141:[[86],256],120142:[[87],256],120143:[[88],256],120144:[[89],256],120146:[[97],256],120147:[[98],256],120148:[[99],256],120149:[[100],256],120150:[[101],256],120151:[[102],256],120152:[[103],256],120153:[[104],256],120154:[[105],256],120155:[[106],256],120156:[[107],256],120157:[[108],256],120158:[[109],256],120159:[[110],256],120160:[[111],256],120161:[[112],256],120162:[[113],256],120163:[[114],256],120164:[[115],256],120165:[[116],256],120166:[[117],256],120167:[[118],256],120168:[[119],256],120169:[[120],256],120170:[[121],256],120171:[[122],256],120172:[[65],256],120173:[[66],256],120174:[[67],256],120175:[[68],256],120176:[[69],256],120177:[[70],256],120178:[[71],256],120179:[[72],256],120180:[[73],256],120181:[[74],256],120182:[[75],256],120183:[[76],256],120184:[[77],256],120185:[[78],256],120186:[[79],256],120187:[[80],256],120188:[[81],256],120189:[[82],256],120190:[[83],256],120191:[[84],256],120192:[[85],256],120193:[[86],256],120194:[[87],256],120195:[[88],256],120196:[[89],256],120197:[[90],256],120198:[[97],256],120199:[[98],256],120200:[[99],256],120201:[[100],256],120202:[[101],256],120203:[[102],256],120204:[[103],256],120205:[[104],256],120206:[[105],256],120207:[[106],256],120208:[[107],256],120209:[[108],256],120210:[[109],256],120211:[[110],256],120212:[[111],256],120213:[[112],256],120214:[[113],256],120215:[[114],256],120216:[[115],256],120217:[[116],256],120218:[[117],256],120219:[[118],256],120220:[[119],256],120221:[[120],256],120222:[[121],256],120223:[[122],256],120224:[[65],256],120225:[[66],256],120226:[[67],256],120227:[[68],256],120228:[[69],256],120229:[[70],256],120230:[[71],256],120231:[[72],256],120232:[[73],256],120233:[[74],256],120234:[[75],256],120235:[[76],256],120236:[[77],256],120237:[[78],256],120238:[[79],256],120239:[[80],256],120240:[[81],256],120241:[[82],256],120242:[[83],256],120243:[[84],256],120244:[[85],256],120245:[[86],256],120246:[[87],256],120247:[[88],256],120248:[[89],256],120249:[[90],256],120250:[[97],256],120251:[[98],256],120252:[[99],256],120253:[[100],256],120254:[[101],256],120255:[[102],256],120256:[[103],256],120257:[[104],256],120258:[[105],256],120259:[[106],256],120260:[[107],256],120261:[[108],256],120262:[[109],256],120263:[[110],256],120264:[[111],256],120265:[[112],256],120266:[[113],256],120267:[[114],256],120268:[[115],256],120269:[[116],256],120270:[[117],256],120271:[[118],256],120272:[[119],256],120273:[[120],256],120274:[[121],256],120275:[[122],256],120276:[[65],256],120277:[[66],256],120278:[[67],256],120279:[[68],256],120280:[[69],256],120281:[[70],256],120282:[[71],256],120283:[[72],256],120284:[[73],256],120285:[[74],256],120286:[[75],256],120287:[[76],256],120288:[[77],256],120289:[[78],256],120290:[[79],256],120291:[[80],256],120292:[[81],256],120293:[[82],256],120294:[[83],256],120295:[[84],256],120296:[[85],256],120297:[[86],256],120298:[[87],256],120299:[[88],256],120300:[[89],256],120301:[[90],256],120302:[[97],256],120303:[[98],256],120304:[[99],256],120305:[[100],256],120306:[[101],256],120307:[[102],256],120308:[[103],256],120309:[[104],256],120310:[[105],256],120311:[[106],256],120312:[[107],256],120313:[[108],256],120314:[[109],256],120315:[[110],256],120316:[[111],256],120317:[[112],256],120318:[[113],256],120319:[[114],256]},
6982 54784:{120320:[[115],256],120321:[[116],256],120322:[[117],256],120323:[[118],256],120324:[[119],256],120325:[[120],256],120326:[[121],256],120327:[[122],256],120328:[[65],256],120329:[[66],256],120330:[[67],256],120331:[[68],256],120332:[[69],256],120333:[[70],256],120334:[[71],256],120335:[[72],256],120336:[[73],256],120337:[[74],256],120338:[[75],256],120339:[[76],256],120340:[[77],256],120341:[[78],256],120342:[[79],256],120343:[[80],256],120344:[[81],256],120345:[[82],256],120346:[[83],256],120347:[[84],256],120348:[[85],256],120349:[[86],256],120350:[[87],256],120351:[[88],256],120352:[[89],256],120353:[[90],256],120354:[[97],256],120355:[[98],256],120356:[[99],256],120357:[[100],256],120358:[[101],256],120359:[[102],256],120360:[[103],256],120361:[[104],256],120362:[[105],256],120363:[[106],256],120364:[[107],256],120365:[[108],256],120366:[[109],256],120367:[[110],256],120368:[[111],256],120369:[[112],256],120370:[[113],256],120371:[[114],256],120372:[[115],256],120373:[[116],256],120374:[[117],256],120375:[[118],256],120376:[[119],256],120377:[[120],256],120378:[[121],256],120379:[[122],256],120380:[[65],256],120381:[[66],256],120382:[[67],256],120383:[[68],256],120384:[[69],256],120385:[[70],256],120386:[[71],256],120387:[[72],256],120388:[[73],256],120389:[[74],256],120390:[[75],256],120391:[[76],256],120392:[[77],256],120393:[[78],256],120394:[[79],256],120395:[[80],256],120396:[[81],256],120397:[[82],256],120398:[[83],256],120399:[[84],256],120400:[[85],256],120401:[[86],256],120402:[[87],256],120403:[[88],256],120404:[[89],256],120405:[[90],256],120406:[[97],256],120407:[[98],256],120408:[[99],256],120409:[[100],256],120410:[[101],256],120411:[[102],256],120412:[[103],256],120413:[[104],256],120414:[[105],256],120415:[[106],256],120416:[[107],256],120417:[[108],256],120418:[[109],256],120419:[[110],256],120420:[[111],256],120421:[[112],256],120422:[[113],256],120423:[[114],256],120424:[[115],256],120425:[[116],256],120426:[[117],256],120427:[[118],256],120428:[[119],256],120429:[[120],256],120430:[[121],256],120431:[[122],256],120432:[[65],256],120433:[[66],256],120434:[[67],256],120435:[[68],256],120436:[[69],256],120437:[[70],256],120438:[[71],256],120439:[[72],256],120440:[[73],256],120441:[[74],256],120442:[[75],256],120443:[[76],256],120444:[[77],256],120445:[[78],256],120446:[[79],256],120447:[[80],256],120448:[[81],256],120449:[[82],256],120450:[[83],256],120451:[[84],256],120452:[[85],256],120453:[[86],256],120454:[[87],256],120455:[[88],256],120456:[[89],256],120457:[[90],256],120458:[[97],256],120459:[[98],256],120460:[[99],256],120461:[[100],256],120462:[[101],256],120463:[[102],256],120464:[[103],256],120465:[[104],256],120466:[[105],256],120467:[[106],256],120468:[[107],256],120469:[[108],256],120470:[[109],256],120471:[[110],256],120472:[[111],256],120473:[[112],256],120474:[[113],256],120475:[[114],256],120476:[[115],256],120477:[[116],256],120478:[[117],256],120479:[[118],256],120480:[[119],256],120481:[[120],256],120482:[[121],256],120483:[[122],256],120484:[[305],256],120485:[[567],256],120488:[[913],256],120489:[[914],256],120490:[[915],256],120491:[[916],256],120492:[[917],256],120493:[[918],256],120494:[[919],256],120495:[[920],256],120496:[[921],256],120497:[[922],256],120498:[[923],256],120499:[[924],256],120500:[[925],256],120501:[[926],256],120502:[[927],256],120503:[[928],256],120504:[[929],256],120505:[[1012],256],120506:[[931],256],120507:[[932],256],120508:[[933],256],120509:[[934],256],120510:[[935],256],120511:[[936],256],120512:[[937],256],120513:[[8711],256],120514:[[945],256],120515:[[946],256],120516:[[947],256],120517:[[948],256],120518:[[949],256],120519:[[950],256],120520:[[951],256],120521:[[952],256],120522:[[953],256],120523:[[954],256],120524:[[955],256],120525:[[956],256],120526:[[957],256],120527:[[958],256],120528:[[959],256],120529:[[960],256],120530:[[961],256],120531:[[962],256],120532:[[963],256],120533:[[964],256],120534:[[965],256],120535:[[966],256],120536:[[967],256],120537:[[968],256],120538:[[969],256],120539:[[8706],256],120540:[[1013],256],120541:[[977],256],120542:[[1008],256],120543:[[981],256],120544:[[1009],256],120545:[[982],256],120546:[[913],256],120547:[[914],256],120548:[[915],256],120549:[[916],256],120550:[[917],256],120551:[[918],256],120552:[[919],256],120553:[[920],256],120554:[[921],256],120555:[[922],256],120556:[[923],256],120557:[[924],256],120558:[[925],256],120559:[[926],256],120560:[[927],256],120561:[[928],256],120562:[[929],256],120563:[[1012],256],120564:[[931],256],120565:[[932],256],120566:[[933],256],120567:[[934],256],120568:[[935],256],120569:[[936],256],120570:[[937],256],120571:[[8711],256],120572:[[945],256],120573:[[946],256],120574:[[947],256],120575:[[948],256]},
6983 55040:{120576:[[949],256],120577:[[950],256],120578:[[951],256],120579:[[952],256],120580:[[953],256],120581:[[954],256],120582:[[955],256],120583:[[956],256],120584:[[957],256],120585:[[958],256],120586:[[959],256],120587:[[960],256],120588:[[961],256],120589:[[962],256],120590:[[963],256],120591:[[964],256],120592:[[965],256],120593:[[966],256],120594:[[967],256],120595:[[968],256],120596:[[969],256],120597:[[8706],256],120598:[[1013],256],120599:[[977],256],120600:[[1008],256],120601:[[981],256],120602:[[1009],256],120603:[[982],256],120604:[[913],256],120605:[[914],256],120606:[[915],256],120607:[[916],256],120608:[[917],256],120609:[[918],256],120610:[[919],256],120611:[[920],256],120612:[[921],256],120613:[[922],256],120614:[[923],256],120615:[[924],256],120616:[[925],256],120617:[[926],256],120618:[[927],256],120619:[[928],256],120620:[[929],256],120621:[[1012],256],120622:[[931],256],120623:[[932],256],120624:[[933],256],120625:[[934],256],120626:[[935],256],120627:[[936],256],120628:[[937],256],120629:[[8711],256],120630:[[945],256],120631:[[946],256],120632:[[947],256],120633:[[948],256],120634:[[949],256],120635:[[950],256],120636:[[951],256],120637:[[952],256],120638:[[953],256],120639:[[954],256],120640:[[955],256],120641:[[956],256],120642:[[957],256],120643:[[958],256],120644:[[959],256],120645:[[960],256],120646:[[961],256],120647:[[962],256],120648:[[963],256],120649:[[964],256],120650:[[965],256],120651:[[966],256],120652:[[967],256],120653:[[968],256],120654:[[969],256],120655:[[8706],256],120656:[[1013],256],120657:[[977],256],120658:[[1008],256],120659:[[981],256],120660:[[1009],256],120661:[[982],256],120662:[[913],256],120663:[[914],256],120664:[[915],256],120665:[[916],256],120666:[[917],256],120667:[[918],256],120668:[[919],256],120669:[[920],256],120670:[[921],256],120671:[[922],256],120672:[[923],256],120673:[[924],256],120674:[[925],256],120675:[[926],256],120676:[[927],256],120677:[[928],256],120678:[[929],256],120679:[[1012],256],120680:[[931],256],120681:[[932],256],120682:[[933],256],120683:[[934],256],120684:[[935],256],120685:[[936],256],120686:[[937],256],120687:[[8711],256],120688:[[945],256],120689:[[946],256],120690:[[947],256],120691:[[948],256],120692:[[949],256],120693:[[950],256],120694:[[951],256],120695:[[952],256],120696:[[953],256],120697:[[954],256],120698:[[955],256],120699:[[956],256],120700:[[957],256],120701:[[958],256],120702:[[959],256],120703:[[960],256],120704:[[961],256],120705:[[962],256],120706:[[963],256],120707:[[964],256],120708:[[965],256],120709:[[966],256],120710:[[967],256],120711:[[968],256],120712:[[969],256],120713:[[8706],256],120714:[[1013],256],120715:[[977],256],120716:[[1008],256],120717:[[981],256],120718:[[1009],256],120719:[[982],256],120720:[[913],256],120721:[[914],256],120722:[[915],256],120723:[[916],256],120724:[[917],256],120725:[[918],256],120726:[[919],256],120727:[[920],256],120728:[[921],256],120729:[[922],256],120730:[[923],256],120731:[[924],256],120732:[[925],256],120733:[[926],256],120734:[[927],256],120735:[[928],256],120736:[[929],256],120737:[[1012],256],120738:[[931],256],120739:[[932],256],120740:[[933],256],120741:[[934],256],120742:[[935],256],120743:[[936],256],120744:[[937],256],120745:[[8711],256],120746:[[945],256],120747:[[946],256],120748:[[947],256],120749:[[948],256],120750:[[949],256],120751:[[950],256],120752:[[951],256],120753:[[952],256],120754:[[953],256],120755:[[954],256],120756:[[955],256],120757:[[956],256],120758:[[957],256],120759:[[958],256],120760:[[959],256],120761:[[960],256],120762:[[961],256],120763:[[962],256],120764:[[963],256],120765:[[964],256],120766:[[965],256],120767:[[966],256],120768:[[967],256],120769:[[968],256],120770:[[969],256],120771:[[8706],256],120772:[[1013],256],120773:[[977],256],120774:[[1008],256],120775:[[981],256],120776:[[1009],256],120777:[[982],256],120778:[[988],256],120779:[[989],256],120782:[[48],256],120783:[[49],256],120784:[[50],256],120785:[[51],256],120786:[[52],256],120787:[[53],256],120788:[[54],256],120789:[[55],256],120790:[[56],256],120791:[[57],256],120792:[[48],256],120793:[[49],256],120794:[[50],256],120795:[[51],256],120796:[[52],256],120797:[[53],256],120798:[[54],256],120799:[[55],256],120800:[[56],256],120801:[[57],256],120802:[[48],256],120803:[[49],256],120804:[[50],256],120805:[[51],256],120806:[[52],256],120807:[[53],256],120808:[[54],256],120809:[[55],256],120810:[[56],256],120811:[[57],256],120812:[[48],256],120813:[[49],256],120814:[[50],256],120815:[[51],256],120816:[[52],256],120817:[[53],256],120818:[[54],256],120819:[[55],256],120820:[[56],256],120821:[[57],256],120822:[[48],256],120823:[[49],256],120824:[[50],256],120825:[[51],256],120826:[[52],256],120827:[[53],256],120828:[[54],256],120829:[[55],256],120830:[[56],256],120831:[[57],256]},
6984 59392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},
6985 60928:{126464:[[1575],256],126465:[[1576],256],126466:[[1580],256],126467:[[1583],256],126469:[[1608],256],126470:[[1586],256],126471:[[1581],256],126472:[[1591],256],126473:[[1610],256],126474:[[1603],256],126475:[[1604],256],126476:[[1605],256],126477:[[1606],256],126478:[[1587],256],126479:[[1593],256],126480:[[1601],256],126481:[[1589],256],126482:[[1602],256],126483:[[1585],256],126484:[[1588],256],126485:[[1578],256],126486:[[1579],256],126487:[[1582],256],126488:[[1584],256],126489:[[1590],256],126490:[[1592],256],126491:[[1594],256],126492:[[1646],256],126493:[[1722],256],126494:[[1697],256],126495:[[1647],256],126497:[[1576],256],126498:[[1580],256],126500:[[1607],256],126503:[[1581],256],126505:[[1610],256],126506:[[1603],256],126507:[[1604],256],126508:[[1605],256],126509:[[1606],256],126510:[[1587],256],126511:[[1593],256],126512:[[1601],256],126513:[[1589],256],126514:[[1602],256],126516:[[1588],256],126517:[[1578],256],126518:[[1579],256],126519:[[1582],256],126521:[[1590],256],126523:[[1594],256],126530:[[1580],256],126535:[[1581],256],126537:[[1610],256],126539:[[1604],256],126541:[[1606],256],126542:[[1587],256],126543:[[1593],256],126545:[[1589],256],126546:[[1602],256],126548:[[1588],256],126551:[[1582],256],126553:[[1590],256],126555:[[1594],256],126557:[[1722],256],126559:[[1647],256],126561:[[1576],256],126562:[[1580],256],126564:[[1607],256],126567:[[1581],256],126568:[[1591],256],126569:[[1610],256],126570:[[1603],256],126572:[[1605],256],126573:[[1606],256],126574:[[1587],256],126575:[[1593],256],126576:[[1601],256],126577:[[1589],256],126578:[[1602],256],126580:[[1588],256],126581:[[1578],256],126582:[[1579],256],126583:[[1582],256],126585:[[1590],256],126586:[[1592],256],126587:[[1594],256],126588:[[1646],256],126590:[[1697],256],126592:[[1575],256],126593:[[1576],256],126594:[[1580],256],126595:[[1583],256],126596:[[1607],256],126597:[[1608],256],126598:[[1586],256],126599:[[1581],256],126600:[[1591],256],126601:[[1610],256],126603:[[1604],256],126604:[[1605],256],126605:[[1606],256],126606:[[1587],256],126607:[[1593],256],126608:[[1601],256],126609:[[1589],256],126610:[[1602],256],126611:[[1585],256],126612:[[1588],256],126613:[[1578],256],126614:[[1579],256],126615:[[1582],256],126616:[[1584],256],126617:[[1590],256],126618:[[1592],256],126619:[[1594],256],126625:[[1576],256],126626:[[1580],256],126627:[[1583],256],126629:[[1608],256],126630:[[1586],256],126631:[[1581],256],126632:[[1591],256],126633:[[1610],256],126635:[[1604],256],126636:[[1605],256],126637:[[1606],256],126638:[[1587],256],126639:[[1593],256],126640:[[1601],256],126641:[[1589],256],126642:[[1602],256],126643:[[1585],256],126644:[[1588],256],126645:[[1578],256],126646:[[1579],256],126647:[[1582],256],126648:[[1584],256],126649:[[1590],256],126650:[[1592],256],126651:[[1594],256]},
6986 61696:{127232:[[48,46],256],127233:[[48,44],256],127234:[[49,44],256],127235:[[50,44],256],127236:[[51,44],256],127237:[[52,44],256],127238:[[53,44],256],127239:[[54,44],256],127240:[[55,44],256],127241:[[56,44],256],127242:[[57,44],256],127248:[[40,65,41],256],127249:[[40,66,41],256],127250:[[40,67,41],256],127251:[[40,68,41],256],127252:[[40,69,41],256],127253:[[40,70,41],256],127254:[[40,71,41],256],127255:[[40,72,41],256],127256:[[40,73,41],256],127257:[[40,74,41],256],127258:[[40,75,41],256],127259:[[40,76,41],256],127260:[[40,77,41],256],127261:[[40,78,41],256],127262:[[40,79,41],256],127263:[[40,80,41],256],127264:[[40,81,41],256],127265:[[40,82,41],256],127266:[[40,83,41],256],127267:[[40,84,41],256],127268:[[40,85,41],256],127269:[[40,86,41],256],127270:[[40,87,41],256],127271:[[40,88,41],256],127272:[[40,89,41],256],127273:[[40,90,41],256],127274:[[12308,83,12309],256],127275:[[67],256],127276:[[82],256],127277:[[67,68],256],127278:[[87,90],256],127280:[[65],256],127281:[[66],256],127282:[[67],256],127283:[[68],256],127284:[[69],256],127285:[[70],256],127286:[[71],256],127287:[[72],256],127288:[[73],256],127289:[[74],256],127290:[[75],256],127291:[[76],256],127292:[[77],256],127293:[[78],256],127294:[[79],256],127295:[[80],256],127296:[[81],256],127297:[[82],256],127298:[[83],256],127299:[[84],256],127300:[[85],256],127301:[[86],256],127302:[[87],256],127303:[[88],256],127304:[[89],256],127305:[[90],256],127306:[[72,86],256],127307:[[77,86],256],127308:[[83,68],256],127309:[[83,83],256],127310:[[80,80,86],256],127311:[[87,67],256],127338:[[77,67],256],127339:[[77,68],256],127376:[[68,74],256]},
6987 61952:{127488:[[12411,12363],256],127489:[[12467,12467],256],127490:[[12469],256],127504:[[25163],256],127505:[[23383],256],127506:[[21452],256],127507:[[12487],256],127508:[[20108],256],127509:[[22810],256],127510:[[35299],256],127511:[[22825],256],127512:[[20132],256],127513:[[26144],256],127514:[[28961],256],127515:[[26009],256],127516:[[21069],256],127517:[[24460],256],127518:[[20877],256],127519:[[26032],256],127520:[[21021],256],127521:[[32066],256],127522:[[29983],256],127523:[[36009],256],127524:[[22768],256],127525:[[21561],256],127526:[[28436],256],127527:[[25237],256],127528:[[25429],256],127529:[[19968],256],127530:[[19977],256],127531:[[36938],256],127532:[[24038],256],127533:[[20013],256],127534:[[21491],256],127535:[[25351],256],127536:[[36208],256],127537:[[25171],256],127538:[[31105],256],127539:[[31354],256],127540:[[21512],256],127541:[[28288],256],127542:[[26377],256],127543:[[26376],256],127544:[[30003],256],127545:[[21106],256],127546:[[21942],256],127552:[[12308,26412,12309],256],127553:[[12308,19977,12309],256],127554:[[12308,20108,12309],256],127555:[[12308,23433,12309],256],127556:[[12308,28857,12309],256],127557:[[12308,25171,12309],256],127558:[[12308,30423,12309],256],127559:[[12308,21213,12309],256],127560:[[12308,25943,12309],256],127568:[[24471],256],127569:[[21487],256]},
6988 63488:{194560:[[20029]],194561:[[20024]],194562:[[20033]],194563:[[131362]],194564:[[20320]],194565:[[20398]],194566:[[20411]],194567:[[20482]],194568:[[20602]],194569:[[20633]],194570:[[20711]],194571:[[20687]],194572:[[13470]],194573:[[132666]],194574:[[20813]],194575:[[20820]],194576:[[20836]],194577:[[20855]],194578:[[132380]],194579:[[13497]],194580:[[20839]],194581:[[20877]],194582:[[132427]],194583:[[20887]],194584:[[20900]],194585:[[20172]],194586:[[20908]],194587:[[20917]],194588:[[168415]],194589:[[20981]],194590:[[20995]],194591:[[13535]],194592:[[21051]],194593:[[21062]],194594:[[21106]],194595:[[21111]],194596:[[13589]],194597:[[21191]],194598:[[21193]],194599:[[21220]],194600:[[21242]],194601:[[21253]],194602:[[21254]],194603:[[21271]],194604:[[21321]],194605:[[21329]],194606:[[21338]],194607:[[21363]],194608:[[21373]],194609:[[21375]],194610:[[21375]],194611:[[21375]],194612:[[133676]],194613:[[28784]],194614:[[21450]],194615:[[21471]],194616:[[133987]],194617:[[21483]],194618:[[21489]],194619:[[21510]],194620:[[21662]],194621:[[21560]],194622:[[21576]],194623:[[21608]],194624:[[21666]],194625:[[21750]],194626:[[21776]],194627:[[21843]],194628:[[21859]],194629:[[21892]],194630:[[21892]],194631:[[21913]],194632:[[21931]],194633:[[21939]],194634:[[21954]],194635:[[22294]],194636:[[22022]],194637:[[22295]],194638:[[22097]],194639:[[22132]],194640:[[20999]],194641:[[22766]],194642:[[22478]],194643:[[22516]],194644:[[22541]],194645:[[22411]],194646:[[22578]],194647:[[22577]],194648:[[22700]],194649:[[136420]],194650:[[22770]],194651:[[22775]],194652:[[22790]],194653:[[22810]],194654:[[22818]],194655:[[22882]],194656:[[136872]],194657:[[136938]],194658:[[23020]],194659:[[23067]],194660:[[23079]],194661:[[23000]],194662:[[23142]],194663:[[14062]],194664:[[14076]],194665:[[23304]],194666:[[23358]],194667:[[23358]],194668:[[137672]],194669:[[23491]],194670:[[23512]],194671:[[23527]],194672:[[23539]],194673:[[138008]],194674:[[23551]],194675:[[23558]],194676:[[24403]],194677:[[23586]],194678:[[14209]],194679:[[23648]],194680:[[23662]],194681:[[23744]],194682:[[23693]],194683:[[138724]],194684:[[23875]],194685:[[138726]],194686:[[23918]],194687:[[23915]],194688:[[23932]],194689:[[24033]],194690:[[24034]],194691:[[14383]],194692:[[24061]],194693:[[24104]],194694:[[24125]],194695:[[24169]],194696:[[14434]],194697:[[139651]],194698:[[14460]],194699:[[24240]],194700:[[24243]],194701:[[24246]],194702:[[24266]],194703:[[172946]],194704:[[24318]],194705:[[140081]],194706:[[140081]],194707:[[33281]],194708:[[24354]],194709:[[24354]],194710:[[14535]],194711:[[144056]],194712:[[156122]],194713:[[24418]],194714:[[24427]],194715:[[14563]],194716:[[24474]],194717:[[24525]],194718:[[24535]],194719:[[24569]],194720:[[24705]],194721:[[14650]],194722:[[14620]],194723:[[24724]],194724:[[141012]],194725:[[24775]],194726:[[24904]],194727:[[24908]],194728:[[24910]],194729:[[24908]],194730:[[24954]],194731:[[24974]],194732:[[25010]],194733:[[24996]],194734:[[25007]],194735:[[25054]],194736:[[25074]],194737:[[25078]],194738:[[25104]],194739:[[25115]],194740:[[25181]],194741:[[25265]],194742:[[25300]],194743:[[25424]],194744:[[142092]],194745:[[25405]],194746:[[25340]],194747:[[25448]],194748:[[25475]],194749:[[25572]],194750:[[142321]],194751:[[25634]],194752:[[25541]],194753:[[25513]],194754:[[14894]],194755:[[25705]],194756:[[25726]],194757:[[25757]],194758:[[25719]],194759:[[14956]],194760:[[25935]],194761:[[25964]],194762:[[143370]],194763:[[26083]],194764:[[26360]],194765:[[26185]],194766:[[15129]],194767:[[26257]],194768:[[15112]],194769:[[15076]],194770:[[20882]],194771:[[20885]],194772:[[26368]],194773:[[26268]],194774:[[32941]],194775:[[17369]],194776:[[26391]],194777:[[26395]],194778:[[26401]],194779:[[26462]],194780:[[26451]],194781:[[144323]],194782:[[15177]],194783:[[26618]],194784:[[26501]],194785:[[26706]],194786:[[26757]],194787:[[144493]],194788:[[26766]],194789:[[26655]],194790:[[26900]],194791:[[15261]],194792:[[26946]],194793:[[27043]],194794:[[27114]],194795:[[27304]],194796:[[145059]],194797:[[27355]],194798:[[15384]],194799:[[27425]],194800:[[145575]],194801:[[27476]],194802:[[15438]],194803:[[27506]],194804:[[27551]],194805:[[27578]],194806:[[27579]],194807:[[146061]],194808:[[138507]],194809:[[146170]],194810:[[27726]],194811:[[146620]],194812:[[27839]],194813:[[27853]],194814:[[27751]],194815:[[27926]]},
6989 63744:{63744:[[35912]],63745:[[26356]],63746:[[36554]],63747:[[36040]],63748:[[28369]],63749:[[20018]],63750:[[21477]],63751:[[40860]],63752:[[40860]],63753:[[22865]],63754:[[37329]],63755:[[21895]],63756:[[22856]],63757:[[25078]],63758:[[30313]],63759:[[32645]],63760:[[34367]],63761:[[34746]],63762:[[35064]],63763:[[37007]],63764:[[27138]],63765:[[27931]],63766:[[28889]],63767:[[29662]],63768:[[33853]],63769:[[37226]],63770:[[39409]],63771:[[20098]],63772:[[21365]],63773:[[27396]],63774:[[29211]],63775:[[34349]],63776:[[40478]],63777:[[23888]],63778:[[28651]],63779:[[34253]],63780:[[35172]],63781:[[25289]],63782:[[33240]],63783:[[34847]],63784:[[24266]],63785:[[26391]],63786:[[28010]],63787:[[29436]],63788:[[37070]],63789:[[20358]],63790:[[20919]],63791:[[21214]],63792:[[25796]],63793:[[27347]],63794:[[29200]],63795:[[30439]],63796:[[32769]],63797:[[34310]],63798:[[34396]],63799:[[36335]],63800:[[38706]],63801:[[39791]],63802:[[40442]],63803:[[30860]],63804:[[31103]],63805:[[32160]],63806:[[33737]],63807:[[37636]],63808:[[40575]],63809:[[35542]],63810:[[22751]],63811:[[24324]],63812:[[31840]],63813:[[32894]],63814:[[29282]],63815:[[30922]],63816:[[36034]],63817:[[38647]],63818:[[22744]],63819:[[23650]],63820:[[27155]],63821:[[28122]],63822:[[28431]],63823:[[32047]],63824:[[32311]],63825:[[38475]],63826:[[21202]],63827:[[32907]],63828:[[20956]],63829:[[20940]],63830:[[31260]],63831:[[32190]],63832:[[33777]],63833:[[38517]],63834:[[35712]],63835:[[25295]],63836:[[27138]],63837:[[35582]],63838:[[20025]],63839:[[23527]],63840:[[24594]],63841:[[29575]],63842:[[30064]],63843:[[21271]],63844:[[30971]],63845:[[20415]],63846:[[24489]],63847:[[19981]],63848:[[27852]],63849:[[25976]],63850:[[32034]],63851:[[21443]],63852:[[22622]],63853:[[30465]],63854:[[33865]],63855:[[35498]],63856:[[27578]],63857:[[36784]],63858:[[27784]],63859:[[25342]],63860:[[33509]],63861:[[25504]],63862:[[30053]],63863:[[20142]],63864:[[20841]],63865:[[20937]],63866:[[26753]],63867:[[31975]],63868:[[33391]],63869:[[35538]],63870:[[37327]],63871:[[21237]],63872:[[21570]],63873:[[22899]],63874:[[24300]],63875:[[26053]],63876:[[28670]],63877:[[31018]],63878:[[38317]],63879:[[39530]],63880:[[40599]],63881:[[40654]],63882:[[21147]],63883:[[26310]],63884:[[27511]],63885:[[36706]],63886:[[24180]],63887:[[24976]],63888:[[25088]],63889:[[25754]],63890:[[28451]],63891:[[29001]],63892:[[29833]],63893:[[31178]],63894:[[32244]],63895:[[32879]],63896:[[36646]],63897:[[34030]],63898:[[36899]],63899:[[37706]],63900:[[21015]],63901:[[21155]],63902:[[21693]],63903:[[28872]],63904:[[35010]],63905:[[35498]],63906:[[24265]],63907:[[24565]],63908:[[25467]],63909:[[27566]],63910:[[31806]],63911:[[29557]],63912:[[20196]],63913:[[22265]],63914:[[23527]],63915:[[23994]],63916:[[24604]],63917:[[29618]],63918:[[29801]],63919:[[32666]],63920:[[32838]],63921:[[37428]],63922:[[38646]],63923:[[38728]],63924:[[38936]],63925:[[20363]],63926:[[31150]],63927:[[37300]],63928:[[38584]],63929:[[24801]],63930:[[20102]],63931:[[20698]],63932:[[23534]],63933:[[23615]],63934:[[26009]],63935:[[27138]],63936:[[29134]],63937:[[30274]],63938:[[34044]],63939:[[36988]],63940:[[40845]],63941:[[26248]],63942:[[38446]],63943:[[21129]],63944:[[26491]],63945:[[26611]],63946:[[27969]],63947:[[28316]],63948:[[29705]],63949:[[30041]],63950:[[30827]],63951:[[32016]],63952:[[39006]],63953:[[20845]],63954:[[25134]],63955:[[38520]],63956:[[20523]],63957:[[23833]],63958:[[28138]],63959:[[36650]],63960:[[24459]],63961:[[24900]],63962:[[26647]],63963:[[29575]],63964:[[38534]],63965:[[21033]],63966:[[21519]],63967:[[23653]],63968:[[26131]],63969:[[26446]],63970:[[26792]],63971:[[27877]],63972:[[29702]],63973:[[30178]],63974:[[32633]],63975:[[35023]],63976:[[35041]],63977:[[37324]],63978:[[38626]],63979:[[21311]],63980:[[28346]],63981:[[21533]],63982:[[29136]],63983:[[29848]],63984:[[34298]],63985:[[38563]],63986:[[40023]],63987:[[40607]],63988:[[26519]],63989:[[28107]],63990:[[33256]],63991:[[31435]],63992:[[31520]],63993:[[31890]],63994:[[29376]],63995:[[28825]],63996:[[35672]],63997:[[20160]],63998:[[33590]],63999:[[21050]],194816:[[27966]],194817:[[28023]],194818:[[27969]],194819:[[28009]],194820:[[28024]],194821:[[28037]],194822:[[146718]],194823:[[27956]],194824:[[28207]],194825:[[28270]],194826:[[15667]],194827:[[28363]],194828:[[28359]],194829:[[147153]],194830:[[28153]],194831:[[28526]],194832:[[147294]],194833:[[147342]],194834:[[28614]],194835:[[28729]],194836:[[28702]],194837:[[28699]],194838:[[15766]],194839:[[28746]],194840:[[28797]],194841:[[28791]],194842:[[28845]],194843:[[132389]],194844:[[28997]],194845:[[148067]],194846:[[29084]],194847:[[148395]],194848:[[29224]],194849:[[29237]],194850:[[29264]],194851:[[149000]],194852:[[29312]],194853:[[29333]],194854:[[149301]],194855:[[149524]],194856:[[29562]],194857:[[29579]],194858:[[16044]],194859:[[29605]],194860:[[16056]],194861:[[16056]],194862:[[29767]],194863:[[29788]],194864:[[29809]],194865:[[29829]],194866:[[29898]],194867:[[16155]],194868:[[29988]],194869:[[150582]],194870:[[30014]],194871:[[150674]],194872:[[30064]],194873:[[139679]],194874:[[30224]],194875:[[151457]],194876:[[151480]],194877:[[151620]],194878:[[16380]],194879:[[16392]],194880:[[30452]],194881:[[151795]],194882:[[151794]],194883:[[151833]],194884:[[151859]],194885:[[30494]],194886:[[30495]],194887:[[30495]],194888:[[30538]],194889:[[16441]],194890:[[30603]],194891:[[16454]],194892:[[16534]],194893:[[152605]],194894:[[30798]],194895:[[30860]],194896:[[30924]],194897:[[16611]],194898:[[153126]],194899:[[31062]],194900:[[153242]],194901:[[153285]],194902:[[31119]],194903:[[31211]],194904:[[16687]],194905:[[31296]],194906:[[31306]],194907:[[31311]],194908:[[153980]],194909:[[154279]],194910:[[154279]],194911:[[31470]],194912:[[16898]],194913:[[154539]],194914:[[31686]],194915:[[31689]],194916:[[16935]],194917:[[154752]],194918:[[31954]],194919:[[17056]],194920:[[31976]],194921:[[31971]],194922:[[32000]],194923:[[155526]],194924:[[32099]],194925:[[17153]],194926:[[32199]],194927:[[32258]],194928:[[32325]],194929:[[17204]],194930:[[156200]],194931:[[156231]],194932:[[17241]],194933:[[156377]],194934:[[32634]],194935:[[156478]],194936:[[32661]],194937:[[32762]],194938:[[32773]],194939:[[156890]],194940:[[156963]],194941:[[32864]],194942:[[157096]],194943:[[32880]],194944:[[144223]],194945:[[17365]],194946:[[32946]],194947:[[33027]],194948:[[17419]],194949:[[33086]],194950:[[23221]],194951:[[157607]],194952:[[157621]],194953:[[144275]],194954:[[144284]],194955:[[33281]],194956:[[33284]],194957:[[36766]],194958:[[17515]],194959:[[33425]],194960:[[33419]],194961:[[33437]],194962:[[21171]],194963:[[33457]],194964:[[33459]],194965:[[33469]],194966:[[33510]],194967:[[158524]],194968:[[33509]],194969:[[33565]],194970:[[33635]],194971:[[33709]],194972:[[33571]],194973:[[33725]],194974:[[33767]],194975:[[33879]],194976:[[33619]],194977:[[33738]],194978:[[33740]],194979:[[33756]],194980:[[158774]],194981:[[159083]],194982:[[158933]],194983:[[17707]],194984:[[34033]],194985:[[34035]],194986:[[34070]],194987:[[160714]],194988:[[34148]],194989:[[159532]],194990:[[17757]],194991:[[17761]],194992:[[159665]],194993:[[159954]],194994:[[17771]],194995:[[34384]],194996:[[34396]],194997:[[34407]],194998:[[34409]],194999:[[34473]],195000:[[34440]],195001:[[34574]],195002:[[34530]],195003:[[34681]],195004:[[34600]],195005:[[34667]],195006:[[34694]],195007:[[17879]],195008:[[34785]],195009:[[34817]],195010:[[17913]],195011:[[34912]],195012:[[34915]],195013:[[161383]],195014:[[35031]],195015:[[35038]],195016:[[17973]],195017:[[35066]],195018:[[13499]],195019:[[161966]],195020:[[162150]],195021:[[18110]],195022:[[18119]],195023:[[35488]],195024:[[35565]],195025:[[35722]],195026:[[35925]],195027:[[162984]],195028:[[36011]],195029:[[36033]],195030:[[36123]],195031:[[36215]],195032:[[163631]],195033:[[133124]],195034:[[36299]],195035:[[36284]],195036:[[36336]],195037:[[133342]],195038:[[36564]],195039:[[36664]],195040:[[165330]],195041:[[165357]],195042:[[37012]],195043:[[37105]],195044:[[37137]],195045:[[165678]],195046:[[37147]],195047:[[37432]],195048:[[37591]],195049:[[37592]],195050:[[37500]],195051:[[37881]],195052:[[37909]],195053:[[166906]],195054:[[38283]],195055:[[18837]],195056:[[38327]],195057:[[167287]],195058:[[18918]],195059:[[38595]],195060:[[23986]],195061:[[38691]],195062:[[168261]],195063:[[168474]],195064:[[19054]],195065:[[19062]],195066:[[38880]],195067:[[168970]],195068:[[19122]],195069:[[169110]],195070:[[38923]],195071:[[38923]]},
6990 64000:{64000:[[20999]],64001:[[24230]],64002:[[25299]],64003:[[31958]],64004:[[23429]],64005:[[27934]],64006:[[26292]],64007:[[36667]],64008:[[34892]],64009:[[38477]],64010:[[35211]],64011:[[24275]],64012:[[20800]],64013:[[21952]],64016:[[22618]],64018:[[26228]],64021:[[20958]],64022:[[29482]],64023:[[30410]],64024:[[31036]],64025:[[31070]],64026:[[31077]],64027:[[31119]],64028:[[38742]],64029:[[31934]],64030:[[32701]],64032:[[34322]],64034:[[35576]],64037:[[36920]],64038:[[37117]],64042:[[39151]],64043:[[39164]],64044:[[39208]],64045:[[40372]],64046:[[37086]],64047:[[38583]],64048:[[20398]],64049:[[20711]],64050:[[20813]],64051:[[21193]],64052:[[21220]],64053:[[21329]],64054:[[21917]],64055:[[22022]],64056:[[22120]],64057:[[22592]],64058:[[22696]],64059:[[23652]],64060:[[23662]],64061:[[24724]],64062:[[24936]],64063:[[24974]],64064:[[25074]],64065:[[25935]],64066:[[26082]],64067:[[26257]],64068:[[26757]],64069:[[28023]],64070:[[28186]],64071:[[28450]],64072:[[29038]],64073:[[29227]],64074:[[29730]],64075:[[30865]],64076:[[31038]],64077:[[31049]],64078:[[31048]],64079:[[31056]],64080:[[31062]],64081:[[31069]],64082:[[31117]],64083:[[31118]],64084:[[31296]],64085:[[31361]],64086:[[31680]],64087:[[32244]],64088:[[32265]],64089:[[32321]],64090:[[32626]],64091:[[32773]],64092:[[33261]],64093:[[33401]],64094:[[33401]],64095:[[33879]],64096:[[35088]],64097:[[35222]],64098:[[35585]],64099:[[35641]],64100:[[36051]],64101:[[36104]],64102:[[36790]],64103:[[36920]],64104:[[38627]],64105:[[38911]],64106:[[38971]],64107:[[24693]],64108:[[148206]],64109:[[33304]],64112:[[20006]],64113:[[20917]],64114:[[20840]],64115:[[20352]],64116:[[20805]],64117:[[20864]],64118:[[21191]],64119:[[21242]],64120:[[21917]],64121:[[21845]],64122:[[21913]],64123:[[21986]],64124:[[22618]],64125:[[22707]],64126:[[22852]],64127:[[22868]],64128:[[23138]],64129:[[23336]],64130:[[24274]],64131:[[24281]],64132:[[24425]],64133:[[24493]],64134:[[24792]],64135:[[24910]],64136:[[24840]],64137:[[24974]],64138:[[24928]],64139:[[25074]],64140:[[25140]],64141:[[25540]],64142:[[25628]],64143:[[25682]],64144:[[25942]],64145:[[26228]],64146:[[26391]],64147:[[26395]],64148:[[26454]],64149:[[27513]],64150:[[27578]],64151:[[27969]],64152:[[28379]],64153:[[28363]],64154:[[28450]],64155:[[28702]],64156:[[29038]],64157:[[30631]],64158:[[29237]],64159:[[29359]],64160:[[29482]],64161:[[29809]],64162:[[29958]],64163:[[30011]],64164:[[30237]],64165:[[30239]],64166:[[30410]],64167:[[30427]],64168:[[30452]],64169:[[30538]],64170:[[30528]],64171:[[30924]],64172:[[31409]],64173:[[31680]],64174:[[31867]],64175:[[32091]],64176:[[32244]],64177:[[32574]],64178:[[32773]],64179:[[33618]],64180:[[33775]],64181:[[34681]],64182:[[35137]],64183:[[35206]],64184:[[35222]],64185:[[35519]],64186:[[35576]],64187:[[35531]],64188:[[35585]],64189:[[35582]],64190:[[35565]],64191:[[35641]],64192:[[35722]],64193:[[36104]],64194:[[36664]],64195:[[36978]],64196:[[37273]],64197:[[37494]],64198:[[38524]],64199:[[38627]],64200:[[38742]],64201:[[38875]],64202:[[38911]],64203:[[38923]],64204:[[38971]],64205:[[39698]],64206:[[40860]],64207:[[141386]],64208:[[141380]],64209:[[144341]],64210:[[15261]],64211:[[16408]],64212:[[16441]],64213:[[152137]],64214:[[154832]],64215:[[163539]],64216:[[40771]],64217:[[40846]],195072:[[38953]],195073:[[169398]],195074:[[39138]],195075:[[19251]],195076:[[39209]],195077:[[39335]],195078:[[39362]],195079:[[39422]],195080:[[19406]],195081:[[170800]],195082:[[39698]],195083:[[40000]],195084:[[40189]],195085:[[19662]],195086:[[19693]],195087:[[40295]],195088:[[172238]],195089:[[19704]],195090:[[172293]],195091:[[172558]],195092:[[172689]],195093:[[40635]],195094:[[19798]],195095:[[40697]],195096:[[40702]],195097:[[40709]],195098:[[40719]],195099:[[40726]],195100:[[40763]],195101:[[173568]]},
6991 64256:{64256:[[102,102],256],64257:[[102,105],256],64258:[[102,108],256],64259:[[102,102,105],256],64260:[[102,102,108],256],64261:[[383,116],256],64262:[[115,116],256],64275:[[1396,1398],256],64276:[[1396,1381],256],64277:[[1396,1387],256],64278:[[1406,1398],256],64279:[[1396,1389],256],64285:[[1497,1460],512],64286:[,26],64287:[[1522,1463],512],64288:[[1506],256],64289:[[1488],256],64290:[[1491],256],64291:[[1492],256],64292:[[1499],256],64293:[[1500],256],64294:[[1501],256],64295:[[1512],256],64296:[[1514],256],64297:[[43],256],64298:[[1513,1473],512],64299:[[1513,1474],512],64300:[[64329,1473],512],64301:[[64329,1474],512],64302:[[1488,1463],512],64303:[[1488,1464],512],64304:[[1488,1468],512],64305:[[1489,1468],512],64306:[[1490,1468],512],64307:[[1491,1468],512],64308:[[1492,1468],512],64309:[[1493,1468],512],64310:[[1494,1468],512],64312:[[1496,1468],512],64313:[[1497,1468],512],64314:[[1498,1468],512],64315:[[1499,1468],512],64316:[[1500,1468],512],64318:[[1502,1468],512],64320:[[1504,1468],512],64321:[[1505,1468],512],64323:[[1507,1468],512],64324:[[1508,1468],512],64326:[[1510,1468],512],64327:[[1511,1468],512],64328:[[1512,1468],512],64329:[[1513,1468],512],64330:[[1514,1468],512],64331:[[1493,1465],512],64332:[[1489,1471],512],64333:[[1499,1471],512],64334:[[1508,1471],512],64335:[[1488,1500],256],64336:[[1649],256],64337:[[1649],256],64338:[[1659],256],64339:[[1659],256],64340:[[1659],256],64341:[[1659],256],64342:[[1662],256],64343:[[1662],256],64344:[[1662],256],64345:[[1662],256],64346:[[1664],256],64347:[[1664],256],64348:[[1664],256],64349:[[1664],256],64350:[[1658],256],64351:[[1658],256],64352:[[1658],256],64353:[[1658],256],64354:[[1663],256],64355:[[1663],256],64356:[[1663],256],64357:[[1663],256],64358:[[1657],256],64359:[[1657],256],64360:[[1657],256],64361:[[1657],256],64362:[[1700],256],64363:[[1700],256],64364:[[1700],256],64365:[[1700],256],64366:[[1702],256],64367:[[1702],256],64368:[[1702],256],64369:[[1702],256],64370:[[1668],256],64371:[[1668],256],64372:[[1668],256],64373:[[1668],256],64374:[[1667],256],64375:[[1667],256],64376:[[1667],256],64377:[[1667],256],64378:[[1670],256],64379:[[1670],256],64380:[[1670],256],64381:[[1670],256],64382:[[1671],256],64383:[[1671],256],64384:[[1671],256],64385:[[1671],256],64386:[[1677],256],64387:[[1677],256],64388:[[1676],256],64389:[[1676],256],64390:[[1678],256],64391:[[1678],256],64392:[[1672],256],64393:[[1672],256],64394:[[1688],256],64395:[[1688],256],64396:[[1681],256],64397:[[1681],256],64398:[[1705],256],64399:[[1705],256],64400:[[1705],256],64401:[[1705],256],64402:[[1711],256],64403:[[1711],256],64404:[[1711],256],64405:[[1711],256],64406:[[1715],256],64407:[[1715],256],64408:[[1715],256],64409:[[1715],256],64410:[[1713],256],64411:[[1713],256],64412:[[1713],256],64413:[[1713],256],64414:[[1722],256],64415:[[1722],256],64416:[[1723],256],64417:[[1723],256],64418:[[1723],256],64419:[[1723],256],64420:[[1728],256],64421:[[1728],256],64422:[[1729],256],64423:[[1729],256],64424:[[1729],256],64425:[[1729],256],64426:[[1726],256],64427:[[1726],256],64428:[[1726],256],64429:[[1726],256],64430:[[1746],256],64431:[[1746],256],64432:[[1747],256],64433:[[1747],256],64467:[[1709],256],64468:[[1709],256],64469:[[1709],256],64470:[[1709],256],64471:[[1735],256],64472:[[1735],256],64473:[[1734],256],64474:[[1734],256],64475:[[1736],256],64476:[[1736],256],64477:[[1655],256],64478:[[1739],256],64479:[[1739],256],64480:[[1733],256],64481:[[1733],256],64482:[[1737],256],64483:[[1737],256],64484:[[1744],256],64485:[[1744],256],64486:[[1744],256],64487:[[1744],256],64488:[[1609],256],64489:[[1609],256],64490:[[1574,1575],256],64491:[[1574,1575],256],64492:[[1574,1749],256],64493:[[1574,1749],256],64494:[[1574,1608],256],64495:[[1574,1608],256],64496:[[1574,1735],256],64497:[[1574,1735],256],64498:[[1574,1734],256],64499:[[1574,1734],256],64500:[[1574,1736],256],64501:[[1574,1736],256],64502:[[1574,1744],256],64503:[[1574,1744],256],64504:[[1574,1744],256],64505:[[1574,1609],256],64506:[[1574,1609],256],64507:[[1574,1609],256],64508:[[1740],256],64509:[[1740],256],64510:[[1740],256],64511:[[1740],256]},
6992 64512:{64512:[[1574,1580],256],64513:[[1574,1581],256],64514:[[1574,1605],256],64515:[[1574,1609],256],64516:[[1574,1610],256],64517:[[1576,1580],256],64518:[[1576,1581],256],64519:[[1576,1582],256],64520:[[1576,1605],256],64521:[[1576,1609],256],64522:[[1576,1610],256],64523:[[1578,1580],256],64524:[[1578,1581],256],64525:[[1578,1582],256],64526:[[1578,1605],256],64527:[[1578,1609],256],64528:[[1578,1610],256],64529:[[1579,1580],256],64530:[[1579,1605],256],64531:[[1579,1609],256],64532:[[1579,1610],256],64533:[[1580,1581],256],64534:[[1580,1605],256],64535:[[1581,1580],256],64536:[[1581,1605],256],64537:[[1582,1580],256],64538:[[1582,1581],256],64539:[[1582,1605],256],64540:[[1587,1580],256],64541:[[1587,1581],256],64542:[[1587,1582],256],64543:[[1587,1605],256],64544:[[1589,1581],256],64545:[[1589,1605],256],64546:[[1590,1580],256],64547:[[1590,1581],256],64548:[[1590,1582],256],64549:[[1590,1605],256],64550:[[1591,1581],256],64551:[[1591,1605],256],64552:[[1592,1605],256],64553:[[1593,1580],256],64554:[[1593,1605],256],64555:[[1594,1580],256],64556:[[1594,1605],256],64557:[[1601,1580],256],64558:[[1601,1581],256],64559:[[1601,1582],256],64560:[[1601,1605],256],64561:[[1601,1609],256],64562:[[1601,1610],256],64563:[[1602,1581],256],64564:[[1602,1605],256],64565:[[1602,1609],256],64566:[[1602,1610],256],64567:[[1603,1575],256],64568:[[1603,1580],256],64569:[[1603,1581],256],64570:[[1603,1582],256],64571:[[1603,1604],256],64572:[[1603,1605],256],64573:[[1603,1609],256],64574:[[1603,1610],256],64575:[[1604,1580],256],64576:[[1604,1581],256],64577:[[1604,1582],256],64578:[[1604,1605],256],64579:[[1604,1609],256],64580:[[1604,1610],256],64581:[[1605,1580],256],64582:[[1605,1581],256],64583:[[1605,1582],256],64584:[[1605,1605],256],64585:[[1605,1609],256],64586:[[1605,1610],256],64587:[[1606,1580],256],64588:[[1606,1581],256],64589:[[1606,1582],256],64590:[[1606,1605],256],64591:[[1606,1609],256],64592:[[1606,1610],256],64593:[[1607,1580],256],64594:[[1607,1605],256],64595:[[1607,1609],256],64596:[[1607,1610],256],64597:[[1610,1580],256],64598:[[1610,1581],256],64599:[[1610,1582],256],64600:[[1610,1605],256],64601:[[1610,1609],256],64602:[[1610,1610],256],64603:[[1584,1648],256],64604:[[1585,1648],256],64605:[[1609,1648],256],64606:[[32,1612,1617],256],64607:[[32,1613,1617],256],64608:[[32,1614,1617],256],64609:[[32,1615,1617],256],64610:[[32,1616,1617],256],64611:[[32,1617,1648],256],64612:[[1574,1585],256],64613:[[1574,1586],256],64614:[[1574,1605],256],64615:[[1574,1606],256],64616:[[1574,1609],256],64617:[[1574,1610],256],64618:[[1576,1585],256],64619:[[1576,1586],256],64620:[[1576,1605],256],64621:[[1576,1606],256],64622:[[1576,1609],256],64623:[[1576,1610],256],64624:[[1578,1585],256],64625:[[1578,1586],256],64626:[[1578,1605],256],64627:[[1578,1606],256],64628:[[1578,1609],256],64629:[[1578,1610],256],64630:[[1579,1585],256],64631:[[1579,1586],256],64632:[[1579,1605],256],64633:[[1579,1606],256],64634:[[1579,1609],256],64635:[[1579,1610],256],64636:[[1601,1609],256],64637:[[1601,1610],256],64638:[[1602,1609],256],64639:[[1602,1610],256],64640:[[1603,1575],256],64641:[[1603,1604],256],64642:[[1603,1605],256],64643:[[1603,1609],256],64644:[[1603,1610],256],64645:[[1604,1605],256],64646:[[1604,1609],256],64647:[[1604,1610],256],64648:[[1605,1575],256],64649:[[1605,1605],256],64650:[[1606,1585],256],64651:[[1606,1586],256],64652:[[1606,1605],256],64653:[[1606,1606],256],64654:[[1606,1609],256],64655:[[1606,1610],256],64656:[[1609,1648],256],64657:[[1610,1585],256],64658:[[1610,1586],256],64659:[[1610,1605],256],64660:[[1610,1606],256],64661:[[1610,1609],256],64662:[[1610,1610],256],64663:[[1574,1580],256],64664:[[1574,1581],256],64665:[[1574,1582],256],64666:[[1574,1605],256],64667:[[1574,1607],256],64668:[[1576,1580],256],64669:[[1576,1581],256],64670:[[1576,1582],256],64671:[[1576,1605],256],64672:[[1576,1607],256],64673:[[1578,1580],256],64674:[[1578,1581],256],64675:[[1578,1582],256],64676:[[1578,1605],256],64677:[[1578,1607],256],64678:[[1579,1605],256],64679:[[1580,1581],256],64680:[[1580,1605],256],64681:[[1581,1580],256],64682:[[1581,1605],256],64683:[[1582,1580],256],64684:[[1582,1605],256],64685:[[1587,1580],256],64686:[[1587,1581],256],64687:[[1587,1582],256],64688:[[1587,1605],256],64689:[[1589,1581],256],64690:[[1589,1582],256],64691:[[1589,1605],256],64692:[[1590,1580],256],64693:[[1590,1581],256],64694:[[1590,1582],256],64695:[[1590,1605],256],64696:[[1591,1581],256],64697:[[1592,1605],256],64698:[[1593,1580],256],64699:[[1593,1605],256],64700:[[1594,1580],256],64701:[[1594,1605],256],64702:[[1601,1580],256],64703:[[1601,1581],256],64704:[[1601,1582],256],64705:[[1601,1605],256],64706:[[1602,1581],256],64707:[[1602,1605],256],64708:[[1603,1580],256],64709:[[1603,1581],256],64710:[[1603,1582],256],64711:[[1603,1604],256],64712:[[1603,1605],256],64713:[[1604,1580],256],64714:[[1604,1581],256],64715:[[1604,1582],256],64716:[[1604,1605],256],64717:[[1604,1607],256],64718:[[1605,1580],256],64719:[[1605,1581],256],64720:[[1605,1582],256],64721:[[1605,1605],256],64722:[[1606,1580],256],64723:[[1606,1581],256],64724:[[1606,1582],256],64725:[[1606,1605],256],64726:[[1606,1607],256],64727:[[1607,1580],256],64728:[[1607,1605],256],64729:[[1607,1648],256],64730:[[1610,1580],256],64731:[[1610,1581],256],64732:[[1610,1582],256],64733:[[1610,1605],256],64734:[[1610,1607],256],64735:[[1574,1605],256],64736:[[1574,1607],256],64737:[[1576,1605],256],64738:[[1576,1607],256],64739:[[1578,1605],256],64740:[[1578,1607],256],64741:[[1579,1605],256],64742:[[1579,1607],256],64743:[[1587,1605],256],64744:[[1587,1607],256],64745:[[1588,1605],256],64746:[[1588,1607],256],64747:[[1603,1604],256],64748:[[1603,1605],256],64749:[[1604,1605],256],64750:[[1606,1605],256],64751:[[1606,1607],256],64752:[[1610,1605],256],64753:[[1610,1607],256],64754:[[1600,1614,1617],256],64755:[[1600,1615,1617],256],64756:[[1600,1616,1617],256],64757:[[1591,1609],256],64758:[[1591,1610],256],64759:[[1593,1609],256],64760:[[1593,1610],256],64761:[[1594,1609],256],64762:[[1594,1610],256],64763:[[1587,1609],256],64764:[[1587,1610],256],64765:[[1588,1609],256],64766:[[1588,1610],256],64767:[[1581,1609],256]},
6993 64768:{64768:[[1581,1610],256],64769:[[1580,1609],256],64770:[[1580,1610],256],64771:[[1582,1609],256],64772:[[1582,1610],256],64773:[[1589,1609],256],64774:[[1589,1610],256],64775:[[1590,1609],256],64776:[[1590,1610],256],64777:[[1588,1580],256],64778:[[1588,1581],256],64779:[[1588,1582],256],64780:[[1588,1605],256],64781:[[1588,1585],256],64782:[[1587,1585],256],64783:[[1589,1585],256],64784:[[1590,1585],256],64785:[[1591,1609],256],64786:[[1591,1610],256],64787:[[1593,1609],256],64788:[[1593,1610],256],64789:[[1594,1609],256],64790:[[1594,1610],256],64791:[[1587,1609],256],64792:[[1587,1610],256],64793:[[1588,1609],256],64794:[[1588,1610],256],64795:[[1581,1609],256],64796:[[1581,1610],256],64797:[[1580,1609],256],64798:[[1580,1610],256],64799:[[1582,1609],256],64800:[[1582,1610],256],64801:[[1589,1609],256],64802:[[1589,1610],256],64803:[[1590,1609],256],64804:[[1590,1610],256],64805:[[1588,1580],256],64806:[[1588,1581],256],64807:[[1588,1582],256],64808:[[1588,1605],256],64809:[[1588,1585],256],64810:[[1587,1585],256],64811:[[1589,1585],256],64812:[[1590,1585],256],64813:[[1588,1580],256],64814:[[1588,1581],256],64815:[[1588,1582],256],64816:[[1588,1605],256],64817:[[1587,1607],256],64818:[[1588,1607],256],64819:[[1591,1605],256],64820:[[1587,1580],256],64821:[[1587,1581],256],64822:[[1587,1582],256],64823:[[1588,1580],256],64824:[[1588,1581],256],64825:[[1588,1582],256],64826:[[1591,1605],256],64827:[[1592,1605],256],64828:[[1575,1611],256],64829:[[1575,1611],256],64848:[[1578,1580,1605],256],64849:[[1578,1581,1580],256],64850:[[1578,1581,1580],256],64851:[[1578,1581,1605],256],64852:[[1578,1582,1605],256],64853:[[1578,1605,1580],256],64854:[[1578,1605,1581],256],64855:[[1578,1605,1582],256],64856:[[1580,1605,1581],256],64857:[[1580,1605,1581],256],64858:[[1581,1605,1610],256],64859:[[1581,1605,1609],256],64860:[[1587,1581,1580],256],64861:[[1587,1580,1581],256],64862:[[1587,1580,1609],256],64863:[[1587,1605,1581],256],64864:[[1587,1605,1581],256],64865:[[1587,1605,1580],256],64866:[[1587,1605,1605],256],64867:[[1587,1605,1605],256],64868:[[1589,1581,1581],256],64869:[[1589,1581,1581],256],64870:[[1589,1605,1605],256],64871:[[1588,1581,1605],256],64872:[[1588,1581,1605],256],64873:[[1588,1580,1610],256],64874:[[1588,1605,1582],256],64875:[[1588,1605,1582],256],64876:[[1588,1605,1605],256],64877:[[1588,1605,1605],256],64878:[[1590,1581,1609],256],64879:[[1590,1582,1605],256],64880:[[1590,1582,1605],256],64881:[[1591,1605,1581],256],64882:[[1591,1605,1581],256],64883:[[1591,1605,1605],256],64884:[[1591,1605,1610],256],64885:[[1593,1580,1605],256],64886:[[1593,1605,1605],256],64887:[[1593,1605,1605],256],64888:[[1593,1605,1609],256],64889:[[1594,1605,1605],256],64890:[[1594,1605,1610],256],64891:[[1594,1605,1609],256],64892:[[1601,1582,1605],256],64893:[[1601,1582,1605],256],64894:[[1602,1605,1581],256],64895:[[1602,1605,1605],256],64896:[[1604,1581,1605],256],64897:[[1604,1581,1610],256],64898:[[1604,1581,1609],256],64899:[[1604,1580,1580],256],64900:[[1604,1580,1580],256],64901:[[1604,1582,1605],256],64902:[[1604,1582,1605],256],64903:[[1604,1605,1581],256],64904:[[1604,1605,1581],256],64905:[[1605,1581,1580],256],64906:[[1605,1581,1605],256],64907:[[1605,1581,1610],256],64908:[[1605,1580,1581],256],64909:[[1605,1580,1605],256],64910:[[1605,1582,1580],256],64911:[[1605,1582,1605],256],64914:[[1605,1580,1582],256],64915:[[1607,1605,1580],256],64916:[[1607,1605,1605],256],64917:[[1606,1581,1605],256],64918:[[1606,1581,1609],256],64919:[[1606,1580,1605],256],64920:[[1606,1580,1605],256],64921:[[1606,1580,1609],256],64922:[[1606,1605,1610],256],64923:[[1606,1605,1609],256],64924:[[1610,1605,1605],256],64925:[[1610,1605,1605],256],64926:[[1576,1582,1610],256],64927:[[1578,1580,1610],256],64928:[[1578,1580,1609],256],64929:[[1578,1582,1610],256],64930:[[1578,1582,1609],256],64931:[[1578,1605,1610],256],64932:[[1578,1605,1609],256],64933:[[1580,1605,1610],256],64934:[[1580,1581,1609],256],64935:[[1580,1605,1609],256],64936:[[1587,1582,1609],256],64937:[[1589,1581,1610],256],64938:[[1588,1581,1610],256],64939:[[1590,1581,1610],256],64940:[[1604,1580,1610],256],64941:[[1604,1605,1610],256],64942:[[1610,1581,1610],256],64943:[[1610,1580,1610],256],64944:[[1610,1605,1610],256],64945:[[1605,1605,1610],256],64946:[[1602,1605,1610],256],64947:[[1606,1581,1610],256],64948:[[1602,1605,1581],256],64949:[[1604,1581,1605],256],64950:[[1593,1605,1610],256],64951:[[1603,1605,1610],256],64952:[[1606,1580,1581],256],64953:[[1605,1582,1610],256],64954:[[1604,1580,1605],256],64955:[[1603,1605,1605],256],64956:[[1604,1580,1605],256],64957:[[1606,1580,1581],256],64958:[[1580,1581,1610],256],64959:[[1581,1580,1610],256],64960:[[1605,1580,1610],256],64961:[[1601,1605,1610],256],64962:[[1576,1581,1610],256],64963:[[1603,1605,1605],256],64964:[[1593,1580,1605],256],64965:[[1589,1605,1605],256],64966:[[1587,1582,1610],256],64967:[[1606,1580,1610],256],65008:[[1589,1604,1746],256],65009:[[1602,1604,1746],256],65010:[[1575,1604,1604,1607],256],65011:[[1575,1603,1576,1585],256],65012:[[1605,1581,1605,1583],256],65013:[[1589,1604,1593,1605],256],65014:[[1585,1587,1608,1604],256],65015:[[1593,1604,1610,1607],256],65016:[[1608,1587,1604,1605],256],65017:[[1589,1604,1609],256],65018:[[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605],256],65019:[[1580,1604,32,1580,1604,1575,1604,1607],256],65020:[[1585,1740,1575,1604],256]},
6994 65024:{65040:[[44],256],65041:[[12289],256],65042:[[12290],256],65043:[[58],256],65044:[[59],256],65045:[[33],256],65046:[[63],256],65047:[[12310],256],65048:[[12311],256],65049:[[8230],256],65056:[,230],65057:[,230],65058:[,230],65059:[,230],65060:[,230],65061:[,230],65062:[,230],65063:[,220],65064:[,220],65065:[,220],65066:[,220],65067:[,220],65068:[,220],65069:[,220],65072:[[8229],256],65073:[[8212],256],65074:[[8211],256],65075:[[95],256],65076:[[95],256],65077:[[40],256],65078:[[41],256],65079:[[123],256],65080:[[125],256],65081:[[12308],256],65082:[[12309],256],65083:[[12304],256],65084:[[12305],256],65085:[[12298],256],65086:[[12299],256],65087:[[12296],256],65088:[[12297],256],65089:[[12300],256],65090:[[12301],256],65091:[[12302],256],65092:[[12303],256],65095:[[91],256],65096:[[93],256],65097:[[8254],256],65098:[[8254],256],65099:[[8254],256],65100:[[8254],256],65101:[[95],256],65102:[[95],256],65103:[[95],256],65104:[[44],256],65105:[[12289],256],65106:[[46],256],65108:[[59],256],65109:[[58],256],65110:[[63],256],65111:[[33],256],65112:[[8212],256],65113:[[40],256],65114:[[41],256],65115:[[123],256],65116:[[125],256],65117:[[12308],256],65118:[[12309],256],65119:[[35],256],65120:[[38],256],65121:[[42],256],65122:[[43],256],65123:[[45],256],65124:[[60],256],65125:[[62],256],65126:[[61],256],65128:[[92],256],65129:[[36],256],65130:[[37],256],65131:[[64],256],65136:[[32,1611],256],65137:[[1600,1611],256],65138:[[32,1612],256],65140:[[32,1613],256],65142:[[32,1614],256],65143:[[1600,1614],256],65144:[[32,1615],256],65145:[[1600,1615],256],65146:[[32,1616],256],65147:[[1600,1616],256],65148:[[32,1617],256],65149:[[1600,1617],256],65150:[[32,1618],256],65151:[[1600,1618],256],65152:[[1569],256],65153:[[1570],256],65154:[[1570],256],65155:[[1571],256],65156:[[1571],256],65157:[[1572],256],65158:[[1572],256],65159:[[1573],256],65160:[[1573],256],65161:[[1574],256],65162:[[1574],256],65163:[[1574],256],65164:[[1574],256],65165:[[1575],256],65166:[[1575],256],65167:[[1576],256],65168:[[1576],256],65169:[[1576],256],65170:[[1576],256],65171:[[1577],256],65172:[[1577],256],65173:[[1578],256],65174:[[1578],256],65175:[[1578],256],65176:[[1578],256],65177:[[1579],256],65178:[[1579],256],65179:[[1579],256],65180:[[1579],256],65181:[[1580],256],65182:[[1580],256],65183:[[1580],256],65184:[[1580],256],65185:[[1581],256],65186:[[1581],256],65187:[[1581],256],65188:[[1581],256],65189:[[1582],256],65190:[[1582],256],65191:[[1582],256],65192:[[1582],256],65193:[[1583],256],65194:[[1583],256],65195:[[1584],256],65196:[[1584],256],65197:[[1585],256],65198:[[1585],256],65199:[[1586],256],65200:[[1586],256],65201:[[1587],256],65202:[[1587],256],65203:[[1587],256],65204:[[1587],256],65205:[[1588],256],65206:[[1588],256],65207:[[1588],256],65208:[[1588],256],65209:[[1589],256],65210:[[1589],256],65211:[[1589],256],65212:[[1589],256],65213:[[1590],256],65214:[[1590],256],65215:[[1590],256],65216:[[1590],256],65217:[[1591],256],65218:[[1591],256],65219:[[1591],256],65220:[[1591],256],65221:[[1592],256],65222:[[1592],256],65223:[[1592],256],65224:[[1592],256],65225:[[1593],256],65226:[[1593],256],65227:[[1593],256],65228:[[1593],256],65229:[[1594],256],65230:[[1594],256],65231:[[1594],256],65232:[[1594],256],65233:[[1601],256],65234:[[1601],256],65235:[[1601],256],65236:[[1601],256],65237:[[1602],256],65238:[[1602],256],65239:[[1602],256],65240:[[1602],256],65241:[[1603],256],65242:[[1603],256],65243:[[1603],256],65244:[[1603],256],65245:[[1604],256],65246:[[1604],256],65247:[[1604],256],65248:[[1604],256],65249:[[1605],256],65250:[[1605],256],65251:[[1605],256],65252:[[1605],256],65253:[[1606],256],65254:[[1606],256],65255:[[1606],256],65256:[[1606],256],65257:[[1607],256],65258:[[1607],256],65259:[[1607],256],65260:[[1607],256],65261:[[1608],256],65262:[[1608],256],65263:[[1609],256],65264:[[1609],256],65265:[[1610],256],65266:[[1610],256],65267:[[1610],256],65268:[[1610],256],65269:[[1604,1570],256],65270:[[1604,1570],256],65271:[[1604,1571],256],65272:[[1604,1571],256],65273:[[1604,1573],256],65274:[[1604,1573],256],65275:[[1604,1575],256],65276:[[1604,1575],256]},
6995 65280:{65281:[[33],256],65282:[[34],256],65283:[[35],256],65284:[[36],256],65285:[[37],256],65286:[[38],256],65287:[[39],256],65288:[[40],256],65289:[[41],256],65290:[[42],256],65291:[[43],256],65292:[[44],256],65293:[[45],256],65294:[[46],256],65295:[[47],256],65296:[[48],256],65297:[[49],256],65298:[[50],256],65299:[[51],256],65300:[[52],256],65301:[[53],256],65302:[[54],256],65303:[[55],256],65304:[[56],256],65305:[[57],256],65306:[[58],256],65307:[[59],256],65308:[[60],256],65309:[[61],256],65310:[[62],256],65311:[[63],256],65312:[[64],256],65313:[[65],256],65314:[[66],256],65315:[[67],256],65316:[[68],256],65317:[[69],256],65318:[[70],256],65319:[[71],256],65320:[[72],256],65321:[[73],256],65322:[[74],256],65323:[[75],256],65324:[[76],256],65325:[[77],256],65326:[[78],256],65327:[[79],256],65328:[[80],256],65329:[[81],256],65330:[[82],256],65331:[[83],256],65332:[[84],256],65333:[[85],256],65334:[[86],256],65335:[[87],256],65336:[[88],256],65337:[[89],256],65338:[[90],256],65339:[[91],256],65340:[[92],256],65341:[[93],256],65342:[[94],256],65343:[[95],256],65344:[[96],256],65345:[[97],256],65346:[[98],256],65347:[[99],256],65348:[[100],256],65349:[[101],256],65350:[[102],256],65351:[[103],256],65352:[[104],256],65353:[[105],256],65354:[[106],256],65355:[[107],256],65356:[[108],256],65357:[[109],256],65358:[[110],256],65359:[[111],256],65360:[[112],256],65361:[[113],256],65362:[[114],256],65363:[[115],256],65364:[[116],256],65365:[[117],256],65366:[[118],256],65367:[[119],256],65368:[[120],256],65369:[[121],256],65370:[[122],256],65371:[[123],256],65372:[[124],256],65373:[[125],256],65374:[[126],256],65375:[[10629],256],65376:[[10630],256],65377:[[12290],256],65378:[[12300],256],65379:[[12301],256],65380:[[12289],256],65381:[[12539],256],65382:[[12530],256],65383:[[12449],256],65384:[[12451],256],65385:[[12453],256],65386:[[12455],256],65387:[[12457],256],65388:[[12515],256],65389:[[12517],256],65390:[[12519],256],65391:[[12483],256],65392:[[12540],256],65393:[[12450],256],65394:[[12452],256],65395:[[12454],256],65396:[[12456],256],65397:[[12458],256],65398:[[12459],256],65399:[[12461],256],65400:[[12463],256],65401:[[12465],256],65402:[[12467],256],65403:[[12469],256],65404:[[12471],256],65405:[[12473],256],65406:[[12475],256],65407:[[12477],256],65408:[[12479],256],65409:[[12481],256],65410:[[12484],256],65411:[[12486],256],65412:[[12488],256],65413:[[12490],256],65414:[[12491],256],65415:[[12492],256],65416:[[12493],256],65417:[[12494],256],65418:[[12495],256],65419:[[12498],256],65420:[[12501],256],65421:[[12504],256],65422:[[12507],256],65423:[[12510],256],65424:[[12511],256],65425:[[12512],256],65426:[[12513],256],65427:[[12514],256],65428:[[12516],256],65429:[[12518],256],65430:[[12520],256],65431:[[12521],256],65432:[[12522],256],65433:[[12523],256],65434:[[12524],256],65435:[[12525],256],65436:[[12527],256],65437:[[12531],256],65438:[[12441],256],65439:[[12442],256],65440:[[12644],256],65441:[[12593],256],65442:[[12594],256],65443:[[12595],256],65444:[[12596],256],65445:[[12597],256],65446:[[12598],256],65447:[[12599],256],65448:[[12600],256],65449:[[12601],256],65450:[[12602],256],65451:[[12603],256],65452:[[12604],256],65453:[[12605],256],65454:[[12606],256],65455:[[12607],256],65456:[[12608],256],65457:[[12609],256],65458:[[12610],256],65459:[[12611],256],65460:[[12612],256],65461:[[12613],256],65462:[[12614],256],65463:[[12615],256],65464:[[12616],256],65465:[[12617],256],65466:[[12618],256],65467:[[12619],256],65468:[[12620],256],65469:[[12621],256],65470:[[12622],256],65474:[[12623],256],65475:[[12624],256],65476:[[12625],256],65477:[[12626],256],65478:[[12627],256],65479:[[12628],256],65482:[[12629],256],65483:[[12630],256],65484:[[12631],256],65485:[[12632],256],65486:[[12633],256],65487:[[12634],256],65490:[[12635],256],65491:[[12636],256],65492:[[12637],256],65493:[[12638],256],65494:[[12639],256],65495:[[12640],256],65498:[[12641],256],65499:[[12642],256],65500:[[12643],256],65504:[[162],256],65505:[[163],256],65506:[[172],256],65507:[[175],256],65508:[[166],256],65509:[[165],256],65510:[[8361],256],65512:[[9474],256],65513:[[8592],256],65514:[[8593],256],65515:[[8594],256],65516:[[8595],256],65517:[[9632],256],65518:[[9675],256]}
6996
6997 };
6998
6999 /***** Module to export */
7000 var unorm = {
7001 nfc: nfc,
7002 nfd: nfd,
7003 nfkc: nfkc,
7004 nfkd: nfkd
7005 };
7006
7007 /*globals module:true,define:true*/
7008
7009 // CommonJS
7010 if (typeof module === "object") {
7011 module.exports = unorm;
7012
7013 // AMD
7014 } else if (typeof define === "function" && define.amd) {
7015 define("unorm", function () {
7016 return unorm;
7017 });
7018
7019 // Global
7020 } else {
7021 root.unorm = unorm;
7022 }
7023
7024 /***** Export as shim for String::normalize method *****/
7025 /*
7026 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
7027
7028 21.1.3.12 String.prototype.normalize(form="NFC")
7029 When the normalize method is called with one argument form, the following steps are taken:
7030
7031 1. Let O be CheckObjectCoercible(this value).
7032 2. Let S be ToString(O).
7033 3. ReturnIfAbrupt(S).
7034 4. If form is not provided or undefined let form be "NFC".
7035 5. Let f be ToString(form).
7036 6. ReturnIfAbrupt(f).
7037 7. If f is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw a RangeError Exception.
7038 8. Let ns be the String value is the result of normalizing S into the normalization form named by f as specified in Unicode Standard Annex #15, UnicodeNormalizatoin Forms.
7039 9. Return ns.
7040
7041 The length property of the normalize method is 0.
7042
7043 *NOTE* The normalize function is intentionally generic; it does not require that its this value be a String object. Therefore it can be transferred to other kinds of objects for use as a method.
7044 */
7045 unorm.shimApplied = false;
7046
7047 if (!String.prototype.normalize) {
7048 String.prototype.normalize = function(form) {
7049 var str = "" + this;
7050 form = form === undefined ? "NFC" : form;
7051
7052 if (form === "NFC") {
7053 return unorm.nfc(str);
7054 } else if (form === "NFD") {
7055 return unorm.nfd(str);
7056 } else if (form === "NFKC") {
7057 return unorm.nfkc(str);
7058 } else if (form === "NFKD") {
7059 return unorm.nfkd(str);
7060 } else {
7061 throw new RangeError("Invalid normalization form: " + form);
7062 }
7063 };
7064
7065 unorm.shimApplied = true;
7066 }
7067 }(this));
7068 </script>
7069 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
7070 !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)
7071 },_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))
7072 },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});
7073 </script>
7074 <script>/*!
7075 * Bootstrap v3.2.0 (http://getbootstrap.com)
7076 * Copyright 2011-2014 Twitter, Inc.
7077 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7078 */
7079 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);</script>
7080 <script>(function() {
7081 'use strict';
7082
7083 /**
7084 * Extend an Object with another Object's properties.
7085 *
7086 * The source objects are specified as additional arguments.
7087 *
7088 * @param dst Object the object to extend.
7089 *
7090 * @return Object the final object.
7091 */
7092 var _extend = function(dst) {
7093 var sources = Array.prototype.slice.call(arguments, 1);
7094 for (var i=0; i<sources.length; ++i) {
7095 var src = sources[i];
7096 for (var p in src) {
7097 if (src.hasOwnProperty(p)) dst[p] = src[p];
7098 }
7099 }
7100 return dst;
7101 };
7102
7103
7104 /**
7105 * Defer execution of given function.
7106 * @param {Function} func
7107 */
7108 var _defer = function(func) {
7109 if (typeof setImmediate === 'function') {
7110 return setImmediate(func);
7111 } else {
7112 return setTimeout(func, 0);
7113 }
7114 };
7115
7116 /**
7117 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
7118 */
7119 var Levenshtein = {
7120 /**
7121 * Calculate levenshtein distance of the two strings.
7122 *
7123 * @param str1 String the first string.
7124 * @param str2 String the second string.
7125 * @return Integer the levenshtein distance (0 and above).
7126 */
7127 get: function(str1, str2) {
7128 // base cases
7129 if (str1 === str2) return 0;
7130 if (str1.length === 0) return str2.length;
7131 if (str2.length === 0) return str1.length;
7132
7133 // two rows
7134 var prevRow = new Array(str2.length + 1),
7135 curCol, nextCol, i, j, tmp;
7136
7137 // initialise previous row
7138 for (i=0; i<prevRow.length; ++i) {
7139 prevRow[i] = i;
7140 }
7141
7142 // calculate current row distance from previous row
7143 for (i=0; i<str1.length; ++i) {
7144 nextCol = i + 1;
7145
7146 for (j=0; j<str2.length; ++j) {
7147 curCol = nextCol;
7148
7149 // substution
7150 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7151 // insertion
7152 tmp = curCol + 1;
7153 if (nextCol > tmp) {
7154 nextCol = tmp;
7155 }
7156 // deletion
7157 tmp = prevRow[j + 1] + 1;
7158 if (nextCol > tmp) {
7159 nextCol = tmp;
7160 }
7161
7162 // copy current col value into previous (in preparation for next iteration)
7163 prevRow[j] = curCol;
7164 }
7165
7166 // copy last col value into previous (in preparation for next iteration)
7167 prevRow[j] = nextCol;
7168 }
7169
7170 return nextCol;
7171 },
7172
7173 /**
7174 * Asynchronously calculate levenshtein distance of the two strings.
7175 *
7176 * @param str1 String the first string.
7177 * @param str2 String the second string.
7178 * @param cb Function callback function with signature: function(Error err, int distance)
7179 * @param [options] Object additional options.
7180 * @param [options.progress] Function progress callback with signature: function(percentComplete)
7181 */
7182 getAsync: function(str1, str2, cb, options) {
7183 options = _extend({}, {
7184 progress: null
7185 }, options);
7186
7187 // base cases
7188 if (str1 === str2) return cb(null, 0);
7189 if (str1.length === 0) return cb(null, str2.length);
7190 if (str2.length === 0) return cb(null, str1.length);
7191
7192 // two rows
7193 var prevRow = new Array(str2.length + 1),
7194 curCol, nextCol,
7195 i, j, tmp,
7196 startTime, currentTime;
7197
7198 // initialise previous row
7199 for (i=0; i<prevRow.length; ++i) {
7200 prevRow[i] = i;
7201 }
7202
7203 nextCol = 1;
7204 i = 0;
7205 j = -1;
7206
7207 var __calculate = function() {
7208 // reset timer
7209 startTime = new Date().valueOf();
7210 currentTime = startTime;
7211
7212 // keep going until one second has elapsed
7213 while (currentTime - startTime < 1000) {
7214 // reached end of current row?
7215 if (str2.length <= (++j)) {
7216 // copy current into previous (in preparation for next iteration)
7217 prevRow[j] = nextCol;
7218
7219 // if already done all chars
7220 if (str1.length <= (++i)) {
7221 return cb(null, nextCol);
7222 }
7223 // else if we have more left to do
7224 else {
7225 nextCol = i + 1;
7226 j = 0;
7227 }
7228 }
7229
7230 // calculation
7231 curCol = nextCol;
7232
7233 // substution
7234 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7235 // insertion
7236 tmp = curCol + 1;
7237 if (nextCol > tmp) {
7238 nextCol = tmp;
7239 }
7240 // deletion
7241 tmp = prevRow[j + 1] + 1;
7242 if (nextCol > tmp) {
7243 nextCol = tmp;
7244 }
7245
7246 // copy current into previous (in preparation for next iteration)
7247 prevRow[j] = curCol;
7248
7249 // get current time
7250 currentTime = new Date().valueOf();
7251 }
7252
7253 // send a progress update?
7254 if (null !== options.progress) {
7255 try {
7256 options.progress.call(null, (i * 100.0/ str1.length));
7257 } catch (err) {
7258 return cb('Progress callback: ' + err.toString());
7259 }
7260 }
7261
7262 // next iteration
7263 _defer(__calculate);
7264 };
7265
7266 __calculate();
7267 }
7268
7269 };
7270
7271 // amd
7272 if (typeof define !== "undefined" && define !== null && define.amd) {
7273 define(function() {
7274 return Levenshtein;
7275 });
7276 }
7277 // commonjs
7278 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
7279 module.exports = Levenshtein;
7280 }
7281 // web worker
7282 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
7283 self.Levenshtein = Levenshtein;
7284 }
7285 // browser main thread
7286 else if (typeof window !== "undefined" && window !== null) {
7287 window.Levenshtein = Levenshtein;
7288 }
7289 }());
7290
7291 </script>
7292 <script>(function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.data=a}function o(a,c){this.typeNumber=a;this.errorCorrectLevel=c;this.modules=null;this.moduleCount=0;this.dataCache=null;this.dataList=[]}function q(a,c){if(void 0==a.length)throw Error(a.length+"/"+c);for(var d=0;d<a.length&&0==a[d];)d++;this.num=Array(a.length-d+c);for(var b=0;b<a.length-d;b++)this.num[b]=a[b+d]}function p(a,c){this.totalCount=a;this.dataCount=c}function t(){this.buffer=[];this.length=0}u.prototype={getLength:function(){return this.data.length},
7293 write:function(a){for(var c=0;c<this.data.length;c++)a.put(this.data.charCodeAt(c),8)}};o.prototype={addData:function(a){this.dataList.push(new u(a));this.dataCache=null},isDark:function(a,c){if(0>a||this.moduleCount<=a||0>c||this.moduleCount<=c)throw Error(a+","+c);return this.modules[a][c]},getModuleCount:function(){return this.moduleCount},make:function(){if(1>this.typeNumber){for(var a=1,a=1;40>a;a++){for(var c=p.getRSBlocks(a,this.errorCorrectLevel),d=new t,b=0,e=0;e<c.length;e++)b+=c[e].dataCount;
7294 for(e=0;e<this.dataList.length;e++)c=this.dataList[e],d.put(c.mode,4),d.put(c.getLength(),j.getLengthInBits(c.mode,a)),c.write(d);if(d.getLengthInBits()<=8*b)break}this.typeNumber=a}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17;this.modules=Array(this.moduleCount);for(var d=0;d<this.moduleCount;d++){this.modules[d]=Array(this.moduleCount);for(var b=0;b<this.moduleCount;b++)this.modules[d][b]=null}this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-
7295 7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(a,c);7<=this.typeNumber&&this.setupTypeNumber(a);null==this.dataCache&&(this.dataCache=o.createData(this.typeNumber,this.errorCorrectLevel,this.dataList));this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,c){for(var d=-1;7>=d;d++)if(!(-1>=a+d||this.moduleCount<=a+d))for(var b=-1;7>=b;b++)-1>=c+b||this.moduleCount<=c+b||(this.modules[a+d][c+b]=
7296 0<=d&&6>=d&&(0==b||6==b)||0<=b&&6>=b&&(0==d||6==d)||2<=d&&4>=d&&2<=b&&4>=b?!0:!1)},getBestMaskPattern:function(){for(var a=0,c=0,d=0;8>d;d++){this.makeImpl(!0,d);var b=j.getLostPoint(this);if(0==d||a>b)a=b,c=d}return c},createMovieClip:function(a,c,d){a=a.createEmptyMovieClip(c,d);this.make();for(c=0;c<this.modules.length;c++)for(var d=1*c,b=0;b<this.modules[c].length;b++){var e=1*b;this.modules[c][b]&&(a.beginFill(0,100),a.moveTo(e,d),a.lineTo(e+1,d),a.lineTo(e+1,d+1),a.lineTo(e,d+1),a.endFill())}return a},
7297 setupTimingPattern:function(){for(var a=8;a<this.moduleCount-8;a++)null==this.modules[a][6]&&(this.modules[a][6]=0==a%2);for(a=8;a<this.moduleCount-8;a++)null==this.modules[6][a]&&(this.modules[6][a]=0==a%2)},setupPositionAdjustPattern:function(){for(var a=j.getPatternPosition(this.typeNumber),c=0;c<a.length;c++)for(var d=0;d<a.length;d++){var b=a[c],e=a[d];if(null==this.modules[b][e])for(var f=-2;2>=f;f++)for(var i=-2;2>=i;i++)this.modules[b+f][e+i]=-2==f||2==f||-2==i||2==i||0==f&&0==i?!0:!1}},setupTypeNumber:function(a){for(var c=
7298 j.getBCHTypeNumber(this.typeNumber),d=0;18>d;d++){var b=!a&&1==(c>>d&1);this.modules[Math.floor(d/3)][d%3+this.moduleCount-8-3]=b}for(d=0;18>d;d++)b=!a&&1==(c>>d&1),this.modules[d%3+this.moduleCount-8-3][Math.floor(d/3)]=b},setupTypeInfo:function(a,c){for(var d=j.getBCHTypeInfo(this.errorCorrectLevel<<3|c),b=0;15>b;b++){var e=!a&&1==(d>>b&1);6>b?this.modules[b][8]=e:8>b?this.modules[b+1][8]=e:this.modules[this.moduleCount-15+b][8]=e}for(b=0;15>b;b++)e=!a&&1==(d>>b&1),8>b?this.modules[8][this.moduleCount-
7299 b-1]=e:9>b?this.modules[8][15-b-1+1]=e:this.modules[8][15-b-1]=e;this.modules[this.moduleCount-8][8]=!a},mapData:function(a,c){for(var d=-1,b=this.moduleCount-1,e=7,f=0,i=this.moduleCount-1;0<i;i-=2)for(6==i&&i--;;){for(var g=0;2>g;g++)if(null==this.modules[b][i-g]){var n=!1;f<a.length&&(n=1==(a[f]>>>e&1));j.getMask(c,b,i-g)&&(n=!n);this.modules[b][i-g]=n;e--; -1==e&&(f++,e=7)}b+=d;if(0>b||this.moduleCount<=b){b-=d;d=-d;break}}}};o.PAD0=236;o.PAD1=17;o.createData=function(a,c,d){for(var c=p.getRSBlocks(a,
7300 c),b=new t,e=0;e<d.length;e++){var f=d[e];b.put(f.mode,4);b.put(f.getLength(),j.getLengthInBits(f.mode,a));f.write(b)}for(e=a=0;e<c.length;e++)a+=c[e].dataCount;if(b.getLengthInBits()>8*a)throw Error("code length overflow. ("+b.getLengthInBits()+">"+8*a+")");for(b.getLengthInBits()+4<=8*a&&b.put(0,4);0!=b.getLengthInBits()%8;)b.putBit(!1);for(;!(b.getLengthInBits()>=8*a);){b.put(o.PAD0,8);if(b.getLengthInBits()>=8*a)break;b.put(o.PAD1,8)}return o.createBytes(b,c)};o.createBytes=function(a,c){for(var d=
7301 0,b=0,e=0,f=Array(c.length),i=Array(c.length),g=0;g<c.length;g++){var n=c[g].dataCount,h=c[g].totalCount-n,b=Math.max(b,n),e=Math.max(e,h);f[g]=Array(n);for(var k=0;k<f[g].length;k++)f[g][k]=255&a.buffer[k+d];d+=n;k=j.getErrorCorrectPolynomial(h);n=(new q(f[g],k.getLength()-1)).mod(k);i[g]=Array(k.getLength()-1);for(k=0;k<i[g].length;k++)h=k+n.getLength()-i[g].length,i[g][k]=0<=h?n.get(h):0}for(k=g=0;k<c.length;k++)g+=c[k].totalCount;d=Array(g);for(k=n=0;k<b;k++)for(g=0;g<c.length;g++)k<f[g].length&&
7302 (d[n++]=f[g][k]);for(k=0;k<e;k++)for(g=0;g<c.length;g++)k<i[g].length&&(d[n++]=i[g][k]);return d};s=4;for(var j={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,
7303 78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(a){for(var c=a<<10;0<=j.getBCHDigit(c)-j.getBCHDigit(j.G15);)c^=j.G15<<j.getBCHDigit(c)-j.getBCHDigit(j.G15);return(a<<10|c)^j.G15_MASK},getBCHTypeNumber:function(a){for(var c=a<<12;0<=j.getBCHDigit(c)-
7304 j.getBCHDigit(j.G18);)c^=j.G18<<j.getBCHDigit(c)-j.getBCHDigit(j.G18);return a<<12|c},getBCHDigit:function(a){for(var c=0;0!=a;)c++,a>>>=1;return c},getPatternPosition:function(a){return j.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,c,d){switch(a){case 0:return 0==(c+d)%2;case 1:return 0==c%2;case 2:return 0==d%3;case 3:return 0==(c+d)%3;case 4:return 0==(Math.floor(c/2)+Math.floor(d/3))%2;case 5:return 0==c*d%2+c*d%3;case 6:return 0==(c*d%2+c*d%3)%2;case 7:return 0==(c*d%3+(c+d)%2)%2;default:throw Error("bad maskPattern:"+
7305 a);}},getErrorCorrectPolynomial:function(a){for(var c=new q([1],0),d=0;d<a;d++)c=c.multiply(new q([1,l.gexp(d)],0));return c},getLengthInBits:function(a,c){if(1<=c&&10>c)switch(a){case 1:return 10;case 2:return 9;case s:return 8;case 8:return 8;default:throw Error("mode:"+a);}else if(27>c)switch(a){case 1:return 12;case 2:return 11;case s:return 16;case 8:return 10;default:throw Error("mode:"+a);}else if(41>c)switch(a){case 1:return 14;case 2:return 13;case s:return 16;case 8:return 12;default:throw Error("mode:"+
7306 a);}else throw Error("type:"+c);},getLostPoint:function(a){for(var c=a.getModuleCount(),d=0,b=0;b<c;b++)for(var e=0;e<c;e++){for(var f=0,i=a.isDark(b,e),g=-1;1>=g;g++)if(!(0>b+g||c<=b+g))for(var h=-1;1>=h;h++)0>e+h||c<=e+h||0==g&&0==h||i==a.isDark(b+g,e+h)&&f++;5<f&&(d+=3+f-5)}for(b=0;b<c-1;b++)for(e=0;e<c-1;e++)if(f=0,a.isDark(b,e)&&f++,a.isDark(b+1,e)&&f++,a.isDark(b,e+1)&&f++,a.isDark(b+1,e+1)&&f++,0==f||4==f)d+=3;for(b=0;b<c;b++)for(e=0;e<c-6;e++)a.isDark(b,e)&&!a.isDark(b,e+1)&&a.isDark(b,e+
7307 2)&&a.isDark(b,e+3)&&a.isDark(b,e+4)&&!a.isDark(b,e+5)&&a.isDark(b,e+6)&&(d+=40);for(e=0;e<c;e++)for(b=0;b<c-6;b++)a.isDark(b,e)&&!a.isDark(b+1,e)&&a.isDark(b+2,e)&&a.isDark(b+3,e)&&a.isDark(b+4,e)&&!a.isDark(b+5,e)&&a.isDark(b+6,e)&&(d+=40);for(e=f=0;e<c;e++)for(b=0;b<c;b++)a.isDark(b,e)&&f++;a=Math.abs(100*f/c/c-50)/5;return d+10*a}},l={glog:function(a){if(1>a)throw Error("glog("+a+")");return l.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;256<=a;)a-=255;return l.EXP_TABLE[a]},EXP_TABLE:Array(256),
7308 LOG_TABLE:Array(256)},m=0;8>m;m++)l.EXP_TABLE[m]=1<<m;for(m=8;256>m;m++)l.EXP_TABLE[m]=l.EXP_TABLE[m-4]^l.EXP_TABLE[m-5]^l.EXP_TABLE[m-6]^l.EXP_TABLE[m-8];for(m=0;255>m;m++)l.LOG_TABLE[l.EXP_TABLE[m]]=m;q.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var c=Array(this.getLength()+a.getLength()-1),d=0;d<this.getLength();d++)for(var b=0;b<a.getLength();b++)c[d+b]^=l.gexp(l.glog(this.get(d))+l.glog(a.get(b)));return new q(c,0)},mod:function(a){if(0>
7309 this.getLength()-a.getLength())return this;for(var c=l.glog(this.get(0))-l.glog(a.get(0)),d=Array(this.getLength()),b=0;b<this.getLength();b++)d[b]=this.get(b);for(b=0;b<a.getLength();b++)d[b]^=l.gexp(l.glog(a.get(b))+c);return(new q(d,0)).mod(a)}};p.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],
7310 [4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,
7311 116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,
7312 43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,
7313 3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,
7314 55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,
7315 45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];p.getRSBlocks=function(a,c){var d=p.getRsBlockTable(a,c);if(void 0==d)throw Error("bad rs block @ typeNumber:"+a+"/errorCorrectLevel:"+c);for(var b=d.length/3,e=[],f=0;f<b;f++)for(var h=d[3*f+0],g=d[3*f+1],j=d[3*f+2],l=0;l<h;l++)e.push(new p(g,j));return e};p.getRsBlockTable=function(a,c){switch(c){case 1:return p.RS_BLOCK_TABLE[4*(a-1)+0];case 0:return p.RS_BLOCK_TABLE[4*(a-1)+1];case 3:return p.RS_BLOCK_TABLE[4*
7316 (a-1)+2];case 2:return p.RS_BLOCK_TABLE[4*(a-1)+3]}};t.prototype={get:function(a){return 1==(this.buffer[Math.floor(a/8)]>>>7-a%8&1)},put:function(a,c){for(var d=0;d<c;d++)this.putBit(1==(a>>>c-d-1&1))},getLengthInBits:function(){return this.length},putBit:function(a){var c=Math.floor(this.length/8);this.buffer.length<=c&&this.buffer.push(0);a&&(this.buffer[c]|=128>>>this.length%8);this.length++}};"string"===typeof h&&(h={text:h});h=r.extend({},{render:"canvas",width:256,height:256,typeNumber:-1,
7317 correctLevel:3,background:"#ffffff",foreground:"#000000"},h);return this.each(function(){var a;if("canvas"==h.render){a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();var c=document.createElement("canvas");c.width=h.width;c.height=h.height;for(var d=c.getContext("2d"),b=h.width/a.getModuleCount(),e=h.height/a.getModuleCount(),f=0;f<a.getModuleCount();f++)for(var i=0;i<a.getModuleCount();i++){d.fillStyle=a.isDark(f,i)?h.foreground:h.background;var g=Math.ceil((i+1)*b)-Math.floor(i*b),
7318 j=Math.ceil((f+1)*b)-Math.floor(f*b);d.fillRect(Math.round(i*b),Math.round(f*e),g,j)}}else{a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();c=r("<table></table>").css("width",h.width+"px").css("height",h.height+"px").css("border","0px").css("border-collapse","collapse").css("background-color",h.background);d=h.width/a.getModuleCount();b=h.height/a.getModuleCount();for(e=0;e<a.getModuleCount();e++){f=r("<tr></tr>").css("height",b+"px").appendTo(c);for(i=0;i<a.getModuleCount();i++)r("<td></td>").css("width",
7319 d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
7320 </script>
7321 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.bitcoinjs = f()}})(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);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.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(require,module,exports){
7322 (function (global){
7323 'use strict';
7324
7325 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
7326 // original notice:
7327
7328 /*!
7329 * The buffer module from node.js, for the browser.
7330 *
7331 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7332 * @license MIT
7333 */
7334 function compare(a, b) {
7335 if (a === b) {
7336 return 0;
7337 }
7338
7339 var x = a.length;
7340 var y = b.length;
7341
7342 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
7343 if (a[i] !== b[i]) {
7344 x = a[i];
7345 y = b[i];
7346 break;
7347 }
7348 }
7349
7350 if (x < y) {
7351 return -1;
7352 }
7353 if (y < x) {
7354 return 1;
7355 }
7356 return 0;
7357 }
7358 function isBuffer(b) {
7359 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
7360 return global.Buffer.isBuffer(b);
7361 }
7362 return !!(b != null && b._isBuffer);
7363 }
7364
7365 // based on node assert, original notice:
7366
7367 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
7368 //
7369 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
7370 //
7371 // Originally from narwhal.js (http://narwhaljs.org)
7372 // Copyright (c) 2009 Thomas Robinson <280north.com>
7373 //
7374 // Permission is hereby granted, free of charge, to any person obtaining a copy
7375 // of this software and associated documentation files (the 'Software'), to
7376 // deal in the Software without restriction, including without limitation the
7377 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7378 // sell copies of the Software, and to permit persons to whom the Software is
7379 // furnished to do so, subject to the following conditions:
7380 //
7381 // The above copyright notice and this permission notice shall be included in
7382 // all copies or substantial portions of the Software.
7383 //
7384 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7385 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7386 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
7387 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
7388 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
7389 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
7390
7391 var util = require('util/');
7392 var hasOwn = Object.prototype.hasOwnProperty;
7393 var pSlice = Array.prototype.slice;
7394 var functionsHaveNames = (function () {
7395 return function foo() {}.name === 'foo';
7396 }());
7397 function pToString (obj) {
7398 return Object.prototype.toString.call(obj);
7399 }
7400 function isView(arrbuf) {
7401 if (isBuffer(arrbuf)) {
7402 return false;
7403 }
7404 if (typeof global.ArrayBuffer !== 'function') {
7405 return false;
7406 }
7407 if (typeof ArrayBuffer.isView === 'function') {
7408 return ArrayBuffer.isView(arrbuf);
7409 }
7410 if (!arrbuf) {
7411 return false;
7412 }
7413 if (arrbuf instanceof DataView) {
7414 return true;
7415 }
7416 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
7417 return true;
7418 }
7419 return false;
7420 }
7421 // 1. The assert module provides functions that throw
7422 // AssertionError's when particular conditions are not met. The
7423 // assert module must conform to the following interface.
7424
7425 var assert = module.exports = ok;
7426
7427 // 2. The AssertionError is defined in assert.
7428 // new assert.AssertionError({ message: message,
7429 // actual: actual,
7430 // expected: expected })
7431
7432 var regex = /\s*function\s+([^\(\s]*)\s*/;
7433 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
7434 function getName(func) {
7435 if (!util.isFunction(func)) {
7436 return;
7437 }
7438 if (functionsHaveNames) {
7439 return func.name;
7440 }
7441 var str = func.toString();
7442 var match = str.match(regex);
7443 return match && match[1];
7444 }
7445 assert.AssertionError = function AssertionError(options) {
7446 this.name = 'AssertionError';
7447 this.actual = options.actual;
7448 this.expected = options.expected;
7449 this.operator = options.operator;
7450 if (options.message) {
7451 this.message = options.message;
7452 this.generatedMessage = false;
7453 } else {
7454 this.message = getMessage(this);
7455 this.generatedMessage = true;
7456 }
7457 var stackStartFunction = options.stackStartFunction || fail;
7458 if (Error.captureStackTrace) {
7459 Error.captureStackTrace(this, stackStartFunction);
7460 } else {
7461 // non v8 browsers so we can have a stacktrace
7462 var err = new Error();
7463 if (err.stack) {
7464 var out = err.stack;
7465
7466 // try to strip useless frames
7467 var fn_name = getName(stackStartFunction);
7468 var idx = out.indexOf('\n' + fn_name);
7469 if (idx >= 0) {
7470 // once we have located the function frame
7471 // we need to strip out everything before it (and its line)
7472 var next_line = out.indexOf('\n', idx + 1);
7473 out = out.substring(next_line + 1);
7474 }
7475
7476 this.stack = out;
7477 }
7478 }
7479 };
7480
7481 // assert.AssertionError instanceof Error
7482 util.inherits(assert.AssertionError, Error);
7483
7484 function truncate(s, n) {
7485 if (typeof s === 'string') {
7486 return s.length < n ? s : s.slice(0, n);
7487 } else {
7488 return s;
7489 }
7490 }
7491 function inspect(something) {
7492 if (functionsHaveNames || !util.isFunction(something)) {
7493 return util.inspect(something);
7494 }
7495 var rawname = getName(something);
7496 var name = rawname ? ': ' + rawname : '';
7497 return '[Function' + name + ']';
7498 }
7499 function getMessage(self) {
7500 return truncate(inspect(self.actual), 128) + ' ' +
7501 self.operator + ' ' +
7502 truncate(inspect(self.expected), 128);
7503 }
7504
7505 // At present only the three keys mentioned above are used and
7506 // understood by the spec. Implementations or sub modules can pass
7507 // other keys to the AssertionError's constructor - they will be
7508 // ignored.
7509
7510 // 3. All of the following functions must throw an AssertionError
7511 // when a corresponding condition is not met, with a message that
7512 // may be undefined if not provided. All assertion methods provide
7513 // both the actual and expected values to the assertion error for
7514 // display purposes.
7515
7516 function fail(actual, expected, message, operator, stackStartFunction) {
7517 throw new assert.AssertionError({
7518 message: message,
7519 actual: actual,
7520 expected: expected,
7521 operator: operator,
7522 stackStartFunction: stackStartFunction
7523 });
7524 }
7525
7526 // EXTENSION! allows for well behaved errors defined elsewhere.
7527 assert.fail = fail;
7528
7529 // 4. Pure assertion tests whether a value is truthy, as determined
7530 // by !!guard.
7531 // assert.ok(guard, message_opt);
7532 // This statement is equivalent to assert.equal(true, !!guard,
7533 // message_opt);. To test strictly for the value true, use
7534 // assert.strictEqual(true, guard, message_opt);.
7535
7536 function ok(value, message) {
7537 if (!value) fail(value, true, message, '==', assert.ok);
7538 }
7539 assert.ok = ok;
7540
7541 // 5. The equality assertion tests shallow, coercive equality with
7542 // ==.
7543 // assert.equal(actual, expected, message_opt);
7544
7545 assert.equal = function equal(actual, expected, message) {
7546 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
7547 };
7548
7549 // 6. The non-equality assertion tests for whether two objects are not equal
7550 // with != assert.notEqual(actual, expected, message_opt);
7551
7552 assert.notEqual = function notEqual(actual, expected, message) {
7553 if (actual == expected) {
7554 fail(actual, expected, message, '!=', assert.notEqual);
7555 }
7556 };
7557
7558 // 7. The equivalence assertion tests a deep equality relation.
7559 // assert.deepEqual(actual, expected, message_opt);
7560
7561 assert.deepEqual = function deepEqual(actual, expected, message) {
7562 if (!_deepEqual(actual, expected, false)) {
7563 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
7564 }
7565 };
7566
7567 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
7568 if (!_deepEqual(actual, expected, true)) {
7569 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
7570 }
7571 };
7572
7573 function _deepEqual(actual, expected, strict, memos) {
7574 // 7.1. All identical values are equivalent, as determined by ===.
7575 if (actual === expected) {
7576 return true;
7577 } else if (isBuffer(actual) && isBuffer(expected)) {
7578 return compare(actual, expected) === 0;
7579
7580 // 7.2. If the expected value is a Date object, the actual value is
7581 // equivalent if it is also a Date object that refers to the same time.
7582 } else if (util.isDate(actual) && util.isDate(expected)) {
7583 return actual.getTime() === expected.getTime();
7584
7585 // 7.3 If the expected value is a RegExp object, the actual value is
7586 // equivalent if it is also a RegExp object with the same source and
7587 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
7588 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
7589 return actual.source === expected.source &&
7590 actual.global === expected.global &&
7591 actual.multiline === expected.multiline &&
7592 actual.lastIndex === expected.lastIndex &&
7593 actual.ignoreCase === expected.ignoreCase;
7594
7595 // 7.4. Other pairs that do not both pass typeof value == 'object',
7596 // equivalence is determined by ==.
7597 } else if ((actual === null || typeof actual !== 'object') &&
7598 (expected === null || typeof expected !== 'object')) {
7599 return strict ? actual === expected : actual == expected;
7600
7601 // If both values are instances of typed arrays, wrap their underlying
7602 // ArrayBuffers in a Buffer each to increase performance
7603 // This optimization requires the arrays to have the same type as checked by
7604 // Object.prototype.toString (aka pToString). Never perform binary
7605 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
7606 // bit patterns are not identical.
7607 } else if (isView(actual) && isView(expected) &&
7608 pToString(actual) === pToString(expected) &&
7609 !(actual instanceof Float32Array ||
7610 actual instanceof Float64Array)) {
7611 return compare(new Uint8Array(actual.buffer),
7612 new Uint8Array(expected.buffer)) === 0;
7613
7614 // 7.5 For all other Object pairs, including Array objects, equivalence is
7615 // determined by having the same number of owned properties (as verified
7616 // with Object.prototype.hasOwnProperty.call), the same set of keys
7617 // (although not necessarily the same order), equivalent values for every
7618 // corresponding key, and an identical 'prototype' property. Note: this
7619 // accounts for both named and indexed properties on Arrays.
7620 } else if (isBuffer(actual) !== isBuffer(expected)) {
7621 return false;
7622 } else {
7623 memos = memos || {actual: [], expected: []};
7624
7625 var actualIndex = memos.actual.indexOf(actual);
7626 if (actualIndex !== -1) {
7627 if (actualIndex === memos.expected.indexOf(expected)) {
7628 return true;
7629 }
7630 }
7631
7632 memos.actual.push(actual);
7633 memos.expected.push(expected);
7634
7635 return objEquiv(actual, expected, strict, memos);
7636 }
7637 }
7638
7639 function isArguments(object) {
7640 return Object.prototype.toString.call(object) == '[object Arguments]';
7641 }
7642
7643 function objEquiv(a, b, strict, actualVisitedObjects) {
7644 if (a === null || a === undefined || b === null || b === undefined)
7645 return false;
7646 // if one is a primitive, the other must be same
7647 if (util.isPrimitive(a) || util.isPrimitive(b))
7648 return a === b;
7649 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
7650 return false;
7651 var aIsArgs = isArguments(a);
7652 var bIsArgs = isArguments(b);
7653 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
7654 return false;
7655 if (aIsArgs) {
7656 a = pSlice.call(a);
7657 b = pSlice.call(b);
7658 return _deepEqual(a, b, strict);
7659 }
7660 var ka = objectKeys(a);
7661 var kb = objectKeys(b);
7662 var key, i;
7663 // having the same number of owned properties (keys incorporates
7664 // hasOwnProperty)
7665 if (ka.length !== kb.length)
7666 return false;
7667 //the same set of keys (although not necessarily the same order),
7668 ka.sort();
7669 kb.sort();
7670 //~~~cheap key test
7671 for (i = ka.length - 1; i >= 0; i--) {
7672 if (ka[i] !== kb[i])
7673 return false;
7674 }
7675 //equivalent values for every corresponding key, and
7676 //~~~possibly expensive deep test
7677 for (i = ka.length - 1; i >= 0; i--) {
7678 key = ka[i];
7679 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
7680 return false;
7681 }
7682 return true;
7683 }
7684
7685 // 8. The non-equivalence assertion tests for any deep inequality.
7686 // assert.notDeepEqual(actual, expected, message_opt);
7687
7688 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
7689 if (_deepEqual(actual, expected, false)) {
7690 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
7691 }
7692 };
7693
7694 assert.notDeepStrictEqual = notDeepStrictEqual;
7695 function notDeepStrictEqual(actual, expected, message) {
7696 if (_deepEqual(actual, expected, true)) {
7697 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
7698 }
7699 }
7700
7701
7702 // 9. The strict equality assertion tests strict equality, as determined by ===.
7703 // assert.strictEqual(actual, expected, message_opt);
7704
7705 assert.strictEqual = function strictEqual(actual, expected, message) {
7706 if (actual !== expected) {
7707 fail(actual, expected, message, '===', assert.strictEqual);
7708 }
7709 };
7710
7711 // 10. The strict non-equality assertion tests for strict inequality, as
7712 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
7713
7714 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
7715 if (actual === expected) {
7716 fail(actual, expected, message, '!==', assert.notStrictEqual);
7717 }
7718 };
7719
7720 function expectedException(actual, expected) {
7721 if (!actual || !expected) {
7722 return false;
7723 }
7724
7725 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
7726 return expected.test(actual);
7727 }
7728
7729 try {
7730 if (actual instanceof expected) {
7731 return true;
7732 }
7733 } catch (e) {
7734 // Ignore. The instanceof check doesn't work for arrow functions.
7735 }
7736
7737 if (Error.isPrototypeOf(expected)) {
7738 return false;
7739 }
7740
7741 return expected.call({}, actual) === true;
7742 }
7743
7744 function _tryBlock(block) {
7745 var error;
7746 try {
7747 block();
7748 } catch (e) {
7749 error = e;
7750 }
7751 return error;
7752 }
7753
7754 function _throws(shouldThrow, block, expected, message) {
7755 var actual;
7756
7757 if (typeof block !== 'function') {
7758 throw new TypeError('"block" argument must be a function');
7759 }
7760
7761 if (typeof expected === 'string') {
7762 message = expected;
7763 expected = null;
7764 }
7765
7766 actual = _tryBlock(block);
7767
7768 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
7769 (message ? ' ' + message : '.');
7770
7771 if (shouldThrow && !actual) {
7772 fail(actual, expected, 'Missing expected exception' + message);
7773 }
7774
7775 var userProvidedMessage = typeof message === 'string';
7776 var isUnwantedException = !shouldThrow && util.isError(actual);
7777 var isUnexpectedException = !shouldThrow && actual && !expected;
7778
7779 if ((isUnwantedException &&
7780 userProvidedMessage &&
7781 expectedException(actual, expected)) ||
7782 isUnexpectedException) {
7783 fail(actual, expected, 'Got unwanted exception' + message);
7784 }
7785
7786 if ((shouldThrow && actual && expected &&
7787 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
7788 throw actual;
7789 }
7790 }
7791
7792 // 11. Expected to throw an error:
7793 // assert.throws(block, Error_opt, message_opt);
7794
7795 assert.throws = function(block, /*optional*/error, /*optional*/message) {
7796 _throws(true, block, error, message);
7797 };
7798
7799 // EXTENSION! This is annoying to write outside this module.
7800 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
7801 _throws(false, block, error, message);
7802 };
7803
7804 assert.ifError = function(err) { if (err) throw err; };
7805
7806 var objectKeys = Object.keys || function (obj) {
7807 var keys = [];
7808 for (var key in obj) {
7809 if (hasOwn.call(obj, key)) keys.push(key);
7810 }
7811 return keys;
7812 };
7813
7814 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
7815 },{"util/":32}],2:[function(require,module,exports){
7816 'use strict'
7817
7818 exports.byteLength = byteLength
7819 exports.toByteArray = toByteArray
7820 exports.fromByteArray = fromByteArray
7821
7822 var lookup = []
7823 var revLookup = []
7824 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
7825
7826 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
7827 for (var i = 0, len = code.length; i < len; ++i) {
7828 lookup[i] = code[i]
7829 revLookup[code.charCodeAt(i)] = i
7830 }
7831
7832 revLookup['-'.charCodeAt(0)] = 62
7833 revLookup['_'.charCodeAt(0)] = 63
7834
7835 function placeHoldersCount (b64) {
7836 var len = b64.length
7837 if (len % 4 > 0) {
7838 throw new Error('Invalid string. Length must be a multiple of 4')
7839 }
7840
7841 // the number of equal signs (place holders)
7842 // if there are two placeholders, than the two characters before it
7843 // represent one byte
7844 // if there is only one, then the three characters before it represent 2 bytes
7845 // this is just a cheap hack to not do indexOf twice
7846 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
7847 }
7848
7849 function byteLength (b64) {
7850 // base64 is 4/3 + up to two characters of the original data
7851 return (b64.length * 3 / 4) - placeHoldersCount(b64)
7852 }
7853
7854 function toByteArray (b64) {
7855 var i, l, tmp, placeHolders, arr
7856 var len = b64.length
7857 placeHolders = placeHoldersCount(b64)
7858
7859 arr = new Arr((len * 3 / 4) - placeHolders)
7860
7861 // if there are placeholders, only get up to the last complete 4 chars
7862 l = placeHolders > 0 ? len - 4 : len
7863
7864 var L = 0
7865
7866 for (i = 0; i < l; i += 4) {
7867 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
7868 arr[L++] = (tmp >> 16) & 0xFF
7869 arr[L++] = (tmp >> 8) & 0xFF
7870 arr[L++] = tmp & 0xFF
7871 }
7872
7873 if (placeHolders === 2) {
7874 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
7875 arr[L++] = tmp & 0xFF
7876 } else if (placeHolders === 1) {
7877 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
7878 arr[L++] = (tmp >> 8) & 0xFF
7879 arr[L++] = tmp & 0xFF
7880 }
7881
7882 return arr
7883 }
7884
7885 function tripletToBase64 (num) {
7886 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
7887 }
7888
7889 function encodeChunk (uint8, start, end) {
7890 var tmp
7891 var output = []
7892 for (var i = start; i < end; i += 3) {
7893 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
7894 output.push(tripletToBase64(tmp))
7895 }
7896 return output.join('')
7897 }
7898
7899 function fromByteArray (uint8) {
7900 var tmp
7901 var len = uint8.length
7902 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
7903 var output = ''
7904 var parts = []
7905 var maxChunkLength = 16383 // must be multiple of 3
7906
7907 // go through the array every three bytes, we'll deal with trailing stuff later
7908 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
7909 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
7910 }
7911
7912 // pad the end with zeros, but make sure to not forget the extra bytes
7913 if (extraBytes === 1) {
7914 tmp = uint8[len - 1]
7915 output += lookup[tmp >> 2]
7916 output += lookup[(tmp << 4) & 0x3F]
7917 output += '=='
7918 } else if (extraBytes === 2) {
7919 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
7920 output += lookup[tmp >> 10]
7921 output += lookup[(tmp >> 4) & 0x3F]
7922 output += lookup[(tmp << 2) & 0x3F]
7923 output += '='
7924 }
7925
7926 parts.push(output)
7927
7928 return parts.join('')
7929 }
7930
7931 },{}],3:[function(require,module,exports){
7932
7933 },{}],4:[function(require,module,exports){
7934 /*!
7935 * The buffer module from node.js, for the browser.
7936 *
7937 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7938 * @license MIT
7939 */
7940 /* eslint-disable no-proto */
7941
7942 'use strict'
7943
7944 var base64 = require('base64-js')
7945 var ieee754 = require('ieee754')
7946
7947 exports.Buffer = Buffer
7948 exports.SlowBuffer = SlowBuffer
7949 exports.INSPECT_MAX_BYTES = 50
7950
7951 var K_MAX_LENGTH = 0x7fffffff
7952 exports.kMaxLength = K_MAX_LENGTH
7953
7954 /**
7955 * If `Buffer.TYPED_ARRAY_SUPPORT`:
7956 * === true Use Uint8Array implementation (fastest)
7957 * === false Print warning and recommend using `buffer` v4.x which has an Object
7958 * implementation (most compatible, even IE6)
7959 *
7960 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
7961 * Opera 11.6+, iOS 4.2+.
7962 *
7963 * We report that the browser does not support typed arrays if the are not subclassable
7964 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
7965 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
7966 * for __proto__ and has a buggy typed array implementation.
7967 */
7968 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
7969
7970 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
7971 typeof console.error === 'function') {
7972 console.error(
7973 'This browser lacks typed array (Uint8Array) support which is required by ' +
7974 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
7975 )
7976 }
7977
7978 function typedArraySupport () {
7979 // Can typed array instances can be augmented?
7980 try {
7981 var arr = new Uint8Array(1)
7982 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
7983 return arr.foo() === 42
7984 } catch (e) {
7985 return false
7986 }
7987 }
7988
7989 function createBuffer (length) {
7990 if (length > K_MAX_LENGTH) {
7991 throw new RangeError('Invalid typed array length')
7992 }
7993 // Return an augmented `Uint8Array` instance
7994 var buf = new Uint8Array(length)
7995 buf.__proto__ = Buffer.prototype
7996 return buf
7997 }
7998
7999 /**
8000 * The Buffer constructor returns instances of `Uint8Array` that have their
8001 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
8002 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
8003 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
8004 * returns a single octet.
8005 *
8006 * The `Uint8Array` prototype remains unmodified.
8007 */
8008
8009 function Buffer (arg, encodingOrOffset, length) {
8010 // Common case.
8011 if (typeof arg === 'number') {
8012 if (typeof encodingOrOffset === 'string') {
8013 throw new Error(
8014 'If encoding is specified then the first argument must be a string'
8015 )
8016 }
8017 return allocUnsafe(arg)
8018 }
8019 return from(arg, encodingOrOffset, length)
8020 }
8021
8022 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
8023 if (typeof Symbol !== 'undefined' && Symbol.species &&
8024 Buffer[Symbol.species] === Buffer) {
8025 Object.defineProperty(Buffer, Symbol.species, {
8026 value: null,
8027 configurable: true,
8028 enumerable: false,
8029 writable: false
8030 })
8031 }
8032
8033 Buffer.poolSize = 8192 // not used by this implementation
8034
8035 function from (value, encodingOrOffset, length) {
8036 if (typeof value === 'number') {
8037 throw new TypeError('"value" argument must not be a number')
8038 }
8039
8040 if (value instanceof ArrayBuffer) {
8041 return fromArrayBuffer(value, encodingOrOffset, length)
8042 }
8043
8044 if (typeof value === 'string') {
8045 return fromString(value, encodingOrOffset)
8046 }
8047
8048 return fromObject(value)
8049 }
8050
8051 /**
8052 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
8053 * if value is a number.
8054 * Buffer.from(str[, encoding])
8055 * Buffer.from(array)
8056 * Buffer.from(buffer)
8057 * Buffer.from(arrayBuffer[, byteOffset[, length]])
8058 **/
8059 Buffer.from = function (value, encodingOrOffset, length) {
8060 return from(value, encodingOrOffset, length)
8061 }
8062
8063 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
8064 // https://github.com/feross/buffer/pull/148
8065 Buffer.prototype.__proto__ = Uint8Array.prototype
8066 Buffer.__proto__ = Uint8Array
8067
8068 function assertSize (size) {
8069 if (typeof size !== 'number') {
8070 throw new TypeError('"size" argument must be a number')
8071 } else if (size < 0) {
8072 throw new RangeError('"size" argument must not be negative')
8073 }
8074 }
8075
8076 function alloc (size, fill, encoding) {
8077 assertSize(size)
8078 if (size <= 0) {
8079 return createBuffer(size)
8080 }
8081 if (fill !== undefined) {
8082 // Only pay attention to encoding if it's a string. This
8083 // prevents accidentally sending in a number that would
8084 // be interpretted as a start offset.
8085 return typeof encoding === 'string'
8086 ? createBuffer(size).fill(fill, encoding)
8087 : createBuffer(size).fill(fill)
8088 }
8089 return createBuffer(size)
8090 }
8091
8092 /**
8093 * Creates a new filled Buffer instance.
8094 * alloc(size[, fill[, encoding]])
8095 **/
8096 Buffer.alloc = function (size, fill, encoding) {
8097 return alloc(size, fill, encoding)
8098 }
8099
8100 function allocUnsafe (size) {
8101 assertSize(size)
8102 return createBuffer(size < 0 ? 0 : checked(size) | 0)
8103 }
8104
8105 /**
8106 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
8107 * */
8108 Buffer.allocUnsafe = function (size) {
8109 return allocUnsafe(size)
8110 }
8111 /**
8112 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
8113 */
8114 Buffer.allocUnsafeSlow = function (size) {
8115 return allocUnsafe(size)
8116 }
8117
8118 function fromString (string, encoding) {
8119 if (typeof encoding !== 'string' || encoding === '') {
8120 encoding = 'utf8'
8121 }
8122
8123 if (!Buffer.isEncoding(encoding)) {
8124 throw new TypeError('"encoding" must be a valid string encoding')
8125 }
8126
8127 var length = byteLength(string, encoding) | 0
8128 var buf = createBuffer(length)
8129
8130 var actual = buf.write(string, encoding)
8131
8132 if (actual !== length) {
8133 // Writing a hex string, for example, that contains invalid characters will
8134 // cause everything after the first invalid character to be ignored. (e.g.
8135 // 'abxxcd' will be treated as 'ab')
8136 buf = buf.slice(0, actual)
8137 }
8138
8139 return buf
8140 }
8141
8142 function fromArrayLike (array) {
8143 var length = array.length < 0 ? 0 : checked(array.length) | 0
8144 var buf = createBuffer(length)
8145 for (var i = 0; i < length; i += 1) {
8146 buf[i] = array[i] & 255
8147 }
8148 return buf
8149 }
8150
8151 function fromArrayBuffer (array, byteOffset, length) {
8152 if (byteOffset < 0 || array.byteLength < byteOffset) {
8153 throw new RangeError('\'offset\' is out of bounds')
8154 }
8155
8156 if (array.byteLength < byteOffset + (length || 0)) {
8157 throw new RangeError('\'length\' is out of bounds')
8158 }
8159
8160 var buf
8161 if (byteOffset === undefined && length === undefined) {
8162 buf = new Uint8Array(array)
8163 } else if (length === undefined) {
8164 buf = new Uint8Array(array, byteOffset)
8165 } else {
8166 buf = new Uint8Array(array, byteOffset, length)
8167 }
8168
8169 // Return an augmented `Uint8Array` instance
8170 buf.__proto__ = Buffer.prototype
8171 return buf
8172 }
8173
8174 function fromObject (obj) {
8175 if (Buffer.isBuffer(obj)) {
8176 var len = checked(obj.length) | 0
8177 var buf = createBuffer(len)
8178
8179 if (buf.length === 0) {
8180 return buf
8181 }
8182
8183 obj.copy(buf, 0, 0, len)
8184 return buf
8185 }
8186
8187 if (obj) {
8188 if (isArrayBufferView(obj) || 'length' in obj) {
8189 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
8190 return createBuffer(0)
8191 }
8192 return fromArrayLike(obj)
8193 }
8194
8195 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
8196 return fromArrayLike(obj.data)
8197 }
8198 }
8199
8200 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
8201 }
8202
8203 function checked (length) {
8204 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
8205 // length is NaN (which is otherwise coerced to zero.)
8206 if (length >= K_MAX_LENGTH) {
8207 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
8208 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
8209 }
8210 return length | 0
8211 }
8212
8213 function SlowBuffer (length) {
8214 if (+length != length) { // eslint-disable-line eqeqeq
8215 length = 0
8216 }
8217 return Buffer.alloc(+length)
8218 }
8219
8220 Buffer.isBuffer = function isBuffer (b) {
8221 return b != null && b._isBuffer === true
8222 }
8223
8224 Buffer.compare = function compare (a, b) {
8225 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
8226 throw new TypeError('Arguments must be Buffers')
8227 }
8228
8229 if (a === b) return 0
8230
8231 var x = a.length
8232 var y = b.length
8233
8234 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
8235 if (a[i] !== b[i]) {
8236 x = a[i]
8237 y = b[i]
8238 break
8239 }
8240 }
8241
8242 if (x < y) return -1
8243 if (y < x) return 1
8244 return 0
8245 }
8246
8247 Buffer.isEncoding = function isEncoding (encoding) {
8248 switch (String(encoding).toLowerCase()) {
8249 case 'hex':
8250 case 'utf8':
8251 case 'utf-8':
8252 case 'ascii':
8253 case 'latin1':
8254 case 'binary':
8255 case 'base64':
8256 case 'ucs2':
8257 case 'ucs-2':
8258 case 'utf16le':
8259 case 'utf-16le':
8260 return true
8261 default:
8262 return false
8263 }
8264 }
8265
8266 Buffer.concat = function concat (list, length) {
8267 if (!Array.isArray(list)) {
8268 throw new TypeError('"list" argument must be an Array of Buffers')
8269 }
8270
8271 if (list.length === 0) {
8272 return Buffer.alloc(0)
8273 }
8274
8275 var i
8276 if (length === undefined) {
8277 length = 0
8278 for (i = 0; i < list.length; ++i) {
8279 length += list[i].length
8280 }
8281 }
8282
8283 var buffer = Buffer.allocUnsafe(length)
8284 var pos = 0
8285 for (i = 0; i < list.length; ++i) {
8286 var buf = list[i]
8287 if (!Buffer.isBuffer(buf)) {
8288 throw new TypeError('"list" argument must be an Array of Buffers')
8289 }
8290 buf.copy(buffer, pos)
8291 pos += buf.length
8292 }
8293 return buffer
8294 }
8295
8296 function byteLength (string, encoding) {
8297 if (Buffer.isBuffer(string)) {
8298 return string.length
8299 }
8300 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
8301 return string.byteLength
8302 }
8303 if (typeof string !== 'string') {
8304 string = '' + string
8305 }
8306
8307 var len = string.length
8308 if (len === 0) return 0
8309
8310 // Use a for loop to avoid recursion
8311 var loweredCase = false
8312 for (;;) {
8313 switch (encoding) {
8314 case 'ascii':
8315 case 'latin1':
8316 case 'binary':
8317 return len
8318 case 'utf8':
8319 case 'utf-8':
8320 case undefined:
8321 return utf8ToBytes(string).length
8322 case 'ucs2':
8323 case 'ucs-2':
8324 case 'utf16le':
8325 case 'utf-16le':
8326 return len * 2
8327 case 'hex':
8328 return len >>> 1
8329 case 'base64':
8330 return base64ToBytes(string).length
8331 default:
8332 if (loweredCase) return utf8ToBytes(string).length // assume utf8
8333 encoding = ('' + encoding).toLowerCase()
8334 loweredCase = true
8335 }
8336 }
8337 }
8338 Buffer.byteLength = byteLength
8339
8340 function slowToString (encoding, start, end) {
8341 var loweredCase = false
8342
8343 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
8344 // property of a typed array.
8345
8346 // This behaves neither like String nor Uint8Array in that we set start/end
8347 // to their upper/lower bounds if the value passed is out of range.
8348 // undefined is handled specially as per ECMA-262 6th Edition,
8349 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
8350 if (start === undefined || start < 0) {
8351 start = 0
8352 }
8353 // Return early if start > this.length. Done here to prevent potential uint32
8354 // coercion fail below.
8355 if (start > this.length) {
8356 return ''
8357 }
8358
8359 if (end === undefined || end > this.length) {
8360 end = this.length
8361 }
8362
8363 if (end <= 0) {
8364 return ''
8365 }
8366
8367 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
8368 end >>>= 0
8369 start >>>= 0
8370
8371 if (end <= start) {
8372 return ''
8373 }
8374
8375 if (!encoding) encoding = 'utf8'
8376
8377 while (true) {
8378 switch (encoding) {
8379 case 'hex':
8380 return hexSlice(this, start, end)
8381
8382 case 'utf8':
8383 case 'utf-8':
8384 return utf8Slice(this, start, end)
8385
8386 case 'ascii':
8387 return asciiSlice(this, start, end)
8388
8389 case 'latin1':
8390 case 'binary':
8391 return latin1Slice(this, start, end)
8392
8393 case 'base64':
8394 return base64Slice(this, start, end)
8395
8396 case 'ucs2':
8397 case 'ucs-2':
8398 case 'utf16le':
8399 case 'utf-16le':
8400 return utf16leSlice(this, start, end)
8401
8402 default:
8403 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8404 encoding = (encoding + '').toLowerCase()
8405 loweredCase = true
8406 }
8407 }
8408 }
8409
8410 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
8411 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
8412 // reliably in a browserify context because there could be multiple different
8413 // copies of the 'buffer' package in use. This method works even for Buffer
8414 // instances that were created from another copy of the `buffer` package.
8415 // See: https://github.com/feross/buffer/issues/154
8416 Buffer.prototype._isBuffer = true
8417
8418 function swap (b, n, m) {
8419 var i = b[n]
8420 b[n] = b[m]
8421 b[m] = i
8422 }
8423
8424 Buffer.prototype.swap16 = function swap16 () {
8425 var len = this.length
8426 if (len % 2 !== 0) {
8427 throw new RangeError('Buffer size must be a multiple of 16-bits')
8428 }
8429 for (var i = 0; i < len; i += 2) {
8430 swap(this, i, i + 1)
8431 }
8432 return this
8433 }
8434
8435 Buffer.prototype.swap32 = function swap32 () {
8436 var len = this.length
8437 if (len % 4 !== 0) {
8438 throw new RangeError('Buffer size must be a multiple of 32-bits')
8439 }
8440 for (var i = 0; i < len; i += 4) {
8441 swap(this, i, i + 3)
8442 swap(this, i + 1, i + 2)
8443 }
8444 return this
8445 }
8446
8447 Buffer.prototype.swap64 = function swap64 () {
8448 var len = this.length
8449 if (len % 8 !== 0) {
8450 throw new RangeError('Buffer size must be a multiple of 64-bits')
8451 }
8452 for (var i = 0; i < len; i += 8) {
8453 swap(this, i, i + 7)
8454 swap(this, i + 1, i + 6)
8455 swap(this, i + 2, i + 5)
8456 swap(this, i + 3, i + 4)
8457 }
8458 return this
8459 }
8460
8461 Buffer.prototype.toString = function toString () {
8462 var length = this.length
8463 if (length === 0) return ''
8464 if (arguments.length === 0) return utf8Slice(this, 0, length)
8465 return slowToString.apply(this, arguments)
8466 }
8467
8468 Buffer.prototype.equals = function equals (b) {
8469 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
8470 if (this === b) return true
8471 return Buffer.compare(this, b) === 0
8472 }
8473
8474 Buffer.prototype.inspect = function inspect () {
8475 var str = ''
8476 var max = exports.INSPECT_MAX_BYTES
8477 if (this.length > 0) {
8478 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
8479 if (this.length > max) str += ' ... '
8480 }
8481 return '<Buffer ' + str + '>'
8482 }
8483
8484 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
8485 if (!Buffer.isBuffer(target)) {
8486 throw new TypeError('Argument must be a Buffer')
8487 }
8488
8489 if (start === undefined) {
8490 start = 0
8491 }
8492 if (end === undefined) {
8493 end = target ? target.length : 0
8494 }
8495 if (thisStart === undefined) {
8496 thisStart = 0
8497 }
8498 if (thisEnd === undefined) {
8499 thisEnd = this.length
8500 }
8501
8502 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
8503 throw new RangeError('out of range index')
8504 }
8505
8506 if (thisStart >= thisEnd && start >= end) {
8507 return 0
8508 }
8509 if (thisStart >= thisEnd) {
8510 return -1
8511 }
8512 if (start >= end) {
8513 return 1
8514 }
8515
8516 start >>>= 0
8517 end >>>= 0
8518 thisStart >>>= 0
8519 thisEnd >>>= 0
8520
8521 if (this === target) return 0
8522
8523 var x = thisEnd - thisStart
8524 var y = end - start
8525 var len = Math.min(x, y)
8526
8527 var thisCopy = this.slice(thisStart, thisEnd)
8528 var targetCopy = target.slice(start, end)
8529
8530 for (var i = 0; i < len; ++i) {
8531 if (thisCopy[i] !== targetCopy[i]) {
8532 x = thisCopy[i]
8533 y = targetCopy[i]
8534 break
8535 }
8536 }
8537
8538 if (x < y) return -1
8539 if (y < x) return 1
8540 return 0
8541 }
8542
8543 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
8544 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
8545 //
8546 // Arguments:
8547 // - buffer - a Buffer to search
8548 // - val - a string, Buffer, or number
8549 // - byteOffset - an index into `buffer`; will be clamped to an int32
8550 // - encoding - an optional encoding, relevant is val is a string
8551 // - dir - true for indexOf, false for lastIndexOf
8552 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
8553 // Empty buffer means no match
8554 if (buffer.length === 0) return -1
8555
8556 // Normalize byteOffset
8557 if (typeof byteOffset === 'string') {
8558 encoding = byteOffset
8559 byteOffset = 0
8560 } else if (byteOffset > 0x7fffffff) {
8561 byteOffset = 0x7fffffff
8562 } else if (byteOffset < -0x80000000) {
8563 byteOffset = -0x80000000
8564 }
8565 byteOffset = +byteOffset // Coerce to Number.
8566 if (numberIsNaN(byteOffset)) {
8567 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
8568 byteOffset = dir ? 0 : (buffer.length - 1)
8569 }
8570
8571 // Normalize byteOffset: negative offsets start from the end of the buffer
8572 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
8573 if (byteOffset >= buffer.length) {
8574 if (dir) return -1
8575 else byteOffset = buffer.length - 1
8576 } else if (byteOffset < 0) {
8577 if (dir) byteOffset = 0
8578 else return -1
8579 }
8580
8581 // Normalize val
8582 if (typeof val === 'string') {
8583 val = Buffer.from(val, encoding)
8584 }
8585
8586 // Finally, search either indexOf (if dir is true) or lastIndexOf
8587 if (Buffer.isBuffer(val)) {
8588 // Special case: looking for empty string/buffer always fails
8589 if (val.length === 0) {
8590 return -1
8591 }
8592 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
8593 } else if (typeof val === 'number') {
8594 val = val & 0xFF // Search for a byte value [0-255]
8595 if (typeof Uint8Array.prototype.indexOf === 'function') {
8596 if (dir) {
8597 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
8598 } else {
8599 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
8600 }
8601 }
8602 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
8603 }
8604
8605 throw new TypeError('val must be string, number or Buffer')
8606 }
8607
8608 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
8609 var indexSize = 1
8610 var arrLength = arr.length
8611 var valLength = val.length
8612
8613 if (encoding !== undefined) {
8614 encoding = String(encoding).toLowerCase()
8615 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
8616 encoding === 'utf16le' || encoding === 'utf-16le') {
8617 if (arr.length < 2 || val.length < 2) {
8618 return -1
8619 }
8620 indexSize = 2
8621 arrLength /= 2
8622 valLength /= 2
8623 byteOffset /= 2
8624 }
8625 }
8626
8627 function read (buf, i) {
8628 if (indexSize === 1) {
8629 return buf[i]
8630 } else {
8631 return buf.readUInt16BE(i * indexSize)
8632 }
8633 }
8634
8635 var i
8636 if (dir) {
8637 var foundIndex = -1
8638 for (i = byteOffset; i < arrLength; i++) {
8639 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
8640 if (foundIndex === -1) foundIndex = i
8641 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
8642 } else {
8643 if (foundIndex !== -1) i -= i - foundIndex
8644 foundIndex = -1
8645 }
8646 }
8647 } else {
8648 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
8649 for (i = byteOffset; i >= 0; i--) {
8650 var found = true
8651 for (var j = 0; j < valLength; j++) {
8652 if (read(arr, i + j) !== read(val, j)) {
8653 found = false
8654 break
8655 }
8656 }
8657 if (found) return i
8658 }
8659 }
8660
8661 return -1
8662 }
8663
8664 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
8665 return this.indexOf(val, byteOffset, encoding) !== -1
8666 }
8667
8668 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
8669 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
8670 }
8671
8672 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
8673 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
8674 }
8675
8676 function hexWrite (buf, string, offset, length) {
8677 offset = Number(offset) || 0
8678 var remaining = buf.length - offset
8679 if (!length) {
8680 length = remaining
8681 } else {
8682 length = Number(length)
8683 if (length > remaining) {
8684 length = remaining
8685 }
8686 }
8687
8688 // must be an even number of digits
8689 var strLen = string.length
8690 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
8691
8692 if (length > strLen / 2) {
8693 length = strLen / 2
8694 }
8695 for (var i = 0; i < length; ++i) {
8696 var parsed = parseInt(string.substr(i * 2, 2), 16)
8697 if (numberIsNaN(parsed)) return i
8698 buf[offset + i] = parsed
8699 }
8700 return i
8701 }
8702
8703 function utf8Write (buf, string, offset, length) {
8704 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
8705 }
8706
8707 function asciiWrite (buf, string, offset, length) {
8708 return blitBuffer(asciiToBytes(string), buf, offset, length)
8709 }
8710
8711 function latin1Write (buf, string, offset, length) {
8712 return asciiWrite(buf, string, offset, length)
8713 }
8714
8715 function base64Write (buf, string, offset, length) {
8716 return blitBuffer(base64ToBytes(string), buf, offset, length)
8717 }
8718
8719 function ucs2Write (buf, string, offset, length) {
8720 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
8721 }
8722
8723 Buffer.prototype.write = function write (string, offset, length, encoding) {
8724 // Buffer#write(string)
8725 if (offset === undefined) {
8726 encoding = 'utf8'
8727 length = this.length
8728 offset = 0
8729 // Buffer#write(string, encoding)
8730 } else if (length === undefined && typeof offset === 'string') {
8731 encoding = offset
8732 length = this.length
8733 offset = 0
8734 // Buffer#write(string, offset[, length][, encoding])
8735 } else if (isFinite(offset)) {
8736 offset = offset >>> 0
8737 if (isFinite(length)) {
8738 length = length >>> 0
8739 if (encoding === undefined) encoding = 'utf8'
8740 } else {
8741 encoding = length
8742 length = undefined
8743 }
8744 } else {
8745 throw new Error(
8746 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
8747 )
8748 }
8749
8750 var remaining = this.length - offset
8751 if (length === undefined || length > remaining) length = remaining
8752
8753 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
8754 throw new RangeError('Attempt to write outside buffer bounds')
8755 }
8756
8757 if (!encoding) encoding = 'utf8'
8758
8759 var loweredCase = false
8760 for (;;) {
8761 switch (encoding) {
8762 case 'hex':
8763 return hexWrite(this, string, offset, length)
8764
8765 case 'utf8':
8766 case 'utf-8':
8767 return utf8Write(this, string, offset, length)
8768
8769 case 'ascii':
8770 return asciiWrite(this, string, offset, length)
8771
8772 case 'latin1':
8773 case 'binary':
8774 return latin1Write(this, string, offset, length)
8775
8776 case 'base64':
8777 // Warning: maxLength not taken into account in base64Write
8778 return base64Write(this, string, offset, length)
8779
8780 case 'ucs2':
8781 case 'ucs-2':
8782 case 'utf16le':
8783 case 'utf-16le':
8784 return ucs2Write(this, string, offset, length)
8785
8786 default:
8787 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8788 encoding = ('' + encoding).toLowerCase()
8789 loweredCase = true
8790 }
8791 }
8792 }
8793
8794 Buffer.prototype.toJSON = function toJSON () {
8795 return {
8796 type: 'Buffer',
8797 data: Array.prototype.slice.call(this._arr || this, 0)
8798 }
8799 }
8800
8801 function base64Slice (buf, start, end) {
8802 if (start === 0 && end === buf.length) {
8803 return base64.fromByteArray(buf)
8804 } else {
8805 return base64.fromByteArray(buf.slice(start, end))
8806 }
8807 }
8808
8809 function utf8Slice (buf, start, end) {
8810 end = Math.min(buf.length, end)
8811 var res = []
8812
8813 var i = start
8814 while (i < end) {
8815 var firstByte = buf[i]
8816 var codePoint = null
8817 var bytesPerSequence = (firstByte > 0xEF) ? 4
8818 : (firstByte > 0xDF) ? 3
8819 : (firstByte > 0xBF) ? 2
8820 : 1
8821
8822 if (i + bytesPerSequence <= end) {
8823 var secondByte, thirdByte, fourthByte, tempCodePoint
8824
8825 switch (bytesPerSequence) {
8826 case 1:
8827 if (firstByte < 0x80) {
8828 codePoint = firstByte
8829 }
8830 break
8831 case 2:
8832 secondByte = buf[i + 1]
8833 if ((secondByte & 0xC0) === 0x80) {
8834 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
8835 if (tempCodePoint > 0x7F) {
8836 codePoint = tempCodePoint
8837 }
8838 }
8839 break
8840 case 3:
8841 secondByte = buf[i + 1]
8842 thirdByte = buf[i + 2]
8843 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
8844 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
8845 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
8846 codePoint = tempCodePoint
8847 }
8848 }
8849 break
8850 case 4:
8851 secondByte = buf[i + 1]
8852 thirdByte = buf[i + 2]
8853 fourthByte = buf[i + 3]
8854 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
8855 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
8856 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
8857 codePoint = tempCodePoint
8858 }
8859 }
8860 }
8861 }
8862
8863 if (codePoint === null) {
8864 // we did not generate a valid codePoint so insert a
8865 // replacement char (U+FFFD) and advance only 1 byte
8866 codePoint = 0xFFFD
8867 bytesPerSequence = 1
8868 } else if (codePoint > 0xFFFF) {
8869 // encode to utf16 (surrogate pair dance)
8870 codePoint -= 0x10000
8871 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
8872 codePoint = 0xDC00 | codePoint & 0x3FF
8873 }
8874
8875 res.push(codePoint)
8876 i += bytesPerSequence
8877 }
8878
8879 return decodeCodePointsArray(res)
8880 }
8881
8882 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
8883 // the lowest limit is Chrome, with 0x10000 args.
8884 // We go 1 magnitude less, for safety
8885 var MAX_ARGUMENTS_LENGTH = 0x1000
8886
8887 function decodeCodePointsArray (codePoints) {
8888 var len = codePoints.length
8889 if (len <= MAX_ARGUMENTS_LENGTH) {
8890 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
8891 }
8892
8893 // Decode in chunks to avoid "call stack size exceeded".
8894 var res = ''
8895 var i = 0
8896 while (i < len) {
8897 res += String.fromCharCode.apply(
8898 String,
8899 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
8900 )
8901 }
8902 return res
8903 }
8904
8905 function asciiSlice (buf, start, end) {
8906 var ret = ''
8907 end = Math.min(buf.length, end)
8908
8909 for (var i = start; i < end; ++i) {
8910 ret += String.fromCharCode(buf[i] & 0x7F)
8911 }
8912 return ret
8913 }
8914
8915 function latin1Slice (buf, start, end) {
8916 var ret = ''
8917 end = Math.min(buf.length, end)
8918
8919 for (var i = start; i < end; ++i) {
8920 ret += String.fromCharCode(buf[i])
8921 }
8922 return ret
8923 }
8924
8925 function hexSlice (buf, start, end) {
8926 var len = buf.length
8927
8928 if (!start || start < 0) start = 0
8929 if (!end || end < 0 || end > len) end = len
8930
8931 var out = ''
8932 for (var i = start; i < end; ++i) {
8933 out += toHex(buf[i])
8934 }
8935 return out
8936 }
8937
8938 function utf16leSlice (buf, start, end) {
8939 var bytes = buf.slice(start, end)
8940 var res = ''
8941 for (var i = 0; i < bytes.length; i += 2) {
8942 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
8943 }
8944 return res
8945 }
8946
8947 Buffer.prototype.slice = function slice (start, end) {
8948 var len = this.length
8949 start = ~~start
8950 end = end === undefined ? len : ~~end
8951
8952 if (start < 0) {
8953 start += len
8954 if (start < 0) start = 0
8955 } else if (start > len) {
8956 start = len
8957 }
8958
8959 if (end < 0) {
8960 end += len
8961 if (end < 0) end = 0
8962 } else if (end > len) {
8963 end = len
8964 }
8965
8966 if (end < start) end = start
8967
8968 var newBuf = this.subarray(start, end)
8969 // Return an augmented `Uint8Array` instance
8970 newBuf.__proto__ = Buffer.prototype
8971 return newBuf
8972 }
8973
8974 /*
8975 * Need to make sure that buffer isn't trying to write out of bounds.
8976 */
8977 function checkOffset (offset, ext, length) {
8978 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
8979 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
8980 }
8981
8982 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
8983 offset = offset >>> 0
8984 byteLength = byteLength >>> 0
8985 if (!noAssert) checkOffset(offset, byteLength, this.length)
8986
8987 var val = this[offset]
8988 var mul = 1
8989 var i = 0
8990 while (++i < byteLength && (mul *= 0x100)) {
8991 val += this[offset + i] * mul
8992 }
8993
8994 return val
8995 }
8996
8997 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
8998 offset = offset >>> 0
8999 byteLength = byteLength >>> 0
9000 if (!noAssert) {
9001 checkOffset(offset, byteLength, this.length)
9002 }
9003
9004 var val = this[offset + --byteLength]
9005 var mul = 1
9006 while (byteLength > 0 && (mul *= 0x100)) {
9007 val += this[offset + --byteLength] * mul
9008 }
9009
9010 return val
9011 }
9012
9013 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
9014 offset = offset >>> 0
9015 if (!noAssert) checkOffset(offset, 1, this.length)
9016 return this[offset]
9017 }
9018
9019 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
9020 offset = offset >>> 0
9021 if (!noAssert) checkOffset(offset, 2, this.length)
9022 return this[offset] | (this[offset + 1] << 8)
9023 }
9024
9025 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
9026 offset = offset >>> 0
9027 if (!noAssert) checkOffset(offset, 2, this.length)
9028 return (this[offset] << 8) | this[offset + 1]
9029 }
9030
9031 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
9032 offset = offset >>> 0
9033 if (!noAssert) checkOffset(offset, 4, this.length)
9034
9035 return ((this[offset]) |
9036 (this[offset + 1] << 8) |
9037 (this[offset + 2] << 16)) +
9038 (this[offset + 3] * 0x1000000)
9039 }
9040
9041 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
9042 offset = offset >>> 0
9043 if (!noAssert) checkOffset(offset, 4, this.length)
9044
9045 return (this[offset] * 0x1000000) +
9046 ((this[offset + 1] << 16) |
9047 (this[offset + 2] << 8) |
9048 this[offset + 3])
9049 }
9050
9051 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
9052 offset = offset >>> 0
9053 byteLength = byteLength >>> 0
9054 if (!noAssert) checkOffset(offset, byteLength, this.length)
9055
9056 var val = this[offset]
9057 var mul = 1
9058 var i = 0
9059 while (++i < byteLength && (mul *= 0x100)) {
9060 val += this[offset + i] * mul
9061 }
9062 mul *= 0x80
9063
9064 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
9065
9066 return val
9067 }
9068
9069 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
9070 offset = offset >>> 0
9071 byteLength = byteLength >>> 0
9072 if (!noAssert) checkOffset(offset, byteLength, this.length)
9073
9074 var i = byteLength
9075 var mul = 1
9076 var val = this[offset + --i]
9077 while (i > 0 && (mul *= 0x100)) {
9078 val += this[offset + --i] * mul
9079 }
9080 mul *= 0x80
9081
9082 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
9083
9084 return val
9085 }
9086
9087 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
9088 offset = offset >>> 0
9089 if (!noAssert) checkOffset(offset, 1, this.length)
9090 if (!(this[offset] & 0x80)) return (this[offset])
9091 return ((0xff - this[offset] + 1) * -1)
9092 }
9093
9094 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
9095 offset = offset >>> 0
9096 if (!noAssert) checkOffset(offset, 2, this.length)
9097 var val = this[offset] | (this[offset + 1] << 8)
9098 return (val & 0x8000) ? val | 0xFFFF0000 : val
9099 }
9100
9101 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
9102 offset = offset >>> 0
9103 if (!noAssert) checkOffset(offset, 2, this.length)
9104 var val = this[offset + 1] | (this[offset] << 8)
9105 return (val & 0x8000) ? val | 0xFFFF0000 : val
9106 }
9107
9108 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
9109 offset = offset >>> 0
9110 if (!noAssert) checkOffset(offset, 4, this.length)
9111
9112 return (this[offset]) |
9113 (this[offset + 1] << 8) |
9114 (this[offset + 2] << 16) |
9115 (this[offset + 3] << 24)
9116 }
9117
9118 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
9119 offset = offset >>> 0
9120 if (!noAssert) checkOffset(offset, 4, this.length)
9121
9122 return (this[offset] << 24) |
9123 (this[offset + 1] << 16) |
9124 (this[offset + 2] << 8) |
9125 (this[offset + 3])
9126 }
9127
9128 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
9129 offset = offset >>> 0
9130 if (!noAssert) checkOffset(offset, 4, this.length)
9131 return ieee754.read(this, offset, true, 23, 4)
9132 }
9133
9134 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
9135 offset = offset >>> 0
9136 if (!noAssert) checkOffset(offset, 4, this.length)
9137 return ieee754.read(this, offset, false, 23, 4)
9138 }
9139
9140 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
9141 offset = offset >>> 0
9142 if (!noAssert) checkOffset(offset, 8, this.length)
9143 return ieee754.read(this, offset, true, 52, 8)
9144 }
9145
9146 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
9147 offset = offset >>> 0
9148 if (!noAssert) checkOffset(offset, 8, this.length)
9149 return ieee754.read(this, offset, false, 52, 8)
9150 }
9151
9152 function checkInt (buf, value, offset, ext, max, min) {
9153 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
9154 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
9155 if (offset + ext > buf.length) throw new RangeError('Index out of range')
9156 }
9157
9158 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
9159 value = +value
9160 offset = offset >>> 0
9161 byteLength = byteLength >>> 0
9162 if (!noAssert) {
9163 var maxBytes = Math.pow(2, 8 * byteLength) - 1
9164 checkInt(this, value, offset, byteLength, maxBytes, 0)
9165 }
9166
9167 var mul = 1
9168 var i = 0
9169 this[offset] = value & 0xFF
9170 while (++i < byteLength && (mul *= 0x100)) {
9171 this[offset + i] = (value / mul) & 0xFF
9172 }
9173
9174 return offset + byteLength
9175 }
9176
9177 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
9178 value = +value
9179 offset = offset >>> 0
9180 byteLength = byteLength >>> 0
9181 if (!noAssert) {
9182 var maxBytes = Math.pow(2, 8 * byteLength) - 1
9183 checkInt(this, value, offset, byteLength, maxBytes, 0)
9184 }
9185
9186 var i = byteLength - 1
9187 var mul = 1
9188 this[offset + i] = value & 0xFF
9189 while (--i >= 0 && (mul *= 0x100)) {
9190 this[offset + i] = (value / mul) & 0xFF
9191 }
9192
9193 return offset + byteLength
9194 }
9195
9196 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
9197 value = +value
9198 offset = offset >>> 0
9199 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
9200 this[offset] = (value & 0xff)
9201 return offset + 1
9202 }
9203
9204 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
9205 value = +value
9206 offset = offset >>> 0
9207 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
9208 this[offset] = (value & 0xff)
9209 this[offset + 1] = (value >>> 8)
9210 return offset + 2
9211 }
9212
9213 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
9214 value = +value
9215 offset = offset >>> 0
9216 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
9217 this[offset] = (value >>> 8)
9218 this[offset + 1] = (value & 0xff)
9219 return offset + 2
9220 }
9221
9222 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
9223 value = +value
9224 offset = offset >>> 0
9225 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
9226 this[offset + 3] = (value >>> 24)
9227 this[offset + 2] = (value >>> 16)
9228 this[offset + 1] = (value >>> 8)
9229 this[offset] = (value & 0xff)
9230 return offset + 4
9231 }
9232
9233 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
9234 value = +value
9235 offset = offset >>> 0
9236 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
9237 this[offset] = (value >>> 24)
9238 this[offset + 1] = (value >>> 16)
9239 this[offset + 2] = (value >>> 8)
9240 this[offset + 3] = (value & 0xff)
9241 return offset + 4
9242 }
9243
9244 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
9245 value = +value
9246 offset = offset >>> 0
9247 if (!noAssert) {
9248 var limit = Math.pow(2, (8 * byteLength) - 1)
9249
9250 checkInt(this, value, offset, byteLength, limit - 1, -limit)
9251 }
9252
9253 var i = 0
9254 var mul = 1
9255 var sub = 0
9256 this[offset] = value & 0xFF
9257 while (++i < byteLength && (mul *= 0x100)) {
9258 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
9259 sub = 1
9260 }
9261 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
9262 }
9263
9264 return offset + byteLength
9265 }
9266
9267 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
9268 value = +value
9269 offset = offset >>> 0
9270 if (!noAssert) {
9271 var limit = Math.pow(2, (8 * byteLength) - 1)
9272
9273 checkInt(this, value, offset, byteLength, limit - 1, -limit)
9274 }
9275
9276 var i = byteLength - 1
9277 var mul = 1
9278 var sub = 0
9279 this[offset + i] = value & 0xFF
9280 while (--i >= 0 && (mul *= 0x100)) {
9281 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
9282 sub = 1
9283 }
9284 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
9285 }
9286
9287 return offset + byteLength
9288 }
9289
9290 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
9291 value = +value
9292 offset = offset >>> 0
9293 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
9294 if (value < 0) value = 0xff + value + 1
9295 this[offset] = (value & 0xff)
9296 return offset + 1
9297 }
9298
9299 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
9300 value = +value
9301 offset = offset >>> 0
9302 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
9303 this[offset] = (value & 0xff)
9304 this[offset + 1] = (value >>> 8)
9305 return offset + 2
9306 }
9307
9308 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
9309 value = +value
9310 offset = offset >>> 0
9311 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
9312 this[offset] = (value >>> 8)
9313 this[offset + 1] = (value & 0xff)
9314 return offset + 2
9315 }
9316
9317 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
9318 value = +value
9319 offset = offset >>> 0
9320 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
9321 this[offset] = (value & 0xff)
9322 this[offset + 1] = (value >>> 8)
9323 this[offset + 2] = (value >>> 16)
9324 this[offset + 3] = (value >>> 24)
9325 return offset + 4
9326 }
9327
9328 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
9329 value = +value
9330 offset = offset >>> 0
9331 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
9332 if (value < 0) value = 0xffffffff + value + 1
9333 this[offset] = (value >>> 24)
9334 this[offset + 1] = (value >>> 16)
9335 this[offset + 2] = (value >>> 8)
9336 this[offset + 3] = (value & 0xff)
9337 return offset + 4
9338 }
9339
9340 function checkIEEE754 (buf, value, offset, ext, max, min) {
9341 if (offset + ext > buf.length) throw new RangeError('Index out of range')
9342 if (offset < 0) throw new RangeError('Index out of range')
9343 }
9344
9345 function writeFloat (buf, value, offset, littleEndian, noAssert) {
9346 value = +value
9347 offset = offset >>> 0
9348 if (!noAssert) {
9349 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
9350 }
9351 ieee754.write(buf, value, offset, littleEndian, 23, 4)
9352 return offset + 4
9353 }
9354
9355 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
9356 return writeFloat(this, value, offset, true, noAssert)
9357 }
9358
9359 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
9360 return writeFloat(this, value, offset, false, noAssert)
9361 }
9362
9363 function writeDouble (buf, value, offset, littleEndian, noAssert) {
9364 value = +value
9365 offset = offset >>> 0
9366 if (!noAssert) {
9367 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
9368 }
9369 ieee754.write(buf, value, offset, littleEndian, 52, 8)
9370 return offset + 8
9371 }
9372
9373 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
9374 return writeDouble(this, value, offset, true, noAssert)
9375 }
9376
9377 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
9378 return writeDouble(this, value, offset, false, noAssert)
9379 }
9380
9381 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
9382 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
9383 if (!start) start = 0
9384 if (!end && end !== 0) end = this.length
9385 if (targetStart >= target.length) targetStart = target.length
9386 if (!targetStart) targetStart = 0
9387 if (end > 0 && end < start) end = start
9388
9389 // Copy 0 bytes; we're done
9390 if (end === start) return 0
9391 if (target.length === 0 || this.length === 0) return 0
9392
9393 // Fatal error conditions
9394 if (targetStart < 0) {
9395 throw new RangeError('targetStart out of bounds')
9396 }
9397 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
9398 if (end < 0) throw new RangeError('sourceEnd out of bounds')
9399
9400 // Are we oob?
9401 if (end > this.length) end = this.length
9402 if (target.length - targetStart < end - start) {
9403 end = target.length - targetStart + start
9404 }
9405
9406 var len = end - start
9407 var i
9408
9409 if (this === target && start < targetStart && targetStart < end) {
9410 // descending copy from end
9411 for (i = len - 1; i >= 0; --i) {
9412 target[i + targetStart] = this[i + start]
9413 }
9414 } else if (len < 1000) {
9415 // ascending copy from start
9416 for (i = 0; i < len; ++i) {
9417 target[i + targetStart] = this[i + start]
9418 }
9419 } else {
9420 Uint8Array.prototype.set.call(
9421 target,
9422 this.subarray(start, start + len),
9423 targetStart
9424 )
9425 }
9426
9427 return len
9428 }
9429
9430 // Usage:
9431 // buffer.fill(number[, offset[, end]])
9432 // buffer.fill(buffer[, offset[, end]])
9433 // buffer.fill(string[, offset[, end]][, encoding])
9434 Buffer.prototype.fill = function fill (val, start, end, encoding) {
9435 // Handle string cases:
9436 if (typeof val === 'string') {
9437 if (typeof start === 'string') {
9438 encoding = start
9439 start = 0
9440 end = this.length
9441 } else if (typeof end === 'string') {
9442 encoding = end
9443 end = this.length
9444 }
9445 if (val.length === 1) {
9446 var code = val.charCodeAt(0)
9447 if (code < 256) {
9448 val = code
9449 }
9450 }
9451 if (encoding !== undefined && typeof encoding !== 'string') {
9452 throw new TypeError('encoding must be a string')
9453 }
9454 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
9455 throw new TypeError('Unknown encoding: ' + encoding)
9456 }
9457 } else if (typeof val === 'number') {
9458 val = val & 255
9459 }
9460
9461 // Invalid ranges are not set to a default, so can range check early.
9462 if (start < 0 || this.length < start || this.length < end) {
9463 throw new RangeError('Out of range index')
9464 }
9465
9466 if (end <= start) {
9467 return this
9468 }
9469
9470 start = start >>> 0
9471 end = end === undefined ? this.length : end >>> 0
9472
9473 if (!val) val = 0
9474
9475 var i
9476 if (typeof val === 'number') {
9477 for (i = start; i < end; ++i) {
9478 this[i] = val
9479 }
9480 } else {
9481 var bytes = Buffer.isBuffer(val)
9482 ? val
9483 : new Buffer(val, encoding)
9484 var len = bytes.length
9485 for (i = 0; i < end - start; ++i) {
9486 this[i + start] = bytes[i % len]
9487 }
9488 }
9489
9490 return this
9491 }
9492
9493 // HELPER FUNCTIONS
9494 // ================
9495
9496 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
9497
9498 function base64clean (str) {
9499 // Node strips out invalid characters like \n and \t from the string, base64-js does not
9500 str = str.trim().replace(INVALID_BASE64_RE, '')
9501 // Node converts strings with length < 2 to ''
9502 if (str.length < 2) return ''
9503 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
9504 while (str.length % 4 !== 0) {
9505 str = str + '='
9506 }
9507 return str
9508 }
9509
9510 function toHex (n) {
9511 if (n < 16) return '0' + n.toString(16)
9512 return n.toString(16)
9513 }
9514
9515 function utf8ToBytes (string, units) {
9516 units = units || Infinity
9517 var codePoint
9518 var length = string.length
9519 var leadSurrogate = null
9520 var bytes = []
9521
9522 for (var i = 0; i < length; ++i) {
9523 codePoint = string.charCodeAt(i)
9524
9525 // is surrogate component
9526 if (codePoint > 0xD7FF && codePoint < 0xE000) {
9527 // last char was a lead
9528 if (!leadSurrogate) {
9529 // no lead yet
9530 if (codePoint > 0xDBFF) {
9531 // unexpected trail
9532 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9533 continue
9534 } else if (i + 1 === length) {
9535 // unpaired lead
9536 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9537 continue
9538 }
9539
9540 // valid lead
9541 leadSurrogate = codePoint
9542
9543 continue
9544 }
9545
9546 // 2 leads in a row
9547 if (codePoint < 0xDC00) {
9548 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9549 leadSurrogate = codePoint
9550 continue
9551 }
9552
9553 // valid surrogate pair
9554 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
9555 } else if (leadSurrogate) {
9556 // valid bmp char, but last char was a lead
9557 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9558 }
9559
9560 leadSurrogate = null
9561
9562 // encode utf8
9563 if (codePoint < 0x80) {
9564 if ((units -= 1) < 0) break
9565 bytes.push(codePoint)
9566 } else if (codePoint < 0x800) {
9567 if ((units -= 2) < 0) break
9568 bytes.push(
9569 codePoint >> 0x6 | 0xC0,
9570 codePoint & 0x3F | 0x80
9571 )
9572 } else if (codePoint < 0x10000) {
9573 if ((units -= 3) < 0) break
9574 bytes.push(
9575 codePoint >> 0xC | 0xE0,
9576 codePoint >> 0x6 & 0x3F | 0x80,
9577 codePoint & 0x3F | 0x80
9578 )
9579 } else if (codePoint < 0x110000) {
9580 if ((units -= 4) < 0) break
9581 bytes.push(
9582 codePoint >> 0x12 | 0xF0,
9583 codePoint >> 0xC & 0x3F | 0x80,
9584 codePoint >> 0x6 & 0x3F | 0x80,
9585 codePoint & 0x3F | 0x80
9586 )
9587 } else {
9588 throw new Error('Invalid code point')
9589 }
9590 }
9591
9592 return bytes
9593 }
9594
9595 function asciiToBytes (str) {
9596 var byteArray = []
9597 for (var i = 0; i < str.length; ++i) {
9598 // Node's code seems to be doing this and not & 0x7F..
9599 byteArray.push(str.charCodeAt(i) & 0xFF)
9600 }
9601 return byteArray
9602 }
9603
9604 function utf16leToBytes (str, units) {
9605 var c, hi, lo
9606 var byteArray = []
9607 for (var i = 0; i < str.length; ++i) {
9608 if ((units -= 2) < 0) break
9609
9610 c = str.charCodeAt(i)
9611 hi = c >> 8
9612 lo = c % 256
9613 byteArray.push(lo)
9614 byteArray.push(hi)
9615 }
9616
9617 return byteArray
9618 }
9619
9620 function base64ToBytes (str) {
9621 return base64.toByteArray(base64clean(str))
9622 }
9623
9624 function blitBuffer (src, dst, offset, length) {
9625 for (var i = 0; i < length; ++i) {
9626 if ((i + offset >= dst.length) || (i >= src.length)) break
9627 dst[i + offset] = src[i]
9628 }
9629 return i
9630 }
9631
9632 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
9633 function isArrayBufferView (obj) {
9634 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
9635 }
9636
9637 function numberIsNaN (obj) {
9638 return obj !== obj // eslint-disable-line no-self-compare
9639 }
9640
9641 },{"base64-js":2,"ieee754":7}],5:[function(require,module,exports){
9642 (function (Buffer){
9643 // Copyright Joyent, Inc. and other Node contributors.
9644 //
9645 // Permission is hereby granted, free of charge, to any person obtaining a
9646 // copy of this software and associated documentation files (the
9647 // "Software"), to deal in the Software without restriction, including
9648 // without limitation the rights to use, copy, modify, merge, publish,
9649 // distribute, sublicense, and/or sell copies of the Software, and to permit
9650 // persons to whom the Software is furnished to do so, subject to the
9651 // following conditions:
9652 //
9653 // The above copyright notice and this permission notice shall be included
9654 // in all copies or substantial portions of the Software.
9655 //
9656 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9657 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9658 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9659 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9660 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9661 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9662 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9663
9664 // NOTE: These type checking functions intentionally don't use `instanceof`
9665 // because it is fragile and can be easily faked with `Object.create()`.
9666
9667 function isArray(arg) {
9668 if (Array.isArray) {
9669 return Array.isArray(arg);
9670 }
9671 return objectToString(arg) === '[object Array]';
9672 }
9673 exports.isArray = isArray;
9674
9675 function isBoolean(arg) {
9676 return typeof arg === 'boolean';
9677 }
9678 exports.isBoolean = isBoolean;
9679
9680 function isNull(arg) {
9681 return arg === null;
9682 }
9683 exports.isNull = isNull;
9684
9685 function isNullOrUndefined(arg) {
9686 return arg == null;
9687 }
9688 exports.isNullOrUndefined = isNullOrUndefined;
9689
9690 function isNumber(arg) {
9691 return typeof arg === 'number';
9692 }
9693 exports.isNumber = isNumber;
9694
9695 function isString(arg) {
9696 return typeof arg === 'string';
9697 }
9698 exports.isString = isString;
9699
9700 function isSymbol(arg) {
9701 return typeof arg === 'symbol';
9702 }
9703 exports.isSymbol = isSymbol;
9704
9705 function isUndefined(arg) {
9706 return arg === void 0;
9707 }
9708 exports.isUndefined = isUndefined;
9709
9710 function isRegExp(re) {
9711 return objectToString(re) === '[object RegExp]';
9712 }
9713 exports.isRegExp = isRegExp;
9714
9715 function isObject(arg) {
9716 return typeof arg === 'object' && arg !== null;
9717 }
9718 exports.isObject = isObject;
9719
9720 function isDate(d) {
9721 return objectToString(d) === '[object Date]';
9722 }
9723 exports.isDate = isDate;
9724
9725 function isError(e) {
9726 return (objectToString(e) === '[object Error]' || e instanceof Error);
9727 }
9728 exports.isError = isError;
9729
9730 function isFunction(arg) {
9731 return typeof arg === 'function';
9732 }
9733 exports.isFunction = isFunction;
9734
9735 function isPrimitive(arg) {
9736 return arg === null ||
9737 typeof arg === 'boolean' ||
9738 typeof arg === 'number' ||
9739 typeof arg === 'string' ||
9740 typeof arg === 'symbol' || // ES6 symbol
9741 typeof arg === 'undefined';
9742 }
9743 exports.isPrimitive = isPrimitive;
9744
9745 exports.isBuffer = Buffer.isBuffer;
9746
9747 function objectToString(o) {
9748 return Object.prototype.toString.call(o);
9749 }
9750
9751 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
9752 },{"../../is-buffer/index.js":9}],6:[function(require,module,exports){
9753 // Copyright Joyent, Inc. and other Node contributors.
9754 //
9755 // Permission is hereby granted, free of charge, to any person obtaining a
9756 // copy of this software and associated documentation files (the
9757 // "Software"), to deal in the Software without restriction, including
9758 // without limitation the rights to use, copy, modify, merge, publish,
9759 // distribute, sublicense, and/or sell copies of the Software, and to permit
9760 // persons to whom the Software is furnished to do so, subject to the
9761 // following conditions:
9762 //
9763 // The above copyright notice and this permission notice shall be included
9764 // in all copies or substantial portions of the Software.
9765 //
9766 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9767 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9768 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9769 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9770 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9771 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9772 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9773
9774 function EventEmitter() {
9775 this._events = this._events || {};
9776 this._maxListeners = this._maxListeners || undefined;
9777 }
9778 module.exports = EventEmitter;
9779
9780 // Backwards-compat with node 0.10.x
9781 EventEmitter.EventEmitter = EventEmitter;
9782
9783 EventEmitter.prototype._events = undefined;
9784 EventEmitter.prototype._maxListeners = undefined;
9785
9786 // By default EventEmitters will print a warning if more than 10 listeners are
9787 // added to it. This is a useful default which helps finding memory leaks.
9788 EventEmitter.defaultMaxListeners = 10;
9789
9790 // Obviously not all Emitters should be limited to 10. This function allows
9791 // that to be increased. Set to zero for unlimited.
9792 EventEmitter.prototype.setMaxListeners = function(n) {
9793 if (!isNumber(n) || n < 0 || isNaN(n))
9794 throw TypeError('n must be a positive number');
9795 this._maxListeners = n;
9796 return this;
9797 };
9798
9799 EventEmitter.prototype.emit = function(type) {
9800 var er, handler, len, args, i, listeners;
9801
9802 if (!this._events)
9803 this._events = {};
9804
9805 // If there is no 'error' event listener then throw.
9806 if (type === 'error') {
9807 if (!this._events.error ||
9808 (isObject(this._events.error) && !this._events.error.length)) {
9809 er = arguments[1];
9810 if (er instanceof Error) {
9811 throw er; // Unhandled 'error' event
9812 } else {
9813 // At least give some kind of context to the user
9814 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
9815 err.context = er;
9816 throw err;
9817 }
9818 }
9819 }
9820
9821 handler = this._events[type];
9822
9823 if (isUndefined(handler))
9824 return false;
9825
9826 if (isFunction(handler)) {
9827 switch (arguments.length) {
9828 // fast cases
9829 case 1:
9830 handler.call(this);
9831 break;
9832 case 2:
9833 handler.call(this, arguments[1]);
9834 break;
9835 case 3:
9836 handler.call(this, arguments[1], arguments[2]);
9837 break;
9838 // slower
9839 default:
9840 args = Array.prototype.slice.call(arguments, 1);
9841 handler.apply(this, args);
9842 }
9843 } else if (isObject(handler)) {
9844 args = Array.prototype.slice.call(arguments, 1);
9845 listeners = handler.slice();
9846 len = listeners.length;
9847 for (i = 0; i < len; i++)
9848 listeners[i].apply(this, args);
9849 }
9850
9851 return true;
9852 };
9853
9854 EventEmitter.prototype.addListener = function(type, listener) {
9855 var m;
9856
9857 if (!isFunction(listener))
9858 throw TypeError('listener must be a function');
9859
9860 if (!this._events)
9861 this._events = {};
9862
9863 // To avoid recursion in the case that type === "newListener"! Before
9864 // adding it to the listeners, first emit "newListener".
9865 if (this._events.newListener)
9866 this.emit('newListener', type,
9867 isFunction(listener.listener) ?
9868 listener.listener : listener);
9869
9870 if (!this._events[type])
9871 // Optimize the case of one listener. Don't need the extra array object.
9872 this._events[type] = listener;
9873 else if (isObject(this._events[type]))
9874 // If we've already got an array, just append.
9875 this._events[type].push(listener);
9876 else
9877 // Adding the second element, need to change to array.
9878 this._events[type] = [this._events[type], listener];
9879
9880 // Check for listener leak
9881 if (isObject(this._events[type]) && !this._events[type].warned) {
9882 if (!isUndefined(this._maxListeners)) {
9883 m = this._maxListeners;
9884 } else {
9885 m = EventEmitter.defaultMaxListeners;
9886 }
9887
9888 if (m && m > 0 && this._events[type].length > m) {
9889 this._events[type].warned = true;
9890 console.error('(node) warning: possible EventEmitter memory ' +
9891 'leak detected. %d listeners added. ' +
9892 'Use emitter.setMaxListeners() to increase limit.',
9893 this._events[type].length);
9894 if (typeof console.trace === 'function') {
9895 // not supported in IE 10
9896 console.trace();
9897 }
9898 }
9899 }
9900
9901 return this;
9902 };
9903
9904 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
9905
9906 EventEmitter.prototype.once = function(type, listener) {
9907 if (!isFunction(listener))
9908 throw TypeError('listener must be a function');
9909
9910 var fired = false;
9911
9912 function g() {
9913 this.removeListener(type, g);
9914
9915 if (!fired) {
9916 fired = true;
9917 listener.apply(this, arguments);
9918 }
9919 }
9920
9921 g.listener = listener;
9922 this.on(type, g);
9923
9924 return this;
9925 };
9926
9927 // emits a 'removeListener' event iff the listener was removed
9928 EventEmitter.prototype.removeListener = function(type, listener) {
9929 var list, position, length, i;
9930
9931 if (!isFunction(listener))
9932 throw TypeError('listener must be a function');
9933
9934 if (!this._events || !this._events[type])
9935 return this;
9936
9937 list = this._events[type];
9938 length = list.length;
9939 position = -1;
9940
9941 if (list === listener ||
9942 (isFunction(list.listener) && list.listener === listener)) {
9943 delete this._events[type];
9944 if (this._events.removeListener)
9945 this.emit('removeListener', type, listener);
9946
9947 } else if (isObject(list)) {
9948 for (i = length; i-- > 0;) {
9949 if (list[i] === listener ||
9950 (list[i].listener && list[i].listener === listener)) {
9951 position = i;
9952 break;
9953 }
9954 }
9955
9956 if (position < 0)
9957 return this;
9958
9959 if (list.length === 1) {
9960 list.length = 0;
9961 delete this._events[type];
9962 } else {
9963 list.splice(position, 1);
9964 }
9965
9966 if (this._events.removeListener)
9967 this.emit('removeListener', type, listener);
9968 }
9969
9970 return this;
9971 };
9972
9973 EventEmitter.prototype.removeAllListeners = function(type) {
9974 var key, listeners;
9975
9976 if (!this._events)
9977 return this;
9978
9979 // not listening for removeListener, no need to emit
9980 if (!this._events.removeListener) {
9981 if (arguments.length === 0)
9982 this._events = {};
9983 else if (this._events[type])
9984 delete this._events[type];
9985 return this;
9986 }
9987
9988 // emit removeListener for all listeners on all events
9989 if (arguments.length === 0) {
9990 for (key in this._events) {
9991 if (key === 'removeListener') continue;
9992 this.removeAllListeners(key);
9993 }
9994 this.removeAllListeners('removeListener');
9995 this._events = {};
9996 return this;
9997 }
9998
9999 listeners = this._events[type];
10000
10001 if (isFunction(listeners)) {
10002 this.removeListener(type, listeners);
10003 } else if (listeners) {
10004 // LIFO order
10005 while (listeners.length)
10006 this.removeListener(type, listeners[listeners.length - 1]);
10007 }
10008 delete this._events[type];
10009
10010 return this;
10011 };
10012
10013 EventEmitter.prototype.listeners = function(type) {
10014 var ret;
10015 if (!this._events || !this._events[type])
10016 ret = [];
10017 else if (isFunction(this._events[type]))
10018 ret = [this._events[type]];
10019 else
10020 ret = this._events[type].slice();
10021 return ret;
10022 };
10023
10024 EventEmitter.prototype.listenerCount = function(type) {
10025 if (this._events) {
10026 var evlistener = this._events[type];
10027
10028 if (isFunction(evlistener))
10029 return 1;
10030 else if (evlistener)
10031 return evlistener.length;
10032 }
10033 return 0;
10034 };
10035
10036 EventEmitter.listenerCount = function(emitter, type) {
10037 return emitter.listenerCount(type);
10038 };
10039
10040 function isFunction(arg) {
10041 return typeof arg === 'function';
10042 }
10043
10044 function isNumber(arg) {
10045 return typeof arg === 'number';
10046 }
10047
10048 function isObject(arg) {
10049 return typeof arg === 'object' && arg !== null;
10050 }
10051
10052 function isUndefined(arg) {
10053 return arg === void 0;
10054 }
10055
10056 },{}],7:[function(require,module,exports){
10057 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
10058 var e, m
10059 var eLen = nBytes * 8 - mLen - 1
10060 var eMax = (1 << eLen) - 1
10061 var eBias = eMax >> 1
10062 var nBits = -7
10063 var i = isLE ? (nBytes - 1) : 0
10064 var d = isLE ? -1 : 1
10065 var s = buffer[offset + i]
10066
10067 i += d
10068
10069 e = s & ((1 << (-nBits)) - 1)
10070 s >>= (-nBits)
10071 nBits += eLen
10072 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10073
10074 m = e & ((1 << (-nBits)) - 1)
10075 e >>= (-nBits)
10076 nBits += mLen
10077 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10078
10079 if (e === 0) {
10080 e = 1 - eBias
10081 } else if (e === eMax) {
10082 return m ? NaN : ((s ? -1 : 1) * Infinity)
10083 } else {
10084 m = m + Math.pow(2, mLen)
10085 e = e - eBias
10086 }
10087 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
10088 }
10089
10090 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
10091 var e, m, c
10092 var eLen = nBytes * 8 - mLen - 1
10093 var eMax = (1 << eLen) - 1
10094 var eBias = eMax >> 1
10095 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
10096 var i = isLE ? 0 : (nBytes - 1)
10097 var d = isLE ? 1 : -1
10098 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
10099
10100 value = Math.abs(value)
10101
10102 if (isNaN(value) || value === Infinity) {
10103 m = isNaN(value) ? 1 : 0
10104 e = eMax
10105 } else {
10106 e = Math.floor(Math.log(value) / Math.LN2)
10107 if (value * (c = Math.pow(2, -e)) < 1) {
10108 e--
10109 c *= 2
10110 }
10111 if (e + eBias >= 1) {
10112 value += rt / c
10113 } else {
10114 value += rt * Math.pow(2, 1 - eBias)
10115 }
10116 if (value * c >= 2) {
10117 e++
10118 c /= 2
10119 }
10120
10121 if (e + eBias >= eMax) {
10122 m = 0
10123 e = eMax
10124 } else if (e + eBias >= 1) {
10125 m = (value * c - 1) * Math.pow(2, mLen)
10126 e = e + eBias
10127 } else {
10128 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
10129 e = 0
10130 }
10131 }
10132
10133 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
10134
10135 e = (e << mLen) | m
10136 eLen += mLen
10137 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
10138
10139 buffer[offset + i - d] |= s * 128
10140 }
10141
10142 },{}],8:[function(require,module,exports){
10143 if (typeof Object.create === 'function') {
10144 // implementation from standard node.js 'util' module
10145 module.exports = function inherits(ctor, superCtor) {
10146 ctor.super_ = superCtor
10147 ctor.prototype = Object.create(superCtor.prototype, {
10148 constructor: {
10149 value: ctor,
10150 enumerable: false,
10151 writable: true,
10152 configurable: true
10153 }
10154 });
10155 };
10156 } else {
10157 // old school shim for old browsers
10158 module.exports = function inherits(ctor, superCtor) {
10159 ctor.super_ = superCtor
10160 var TempCtor = function () {}
10161 TempCtor.prototype = superCtor.prototype
10162 ctor.prototype = new TempCtor()
10163 ctor.prototype.constructor = ctor
10164 }
10165 }
10166
10167 },{}],9:[function(require,module,exports){
10168 /*!
10169 * Determine if an object is a Buffer
10170 *
10171 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
10172 * @license MIT
10173 */
10174
10175 // The _isBuffer check is for Safari 5-7 support, because it's missing
10176 // Object.prototype.constructor. Remove this eventually
10177 module.exports = function (obj) {
10178 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
10179 }
10180
10181 function isBuffer (obj) {
10182 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
10183 }
10184
10185 // For Node v0.10 support. Remove this eventually.
10186 function isSlowBuffer (obj) {
10187 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
10188 }
10189
10190 },{}],10:[function(require,module,exports){
10191 var toString = {}.toString;
10192
10193 module.exports = Array.isArray || function (arr) {
10194 return toString.call(arr) == '[object Array]';
10195 };
10196
10197 },{}],11:[function(require,module,exports){
10198 (function (process){
10199 'use strict';
10200
10201 if (!process.version ||
10202 process.version.indexOf('v0.') === 0 ||
10203 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
10204 module.exports = nextTick;
10205 } else {
10206 module.exports = process.nextTick;
10207 }
10208
10209 function nextTick(fn, arg1, arg2, arg3) {
10210 if (typeof fn !== 'function') {
10211 throw new TypeError('"callback" argument must be a function');
10212 }
10213 var len = arguments.length;
10214 var args, i;
10215 switch (len) {
10216 case 0:
10217 case 1:
10218 return process.nextTick(fn);
10219 case 2:
10220 return process.nextTick(function afterTickOne() {
10221 fn.call(null, arg1);
10222 });
10223 case 3:
10224 return process.nextTick(function afterTickTwo() {
10225 fn.call(null, arg1, arg2);
10226 });
10227 case 4:
10228 return process.nextTick(function afterTickThree() {
10229 fn.call(null, arg1, arg2, arg3);
10230 });
10231 default:
10232 args = new Array(len - 1);
10233 i = 0;
10234 while (i < args.length) {
10235 args[i++] = arguments[i];
10236 }
10237 return process.nextTick(function afterTick() {
10238 fn.apply(null, args);
10239 });
10240 }
10241 }
10242
10243 }).call(this,require('_process'))
10244 },{"_process":12}],12:[function(require,module,exports){
10245 // shim for using process in browser
10246 var process = module.exports = {};
10247
10248 // cached from whatever global is present so that test runners that stub it
10249 // don't break things. But we need to wrap it in a try catch in case it is
10250 // wrapped in strict mode code which doesn't define any globals. It's inside a
10251 // function because try/catches deoptimize in certain engines.
10252
10253 var cachedSetTimeout;
10254 var cachedClearTimeout;
10255
10256 function defaultSetTimout() {
10257 throw new Error('setTimeout has not been defined');
10258 }
10259 function defaultClearTimeout () {
10260 throw new Error('clearTimeout has not been defined');
10261 }
10262 (function () {
10263 try {
10264 if (typeof setTimeout === 'function') {
10265 cachedSetTimeout = setTimeout;
10266 } else {
10267 cachedSetTimeout = defaultSetTimout;
10268 }
10269 } catch (e) {
10270 cachedSetTimeout = defaultSetTimout;
10271 }
10272 try {
10273 if (typeof clearTimeout === 'function') {
10274 cachedClearTimeout = clearTimeout;
10275 } else {
10276 cachedClearTimeout = defaultClearTimeout;
10277 }
10278 } catch (e) {
10279 cachedClearTimeout = defaultClearTimeout;
10280 }
10281 } ())
10282 function runTimeout(fun) {
10283 if (cachedSetTimeout === setTimeout) {
10284 //normal enviroments in sane situations
10285 return setTimeout(fun, 0);
10286 }
10287 // if setTimeout wasn't available but was latter defined
10288 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
10289 cachedSetTimeout = setTimeout;
10290 return setTimeout(fun, 0);
10291 }
10292 try {
10293 // when when somebody has screwed with setTimeout but no I.E. maddness
10294 return cachedSetTimeout(fun, 0);
10295 } catch(e){
10296 try {
10297 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10298 return cachedSetTimeout.call(null, fun, 0);
10299 } catch(e){
10300 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
10301 return cachedSetTimeout.call(this, fun, 0);
10302 }
10303 }
10304
10305
10306 }
10307 function runClearTimeout(marker) {
10308 if (cachedClearTimeout === clearTimeout) {
10309 //normal enviroments in sane situations
10310 return clearTimeout(marker);
10311 }
10312 // if clearTimeout wasn't available but was latter defined
10313 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
10314 cachedClearTimeout = clearTimeout;
10315 return clearTimeout(marker);
10316 }
10317 try {
10318 // when when somebody has screwed with setTimeout but no I.E. maddness
10319 return cachedClearTimeout(marker);
10320 } catch (e){
10321 try {
10322 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10323 return cachedClearTimeout.call(null, marker);
10324 } catch (e){
10325 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
10326 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
10327 return cachedClearTimeout.call(this, marker);
10328 }
10329 }
10330
10331
10332
10333 }
10334 var queue = [];
10335 var draining = false;
10336 var currentQueue;
10337 var queueIndex = -1;
10338
10339 function cleanUpNextTick() {
10340 if (!draining || !currentQueue) {
10341 return;
10342 }
10343 draining = false;
10344 if (currentQueue.length) {
10345 queue = currentQueue.concat(queue);
10346 } else {
10347 queueIndex = -1;
10348 }
10349 if (queue.length) {
10350 drainQueue();
10351 }
10352 }
10353
10354 function drainQueue() {
10355 if (draining) {
10356 return;
10357 }
10358 var timeout = runTimeout(cleanUpNextTick);
10359 draining = true;
10360
10361 var len = queue.length;
10362 while(len) {
10363 currentQueue = queue;
10364 queue = [];
10365 while (++queueIndex < len) {
10366 if (currentQueue) {
10367 currentQueue[queueIndex].run();
10368 }
10369 }
10370 queueIndex = -1;
10371 len = queue.length;
10372 }
10373 currentQueue = null;
10374 draining = false;
10375 runClearTimeout(timeout);
10376 }
10377
10378 process.nextTick = function (fun) {
10379 var args = new Array(arguments.length - 1);
10380 if (arguments.length > 1) {
10381 for (var i = 1; i < arguments.length; i++) {
10382 args[i - 1] = arguments[i];
10383 }
10384 }
10385 queue.push(new Item(fun, args));
10386 if (queue.length === 1 && !draining) {
10387 runTimeout(drainQueue);
10388 }
10389 };
10390
10391 // v8 likes predictible objects
10392 function Item(fun, array) {
10393 this.fun = fun;
10394 this.array = array;
10395 }
10396 Item.prototype.run = function () {
10397 this.fun.apply(null, this.array);
10398 };
10399 process.title = 'browser';
10400 process.browser = true;
10401 process.env = {};
10402 process.argv = [];
10403 process.version = ''; // empty string to avoid regexp issues
10404 process.versions = {};
10405
10406 function noop() {}
10407
10408 process.on = noop;
10409 process.addListener = noop;
10410 process.once = noop;
10411 process.off = noop;
10412 process.removeListener = noop;
10413 process.removeAllListeners = noop;
10414 process.emit = noop;
10415 process.prependListener = noop;
10416 process.prependOnceListener = noop;
10417
10418 process.listeners = function (name) { return [] }
10419
10420 process.binding = function (name) {
10421 throw new Error('process.binding is not supported');
10422 };
10423
10424 process.cwd = function () { return '/' };
10425 process.chdir = function (dir) {
10426 throw new Error('process.chdir is not supported');
10427 };
10428 process.umask = function() { return 0; };
10429
10430 },{}],13:[function(require,module,exports){
10431 module.exports = require('./lib/_stream_duplex.js');
10432
10433 },{"./lib/_stream_duplex.js":14}],14:[function(require,module,exports){
10434 // Copyright Joyent, Inc. and other Node contributors.
10435 //
10436 // Permission is hereby granted, free of charge, to any person obtaining a
10437 // copy of this software and associated documentation files (the
10438 // "Software"), to deal in the Software without restriction, including
10439 // without limitation the rights to use, copy, modify, merge, publish,
10440 // distribute, sublicense, and/or sell copies of the Software, and to permit
10441 // persons to whom the Software is furnished to do so, subject to the
10442 // following conditions:
10443 //
10444 // The above copyright notice and this permission notice shall be included
10445 // in all copies or substantial portions of the Software.
10446 //
10447 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10448 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10449 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10450 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10451 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10452 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10453 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10454
10455 // a duplex stream is just a stream that is both readable and writable.
10456 // Since JS doesn't have multiple prototypal inheritance, this class
10457 // prototypally inherits from Readable, and then parasitically from
10458 // Writable.
10459
10460 'use strict';
10461
10462 /*<replacement>*/
10463
10464 var processNextTick = require('process-nextick-args');
10465 /*</replacement>*/
10466
10467 /*<replacement>*/
10468 var objectKeys = Object.keys || function (obj) {
10469 var keys = [];
10470 for (var key in obj) {
10471 keys.push(key);
10472 }return keys;
10473 };
10474 /*</replacement>*/
10475
10476 module.exports = Duplex;
10477
10478 /*<replacement>*/
10479 var util = require('core-util-is');
10480 util.inherits = require('inherits');
10481 /*</replacement>*/
10482
10483 var Readable = require('./_stream_readable');
10484 var Writable = require('./_stream_writable');
10485
10486 util.inherits(Duplex, Readable);
10487
10488 var keys = objectKeys(Writable.prototype);
10489 for (var v = 0; v < keys.length; v++) {
10490 var method = keys[v];
10491 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
10492 }
10493
10494 function Duplex(options) {
10495 if (!(this instanceof Duplex)) return new Duplex(options);
10496
10497 Readable.call(this, options);
10498 Writable.call(this, options);
10499
10500 if (options && options.readable === false) this.readable = false;
10501
10502 if (options && options.writable === false) this.writable = false;
10503
10504 this.allowHalfOpen = true;
10505 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
10506
10507 this.once('end', onend);
10508 }
10509
10510 // the no-half-open enforcer
10511 function onend() {
10512 // if we allow half-open state, or if the writable side ended,
10513 // then we're ok.
10514 if (this.allowHalfOpen || this._writableState.ended) return;
10515
10516 // no more data can be written.
10517 // But allow more writes to happen in this tick.
10518 processNextTick(onEndNT, this);
10519 }
10520
10521 function onEndNT(self) {
10522 self.end();
10523 }
10524
10525 Object.defineProperty(Duplex.prototype, 'destroyed', {
10526 get: function () {
10527 if (this._readableState === undefined || this._writableState === undefined) {
10528 return false;
10529 }
10530 return this._readableState.destroyed && this._writableState.destroyed;
10531 },
10532 set: function (value) {
10533 // we ignore the value if the stream
10534 // has not been initialized yet
10535 if (this._readableState === undefined || this._writableState === undefined) {
10536 return;
10537 }
10538
10539 // backward compatibility, the user is explicitly
10540 // managing destroyed
10541 this._readableState.destroyed = value;
10542 this._writableState.destroyed = value;
10543 }
10544 });
10545
10546 Duplex.prototype._destroy = function (err, cb) {
10547 this.push(null);
10548 this.end();
10549
10550 processNextTick(cb, err);
10551 };
10552
10553 function forEach(xs, f) {
10554 for (var i = 0, l = xs.length; i < l; i++) {
10555 f(xs[i], i);
10556 }
10557 }
10558 },{"./_stream_readable":16,"./_stream_writable":18,"core-util-is":5,"inherits":8,"process-nextick-args":11}],15:[function(require,module,exports){
10559 // Copyright Joyent, Inc. and other Node contributors.
10560 //
10561 // Permission is hereby granted, free of charge, to any person obtaining a
10562 // copy of this software and associated documentation files (the
10563 // "Software"), to deal in the Software without restriction, including
10564 // without limitation the rights to use, copy, modify, merge, publish,
10565 // distribute, sublicense, and/or sell copies of the Software, and to permit
10566 // persons to whom the Software is furnished to do so, subject to the
10567 // following conditions:
10568 //
10569 // The above copyright notice and this permission notice shall be included
10570 // in all copies or substantial portions of the Software.
10571 //
10572 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10573 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10574 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10575 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10576 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10577 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10578 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10579
10580 // a passthrough stream.
10581 // basically just the most minimal sort of Transform stream.
10582 // Every written chunk gets output as-is.
10583
10584 'use strict';
10585
10586 module.exports = PassThrough;
10587
10588 var Transform = require('./_stream_transform');
10589
10590 /*<replacement>*/
10591 var util = require('core-util-is');
10592 util.inherits = require('inherits');
10593 /*</replacement>*/
10594
10595 util.inherits(PassThrough, Transform);
10596
10597 function PassThrough(options) {
10598 if (!(this instanceof PassThrough)) return new PassThrough(options);
10599
10600 Transform.call(this, options);
10601 }
10602
10603 PassThrough.prototype._transform = function (chunk, encoding, cb) {
10604 cb(null, chunk);
10605 };
10606 },{"./_stream_transform":17,"core-util-is":5,"inherits":8}],16:[function(require,module,exports){
10607 (function (process,global){
10608 // Copyright Joyent, Inc. and other Node contributors.
10609 //
10610 // Permission is hereby granted, free of charge, to any person obtaining a
10611 // copy of this software and associated documentation files (the
10612 // "Software"), to deal in the Software without restriction, including
10613 // without limitation the rights to use, copy, modify, merge, publish,
10614 // distribute, sublicense, and/or sell copies of the Software, and to permit
10615 // persons to whom the Software is furnished to do so, subject to the
10616 // following conditions:
10617 //
10618 // The above copyright notice and this permission notice shall be included
10619 // in all copies or substantial portions of the Software.
10620 //
10621 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10622 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10623 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10624 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10625 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10626 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10627 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10628
10629 'use strict';
10630
10631 /*<replacement>*/
10632
10633 var processNextTick = require('process-nextick-args');
10634 /*</replacement>*/
10635
10636 module.exports = Readable;
10637
10638 /*<replacement>*/
10639 var isArray = require('isarray');
10640 /*</replacement>*/
10641
10642 /*<replacement>*/
10643 var Duplex;
10644 /*</replacement>*/
10645
10646 Readable.ReadableState = ReadableState;
10647
10648 /*<replacement>*/
10649 var EE = require('events').EventEmitter;
10650
10651 var EElistenerCount = function (emitter, type) {
10652 return emitter.listeners(type).length;
10653 };
10654 /*</replacement>*/
10655
10656 /*<replacement>*/
10657 var Stream = require('./internal/streams/stream');
10658 /*</replacement>*/
10659
10660 // TODO(bmeurer): Change this back to const once hole checks are
10661 // properly optimized away early in Ignition+TurboFan.
10662 /*<replacement>*/
10663 var Buffer = require('safe-buffer').Buffer;
10664 var OurUint8Array = global.Uint8Array || function () {};
10665 function _uint8ArrayToBuffer(chunk) {
10666 return Buffer.from(chunk);
10667 }
10668 function _isUint8Array(obj) {
10669 return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
10670 }
10671 /*</replacement>*/
10672
10673 /*<replacement>*/
10674 var util = require('core-util-is');
10675 util.inherits = require('inherits');
10676 /*</replacement>*/
10677
10678 /*<replacement>*/
10679 var debugUtil = require('util');
10680 var debug = void 0;
10681 if (debugUtil && debugUtil.debuglog) {
10682 debug = debugUtil.debuglog('stream');
10683 } else {
10684 debug = function () {};
10685 }
10686 /*</replacement>*/
10687
10688 var BufferList = require('./internal/streams/BufferList');
10689 var destroyImpl = require('./internal/streams/destroy');
10690 var StringDecoder;
10691
10692 util.inherits(Readable, Stream);
10693
10694 var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
10695
10696 function prependListener(emitter, event, fn) {
10697 // Sadly this is not cacheable as some libraries bundle their own
10698 // event emitter implementation with them.
10699 if (typeof emitter.prependListener === 'function') {
10700 return emitter.prependListener(event, fn);
10701 } else {
10702 // This is a hack to make sure that our error handler is attached before any
10703 // userland ones. NEVER DO THIS. This is here only because this code needs
10704 // to continue to work with older versions of Node.js that do not include
10705 // the prependListener() method. The goal is to eventually remove this hack.
10706 if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
10707 }
10708 }
10709
10710 function ReadableState(options, stream) {
10711 Duplex = Duplex || require('./_stream_duplex');
10712
10713 options = options || {};
10714
10715 // object stream flag. Used to make read(n) ignore n and to
10716 // make all the buffer merging and length checks go away
10717 this.objectMode = !!options.objectMode;
10718
10719 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
10720
10721 // the point at which it stops calling _read() to fill the buffer
10722 // Note: 0 is a valid value, means "don't call _read preemptively ever"
10723 var hwm = options.highWaterMark;
10724 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
10725 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
10726
10727 // cast to ints.
10728 this.highWaterMark = Math.floor(this.highWaterMark);
10729
10730 // A linked list is used to store data chunks instead of an array because the
10731 // linked list can remove elements from the beginning faster than
10732 // array.shift()
10733 this.buffer = new BufferList();
10734 this.length = 0;
10735 this.pipes = null;
10736 this.pipesCount = 0;
10737 this.flowing = null;
10738 this.ended = false;
10739 this.endEmitted = false;
10740 this.reading = false;
10741
10742 // a flag to be able to tell if the event 'readable'/'data' is emitted
10743 // immediately, or on a later tick. We set this to true at first, because
10744 // any actions that shouldn't happen until "later" should generally also
10745 // not happen before the first read call.
10746 this.sync = true;
10747
10748 // whenever we return null, then we set a flag to say
10749 // that we're awaiting a 'readable' event emission.
10750 this.needReadable = false;
10751 this.emittedReadable = false;
10752 this.readableListening = false;
10753 this.resumeScheduled = false;
10754
10755 // has it been destroyed
10756 this.destroyed = false;
10757
10758 // Crypto is kind of old and crusty. Historically, its default string
10759 // encoding is 'binary' so we have to make this configurable.
10760 // Everything else in the universe uses 'utf8', though.
10761 this.defaultEncoding = options.defaultEncoding || 'utf8';
10762
10763 // the number of writers that are awaiting a drain event in .pipe()s
10764 this.awaitDrain = 0;
10765
10766 // if true, a maybeReadMore has been scheduled
10767 this.readingMore = false;
10768
10769 this.decoder = null;
10770 this.encoding = null;
10771 if (options.encoding) {
10772 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10773 this.decoder = new StringDecoder(options.encoding);
10774 this.encoding = options.encoding;
10775 }
10776 }
10777
10778 function Readable(options) {
10779 Duplex = Duplex || require('./_stream_duplex');
10780
10781 if (!(this instanceof Readable)) return new Readable(options);
10782
10783 this._readableState = new ReadableState(options, this);
10784
10785 // legacy
10786 this.readable = true;
10787
10788 if (options) {
10789 if (typeof options.read === 'function') this._read = options.read;
10790
10791 if (typeof options.destroy === 'function') this._destroy = options.destroy;
10792 }
10793
10794 Stream.call(this);
10795 }
10796
10797 Object.defineProperty(Readable.prototype, 'destroyed', {
10798 get: function () {
10799 if (this._readableState === undefined) {
10800 return false;
10801 }
10802 return this._readableState.destroyed;
10803 },
10804 set: function (value) {
10805 // we ignore the value if the stream
10806 // has not been initialized yet
10807 if (!this._readableState) {
10808 return;
10809 }
10810
10811 // backward compatibility, the user is explicitly
10812 // managing destroyed
10813 this._readableState.destroyed = value;
10814 }
10815 });
10816
10817 Readable.prototype.destroy = destroyImpl.destroy;
10818 Readable.prototype._undestroy = destroyImpl.undestroy;
10819 Readable.prototype._destroy = function (err, cb) {
10820 this.push(null);
10821 cb(err);
10822 };
10823
10824 // Manually shove something into the read() buffer.
10825 // This returns true if the highWaterMark has not been hit yet,
10826 // similar to how Writable.write() returns true if you should
10827 // write() some more.
10828 Readable.prototype.push = function (chunk, encoding) {
10829 var state = this._readableState;
10830 var skipChunkCheck;
10831
10832 if (!state.objectMode) {
10833 if (typeof chunk === 'string') {
10834 encoding = encoding || state.defaultEncoding;
10835 if (encoding !== state.encoding) {
10836 chunk = Buffer.from(chunk, encoding);
10837 encoding = '';
10838 }
10839 skipChunkCheck = true;
10840 }
10841 } else {
10842 skipChunkCheck = true;
10843 }
10844
10845 return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
10846 };
10847
10848 // Unshift should *always* be something directly out of read()
10849 Readable.prototype.unshift = function (chunk) {
10850 return readableAddChunk(this, chunk, null, true, false);
10851 };
10852
10853 function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
10854 var state = stream._readableState;
10855 if (chunk === null) {
10856 state.reading = false;
10857 onEofChunk(stream, state);
10858 } else {
10859 var er;
10860 if (!skipChunkCheck) er = chunkInvalid(state, chunk);
10861 if (er) {
10862 stream.emit('error', er);
10863 } else if (state.objectMode || chunk && chunk.length > 0) {
10864 if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
10865 chunk = _uint8ArrayToBuffer(chunk);
10866 }
10867
10868 if (addToFront) {
10869 if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
10870 } else if (state.ended) {
10871 stream.emit('error', new Error('stream.push() after EOF'));
10872 } else {
10873 state.reading = false;
10874 if (state.decoder && !encoding) {
10875 chunk = state.decoder.write(chunk);
10876 if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
10877 } else {
10878 addChunk(stream, state, chunk, false);
10879 }
10880 }
10881 } else if (!addToFront) {
10882 state.reading = false;
10883 }
10884 }
10885
10886 return needMoreData(state);
10887 }
10888
10889 function addChunk(stream, state, chunk, addToFront) {
10890 if (state.flowing && state.length === 0 && !state.sync) {
10891 stream.emit('data', chunk);
10892 stream.read(0);
10893 } else {
10894 // update the buffer info.
10895 state.length += state.objectMode ? 1 : chunk.length;
10896 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
10897
10898 if (state.needReadable) emitReadable(stream);
10899 }
10900 maybeReadMore(stream, state);
10901 }
10902
10903 function chunkInvalid(state, chunk) {
10904 var er;
10905 if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
10906 er = new TypeError('Invalid non-string/buffer chunk');
10907 }
10908 return er;
10909 }
10910
10911 // if it's past the high water mark, we can push in some more.
10912 // Also, if we have no data yet, we can stand some
10913 // more bytes. This is to work around cases where hwm=0,
10914 // such as the repl. Also, if the push() triggered a
10915 // readable event, and the user called read(largeNumber) such that
10916 // needReadable was set, then we ought to push more, so that another
10917 // 'readable' event will be triggered.
10918 function needMoreData(state) {
10919 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
10920 }
10921
10922 Readable.prototype.isPaused = function () {
10923 return this._readableState.flowing === false;
10924 };
10925
10926 // backwards compatibility.
10927 Readable.prototype.setEncoding = function (enc) {
10928 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10929 this._readableState.decoder = new StringDecoder(enc);
10930 this._readableState.encoding = enc;
10931 return this;
10932 };
10933
10934 // Don't raise the hwm > 8MB
10935 var MAX_HWM = 0x800000;
10936 function computeNewHighWaterMark(n) {
10937 if (n >= MAX_HWM) {
10938 n = MAX_HWM;
10939 } else {
10940 // Get the next highest power of 2 to prevent increasing hwm excessively in
10941 // tiny amounts
10942 n--;
10943 n |= n >>> 1;
10944 n |= n >>> 2;
10945 n |= n >>> 4;
10946 n |= n >>> 8;
10947 n |= n >>> 16;
10948 n++;
10949 }
10950 return n;
10951 }
10952
10953 // This function is designed to be inlinable, so please take care when making
10954 // changes to the function body.
10955 function howMuchToRead(n, state) {
10956 if (n <= 0 || state.length === 0 && state.ended) return 0;
10957 if (state.objectMode) return 1;
10958 if (n !== n) {
10959 // Only flow one buffer at a time
10960 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
10961 }
10962 // If we're asking for more than the current hwm, then raise the hwm.
10963 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
10964 if (n <= state.length) return n;
10965 // Don't have enough
10966 if (!state.ended) {
10967 state.needReadable = true;
10968 return 0;
10969 }
10970 return state.length;
10971 }
10972
10973 // you can override either this method, or the async _read(n) below.
10974 Readable.prototype.read = function (n) {
10975 debug('read', n);
10976 n = parseInt(n, 10);
10977 var state = this._readableState;
10978 var nOrig = n;
10979
10980 if (n !== 0) state.emittedReadable = false;
10981
10982 // if we're doing read(0) to trigger a readable event, but we
10983 // already have a bunch of data in the buffer, then just trigger
10984 // the 'readable' event and move on.
10985 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
10986 debug('read: emitReadable', state.length, state.ended);
10987 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
10988 return null;
10989 }
10990
10991 n = howMuchToRead(n, state);
10992
10993 // if we've ended, and we're now clear, then finish it up.
10994 if (n === 0 && state.ended) {
10995 if (state.length === 0) endReadable(this);
10996 return null;
10997 }
10998
10999 // All the actual chunk generation logic needs to be
11000 // *below* the call to _read. The reason is that in certain
11001 // synthetic stream cases, such as passthrough streams, _read
11002 // may be a completely synchronous operation which may change
11003 // the state of the read buffer, providing enough data when
11004 // before there was *not* enough.
11005 //
11006 // So, the steps are:
11007 // 1. Figure out what the state of things will be after we do
11008 // a read from the buffer.
11009 //
11010 // 2. If that resulting state will trigger a _read, then call _read.
11011 // Note that this may be asynchronous, or synchronous. Yes, it is
11012 // deeply ugly to write APIs this way, but that still doesn't mean
11013 // that the Readable class should behave improperly, as streams are
11014 // designed to be sync/async agnostic.
11015 // Take note if the _read call is sync or async (ie, if the read call
11016 // has returned yet), so that we know whether or not it's safe to emit
11017 // 'readable' etc.
11018 //
11019 // 3. Actually pull the requested chunks out of the buffer and return.
11020
11021 // if we need a readable event, then we need to do some reading.
11022 var doRead = state.needReadable;
11023 debug('need readable', doRead);
11024
11025 // if we currently have less than the highWaterMark, then also read some
11026 if (state.length === 0 || state.length - n < state.highWaterMark) {
11027 doRead = true;
11028 debug('length less than watermark', doRead);
11029 }
11030
11031 // however, if we've ended, then there's no point, and if we're already
11032 // reading, then it's unnecessary.
11033 if (state.ended || state.reading) {
11034 doRead = false;
11035 debug('reading or ended', doRead);
11036 } else if (doRead) {
11037 debug('do read');
11038 state.reading = true;
11039 state.sync = true;
11040 // if the length is currently zero, then we *need* a readable event.
11041 if (state.length === 0) state.needReadable = true;
11042 // call internal read method
11043 this._read(state.highWaterMark);
11044 state.sync = false;
11045 // If _read pushed data synchronously, then `reading` will be false,
11046 // and we need to re-evaluate how much data we can return to the user.
11047 if (!state.reading) n = howMuchToRead(nOrig, state);
11048 }
11049
11050 var ret;
11051 if (n > 0) ret = fromList(n, state);else ret = null;
11052
11053 if (ret === null) {
11054 state.needReadable = true;
11055 n = 0;
11056 } else {
11057 state.length -= n;
11058 }
11059
11060 if (state.length === 0) {
11061 // If we have nothing in the buffer, then we want to know
11062 // as soon as we *do* get something into the buffer.
11063 if (!state.ended) state.needReadable = true;
11064
11065 // If we tried to read() past the EOF, then emit end on the next tick.
11066 if (nOrig !== n && state.ended) endReadable(this);
11067 }
11068
11069 if (ret !== null) this.emit('data', ret);
11070
11071 return ret;
11072 };
11073
11074 function onEofChunk(stream, state) {
11075 if (state.ended) return;
11076 if (state.decoder) {
11077 var chunk = state.decoder.end();
11078 if (chunk && chunk.length) {
11079 state.buffer.push(chunk);
11080 state.length += state.objectMode ? 1 : chunk.length;
11081 }
11082 }
11083 state.ended = true;
11084
11085 // emit 'readable' now to make sure it gets picked up.
11086 emitReadable(stream);
11087 }
11088
11089 // Don't emit readable right away in sync mode, because this can trigger
11090 // another read() call => stack overflow. This way, it might trigger
11091 // a nextTick recursion warning, but that's not so bad.
11092 function emitReadable(stream) {
11093 var state = stream._readableState;
11094 state.needReadable = false;
11095 if (!state.emittedReadable) {
11096 debug('emitReadable', state.flowing);
11097 state.emittedReadable = true;
11098 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
11099 }
11100 }
11101
11102 function emitReadable_(stream) {
11103 debug('emit readable');
11104 stream.emit('readable');
11105 flow(stream);
11106 }
11107
11108 // at this point, the user has presumably seen the 'readable' event,
11109 // and called read() to consume some data. that may have triggered
11110 // in turn another _read(n) call, in which case reading = true if
11111 // it's in progress.
11112 // However, if we're not ended, or reading, and the length < hwm,
11113 // then go ahead and try to read some more preemptively.
11114 function maybeReadMore(stream, state) {
11115 if (!state.readingMore) {
11116 state.readingMore = true;
11117 processNextTick(maybeReadMore_, stream, state);
11118 }
11119 }
11120
11121 function maybeReadMore_(stream, state) {
11122 var len = state.length;
11123 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
11124 debug('maybeReadMore read 0');
11125 stream.read(0);
11126 if (len === state.length)
11127 // didn't get any data, stop spinning.
11128 break;else len = state.length;
11129 }
11130 state.readingMore = false;
11131 }
11132
11133 // abstract method. to be overridden in specific implementation classes.
11134 // call cb(er, data) where data is <= n in length.
11135 // for virtual (non-string, non-buffer) streams, "length" is somewhat
11136 // arbitrary, and perhaps not very meaningful.
11137 Readable.prototype._read = function (n) {
11138 this.emit('error', new Error('_read() is not implemented'));
11139 };
11140
11141 Readable.prototype.pipe = function (dest, pipeOpts) {
11142 var src = this;
11143 var state = this._readableState;
11144
11145 switch (state.pipesCount) {
11146 case 0:
11147 state.pipes = dest;
11148 break;
11149 case 1:
11150 state.pipes = [state.pipes, dest];
11151 break;
11152 default:
11153 state.pipes.push(dest);
11154 break;
11155 }
11156 state.pipesCount += 1;
11157 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
11158
11159 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
11160
11161 var endFn = doEnd ? onend : unpipe;
11162 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
11163
11164 dest.on('unpipe', onunpipe);
11165 function onunpipe(readable, unpipeInfo) {
11166 debug('onunpipe');
11167 if (readable === src) {
11168 if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
11169 unpipeInfo.hasUnpiped = true;
11170 cleanup();
11171 }
11172 }
11173 }
11174
11175 function onend() {
11176 debug('onend');
11177 dest.end();
11178 }
11179
11180 // when the dest drains, it reduces the awaitDrain counter
11181 // on the source. This would be more elegant with a .once()
11182 // handler in flow(), but adding and removing repeatedly is
11183 // too slow.
11184 var ondrain = pipeOnDrain(src);
11185 dest.on('drain', ondrain);
11186
11187 var cleanedUp = false;
11188 function cleanup() {
11189 debug('cleanup');
11190 // cleanup event handlers once the pipe is broken
11191 dest.removeListener('close', onclose);
11192 dest.removeListener('finish', onfinish);
11193 dest.removeListener('drain', ondrain);
11194 dest.removeListener('error', onerror);
11195 dest.removeListener('unpipe', onunpipe);
11196 src.removeListener('end', onend);
11197 src.removeListener('end', unpipe);
11198 src.removeListener('data', ondata);
11199
11200 cleanedUp = true;
11201
11202 // if the reader is waiting for a drain event from this
11203 // specific writer, then it would cause it to never start
11204 // flowing again.
11205 // So, if this is awaiting a drain, then we just call it now.
11206 // If we don't know, then assume that we are waiting for one.
11207 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
11208 }
11209
11210 // If the user pushes more data while we're writing to dest then we'll end up
11211 // in ondata again. However, we only want to increase awaitDrain once because
11212 // dest will only emit one 'drain' event for the multiple writes.
11213 // => Introduce a guard on increasing awaitDrain.
11214 var increasedAwaitDrain = false;
11215 src.on('data', ondata);
11216 function ondata(chunk) {
11217 debug('ondata');
11218 increasedAwaitDrain = false;
11219 var ret = dest.write(chunk);
11220 if (false === ret && !increasedAwaitDrain) {
11221 // If the user unpiped during `dest.write()`, it is possible
11222 // to get stuck in a permanently paused state if that write
11223 // also returned false.
11224 // => Check whether `dest` is still a piping destination.
11225 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
11226 debug('false write response, pause', src._readableState.awaitDrain);
11227 src._readableState.awaitDrain++;
11228 increasedAwaitDrain = true;
11229 }
11230 src.pause();
11231 }
11232 }
11233
11234 // if the dest has an error, then stop piping into it.
11235 // however, don't suppress the throwing behavior for this.
11236 function onerror(er) {
11237 debug('onerror', er);
11238 unpipe();
11239 dest.removeListener('error', onerror);
11240 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
11241 }
11242
11243 // Make sure our error handler is attached before userland ones.
11244 prependListener(dest, 'error', onerror);
11245
11246 // Both close and finish should trigger unpipe, but only once.
11247 function onclose() {
11248 dest.removeListener('finish', onfinish);
11249 unpipe();
11250 }
11251 dest.once('close', onclose);
11252 function onfinish() {
11253 debug('onfinish');
11254 dest.removeListener('close', onclose);
11255 unpipe();
11256 }
11257 dest.once('finish', onfinish);
11258
11259 function unpipe() {
11260 debug('unpipe');
11261 src.unpipe(dest);
11262 }
11263
11264 // tell the dest that it's being piped to
11265 dest.emit('pipe', src);
11266
11267 // start the flow if it hasn't been started already.
11268 if (!state.flowing) {
11269 debug('pipe resume');
11270 src.resume();
11271 }
11272
11273 return dest;
11274 };
11275
11276 function pipeOnDrain(src) {
11277 return function () {
11278 var state = src._readableState;
11279 debug('pipeOnDrain', state.awaitDrain);
11280 if (state.awaitDrain) state.awaitDrain--;
11281 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
11282 state.flowing = true;
11283 flow(src);
11284 }
11285 };
11286 }
11287
11288 Readable.prototype.unpipe = function (dest) {
11289 var state = this._readableState;
11290 var unpipeInfo = { hasUnpiped: false };
11291
11292 // if we're not piping anywhere, then do nothing.
11293 if (state.pipesCount === 0) return this;
11294
11295 // just one destination. most common case.
11296 if (state.pipesCount === 1) {
11297 // passed in one, but it's not the right one.
11298 if (dest && dest !== state.pipes) return this;
11299
11300 if (!dest) dest = state.pipes;
11301
11302 // got a match.
11303 state.pipes = null;
11304 state.pipesCount = 0;
11305 state.flowing = false;
11306 if (dest) dest.emit('unpipe', this, unpipeInfo);
11307 return this;
11308 }
11309
11310 // slow case. multiple pipe destinations.
11311
11312 if (!dest) {
11313 // remove all.
11314 var dests = state.pipes;
11315 var len = state.pipesCount;
11316 state.pipes = null;
11317 state.pipesCount = 0;
11318 state.flowing = false;
11319
11320 for (var i = 0; i < len; i++) {
11321 dests[i].emit('unpipe', this, unpipeInfo);
11322 }return this;
11323 }
11324
11325 // try to find the right one.
11326 var index = indexOf(state.pipes, dest);
11327 if (index === -1) return this;
11328
11329 state.pipes.splice(index, 1);
11330 state.pipesCount -= 1;
11331 if (state.pipesCount === 1) state.pipes = state.pipes[0];
11332
11333 dest.emit('unpipe', this, unpipeInfo);
11334
11335 return this;
11336 };
11337
11338 // set up data events if they are asked for
11339 // Ensure readable listeners eventually get something
11340 Readable.prototype.on = function (ev, fn) {
11341 var res = Stream.prototype.on.call(this, ev, fn);
11342
11343 if (ev === 'data') {
11344 // Start flowing on next tick if stream isn't explicitly paused
11345 if (this._readableState.flowing !== false) this.resume();
11346 } else if (ev === 'readable') {
11347 var state = this._readableState;
11348 if (!state.endEmitted && !state.readableListening) {
11349 state.readableListening = state.needReadable = true;
11350 state.emittedReadable = false;
11351 if (!state.reading) {
11352 processNextTick(nReadingNextTick, this);
11353 } else if (state.length) {
11354 emitReadable(this);
11355 }
11356 }
11357 }
11358
11359 return res;
11360 };
11361 Readable.prototype.addListener = Readable.prototype.on;
11362
11363 function nReadingNextTick(self) {
11364 debug('readable nexttick read 0');
11365 self.read(0);
11366 }
11367
11368 // pause() and resume() are remnants of the legacy readable stream API
11369 // If the user uses them, then switch into old mode.
11370 Readable.prototype.resume = function () {
11371 var state = this._readableState;
11372 if (!state.flowing) {
11373 debug('resume');
11374 state.flowing = true;
11375 resume(this, state);
11376 }
11377 return this;
11378 };
11379
11380 function resume(stream, state) {
11381 if (!state.resumeScheduled) {
11382 state.resumeScheduled = true;
11383 processNextTick(resume_, stream, state);
11384 }
11385 }
11386
11387 function resume_(stream, state) {
11388 if (!state.reading) {
11389 debug('resume read 0');
11390 stream.read(0);
11391 }
11392
11393 state.resumeScheduled = false;
11394 state.awaitDrain = 0;
11395 stream.emit('resume');
11396 flow(stream);
11397 if (state.flowing && !state.reading) stream.read(0);
11398 }
11399
11400 Readable.prototype.pause = function () {
11401 debug('call pause flowing=%j', this._readableState.flowing);
11402 if (false !== this._readableState.flowing) {
11403 debug('pause');
11404 this._readableState.flowing = false;
11405 this.emit('pause');
11406 }
11407 return this;
11408 };
11409
11410 function flow(stream) {
11411 var state = stream._readableState;
11412 debug('flow', state.flowing);
11413 while (state.flowing && stream.read() !== null) {}
11414 }
11415
11416 // wrap an old-style stream as the async data source.
11417 // This is *not* part of the readable stream interface.
11418 // It is an ugly unfortunate mess of history.
11419 Readable.prototype.wrap = function (stream) {
11420 var state = this._readableState;
11421 var paused = false;
11422
11423 var self = this;
11424 stream.on('end', function () {
11425 debug('wrapped end');
11426 if (state.decoder && !state.ended) {
11427 var chunk = state.decoder.end();
11428 if (chunk && chunk.length) self.push(chunk);
11429 }
11430
11431 self.push(null);
11432 });
11433
11434 stream.on('data', function (chunk) {
11435 debug('wrapped data');
11436 if (state.decoder) chunk = state.decoder.write(chunk);
11437
11438 // don't skip over falsy values in objectMode
11439 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
11440
11441 var ret = self.push(chunk);
11442 if (!ret) {
11443 paused = true;
11444 stream.pause();
11445 }
11446 });
11447
11448 // proxy all the other methods.
11449 // important when wrapping filters and duplexes.
11450 for (var i in stream) {
11451 if (this[i] === undefined && typeof stream[i] === 'function') {
11452 this[i] = function (method) {
11453 return function () {
11454 return stream[method].apply(stream, arguments);
11455 };
11456 }(i);
11457 }
11458 }
11459
11460 // proxy certain important events.
11461 for (var n = 0; n < kProxyEvents.length; n++) {
11462 stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));
11463 }
11464
11465 // when we try to consume some more bytes, simply unpause the
11466 // underlying stream.
11467 self._read = function (n) {
11468 debug('wrapped _read', n);
11469 if (paused) {
11470 paused = false;
11471 stream.resume();
11472 }
11473 };
11474
11475 return self;
11476 };
11477
11478 // exposed for testing purposes only.
11479 Readable._fromList = fromList;
11480
11481 // Pluck off n bytes from an array of buffers.
11482 // Length is the combined lengths of all the buffers in the list.
11483 // This function is designed to be inlinable, so please take care when making
11484 // changes to the function body.
11485 function fromList(n, state) {
11486 // nothing buffered
11487 if (state.length === 0) return null;
11488
11489 var ret;
11490 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
11491 // read it all, truncate the list
11492 if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
11493 state.buffer.clear();
11494 } else {
11495 // read part of list
11496 ret = fromListPartial(n, state.buffer, state.decoder);
11497 }
11498
11499 return ret;
11500 }
11501
11502 // Extracts only enough buffered data to satisfy the amount requested.
11503 // This function is designed to be inlinable, so please take care when making
11504 // changes to the function body.
11505 function fromListPartial(n, list, hasStrings) {
11506 var ret;
11507 if (n < list.head.data.length) {
11508 // slice is the same for buffers and strings
11509 ret = list.head.data.slice(0, n);
11510 list.head.data = list.head.data.slice(n);
11511 } else if (n === list.head.data.length) {
11512 // first chunk is a perfect match
11513 ret = list.shift();
11514 } else {
11515 // result spans more than one buffer
11516 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
11517 }
11518 return ret;
11519 }
11520
11521 // Copies a specified amount of characters from the list of buffered data
11522 // chunks.
11523 // This function is designed to be inlinable, so please take care when making
11524 // changes to the function body.
11525 function copyFromBufferString(n, list) {
11526 var p = list.head;
11527 var c = 1;
11528 var ret = p.data;
11529 n -= ret.length;
11530 while (p = p.next) {
11531 var str = p.data;
11532 var nb = n > str.length ? str.length : n;
11533 if (nb === str.length) ret += str;else ret += str.slice(0, n);
11534 n -= nb;
11535 if (n === 0) {
11536 if (nb === str.length) {
11537 ++c;
11538 if (p.next) list.head = p.next;else list.head = list.tail = null;
11539 } else {
11540 list.head = p;
11541 p.data = str.slice(nb);
11542 }
11543 break;
11544 }
11545 ++c;
11546 }
11547 list.length -= c;
11548 return ret;
11549 }
11550
11551 // Copies a specified amount of bytes from the list of buffered data chunks.
11552 // This function is designed to be inlinable, so please take care when making
11553 // changes to the function body.
11554 function copyFromBuffer(n, list) {
11555 var ret = Buffer.allocUnsafe(n);
11556 var p = list.head;
11557 var c = 1;
11558 p.data.copy(ret);
11559 n -= p.data.length;
11560 while (p = p.next) {
11561 var buf = p.data;
11562 var nb = n > buf.length ? buf.length : n;
11563 buf.copy(ret, ret.length - n, 0, nb);
11564 n -= nb;
11565 if (n === 0) {
11566 if (nb === buf.length) {
11567 ++c;
11568 if (p.next) list.head = p.next;else list.head = list.tail = null;
11569 } else {
11570 list.head = p;
11571 p.data = buf.slice(nb);
11572 }
11573 break;
11574 }
11575 ++c;
11576 }
11577 list.length -= c;
11578 return ret;
11579 }
11580
11581 function endReadable(stream) {
11582 var state = stream._readableState;
11583
11584 // If we get here before consuming all the bytes, then that is a
11585 // bug in node. Should never happen.
11586 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
11587
11588 if (!state.endEmitted) {
11589 state.ended = true;
11590 processNextTick(endReadableNT, state, stream);
11591 }
11592 }
11593
11594 function endReadableNT(state, stream) {
11595 // Check that we didn't get one last unshift.
11596 if (!state.endEmitted && state.length === 0) {
11597 state.endEmitted = true;
11598 stream.readable = false;
11599 stream.emit('end');
11600 }
11601 }
11602
11603 function forEach(xs, f) {
11604 for (var i = 0, l = xs.length; i < l; i++) {
11605 f(xs[i], i);
11606 }
11607 }
11608
11609 function indexOf(xs, x) {
11610 for (var i = 0, l = xs.length; i < l; i++) {
11611 if (xs[i] === x) return i;
11612 }
11613 return -1;
11614 }
11615 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
11616 },{"./_stream_duplex":14,"./internal/streams/BufferList":19,"./internal/streams/destroy":20,"./internal/streams/stream":21,"_process":12,"core-util-is":5,"events":6,"inherits":8,"isarray":10,"process-nextick-args":11,"safe-buffer":26,"string_decoder/":28,"util":3}],17:[function(require,module,exports){
11617 // Copyright Joyent, Inc. and other Node contributors.
11618 //
11619 // Permission is hereby granted, free of charge, to any person obtaining a
11620 // copy of this software and associated documentation files (the
11621 // "Software"), to deal in the Software without restriction, including
11622 // without limitation the rights to use, copy, modify, merge, publish,
11623 // distribute, sublicense, and/or sell copies of the Software, and to permit
11624 // persons to whom the Software is furnished to do so, subject to the
11625 // following conditions:
11626 //
11627 // The above copyright notice and this permission notice shall be included
11628 // in all copies or substantial portions of the Software.
11629 //
11630 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11631 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11632 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11633 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11634 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11635 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11636 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11637
11638 // a transform stream is a readable/writable stream where you do
11639 // something with the data. Sometimes it's called a "filter",
11640 // but that's not a great name for it, since that implies a thing where
11641 // some bits pass through, and others are simply ignored. (That would
11642 // be a valid example of a transform, of course.)
11643 //
11644 // While the output is causally related to the input, it's not a
11645 // necessarily symmetric or synchronous transformation. For example,
11646 // a zlib stream might take multiple plain-text writes(), and then
11647 // emit a single compressed chunk some time in the future.
11648 //
11649 // Here's how this works:
11650 //
11651 // The Transform stream has all the aspects of the readable and writable
11652 // stream classes. When you write(chunk), that calls _write(chunk,cb)
11653 // internally, and returns false if there's a lot of pending writes
11654 // buffered up. When you call read(), that calls _read(n) until
11655 // there's enough pending readable data buffered up.
11656 //
11657 // In a transform stream, the written data is placed in a buffer. When
11658 // _read(n) is called, it transforms the queued up data, calling the
11659 // buffered _write cb's as it consumes chunks. If consuming a single
11660 // written chunk would result in multiple output chunks, then the first
11661 // outputted bit calls the readcb, and subsequent chunks just go into
11662 // the read buffer, and will cause it to emit 'readable' if necessary.
11663 //
11664 // This way, back-pressure is actually determined by the reading side,
11665 // since _read has to be called to start processing a new chunk. However,
11666 // a pathological inflate type of transform can cause excessive buffering
11667 // here. For example, imagine a stream where every byte of input is
11668 // interpreted as an integer from 0-255, and then results in that many
11669 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
11670 // 1kb of data being output. In this case, you could write a very small
11671 // amount of input, and end up with a very large amount of output. In
11672 // such a pathological inflating mechanism, there'd be no way to tell
11673 // the system to stop doing the transform. A single 4MB write could
11674 // cause the system to run out of memory.
11675 //
11676 // However, even in such a pathological case, only a single written chunk
11677 // would be consumed, and then the rest would wait (un-transformed) until
11678 // the results of the previous transformed chunk were consumed.
11679
11680 'use strict';
11681
11682 module.exports = Transform;
11683
11684 var Duplex = require('./_stream_duplex');
11685
11686 /*<replacement>*/
11687 var util = require('core-util-is');
11688 util.inherits = require('inherits');
11689 /*</replacement>*/
11690
11691 util.inherits(Transform, Duplex);
11692
11693 function TransformState(stream) {
11694 this.afterTransform = function (er, data) {
11695 return afterTransform(stream, er, data);
11696 };
11697
11698 this.needTransform = false;
11699 this.transforming = false;
11700 this.writecb = null;
11701 this.writechunk = null;
11702 this.writeencoding = null;
11703 }
11704
11705 function afterTransform(stream, er, data) {
11706 var ts = stream._transformState;
11707 ts.transforming = false;
11708
11709 var cb = ts.writecb;
11710
11711 if (!cb) {
11712 return stream.emit('error', new Error('write callback called multiple times'));
11713 }
11714
11715 ts.writechunk = null;
11716 ts.writecb = null;
11717
11718 if (data !== null && data !== undefined) stream.push(data);
11719
11720 cb(er);
11721
11722 var rs = stream._readableState;
11723 rs.reading = false;
11724 if (rs.needReadable || rs.length < rs.highWaterMark) {
11725 stream._read(rs.highWaterMark);
11726 }
11727 }
11728
11729 function Transform(options) {
11730 if (!(this instanceof Transform)) return new Transform(options);
11731
11732 Duplex.call(this, options);
11733
11734 this._transformState = new TransformState(this);
11735
11736 var stream = this;
11737
11738 // start out asking for a readable event once data is transformed.
11739 this._readableState.needReadable = true;
11740
11741 // we have implemented the _read method, and done the other things
11742 // that Readable wants before the first _read call, so unset the
11743 // sync guard flag.
11744 this._readableState.sync = false;
11745
11746 if (options) {
11747 if (typeof options.transform === 'function') this._transform = options.transform;
11748
11749 if (typeof options.flush === 'function') this._flush = options.flush;
11750 }
11751
11752 // When the writable side finishes, then flush out anything remaining.
11753 this.once('prefinish', function () {
11754 if (typeof this._flush === 'function') this._flush(function (er, data) {
11755 done(stream, er, data);
11756 });else done(stream);
11757 });
11758 }
11759
11760 Transform.prototype.push = function (chunk, encoding) {
11761 this._transformState.needTransform = false;
11762 return Duplex.prototype.push.call(this, chunk, encoding);
11763 };
11764
11765 // This is the part where you do stuff!
11766 // override this function in implementation classes.
11767 // 'chunk' is an input chunk.
11768 //
11769 // Call `push(newChunk)` to pass along transformed output
11770 // to the readable side. You may call 'push' zero or more times.
11771 //
11772 // Call `cb(err)` when you are done with this chunk. If you pass
11773 // an error, then that'll put the hurt on the whole operation. If you
11774 // never call cb(), then you'll never get another chunk.
11775 Transform.prototype._transform = function (chunk, encoding, cb) {
11776 throw new Error('_transform() is not implemented');
11777 };
11778
11779 Transform.prototype._write = function (chunk, encoding, cb) {
11780 var ts = this._transformState;
11781 ts.writecb = cb;
11782 ts.writechunk = chunk;
11783 ts.writeencoding = encoding;
11784 if (!ts.transforming) {
11785 var rs = this._readableState;
11786 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
11787 }
11788 };
11789
11790 // Doesn't matter what the args are here.
11791 // _transform does all the work.
11792 // That we got here means that the readable side wants more data.
11793 Transform.prototype._read = function (n) {
11794 var ts = this._transformState;
11795
11796 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
11797 ts.transforming = true;
11798 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
11799 } else {
11800 // mark that we need a transform, so that any data that comes in
11801 // will get processed, now that we've asked for it.
11802 ts.needTransform = true;
11803 }
11804 };
11805
11806 Transform.prototype._destroy = function (err, cb) {
11807 var _this = this;
11808
11809 Duplex.prototype._destroy.call(this, err, function (err2) {
11810 cb(err2);
11811 _this.emit('close');
11812 });
11813 };
11814
11815 function done(stream, er, data) {
11816 if (er) return stream.emit('error', er);
11817
11818 if (data !== null && data !== undefined) stream.push(data);
11819
11820 // if there's nothing in the write buffer, then that means
11821 // that nothing more will ever be provided
11822 var ws = stream._writableState;
11823 var ts = stream._transformState;
11824
11825 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
11826
11827 if (ts.transforming) throw new Error('Calling transform done when still transforming');
11828
11829 return stream.push(null);
11830 }
11831 },{"./_stream_duplex":14,"core-util-is":5,"inherits":8}],18:[function(require,module,exports){
11832 (function (process,global){
11833 // Copyright Joyent, Inc. and other Node contributors.
11834 //
11835 // Permission is hereby granted, free of charge, to any person obtaining a
11836 // copy of this software and associated documentation files (the
11837 // "Software"), to deal in the Software without restriction, including
11838 // without limitation the rights to use, copy, modify, merge, publish,
11839 // distribute, sublicense, and/or sell copies of the Software, and to permit
11840 // persons to whom the Software is furnished to do so, subject to the
11841 // following conditions:
11842 //
11843 // The above copyright notice and this permission notice shall be included
11844 // in all copies or substantial portions of the Software.
11845 //
11846 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11847 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11848 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11849 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11850 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11851 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11852 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11853
11854 // A bit simpler than readable streams.
11855 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
11856 // the drain event emission and buffering.
11857
11858 'use strict';
11859
11860 /*<replacement>*/
11861
11862 var processNextTick = require('process-nextick-args');
11863 /*</replacement>*/
11864
11865 module.exports = Writable;
11866
11867 /* <replacement> */
11868 function WriteReq(chunk, encoding, cb) {
11869 this.chunk = chunk;
11870 this.encoding = encoding;
11871 this.callback = cb;
11872 this.next = null;
11873 }
11874
11875 // It seems a linked list but it is not
11876 // there will be only 2 of these for each stream
11877 function CorkedRequest(state) {
11878 var _this = this;
11879
11880 this.next = null;
11881 this.entry = null;
11882 this.finish = function () {
11883 onCorkedFinish(_this, state);
11884 };
11885 }
11886 /* </replacement> */
11887
11888 /*<replacement>*/
11889 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
11890 /*</replacement>*/
11891
11892 /*<replacement>*/
11893 var Duplex;
11894 /*</replacement>*/
11895
11896 Writable.WritableState = WritableState;
11897
11898 /*<replacement>*/
11899 var util = require('core-util-is');
11900 util.inherits = require('inherits');
11901 /*</replacement>*/
11902
11903 /*<replacement>*/
11904 var internalUtil = {
11905 deprecate: require('util-deprecate')
11906 };
11907 /*</replacement>*/
11908
11909 /*<replacement>*/
11910 var Stream = require('./internal/streams/stream');
11911 /*</replacement>*/
11912
11913 /*<replacement>*/
11914 var Buffer = require('safe-buffer').Buffer;
11915 var OurUint8Array = global.Uint8Array || function () {};
11916 function _uint8ArrayToBuffer(chunk) {
11917 return Buffer.from(chunk);
11918 }
11919 function _isUint8Array(obj) {
11920 return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
11921 }
11922 /*</replacement>*/
11923
11924 var destroyImpl = require('./internal/streams/destroy');
11925
11926 util.inherits(Writable, Stream);
11927
11928 function nop() {}
11929
11930 function WritableState(options, stream) {
11931 Duplex = Duplex || require('./_stream_duplex');
11932
11933 options = options || {};
11934
11935 // object stream flag to indicate whether or not this stream
11936 // contains buffers or objects.
11937 this.objectMode = !!options.objectMode;
11938
11939 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
11940
11941 // the point at which write() starts returning false
11942 // Note: 0 is a valid value, means that we always return false if
11943 // the entire buffer is not flushed immediately on write()
11944 var hwm = options.highWaterMark;
11945 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
11946 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
11947
11948 // cast to ints.
11949 this.highWaterMark = Math.floor(this.highWaterMark);
11950
11951 // if _final has been called
11952 this.finalCalled = false;
11953
11954 // drain event flag.
11955 this.needDrain = false;
11956 // at the start of calling end()
11957 this.ending = false;
11958 // when end() has been called, and returned
11959 this.ended = false;
11960 // when 'finish' is emitted
11961 this.finished = false;
11962
11963 // has it been destroyed
11964 this.destroyed = false;
11965
11966 // should we decode strings into buffers before passing to _write?
11967 // this is here so that some node-core streams can optimize string
11968 // handling at a lower level.
11969 var noDecode = options.decodeStrings === false;
11970 this.decodeStrings = !noDecode;
11971
11972 // Crypto is kind of old and crusty. Historically, its default string
11973 // encoding is 'binary' so we have to make this configurable.
11974 // Everything else in the universe uses 'utf8', though.
11975 this.defaultEncoding = options.defaultEncoding || 'utf8';
11976
11977 // not an actual buffer we keep track of, but a measurement
11978 // of how much we're waiting to get pushed to some underlying
11979 // socket or file.
11980 this.length = 0;
11981
11982 // a flag to see when we're in the middle of a write.
11983 this.writing = false;
11984
11985 // when true all writes will be buffered until .uncork() call
11986 this.corked = 0;
11987
11988 // a flag to be able to tell if the onwrite cb is called immediately,
11989 // or on a later tick. We set this to true at first, because any
11990 // actions that shouldn't happen until "later" should generally also
11991 // not happen before the first write call.
11992 this.sync = true;
11993
11994 // a flag to know if we're processing previously buffered items, which
11995 // may call the _write() callback in the same tick, so that we don't
11996 // end up in an overlapped onwrite situation.
11997 this.bufferProcessing = false;
11998
11999 // the callback that's passed to _write(chunk,cb)
12000 this.onwrite = function (er) {
12001 onwrite(stream, er);
12002 };
12003
12004 // the callback that the user supplies to write(chunk,encoding,cb)
12005 this.writecb = null;
12006
12007 // the amount that is being written when _write is called.
12008 this.writelen = 0;
12009
12010 this.bufferedRequest = null;
12011 this.lastBufferedRequest = null;
12012
12013 // number of pending user-supplied write callbacks
12014 // this must be 0 before 'finish' can be emitted
12015 this.pendingcb = 0;
12016
12017 // emit prefinish if the only thing we're waiting for is _write cbs
12018 // This is relevant for synchronous Transform streams
12019 this.prefinished = false;
12020
12021 // True if the error was already emitted and should not be thrown again
12022 this.errorEmitted = false;
12023
12024 // count buffered requests
12025 this.bufferedRequestCount = 0;
12026
12027 // allocate the first CorkedRequest, there is always
12028 // one allocated and free to use, and we maintain at most two
12029 this.corkedRequestsFree = new CorkedRequest(this);
12030 }
12031
12032 WritableState.prototype.getBuffer = function getBuffer() {
12033 var current = this.bufferedRequest;
12034 var out = [];
12035 while (current) {
12036 out.push(current);
12037 current = current.next;
12038 }
12039 return out;
12040 };
12041
12042 (function () {
12043 try {
12044 Object.defineProperty(WritableState.prototype, 'buffer', {
12045 get: internalUtil.deprecate(function () {
12046 return this.getBuffer();
12047 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
12048 });
12049 } catch (_) {}
12050 })();
12051
12052 // Test _writableState for inheritance to account for Duplex streams,
12053 // whose prototype chain only points to Readable.
12054 var realHasInstance;
12055 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
12056 realHasInstance = Function.prototype[Symbol.hasInstance];
12057 Object.defineProperty(Writable, Symbol.hasInstance, {
12058 value: function (object) {
12059 if (realHasInstance.call(this, object)) return true;
12060
12061 return object && object._writableState instanceof WritableState;
12062 }
12063 });
12064 } else {
12065 realHasInstance = function (object) {
12066 return object instanceof this;
12067 };
12068 }
12069
12070 function Writable(options) {
12071 Duplex = Duplex || require('./_stream_duplex');
12072
12073 // Writable ctor is applied to Duplexes, too.
12074 // `realHasInstance` is necessary because using plain `instanceof`
12075 // would return false, as no `_writableState` property is attached.
12076
12077 // Trying to use the custom `instanceof` for Writable here will also break the
12078 // Node.js LazyTransform implementation, which has a non-trivial getter for
12079 // `_writableState` that would lead to infinite recursion.
12080 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
12081 return new Writable(options);
12082 }
12083
12084 this._writableState = new WritableState(options, this);
12085
12086 // legacy.
12087 this.writable = true;
12088
12089 if (options) {
12090 if (typeof options.write === 'function') this._write = options.write;
12091
12092 if (typeof options.writev === 'function') this._writev = options.writev;
12093
12094 if (typeof options.destroy === 'function') this._destroy = options.destroy;
12095
12096 if (typeof options.final === 'function') this._final = options.final;
12097 }
12098
12099 Stream.call(this);
12100 }
12101
12102 // Otherwise people can pipe Writable streams, which is just wrong.
12103 Writable.prototype.pipe = function () {
12104 this.emit('error', new Error('Cannot pipe, not readable'));
12105 };
12106
12107 function writeAfterEnd(stream, cb) {
12108 var er = new Error('write after end');
12109 // TODO: defer error events consistently everywhere, not just the cb
12110 stream.emit('error', er);
12111 processNextTick(cb, er);
12112 }
12113
12114 // Checks that a user-supplied chunk is valid, especially for the particular
12115 // mode the stream is in. Currently this means that `null` is never accepted
12116 // and undefined/non-string values are only allowed in object mode.
12117 function validChunk(stream, state, chunk, cb) {
12118 var valid = true;
12119 var er = false;
12120
12121 if (chunk === null) {
12122 er = new TypeError('May not write null values to stream');
12123 } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
12124 er = new TypeError('Invalid non-string/buffer chunk');
12125 }
12126 if (er) {
12127 stream.emit('error', er);
12128 processNextTick(cb, er);
12129 valid = false;
12130 }
12131 return valid;
12132 }
12133
12134 Writable.prototype.write = function (chunk, encoding, cb) {
12135 var state = this._writableState;
12136 var ret = false;
12137 var isBuf = _isUint8Array(chunk) && !state.objectMode;
12138
12139 if (isBuf && !Buffer.isBuffer(chunk)) {
12140 chunk = _uint8ArrayToBuffer(chunk);
12141 }
12142
12143 if (typeof encoding === 'function') {
12144 cb = encoding;
12145 encoding = null;
12146 }
12147
12148 if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
12149
12150 if (typeof cb !== 'function') cb = nop;
12151
12152 if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
12153 state.pendingcb++;
12154 ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
12155 }
12156
12157 return ret;
12158 };
12159
12160 Writable.prototype.cork = function () {
12161 var state = this._writableState;
12162
12163 state.corked++;
12164 };
12165
12166 Writable.prototype.uncork = function () {
12167 var state = this._writableState;
12168
12169 if (state.corked) {
12170 state.corked--;
12171
12172 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
12173 }
12174 };
12175
12176 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
12177 // node::ParseEncoding() requires lower case.
12178 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
12179 if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
12180 this._writableState.defaultEncoding = encoding;
12181 return this;
12182 };
12183
12184 function decodeChunk(state, chunk, encoding) {
12185 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
12186 chunk = Buffer.from(chunk, encoding);
12187 }
12188 return chunk;
12189 }
12190
12191 // if we're already writing something, then just put this
12192 // in the queue, and wait our turn. Otherwise, call _write
12193 // If we return false, then we need a drain event, so set that flag.
12194 function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
12195 if (!isBuf) {
12196 var newChunk = decodeChunk(state, chunk, encoding);
12197 if (chunk !== newChunk) {
12198 isBuf = true;
12199 encoding = 'buffer';
12200 chunk = newChunk;
12201 }
12202 }
12203 var len = state.objectMode ? 1 : chunk.length;
12204
12205 state.length += len;
12206
12207 var ret = state.length < state.highWaterMark;
12208 // we must ensure that previous needDrain will not be reset to false.
12209 if (!ret) state.needDrain = true;
12210
12211 if (state.writing || state.corked) {
12212 var last = state.lastBufferedRequest;
12213 state.lastBufferedRequest = {
12214 chunk: chunk,
12215 encoding: encoding,
12216 isBuf: isBuf,
12217 callback: cb,
12218 next: null
12219 };
12220 if (last) {
12221 last.next = state.lastBufferedRequest;
12222 } else {
12223 state.bufferedRequest = state.lastBufferedRequest;
12224 }
12225 state.bufferedRequestCount += 1;
12226 } else {
12227 doWrite(stream, state, false, len, chunk, encoding, cb);
12228 }
12229
12230 return ret;
12231 }
12232
12233 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
12234 state.writelen = len;
12235 state.writecb = cb;
12236 state.writing = true;
12237 state.sync = true;
12238 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
12239 state.sync = false;
12240 }
12241
12242 function onwriteError(stream, state, sync, er, cb) {
12243 --state.pendingcb;
12244
12245 if (sync) {
12246 // defer the callback if we are being called synchronously
12247 // to avoid piling up things on the stack
12248 processNextTick(cb, er);
12249 // this can emit finish, and it will always happen
12250 // after error
12251 processNextTick(finishMaybe, stream, state);
12252 stream._writableState.errorEmitted = true;
12253 stream.emit('error', er);
12254 } else {
12255 // the caller expect this to happen before if
12256 // it is async
12257 cb(er);
12258 stream._writableState.errorEmitted = true;
12259 stream.emit('error', er);
12260 // this can emit finish, but finish must
12261 // always follow error
12262 finishMaybe(stream, state);
12263 }
12264 }
12265
12266 function onwriteStateUpdate(state) {
12267 state.writing = false;
12268 state.writecb = null;
12269 state.length -= state.writelen;
12270 state.writelen = 0;
12271 }
12272
12273 function onwrite(stream, er) {
12274 var state = stream._writableState;
12275 var sync = state.sync;
12276 var cb = state.writecb;
12277
12278 onwriteStateUpdate(state);
12279
12280 if (er) onwriteError(stream, state, sync, er, cb);else {
12281 // Check if we're actually ready to finish, but don't emit yet
12282 var finished = needFinish(state);
12283
12284 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
12285 clearBuffer(stream, state);
12286 }
12287
12288 if (sync) {
12289 /*<replacement>*/
12290 asyncWrite(afterWrite, stream, state, finished, cb);
12291 /*</replacement>*/
12292 } else {
12293 afterWrite(stream, state, finished, cb);
12294 }
12295 }
12296 }
12297
12298 function afterWrite(stream, state, finished, cb) {
12299 if (!finished) onwriteDrain(stream, state);
12300 state.pendingcb--;
12301 cb();
12302 finishMaybe(stream, state);
12303 }
12304
12305 // Must force callback to be called on nextTick, so that we don't
12306 // emit 'drain' before the write() consumer gets the 'false' return
12307 // value, and has a chance to attach a 'drain' listener.
12308 function onwriteDrain(stream, state) {
12309 if (state.length === 0 && state.needDrain) {
12310 state.needDrain = false;
12311 stream.emit('drain');
12312 }
12313 }
12314
12315 // if there's something in the buffer waiting, then process it
12316 function clearBuffer(stream, state) {
12317 state.bufferProcessing = true;
12318 var entry = state.bufferedRequest;
12319
12320 if (stream._writev && entry && entry.next) {
12321 // Fast case, write everything using _writev()
12322 var l = state.bufferedRequestCount;
12323 var buffer = new Array(l);
12324 var holder = state.corkedRequestsFree;
12325 holder.entry = entry;
12326
12327 var count = 0;
12328 var allBuffers = true;
12329 while (entry) {
12330 buffer[count] = entry;
12331 if (!entry.isBuf) allBuffers = false;
12332 entry = entry.next;
12333 count += 1;
12334 }
12335 buffer.allBuffers = allBuffers;
12336
12337 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
12338
12339 // doWrite is almost always async, defer these to save a bit of time
12340 // as the hot path ends with doWrite
12341 state.pendingcb++;
12342 state.lastBufferedRequest = null;
12343 if (holder.next) {
12344 state.corkedRequestsFree = holder.next;
12345 holder.next = null;
12346 } else {
12347 state.corkedRequestsFree = new CorkedRequest(state);
12348 }
12349 } else {
12350 // Slow case, write chunks one-by-one
12351 while (entry) {
12352 var chunk = entry.chunk;
12353 var encoding = entry.encoding;
12354 var cb = entry.callback;
12355 var len = state.objectMode ? 1 : chunk.length;
12356
12357 doWrite(stream, state, false, len, chunk, encoding, cb);
12358 entry = entry.next;
12359 // if we didn't call the onwrite immediately, then
12360 // it means that we need to wait until it does.
12361 // also, that means that the chunk and cb are currently
12362 // being processed, so move the buffer counter past them.
12363 if (state.writing) {
12364 break;
12365 }
12366 }
12367
12368 if (entry === null) state.lastBufferedRequest = null;
12369 }
12370
12371 state.bufferedRequestCount = 0;
12372 state.bufferedRequest = entry;
12373 state.bufferProcessing = false;
12374 }
12375
12376 Writable.prototype._write = function (chunk, encoding, cb) {
12377 cb(new Error('_write() is not implemented'));
12378 };
12379
12380 Writable.prototype._writev = null;
12381
12382 Writable.prototype.end = function (chunk, encoding, cb) {
12383 var state = this._writableState;
12384
12385 if (typeof chunk === 'function') {
12386 cb = chunk;
12387 chunk = null;
12388 encoding = null;
12389 } else if (typeof encoding === 'function') {
12390 cb = encoding;
12391 encoding = null;
12392 }
12393
12394 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
12395
12396 // .end() fully uncorks
12397 if (state.corked) {
12398 state.corked = 1;
12399 this.uncork();
12400 }
12401
12402 // ignore unnecessary end() calls.
12403 if (!state.ending && !state.finished) endWritable(this, state, cb);
12404 };
12405
12406 function needFinish(state) {
12407 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
12408 }
12409 function callFinal(stream, state) {
12410 stream._final(function (err) {
12411 state.pendingcb--;
12412 if (err) {
12413 stream.emit('error', err);
12414 }
12415 state.prefinished = true;
12416 stream.emit('prefinish');
12417 finishMaybe(stream, state);
12418 });
12419 }
12420 function prefinish(stream, state) {
12421 if (!state.prefinished && !state.finalCalled) {
12422 if (typeof stream._final === 'function') {
12423 state.pendingcb++;
12424 state.finalCalled = true;
12425 processNextTick(callFinal, stream, state);
12426 } else {
12427 state.prefinished = true;
12428 stream.emit('prefinish');
12429 }
12430 }
12431 }
12432
12433 function finishMaybe(stream, state) {
12434 var need = needFinish(state);
12435 if (need) {
12436 prefinish(stream, state);
12437 if (state.pendingcb === 0) {
12438 state.finished = true;
12439 stream.emit('finish');
12440 }
12441 }
12442 return need;
12443 }
12444
12445 function endWritable(stream, state, cb) {
12446 state.ending = true;
12447 finishMaybe(stream, state);
12448 if (cb) {
12449 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
12450 }
12451 state.ended = true;
12452 stream.writable = false;
12453 }
12454
12455 function onCorkedFinish(corkReq, state, err) {
12456 var entry = corkReq.entry;
12457 corkReq.entry = null;
12458 while (entry) {
12459 var cb = entry.callback;
12460 state.pendingcb--;
12461 cb(err);
12462 entry = entry.next;
12463 }
12464 if (state.corkedRequestsFree) {
12465 state.corkedRequestsFree.next = corkReq;
12466 } else {
12467 state.corkedRequestsFree = corkReq;
12468 }
12469 }
12470
12471 Object.defineProperty(Writable.prototype, 'destroyed', {
12472 get: function () {
12473 if (this._writableState === undefined) {
12474 return false;
12475 }
12476 return this._writableState.destroyed;
12477 },
12478 set: function (value) {
12479 // we ignore the value if the stream
12480 // has not been initialized yet
12481 if (!this._writableState) {
12482 return;
12483 }
12484
12485 // backward compatibility, the user is explicitly
12486 // managing destroyed
12487 this._writableState.destroyed = value;
12488 }
12489 });
12490
12491 Writable.prototype.destroy = destroyImpl.destroy;
12492 Writable.prototype._undestroy = destroyImpl.undestroy;
12493 Writable.prototype._destroy = function (err, cb) {
12494 this.end();
12495 cb(err);
12496 };
12497 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
12498 },{"./_stream_duplex":14,"./internal/streams/destroy":20,"./internal/streams/stream":21,"_process":12,"core-util-is":5,"inherits":8,"process-nextick-args":11,"safe-buffer":26,"util-deprecate":29}],19:[function(require,module,exports){
12499 'use strict';
12500
12501 /*<replacement>*/
12502
12503 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12504
12505 var Buffer = require('safe-buffer').Buffer;
12506 /*</replacement>*/
12507
12508 function copyBuffer(src, target, offset) {
12509 src.copy(target, offset);
12510 }
12511
12512 module.exports = function () {
12513 function BufferList() {
12514 _classCallCheck(this, BufferList);
12515
12516 this.head = null;
12517 this.tail = null;
12518 this.length = 0;
12519 }
12520
12521 BufferList.prototype.push = function push(v) {
12522 var entry = { data: v, next: null };
12523 if (this.length > 0) this.tail.next = entry;else this.head = entry;
12524 this.tail = entry;
12525 ++this.length;
12526 };
12527
12528 BufferList.prototype.unshift = function unshift(v) {
12529 var entry = { data: v, next: this.head };
12530 if (this.length === 0) this.tail = entry;
12531 this.head = entry;
12532 ++this.length;
12533 };
12534
12535 BufferList.prototype.shift = function shift() {
12536 if (this.length === 0) return;
12537 var ret = this.head.data;
12538 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
12539 --this.length;
12540 return ret;
12541 };
12542
12543 BufferList.prototype.clear = function clear() {
12544 this.head = this.tail = null;
12545 this.length = 0;
12546 };
12547
12548 BufferList.prototype.join = function join(s) {
12549 if (this.length === 0) return '';
12550 var p = this.head;
12551 var ret = '' + p.data;
12552 while (p = p.next) {
12553 ret += s + p.data;
12554 }return ret;
12555 };
12556
12557 BufferList.prototype.concat = function concat(n) {
12558 if (this.length === 0) return Buffer.alloc(0);
12559 if (this.length === 1) return this.head.data;
12560 var ret = Buffer.allocUnsafe(n >>> 0);
12561 var p = this.head;
12562 var i = 0;
12563 while (p) {
12564 copyBuffer(p.data, ret, i);
12565 i += p.data.length;
12566 p = p.next;
12567 }
12568 return ret;
12569 };
12570
12571 return BufferList;
12572 }();
12573 },{"safe-buffer":26}],20:[function(require,module,exports){
12574 'use strict';
12575
12576 /*<replacement>*/
12577
12578 var processNextTick = require('process-nextick-args');
12579 /*</replacement>*/
12580
12581 // undocumented cb() API, needed for core, not for public API
12582 function destroy(err, cb) {
12583 var _this = this;
12584
12585 var readableDestroyed = this._readableState && this._readableState.destroyed;
12586 var writableDestroyed = this._writableState && this._writableState.destroyed;
12587
12588 if (readableDestroyed || writableDestroyed) {
12589 if (cb) {
12590 cb(err);
12591 } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
12592 processNextTick(emitErrorNT, this, err);
12593 }
12594 return;
12595 }
12596
12597 // we set destroyed to true before firing error callbacks in order
12598 // to make it re-entrance safe in case destroy() is called within callbacks
12599
12600 if (this._readableState) {
12601 this._readableState.destroyed = true;
12602 }
12603
12604 // if this is a duplex stream mark the writable part as destroyed as well
12605 if (this._writableState) {
12606 this._writableState.destroyed = true;
12607 }
12608
12609 this._destroy(err || null, function (err) {
12610 if (!cb && err) {
12611 processNextTick(emitErrorNT, _this, err);
12612 if (_this._writableState) {
12613 _this._writableState.errorEmitted = true;
12614 }
12615 } else if (cb) {
12616 cb(err);
12617 }
12618 });
12619 }
12620
12621 function undestroy() {
12622 if (this._readableState) {
12623 this._readableState.destroyed = false;
12624 this._readableState.reading = false;
12625 this._readableState.ended = false;
12626 this._readableState.endEmitted = false;
12627 }
12628
12629 if (this._writableState) {
12630 this._writableState.destroyed = false;
12631 this._writableState.ended = false;
12632 this._writableState.ending = false;
12633 this._writableState.finished = false;
12634 this._writableState.errorEmitted = false;
12635 }
12636 }
12637
12638 function emitErrorNT(self, err) {
12639 self.emit('error', err);
12640 }
12641
12642 module.exports = {
12643 destroy: destroy,
12644 undestroy: undestroy
12645 };
12646 },{"process-nextick-args":11}],21:[function(require,module,exports){
12647 module.exports = require('events').EventEmitter;
12648
12649 },{"events":6}],22:[function(require,module,exports){
12650 module.exports = require('./readable').PassThrough
12651
12652 },{"./readable":23}],23:[function(require,module,exports){
12653 exports = module.exports = require('./lib/_stream_readable.js');
12654 exports.Stream = exports;
12655 exports.Readable = exports;
12656 exports.Writable = require('./lib/_stream_writable.js');
12657 exports.Duplex = require('./lib/_stream_duplex.js');
12658 exports.Transform = require('./lib/_stream_transform.js');
12659 exports.PassThrough = require('./lib/_stream_passthrough.js');
12660
12661 },{"./lib/_stream_duplex.js":14,"./lib/_stream_passthrough.js":15,"./lib/_stream_readable.js":16,"./lib/_stream_transform.js":17,"./lib/_stream_writable.js":18}],24:[function(require,module,exports){
12662 module.exports = require('./readable').Transform
12663
12664 },{"./readable":23}],25:[function(require,module,exports){
12665 module.exports = require('./lib/_stream_writable.js');
12666
12667 },{"./lib/_stream_writable.js":18}],26:[function(require,module,exports){
12668 /* eslint-disable node/no-deprecated-api */
12669 var buffer = require('buffer')
12670 var Buffer = buffer.Buffer
12671
12672 // alternative to using Object.keys for old browsers
12673 function copyProps (src, dst) {
12674 for (var key in src) {
12675 dst[key] = src[key]
12676 }
12677 }
12678 if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
12679 module.exports = buffer
12680 } else {
12681 // Copy properties from require('buffer')
12682 copyProps(buffer, exports)
12683 exports.Buffer = SafeBuffer
12684 }
12685
12686 function SafeBuffer (arg, encodingOrOffset, length) {
12687 return Buffer(arg, encodingOrOffset, length)
12688 }
12689
12690 // Copy static methods from Buffer
12691 copyProps(Buffer, SafeBuffer)
12692
12693 SafeBuffer.from = function (arg, encodingOrOffset, length) {
12694 if (typeof arg === 'number') {
12695 throw new TypeError('Argument must not be a number')
12696 }
12697 return Buffer(arg, encodingOrOffset, length)
12698 }
12699
12700 SafeBuffer.alloc = function (size, fill, encoding) {
12701 if (typeof size !== 'number') {
12702 throw new TypeError('Argument must be a number')
12703 }
12704 var buf = Buffer(size)
12705 if (fill !== undefined) {
12706 if (typeof encoding === 'string') {
12707 buf.fill(fill, encoding)
12708 } else {
12709 buf.fill(fill)
12710 }
12711 } else {
12712 buf.fill(0)
12713 }
12714 return buf
12715 }
12716
12717 SafeBuffer.allocUnsafe = function (size) {
12718 if (typeof size !== 'number') {
12719 throw new TypeError('Argument must be a number')
12720 }
12721 return Buffer(size)
12722 }
12723
12724 SafeBuffer.allocUnsafeSlow = function (size) {
12725 if (typeof size !== 'number') {
12726 throw new TypeError('Argument must be a number')
12727 }
12728 return buffer.SlowBuffer(size)
12729 }
12730
12731 },{"buffer":4}],27:[function(require,module,exports){
12732 // Copyright Joyent, Inc. and other Node contributors.
12733 //
12734 // Permission is hereby granted, free of charge, to any person obtaining a
12735 // copy of this software and associated documentation files (the
12736 // "Software"), to deal in the Software without restriction, including
12737 // without limitation the rights to use, copy, modify, merge, publish,
12738 // distribute, sublicense, and/or sell copies of the Software, and to permit
12739 // persons to whom the Software is furnished to do so, subject to the
12740 // following conditions:
12741 //
12742 // The above copyright notice and this permission notice shall be included
12743 // in all copies or substantial portions of the Software.
12744 //
12745 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12746 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12747 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12748 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12749 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12750 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12751 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12752
12753 module.exports = Stream;
12754
12755 var EE = require('events').EventEmitter;
12756 var inherits = require('inherits');
12757
12758 inherits(Stream, EE);
12759 Stream.Readable = require('readable-stream/readable.js');
12760 Stream.Writable = require('readable-stream/writable.js');
12761 Stream.Duplex = require('readable-stream/duplex.js');
12762 Stream.Transform = require('readable-stream/transform.js');
12763 Stream.PassThrough = require('readable-stream/passthrough.js');
12764
12765 // Backwards-compat with node 0.4.x
12766 Stream.Stream = Stream;
12767
12768
12769
12770 // old-style streams. Note that the pipe method (the only relevant
12771 // part of this class) is overridden in the Readable class.
12772
12773 function Stream() {
12774 EE.call(this);
12775 }
12776
12777 Stream.prototype.pipe = function(dest, options) {
12778 var source = this;
12779
12780 function ondata(chunk) {
12781 if (dest.writable) {
12782 if (false === dest.write(chunk) && source.pause) {
12783 source.pause();
12784 }
12785 }
12786 }
12787
12788 source.on('data', ondata);
12789
12790 function ondrain() {
12791 if (source.readable && source.resume) {
12792 source.resume();
12793 }
12794 }
12795
12796 dest.on('drain', ondrain);
12797
12798 // If the 'end' option is not supplied, dest.end() will be called when
12799 // source gets the 'end' or 'close' events. Only dest.end() once.
12800 if (!dest._isStdio && (!options || options.end !== false)) {
12801 source.on('end', onend);
12802 source.on('close', onclose);
12803 }
12804
12805 var didOnEnd = false;
12806 function onend() {
12807 if (didOnEnd) return;
12808 didOnEnd = true;
12809
12810 dest.end();
12811 }
12812
12813
12814 function onclose() {
12815 if (didOnEnd) return;
12816 didOnEnd = true;
12817
12818 if (typeof dest.destroy === 'function') dest.destroy();
12819 }
12820
12821 // don't leave dangling pipes when there are errors.
12822 function onerror(er) {
12823 cleanup();
12824 if (EE.listenerCount(this, 'error') === 0) {
12825 throw er; // Unhandled stream error in pipe.
12826 }
12827 }
12828
12829 source.on('error', onerror);
12830 dest.on('error', onerror);
12831
12832 // remove all the event listeners that were added.
12833 function cleanup() {
12834 source.removeListener('data', ondata);
12835 dest.removeListener('drain', ondrain);
12836
12837 source.removeListener('end', onend);
12838 source.removeListener('close', onclose);
12839
12840 source.removeListener('error', onerror);
12841 dest.removeListener('error', onerror);
12842
12843 source.removeListener('end', cleanup);
12844 source.removeListener('close', cleanup);
12845
12846 dest.removeListener('close', cleanup);
12847 }
12848
12849 source.on('end', cleanup);
12850 source.on('close', cleanup);
12851
12852 dest.on('close', cleanup);
12853
12854 dest.emit('pipe', source);
12855
12856 // Allow for unix-like usage: A.pipe(B).pipe(C)
12857 return dest;
12858 };
12859
12860 },{"events":6,"inherits":8,"readable-stream/duplex.js":13,"readable-stream/passthrough.js":22,"readable-stream/readable.js":23,"readable-stream/transform.js":24,"readable-stream/writable.js":25}],28:[function(require,module,exports){
12861 'use strict';
12862
12863 var Buffer = require('safe-buffer').Buffer;
12864
12865 var isEncoding = Buffer.isEncoding || function (encoding) {
12866 encoding = '' + encoding;
12867 switch (encoding && encoding.toLowerCase()) {
12868 case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':
12869 return true;
12870 default:
12871 return false;
12872 }
12873 };
12874
12875 function _normalizeEncoding(enc) {
12876 if (!enc) return 'utf8';
12877 var retried;
12878 while (true) {
12879 switch (enc) {
12880 case 'utf8':
12881 case 'utf-8':
12882 return 'utf8';
12883 case 'ucs2':
12884 case 'ucs-2':
12885 case 'utf16le':
12886 case 'utf-16le':
12887 return 'utf16le';
12888 case 'latin1':
12889 case 'binary':
12890 return 'latin1';
12891 case 'base64':
12892 case 'ascii':
12893 case 'hex':
12894 return enc;
12895 default:
12896 if (retried) return; // undefined
12897 enc = ('' + enc).toLowerCase();
12898 retried = true;
12899 }
12900 }
12901 };
12902
12903 // Do not cache `Buffer.isEncoding` when checking encoding names as some
12904 // modules monkey-patch it to support additional encodings
12905 function normalizeEncoding(enc) {
12906 var nenc = _normalizeEncoding(enc);
12907 if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
12908 return nenc || enc;
12909 }
12910
12911 // StringDecoder provides an interface for efficiently splitting a series of
12912 // buffers into a series of JS strings without breaking apart multi-byte
12913 // characters.
12914 exports.StringDecoder = StringDecoder;
12915 function StringDecoder(encoding) {
12916 this.encoding = normalizeEncoding(encoding);
12917 var nb;
12918 switch (this.encoding) {
12919 case 'utf16le':
12920 this.text = utf16Text;
12921 this.end = utf16End;
12922 nb = 4;
12923 break;
12924 case 'utf8':
12925 this.fillLast = utf8FillLast;
12926 nb = 4;
12927 break;
12928 case 'base64':
12929 this.text = base64Text;
12930 this.end = base64End;
12931 nb = 3;
12932 break;
12933 default:
12934 this.write = simpleWrite;
12935 this.end = simpleEnd;
12936 return;
12937 }
12938 this.lastNeed = 0;
12939 this.lastTotal = 0;
12940 this.lastChar = Buffer.allocUnsafe(nb);
12941 }
12942
12943 StringDecoder.prototype.write = function (buf) {
12944 if (buf.length === 0) return '';
12945 var r;
12946 var i;
12947 if (this.lastNeed) {
12948 r = this.fillLast(buf);
12949 if (r === undefined) return '';
12950 i = this.lastNeed;
12951 this.lastNeed = 0;
12952 } else {
12953 i = 0;
12954 }
12955 if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
12956 return r || '';
12957 };
12958
12959 StringDecoder.prototype.end = utf8End;
12960
12961 // Returns only complete characters in a Buffer
12962 StringDecoder.prototype.text = utf8Text;
12963
12964 // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
12965 StringDecoder.prototype.fillLast = function (buf) {
12966 if (this.lastNeed <= buf.length) {
12967 buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
12968 return this.lastChar.toString(this.encoding, 0, this.lastTotal);
12969 }
12970 buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
12971 this.lastNeed -= buf.length;
12972 };
12973
12974 // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
12975 // continuation byte.
12976 function utf8CheckByte(byte) {
12977 if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
12978 return -1;
12979 }
12980
12981 // Checks at most 3 bytes at the end of a Buffer in order to detect an
12982 // incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
12983 // needed to complete the UTF-8 character (if applicable) are returned.
12984 function utf8CheckIncomplete(self, buf, i) {
12985 var j = buf.length - 1;
12986 if (j < i) return 0;
12987 var nb = utf8CheckByte(buf[j]);
12988 if (nb >= 0) {
12989 if (nb > 0) self.lastNeed = nb - 1;
12990 return nb;
12991 }
12992 if (--j < i) return 0;
12993 nb = utf8CheckByte(buf[j]);
12994 if (nb >= 0) {
12995 if (nb > 0) self.lastNeed = nb - 2;
12996 return nb;
12997 }
12998 if (--j < i) return 0;
12999 nb = utf8CheckByte(buf[j]);
13000 if (nb >= 0) {
13001 if (nb > 0) {
13002 if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
13003 }
13004 return nb;
13005 }
13006 return 0;
13007 }
13008
13009 // Validates as many continuation bytes for a multi-byte UTF-8 character as
13010 // needed or are available. If we see a non-continuation byte where we expect
13011 // one, we "replace" the validated continuation bytes we've seen so far with
13012 // UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding
13013 // behavior. The continuation byte check is included three times in the case
13014 // where all of the continuation bytes for a character exist in the same buffer.
13015 // It is also done this way as a slight performance increase instead of using a
13016 // loop.
13017 function utf8CheckExtraBytes(self, buf, p) {
13018 if ((buf[0] & 0xC0) !== 0x80) {
13019 self.lastNeed = 0;
13020 return '\ufffd'.repeat(p);
13021 }
13022 if (self.lastNeed > 1 && buf.length > 1) {
13023 if ((buf[1] & 0xC0) !== 0x80) {
13024 self.lastNeed = 1;
13025 return '\ufffd'.repeat(p + 1);
13026 }
13027 if (self.lastNeed > 2 && buf.length > 2) {
13028 if ((buf[2] & 0xC0) !== 0x80) {
13029 self.lastNeed = 2;
13030 return '\ufffd'.repeat(p + 2);
13031 }
13032 }
13033 }
13034 }
13035
13036 // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
13037 function utf8FillLast(buf) {
13038 var p = this.lastTotal - this.lastNeed;
13039 var r = utf8CheckExtraBytes(this, buf, p);
13040 if (r !== undefined) return r;
13041 if (this.lastNeed <= buf.length) {
13042 buf.copy(this.lastChar, p, 0, this.lastNeed);
13043 return this.lastChar.toString(this.encoding, 0, this.lastTotal);
13044 }
13045 buf.copy(this.lastChar, p, 0, buf.length);
13046 this.lastNeed -= buf.length;
13047 }
13048
13049 // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
13050 // partial character, the character's bytes are buffered until the required
13051 // number of bytes are available.
13052 function utf8Text(buf, i) {
13053 var total = utf8CheckIncomplete(this, buf, i);
13054 if (!this.lastNeed) return buf.toString('utf8', i);
13055 this.lastTotal = total;
13056 var end = buf.length - (total - this.lastNeed);
13057 buf.copy(this.lastChar, 0, end);
13058 return buf.toString('utf8', i, end);
13059 }
13060
13061 // For UTF-8, a replacement character for each buffered byte of a (partial)
13062 // character needs to be added to the output.
13063 function utf8End(buf) {
13064 var r = buf && buf.length ? this.write(buf) : '';
13065 if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed);
13066 return r;
13067 }
13068
13069 // UTF-16LE typically needs two bytes per character, but even if we have an even
13070 // number of bytes available, we need to check if we end on a leading/high
13071 // surrogate. In that case, we need to wait for the next two bytes in order to
13072 // decode the last character properly.
13073 function utf16Text(buf, i) {
13074 if ((buf.length - i) % 2 === 0) {
13075 var r = buf.toString('utf16le', i);
13076 if (r) {
13077 var c = r.charCodeAt(r.length - 1);
13078 if (c >= 0xD800 && c <= 0xDBFF) {
13079 this.lastNeed = 2;
13080 this.lastTotal = 4;
13081 this.lastChar[0] = buf[buf.length - 2];
13082 this.lastChar[1] = buf[buf.length - 1];
13083 return r.slice(0, -1);
13084 }
13085 }
13086 return r;
13087 }
13088 this.lastNeed = 1;
13089 this.lastTotal = 2;
13090 this.lastChar[0] = buf[buf.length - 1];
13091 return buf.toString('utf16le', i, buf.length - 1);
13092 }
13093
13094 // For UTF-16LE we do not explicitly append special replacement characters if we
13095 // end on a partial character, we simply let v8 handle that.
13096 function utf16End(buf) {
13097 var r = buf && buf.length ? this.write(buf) : '';
13098 if (this.lastNeed) {
13099 var end = this.lastTotal - this.lastNeed;
13100 return r + this.lastChar.toString('utf16le', 0, end);
13101 }
13102 return r;
13103 }
13104
13105 function base64Text(buf, i) {
13106 var n = (buf.length - i) % 3;
13107 if (n === 0) return buf.toString('base64', i);
13108 this.lastNeed = 3 - n;
13109 this.lastTotal = 3;
13110 if (n === 1) {
13111 this.lastChar[0] = buf[buf.length - 1];
13112 } else {
13113 this.lastChar[0] = buf[buf.length - 2];
13114 this.lastChar[1] = buf[buf.length - 1];
13115 }
13116 return buf.toString('base64', i, buf.length - n);
13117 }
13118
13119 function base64End(buf) {
13120 var r = buf && buf.length ? this.write(buf) : '';
13121 if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
13122 return r;
13123 }
13124
13125 // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
13126 function simpleWrite(buf) {
13127 return buf.toString(this.encoding);
13128 }
13129
13130 function simpleEnd(buf) {
13131 return buf && buf.length ? this.write(buf) : '';
13132 }
13133 },{"safe-buffer":26}],29:[function(require,module,exports){
13134 (function (global){
13135
13136 /**
13137 * Module exports.
13138 */
13139
13140 module.exports = deprecate;
13141
13142 /**
13143 * Mark that a method should not be used.
13144 * Returns a modified function which warns once by default.
13145 *
13146 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
13147 *
13148 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
13149 * will throw an Error when invoked.
13150 *
13151 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
13152 * will invoke `console.trace()` instead of `console.error()`.
13153 *
13154 * @param {Function} fn - the function to deprecate
13155 * @param {String} msg - the string to print to the console when `fn` is invoked
13156 * @returns {Function} a new "deprecated" version of `fn`
13157 * @api public
13158 */
13159
13160 function deprecate (fn, msg) {
13161 if (config('noDeprecation')) {
13162 return fn;
13163 }
13164
13165 var warned = false;
13166 function deprecated() {
13167 if (!warned) {
13168 if (config('throwDeprecation')) {
13169 throw new Error(msg);
13170 } else if (config('traceDeprecation')) {
13171 console.trace(msg);
13172 } else {
13173 console.warn(msg);
13174 }
13175 warned = true;
13176 }
13177 return fn.apply(this, arguments);
13178 }
13179
13180 return deprecated;
13181 }
13182
13183 /**
13184 * Checks `localStorage` for boolean values for the given `name`.
13185 *
13186 * @param {String} name
13187 * @returns {Boolean}
13188 * @api private
13189 */
13190
13191 function config (name) {
13192 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
13193 try {
13194 if (!global.localStorage) return false;
13195 } catch (_) {
13196 return false;
13197 }
13198 var val = global.localStorage[name];
13199 if (null == val) return false;
13200 return String(val).toLowerCase() === 'true';
13201 }
13202
13203 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
13204 },{}],30:[function(require,module,exports){
13205 arguments[4][8][0].apply(exports,arguments)
13206 },{"dup":8}],31:[function(require,module,exports){
13207 module.exports = function isBuffer(arg) {
13208 return arg && typeof arg === 'object'
13209 && typeof arg.copy === 'function'
13210 && typeof arg.fill === 'function'
13211 && typeof arg.readUInt8 === 'function';
13212 }
13213 },{}],32:[function(require,module,exports){
13214 (function (process,global){
13215 // Copyright Joyent, Inc. and other Node contributors.
13216 //
13217 // Permission is hereby granted, free of charge, to any person obtaining a
13218 // copy of this software and associated documentation files (the
13219 // "Software"), to deal in the Software without restriction, including
13220 // without limitation the rights to use, copy, modify, merge, publish,
13221 // distribute, sublicense, and/or sell copies of the Software, and to permit
13222 // persons to whom the Software is furnished to do so, subject to the
13223 // following conditions:
13224 //
13225 // The above copyright notice and this permission notice shall be included
13226 // in all copies or substantial portions of the Software.
13227 //
13228 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13229 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13230 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13231 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13232 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13233 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13234 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13235
13236 var formatRegExp = /%[sdj%]/g;
13237 exports.format = function(f) {
13238 if (!isString(f)) {
13239 var objects = [];
13240 for (var i = 0; i < arguments.length; i++) {
13241 objects.push(inspect(arguments[i]));
13242 }
13243 return objects.join(' ');
13244 }
13245
13246 var i = 1;
13247 var args = arguments;
13248 var len = args.length;
13249 var str = String(f).replace(formatRegExp, function(x) {
13250 if (x === '%%') return '%';
13251 if (i >= len) return x;
13252 switch (x) {
13253 case '%s': return String(args[i++]);
13254 case '%d': return Number(args[i++]);
13255 case '%j':
13256 try {
13257 return JSON.stringify(args[i++]);
13258 } catch (_) {
13259 return '[Circular]';
13260 }
13261 default:
13262 return x;
13263 }
13264 });
13265 for (var x = args[i]; i < len; x = args[++i]) {
13266 if (isNull(x) || !isObject(x)) {
13267 str += ' ' + x;
13268 } else {
13269 str += ' ' + inspect(x);
13270 }
13271 }
13272 return str;
13273 };
13274
13275
13276 // Mark that a method should not be used.
13277 // Returns a modified function which warns once by default.
13278 // If --no-deprecation is set, then it is a no-op.
13279 exports.deprecate = function(fn, msg) {
13280 // Allow for deprecating things in the process of starting up.
13281 if (isUndefined(global.process)) {
13282 return function() {
13283 return exports.deprecate(fn, msg).apply(this, arguments);
13284 };
13285 }
13286
13287 if (process.noDeprecation === true) {
13288 return fn;
13289 }
13290
13291 var warned = false;
13292 function deprecated() {
13293 if (!warned) {
13294 if (process.throwDeprecation) {
13295 throw new Error(msg);
13296 } else if (process.traceDeprecation) {
13297 console.trace(msg);
13298 } else {
13299 console.error(msg);
13300 }
13301 warned = true;
13302 }
13303 return fn.apply(this, arguments);
13304 }
13305
13306 return deprecated;
13307 };
13308
13309
13310 var debugs = {};
13311 var debugEnviron;
13312 exports.debuglog = function(set) {
13313 if (isUndefined(debugEnviron))
13314 debugEnviron = process.env.NODE_DEBUG || '';
13315 set = set.toUpperCase();
13316 if (!debugs[set]) {
13317 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
13318 var pid = process.pid;
13319 debugs[set] = function() {
13320 var msg = exports.format.apply(exports, arguments);
13321 console.error('%s %d: %s', set, pid, msg);
13322 };
13323 } else {
13324 debugs[set] = function() {};
13325 }
13326 }
13327 return debugs[set];
13328 };
13329
13330
13331 /**
13332 * Echos the value of a value. Trys to print the value out
13333 * in the best way possible given the different types.
13334 *
13335 * @param {Object} obj The object to print out.
13336 * @param {Object} opts Optional options object that alters the output.
13337 */
13338 /* legacy: obj, showHidden, depth, colors*/
13339 function inspect(obj, opts) {
13340 // default options
13341 var ctx = {
13342 seen: [],
13343 stylize: stylizeNoColor
13344 };
13345 // legacy...
13346 if (arguments.length >= 3) ctx.depth = arguments[2];
13347 if (arguments.length >= 4) ctx.colors = arguments[3];
13348 if (isBoolean(opts)) {
13349 // legacy...
13350 ctx.showHidden = opts;
13351 } else if (opts) {
13352 // got an "options" object
13353 exports._extend(ctx, opts);
13354 }
13355 // set default options
13356 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
13357 if (isUndefined(ctx.depth)) ctx.depth = 2;
13358 if (isUndefined(ctx.colors)) ctx.colors = false;
13359 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
13360 if (ctx.colors) ctx.stylize = stylizeWithColor;
13361 return formatValue(ctx, obj, ctx.depth);
13362 }
13363 exports.inspect = inspect;
13364
13365
13366 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
13367 inspect.colors = {
13368 'bold' : [1, 22],
13369 'italic' : [3, 23],
13370 'underline' : [4, 24],
13371 'inverse' : [7, 27],
13372 'white' : [37, 39],
13373 'grey' : [90, 39],
13374 'black' : [30, 39],
13375 'blue' : [34, 39],
13376 'cyan' : [36, 39],
13377 'green' : [32, 39],
13378 'magenta' : [35, 39],
13379 'red' : [31, 39],
13380 'yellow' : [33, 39]
13381 };
13382
13383 // Don't use 'blue' not visible on cmd.exe
13384 inspect.styles = {
13385 'special': 'cyan',
13386 'number': 'yellow',
13387 'boolean': 'yellow',
13388 'undefined': 'grey',
13389 'null': 'bold',
13390 'string': 'green',
13391 'date': 'magenta',
13392 // "name": intentionally not styling
13393 'regexp': 'red'
13394 };
13395
13396
13397 function stylizeWithColor(str, styleType) {
13398 var style = inspect.styles[styleType];
13399
13400 if (style) {
13401 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
13402 '\u001b[' + inspect.colors[style][1] + 'm';
13403 } else {
13404 return str;
13405 }
13406 }
13407
13408
13409 function stylizeNoColor(str, styleType) {
13410 return str;
13411 }
13412
13413
13414 function arrayToHash(array) {
13415 var hash = {};
13416
13417 array.forEach(function(val, idx) {
13418 hash[val] = true;
13419 });
13420
13421 return hash;
13422 }
13423
13424
13425 function formatValue(ctx, value, recurseTimes) {
13426 // Provide a hook for user-specified inspect functions.
13427 // Check that value is an object with an inspect function on it
13428 if (ctx.customInspect &&
13429 value &&
13430 isFunction(value.inspect) &&
13431 // Filter out the util module, it's inspect function is special
13432 value.inspect !== exports.inspect &&
13433 // Also filter out any prototype objects using the circular check.
13434 !(value.constructor && value.constructor.prototype === value)) {
13435 var ret = value.inspect(recurseTimes, ctx);
13436 if (!isString(ret)) {
13437 ret = formatValue(ctx, ret, recurseTimes);
13438 }
13439 return ret;
13440 }
13441
13442 // Primitive types cannot have properties
13443 var primitive = formatPrimitive(ctx, value);
13444 if (primitive) {
13445 return primitive;
13446 }
13447
13448 // Look up the keys of the object.
13449 var keys = Object.keys(value);
13450 var visibleKeys = arrayToHash(keys);
13451
13452 if (ctx.showHidden) {
13453 keys = Object.getOwnPropertyNames(value);
13454 }
13455
13456 // IE doesn't make error fields non-enumerable
13457 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
13458 if (isError(value)
13459 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
13460 return formatError(value);
13461 }
13462
13463 // Some type of object without properties can be shortcutted.
13464 if (keys.length === 0) {
13465 if (isFunction(value)) {
13466 var name = value.name ? ': ' + value.name : '';
13467 return ctx.stylize('[Function' + name + ']', 'special');
13468 }
13469 if (isRegExp(value)) {
13470 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13471 }
13472 if (isDate(value)) {
13473 return ctx.stylize(Date.prototype.toString.call(value), 'date');
13474 }
13475 if (isError(value)) {
13476 return formatError(value);
13477 }
13478 }
13479
13480 var base = '', array = false, braces = ['{', '}'];
13481
13482 // Make Array say that they are Array
13483 if (isArray(value)) {
13484 array = true;
13485 braces = ['[', ']'];
13486 }
13487
13488 // Make functions say that they are functions
13489 if (isFunction(value)) {
13490 var n = value.name ? ': ' + value.name : '';
13491 base = ' [Function' + n + ']';
13492 }
13493
13494 // Make RegExps say that they are RegExps
13495 if (isRegExp(value)) {
13496 base = ' ' + RegExp.prototype.toString.call(value);
13497 }
13498
13499 // Make dates with properties first say the date
13500 if (isDate(value)) {
13501 base = ' ' + Date.prototype.toUTCString.call(value);
13502 }
13503
13504 // Make error with message first say the error
13505 if (isError(value)) {
13506 base = ' ' + formatError(value);
13507 }
13508
13509 if (keys.length === 0 && (!array || value.length == 0)) {
13510 return braces[0] + base + braces[1];
13511 }
13512
13513 if (recurseTimes < 0) {
13514 if (isRegExp(value)) {
13515 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13516 } else {
13517 return ctx.stylize('[Object]', 'special');
13518 }
13519 }
13520
13521 ctx.seen.push(value);
13522
13523 var output;
13524 if (array) {
13525 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
13526 } else {
13527 output = keys.map(function(key) {
13528 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
13529 });
13530 }
13531
13532 ctx.seen.pop();
13533
13534 return reduceToSingleString(output, base, braces);
13535 }
13536
13537
13538 function formatPrimitive(ctx, value) {
13539 if (isUndefined(value))
13540 return ctx.stylize('undefined', 'undefined');
13541 if (isString(value)) {
13542 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
13543 .replace(/'/g, "\\'")
13544 .replace(/\\"/g, '"') + '\'';
13545 return ctx.stylize(simple, 'string');
13546 }
13547 if (isNumber(value))
13548 return ctx.stylize('' + value, 'number');
13549 if (isBoolean(value))
13550 return ctx.stylize('' + value, 'boolean');
13551 // For some reason typeof null is "object", so special case here.
13552 if (isNull(value))
13553 return ctx.stylize('null', 'null');
13554 }
13555
13556
13557 function formatError(value) {
13558 return '[' + Error.prototype.toString.call(value) + ']';
13559 }
13560
13561
13562 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
13563 var output = [];
13564 for (var i = 0, l = value.length; i < l; ++i) {
13565 if (hasOwnProperty(value, String(i))) {
13566 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13567 String(i), true));
13568 } else {
13569 output.push('');
13570 }
13571 }
13572 keys.forEach(function(key) {
13573 if (!key.match(/^\d+$/)) {
13574 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13575 key, true));
13576 }
13577 });
13578 return output;
13579 }
13580
13581
13582 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
13583 var name, str, desc;
13584 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
13585 if (desc.get) {
13586 if (desc.set) {
13587 str = ctx.stylize('[Getter/Setter]', 'special');
13588 } else {
13589 str = ctx.stylize('[Getter]', 'special');
13590 }
13591 } else {
13592 if (desc.set) {
13593 str = ctx.stylize('[Setter]', 'special');
13594 }
13595 }
13596 if (!hasOwnProperty(visibleKeys, key)) {
13597 name = '[' + key + ']';
13598 }
13599 if (!str) {
13600 if (ctx.seen.indexOf(desc.value) < 0) {
13601 if (isNull(recurseTimes)) {
13602 str = formatValue(ctx, desc.value, null);
13603 } else {
13604 str = formatValue(ctx, desc.value, recurseTimes - 1);
13605 }
13606 if (str.indexOf('\n') > -1) {
13607 if (array) {
13608 str = str.split('\n').map(function(line) {
13609 return ' ' + line;
13610 }).join('\n').substr(2);
13611 } else {
13612 str = '\n' + str.split('\n').map(function(line) {
13613 return ' ' + line;
13614 }).join('\n');
13615 }
13616 }
13617 } else {
13618 str = ctx.stylize('[Circular]', 'special');
13619 }
13620 }
13621 if (isUndefined(name)) {
13622 if (array && key.match(/^\d+$/)) {
13623 return str;
13624 }
13625 name = JSON.stringify('' + key);
13626 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
13627 name = name.substr(1, name.length - 2);
13628 name = ctx.stylize(name, 'name');
13629 } else {
13630 name = name.replace(/'/g, "\\'")
13631 .replace(/\\"/g, '"')
13632 .replace(/(^"|"$)/g, "'");
13633 name = ctx.stylize(name, 'string');
13634 }
13635 }
13636
13637 return name + ': ' + str;
13638 }
13639
13640
13641 function reduceToSingleString(output, base, braces) {
13642 var numLinesEst = 0;
13643 var length = output.reduce(function(prev, cur) {
13644 numLinesEst++;
13645 if (cur.indexOf('\n') >= 0) numLinesEst++;
13646 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
13647 }, 0);
13648
13649 if (length > 60) {
13650 return braces[0] +
13651 (base === '' ? '' : base + '\n ') +
13652 ' ' +
13653 output.join(',\n ') +
13654 ' ' +
13655 braces[1];
13656 }
13657
13658 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
13659 }
13660
13661
13662 // NOTE: These type checking functions intentionally don't use `instanceof`
13663 // because it is fragile and can be easily faked with `Object.create()`.
13664 function isArray(ar) {
13665 return Array.isArray(ar);
13666 }
13667 exports.isArray = isArray;
13668
13669 function isBoolean(arg) {
13670 return typeof arg === 'boolean';
13671 }
13672 exports.isBoolean = isBoolean;
13673
13674 function isNull(arg) {
13675 return arg === null;
13676 }
13677 exports.isNull = isNull;
13678
13679 function isNullOrUndefined(arg) {
13680 return arg == null;
13681 }
13682 exports.isNullOrUndefined = isNullOrUndefined;
13683
13684 function isNumber(arg) {
13685 return typeof arg === 'number';
13686 }
13687 exports.isNumber = isNumber;
13688
13689 function isString(arg) {
13690 return typeof arg === 'string';
13691 }
13692 exports.isString = isString;
13693
13694 function isSymbol(arg) {
13695 return typeof arg === 'symbol';
13696 }
13697 exports.isSymbol = isSymbol;
13698
13699 function isUndefined(arg) {
13700 return arg === void 0;
13701 }
13702 exports.isUndefined = isUndefined;
13703
13704 function isRegExp(re) {
13705 return isObject(re) && objectToString(re) === '[object RegExp]';
13706 }
13707 exports.isRegExp = isRegExp;
13708
13709 function isObject(arg) {
13710 return typeof arg === 'object' && arg !== null;
13711 }
13712 exports.isObject = isObject;
13713
13714 function isDate(d) {
13715 return isObject(d) && objectToString(d) === '[object Date]';
13716 }
13717 exports.isDate = isDate;
13718
13719 function isError(e) {
13720 return isObject(e) &&
13721 (objectToString(e) === '[object Error]' || e instanceof Error);
13722 }
13723 exports.isError = isError;
13724
13725 function isFunction(arg) {
13726 return typeof arg === 'function';
13727 }
13728 exports.isFunction = isFunction;
13729
13730 function isPrimitive(arg) {
13731 return arg === null ||
13732 typeof arg === 'boolean' ||
13733 typeof arg === 'number' ||
13734 typeof arg === 'string' ||
13735 typeof arg === 'symbol' || // ES6 symbol
13736 typeof arg === 'undefined';
13737 }
13738 exports.isPrimitive = isPrimitive;
13739
13740 exports.isBuffer = require('./support/isBuffer');
13741
13742 function objectToString(o) {
13743 return Object.prototype.toString.call(o);
13744 }
13745
13746
13747 function pad(n) {
13748 return n < 10 ? '0' + n.toString(10) : n.toString(10);
13749 }
13750
13751
13752 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
13753 'Oct', 'Nov', 'Dec'];
13754
13755 // 26 Feb 16:19:34
13756 function timestamp() {
13757 var d = new Date();
13758 var time = [pad(d.getHours()),
13759 pad(d.getMinutes()),
13760 pad(d.getSeconds())].join(':');
13761 return [d.getDate(), months[d.getMonth()], time].join(' ');
13762 }
13763
13764
13765 // log is just a thin wrapper to console.log that prepends a timestamp
13766 exports.log = function() {
13767 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
13768 };
13769
13770
13771 /**
13772 * Inherit the prototype methods from one constructor into another.
13773 *
13774 * The Function.prototype.inherits from lang.js rewritten as a standalone
13775 * function (not on Function.prototype). NOTE: If this file is to be loaded
13776 * during bootstrapping this function needs to be rewritten using some native
13777 * functions as prototype setup using normal JavaScript does not work as
13778 * expected during bootstrapping (see mirror.js in r114903).
13779 *
13780 * @param {function} ctor Constructor function which needs to inherit the
13781 * prototype.
13782 * @param {function} superCtor Constructor function to inherit prototype from.
13783 */
13784 exports.inherits = require('inherits');
13785
13786 exports._extend = function(origin, add) {
13787 // Don't do anything if add isn't an object
13788 if (!add || !isObject(add)) return origin;
13789
13790 var keys = Object.keys(add);
13791 var i = keys.length;
13792 while (i--) {
13793 origin[keys[i]] = add[keys[i]];
13794 }
13795 return origin;
13796 };
13797
13798 function hasOwnProperty(obj, prop) {
13799 return Object.prototype.hasOwnProperty.call(obj, prop);
13800 }
13801
13802 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
13803 },{"./support/isBuffer":31,"_process":12,"inherits":30}],33:[function(require,module,exports){
13804 module.exports = {
13805 base58: require('bs58'),
13806 bitcoin: require('bitcoinjs-lib'),
13807 ecurve: require('ecurve'),
13808 BigInteger: require('bigi')
13809 }
13810
13811 },{"bigi":37,"bitcoinjs-lib":50,"bs58":79,"ecurve":89}],34:[function(require,module,exports){
13812 // base-x encoding
13813 // Forked from https://github.com/cryptocoinjs/bs58
13814 // Originally written by Mike Hearn for BitcoinJ
13815 // Copyright (c) 2011 Google Inc
13816 // Ported to JavaScript by Stefan Thomas
13817 // Merged Buffer refactorings from base58-native by Stephen Pair
13818 // Copyright (c) 2013 BitPay Inc
13819
13820 var Buffer = require('safe-buffer').Buffer
13821
13822 module.exports = function base (ALPHABET) {
13823 var ALPHABET_MAP = {}
13824 var BASE = ALPHABET.length
13825 var LEADER = ALPHABET.charAt(0)
13826
13827 // pre-compute lookup table
13828 for (var z = 0; z < ALPHABET.length; z++) {
13829 var x = ALPHABET.charAt(z)
13830
13831 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
13832 ALPHABET_MAP[x] = z
13833 }
13834
13835 function encode (source) {
13836 if (source.length === 0) return ''
13837
13838 var digits = [0]
13839 for (var i = 0; i < source.length; ++i) {
13840 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
13841 carry += digits[j] << 8
13842 digits[j] = carry % BASE
13843 carry = (carry / BASE) | 0
13844 }
13845
13846 while (carry > 0) {
13847 digits.push(carry % BASE)
13848 carry = (carry / BASE) | 0
13849 }
13850 }
13851
13852 var string = ''
13853
13854 // deal with leading zeros
13855 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
13856 // convert digits to a string
13857 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
13858
13859 return string
13860 }
13861
13862 function decodeUnsafe (string) {
13863 if (string.length === 0) return Buffer.allocUnsafe(0)
13864
13865 var bytes = [0]
13866 for (var i = 0; i < string.length; i++) {
13867 var value = ALPHABET_MAP[string[i]]
13868 if (value === undefined) return
13869
13870 for (var j = 0, carry = value; j < bytes.length; ++j) {
13871 carry += bytes[j] * BASE
13872 bytes[j] = carry & 0xff
13873 carry >>= 8
13874 }
13875
13876 while (carry > 0) {
13877 bytes.push(carry & 0xff)
13878 carry >>= 8
13879 }
13880 }
13881
13882 // deal with leading zeros
13883 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
13884 bytes.push(0)
13885 }
13886
13887 return Buffer.from(bytes.reverse())
13888 }
13889
13890 function decode (string) {
13891 var buffer = decodeUnsafe(string)
13892 if (buffer) return buffer
13893
13894 throw new Error('Non-base' + BASE + ' character')
13895 }
13896
13897 return {
13898 encode: encode,
13899 decodeUnsafe: decodeUnsafe,
13900 decode: decode
13901 }
13902 }
13903
13904 },{"safe-buffer":98}],35:[function(require,module,exports){
13905 // (public) Constructor
13906 function BigInteger(a, b, c) {
13907 if (!(this instanceof BigInteger))
13908 return new BigInteger(a, b, c)
13909
13910 if (a != null) {
13911 if ("number" == typeof a) this.fromNumber(a, b, c)
13912 else if (b == null && "string" != typeof a) this.fromString(a, 256)
13913 else this.fromString(a, b)
13914 }
13915 }
13916
13917 var proto = BigInteger.prototype
13918
13919 // duck-typed isBigInteger
13920 proto.__bigi = require('../package.json').version
13921 BigInteger.isBigInteger = function (obj, check_ver) {
13922 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
13923 }
13924
13925 // Bits per digit
13926 var dbits
13927
13928 // am: Compute w_j += (x*this_i), propagate carries,
13929 // c is initial carry, returns final carry.
13930 // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
13931 // We need to select the fastest one that works in this environment.
13932
13933 // am1: use a single mult and divide to get the high bits,
13934 // max digit bits should be 26 because
13935 // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
13936 function am1(i, x, w, j, c, n) {
13937 while (--n >= 0) {
13938 var v = x * this[i++] + w[j] + c
13939 c = Math.floor(v / 0x4000000)
13940 w[j++] = v & 0x3ffffff
13941 }
13942 return c
13943 }
13944 // am2 avoids a big mult-and-extract completely.
13945 // Max digit bits should be <= 30 because we do bitwise ops
13946 // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
13947 function am2(i, x, w, j, c, n) {
13948 var xl = x & 0x7fff,
13949 xh = x >> 15
13950 while (--n >= 0) {
13951 var l = this[i] & 0x7fff
13952 var h = this[i++] >> 15
13953 var m = xh * l + h * xl
13954 l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
13955 c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
13956 w[j++] = l & 0x3fffffff
13957 }
13958 return c
13959 }
13960 // Alternately, set max digit bits to 28 since some
13961 // browsers slow down when dealing with 32-bit numbers.
13962 function am3(i, x, w, j, c, n) {
13963 var xl = x & 0x3fff,
13964 xh = x >> 14
13965 while (--n >= 0) {
13966 var l = this[i] & 0x3fff
13967 var h = this[i++] >> 14
13968 var m = xh * l + h * xl
13969 l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
13970 c = (l >> 28) + (m >> 14) + xh * h
13971 w[j++] = l & 0xfffffff
13972 }
13973 return c
13974 }
13975
13976 // wtf?
13977 BigInteger.prototype.am = am1
13978 dbits = 26
13979
13980 BigInteger.prototype.DB = dbits
13981 BigInteger.prototype.DM = ((1 << dbits) - 1)
13982 var DV = BigInteger.prototype.DV = (1 << dbits)
13983
13984 var BI_FP = 52
13985 BigInteger.prototype.FV = Math.pow(2, BI_FP)
13986 BigInteger.prototype.F1 = BI_FP - dbits
13987 BigInteger.prototype.F2 = 2 * dbits - BI_FP
13988
13989 // Digit conversions
13990 var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
13991 var BI_RC = new Array()
13992 var rr, vv
13993 rr = "0".charCodeAt(0)
13994 for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
13995 rr = "a".charCodeAt(0)
13996 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
13997 rr = "A".charCodeAt(0)
13998 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
13999
14000 function int2char(n) {
14001 return BI_RM.charAt(n)
14002 }
14003
14004 function intAt(s, i) {
14005 var c = BI_RC[s.charCodeAt(i)]
14006 return (c == null) ? -1 : c
14007 }
14008
14009 // (protected) copy this to r
14010 function bnpCopyTo(r) {
14011 for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]
14012 r.t = this.t
14013 r.s = this.s
14014 }
14015
14016 // (protected) set from integer value x, -DV <= x < DV
14017 function bnpFromInt(x) {
14018 this.t = 1
14019 this.s = (x < 0) ? -1 : 0
14020 if (x > 0) this[0] = x
14021 else if (x < -1) this[0] = x + DV
14022 else this.t = 0
14023 }
14024
14025 // return bigint initialized to value
14026 function nbv(i) {
14027 var r = new BigInteger()
14028 r.fromInt(i)
14029 return r
14030 }
14031
14032 // (protected) set from string and radix
14033 function bnpFromString(s, b) {
14034 var self = this
14035
14036 var k
14037 if (b == 16) k = 4
14038 else if (b == 8) k = 3
14039 else if (b == 256) k = 8; // byte array
14040 else if (b == 2) k = 1
14041 else if (b == 32) k = 5
14042 else if (b == 4) k = 2
14043 else {
14044 self.fromRadix(s, b)
14045 return
14046 }
14047 self.t = 0
14048 self.s = 0
14049 var i = s.length,
14050 mi = false,
14051 sh = 0
14052 while (--i >= 0) {
14053 var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
14054 if (x < 0) {
14055 if (s.charAt(i) == "-") mi = true
14056 continue
14057 }
14058 mi = false
14059 if (sh == 0)
14060 self[self.t++] = x
14061 else if (sh + k > self.DB) {
14062 self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh
14063 self[self.t++] = (x >> (self.DB - sh))
14064 } else
14065 self[self.t - 1] |= x << sh
14066 sh += k
14067 if (sh >= self.DB) sh -= self.DB
14068 }
14069 if (k == 8 && (s[0] & 0x80) != 0) {
14070 self.s = -1
14071 if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh
14072 }
14073 self.clamp()
14074 if (mi) BigInteger.ZERO.subTo(self, self)
14075 }
14076
14077 // (protected) clamp off excess high words
14078 function bnpClamp() {
14079 var c = this.s & this.DM
14080 while (this.t > 0 && this[this.t - 1] == c)--this.t
14081 }
14082
14083 // (public) return string representation in given radix
14084 function bnToString(b) {
14085 var self = this
14086 if (self.s < 0) return "-" + self.negate()
14087 .toString(b)
14088 var k
14089 if (b == 16) k = 4
14090 else if (b == 8) k = 3
14091 else if (b == 2) k = 1
14092 else if (b == 32) k = 5
14093 else if (b == 4) k = 2
14094 else return self.toRadix(b)
14095 var km = (1 << k) - 1,
14096 d, m = false,
14097 r = "",
14098 i = self.t
14099 var p = self.DB - (i * self.DB) % k
14100 if (i-- > 0) {
14101 if (p < self.DB && (d = self[i] >> p) > 0) {
14102 m = true
14103 r = int2char(d)
14104 }
14105 while (i >= 0) {
14106 if (p < k) {
14107 d = (self[i] & ((1 << p) - 1)) << (k - p)
14108 d |= self[--i] >> (p += self.DB - k)
14109 } else {
14110 d = (self[i] >> (p -= k)) & km
14111 if (p <= 0) {
14112 p += self.DB
14113 --i
14114 }
14115 }
14116 if (d > 0) m = true
14117 if (m) r += int2char(d)
14118 }
14119 }
14120 return m ? r : "0"
14121 }
14122
14123 // (public) -this
14124 function bnNegate() {
14125 var r = new BigInteger()
14126 BigInteger.ZERO.subTo(this, r)
14127 return r
14128 }
14129
14130 // (public) |this|
14131 function bnAbs() {
14132 return (this.s < 0) ? this.negate() : this
14133 }
14134
14135 // (public) return + if this > a, - if this < a, 0 if equal
14136 function bnCompareTo(a) {
14137 var r = this.s - a.s
14138 if (r != 0) return r
14139 var i = this.t
14140 r = i - a.t
14141 if (r != 0) return (this.s < 0) ? -r : r
14142 while (--i >= 0)
14143 if ((r = this[i] - a[i]) != 0) return r
14144 return 0
14145 }
14146
14147 // returns bit length of the integer x
14148 function nbits(x) {
14149 var r = 1,
14150 t
14151 if ((t = x >>> 16) != 0) {
14152 x = t
14153 r += 16
14154 }
14155 if ((t = x >> 8) != 0) {
14156 x = t
14157 r += 8
14158 }
14159 if ((t = x >> 4) != 0) {
14160 x = t
14161 r += 4
14162 }
14163 if ((t = x >> 2) != 0) {
14164 x = t
14165 r += 2
14166 }
14167 if ((t = x >> 1) != 0) {
14168 x = t
14169 r += 1
14170 }
14171 return r
14172 }
14173
14174 // (public) return the number of bits in "this"
14175 function bnBitLength() {
14176 if (this.t <= 0) return 0
14177 return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
14178 }
14179
14180 // (public) return the number of bytes in "this"
14181 function bnByteLength() {
14182 return this.bitLength() >> 3
14183 }
14184
14185 // (protected) r = this << n*DB
14186 function bnpDLShiftTo(n, r) {
14187 var i
14188 for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]
14189 for (i = n - 1; i >= 0; --i) r[i] = 0
14190 r.t = this.t + n
14191 r.s = this.s
14192 }
14193
14194 // (protected) r = this >> n*DB
14195 function bnpDRShiftTo(n, r) {
14196 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
14197 r.t = Math.max(this.t - n, 0)
14198 r.s = this.s
14199 }
14200
14201 // (protected) r = this << n
14202 function bnpLShiftTo(n, r) {
14203 var self = this
14204 var bs = n % self.DB
14205 var cbs = self.DB - bs
14206 var bm = (1 << cbs) - 1
14207 var ds = Math.floor(n / self.DB),
14208 c = (self.s << bs) & self.DM,
14209 i
14210 for (i = self.t - 1; i >= 0; --i) {
14211 r[i + ds + 1] = (self[i] >> cbs) | c
14212 c = (self[i] & bm) << bs
14213 }
14214 for (i = ds - 1; i >= 0; --i) r[i] = 0
14215 r[ds] = c
14216 r.t = self.t + ds + 1
14217 r.s = self.s
14218 r.clamp()
14219 }
14220
14221 // (protected) r = this >> n
14222 function bnpRShiftTo(n, r) {
14223 var self = this
14224 r.s = self.s
14225 var ds = Math.floor(n / self.DB)
14226 if (ds >= self.t) {
14227 r.t = 0
14228 return
14229 }
14230 var bs = n % self.DB
14231 var cbs = self.DB - bs
14232 var bm = (1 << bs) - 1
14233 r[0] = self[ds] >> bs
14234 for (var i = ds + 1; i < self.t; ++i) {
14235 r[i - ds - 1] |= (self[i] & bm) << cbs
14236 r[i - ds] = self[i] >> bs
14237 }
14238 if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs
14239 r.t = self.t - ds
14240 r.clamp()
14241 }
14242
14243 // (protected) r = this - a
14244 function bnpSubTo(a, r) {
14245 var self = this
14246 var i = 0,
14247 c = 0,
14248 m = Math.min(a.t, self.t)
14249 while (i < m) {
14250 c += self[i] - a[i]
14251 r[i++] = c & self.DM
14252 c >>= self.DB
14253 }
14254 if (a.t < self.t) {
14255 c -= a.s
14256 while (i < self.t) {
14257 c += self[i]
14258 r[i++] = c & self.DM
14259 c >>= self.DB
14260 }
14261 c += self.s
14262 } else {
14263 c += self.s
14264 while (i < a.t) {
14265 c -= a[i]
14266 r[i++] = c & self.DM
14267 c >>= self.DB
14268 }
14269 c -= a.s
14270 }
14271 r.s = (c < 0) ? -1 : 0
14272 if (c < -1) r[i++] = self.DV + c
14273 else if (c > 0) r[i++] = c
14274 r.t = i
14275 r.clamp()
14276 }
14277
14278 // (protected) r = this * a, r != this,a (HAC 14.12)
14279 // "this" should be the larger one if appropriate.
14280 function bnpMultiplyTo(a, r) {
14281 var x = this.abs(),
14282 y = a.abs()
14283 var i = x.t
14284 r.t = i + y.t
14285 while (--i >= 0) r[i] = 0
14286 for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)
14287 r.s = 0
14288 r.clamp()
14289 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
14290 }
14291
14292 // (protected) r = this^2, r != this (HAC 14.16)
14293 function bnpSquareTo(r) {
14294 var x = this.abs()
14295 var i = r.t = 2 * x.t
14296 while (--i >= 0) r[i] = 0
14297 for (i = 0; i < x.t - 1; ++i) {
14298 var c = x.am(i, x[i], r, 2 * i, 0, 1)
14299 if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
14300 r[i + x.t] -= x.DV
14301 r[i + x.t + 1] = 1
14302 }
14303 }
14304 if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)
14305 r.s = 0
14306 r.clamp()
14307 }
14308
14309 // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
14310 // r != q, this != m. q or r may be null.
14311 function bnpDivRemTo(m, q, r) {
14312 var self = this
14313 var pm = m.abs()
14314 if (pm.t <= 0) return
14315 var pt = self.abs()
14316 if (pt.t < pm.t) {
14317 if (q != null) q.fromInt(0)
14318 if (r != null) self.copyTo(r)
14319 return
14320 }
14321 if (r == null) r = new BigInteger()
14322 var y = new BigInteger(),
14323 ts = self.s,
14324 ms = m.s
14325 var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus
14326 if (nsh > 0) {
14327 pm.lShiftTo(nsh, y)
14328 pt.lShiftTo(nsh, r)
14329 } else {
14330 pm.copyTo(y)
14331 pt.copyTo(r)
14332 }
14333 var ys = y.t
14334 var y0 = y[ys - 1]
14335 if (y0 == 0) return
14336 var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)
14337 var d1 = self.FV / yt,
14338 d2 = (1 << self.F1) / yt,
14339 e = 1 << self.F2
14340 var i = r.t,
14341 j = i - ys,
14342 t = (q == null) ? new BigInteger() : q
14343 y.dlShiftTo(j, t)
14344 if (r.compareTo(t) >= 0) {
14345 r[r.t++] = 1
14346 r.subTo(t, r)
14347 }
14348 BigInteger.ONE.dlShiftTo(ys, t)
14349 t.subTo(y, y); // "negative" y so we can replace sub with am later
14350 while (y.t < ys) y[y.t++] = 0
14351 while (--j >= 0) {
14352 // Estimate quotient digit
14353 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)
14354 if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
14355 y.dlShiftTo(j, t)
14356 r.subTo(t, r)
14357 while (r[i] < --qd) r.subTo(t, r)
14358 }
14359 }
14360 if (q != null) {
14361 r.drShiftTo(ys, q)
14362 if (ts != ms) BigInteger.ZERO.subTo(q, q)
14363 }
14364 r.t = ys
14365 r.clamp()
14366 if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
14367 if (ts < 0) BigInteger.ZERO.subTo(r, r)
14368 }
14369
14370 // (public) this mod a
14371 function bnMod(a) {
14372 var r = new BigInteger()
14373 this.abs()
14374 .divRemTo(a, null, r)
14375 if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)
14376 return r
14377 }
14378
14379 // Modular reduction using "classic" algorithm
14380 function Classic(m) {
14381 this.m = m
14382 }
14383
14384 function cConvert(x) {
14385 if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)
14386 else return x
14387 }
14388
14389 function cRevert(x) {
14390 return x
14391 }
14392
14393 function cReduce(x) {
14394 x.divRemTo(this.m, null, x)
14395 }
14396
14397 function cMulTo(x, y, r) {
14398 x.multiplyTo(y, r)
14399 this.reduce(r)
14400 }
14401
14402 function cSqrTo(x, r) {
14403 x.squareTo(r)
14404 this.reduce(r)
14405 }
14406
14407 Classic.prototype.convert = cConvert
14408 Classic.prototype.revert = cRevert
14409 Classic.prototype.reduce = cReduce
14410 Classic.prototype.mulTo = cMulTo
14411 Classic.prototype.sqrTo = cSqrTo
14412
14413 // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
14414 // justification:
14415 // xy == 1 (mod m)
14416 // xy = 1+km
14417 // xy(2-xy) = (1+km)(1-km)
14418 // x[y(2-xy)] = 1-k^2m^2
14419 // x[y(2-xy)] == 1 (mod m^2)
14420 // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
14421 // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
14422 // JS multiply "overflows" differently from C/C++, so care is needed here.
14423 function bnpInvDigit() {
14424 if (this.t < 1) return 0
14425 var x = this[0]
14426 if ((x & 1) == 0) return 0
14427 var y = x & 3; // y == 1/x mod 2^2
14428 y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
14429 y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
14430 y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
14431 // last step - calculate inverse mod DV directly
14432 // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
14433 y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
14434 // we really want the negative inverse, and -DV < y < DV
14435 return (y > 0) ? this.DV - y : -y
14436 }
14437
14438 // Montgomery reduction
14439 function Montgomery(m) {
14440 this.m = m
14441 this.mp = m.invDigit()
14442 this.mpl = this.mp & 0x7fff
14443 this.mph = this.mp >> 15
14444 this.um = (1 << (m.DB - 15)) - 1
14445 this.mt2 = 2 * m.t
14446 }
14447
14448 // xR mod m
14449 function montConvert(x) {
14450 var r = new BigInteger()
14451 x.abs()
14452 .dlShiftTo(this.m.t, r)
14453 r.divRemTo(this.m, null, r)
14454 if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)
14455 return r
14456 }
14457
14458 // x/R mod m
14459 function montRevert(x) {
14460 var r = new BigInteger()
14461 x.copyTo(r)
14462 this.reduce(r)
14463 return r
14464 }
14465
14466 // x = x/R mod m (HAC 14.32)
14467 function montReduce(x) {
14468 while (x.t <= this.mt2) // pad x so am has enough room later
14469 x[x.t++] = 0
14470 for (var i = 0; i < this.m.t; ++i) {
14471 // faster way of calculating u0 = x[i]*mp mod DV
14472 var j = x[i] & 0x7fff
14473 var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM
14474 // use am to combine the multiply-shift-add into one call
14475 j = i + this.m.t
14476 x[j] += this.m.am(0, u0, x, i, 0, this.m.t)
14477 // propagate carry
14478 while (x[j] >= x.DV) {
14479 x[j] -= x.DV
14480 x[++j]++
14481 }
14482 }
14483 x.clamp()
14484 x.drShiftTo(this.m.t, x)
14485 if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)
14486 }
14487
14488 // r = "x^2/R mod m"; x != r
14489 function montSqrTo(x, r) {
14490 x.squareTo(r)
14491 this.reduce(r)
14492 }
14493
14494 // r = "xy/R mod m"; x,y != r
14495 function montMulTo(x, y, r) {
14496 x.multiplyTo(y, r)
14497 this.reduce(r)
14498 }
14499
14500 Montgomery.prototype.convert = montConvert
14501 Montgomery.prototype.revert = montRevert
14502 Montgomery.prototype.reduce = montReduce
14503 Montgomery.prototype.mulTo = montMulTo
14504 Montgomery.prototype.sqrTo = montSqrTo
14505
14506 // (protected) true iff this is even
14507 function bnpIsEven() {
14508 return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
14509 }
14510
14511 // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
14512 function bnpExp(e, z) {
14513 if (e > 0xffffffff || e < 1) return BigInteger.ONE
14514 var r = new BigInteger(),
14515 r2 = new BigInteger(),
14516 g = z.convert(this),
14517 i = nbits(e) - 1
14518 g.copyTo(r)
14519 while (--i >= 0) {
14520 z.sqrTo(r, r2)
14521 if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)
14522 else {
14523 var t = r
14524 r = r2
14525 r2 = t
14526 }
14527 }
14528 return z.revert(r)
14529 }
14530
14531 // (public) this^e % m, 0 <= e < 2^32
14532 function bnModPowInt(e, m) {
14533 var z
14534 if (e < 256 || m.isEven()) z = new Classic(m)
14535 else z = new Montgomery(m)
14536 return this.exp(e, z)
14537 }
14538
14539 // protected
14540 proto.copyTo = bnpCopyTo
14541 proto.fromInt = bnpFromInt
14542 proto.fromString = bnpFromString
14543 proto.clamp = bnpClamp
14544 proto.dlShiftTo = bnpDLShiftTo
14545 proto.drShiftTo = bnpDRShiftTo
14546 proto.lShiftTo = bnpLShiftTo
14547 proto.rShiftTo = bnpRShiftTo
14548 proto.subTo = bnpSubTo
14549 proto.multiplyTo = bnpMultiplyTo
14550 proto.squareTo = bnpSquareTo
14551 proto.divRemTo = bnpDivRemTo
14552 proto.invDigit = bnpInvDigit
14553 proto.isEven = bnpIsEven
14554 proto.exp = bnpExp
14555
14556 // public
14557 proto.toString = bnToString
14558 proto.negate = bnNegate
14559 proto.abs = bnAbs
14560 proto.compareTo = bnCompareTo
14561 proto.bitLength = bnBitLength
14562 proto.byteLength = bnByteLength
14563 proto.mod = bnMod
14564 proto.modPowInt = bnModPowInt
14565
14566 // (public)
14567 function bnClone() {
14568 var r = new BigInteger()
14569 this.copyTo(r)
14570 return r
14571 }
14572
14573 // (public) return value as integer
14574 function bnIntValue() {
14575 if (this.s < 0) {
14576 if (this.t == 1) return this[0] - this.DV
14577 else if (this.t == 0) return -1
14578 } else if (this.t == 1) return this[0]
14579 else if (this.t == 0) return 0
14580 // assumes 16 < DB < 32
14581 return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
14582 }
14583
14584 // (public) return value as byte
14585 function bnByteValue() {
14586 return (this.t == 0) ? this.s : (this[0] << 24) >> 24
14587 }
14588
14589 // (public) return value as short (assumes DB>=16)
14590 function bnShortValue() {
14591 return (this.t == 0) ? this.s : (this[0] << 16) >> 16
14592 }
14593
14594 // (protected) return x s.t. r^x < DV
14595 function bnpChunkSize(r) {
14596 return Math.floor(Math.LN2 * this.DB / Math.log(r))
14597 }
14598
14599 // (public) 0 if this == 0, 1 if this > 0
14600 function bnSigNum() {
14601 if (this.s < 0) return -1
14602 else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0
14603 else return 1
14604 }
14605
14606 // (protected) convert to radix string
14607 function bnpToRadix(b) {
14608 if (b == null) b = 10
14609 if (this.signum() == 0 || b < 2 || b > 36) return "0"
14610 var cs = this.chunkSize(b)
14611 var a = Math.pow(b, cs)
14612 var d = nbv(a),
14613 y = new BigInteger(),
14614 z = new BigInteger(),
14615 r = ""
14616 this.divRemTo(d, y, z)
14617 while (y.signum() > 0) {
14618 r = (a + z.intValue())
14619 .toString(b)
14620 .substr(1) + r
14621 y.divRemTo(d, y, z)
14622 }
14623 return z.intValue()
14624 .toString(b) + r
14625 }
14626
14627 // (protected) convert from radix string
14628 function bnpFromRadix(s, b) {
14629 var self = this
14630 self.fromInt(0)
14631 if (b == null) b = 10
14632 var cs = self.chunkSize(b)
14633 var d = Math.pow(b, cs),
14634 mi = false,
14635 j = 0,
14636 w = 0
14637 for (var i = 0; i < s.length; ++i) {
14638 var x = intAt(s, i)
14639 if (x < 0) {
14640 if (s.charAt(i) == "-" && self.signum() == 0) mi = true
14641 continue
14642 }
14643 w = b * w + x
14644 if (++j >= cs) {
14645 self.dMultiply(d)
14646 self.dAddOffset(w, 0)
14647 j = 0
14648 w = 0
14649 }
14650 }
14651 if (j > 0) {
14652 self.dMultiply(Math.pow(b, j))
14653 self.dAddOffset(w, 0)
14654 }
14655 if (mi) BigInteger.ZERO.subTo(self, self)
14656 }
14657
14658 // (protected) alternate constructor
14659 function bnpFromNumber(a, b, c) {
14660 var self = this
14661 if ("number" == typeof b) {
14662 // new BigInteger(int,int,RNG)
14663 if (a < 2) self.fromInt(1)
14664 else {
14665 self.fromNumber(a, c)
14666 if (!self.testBit(a - 1)) // force MSB set
14667 self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)
14668 if (self.isEven()) self.dAddOffset(1, 0); // force odd
14669 while (!self.isProbablePrime(b)) {
14670 self.dAddOffset(2, 0)
14671 if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)
14672 }
14673 }
14674 } else {
14675 // new BigInteger(int,RNG)
14676 var x = new Array(),
14677 t = a & 7
14678 x.length = (a >> 3) + 1
14679 b.nextBytes(x)
14680 if (t > 0) x[0] &= ((1 << t) - 1)
14681 else x[0] = 0
14682 self.fromString(x, 256)
14683 }
14684 }
14685
14686 // (public) convert to bigendian byte array
14687 function bnToByteArray() {
14688 var self = this
14689 var i = self.t,
14690 r = new Array()
14691 r[0] = self.s
14692 var p = self.DB - (i * self.DB) % 8,
14693 d, k = 0
14694 if (i-- > 0) {
14695 if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)
14696 r[k++] = d | (self.s << (self.DB - p))
14697 while (i >= 0) {
14698 if (p < 8) {
14699 d = (self[i] & ((1 << p) - 1)) << (8 - p)
14700 d |= self[--i] >> (p += self.DB - 8)
14701 } else {
14702 d = (self[i] >> (p -= 8)) & 0xff
14703 if (p <= 0) {
14704 p += self.DB
14705 --i
14706 }
14707 }
14708 if ((d & 0x80) != 0) d |= -256
14709 if (k === 0 && (self.s & 0x80) != (d & 0x80))++k
14710 if (k > 0 || d != self.s) r[k++] = d
14711 }
14712 }
14713 return r
14714 }
14715
14716 function bnEquals(a) {
14717 return (this.compareTo(a) == 0)
14718 }
14719
14720 function bnMin(a) {
14721 return (this.compareTo(a) < 0) ? this : a
14722 }
14723
14724 function bnMax(a) {
14725 return (this.compareTo(a) > 0) ? this : a
14726 }
14727
14728 // (protected) r = this op a (bitwise)
14729 function bnpBitwiseTo(a, op, r) {
14730 var self = this
14731 var i, f, m = Math.min(a.t, self.t)
14732 for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])
14733 if (a.t < self.t) {
14734 f = a.s & self.DM
14735 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
14736 r.t = self.t
14737 } else {
14738 f = self.s & self.DM
14739 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
14740 r.t = a.t
14741 }
14742 r.s = op(self.s, a.s)
14743 r.clamp()
14744 }
14745
14746 // (public) this & a
14747 function op_and(x, y) {
14748 return x & y
14749 }
14750
14751 function bnAnd(a) {
14752 var r = new BigInteger()
14753 this.bitwiseTo(a, op_and, r)
14754 return r
14755 }
14756
14757 // (public) this | a
14758 function op_or(x, y) {
14759 return x | y
14760 }
14761
14762 function bnOr(a) {
14763 var r = new BigInteger()
14764 this.bitwiseTo(a, op_or, r)
14765 return r
14766 }
14767
14768 // (public) this ^ a
14769 function op_xor(x, y) {
14770 return x ^ y
14771 }
14772
14773 function bnXor(a) {
14774 var r = new BigInteger()
14775 this.bitwiseTo(a, op_xor, r)
14776 return r
14777 }
14778
14779 // (public) this & ~a
14780 function op_andnot(x, y) {
14781 return x & ~y
14782 }
14783
14784 function bnAndNot(a) {
14785 var r = new BigInteger()
14786 this.bitwiseTo(a, op_andnot, r)
14787 return r
14788 }
14789
14790 // (public) ~this
14791 function bnNot() {
14792 var r = new BigInteger()
14793 for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]
14794 r.t = this.t
14795 r.s = ~this.s
14796 return r
14797 }
14798
14799 // (public) this << n
14800 function bnShiftLeft(n) {
14801 var r = new BigInteger()
14802 if (n < 0) this.rShiftTo(-n, r)
14803 else this.lShiftTo(n, r)
14804 return r
14805 }
14806
14807 // (public) this >> n
14808 function bnShiftRight(n) {
14809 var r = new BigInteger()
14810 if (n < 0) this.lShiftTo(-n, r)
14811 else this.rShiftTo(n, r)
14812 return r
14813 }
14814
14815 // return index of lowest 1-bit in x, x < 2^31
14816 function lbit(x) {
14817 if (x == 0) return -1
14818 var r = 0
14819 if ((x & 0xffff) == 0) {
14820 x >>= 16
14821 r += 16
14822 }
14823 if ((x & 0xff) == 0) {
14824 x >>= 8
14825 r += 8
14826 }
14827 if ((x & 0xf) == 0) {
14828 x >>= 4
14829 r += 4
14830 }
14831 if ((x & 3) == 0) {
14832 x >>= 2
14833 r += 2
14834 }
14835 if ((x & 1) == 0)++r
14836 return r
14837 }
14838
14839 // (public) returns index of lowest 1-bit (or -1 if none)
14840 function bnGetLowestSetBit() {
14841 for (var i = 0; i < this.t; ++i)
14842 if (this[i] != 0) return i * this.DB + lbit(this[i])
14843 if (this.s < 0) return this.t * this.DB
14844 return -1
14845 }
14846
14847 // return number of 1 bits in x
14848 function cbit(x) {
14849 var r = 0
14850 while (x != 0) {
14851 x &= x - 1
14852 ++r
14853 }
14854 return r
14855 }
14856
14857 // (public) return number of set bits
14858 function bnBitCount() {
14859 var r = 0,
14860 x = this.s & this.DM
14861 for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)
14862 return r
14863 }
14864
14865 // (public) true iff nth bit is set
14866 function bnTestBit(n) {
14867 var j = Math.floor(n / this.DB)
14868 if (j >= this.t) return (this.s != 0)
14869 return ((this[j] & (1 << (n % this.DB))) != 0)
14870 }
14871
14872 // (protected) this op (1<<n)
14873 function bnpChangeBit(n, op) {
14874 var r = BigInteger.ONE.shiftLeft(n)
14875 this.bitwiseTo(r, op, r)
14876 return r
14877 }
14878
14879 // (public) this | (1<<n)
14880 function bnSetBit(n) {
14881 return this.changeBit(n, op_or)
14882 }
14883
14884 // (public) this & ~(1<<n)
14885 function bnClearBit(n) {
14886 return this.changeBit(n, op_andnot)
14887 }
14888
14889 // (public) this ^ (1<<n)
14890 function bnFlipBit(n) {
14891 return this.changeBit(n, op_xor)
14892 }
14893
14894 // (protected) r = this + a
14895 function bnpAddTo(a, r) {
14896 var self = this
14897
14898 var i = 0,
14899 c = 0,
14900 m = Math.min(a.t, self.t)
14901 while (i < m) {
14902 c += self[i] + a[i]
14903 r[i++] = c & self.DM
14904 c >>= self.DB
14905 }
14906 if (a.t < self.t) {
14907 c += a.s
14908 while (i < self.t) {
14909 c += self[i]
14910 r[i++] = c & self.DM
14911 c >>= self.DB
14912 }
14913 c += self.s
14914 } else {
14915 c += self.s
14916 while (i < a.t) {
14917 c += a[i]
14918 r[i++] = c & self.DM
14919 c >>= self.DB
14920 }
14921 c += a.s
14922 }
14923 r.s = (c < 0) ? -1 : 0
14924 if (c > 0) r[i++] = c
14925 else if (c < -1) r[i++] = self.DV + c
14926 r.t = i
14927 r.clamp()
14928 }
14929
14930 // (public) this + a
14931 function bnAdd(a) {
14932 var r = new BigInteger()
14933 this.addTo(a, r)
14934 return r
14935 }
14936
14937 // (public) this - a
14938 function bnSubtract(a) {
14939 var r = new BigInteger()
14940 this.subTo(a, r)
14941 return r
14942 }
14943
14944 // (public) this * a
14945 function bnMultiply(a) {
14946 var r = new BigInteger()
14947 this.multiplyTo(a, r)
14948 return r
14949 }
14950
14951 // (public) this^2
14952 function bnSquare() {
14953 var r = new BigInteger()
14954 this.squareTo(r)
14955 return r
14956 }
14957
14958 // (public) this / a
14959 function bnDivide(a) {
14960 var r = new BigInteger()
14961 this.divRemTo(a, r, null)
14962 return r
14963 }
14964
14965 // (public) this % a
14966 function bnRemainder(a) {
14967 var r = new BigInteger()
14968 this.divRemTo(a, null, r)
14969 return r
14970 }
14971
14972 // (public) [this/a,this%a]
14973 function bnDivideAndRemainder(a) {
14974 var q = new BigInteger(),
14975 r = new BigInteger()
14976 this.divRemTo(a, q, r)
14977 return new Array(q, r)
14978 }
14979
14980 // (protected) this *= n, this >= 0, 1 < n < DV
14981 function bnpDMultiply(n) {
14982 this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)
14983 ++this.t
14984 this.clamp()
14985 }
14986
14987 // (protected) this += n << w words, this >= 0
14988 function bnpDAddOffset(n, w) {
14989 if (n == 0) return
14990 while (this.t <= w) this[this.t++] = 0
14991 this[w] += n
14992 while (this[w] >= this.DV) {
14993 this[w] -= this.DV
14994 if (++w >= this.t) this[this.t++] = 0
14995 ++this[w]
14996 }
14997 }
14998
14999 // A "null" reducer
15000 function NullExp() {}
15001
15002 function nNop(x) {
15003 return x
15004 }
15005
15006 function nMulTo(x, y, r) {
15007 x.multiplyTo(y, r)
15008 }
15009
15010 function nSqrTo(x, r) {
15011 x.squareTo(r)
15012 }
15013
15014 NullExp.prototype.convert = nNop
15015 NullExp.prototype.revert = nNop
15016 NullExp.prototype.mulTo = nMulTo
15017 NullExp.prototype.sqrTo = nSqrTo
15018
15019 // (public) this^e
15020 function bnPow(e) {
15021 return this.exp(e, new NullExp())
15022 }
15023
15024 // (protected) r = lower n words of "this * a", a.t <= n
15025 // "this" should be the larger one if appropriate.
15026 function bnpMultiplyLowerTo(a, n, r) {
15027 var i = Math.min(this.t + a.t, n)
15028 r.s = 0; // assumes a,this >= 0
15029 r.t = i
15030 while (i > 0) r[--i] = 0
15031 var j
15032 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)
15033 for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)
15034 r.clamp()
15035 }
15036
15037 // (protected) r = "this * a" without lower n words, n > 0
15038 // "this" should be the larger one if appropriate.
15039 function bnpMultiplyUpperTo(a, n, r) {
15040 --n
15041 var i = r.t = this.t + a.t - n
15042 r.s = 0; // assumes a,this >= 0
15043 while (--i >= 0) r[i] = 0
15044 for (i = Math.max(n - this.t, 0); i < a.t; ++i)
15045 r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)
15046 r.clamp()
15047 r.drShiftTo(1, r)
15048 }
15049
15050 // Barrett modular reduction
15051 function Barrett(m) {
15052 // setup Barrett
15053 this.r2 = new BigInteger()
15054 this.q3 = new BigInteger()
15055 BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)
15056 this.mu = this.r2.divide(m)
15057 this.m = m
15058 }
15059
15060 function barrettConvert(x) {
15061 if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)
15062 else if (x.compareTo(this.m) < 0) return x
15063 else {
15064 var r = new BigInteger()
15065 x.copyTo(r)
15066 this.reduce(r)
15067 return r
15068 }
15069 }
15070
15071 function barrettRevert(x) {
15072 return x
15073 }
15074
15075 // x = x mod m (HAC 14.42)
15076 function barrettReduce(x) {
15077 var self = this
15078 x.drShiftTo(self.m.t - 1, self.r2)
15079 if (x.t > self.m.t + 1) {
15080 x.t = self.m.t + 1
15081 x.clamp()
15082 }
15083 self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)
15084 self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)
15085 while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)
15086 x.subTo(self.r2, x)
15087 while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)
15088 }
15089
15090 // r = x^2 mod m; x != r
15091 function barrettSqrTo(x, r) {
15092 x.squareTo(r)
15093 this.reduce(r)
15094 }
15095
15096 // r = x*y mod m; x,y != r
15097 function barrettMulTo(x, y, r) {
15098 x.multiplyTo(y, r)
15099 this.reduce(r)
15100 }
15101
15102 Barrett.prototype.convert = barrettConvert
15103 Barrett.prototype.revert = barrettRevert
15104 Barrett.prototype.reduce = barrettReduce
15105 Barrett.prototype.mulTo = barrettMulTo
15106 Barrett.prototype.sqrTo = barrettSqrTo
15107
15108 // (public) this^e % m (HAC 14.85)
15109 function bnModPow(e, m) {
15110 var i = e.bitLength(),
15111 k, r = nbv(1),
15112 z
15113 if (i <= 0) return r
15114 else if (i < 18) k = 1
15115 else if (i < 48) k = 3
15116 else if (i < 144) k = 4
15117 else if (i < 768) k = 5
15118 else k = 6
15119 if (i < 8)
15120 z = new Classic(m)
15121 else if (m.isEven())
15122 z = new Barrett(m)
15123 else
15124 z = new Montgomery(m)
15125
15126 // precomputation
15127 var g = new Array(),
15128 n = 3,
15129 k1 = k - 1,
15130 km = (1 << k) - 1
15131 g[1] = z.convert(this)
15132 if (k > 1) {
15133 var g2 = new BigInteger()
15134 z.sqrTo(g[1], g2)
15135 while (n <= km) {
15136 g[n] = new BigInteger()
15137 z.mulTo(g2, g[n - 2], g[n])
15138 n += 2
15139 }
15140 }
15141
15142 var j = e.t - 1,
15143 w, is1 = true,
15144 r2 = new BigInteger(),
15145 t
15146 i = nbits(e[j]) - 1
15147 while (j >= 0) {
15148 if (i >= k1) w = (e[j] >> (i - k1)) & km
15149 else {
15150 w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
15151 if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)
15152 }
15153
15154 n = k
15155 while ((w & 1) == 0) {
15156 w >>= 1
15157 --n
15158 }
15159 if ((i -= n) < 0) {
15160 i += this.DB
15161 --j
15162 }
15163 if (is1) { // ret == 1, don't bother squaring or multiplying it
15164 g[w].copyTo(r)
15165 is1 = false
15166 } else {
15167 while (n > 1) {
15168 z.sqrTo(r, r2)
15169 z.sqrTo(r2, r)
15170 n -= 2
15171 }
15172 if (n > 0) z.sqrTo(r, r2)
15173 else {
15174 t = r
15175 r = r2
15176 r2 = t
15177 }
15178 z.mulTo(r2, g[w], r)
15179 }
15180
15181 while (j >= 0 && (e[j] & (1 << i)) == 0) {
15182 z.sqrTo(r, r2)
15183 t = r
15184 r = r2
15185 r2 = t
15186 if (--i < 0) {
15187 i = this.DB - 1
15188 --j
15189 }
15190 }
15191 }
15192 return z.revert(r)
15193 }
15194
15195 // (public) gcd(this,a) (HAC 14.54)
15196 function bnGCD(a) {
15197 var x = (this.s < 0) ? this.negate() : this.clone()
15198 var y = (a.s < 0) ? a.negate() : a.clone()
15199 if (x.compareTo(y) < 0) {
15200 var t = x
15201 x = y
15202 y = t
15203 }
15204 var i = x.getLowestSetBit(),
15205 g = y.getLowestSetBit()
15206 if (g < 0) return x
15207 if (i < g) g = i
15208 if (g > 0) {
15209 x.rShiftTo(g, x)
15210 y.rShiftTo(g, y)
15211 }
15212 while (x.signum() > 0) {
15213 if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)
15214 if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)
15215 if (x.compareTo(y) >= 0) {
15216 x.subTo(y, x)
15217 x.rShiftTo(1, x)
15218 } else {
15219 y.subTo(x, y)
15220 y.rShiftTo(1, y)
15221 }
15222 }
15223 if (g > 0) y.lShiftTo(g, y)
15224 return y
15225 }
15226
15227 // (protected) this % n, n < 2^26
15228 function bnpModInt(n) {
15229 if (n <= 0) return 0
15230 var d = this.DV % n,
15231 r = (this.s < 0) ? n - 1 : 0
15232 if (this.t > 0)
15233 if (d == 0) r = this[0] % n
15234 else
15235 for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n
15236 return r
15237 }
15238
15239 // (public) 1/this % m (HAC 14.61)
15240 function bnModInverse(m) {
15241 var ac = m.isEven()
15242 if (this.signum() === 0) throw new Error('division by zero')
15243 if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO
15244 var u = m.clone(),
15245 v = this.clone()
15246 var a = nbv(1),
15247 b = nbv(0),
15248 c = nbv(0),
15249 d = nbv(1)
15250 while (u.signum() != 0) {
15251 while (u.isEven()) {
15252 u.rShiftTo(1, u)
15253 if (ac) {
15254 if (!a.isEven() || !b.isEven()) {
15255 a.addTo(this, a)
15256 b.subTo(m, b)
15257 }
15258 a.rShiftTo(1, a)
15259 } else if (!b.isEven()) b.subTo(m, b)
15260 b.rShiftTo(1, b)
15261 }
15262 while (v.isEven()) {
15263 v.rShiftTo(1, v)
15264 if (ac) {
15265 if (!c.isEven() || !d.isEven()) {
15266 c.addTo(this, c)
15267 d.subTo(m, d)
15268 }
15269 c.rShiftTo(1, c)
15270 } else if (!d.isEven()) d.subTo(m, d)
15271 d.rShiftTo(1, d)
15272 }
15273 if (u.compareTo(v) >= 0) {
15274 u.subTo(v, u)
15275 if (ac) a.subTo(c, a)
15276 b.subTo(d, b)
15277 } else {
15278 v.subTo(u, v)
15279 if (ac) c.subTo(a, c)
15280 d.subTo(b, d)
15281 }
15282 }
15283 if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO
15284 while (d.compareTo(m) >= 0) d.subTo(m, d)
15285 while (d.signum() < 0) d.addTo(m, d)
15286 return d
15287 }
15288
15289 var lowprimes = [
15290 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
15291 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
15292 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
15293 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
15294 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
15295 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
15296 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
15297 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
15298 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
15299 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
15300 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
15301 ]
15302
15303 var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
15304
15305 // (public) test primality with certainty >= 1-.5^t
15306 function bnIsProbablePrime(t) {
15307 var i, x = this.abs()
15308 if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
15309 for (i = 0; i < lowprimes.length; ++i)
15310 if (x[0] == lowprimes[i]) return true
15311 return false
15312 }
15313 if (x.isEven()) return false
15314 i = 1
15315 while (i < lowprimes.length) {
15316 var m = lowprimes[i],
15317 j = i + 1
15318 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
15319 m = x.modInt(m)
15320 while (i < j) if (m % lowprimes[i++] == 0) return false
15321 }
15322 return x.millerRabin(t)
15323 }
15324
15325 // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
15326 function bnpMillerRabin(t) {
15327 var n1 = this.subtract(BigInteger.ONE)
15328 var k = n1.getLowestSetBit()
15329 if (k <= 0) return false
15330 var r = n1.shiftRight(k)
15331 t = (t + 1) >> 1
15332 if (t > lowprimes.length) t = lowprimes.length
15333 var a = new BigInteger(null)
15334 var j, bases = []
15335 for (var i = 0; i < t; ++i) {
15336 for (;;) {
15337 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
15338 if (bases.indexOf(j) == -1) break
15339 }
15340 bases.push(j)
15341 a.fromInt(j)
15342 var y = a.modPow(r, this)
15343 if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
15344 var j = 1
15345 while (j++ < k && y.compareTo(n1) != 0) {
15346 y = y.modPowInt(2, this)
15347 if (y.compareTo(BigInteger.ONE) == 0) return false
15348 }
15349 if (y.compareTo(n1) != 0) return false
15350 }
15351 }
15352 return true
15353 }
15354
15355 // protected
15356 proto.chunkSize = bnpChunkSize
15357 proto.toRadix = bnpToRadix
15358 proto.fromRadix = bnpFromRadix
15359 proto.fromNumber = bnpFromNumber
15360 proto.bitwiseTo = bnpBitwiseTo
15361 proto.changeBit = bnpChangeBit
15362 proto.addTo = bnpAddTo
15363 proto.dMultiply = bnpDMultiply
15364 proto.dAddOffset = bnpDAddOffset
15365 proto.multiplyLowerTo = bnpMultiplyLowerTo
15366 proto.multiplyUpperTo = bnpMultiplyUpperTo
15367 proto.modInt = bnpModInt
15368 proto.millerRabin = bnpMillerRabin
15369
15370 // public
15371 proto.clone = bnClone
15372 proto.intValue = bnIntValue
15373 proto.byteValue = bnByteValue
15374 proto.shortValue = bnShortValue
15375 proto.signum = bnSigNum
15376 proto.toByteArray = bnToByteArray
15377 proto.equals = bnEquals
15378 proto.min = bnMin
15379 proto.max = bnMax
15380 proto.and = bnAnd
15381 proto.or = bnOr
15382 proto.xor = bnXor
15383 proto.andNot = bnAndNot
15384 proto.not = bnNot
15385 proto.shiftLeft = bnShiftLeft
15386 proto.shiftRight = bnShiftRight
15387 proto.getLowestSetBit = bnGetLowestSetBit
15388 proto.bitCount = bnBitCount
15389 proto.testBit = bnTestBit
15390 proto.setBit = bnSetBit
15391 proto.clearBit = bnClearBit
15392 proto.flipBit = bnFlipBit
15393 proto.add = bnAdd
15394 proto.subtract = bnSubtract
15395 proto.multiply = bnMultiply
15396 proto.divide = bnDivide
15397 proto.remainder = bnRemainder
15398 proto.divideAndRemainder = bnDivideAndRemainder
15399 proto.modPow = bnModPow
15400 proto.modInverse = bnModInverse
15401 proto.pow = bnPow
15402 proto.gcd = bnGCD
15403 proto.isProbablePrime = bnIsProbablePrime
15404
15405 // JSBN-specific extension
15406 proto.square = bnSquare
15407
15408 // constants
15409 BigInteger.ZERO = nbv(0)
15410 BigInteger.ONE = nbv(1)
15411 BigInteger.valueOf = nbv
15412
15413 module.exports = BigInteger
15414
15415 },{"../package.json":38}],36:[function(require,module,exports){
15416 (function (Buffer){
15417 // FIXME: Kind of a weird way to throw exceptions, consider removing
15418 var assert = require('assert')
15419 var BigInteger = require('./bigi')
15420
15421 /**
15422 * Turns a byte array into a big integer.
15423 *
15424 * This function will interpret a byte array as a big integer in big
15425 * endian notation.
15426 */
15427 BigInteger.fromByteArrayUnsigned = function(byteArray) {
15428 // BigInteger expects a DER integer conformant byte array
15429 if (byteArray[0] & 0x80) {
15430 return new BigInteger([0].concat(byteArray))
15431 }
15432
15433 return new BigInteger(byteArray)
15434 }
15435
15436 /**
15437 * Returns a byte array representation of the big integer.
15438 *
15439 * This returns the absolute of the contained value in big endian
15440 * form. A value of zero results in an empty array.
15441 */
15442 BigInteger.prototype.toByteArrayUnsigned = function() {
15443 var byteArray = this.toByteArray()
15444 return byteArray[0] === 0 ? byteArray.slice(1) : byteArray
15445 }
15446
15447 BigInteger.fromDERInteger = function(byteArray) {
15448 return new BigInteger(byteArray)
15449 }
15450
15451 /*
15452 * Converts BigInteger to a DER integer representation.
15453 *
15454 * The format for this value uses the most significant bit as a sign
15455 * bit. If the most significant bit is already set and the integer is
15456 * positive, a 0x00 is prepended.
15457 *
15458 * Examples:
15459 *
15460 * 0 => 0x00
15461 * 1 => 0x01
15462 * -1 => 0xff
15463 * 127 => 0x7f
15464 * -127 => 0x81
15465 * 128 => 0x0080
15466 * -128 => 0x80
15467 * 255 => 0x00ff
15468 * -255 => 0xff01
15469 * 16300 => 0x3fac
15470 * -16300 => 0xc054
15471 * 62300 => 0x00f35c
15472 * -62300 => 0xff0ca4
15473 */
15474 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
15475
15476 BigInteger.fromBuffer = function(buffer) {
15477 // BigInteger expects a DER integer conformant byte array
15478 if (buffer[0] & 0x80) {
15479 var byteArray = Array.prototype.slice.call(buffer)
15480
15481 return new BigInteger([0].concat(byteArray))
15482 }
15483
15484 return new BigInteger(buffer)
15485 }
15486
15487 BigInteger.fromHex = function(hex) {
15488 if (hex === '') return BigInteger.ZERO
15489
15490 assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')
15491 assert.equal(hex.length % 2, 0, 'Incomplete hex')
15492 return new BigInteger(hex, 16)
15493 }
15494
15495 BigInteger.prototype.toBuffer = function(size) {
15496 var byteArray = this.toByteArrayUnsigned()
15497 var zeros = []
15498
15499 var padding = size - byteArray.length
15500 while (zeros.length < padding) zeros.push(0)
15501
15502 return new Buffer(zeros.concat(byteArray))
15503 }
15504
15505 BigInteger.prototype.toHex = function(size) {
15506 return this.toBuffer(size).toString('hex')
15507 }
15508
15509 }).call(this,require("buffer").Buffer)
15510 },{"./bigi":35,"assert":1,"buffer":4}],37:[function(require,module,exports){
15511 var BigInteger = require('./bigi')
15512
15513 //addons
15514 require('./convert')
15515
15516 module.exports = BigInteger
15517 },{"./bigi":35,"./convert":36}],38:[function(require,module,exports){
15518 module.exports={
15519 "_args": [
15520 [
15521 "bigi",
15522 "/home/ian/git/bitcoin/bitcoinjs-lib-browser"
15523 ]
15524 ],
15525 "_from": "bigi@latest",
15526 "_id": "bigi@1.4.2",
15527 "_inCache": true,
15528 "_installable": true,
15529 "_location": "/bigi",
15530 "_nodeVersion": "6.1.0",
15531 "_npmOperationalInternal": {
15532 "host": "packages-12-west.internal.npmjs.com",
15533 "tmp": "tmp/bigi-1.4.2.tgz_1469584192413_0.6801238611806184"
15534 },
15535 "_npmUser": {
15536 "email": "jprichardson@gmail.com",
15537 "name": "jprichardson"
15538 },
15539 "_npmVersion": "3.8.6",
15540 "_phantomChildren": {},
15541 "_requested": {
15542 "name": "bigi",
15543 "raw": "bigi",
15544 "rawSpec": "",
15545 "scope": null,
15546 "spec": "latest",
15547 "type": "tag"
15548 },
15549 "_requiredBy": [
15550 "#USER",
15551 "/bitcoinjs-lib",
15552 "/ecurve"
15553 ],
15554 "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz",
15555 "_shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
15556 "_shrinkwrap": null,
15557 "_spec": "bigi",
15558 "_where": "/home/ian/git/bitcoin/bitcoinjs-lib-browser",
15559 "bugs": {
15560 "url": "https://github.com/cryptocoinjs/bigi/issues"
15561 },
15562 "dependencies": {},
15563 "description": "Big integers.",
15564 "devDependencies": {
15565 "coveralls": "^2.11.2",
15566 "istanbul": "^0.3.5",
15567 "jshint": "^2.5.1",
15568 "mocha": "^2.1.0",
15569 "mochify": "^2.1.0"
15570 },
15571 "directories": {},
15572 "dist": {
15573 "shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
15574 "tarball": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz"
15575 },
15576 "gitHead": "c25308081c896ff84702303722bf5ecd8b3f78e3",
15577 "homepage": "https://github.com/cryptocoinjs/bigi#readme",
15578 "keywords": [
15579 "cryptography",
15580 "math",
15581 "bitcoin",
15582 "arbitrary",
15583 "precision",
15584 "arithmetic",
15585 "big",
15586 "integer",
15587 "int",
15588 "number",
15589 "biginteger",
15590 "bigint",
15591 "bignumber",
15592 "decimal",
15593 "float"
15594 ],
15595 "main": "./lib/index.js",
15596 "maintainers": [
15597 {
15598 "email": "boydb@midnightdesign.ws",
15599 "name": "midnightlightning"
15600 },
15601 {
15602 "email": "sidazhang89@gmail.com",
15603 "name": "sidazhang"
15604 },
15605 {
15606 "email": "npm@shesek.info",
15607 "name": "nadav"
15608 },
15609 {
15610 "email": "jprichardson@gmail.com",
15611 "name": "jprichardson"
15612 }
15613 ],
15614 "name": "bigi",
15615 "optionalDependencies": {},
15616 "readme": "ERROR: No README data found!",
15617 "repository": {
15618 "type": "git",
15619 "url": "git+https://github.com/cryptocoinjs/bigi.git"
15620 },
15621 "scripts": {
15622 "browser-test": "mochify --wd -R spec",
15623 "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
15624 "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info",
15625 "jshint": "jshint --config jshint.json lib/*.js ; true",
15626 "test": "_mocha -- test/*.js",
15627 "unit": "mocha"
15628 },
15629 "testling": {
15630 "browsers": [
15631 "ie/9..latest",
15632 "firefox/latest",
15633 "chrome/latest",
15634 "safari/6.0..latest",
15635 "iphone/6.0..latest",
15636 "android-browser/4.2..latest"
15637 ],
15638 "files": "test/*.js",
15639 "harness": "mocha"
15640 },
15641 "version": "1.4.2"
15642 }
15643
15644 },{}],39:[function(require,module,exports){
15645 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
15646 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
15647 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
15648
15649 var Buffer = require('safe-buffer').Buffer
15650
15651 function check (buffer) {
15652 if (buffer.length < 8) return false
15653 if (buffer.length > 72) return false
15654 if (buffer[0] !== 0x30) return false
15655 if (buffer[1] !== buffer.length - 2) return false
15656 if (buffer[2] !== 0x02) return false
15657
15658 var lenR = buffer[3]
15659 if (lenR === 0) return false
15660 if (5 + lenR >= buffer.length) return false
15661 if (buffer[4 + lenR] !== 0x02) return false
15662
15663 var lenS = buffer[5 + lenR]
15664 if (lenS === 0) return false
15665 if ((6 + lenR + lenS) !== buffer.length) return false
15666
15667 if (buffer[4] & 0x80) return false
15668 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
15669
15670 if (buffer[lenR + 6] & 0x80) return false
15671 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
15672 return true
15673 }
15674
15675 function decode (buffer) {
15676 if (buffer.length < 8) throw new Error('DER sequence length is too short')
15677 if (buffer.length > 72) throw new Error('DER sequence length is too long')
15678 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
15679 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
15680 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
15681
15682 var lenR = buffer[3]
15683 if (lenR === 0) throw new Error('R length is zero')
15684 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
15685 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
15686
15687 var lenS = buffer[5 + lenR]
15688 if (lenS === 0) throw new Error('S length is zero')
15689 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
15690
15691 if (buffer[4] & 0x80) throw new Error('R value is negative')
15692 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
15693
15694 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
15695 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
15696
15697 // non-BIP66 - extract R, S values
15698 return {
15699 r: buffer.slice(4, 4 + lenR),
15700 s: buffer.slice(6 + lenR)
15701 }
15702 }
15703
15704 /*
15705 * Expects r and s to be positive DER integers.
15706 *
15707 * The DER format uses the most significant bit as a sign bit (& 0x80).
15708 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
15709 *
15710 * Examples:
15711 *
15712 * 0 => 0x00
15713 * 1 => 0x01
15714 * -1 => 0xff
15715 * 127 => 0x7f
15716 * -127 => 0x81
15717 * 128 => 0x0080
15718 * -128 => 0x80
15719 * 255 => 0x00ff
15720 * -255 => 0xff01
15721 * 16300 => 0x3fac
15722 * -16300 => 0xc054
15723 * 62300 => 0x00f35c
15724 * -62300 => 0xff0ca4
15725 */
15726 function encode (r, s) {
15727 var lenR = r.length
15728 var lenS = s.length
15729 if (lenR === 0) throw new Error('R length is zero')
15730 if (lenS === 0) throw new Error('S length is zero')
15731 if (lenR > 33) throw new Error('R length is too long')
15732 if (lenS > 33) throw new Error('S length is too long')
15733 if (r[0] & 0x80) throw new Error('R value is negative')
15734 if (s[0] & 0x80) throw new Error('S value is negative')
15735 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
15736 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
15737
15738 var signature = Buffer.allocUnsafe(6 + lenR + lenS)
15739
15740 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
15741 signature[0] = 0x30
15742 signature[1] = signature.length - 2
15743 signature[2] = 0x02
15744 signature[3] = r.length
15745 r.copy(signature, 4)
15746 signature[4 + lenR] = 0x02
15747 signature[5 + lenR] = s.length
15748 s.copy(signature, 6 + lenR)
15749
15750 return signature
15751 }
15752
15753 module.exports = {
15754 check: check,
15755 decode: decode,
15756 encode: encode
15757 }
15758
15759 },{"safe-buffer":98}],40:[function(require,module,exports){
15760 module.exports={
15761 "OP_FALSE": 0,
15762 "OP_0": 0,
15763 "OP_PUSHDATA1": 76,
15764 "OP_PUSHDATA2": 77,
15765 "OP_PUSHDATA4": 78,
15766 "OP_1NEGATE": 79,
15767 "OP_RESERVED": 80,
15768 "OP_1": 81,
15769 "OP_TRUE": 81,
15770 "OP_2": 82,
15771 "OP_3": 83,
15772 "OP_4": 84,
15773 "OP_5": 85,
15774 "OP_6": 86,
15775 "OP_7": 87,
15776 "OP_8": 88,
15777 "OP_9": 89,
15778 "OP_10": 90,
15779 "OP_11": 91,
15780 "OP_12": 92,
15781 "OP_13": 93,
15782 "OP_14": 94,
15783 "OP_15": 95,
15784 "OP_16": 96,
15785
15786 "OP_NOP": 97,
15787 "OP_VER": 98,
15788 "OP_IF": 99,
15789 "OP_NOTIF": 100,
15790 "OP_VERIF": 101,
15791 "OP_VERNOTIF": 102,
15792 "OP_ELSE": 103,
15793 "OP_ENDIF": 104,
15794 "OP_VERIFY": 105,
15795 "OP_RETURN": 106,
15796
15797 "OP_TOALTSTACK": 107,
15798 "OP_FROMALTSTACK": 108,
15799 "OP_2DROP": 109,
15800 "OP_2DUP": 110,
15801 "OP_3DUP": 111,
15802 "OP_2OVER": 112,
15803 "OP_2ROT": 113,
15804 "OP_2SWAP": 114,
15805 "OP_IFDUP": 115,
15806 "OP_DEPTH": 116,
15807 "OP_DROP": 117,
15808 "OP_DUP": 118,
15809 "OP_NIP": 119,
15810 "OP_OVER": 120,
15811 "OP_PICK": 121,
15812 "OP_ROLL": 122,
15813 "OP_ROT": 123,
15814 "OP_SWAP": 124,
15815 "OP_TUCK": 125,
15816
15817 "OP_CAT": 126,
15818 "OP_SUBSTR": 127,
15819 "OP_LEFT": 128,
15820 "OP_RIGHT": 129,
15821 "OP_SIZE": 130,
15822
15823 "OP_INVERT": 131,
15824 "OP_AND": 132,
15825 "OP_OR": 133,
15826 "OP_XOR": 134,
15827 "OP_EQUAL": 135,
15828 "OP_EQUALVERIFY": 136,
15829 "OP_RESERVED1": 137,
15830 "OP_RESERVED2": 138,
15831
15832 "OP_1ADD": 139,
15833 "OP_1SUB": 140,
15834 "OP_2MUL": 141,
15835 "OP_2DIV": 142,
15836 "OP_NEGATE": 143,
15837 "OP_ABS": 144,
15838 "OP_NOT": 145,
15839 "OP_0NOTEQUAL": 146,
15840 "OP_ADD": 147,
15841 "OP_SUB": 148,
15842 "OP_MUL": 149,
15843 "OP_DIV": 150,
15844 "OP_MOD": 151,
15845 "OP_LSHIFT": 152,
15846 "OP_RSHIFT": 153,
15847
15848 "OP_BOOLAND": 154,
15849 "OP_BOOLOR": 155,
15850 "OP_NUMEQUAL": 156,
15851 "OP_NUMEQUALVERIFY": 157,
15852 "OP_NUMNOTEQUAL": 158,
15853 "OP_LESSTHAN": 159,
15854 "OP_GREATERTHAN": 160,
15855 "OP_LESSTHANOREQUAL": 161,
15856 "OP_GREATERTHANOREQUAL": 162,
15857 "OP_MIN": 163,
15858 "OP_MAX": 164,
15859
15860 "OP_WITHIN": 165,
15861
15862 "OP_RIPEMD160": 166,
15863 "OP_SHA1": 167,
15864 "OP_SHA256": 168,
15865 "OP_HASH160": 169,
15866 "OP_HASH256": 170,
15867 "OP_CODESEPARATOR": 171,
15868 "OP_CHECKSIG": 172,
15869 "OP_CHECKSIGVERIFY": 173,
15870 "OP_CHECKMULTISIG": 174,
15871 "OP_CHECKMULTISIGVERIFY": 175,
15872
15873 "OP_NOP1": 176,
15874 "OP_NOP2": 177,
15875 "OP_CHECKLOCKTIMEVERIFY": 177,
15876
15877 "OP_NOP3": 178,
15878 "OP_NOP4": 179,
15879 "OP_NOP5": 180,
15880 "OP_NOP6": 181,
15881 "OP_NOP7": 182,
15882 "OP_NOP8": 183,
15883 "OP_NOP9": 184,
15884 "OP_NOP10": 185,
15885
15886 "OP_PUBKEYHASH": 253,
15887 "OP_PUBKEY": 254,
15888 "OP_INVALIDOPCODE": 255
15889 }
15890
15891 },{}],41:[function(require,module,exports){
15892 var OPS = require('./index.json')
15893
15894 var map = {}
15895 for (var op in OPS) {
15896 var code = OPS[op]
15897 map[code] = op
15898 }
15899
15900 module.exports = map
15901
15902 },{"./index.json":40}],42:[function(require,module,exports){
15903 var Buffer = require('safe-buffer').Buffer
15904 var bs58check = require('bs58check')
15905 var bscript = require('./script')
15906 var networks = require('./networks')
15907 var typeforce = require('typeforce')
15908 var types = require('./types')
15909
15910 function fromBase58Check (address) {
15911 var payload = bs58check.decode(address)
15912 if (payload.length < 21) throw new TypeError(address + ' is too short')
15913 if (payload.length > 21) throw new TypeError(address + ' is too long')
15914
15915 var version = payload.readUInt8(0)
15916 var hash = payload.slice(1)
15917
15918 return { hash: hash, version: version }
15919 }
15920
15921 function toBase58Check (hash, version) {
15922 typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments)
15923
15924 var payload = Buffer.allocUnsafe(21)
15925 payload.writeUInt8(version, 0)
15926 hash.copy(payload, 1)
15927
15928 return bs58check.encode(payload)
15929 }
15930
15931 function fromOutputScript (outputScript, network) {
15932 network = network || networks.bitcoin
15933
15934 if (bscript.pubKeyHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(3, 23), network.pubKeyHash)
15935 if (bscript.scriptHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(2, 22), network.scriptHash)
15936
15937 throw new Error(bscript.toASM(outputScript) + ' has no matching Address')
15938 }
15939
15940 function toOutputScript (address, network) {
15941 network = network || networks.bitcoin
15942
15943 var decode = fromBase58Check(address)
15944 if (decode.version === network.pubKeyHash) return bscript.pubKeyHash.output.encode(decode.hash)
15945 if (decode.version === network.scriptHash) return bscript.scriptHash.output.encode(decode.hash)
15946
15947 throw new Error(address + ' has no matching Script')
15948 }
15949
15950 module.exports = {
15951 fromBase58Check: fromBase58Check,
15952 fromOutputScript: fromOutputScript,
15953 toBase58Check: toBase58Check,
15954 toOutputScript: toOutputScript
15955 }
15956
15957 },{"./networks":51,"./script":52,"./types":78,"bs58check":80,"safe-buffer":98,"typeforce":109}],43:[function(require,module,exports){
15958 var Buffer = require('safe-buffer').Buffer
15959 var bcrypto = require('./crypto')
15960 var fastMerkleRoot = require('merkle-lib/fastRoot')
15961 var typeforce = require('typeforce')
15962 var types = require('./types')
15963 var varuint = require('varuint-bitcoin')
15964
15965 var Transaction = require('./transaction')
15966
15967 function Block () {
15968 this.version = 1
15969 this.prevHash = null
15970 this.merkleRoot = null
15971 this.timestamp = 0
15972 this.bits = 0
15973 this.nonce = 0
15974 }
15975
15976 Block.fromBuffer = function (buffer) {
15977 if (buffer.length < 80) throw new Error('Buffer too small (< 80 bytes)')
15978
15979 var offset = 0
15980 function readSlice (n) {
15981 offset += n
15982 return buffer.slice(offset - n, offset)
15983 }
15984
15985 function readUInt32 () {
15986 var i = buffer.readUInt32LE(offset)
15987 offset += 4
15988 return i
15989 }
15990
15991 function readInt32 () {
15992 var i = buffer.readInt32LE(offset)
15993 offset += 4
15994 return i
15995 }
15996
15997 var block = new Block()
15998 block.version = readInt32()
15999 block.prevHash = readSlice(32)
16000 block.merkleRoot = readSlice(32)
16001 block.timestamp = readUInt32()
16002 block.bits = readUInt32()
16003 block.nonce = readUInt32()
16004
16005 if (buffer.length === 80) return block
16006
16007 function readVarInt () {
16008 var vi = varuint.decode(buffer, offset)
16009 offset += varuint.decode.bytes
16010 return vi
16011 }
16012
16013 function readTransaction () {
16014 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
16015 offset += tx.byteLength()
16016 return tx
16017 }
16018
16019 var nTransactions = readVarInt()
16020 block.transactions = []
16021
16022 for (var i = 0; i < nTransactions; ++i) {
16023 var tx = readTransaction()
16024 block.transactions.push(tx)
16025 }
16026
16027 return block
16028 }
16029
16030 Block.prototype.byteLength = function (headersOnly) {
16031 if (headersOnly || !this.transactions) return 80
16032
16033 return 80 + varuint.encodingLength(this.transactions.length) + this.transactions.reduce(function (a, x) {
16034 return a + x.byteLength()
16035 }, 0)
16036 }
16037
16038 Block.fromHex = function (hex) {
16039 return Block.fromBuffer(Buffer.from(hex, 'hex'))
16040 }
16041
16042 Block.prototype.getHash = function () {
16043 return bcrypto.hash256(this.toBuffer(true))
16044 }
16045
16046 Block.prototype.getId = function () {
16047 return this.getHash().reverse().toString('hex')
16048 }
16049
16050 Block.prototype.getUTCDate = function () {
16051 var date = new Date(0) // epoch
16052 date.setUTCSeconds(this.timestamp)
16053
16054 return date
16055 }
16056
16057 // TODO: buffer, offset compatibility
16058 Block.prototype.toBuffer = function (headersOnly) {
16059 var buffer = Buffer.allocUnsafe(this.byteLength(headersOnly))
16060
16061 var offset = 0
16062 function writeSlice (slice) {
16063 slice.copy(buffer, offset)
16064 offset += slice.length
16065 }
16066
16067 function writeInt32 (i) {
16068 buffer.writeInt32LE(i, offset)
16069 offset += 4
16070 }
16071 function writeUInt32 (i) {
16072 buffer.writeUInt32LE(i, offset)
16073 offset += 4
16074 }
16075
16076 writeInt32(this.version)
16077 writeSlice(this.prevHash)
16078 writeSlice(this.merkleRoot)
16079 writeUInt32(this.timestamp)
16080 writeUInt32(this.bits)
16081 writeUInt32(this.nonce)
16082
16083 if (headersOnly || !this.transactions) return buffer
16084
16085 varuint.encode(this.transactions.length, buffer, offset)
16086 offset += varuint.encode.bytes
16087
16088 this.transactions.forEach(function (tx) {
16089 var txSize = tx.byteLength() // TODO: extract from toBuffer?
16090 tx.toBuffer(buffer, offset)
16091 offset += txSize
16092 })
16093
16094 return buffer
16095 }
16096
16097 Block.prototype.toHex = function (headersOnly) {
16098 return this.toBuffer(headersOnly).toString('hex')
16099 }
16100
16101 Block.calculateTarget = function (bits) {
16102 var exponent = ((bits & 0xff000000) >> 24) - 3
16103 var mantissa = bits & 0x007fffff
16104 var target = Buffer.alloc(32, 0)
16105 target.writeUInt32BE(mantissa, 28 - exponent)
16106 return target
16107 }
16108
16109 Block.calculateMerkleRoot = function (transactions) {
16110 typeforce([{ getHash: types.Function }], transactions)
16111 if (transactions.length === 0) throw TypeError('Cannot compute merkle root for zero transactions')
16112
16113 var hashes = transactions.map(function (transaction) {
16114 return transaction.getHash()
16115 })
16116
16117 return fastMerkleRoot(hashes, bcrypto.hash256)
16118 }
16119
16120 Block.prototype.checkMerkleRoot = function () {
16121 if (!this.transactions) return false
16122
16123 var actualMerkleRoot = Block.calculateMerkleRoot(this.transactions)
16124 return this.merkleRoot.compare(actualMerkleRoot) === 0
16125 }
16126
16127 Block.prototype.checkProofOfWork = function () {
16128 var hash = this.getHash().reverse()
16129 var target = Block.calculateTarget(this.bits)
16130
16131 return hash.compare(target) <= 0
16132 }
16133
16134 module.exports = Block
16135
16136 },{"./crypto":45,"./transaction":76,"./types":78,"merkle-lib/fastRoot":94,"safe-buffer":98,"typeforce":109,"varuint-bitcoin":111}],44:[function(require,module,exports){
16137 var pushdata = require('pushdata-bitcoin')
16138 var varuint = require('varuint-bitcoin')
16139
16140 // https://github.com/feross/buffer/blob/master/index.js#L1127
16141 function verifuint (value, max) {
16142 if (typeof value !== 'number') throw new Error('cannot write a non-number as a number')
16143 if (value < 0) throw new Error('specified a negative value for writing an unsigned value')
16144 if (value > max) throw new Error('RangeError: value out of range')
16145 if (Math.floor(value) !== value) throw new Error('value has a fractional component')
16146 }
16147
16148 function readUInt64LE (buffer, offset) {
16149 var a = buffer.readUInt32LE(offset)
16150 var b = buffer.readUInt32LE(offset + 4)
16151 b *= 0x100000000
16152
16153 verifuint(b + a, 0x001fffffffffffff)
16154
16155 return b + a
16156 }
16157
16158 function writeUInt64LE (buffer, value, offset) {
16159 verifuint(value, 0x001fffffffffffff)
16160
16161 buffer.writeInt32LE(value & -1, offset)
16162 buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4)
16163 return offset + 8
16164 }
16165
16166 // TODO: remove in 4.0.0?
16167 function readVarInt (buffer, offset) {
16168 var result = varuint.decode(buffer, offset)
16169
16170 return {
16171 number: result,
16172 size: varuint.decode.bytes
16173 }
16174 }
16175
16176 // TODO: remove in 4.0.0?
16177 function writeVarInt (buffer, number, offset) {
16178 varuint.encode(number, buffer, offset)
16179 return varuint.encode.bytes
16180 }
16181
16182 module.exports = {
16183 pushDataSize: pushdata.encodingLength,
16184 readPushDataInt: pushdata.decode,
16185 readUInt64LE: readUInt64LE,
16186 readVarInt: readVarInt,
16187 varIntBuffer: varuint.encode,
16188 varIntSize: varuint.encodingLength,
16189 writePushDataInt: pushdata.encode,
16190 writeUInt64LE: writeUInt64LE,
16191 writeVarInt: writeVarInt
16192 }
16193
16194 },{"pushdata-bitcoin":95,"varuint-bitcoin":111}],45:[function(require,module,exports){
16195 var createHash = require('create-hash')
16196
16197 function ripemd160 (buffer) {
16198 return createHash('rmd160').update(buffer).digest()
16199 }
16200
16201 function sha1 (buffer) {
16202 return createHash('sha1').update(buffer).digest()
16203 }
16204
16205 function sha256 (buffer) {
16206 return createHash('sha256').update(buffer).digest()
16207 }
16208
16209 function hash160 (buffer) {
16210 return ripemd160(sha256(buffer))
16211 }
16212
16213 function hash256 (buffer) {
16214 return sha256(sha256(buffer))
16215 }
16216
16217 module.exports = {
16218 hash160: hash160,
16219 hash256: hash256,
16220 ripemd160: ripemd160,
16221 sha1: sha1,
16222 sha256: sha256
16223 }
16224
16225 },{"create-hash":82}],46:[function(require,module,exports){
16226 var Buffer = require('safe-buffer').Buffer
16227 var createHmac = require('create-hmac')
16228 var typeforce = require('typeforce')
16229 var types = require('./types')
16230
16231 var BigInteger = require('bigi')
16232 var ECSignature = require('./ecsignature')
16233
16234 var ZERO = Buffer.alloc(1, 0)
16235 var ONE = Buffer.alloc(1, 1)
16236
16237 var ecurve = require('ecurve')
16238 var secp256k1 = ecurve.getCurveByName('secp256k1')
16239
16240 // https://tools.ietf.org/html/rfc6979#section-3.2
16241 function deterministicGenerateK (hash, x, checkSig) {
16242 typeforce(types.tuple(
16243 types.Hash256bit,
16244 types.Buffer256bit,
16245 types.Function
16246 ), arguments)
16247
16248 // Step A, ignored as hash already provided
16249 // Step B
16250 // Step C
16251 var k = Buffer.alloc(32, 0)
16252 var v = Buffer.alloc(32, 1)
16253
16254 // Step D
16255 k = createHmac('sha256', k)
16256 .update(v)
16257 .update(ZERO)
16258 .update(x)
16259 .update(hash)
16260 .digest()
16261
16262 // Step E
16263 v = createHmac('sha256', k).update(v).digest()
16264
16265 // Step F
16266 k = createHmac('sha256', k)
16267 .update(v)
16268 .update(ONE)
16269 .update(x)
16270 .update(hash)
16271 .digest()
16272
16273 // Step G
16274 v = createHmac('sha256', k).update(v).digest()
16275
16276 // Step H1/H2a, ignored as tlen === qlen (256 bit)
16277 // Step H2b
16278 v = createHmac('sha256', k).update(v).digest()
16279
16280 var T = BigInteger.fromBuffer(v)
16281
16282 // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA
16283 while (T.signum() <= 0 || T.compareTo(secp256k1.n) >= 0 || !checkSig(T)) {
16284 k = createHmac('sha256', k)
16285 .update(v)
16286 .update(ZERO)
16287 .digest()
16288
16289 v = createHmac('sha256', k).update(v).digest()
16290
16291 // Step H1/H2a, again, ignored as tlen === qlen (256 bit)
16292 // Step H2b again
16293 v = createHmac('sha256', k).update(v).digest()
16294 T = BigInteger.fromBuffer(v)
16295 }
16296
16297 return T
16298 }
16299
16300 var N_OVER_TWO = secp256k1.n.shiftRight(1)
16301
16302 function sign (hash, d) {
16303 typeforce(types.tuple(types.Hash256bit, types.BigInt), arguments)
16304
16305 var x = d.toBuffer(32)
16306 var e = BigInteger.fromBuffer(hash)
16307 var n = secp256k1.n
16308 var G = secp256k1.G
16309
16310 var r, s
16311 deterministicGenerateK(hash, x, function (k) {
16312 var Q = G.multiply(k)
16313
16314 if (secp256k1.isInfinity(Q)) return false
16315
16316 r = Q.affineX.mod(n)
16317 if (r.signum() === 0) return false
16318
16319 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
16320 if (s.signum() === 0) return false
16321
16322 return true
16323 })
16324
16325 // enforce low S values, see bip62: 'low s values in signatures'
16326 if (s.compareTo(N_OVER_TWO) > 0) {
16327 s = n.subtract(s)
16328 }
16329
16330 return new ECSignature(r, s)
16331 }
16332
16333 function verify (hash, signature, Q) {
16334 typeforce(types.tuple(
16335 types.Hash256bit,
16336 types.ECSignature,
16337 types.ECPoint
16338 ), arguments)
16339
16340 var n = secp256k1.n
16341 var G = secp256k1.G
16342
16343 var r = signature.r
16344 var s = signature.s
16345
16346 // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]
16347 if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
16348 if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
16349
16350 // 1.4.2 H = Hash(M), already done by the user
16351 // 1.4.3 e = H
16352 var e = BigInteger.fromBuffer(hash)
16353
16354 // Compute s^-1
16355 var sInv = s.modInverse(n)
16356
16357 // 1.4.4 Compute u1 = es^−1 mod n
16358 // u2 = rs^−1 mod n
16359 var u1 = e.multiply(sInv).mod(n)
16360 var u2 = r.multiply(sInv).mod(n)
16361
16362 // 1.4.5 Compute R = (xR, yR)
16363 // R = u1G + u2Q
16364 var R = G.multiplyTwo(u1, Q, u2)
16365
16366 // 1.4.5 (cont.) Enforce R is not at infinity
16367 if (secp256k1.isInfinity(R)) return false
16368
16369 // 1.4.6 Convert the field element R.x to an integer
16370 var xR = R.affineX
16371
16372 // 1.4.7 Set v = xR mod n
16373 var v = xR.mod(n)
16374
16375 // 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
16376 return v.equals(r)
16377 }
16378
16379 module.exports = {
16380 deterministicGenerateK: deterministicGenerateK,
16381 sign: sign,
16382 verify: verify,
16383
16384 // TODO: remove
16385 __curve: secp256k1
16386 }
16387
16388 },{"./ecsignature":48,"./types":78,"bigi":37,"create-hmac":85,"ecurve":89,"safe-buffer":98,"typeforce":109}],47:[function(require,module,exports){
16389 var baddress = require('./address')
16390 var bcrypto = require('./crypto')
16391 var ecdsa = require('./ecdsa')
16392 var randomBytes = require('randombytes')
16393 var typeforce = require('typeforce')
16394 var types = require('./types')
16395 var wif = require('wif')
16396
16397 var NETWORKS = require('./networks')
16398 var BigInteger = require('bigi')
16399
16400 var ecurve = require('ecurve')
16401 var secp256k1 = ecdsa.__curve
16402
16403 function ECPair (d, Q, options) {
16404 if (options) {
16405 typeforce({
16406 compressed: types.maybe(types.Boolean),
16407 network: types.maybe(types.Network)
16408 }, options)
16409 }
16410
16411 options = options || {}
16412
16413 if (d) {
16414 if (d.signum() <= 0) throw new Error('Private key must be greater than 0')
16415 if (d.compareTo(secp256k1.n) >= 0) throw new Error('Private key must be less than the curve order')
16416 if (Q) throw new TypeError('Unexpected publicKey parameter')
16417
16418 this.d = d
16419 } else {
16420 typeforce(types.ECPoint, Q)
16421
16422 this.__Q = Q
16423 }
16424
16425 this.compressed = options.compressed === undefined ? true : options.compressed
16426 this.network = options.network || NETWORKS.bitcoin
16427 }
16428
16429 Object.defineProperty(ECPair.prototype, 'Q', {
16430 get: function () {
16431 if (!this.__Q && this.d) {
16432 this.__Q = secp256k1.G.multiply(this.d)
16433 }
16434
16435 return this.__Q
16436 }
16437 })
16438
16439 ECPair.fromPublicKeyBuffer = function (buffer, network) {
16440 var Q = ecurve.Point.decodeFrom(secp256k1, buffer)
16441
16442 return new ECPair(null, Q, {
16443 compressed: Q.compressed,
16444 network: network
16445 })
16446 }
16447
16448 ECPair.fromWIF = function (string, network) {
16449 var decoded = wif.decode(string)
16450 var version = decoded.version
16451
16452 // list of networks?
16453 if (types.Array(network)) {
16454 network = network.filter(function (x) {
16455 return version === x.wif
16456 }).pop()
16457
16458 if (!network) throw new Error('Unknown network version')
16459
16460 // otherwise, assume a network object (or default to bitcoin)
16461 } else {
16462 network = network || NETWORKS.bitcoin
16463
16464 if (version !== network.wif) throw new Error('Invalid network version')
16465 }
16466
16467 var d = BigInteger.fromBuffer(decoded.privateKey)
16468
16469 return new ECPair(d, null, {
16470 compressed: decoded.compressed,
16471 network: network
16472 })
16473 }
16474
16475 ECPair.makeRandom = function (options) {
16476 options = options || {}
16477
16478 var rng = options.rng || randomBytes
16479
16480 var d
16481 do {
16482 var buffer = rng(32)
16483 typeforce(types.Buffer256bit, buffer)
16484
16485 d = BigInteger.fromBuffer(buffer)
16486 } while (d.signum() <= 0 || d.compareTo(secp256k1.n) >= 0)
16487
16488 return new ECPair(d, null, options)
16489 }
16490
16491 ECPair.prototype.getAddress = function () {
16492 return baddress.toBase58Check(bcrypto.hash160(this.getPublicKeyBuffer()), this.getNetwork().pubKeyHash)
16493 }
16494
16495 ECPair.prototype.getNetwork = function () {
16496 return this.network
16497 }
16498
16499 ECPair.prototype.getPublicKeyBuffer = function () {
16500 return this.Q.getEncoded(this.compressed)
16501 }
16502
16503 ECPair.prototype.sign = function (hash) {
16504 if (!this.d) throw new Error('Missing private key')
16505
16506 return ecdsa.sign(hash, this.d)
16507 }
16508
16509 ECPair.prototype.toWIF = function () {
16510 if (!this.d) throw new Error('Missing private key')
16511
16512 return wif.encode(this.network.wif, this.d.toBuffer(32), this.compressed)
16513 }
16514
16515 ECPair.prototype.verify = function (hash, signature) {
16516 return ecdsa.verify(hash, signature, this.Q)
16517 }
16518
16519 module.exports = ECPair
16520
16521 },{"./address":42,"./crypto":45,"./ecdsa":46,"./networks":51,"./types":78,"bigi":37,"ecurve":89,"randombytes":96,"typeforce":109,"wif":112}],48:[function(require,module,exports){
16522 (function (Buffer){
16523 var bip66 = require('bip66')
16524 var typeforce = require('typeforce')
16525 var types = require('./types')
16526
16527 var BigInteger = require('bigi')
16528
16529 function ECSignature (r, s) {
16530 typeforce(types.tuple(types.BigInt, types.BigInt), arguments)
16531
16532 this.r = r
16533 this.s = s
16534 }
16535
16536 ECSignature.parseCompact = function (buffer) {
16537 if (buffer.length !== 65) throw new Error('Invalid signature length')
16538
16539 var flagByte = buffer.readUInt8(0) - 27
16540 if (flagByte !== (flagByte & 7)) throw new Error('Invalid signature parameter')
16541
16542 var compressed = !!(flagByte & 4)
16543 var recoveryParam = flagByte & 3
16544
16545 var r = BigInteger.fromBuffer(buffer.slice(1, 33))
16546 var s = BigInteger.fromBuffer(buffer.slice(33))
16547
16548 return {
16549 compressed: compressed,
16550 i: recoveryParam,
16551 signature: new ECSignature(r, s)
16552 }
16553 }
16554
16555 ECSignature.fromDER = function (buffer) {
16556 var decode = bip66.decode(buffer)
16557 var r = BigInteger.fromDERInteger(decode.r)
16558 var s = BigInteger.fromDERInteger(decode.s)
16559
16560 return new ECSignature(r, s)
16561 }
16562
16563 // BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
16564 ECSignature.parseScriptSignature = function (buffer) {
16565 var hashType = buffer.readUInt8(buffer.length - 1)
16566 var hashTypeMod = hashType & ~0x80
16567
16568 if (hashTypeMod <= 0x00 || hashTypeMod >= 0x04) throw new Error('Invalid hashType ' + hashType)
16569
16570 return {
16571 signature: ECSignature.fromDER(buffer.slice(0, -1)),
16572 hashType: hashType
16573 }
16574 }
16575
16576 ECSignature.prototype.toCompact = function (i, compressed) {
16577 if (compressed) {
16578 i += 4
16579 }
16580
16581 i += 27
16582
16583 var buffer = Buffer.alloc(65)
16584 buffer.writeUInt8(i, 0)
16585 this.r.toBuffer(32).copy(buffer, 1)
16586 this.s.toBuffer(32).copy(buffer, 33)
16587
16588 return buffer
16589 }
16590
16591 ECSignature.prototype.toDER = function () {
16592 var r = Buffer.from(this.r.toDERInteger())
16593 var s = Buffer.from(this.s.toDERInteger())
16594
16595 return bip66.encode(r, s)
16596 }
16597
16598 ECSignature.prototype.toScriptSignature = function (hashType) {
16599 var hashTypeMod = hashType & ~0x80
16600 if (hashTypeMod <= 0 || hashTypeMod >= 4) throw new Error('Invalid hashType ' + hashType)
16601
16602 var hashTypeBuffer = Buffer.alloc(1)
16603 hashTypeBuffer.writeUInt8(hashType, 0)
16604
16605 return Buffer.concat([this.toDER(), hashTypeBuffer])
16606 }
16607
16608 module.exports = ECSignature
16609
16610 }).call(this,require("buffer").Buffer)
16611 },{"./types":78,"bigi":37,"bip66":39,"buffer":4,"typeforce":109}],49:[function(require,module,exports){
16612 var Buffer = require('safe-buffer').Buffer
16613 var base58check = require('bs58check')
16614 var bcrypto = require('./crypto')
16615 var createHmac = require('create-hmac')
16616 var typeforce = require('typeforce')
16617 var types = require('./types')
16618 var NETWORKS = require('./networks')
16619
16620 var BigInteger = require('bigi')
16621 var ECPair = require('./ecpair')
16622
16623 var ecurve = require('ecurve')
16624 var curve = ecurve.getCurveByName('secp256k1')
16625
16626 function HDNode (keyPair, chainCode) {
16627 typeforce(types.tuple('ECPair', types.Buffer256bit), arguments)
16628
16629 if (!keyPair.compressed) throw new TypeError('BIP32 only allows compressed keyPairs')
16630
16631 this.keyPair = keyPair
16632 this.chainCode = chainCode
16633 this.depth = 0
16634 this.index = 0
16635 this.parentFingerprint = 0x00000000
16636 }
16637
16638 HDNode.HIGHEST_BIT = 0x80000000
16639 HDNode.LENGTH = 78
16640 HDNode.MASTER_SECRET = Buffer.from('Bitcoin seed', 'utf8')
16641
16642 HDNode.fromSeedBuffer = function (seed, network) {
16643 typeforce(types.tuple(types.Buffer, types.maybe(types.Network)), arguments)
16644
16645 if (seed.length < 16) throw new TypeError('Seed should be at least 128 bits')
16646 if (seed.length > 64) throw new TypeError('Seed should be at most 512 bits')
16647
16648 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
16649 var IL = I.slice(0, 32)
16650 var IR = I.slice(32)
16651
16652 // In case IL is 0 or >= n, the master key is invalid
16653 // This is handled by the ECPair constructor
16654 var pIL = BigInteger.fromBuffer(IL)
16655 var keyPair = new ECPair(pIL, null, {
16656 network: network
16657 })
16658
16659 return new HDNode(keyPair, IR)
16660 }
16661
16662 HDNode.fromSeedHex = function (hex, network) {
16663 return HDNode.fromSeedBuffer(Buffer.from(hex, 'hex'), network)
16664 }
16665
16666 HDNode.fromBase58 = function (string, networks) {
16667 var buffer = base58check.decode(string)
16668 if (buffer.length !== 78) throw new Error('Invalid buffer length')
16669
16670 // 4 bytes: version bytes
16671 var version = buffer.readUInt32BE(0)
16672 var network
16673
16674 // list of networks?
16675 if (Array.isArray(networks)) {
16676 network = networks.filter(function (x) {
16677 return version === x.bip32.private ||
16678 version === x.bip32.public
16679 }).pop()
16680
16681 if (!network) throw new Error('Unknown network version')
16682
16683 // otherwise, assume a network object (or default to bitcoin)
16684 } else {
16685 network = networks || NETWORKS.bitcoin
16686 }
16687
16688 if (version !== network.bip32.private &&
16689 version !== network.bip32.public) throw new Error('Invalid network version')
16690
16691 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
16692 var depth = buffer[4]
16693
16694 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
16695 var parentFingerprint = buffer.readUInt32BE(5)
16696 if (depth === 0) {
16697 if (parentFingerprint !== 0x00000000) throw new Error('Invalid parent fingerprint')
16698 }
16699
16700 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16701 // This is encoded in MSB order. (0x00000000 if master key)
16702 var index = buffer.readUInt32BE(9)
16703 if (depth === 0 && index !== 0) throw new Error('Invalid index')
16704
16705 // 32 bytes: the chain code
16706 var chainCode = buffer.slice(13, 45)
16707 var keyPair
16708
16709 // 33 bytes: private key data (0x00 + k)
16710 if (version === network.bip32.private) {
16711 if (buffer.readUInt8(45) !== 0x00) throw new Error('Invalid private key')
16712
16713 var d = BigInteger.fromBuffer(buffer.slice(46, 78))
16714 keyPair = new ECPair(d, null, { network: network })
16715
16716 // 33 bytes: public key data (0x02 + X or 0x03 + X)
16717 } else {
16718 var Q = ecurve.Point.decodeFrom(curve, buffer.slice(45, 78))
16719 // Q.compressed is assumed, if somehow this assumption is broken, `new HDNode` will throw
16720
16721 // Verify that the X coordinate in the public point corresponds to a point on the curve.
16722 // If not, the extended public key is invalid.
16723 curve.validate(Q)
16724
16725 keyPair = new ECPair(null, Q, { network: network })
16726 }
16727
16728 var hd = new HDNode(keyPair, chainCode)
16729 hd.depth = depth
16730 hd.index = index
16731 hd.parentFingerprint = parentFingerprint
16732
16733 return hd
16734 }
16735
16736 HDNode.prototype.getAddress = function () {
16737 return this.keyPair.getAddress()
16738 }
16739
16740 HDNode.prototype.getIdentifier = function () {
16741 return bcrypto.hash160(this.keyPair.getPublicKeyBuffer())
16742 }
16743
16744 HDNode.prototype.getFingerprint = function () {
16745 return this.getIdentifier().slice(0, 4)
16746 }
16747
16748 HDNode.prototype.getNetwork = function () {
16749 return this.keyPair.getNetwork()
16750 }
16751
16752 HDNode.prototype.getPublicKeyBuffer = function () {
16753 return this.keyPair.getPublicKeyBuffer()
16754 }
16755
16756 HDNode.prototype.neutered = function () {
16757 var neuteredKeyPair = new ECPair(null, this.keyPair.Q, {
16758 network: this.keyPair.network
16759 })
16760
16761 var neutered = new HDNode(neuteredKeyPair, this.chainCode)
16762 neutered.depth = this.depth
16763 neutered.index = this.index
16764 neutered.parentFingerprint = this.parentFingerprint
16765
16766 return neutered
16767 }
16768
16769 HDNode.prototype.sign = function (hash) {
16770 return this.keyPair.sign(hash)
16771 }
16772
16773 HDNode.prototype.verify = function (hash, signature) {
16774 return this.keyPair.verify(hash, signature)
16775 }
16776
16777 HDNode.prototype.toBase58 = function (__isPrivate) {
16778 if (__isPrivate !== undefined) throw new TypeError('Unsupported argument in 2.0.0')
16779
16780 // Version
16781 var network = this.keyPair.network
16782 var version = (!this.isNeutered()) ? network.bip32.private : network.bip32.public
16783 var buffer = Buffer.allocUnsafe(78)
16784
16785 // 4 bytes: version bytes
16786 buffer.writeUInt32BE(version, 0)
16787
16788 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
16789 buffer.writeUInt8(this.depth, 4)
16790
16791 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
16792 buffer.writeUInt32BE(this.parentFingerprint, 5)
16793
16794 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16795 // This is encoded in big endian. (0x00000000 if master key)
16796 buffer.writeUInt32BE(this.index, 9)
16797
16798 // 32 bytes: the chain code
16799 this.chainCode.copy(buffer, 13)
16800
16801 // 33 bytes: the public key or private key data
16802 if (!this.isNeutered()) {
16803 // 0x00 + k for private keys
16804 buffer.writeUInt8(0, 45)
16805 this.keyPair.d.toBuffer(32).copy(buffer, 46)
16806
16807 // 33 bytes: the public key
16808 } else {
16809 // X9.62 encoding for public keys
16810 this.keyPair.getPublicKeyBuffer().copy(buffer, 45)
16811 }
16812
16813 return base58check.encode(buffer)
16814 }
16815
16816 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions
16817 HDNode.prototype.derive = function (index) {
16818 typeforce(types.UInt32, index)
16819
16820 var isHardened = index >= HDNode.HIGHEST_BIT
16821 var data = Buffer.allocUnsafe(37)
16822
16823 // Hardened child
16824 if (isHardened) {
16825 if (this.isNeutered()) throw new TypeError('Could not derive hardened child key')
16826
16827 // data = 0x00 || ser256(kpar) || ser32(index)
16828 data[0] = 0x00
16829 this.keyPair.d.toBuffer(32).copy(data, 1)
16830 data.writeUInt32BE(index, 33)
16831
16832 // Normal child
16833 } else {
16834 // data = serP(point(kpar)) || ser32(index)
16835 // = serP(Kpar) || ser32(index)
16836 this.keyPair.getPublicKeyBuffer().copy(data, 0)
16837 data.writeUInt32BE(index, 33)
16838 }
16839
16840 var I = createHmac('sha512', this.chainCode).update(data).digest()
16841 var IL = I.slice(0, 32)
16842 var IR = I.slice(32)
16843
16844 var pIL = BigInteger.fromBuffer(IL)
16845
16846 // In case parse256(IL) >= n, proceed with the next value for i
16847 if (pIL.compareTo(curve.n) >= 0) {
16848 return this.derive(index + 1)
16849 }
16850
16851 // Private parent key -> private child key
16852 var derivedKeyPair
16853 if (!this.isNeutered()) {
16854 // ki = parse256(IL) + kpar (mod n)
16855 var ki = pIL.add(this.keyPair.d).mod(curve.n)
16856
16857 // In case ki == 0, proceed with the next value for i
16858 if (ki.signum() === 0) {
16859 return this.derive(index + 1)
16860 }
16861
16862 derivedKeyPair = new ECPair(ki, null, {
16863 network: this.keyPair.network
16864 })
16865
16866 // Public parent key -> public child key
16867 } else {
16868 // Ki = point(parse256(IL)) + Kpar
16869 // = G*IL + Kpar
16870 var Ki = curve.G.multiply(pIL).add(this.keyPair.Q)
16871
16872 // In case Ki is the point at infinity, proceed with the next value for i
16873 if (curve.isInfinity(Ki)) {
16874 return this.derive(index + 1)
16875 }
16876
16877 derivedKeyPair = new ECPair(null, Ki, {
16878 network: this.keyPair.network
16879 })
16880 }
16881
16882 var hd = new HDNode(derivedKeyPair, IR)
16883 hd.depth = this.depth + 1
16884 hd.index = index
16885 hd.parentFingerprint = this.getFingerprint().readUInt32BE(0)
16886
16887 return hd
16888 }
16889
16890 HDNode.prototype.deriveHardened = function (index) {
16891 typeforce(types.UInt31, index)
16892
16893 // Only derives hardened private keys by default
16894 return this.derive(index + HDNode.HIGHEST_BIT)
16895 }
16896
16897 // Private === not neutered
16898 // Public === neutered
16899 HDNode.prototype.isNeutered = function () {
16900 return !(this.keyPair.d)
16901 }
16902
16903 HDNode.prototype.derivePath = function (path) {
16904 typeforce(types.BIP32Path, path)
16905
16906 var splitPath = path.split('/')
16907 if (splitPath[0] === 'm') {
16908 if (this.parentFingerprint) {
16909 throw new Error('Not a master node')
16910 }
16911
16912 splitPath = splitPath.slice(1)
16913 }
16914
16915 return splitPath.reduce(function (prevHd, indexStr) {
16916 var index
16917 if (indexStr.slice(-1) === "'") {
16918 index = parseInt(indexStr.slice(0, -1), 10)
16919 return prevHd.deriveHardened(index)
16920 } else {
16921 index = parseInt(indexStr, 10)
16922 return prevHd.derive(index)
16923 }
16924 }, this)
16925 }
16926
16927 module.exports = HDNode
16928
16929 },{"./crypto":45,"./ecpair":47,"./networks":51,"./types":78,"bigi":37,"bs58check":80,"create-hmac":85,"ecurve":89,"safe-buffer":98,"typeforce":109}],50:[function(require,module,exports){
16930 module.exports = {
16931 Block: require('./block'),
16932 ECPair: require('./ecpair'),
16933 ECSignature: require('./ecsignature'),
16934 HDNode: require('./hdnode'),
16935 Transaction: require('./transaction'),
16936 TransactionBuilder: require('./transaction_builder'),
16937
16938 address: require('./address'),
16939 bufferutils: require('./bufferutils'), // TODO: remove in 4.0.0
16940 crypto: require('./crypto'),
16941 networks: require('./networks'),
16942 opcodes: require('bitcoin-ops'),
16943 script: require('./script')
16944 }
16945
16946 },{"./address":42,"./block":43,"./bufferutils":44,"./crypto":45,"./ecpair":47,"./ecsignature":48,"./hdnode":49,"./networks":51,"./script":52,"./transaction":76,"./transaction_builder":77,"bitcoin-ops":40}],51:[function(require,module,exports){
16947 // https://en.bitcoin.it/wiki/List_of_address_prefixes
16948 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
16949
16950 module.exports = {
16951 bitcoin: {
16952 messagePrefix: '\x18Bitcoin Signed Message:\n',
16953 bip32: {
16954 public: 0x0488b21e,
16955 private: 0x0488ade4
16956 },
16957 pubKeyHash: 0x00,
16958 scriptHash: 0x05,
16959 wif: 0x80
16960 },
16961 testnet: {
16962 messagePrefix: '\x18Bitcoin Signed Message:\n',
16963 bip32: {
16964 public: 0x043587cf,
16965 private: 0x04358394
16966 },
16967 pubKeyHash: 0x6f,
16968 scriptHash: 0xc4,
16969 wif: 0xef
16970 },
16971 litecoin: {
16972 messagePrefix: '\x19Litecoin Signed Message:\n',
16973 bip32: {
16974 public: 0x0488b21e,
16975 private: 0x0488ade4,
16976 },
16977 pubKeyHash: 0x30,
16978 scriptHash: 0x32,
16979 wif: 0xb0
16980 },
16981 litecoinLtub: {
16982 messagePrefix: '\x19Litecoin Signed Message:\n',
16983 bip32: {
16984 public: 0x019da462,
16985 private: 0x019d9cfe
16986 },
16987 pubKeyHash: 0x30,
16988 scriptHash: 0x32,
16989 wif: 0xb0
16990 }
16991 }
16992
16993 },{}],52:[function(require,module,exports){
16994 var Buffer = require('safe-buffer').Buffer
16995 var bip66 = require('bip66')
16996 var pushdata = require('pushdata-bitcoin')
16997 var typeforce = require('typeforce')
16998 var types = require('./types')
16999 var scriptNumber = require('./script_number')
17000
17001 var OPS = require('bitcoin-ops')
17002 var REVERSE_OPS = require('bitcoin-ops/map')
17003 var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
17004
17005 function isOPInt (value) {
17006 return types.Number(value) &&
17007 ((value === OPS.OP_0) ||
17008 (value >= OPS.OP_1 && value <= OPS.OP_16) ||
17009 (value === OPS.OP_1NEGATE))
17010 }
17011
17012 function isPushOnlyChunk (value) {
17013 return types.Buffer(value) || isOPInt(value)
17014 }
17015
17016 function isPushOnly (value) {
17017 return types.Array(value) && value.every(isPushOnlyChunk)
17018 }
17019
17020 function compile (chunks) {
17021 // TODO: remove me
17022 if (Buffer.isBuffer(chunks)) return chunks
17023
17024 typeforce(types.Array, chunks)
17025
17026 var bufferSize = chunks.reduce(function (accum, chunk) {
17027 // data chunk
17028 if (Buffer.isBuffer(chunk)) {
17029 // adhere to BIP62.3, minimal push policy
17030 if (chunk.length === 1 && (chunk[0] === 0x81 || (chunk[0] >= 1 && chunk[0] <= 16))) {
17031 return accum + 1
17032 }
17033
17034 return accum + pushdata.encodingLength(chunk.length) + chunk.length
17035 }
17036
17037 // opcode
17038 return accum + 1
17039 }, 0.0)
17040
17041 var buffer = Buffer.allocUnsafe(bufferSize)
17042 var offset = 0
17043
17044 chunks.forEach(function (chunk) {
17045 // data chunk
17046 if (Buffer.isBuffer(chunk)) {
17047 // adhere to BIP62.3, minimal push policy
17048 if (chunk.length === 1 && chunk[0] >= 1 && chunk[0] <= 16) {
17049 var opcode = OP_INT_BASE + chunk[0]
17050 buffer.writeUInt8(opcode, offset)
17051 offset += 1
17052 return
17053 }
17054
17055 if (chunk.length === 1 && chunk[0] === 0x81) {
17056 buffer.writeUInt8(OPS.OP_1NEGATE, offset)
17057 offset += 1
17058 return
17059 }
17060
17061 offset += pushdata.encode(buffer, chunk.length, offset)
17062
17063 chunk.copy(buffer, offset)
17064 offset += chunk.length
17065
17066 // opcode
17067 } else {
17068 buffer.writeUInt8(chunk, offset)
17069 offset += 1
17070 }
17071 })
17072
17073 if (offset !== buffer.length) throw new Error('Could not decode chunks')
17074 return buffer
17075 }
17076
17077 function decompile (buffer) {
17078 // TODO: remove me
17079 if (types.Array(buffer)) return buffer
17080
17081 typeforce(types.Buffer, buffer)
17082
17083 var chunks = []
17084 var i = 0
17085
17086 while (i < buffer.length) {
17087 var opcode = buffer[i]
17088
17089 // data chunk
17090 if ((opcode > OPS.OP_0) && (opcode <= OPS.OP_PUSHDATA4)) {
17091 var d = pushdata.decode(buffer, i)
17092
17093 // did reading a pushDataInt fail? empty script
17094 if (d === null) return []
17095 i += d.size
17096
17097 // attempt to read too much data? empty script
17098 if (i + d.number > buffer.length) return []
17099
17100 var data = buffer.slice(i, i + d.number)
17101 i += d.number
17102
17103 chunks.push(data)
17104
17105 // opcode
17106 } else {
17107 chunks.push(opcode)
17108
17109 i += 1
17110 }
17111 }
17112
17113 return chunks
17114 }
17115
17116 function toASM (chunks) {
17117 if (Buffer.isBuffer(chunks)) {
17118 chunks = decompile(chunks)
17119 }
17120
17121 return chunks.map(function (chunk) {
17122 // data?
17123 if (Buffer.isBuffer(chunk)) return chunk.toString('hex')
17124
17125 // opcode!
17126 return REVERSE_OPS[chunk]
17127 }).join(' ')
17128 }
17129
17130 function fromASM (asm) {
17131 typeforce(types.String, asm)
17132
17133 return compile(asm.split(' ').map(function (chunkStr) {
17134 // opcode?
17135 if (OPS[chunkStr] !== undefined) return OPS[chunkStr]
17136 typeforce(types.Hex, chunkStr)
17137
17138 // data!
17139 return Buffer.from(chunkStr, 'hex')
17140 }))
17141 }
17142
17143 function toStack (chunks) {
17144 chunks = decompile(chunks)
17145 typeforce(isPushOnly, chunks)
17146
17147 return chunks.map(function (op) {
17148 if (Buffer.isBuffer(op)) return op
17149 if (op === OPS.OP_0) return Buffer.allocUnsafe(0)
17150
17151 return scriptNumber.encode(op - OP_INT_BASE)
17152 })
17153 }
17154
17155 function isCanonicalPubKey (buffer) {
17156 if (!Buffer.isBuffer(buffer)) return false
17157 if (buffer.length < 33) return false
17158
17159 switch (buffer[0]) {
17160 case 0x02:
17161 case 0x03:
17162 return buffer.length === 33
17163 case 0x04:
17164 return buffer.length === 65
17165 }
17166
17167 return false
17168 }
17169
17170 function isDefinedHashType (hashType) {
17171 var hashTypeMod = hashType & ~0x80
17172
17173 // return hashTypeMod > SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE
17174 return hashTypeMod > 0x00 && hashTypeMod < 0x04
17175 }
17176
17177 function isCanonicalSignature (buffer) {
17178 if (!Buffer.isBuffer(buffer)) return false
17179 if (!isDefinedHashType(buffer[buffer.length - 1])) return false
17180
17181 return bip66.check(buffer.slice(0, -1))
17182 }
17183
17184 module.exports = {
17185 compile: compile,
17186 decompile: decompile,
17187 fromASM: fromASM,
17188 toASM: toASM,
17189 toStack: toStack,
17190
17191 number: require('./script_number'),
17192
17193 isCanonicalPubKey: isCanonicalPubKey,
17194 isCanonicalSignature: isCanonicalSignature,
17195 isPushOnly: isPushOnly,
17196 isDefinedHashType: isDefinedHashType
17197 }
17198
17199 var templates = require('./templates')
17200 for (var key in templates) {
17201 module.exports[key] = templates[key]
17202 }
17203
17204 },{"./script_number":53,"./templates":54,"./types":78,"bip66":39,"bitcoin-ops":40,"bitcoin-ops/map":41,"pushdata-bitcoin":95,"safe-buffer":98,"typeforce":109}],53:[function(require,module,exports){
17205 var Buffer = require('safe-buffer').Buffer
17206
17207 function decode (buffer, maxLength, minimal) {
17208 maxLength = maxLength || 4
17209 minimal = minimal === undefined ? true : minimal
17210
17211 var length = buffer.length
17212 if (length === 0) return 0
17213 if (length > maxLength) throw new TypeError('Script number overflow')
17214 if (minimal) {
17215 if ((buffer[length - 1] & 0x7f) === 0) {
17216 if (length <= 1 || (buffer[length - 2] & 0x80) === 0) throw new Error('Non-minimally encoded script number')
17217 }
17218 }
17219
17220 // 40-bit
17221 if (length === 5) {
17222 var a = buffer.readUInt32LE(0)
17223 var b = buffer.readUInt8(4)
17224
17225 if (b & 0x80) return -(((b & ~0x80) * 0x100000000) + a)
17226 return (b * 0x100000000) + a
17227 }
17228
17229 var result = 0
17230
17231 // 32-bit / 24-bit / 16-bit / 8-bit
17232 for (var i = 0; i < length; ++i) {
17233 result |= buffer[i] << (8 * i)
17234 }
17235
17236 if (buffer[length - 1] & 0x80) return -(result & ~(0x80 << (8 * (length - 1))))
17237 return result
17238 }
17239
17240 function scriptNumSize (i) {
17241 return i > 0x7fffffff ? 5
17242 : i > 0x7fffff ? 4
17243 : i > 0x7fff ? 3
17244 : i > 0x7f ? 2
17245 : i > 0x00 ? 1
17246 : 0
17247 }
17248
17249 function encode (number) {
17250 var value = Math.abs(number)
17251 var size = scriptNumSize(value)
17252 var buffer = Buffer.allocUnsafe(size)
17253 var negative = number < 0
17254
17255 for (var i = 0; i < size; ++i) {
17256 buffer.writeUInt8(value & 0xff, i)
17257 value >>= 8
17258 }
17259
17260 if (buffer[size - 1] & 0x80) {
17261 buffer.writeUInt8(negative ? 0x80 : 0x00, size - 1)
17262 } else if (negative) {
17263 buffer[size - 1] |= 0x80
17264 }
17265
17266 return buffer
17267 }
17268
17269 module.exports = {
17270 decode: decode,
17271 encode: encode
17272 }
17273
17274 },{"safe-buffer":98}],54:[function(require,module,exports){
17275 var decompile = require('../script').decompile
17276 var multisig = require('./multisig')
17277 var nullData = require('./nulldata')
17278 var pubKey = require('./pubkey')
17279 var pubKeyHash = require('./pubkeyhash')
17280 var scriptHash = require('./scripthash')
17281 var witnessPubKeyHash = require('./witnesspubkeyhash')
17282 var witnessScriptHash = require('./witnessscripthash')
17283 var witnessCommitment = require('./witnesscommitment')
17284
17285 var types = {
17286 MULTISIG: 'multisig',
17287 NONSTANDARD: 'nonstandard',
17288 NULLDATA: 'nulldata',
17289 P2PK: 'pubkey',
17290 P2PKH: 'pubkeyhash',
17291 P2SH: 'scripthash',
17292 P2WPKH: 'witnesspubkeyhash',
17293 P2WSH: 'witnessscripthash',
17294 WITNESS_COMMITMENT: 'witnesscommitment'
17295 }
17296
17297 function classifyOutput (script) {
17298 if (witnessPubKeyHash.output.check(script)) return types.P2WPKH
17299 if (witnessScriptHash.output.check(script)) return types.P2WSH
17300 if (pubKeyHash.output.check(script)) return types.P2PKH
17301 if (scriptHash.output.check(script)) return types.P2SH
17302
17303 // XXX: optimization, below functions .decompile before use
17304 var chunks = decompile(script)
17305 if (multisig.output.check(chunks)) return types.MULTISIG
17306 if (pubKey.output.check(chunks)) return types.P2PK
17307 if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT
17308 if (nullData.output.check(chunks)) return types.NULLDATA
17309
17310 return types.NONSTANDARD
17311 }
17312
17313 function classifyInput (script, allowIncomplete) {
17314 // XXX: optimization, below functions .decompile before use
17315 var chunks = decompile(script)
17316
17317 if (pubKeyHash.input.check(chunks)) return types.P2PKH
17318 if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH
17319 if (multisig.input.check(chunks, allowIncomplete)) return types.MULTISIG
17320 if (pubKey.input.check(chunks)) return types.P2PK
17321
17322 return types.NONSTANDARD
17323 }
17324
17325 function classifyWitness (script, allowIncomplete) {
17326 // XXX: optimization, below functions .decompile before use
17327 var chunks = decompile(script)
17328
17329 if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH
17330 if (witnessScriptHash.input.check(chunks, allowIncomplete)) return types.P2WSH
17331
17332 return types.NONSTANDARD
17333 }
17334
17335 module.exports = {
17336 classifyInput: classifyInput,
17337 classifyOutput: classifyOutput,
17338 classifyWitness: classifyWitness,
17339 multisig: multisig,
17340 nullData: nullData,
17341 pubKey: pubKey,
17342 pubKeyHash: pubKeyHash,
17343 scriptHash: scriptHash,
17344 witnessPubKeyHash: witnessPubKeyHash,
17345 witnessScriptHash: witnessScriptHash,
17346 witnessCommitment: witnessCommitment,
17347 types: types
17348 }
17349
17350 },{"../script":52,"./multisig":55,"./nulldata":58,"./pubkey":59,"./pubkeyhash":62,"./scripthash":65,"./witnesscommitment":68,"./witnesspubkeyhash":70,"./witnessscripthash":73}],55:[function(require,module,exports){
17351 module.exports = {
17352 input: require('./input'),
17353 output: require('./output')
17354 }
17355
17356 },{"./input":56,"./output":57}],56:[function(require,module,exports){
17357 // OP_0 [signatures ...]
17358
17359 var Buffer = require('safe-buffer').Buffer
17360 var bscript = require('../../script')
17361 var typeforce = require('typeforce')
17362 var OPS = require('bitcoin-ops')
17363
17364 function partialSignature (value) {
17365 return value === OPS.OP_0 || bscript.isCanonicalSignature(value)
17366 }
17367
17368 function check (script, allowIncomplete) {
17369 var chunks = bscript.decompile(script)
17370 if (chunks.length < 2) return false
17371 if (chunks[0] !== OPS.OP_0) return false
17372
17373 if (allowIncomplete) {
17374 return chunks.slice(1).every(partialSignature)
17375 }
17376
17377 return chunks.slice(1).every(bscript.isCanonicalSignature)
17378 }
17379 check.toJSON = function () { return 'multisig input' }
17380
17381 var EMPTY_BUFFER = Buffer.allocUnsafe(0)
17382
17383 function encodeStack (signatures, scriptPubKey) {
17384 typeforce([partialSignature], signatures)
17385
17386 if (scriptPubKey) {
17387 var scriptData = bscript.multisig.output.decode(scriptPubKey)
17388
17389 if (signatures.length < scriptData.m) {
17390 throw new TypeError('Not enough signatures provided')
17391 }
17392
17393 if (signatures.length > scriptData.pubKeys.length) {
17394 throw new TypeError('Too many signatures provided')
17395 }
17396 }
17397
17398 return [].concat(EMPTY_BUFFER, signatures)
17399 }
17400
17401 function encode (signatures, scriptPubKey) {
17402 return bscript.compile(encodeStack(signatures, scriptPubKey))
17403 }
17404
17405 function decodeStack (stack, allowIncomplete) {
17406 typeforce(check, stack, allowIncomplete)
17407 return stack.slice(1)
17408 }
17409
17410 function decode (buffer, allowIncomplete) {
17411 var stack = bscript.decompile(buffer)
17412 return decodeStack(stack, allowIncomplete)
17413 }
17414
17415 module.exports = {
17416 check: check,
17417 decode: decode,
17418 decodeStack: decodeStack,
17419 encode: encode,
17420 encodeStack: encodeStack
17421 }
17422
17423 },{"../../script":52,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],57:[function(require,module,exports){
17424 // m [pubKeys ...] n OP_CHECKMULTISIG
17425
17426 var bscript = require('../../script')
17427 var types = require('../../types')
17428 var typeforce = require('typeforce')
17429 var OPS = require('bitcoin-ops')
17430 var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
17431
17432 function check (script, allowIncomplete) {
17433 var chunks = bscript.decompile(script)
17434
17435 if (chunks.length < 4) return false
17436 if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG) return false
17437 if (!types.Number(chunks[0])) return false
17438 if (!types.Number(chunks[chunks.length - 2])) return false
17439 var m = chunks[0] - OP_INT_BASE
17440 var n = chunks[chunks.length - 2] - OP_INT_BASE
17441
17442 if (m <= 0) return false
17443 if (n > 16) return false
17444 if (m > n) return false
17445 if (n !== chunks.length - 3) return false
17446 if (allowIncomplete) return true
17447
17448 var keys = chunks.slice(1, -2)
17449 return keys.every(bscript.isCanonicalPubKey)
17450 }
17451 check.toJSON = function () { return 'multi-sig output' }
17452
17453 function encode (m, pubKeys) {
17454 typeforce({
17455 m: types.Number,
17456 pubKeys: [bscript.isCanonicalPubKey]
17457 }, {
17458 m: m,
17459 pubKeys: pubKeys
17460 })
17461
17462 var n = pubKeys.length
17463 if (n < m) throw new TypeError('Not enough pubKeys provided')
17464
17465 return bscript.compile([].concat(
17466 OP_INT_BASE + m,
17467 pubKeys,
17468 OP_INT_BASE + n,
17469 OPS.OP_CHECKMULTISIG
17470 ))
17471 }
17472
17473 function decode (buffer, allowIncomplete) {
17474 var chunks = bscript.decompile(buffer)
17475 typeforce(check, chunks, allowIncomplete)
17476
17477 return {
17478 m: chunks[0] - OP_INT_BASE,
17479 pubKeys: chunks.slice(1, -2)
17480 }
17481 }
17482
17483 module.exports = {
17484 check: check,
17485 decode: decode,
17486 encode: encode
17487 }
17488
17489 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],58:[function(require,module,exports){
17490 // OP_RETURN {data}
17491
17492 var bscript = require('../script')
17493 var types = require('../types')
17494 var typeforce = require('typeforce')
17495 var OPS = require('bitcoin-ops')
17496
17497 function check (script) {
17498 var buffer = bscript.compile(script)
17499
17500 return buffer.length > 1 &&
17501 buffer[0] === OPS.OP_RETURN
17502 }
17503 check.toJSON = function () { return 'null data output' }
17504
17505 function encode (data) {
17506 typeforce(types.Buffer, data)
17507
17508 return bscript.compile([OPS.OP_RETURN, data])
17509 }
17510
17511 function decode (buffer) {
17512 typeforce(check, buffer)
17513
17514 return buffer.slice(2)
17515 }
17516
17517 module.exports = {
17518 output: {
17519 check: check,
17520 decode: decode,
17521 encode: encode
17522 }
17523 }
17524
17525 },{"../script":52,"../types":78,"bitcoin-ops":40,"typeforce":109}],59:[function(require,module,exports){
17526 arguments[4][55][0].apply(exports,arguments)
17527 },{"./input":60,"./output":61,"dup":55}],60:[function(require,module,exports){
17528 // {signature}
17529
17530 var bscript = require('../../script')
17531 var types = require('../../types')
17532 var typeforce = require('typeforce')
17533
17534 function check (script) {
17535 var chunks = bscript.decompile(script)
17536
17537 return chunks.length === 1 &&
17538 bscript.isCanonicalSignature(chunks[0])
17539 }
17540 check.toJSON = function () { return 'pubKey input' }
17541
17542 function encodeStack (signature) {
17543 typeforce(types.Buffer, signature)
17544 return [signature]
17545 }
17546
17547 function encode (signature) {
17548 return bscript.compile(encodeStack(signature))
17549 }
17550
17551 function decodeStack (stack) {
17552 typeforce(check, stack)
17553 return stack[0]
17554 }
17555
17556 function decode (buffer) {
17557 var stack = bscript.decompile(buffer)
17558 return decodeStack(stack)
17559 }
17560
17561 module.exports = {
17562 check: check,
17563 decode: decode,
17564 decodeStack: decodeStack,
17565 encode: encode,
17566 encodeStack: encodeStack
17567 }
17568
17569 },{"../../script":52,"../../types":78,"typeforce":109}],61:[function(require,module,exports){
17570 // {pubKey} OP_CHECKSIG
17571
17572 var bscript = require('../../script')
17573 var typeforce = require('typeforce')
17574 var OPS = require('bitcoin-ops')
17575
17576 function check (script) {
17577 var chunks = bscript.decompile(script)
17578
17579 return chunks.length === 2 &&
17580 bscript.isCanonicalPubKey(chunks[0]) &&
17581 chunks[1] === OPS.OP_CHECKSIG
17582 }
17583 check.toJSON = function () { return 'pubKey output' }
17584
17585 function encode (pubKey) {
17586 typeforce(bscript.isCanonicalPubKey, pubKey)
17587
17588 return bscript.compile([pubKey, OPS.OP_CHECKSIG])
17589 }
17590
17591 function decode (buffer) {
17592 var chunks = bscript.decompile(buffer)
17593 typeforce(check, chunks)
17594
17595 return chunks[0]
17596 }
17597
17598 module.exports = {
17599 check: check,
17600 decode: decode,
17601 encode: encode
17602 }
17603
17604 },{"../../script":52,"bitcoin-ops":40,"typeforce":109}],62:[function(require,module,exports){
17605 arguments[4][55][0].apply(exports,arguments)
17606 },{"./input":63,"./output":64,"dup":55}],63:[function(require,module,exports){
17607 // {signature} {pubKey}
17608
17609 var bscript = require('../../script')
17610 var types = require('../../types')
17611 var typeforce = require('typeforce')
17612
17613 function check (script) {
17614 var chunks = bscript.decompile(script)
17615
17616 return chunks.length === 2 &&
17617 bscript.isCanonicalSignature(chunks[0]) &&
17618 bscript.isCanonicalPubKey(chunks[1])
17619 }
17620 check.toJSON = function () { return 'pubKeyHash input' }
17621
17622 function encodeStack (signature, pubKey) {
17623 typeforce({
17624 signature: types.Buffer, pubKey: types.Buffer
17625 }, {
17626 signature: signature, pubKey: pubKey
17627 })
17628
17629 return [signature, pubKey]
17630 }
17631
17632 function encode (signature, pubKey) {
17633 return bscript.compile(encodeStack(signature, pubKey))
17634 }
17635
17636 function decodeStack (stack) {
17637 typeforce(check, stack)
17638
17639 return {
17640 signature: stack[0],
17641 pubKey: stack[1]
17642 }
17643 }
17644
17645 function decode (buffer) {
17646 var stack = bscript.decompile(buffer)
17647 return decodeStack(stack)
17648 }
17649
17650 module.exports = {
17651 check: check,
17652 decode: decode,
17653 decodeStack: decodeStack,
17654 encode: encode,
17655 encodeStack: encodeStack
17656 }
17657
17658 },{"../../script":52,"../../types":78,"typeforce":109}],64:[function(require,module,exports){
17659 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
17660
17661 var bscript = require('../../script')
17662 var types = require('../../types')
17663 var typeforce = require('typeforce')
17664 var OPS = require('bitcoin-ops')
17665
17666 function check (script) {
17667 var buffer = bscript.compile(script)
17668
17669 return buffer.length === 25 &&
17670 buffer[0] === OPS.OP_DUP &&
17671 buffer[1] === OPS.OP_HASH160 &&
17672 buffer[2] === 0x14 &&
17673 buffer[23] === OPS.OP_EQUALVERIFY &&
17674 buffer[24] === OPS.OP_CHECKSIG
17675 }
17676 check.toJSON = function () { return 'pubKeyHash output' }
17677
17678 function encode (pubKeyHash) {
17679 typeforce(types.Hash160bit, pubKeyHash)
17680
17681 return bscript.compile([
17682 OPS.OP_DUP,
17683 OPS.OP_HASH160,
17684 pubKeyHash,
17685 OPS.OP_EQUALVERIFY,
17686 OPS.OP_CHECKSIG
17687 ])
17688 }
17689
17690 function decode (buffer) {
17691 typeforce(check, buffer)
17692
17693 return buffer.slice(3, 23)
17694 }
17695
17696 module.exports = {
17697 check: check,
17698 decode: decode,
17699 encode: encode
17700 }
17701
17702 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],65:[function(require,module,exports){
17703 arguments[4][55][0].apply(exports,arguments)
17704 },{"./input":66,"./output":67,"dup":55}],66:[function(require,module,exports){
17705 // <scriptSig> {serialized scriptPubKey script}
17706
17707 var Buffer = require('safe-buffer').Buffer
17708 var bscript = require('../../script')
17709 var typeforce = require('typeforce')
17710
17711 function check (script, allowIncomplete) {
17712 var chunks = bscript.decompile(script)
17713 if (chunks.length < 1) return false
17714
17715 var lastChunk = chunks[chunks.length - 1]
17716 if (!Buffer.isBuffer(lastChunk)) return false
17717
17718 var scriptSigChunks = bscript.decompile(bscript.compile(chunks.slice(0, -1)))
17719 var redeemScriptChunks = bscript.decompile(lastChunk)
17720
17721 // is redeemScript a valid script?
17722 if (redeemScriptChunks.length === 0) return false
17723
17724 // is redeemScriptSig push only?
17725 if (!bscript.isPushOnly(scriptSigChunks)) return false
17726
17727 var inputType = bscript.classifyInput(scriptSigChunks, allowIncomplete)
17728 var outputType = bscript.classifyOutput(redeemScriptChunks)
17729 if (chunks.length === 1) {
17730 return outputType === bscript.types.P2WSH || outputType === bscript.types.P2WPKH
17731 }
17732 return inputType === outputType
17733 }
17734 check.toJSON = function () { return 'scriptHash input' }
17735
17736 function encodeStack (redeemScriptStack, redeemScript) {
17737 var serializedScriptPubKey = bscript.compile(redeemScript)
17738
17739 return [].concat(redeemScriptStack, serializedScriptPubKey)
17740 }
17741
17742 function encode (redeemScriptSig, redeemScript) {
17743 var redeemScriptStack = bscript.decompile(redeemScriptSig)
17744
17745 return bscript.compile(encodeStack(redeemScriptStack, redeemScript))
17746 }
17747
17748 function decodeStack (stack) {
17749 typeforce(check, stack)
17750
17751 return {
17752 redeemScriptStack: stack.slice(0, -1),
17753 redeemScript: stack[stack.length - 1]
17754 }
17755 }
17756
17757 function decode (buffer) {
17758 var stack = bscript.decompile(buffer)
17759 var result = decodeStack(stack)
17760 result.redeemScriptSig = bscript.compile(result.redeemScriptStack)
17761 delete result.redeemScriptStack
17762 return result
17763 }
17764
17765 module.exports = {
17766 check: check,
17767 decode: decode,
17768 decodeStack: decodeStack,
17769 encode: encode,
17770 encodeStack: encodeStack
17771 }
17772
17773 },{"../../script":52,"safe-buffer":98,"typeforce":109}],67:[function(require,module,exports){
17774 // OP_HASH160 {scriptHash} OP_EQUAL
17775
17776 var bscript = require('../../script')
17777 var types = require('../../types')
17778 var typeforce = require('typeforce')
17779 var OPS = require('bitcoin-ops')
17780
17781 function check (script) {
17782 var buffer = bscript.compile(script)
17783
17784 return buffer.length === 23 &&
17785 buffer[0] === OPS.OP_HASH160 &&
17786 buffer[1] === 0x14 &&
17787 buffer[22] === OPS.OP_EQUAL
17788 }
17789 check.toJSON = function () { return 'scriptHash output' }
17790
17791 function encode (scriptHash) {
17792 typeforce(types.Hash160bit, scriptHash)
17793
17794 return bscript.compile([OPS.OP_HASH160, scriptHash, OPS.OP_EQUAL])
17795 }
17796
17797 function decode (buffer) {
17798 typeforce(check, buffer)
17799
17800 return buffer.slice(2, 22)
17801 }
17802
17803 module.exports = {
17804 check: check,
17805 decode: decode,
17806 encode: encode
17807 }
17808
17809 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],68:[function(require,module,exports){
17810 module.exports = {
17811 output: require('./output')
17812 }
17813
17814 },{"./output":69}],69:[function(require,module,exports){
17815 // OP_RETURN {aa21a9ed} {commitment}
17816
17817 var Buffer = require('safe-buffer').Buffer
17818 var bscript = require('../../script')
17819 var types = require('../../types')
17820 var typeforce = require('typeforce')
17821 var OPS = require('bitcoin-ops')
17822
17823 var HEADER = Buffer.from('aa21a9ed', 'hex')
17824
17825 function check (script) {
17826 var buffer = bscript.compile(script)
17827
17828 return buffer.length > 37 &&
17829 buffer[0] === OPS.OP_RETURN &&
17830 buffer[1] === 0x24 &&
17831 buffer.slice(2, 6).equals(HEADER)
17832 }
17833
17834 check.toJSON = function () { return 'Witness commitment output' }
17835
17836 function encode (commitment) {
17837 typeforce(types.Hash256bit, commitment)
17838
17839 var buffer = Buffer.allocUnsafe(36)
17840 HEADER.copy(buffer, 0)
17841 commitment.copy(buffer, 4)
17842
17843 return bscript.compile([OPS.OP_RETURN, buffer])
17844 }
17845
17846 function decode (buffer) {
17847 typeforce(check, buffer)
17848
17849 return bscript.decompile(buffer)[1].slice(4, 36)
17850 }
17851
17852 module.exports = {
17853 check: check,
17854 decode: decode,
17855 encode: encode
17856 }
17857
17858 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],70:[function(require,module,exports){
17859 arguments[4][55][0].apply(exports,arguments)
17860 },{"./input":71,"./output":72,"dup":55}],71:[function(require,module,exports){
17861 // {signature} {pubKey}
17862
17863 var pkh = require('../pubkeyhash/input')
17864
17865 module.exports = {
17866 check: pkh.check,
17867 decodeStack: pkh.decodeStack,
17868 encodeStack: pkh.encodeStack
17869 }
17870
17871 },{"../pubkeyhash/input":63}],72:[function(require,module,exports){
17872 // OP_0 {pubKeyHash}
17873
17874 var bscript = require('../../script')
17875 var types = require('../../types')
17876 var typeforce = require('typeforce')
17877 var OPS = require('bitcoin-ops')
17878
17879 function check (script) {
17880 var buffer = bscript.compile(script)
17881
17882 return buffer.length === 22 &&
17883 buffer[0] === OPS.OP_0 &&
17884 buffer[1] === 0x14
17885 }
17886 check.toJSON = function () { return 'Witness pubKeyHash output' }
17887
17888 function encode (pubKeyHash) {
17889 typeforce(types.Hash160bit, pubKeyHash)
17890
17891 return bscript.compile([OPS.OP_0, pubKeyHash])
17892 }
17893
17894 function decode (buffer) {
17895 typeforce(check, buffer)
17896
17897 return buffer.slice(2)
17898 }
17899
17900 module.exports = {
17901 check: check,
17902 decode: decode,
17903 encode: encode
17904 }
17905
17906 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],73:[function(require,module,exports){
17907 arguments[4][55][0].apply(exports,arguments)
17908 },{"./input":74,"./output":75,"dup":55}],74:[function(require,module,exports){
17909 // {signature} {pubKey}
17910
17911 var p2sh = require('../scripthash/input')
17912
17913 module.exports = {
17914 check: p2sh.check,
17915 decodeStack: p2sh.decodeStack,
17916 encodeStack: p2sh.encodeStack
17917 }
17918
17919 },{"../scripthash/input":66}],75:[function(require,module,exports){
17920 // OP_0 {scriptHash}
17921
17922 var bscript = require('../../script')
17923 var types = require('../../types')
17924 var typeforce = require('typeforce')
17925 var OPS = require('bitcoin-ops')
17926
17927 function check (script) {
17928 var buffer = bscript.compile(script)
17929
17930 return buffer.length === 34 &&
17931 buffer[0] === OPS.OP_0 &&
17932 buffer[1] === 0x20
17933 }
17934 check.toJSON = function () { return 'Witness scriptHash output' }
17935
17936 function encode (scriptHash) {
17937 typeforce(types.Hash256bit, scriptHash)
17938
17939 return bscript.compile([OPS.OP_0, scriptHash])
17940 }
17941
17942 function decode (buffer) {
17943 typeforce(check, buffer)
17944
17945 return buffer.slice(2)
17946 }
17947
17948 module.exports = {
17949 check: check,
17950 decode: decode,
17951 encode: encode
17952 }
17953
17954 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],76:[function(require,module,exports){
17955 var Buffer = require('safe-buffer').Buffer
17956 var bcrypto = require('./crypto')
17957 var bscript = require('./script')
17958 var bufferutils = require('./bufferutils')
17959 var opcodes = require('bitcoin-ops')
17960 var typeforce = require('typeforce')
17961 var types = require('./types')
17962 var varuint = require('varuint-bitcoin')
17963
17964 function varSliceSize (someScript) {
17965 var length = someScript.length
17966
17967 return varuint.encodingLength(length) + length
17968 }
17969
17970 function vectorSize (someVector) {
17971 var length = someVector.length
17972
17973 return varuint.encodingLength(length) + someVector.reduce(function (sum, witness) {
17974 return sum + varSliceSize(witness)
17975 }, 0)
17976 }
17977
17978 function Transaction () {
17979 this.version = 1
17980 this.locktime = 0
17981 this.ins = []
17982 this.outs = []
17983 }
17984
17985 Transaction.DEFAULT_SEQUENCE = 0xffffffff
17986 Transaction.SIGHASH_ALL = 0x01
17987 Transaction.SIGHASH_NONE = 0x02
17988 Transaction.SIGHASH_SINGLE = 0x03
17989 Transaction.SIGHASH_ANYONECANPAY = 0x80
17990 Transaction.ADVANCED_TRANSACTION_MARKER = 0x00
17991 Transaction.ADVANCED_TRANSACTION_FLAG = 0x01
17992
17993 var EMPTY_SCRIPT = Buffer.allocUnsafe(0)
17994 var EMPTY_WITNESS = []
17995 var ZERO = Buffer.from('0000000000000000000000000000000000000000000000000000000000000000', 'hex')
17996 var ONE = Buffer.from('0000000000000000000000000000000000000000000000000000000000000001', 'hex')
17997 var VALUE_UINT64_MAX = Buffer.from('ffffffffffffffff', 'hex')
17998 var BLANK_OUTPUT = {
17999 script: EMPTY_SCRIPT,
18000 valueBuffer: VALUE_UINT64_MAX
18001 }
18002
18003 Transaction.fromBuffer = function (buffer, __noStrict) {
18004 var offset = 0
18005 function readSlice (n) {
18006 offset += n
18007 return buffer.slice(offset - n, offset)
18008 }
18009
18010 function readUInt32 () {
18011 var i = buffer.readUInt32LE(offset)
18012 offset += 4
18013 return i
18014 }
18015
18016 function readInt32 () {
18017 var i = buffer.readInt32LE(offset)
18018 offset += 4
18019 return i
18020 }
18021
18022 function readUInt64 () {
18023 var i = bufferutils.readUInt64LE(buffer, offset)
18024 offset += 8
18025 return i
18026 }
18027
18028 function readVarInt () {
18029 var vi = varuint.decode(buffer, offset)
18030 offset += varuint.decode.bytes
18031 return vi
18032 }
18033
18034 function readVarSlice () {
18035 return readSlice(readVarInt())
18036 }
18037
18038 function readVector () {
18039 var count = readVarInt()
18040 var vector = []
18041 for (var i = 0; i < count; i++) vector.push(readVarSlice())
18042 return vector
18043 }
18044
18045 var tx = new Transaction()
18046 tx.version = readInt32()
18047
18048 var marker = buffer.readUInt8(offset)
18049 var flag = buffer.readUInt8(offset + 1)
18050
18051 var hasWitnesses = false
18052 if (marker === Transaction.ADVANCED_TRANSACTION_MARKER &&
18053 flag === Transaction.ADVANCED_TRANSACTION_FLAG) {
18054 offset += 2
18055 hasWitnesses = true
18056 }
18057
18058 var vinLen = readVarInt()
18059 for (var i = 0; i < vinLen; ++i) {
18060 tx.ins.push({
18061 hash: readSlice(32),
18062 index: readUInt32(),
18063 script: readVarSlice(),
18064 sequence: readUInt32(),
18065 witness: EMPTY_WITNESS
18066 })
18067 }
18068
18069 var voutLen = readVarInt()
18070 for (i = 0; i < voutLen; ++i) {
18071 tx.outs.push({
18072 value: readUInt64(),
18073 script: readVarSlice()
18074 })
18075 }
18076
18077 if (hasWitnesses) {
18078 for (i = 0; i < vinLen; ++i) {
18079 tx.ins[i].witness = readVector()
18080 }
18081
18082 // was this pointless?
18083 if (!tx.hasWitnesses()) throw new Error('Transaction has superfluous witness data')
18084 }
18085
18086 tx.locktime = readUInt32()
18087
18088 if (__noStrict) return tx
18089 if (offset !== buffer.length) throw new Error('Transaction has unexpected data')
18090
18091 return tx
18092 }
18093
18094 Transaction.fromHex = function (hex) {
18095 return Transaction.fromBuffer(Buffer.from(hex, 'hex'))
18096 }
18097
18098 Transaction.isCoinbaseHash = function (buffer) {
18099 typeforce(types.Hash256bit, buffer)
18100 for (var i = 0; i < 32; ++i) {
18101 if (buffer[i] !== 0) return false
18102 }
18103 return true
18104 }
18105
18106 Transaction.prototype.isCoinbase = function () {
18107 return this.ins.length === 1 && Transaction.isCoinbaseHash(this.ins[0].hash)
18108 }
18109
18110 Transaction.prototype.addInput = function (hash, index, sequence, scriptSig) {
18111 typeforce(types.tuple(
18112 types.Hash256bit,
18113 types.UInt32,
18114 types.maybe(types.UInt32),
18115 types.maybe(types.Buffer)
18116 ), arguments)
18117
18118 if (types.Null(sequence)) {
18119 sequence = Transaction.DEFAULT_SEQUENCE
18120 }
18121
18122 // Add the input and return the input's index
18123 return (this.ins.push({
18124 hash: hash,
18125 index: index,
18126 script: scriptSig || EMPTY_SCRIPT,
18127 sequence: sequence,
18128 witness: EMPTY_WITNESS
18129 }) - 1)
18130 }
18131
18132 Transaction.prototype.addOutput = function (scriptPubKey, value) {
18133 typeforce(types.tuple(types.Buffer, types.Satoshi), arguments)
18134
18135 // Add the output and return the output's index
18136 return (this.outs.push({
18137 script: scriptPubKey,
18138 value: value
18139 }) - 1)
18140 }
18141
18142 Transaction.prototype.hasWitnesses = function () {
18143 return this.ins.some(function (x) {
18144 return x.witness.length !== 0
18145 })
18146 }
18147
18148 Transaction.prototype.weight = function () {
18149 var base = this.__byteLength(false)
18150 var total = this.__byteLength(true)
18151 return base * 3 + total
18152 }
18153
18154 Transaction.prototype.virtualSize = function () {
18155 return Math.ceil(this.weight() / 4)
18156 }
18157
18158 Transaction.prototype.byteLength = function () {
18159 return this.__byteLength(true)
18160 }
18161
18162 Transaction.prototype.__byteLength = function (__allowWitness) {
18163 var hasWitnesses = __allowWitness && this.hasWitnesses()
18164
18165 return (
18166 (hasWitnesses ? 10 : 8) +
18167 varuint.encodingLength(this.ins.length) +
18168 varuint.encodingLength(this.outs.length) +
18169 this.ins.reduce(function (sum, input) { return sum + 40 + varSliceSize(input.script) }, 0) +
18170 this.outs.reduce(function (sum, output) { return sum + 8 + varSliceSize(output.script) }, 0) +
18171 (hasWitnesses ? this.ins.reduce(function (sum, input) { return sum + vectorSize(input.witness) }, 0) : 0)
18172 )
18173 }
18174
18175 Transaction.prototype.clone = function () {
18176 var newTx = new Transaction()
18177 newTx.version = this.version
18178 newTx.locktime = this.locktime
18179
18180 newTx.ins = this.ins.map(function (txIn) {
18181 return {
18182 hash: txIn.hash,
18183 index: txIn.index,
18184 script: txIn.script,
18185 sequence: txIn.sequence,
18186 witness: txIn.witness
18187 }
18188 })
18189
18190 newTx.outs = this.outs.map(function (txOut) {
18191 return {
18192 script: txOut.script,
18193 value: txOut.value
18194 }
18195 })
18196
18197 return newTx
18198 }
18199
18200 /**
18201 * Hash transaction for signing a specific input.
18202 *
18203 * Bitcoin uses a different hash for each signed transaction input.
18204 * This method copies the transaction, makes the necessary changes based on the
18205 * hashType, and then hashes the result.
18206 * This hash can then be used to sign the provided transaction input.
18207 */
18208 Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
18209 typeforce(types.tuple(types.UInt32, types.Buffer, /* types.UInt8 */ types.Number), arguments)
18210
18211 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L29
18212 if (inIndex >= this.ins.length) return ONE
18213
18214 // ignore OP_CODESEPARATOR
18215 var ourScript = bscript.compile(bscript.decompile(prevOutScript).filter(function (x) {
18216 return x !== opcodes.OP_CODESEPARATOR
18217 }))
18218
18219 var txTmp = this.clone()
18220
18221 // SIGHASH_NONE: ignore all outputs? (wildcard payee)
18222 if ((hashType & 0x1f) === Transaction.SIGHASH_NONE) {
18223 txTmp.outs = []
18224
18225 // ignore sequence numbers (except at inIndex)
18226 txTmp.ins.forEach(function (input, i) {
18227 if (i === inIndex) return
18228
18229 input.sequence = 0
18230 })
18231
18232 // SIGHASH_SINGLE: ignore all outputs, except at the same index?
18233 } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE) {
18234 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L60
18235 if (inIndex >= this.outs.length) return ONE
18236
18237 // truncate outputs after
18238 txTmp.outs.length = inIndex + 1
18239
18240 // "blank" outputs before
18241 for (var i = 0; i < inIndex; i++) {
18242 txTmp.outs[i] = BLANK_OUTPUT
18243 }
18244
18245 // ignore sequence numbers (except at inIndex)
18246 txTmp.ins.forEach(function (input, y) {
18247 if (y === inIndex) return
18248
18249 input.sequence = 0
18250 })
18251 }
18252
18253 // SIGHASH_ANYONECANPAY: ignore inputs entirely?
18254 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
18255 txTmp.ins = [txTmp.ins[inIndex]]
18256 txTmp.ins[0].script = ourScript
18257
18258 // SIGHASH_ALL: only ignore input scripts
18259 } else {
18260 // "blank" others input scripts
18261 txTmp.ins.forEach(function (input) { input.script = EMPTY_SCRIPT })
18262 txTmp.ins[inIndex].script = ourScript
18263 }
18264
18265 // serialize and hash
18266 var buffer = Buffer.allocUnsafe(txTmp.__byteLength(false) + 4)
18267 buffer.writeInt32LE(hashType, buffer.length - 4)
18268 txTmp.__toBuffer(buffer, 0, false)
18269
18270 return bcrypto.hash256(buffer)
18271 }
18272
18273 Transaction.prototype.hashForWitnessV0 = function (inIndex, prevOutScript, value, hashType) {
18274 typeforce(types.tuple(types.UInt32, types.Buffer, types.Satoshi, types.UInt32), arguments)
18275
18276 var tbuffer, toffset
18277 function writeSlice (slice) { toffset += slice.copy(tbuffer, toffset) }
18278 function writeUInt32 (i) { toffset = tbuffer.writeUInt32LE(i, toffset) }
18279 function writeUInt64 (i) { toffset = bufferutils.writeUInt64LE(tbuffer, i, toffset) }
18280 function writeVarInt (i) {
18281 varuint.encode(i, tbuffer, toffset)
18282 toffset += varuint.encode.bytes
18283 }
18284 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18285
18286 var hashOutputs = ZERO
18287 var hashPrevouts = ZERO
18288 var hashSequence = ZERO
18289
18290 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY)) {
18291 tbuffer = Buffer.allocUnsafe(36 * this.ins.length)
18292 toffset = 0
18293
18294 this.ins.forEach(function (txIn) {
18295 writeSlice(txIn.hash)
18296 writeUInt32(txIn.index)
18297 })
18298
18299 hashPrevouts = bcrypto.hash256(tbuffer)
18300 }
18301
18302 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY) &&
18303 (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&
18304 (hashType & 0x1f) !== Transaction.SIGHASH_NONE) {
18305 tbuffer = Buffer.allocUnsafe(4 * this.ins.length)
18306 toffset = 0
18307
18308 this.ins.forEach(function (txIn) {
18309 writeUInt32(txIn.sequence)
18310 })
18311
18312 hashSequence = bcrypto.hash256(tbuffer)
18313 }
18314
18315 if ((hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&
18316 (hashType & 0x1f) !== Transaction.SIGHASH_NONE) {
18317 var txOutsSize = this.outs.reduce(function (sum, output) {
18318 return sum + 8 + varSliceSize(output.script)
18319 }, 0)
18320
18321 tbuffer = Buffer.allocUnsafe(txOutsSize)
18322 toffset = 0
18323
18324 this.outs.forEach(function (out) {
18325 writeUInt64(out.value)
18326 writeVarSlice(out.script)
18327 })
18328
18329 hashOutputs = bcrypto.hash256(tbuffer)
18330 } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE && inIndex < this.outs.length) {
18331 var output = this.outs[inIndex]
18332
18333 tbuffer = Buffer.allocUnsafe(8 + varSliceSize(output.script))
18334 toffset = 0
18335 writeUInt64(output.value)
18336 writeVarSlice(output.script)
18337
18338 hashOutputs = bcrypto.hash256(tbuffer)
18339 }
18340
18341 tbuffer = Buffer.allocUnsafe(156 + varSliceSize(prevOutScript))
18342 toffset = 0
18343
18344 var input = this.ins[inIndex]
18345 writeUInt32(this.version)
18346 writeSlice(hashPrevouts)
18347 writeSlice(hashSequence)
18348 writeSlice(input.hash)
18349 writeUInt32(input.index)
18350 writeVarSlice(prevOutScript)
18351 writeUInt64(value)
18352 writeUInt32(input.sequence)
18353 writeSlice(hashOutputs)
18354 writeUInt32(this.locktime)
18355 writeUInt32(hashType)
18356 return bcrypto.hash256(tbuffer)
18357 }
18358
18359 Transaction.prototype.getHash = function () {
18360 return bcrypto.hash256(this.__toBuffer(undefined, undefined, false))
18361 }
18362
18363 Transaction.prototype.getId = function () {
18364 // transaction hash's are displayed in reverse order
18365 return this.getHash().reverse().toString('hex')
18366 }
18367
18368 Transaction.prototype.toBuffer = function (buffer, initialOffset) {
18369 return this.__toBuffer(buffer, initialOffset, true)
18370 }
18371
18372 Transaction.prototype.__toBuffer = function (buffer, initialOffset, __allowWitness) {
18373 if (!buffer) buffer = Buffer.allocUnsafe(this.__byteLength(__allowWitness))
18374
18375 var offset = initialOffset || 0
18376 function writeSlice (slice) { offset += slice.copy(buffer, offset) }
18377 function writeUInt8 (i) { offset = buffer.writeUInt8(i, offset) }
18378 function writeUInt32 (i) { offset = buffer.writeUInt32LE(i, offset) }
18379 function writeInt32 (i) { offset = buffer.writeInt32LE(i, offset) }
18380 function writeUInt64 (i) { offset = bufferutils.writeUInt64LE(buffer, i, offset) }
18381 function writeVarInt (i) {
18382 varuint.encode(i, buffer, offset)
18383 offset += varuint.encode.bytes
18384 }
18385 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18386 function writeVector (vector) { writeVarInt(vector.length); vector.forEach(writeVarSlice) }
18387
18388 writeInt32(this.version)
18389
18390 var hasWitnesses = __allowWitness && this.hasWitnesses()
18391
18392 if (hasWitnesses) {
18393 writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER)
18394 writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG)
18395 }
18396
18397 writeVarInt(this.ins.length)
18398
18399 this.ins.forEach(function (txIn) {
18400 writeSlice(txIn.hash)
18401 writeUInt32(txIn.index)
18402 writeVarSlice(txIn.script)
18403 writeUInt32(txIn.sequence)
18404 })
18405
18406 writeVarInt(this.outs.length)
18407 this.outs.forEach(function (txOut) {
18408 if (!txOut.valueBuffer) {
18409 writeUInt64(txOut.value)
18410 } else {
18411 writeSlice(txOut.valueBuffer)
18412 }
18413
18414 writeVarSlice(txOut.script)
18415 })
18416
18417 if (hasWitnesses) {
18418 this.ins.forEach(function (input) {
18419 writeVector(input.witness)
18420 })
18421 }
18422
18423 writeUInt32(this.locktime)
18424
18425 // avoid slicing unless necessary
18426 if (initialOffset !== undefined) return buffer.slice(initialOffset, offset)
18427 return buffer
18428 }
18429
18430 Transaction.prototype.toHex = function () {
18431 return this.toBuffer().toString('hex')
18432 }
18433
18434 Transaction.prototype.setInputScript = function (index, scriptSig) {
18435 typeforce(types.tuple(types.Number, types.Buffer), arguments)
18436
18437 this.ins[index].script = scriptSig
18438 }
18439
18440 Transaction.prototype.setWitness = function (index, witness) {
18441 typeforce(types.tuple(types.Number, [types.Buffer]), arguments)
18442
18443 this.ins[index].witness = witness
18444 }
18445
18446 module.exports = Transaction
18447
18448 },{"./bufferutils":44,"./crypto":45,"./script":52,"./types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109,"varuint-bitcoin":111}],77:[function(require,module,exports){
18449 var Buffer = require('safe-buffer').Buffer
18450 var baddress = require('./address')
18451 var bcrypto = require('./crypto')
18452 var bscript = require('./script')
18453 var networks = require('./networks')
18454 var ops = require('bitcoin-ops')
18455 var typeforce = require('typeforce')
18456 var types = require('./types')
18457 var scriptTypes = bscript.types
18458 var SIGNABLE = [bscript.types.P2PKH, bscript.types.P2PK, bscript.types.MULTISIG]
18459 var P2SH = SIGNABLE.concat([bscript.types.P2WPKH, bscript.types.P2WSH])
18460
18461 var ECPair = require('./ecpair')
18462 var ECSignature = require('./ecsignature')
18463 var Transaction = require('./transaction')
18464
18465 function extractChunks (type, chunks, script) {
18466 var pubKeys = []
18467 var signatures = []
18468 switch (type) {
18469 case scriptTypes.P2PKH:
18470 // if (redeemScript) throw new Error('Nonstandard... P2SH(P2PKH)')
18471 pubKeys = chunks.slice(1)
18472 signatures = chunks.slice(0, 1)
18473 break
18474
18475 case scriptTypes.P2PK:
18476 pubKeys[0] = script ? bscript.pubKey.output.decode(script) : undefined
18477 signatures = chunks.slice(0, 1)
18478 break
18479
18480 case scriptTypes.MULTISIG:
18481 if (script) {
18482 var multisig = bscript.multisig.output.decode(script)
18483 pubKeys = multisig.pubKeys
18484 }
18485
18486 signatures = chunks.slice(1).map(function (chunk) {
18487 return chunk.length === 0 ? undefined : chunk
18488 })
18489 break
18490 }
18491
18492 return {
18493 pubKeys: pubKeys,
18494 signatures: signatures
18495 }
18496 }
18497 function expandInput (scriptSig, witnessStack) {
18498 if (scriptSig.length === 0 && witnessStack.length === 0) return {}
18499
18500 var prevOutScript
18501 var prevOutType
18502 var scriptType
18503 var script
18504 var redeemScript
18505 var witnessScript
18506 var witnessScriptType
18507 var redeemScriptType
18508 var witness = false
18509 var p2wsh = false
18510 var p2sh = false
18511 var witnessProgram
18512 var chunks
18513
18514 var scriptSigChunks = bscript.decompile(scriptSig)
18515 var sigType = bscript.classifyInput(scriptSigChunks, true)
18516 if (sigType === scriptTypes.P2SH) {
18517 p2sh = true
18518 redeemScript = scriptSigChunks[scriptSigChunks.length - 1]
18519 redeemScriptType = bscript.classifyOutput(redeemScript)
18520 prevOutScript = bscript.scriptHash.output.encode(bcrypto.hash160(redeemScript))
18521 prevOutType = scriptTypes.P2SH
18522 script = redeemScript
18523 }
18524
18525 var classifyWitness = bscript.classifyWitness(witnessStack)
18526 if (classifyWitness === scriptTypes.P2WSH) {
18527 witnessScript = witnessStack[witnessStack.length - 1]
18528 witnessScriptType = bscript.classifyOutput(witnessScript)
18529 p2wsh = true
18530 if (scriptSig.length === 0) {
18531 prevOutScript = bscript.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18532 prevOutType = scriptTypes.P2WSH
18533 if (typeof redeemScript !== 'undefined') {
18534 throw new Error('Redeem script given when unnecessary')
18535 }
18536 // bare witness
18537 } else {
18538 if (!redeemScript) {
18539 throw new Error('No redeemScript provided for P2WSH, but scriptSig non-empty')
18540 }
18541 witnessProgram = bscript.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18542 if (!redeemScript.equals(witnessProgram)) {
18543 throw new Error('Redeem script didn\'t match witnessScript')
18544 }
18545 }
18546
18547 if (SIGNABLE.indexOf(bscript.classifyOutput(witnessScript)) === -1) {
18548 throw new Error('unsupported witness script')
18549 }
18550 script = witnessScript
18551 scriptType = witnessScriptType
18552 chunks = witnessStack.slice(0, -1)
18553 } else if (classifyWitness === scriptTypes.P2WPKH) {
18554 var key = witnessStack[witnessStack.length - 1]
18555 var keyHash = bcrypto.hash160(key)
18556 if (scriptSig.length === 0) {
18557 prevOutScript = bscript.witnessPubKeyHash.output.encode(keyHash)
18558 prevOutType = scriptTypes.P2WPKH
18559 if (typeof redeemScript !== 'undefined') {
18560 throw new Error('Redeem script given when unnecessary')
18561 }
18562 } else {
18563 if (!redeemScript) {
18564 throw new Error('No redeemScript provided for P2WPKH, but scriptSig wasn\'t empty')
18565 }
18566 witnessProgram = bscript.witnessPubKeyHash.output.encode(keyHash)
18567 if (!redeemScript.equals(witnessProgram)) {
18568 throw new Error('Redeem script did not have the right witness program')
18569 }
18570 }
18571
18572 scriptType = scriptTypes.P2PKH
18573 chunks = witnessStack
18574 } else if (redeemScript) {
18575 if (P2SH.indexOf(redeemScriptType) === -1) {
18576 throw new Error('Bad redeemscript!')
18577 }
18578
18579 script = redeemScript
18580 scriptType = redeemScriptType
18581 chunks = scriptSigChunks.slice(0, -1)
18582 } else {
18583 prevOutType = scriptType = bscript.classifyInput(scriptSig)
18584 chunks = scriptSigChunks
18585 }
18586
18587 var expanded = extractChunks(scriptType, chunks, script)
18588
18589 var result = {
18590 pubKeys: expanded.pubKeys,
18591 signatures: expanded.signatures,
18592 prevOutScript: prevOutScript,
18593 prevOutType: prevOutType,
18594 signType: scriptType,
18595 signScript: script,
18596 witness: Boolean(witness)
18597 }
18598
18599 if (p2sh) {
18600 result.redeemScript = redeemScript
18601 result.redeemScriptType = redeemScriptType
18602 }
18603
18604 if (p2wsh) {
18605 result.witnessScript = witnessScript
18606 result.witnessScriptType = witnessScriptType
18607 }
18608
18609 return result
18610 }
18611
18612 // could be done in expandInput, but requires the original Transaction for hashForSignature
18613 function fixMultisigOrder (input, transaction, vin) {
18614 if (input.redeemScriptType !== scriptTypes.MULTISIG || !input.redeemScript) return
18615 if (input.pubKeys.length === input.signatures.length) return
18616
18617 var unmatched = input.signatures.concat()
18618
18619 input.signatures = input.pubKeys.map(function (pubKey) {
18620 var keyPair = ECPair.fromPublicKeyBuffer(pubKey)
18621 var match
18622
18623 // check for a signature
18624 unmatched.some(function (signature, i) {
18625 // skip if undefined || OP_0
18626 if (!signature) return false
18627
18628 // TODO: avoid O(n) hashForSignature
18629 var parsed = ECSignature.parseScriptSignature(signature)
18630 var hash = transaction.hashForSignature(vin, input.redeemScript, parsed.hashType)
18631
18632 // skip if signature does not match pubKey
18633 if (!keyPair.verify(hash, parsed.signature)) return false
18634
18635 // remove matched signature from unmatched
18636 unmatched[i] = undefined
18637 match = signature
18638
18639 return true
18640 })
18641
18642 return match
18643 })
18644 }
18645
18646 function expandOutput (script, scriptType, ourPubKey) {
18647 typeforce(types.Buffer, script)
18648
18649 var scriptChunks = bscript.decompile(script)
18650 if (!scriptType) {
18651 scriptType = bscript.classifyOutput(script)
18652 }
18653
18654 var pubKeys = []
18655
18656 switch (scriptType) {
18657 // does our hash160(pubKey) match the output scripts?
18658 case scriptTypes.P2PKH:
18659 if (!ourPubKey) break
18660
18661 var pkh1 = scriptChunks[2]
18662 var pkh2 = bcrypto.hash160(ourPubKey)
18663 if (pkh1.equals(pkh2)) pubKeys = [ourPubKey]
18664 break
18665
18666 // does our hash160(pubKey) match the output scripts?
18667 case scriptTypes.P2WPKH:
18668 if (!ourPubKey) break
18669
18670 var wpkh1 = scriptChunks[1]
18671 var wpkh2 = bcrypto.hash160(ourPubKey)
18672 if (wpkh1.equals(wpkh2)) pubKeys = [ourPubKey]
18673 break
18674
18675 case scriptTypes.P2PK:
18676 pubKeys = scriptChunks.slice(0, 1)
18677 break
18678
18679 case scriptTypes.MULTISIG:
18680 pubKeys = scriptChunks.slice(1, -2)
18681 break
18682
18683 default: return { scriptType: scriptType }
18684 }
18685
18686 return {
18687 pubKeys: pubKeys,
18688 scriptType: scriptType,
18689 signatures: pubKeys.map(function () { return undefined })
18690 }
18691 }
18692
18693 function checkP2shInput (input, redeemScriptHash) {
18694 if (input.prevOutType) {
18695 if (input.prevOutType !== scriptTypes.P2SH) throw new Error('PrevOutScript must be P2SH')
18696
18697 var prevOutScriptScriptHash = bscript.decompile(input.prevOutScript)[1]
18698 if (!prevOutScriptScriptHash.equals(redeemScriptHash)) throw new Error('Inconsistent hash160(RedeemScript)')
18699 }
18700 }
18701
18702 function checkP2WSHInput (input, witnessScriptHash) {
18703 if (input.prevOutType) {
18704 if (input.prevOutType !== scriptTypes.P2WSH) throw new Error('PrevOutScript must be P2WSH')
18705
18706 var scriptHash = bscript.decompile(input.prevOutScript)[1]
18707 if (!scriptHash.equals(witnessScriptHash)) throw new Error('Inconsistent sha25(WitnessScript)')
18708 }
18709 }
18710
18711 function prepareInput (input, kpPubKey, redeemScript, witnessValue, witnessScript) {
18712 var expanded
18713 var prevOutType
18714 var prevOutScript
18715
18716 var p2sh = false
18717 var p2shType
18718 var redeemScriptHash
18719
18720 var witness = false
18721 var p2wsh = false
18722 var witnessType
18723 var witnessScriptHash
18724
18725 var signType
18726 var signScript
18727
18728 if (redeemScript && witnessScript) {
18729 redeemScriptHash = bcrypto.hash160(redeemScript)
18730 witnessScriptHash = bcrypto.sha256(witnessScript)
18731 checkP2shInput(input, redeemScriptHash)
18732
18733 if (!redeemScript.equals(bscript.witnessScriptHash.output.encode(witnessScriptHash))) throw new Error('Witness script inconsistent with redeem script')
18734
18735 expanded = expandOutput(witnessScript, undefined, kpPubKey)
18736 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
18737 prevOutType = bscript.types.P2SH
18738 prevOutScript = bscript.scriptHash.output.encode(redeemScriptHash)
18739 p2sh = witness = p2wsh = true
18740 p2shType = bscript.types.P2WSH
18741 signType = witnessType = expanded.scriptType
18742 signScript = witnessScript
18743 } else if (redeemScript) {
18744 redeemScriptHash = bcrypto.hash160(redeemScript)
18745 checkP2shInput(input, redeemScriptHash)
18746
18747 expanded = expandOutput(redeemScript, undefined, kpPubKey)
18748 if (!expanded.pubKeys) throw new Error('RedeemScript not supported "' + bscript.toASM(redeemScript) + '"')
18749
18750 prevOutType = bscript.types.P2SH
18751 prevOutScript = bscript.scriptHash.output.encode(redeemScriptHash)
18752 p2sh = true
18753 signType = p2shType = expanded.scriptType
18754 signScript = redeemScript
18755 witness = signType === bscript.types.P2WPKH
18756 } else if (witnessScript) {
18757 witnessScriptHash = bcrypto.sha256(witnessScript)
18758 checkP2WSHInput(input, witnessScriptHash)
18759
18760 expanded = expandOutput(witnessScript, undefined, kpPubKey)
18761 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
18762
18763 prevOutType = bscript.types.P2WSH
18764 prevOutScript = bscript.witnessScriptHash.output.encode(witnessScriptHash)
18765 witness = p2wsh = true
18766 signType = witnessType = expanded.scriptType
18767 signScript = witnessScript
18768 } else if (input.prevOutType) {
18769 // embedded scripts are not possible without a redeemScript
18770 if (input.prevOutType === scriptTypes.P2SH ||
18771 input.prevOutType === scriptTypes.P2WSH) {
18772 throw new Error('PrevOutScript is ' + input.prevOutType + ', requires redeemScript')
18773 }
18774
18775 prevOutType = input.prevOutType
18776 prevOutScript = input.prevOutScript
18777 expanded = expandOutput(input.prevOutScript, input.prevOutType, kpPubKey)
18778 if (!expanded.pubKeys) return
18779
18780 witness = (input.prevOutType === scriptTypes.P2WPKH)
18781 signType = prevOutType
18782 signScript = prevOutScript
18783 } else {
18784 prevOutScript = bscript.pubKeyHash.output.encode(bcrypto.hash160(kpPubKey))
18785 expanded = expandOutput(prevOutScript, scriptTypes.P2PKH, kpPubKey)
18786 prevOutType = scriptTypes.P2PKH
18787 witness = false
18788 signType = prevOutType
18789 signScript = prevOutScript
18790 }
18791
18792 if (witness && !types.Satoshi(witnessValue)) {
18793 throw new Error('Input was witness but not given witness value')
18794 }
18795
18796 if (signType === scriptTypes.P2WPKH) {
18797 signScript = bscript.pubKeyHash.output.encode(bscript.witnessPubKeyHash.output.decode(signScript))
18798 }
18799
18800 if (p2sh) {
18801 input.redeemScript = redeemScript
18802 input.redeemScriptType = p2shType
18803 }
18804
18805 if (p2wsh) {
18806 input.witnessScript = witnessScript
18807 input.witnessScriptType = witnessType
18808 }
18809
18810 input.pubKeys = expanded.pubKeys
18811 input.signatures = expanded.signatures
18812 input.signScript = signScript
18813 input.signType = signType
18814 input.prevOutScript = prevOutScript
18815 input.prevOutType = prevOutType
18816 input.witness = witness
18817 }
18818
18819 function buildStack (type, signatures, pubKeys, allowIncomplete) {
18820 if (type === scriptTypes.P2PKH) {
18821 if (signatures.length === 1 && Buffer.isBuffer(signatures[0]) && pubKeys.length === 1) return bscript.pubKeyHash.input.encodeStack(signatures[0], pubKeys[0])
18822 } else if (type === scriptTypes.P2PK) {
18823 if (signatures.length === 1 && Buffer.isBuffer(signatures[0])) return bscript.pubKey.input.encodeStack(signatures[0])
18824 } else if (type === scriptTypes.MULTISIG) {
18825 if (signatures.length > 0) {
18826 signatures = signatures.map(function (signature) {
18827 return signature || ops.OP_0
18828 })
18829 if (!allowIncomplete) {
18830 // remove blank signatures
18831 signatures = signatures.filter(function (x) { return x !== ops.OP_0 })
18832 }
18833
18834 return bscript.multisig.input.encodeStack(signatures /* see if it's necessary first */)
18835 }
18836 } else {
18837 throw new Error('Not yet supported')
18838 }
18839
18840 if (!allowIncomplete) throw new Error('Not enough signatures provided')
18841
18842 return []
18843 }
18844
18845 function buildInput (input, allowIncomplete) {
18846 var scriptType = input.prevOutType
18847 var sig = []
18848 var witness = []
18849 if (SIGNABLE.indexOf(scriptType) !== -1) {
18850 sig = buildStack(scriptType, input.signatures, input.pubKeys, allowIncomplete)
18851 }
18852
18853 var p2sh = false
18854 if (scriptType === bscript.types.P2SH) {
18855 // We can remove this error later when we have a guarantee prepareInput
18856 // rejects unsignable scripts - it MUST be signable at this point.
18857 if (P2SH.indexOf(input.redeemScriptType) === -1) {
18858 throw new Error('Impossible to sign this type')
18859 }
18860 p2sh = true
18861 if (SIGNABLE.indexOf(input.redeemScriptType) !== -1) {
18862 sig = buildStack(input.redeemScriptType, input.signatures, input.pubKeys, allowIncomplete)
18863 }
18864 // If it wasn't SIGNABLE, it's witness, defer to that
18865 scriptType = input.redeemScriptType
18866 }
18867
18868 if (scriptType === bscript.types.P2WPKH) {
18869 // P2WPKH is a special case of P2PKH
18870 witness = buildStack(bscript.types.P2PKH, input.signatures, input.pubKeys, allowIncomplete)
18871 } else if (scriptType === bscript.types.P2WSH) {
18872 // We can remove this check later
18873 if (SIGNABLE.indexOf(input.witnessScriptType) !== -1) {
18874 witness = buildStack(input.witnessScriptType, input.signatures, input.pubKeys, allowIncomplete)
18875 witness.push(input.witnessScript)
18876 } else {
18877 // We can remove this error later when we have a guarantee prepareInput
18878 // rejects unsignble scripts - it MUST be signable at this point.
18879 throw new Error()
18880 }
18881
18882 scriptType = input.witnessScriptType
18883 }
18884
18885 // append redeemScript if necessary
18886 if (p2sh) {
18887 sig.push(input.redeemScript)
18888 }
18889
18890 return {
18891 type: scriptType,
18892 script: bscript.compile(sig),
18893 witness: witness
18894 }
18895 }
18896
18897 function TransactionBuilder (network, maximumFeeRate) {
18898 this.prevTxMap = {}
18899 this.network = network || networks.bitcoin
18900
18901 // WARNING: This is __NOT__ to be relied on, its just another potential safety mechanism (safety in-depth)
18902 this.maximumFeeRate = maximumFeeRate || 1000
18903
18904 this.inputs = []
18905 this.tx = new Transaction()
18906 }
18907
18908 TransactionBuilder.prototype.setLockTime = function (locktime) {
18909 typeforce(types.UInt32, locktime)
18910
18911 // if any signatures exist, throw
18912 if (this.inputs.some(function (input) {
18913 if (!input.signatures) return false
18914
18915 return input.signatures.some(function (s) { return s })
18916 })) {
18917 throw new Error('No, this would invalidate signatures')
18918 }
18919
18920 this.tx.locktime = locktime
18921 }
18922
18923 TransactionBuilder.prototype.setVersion = function (version) {
18924 typeforce(types.UInt32, version)
18925
18926 // XXX: this might eventually become more complex depending on what the versions represent
18927 this.tx.version = version
18928 }
18929
18930 TransactionBuilder.fromTransaction = function (transaction, network) {
18931 var txb = new TransactionBuilder(network)
18932
18933 // Copy transaction fields
18934 txb.setVersion(transaction.version)
18935 txb.setLockTime(transaction.locktime)
18936
18937 // Copy outputs (done first to avoid signature invalidation)
18938 transaction.outs.forEach(function (txOut) {
18939 txb.addOutput(txOut.script, txOut.value)
18940 })
18941
18942 // Copy inputs
18943 transaction.ins.forEach(function (txIn) {
18944 txb.__addInputUnsafe(txIn.hash, txIn.index, {
18945 sequence: txIn.sequence,
18946 script: txIn.script,
18947 witness: txIn.witness
18948 })
18949 })
18950
18951 // fix some things not possible through the public API
18952 txb.inputs.forEach(function (input, i) {
18953 fixMultisigOrder(input, transaction, i)
18954 })
18955
18956 return txb
18957 }
18958
18959 TransactionBuilder.prototype.addInput = function (txHash, vout, sequence, prevOutScript) {
18960 if (!this.__canModifyInputs()) {
18961 throw new Error('No, this would invalidate signatures')
18962 }
18963
18964 var value
18965
18966 // is it a hex string?
18967 if (typeof txHash === 'string') {
18968 // transaction hashs's are displayed in reverse order, un-reverse it
18969 txHash = Buffer.from(txHash, 'hex').reverse()
18970
18971 // is it a Transaction object?
18972 } else if (txHash instanceof Transaction) {
18973 var txOut = txHash.outs[vout]
18974 prevOutScript = txOut.script
18975 value = txOut.value
18976
18977 txHash = txHash.getHash()
18978 }
18979
18980 return this.__addInputUnsafe(txHash, vout, {
18981 sequence: sequence,
18982 prevOutScript: prevOutScript,
18983 value: value
18984 })
18985 }
18986
18987 TransactionBuilder.prototype.__addInputUnsafe = function (txHash, vout, options) {
18988 if (Transaction.isCoinbaseHash(txHash)) {
18989 throw new Error('coinbase inputs not supported')
18990 }
18991
18992 var prevTxOut = txHash.toString('hex') + ':' + vout
18993 if (this.prevTxMap[prevTxOut] !== undefined) throw new Error('Duplicate TxOut: ' + prevTxOut)
18994
18995 var input = {}
18996
18997 // derive what we can from the scriptSig
18998 if (options.script !== undefined) {
18999 input = expandInput(options.script, options.witness || [])
19000 }
19001
19002 // if an input value was given, retain it
19003 if (options.value !== undefined) {
19004 input.value = options.value
19005 }
19006
19007 // derive what we can from the previous transactions output script
19008 if (!input.prevOutScript && options.prevOutScript) {
19009 var prevOutType
19010
19011 if (!input.pubKeys && !input.signatures) {
19012 var expanded = expandOutput(options.prevOutScript)
19013
19014 if (expanded.pubKeys) {
19015 input.pubKeys = expanded.pubKeys
19016 input.signatures = expanded.signatures
19017 }
19018
19019 prevOutType = expanded.scriptType
19020 }
19021
19022 input.prevOutScript = options.prevOutScript
19023 input.prevOutType = prevOutType || bscript.classifyOutput(options.prevOutScript)
19024 }
19025
19026 var vin = this.tx.addInput(txHash, vout, options.sequence, options.scriptSig)
19027 this.inputs[vin] = input
19028 this.prevTxMap[prevTxOut] = vin
19029
19030 return vin
19031 }
19032
19033 TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
19034 if (!this.__canModifyOutputs()) {
19035 throw new Error('No, this would invalidate signatures')
19036 }
19037
19038 // Attempt to get a script if it's a base58 address string
19039 if (typeof scriptPubKey === 'string') {
19040 scriptPubKey = baddress.toOutputScript(scriptPubKey, this.network)
19041 }
19042
19043 return this.tx.addOutput(scriptPubKey, value)
19044 }
19045
19046 TransactionBuilder.prototype.build = function () {
19047 return this.__build(false)
19048 }
19049 TransactionBuilder.prototype.buildIncomplete = function () {
19050 return this.__build(true)
19051 }
19052
19053 TransactionBuilder.prototype.__build = function (allowIncomplete) {
19054 if (!allowIncomplete) {
19055 if (!this.tx.ins.length) throw new Error('Transaction has no inputs')
19056 if (!this.tx.outs.length) throw new Error('Transaction has no outputs')
19057 }
19058
19059 var tx = this.tx.clone()
19060 // Create script signatures from inputs
19061 this.inputs.forEach(function (input, i) {
19062 var scriptType = input.witnessScriptType || input.redeemScriptType || input.prevOutType
19063 if (!scriptType && !allowIncomplete) throw new Error('Transaction is not complete')
19064 var result = buildInput(input, allowIncomplete)
19065
19066 // skip if no result
19067 if (!allowIncomplete) {
19068 if (SIGNABLE.indexOf(result.type) === -1 && result.type !== bscript.types.P2WPKH) {
19069 throw new Error(result.type + ' not supported')
19070 }
19071 }
19072
19073 tx.setInputScript(i, result.script)
19074 tx.setWitness(i, result.witness)
19075 })
19076
19077 if (!allowIncomplete) {
19078 // do not rely on this, its merely a last resort
19079 if (this.__overMaximumFees(tx.byteLength())) {
19080 throw new Error('Transaction has absurd fees')
19081 }
19082 }
19083
19084 return tx
19085 }
19086
19087 function canSign (input) {
19088 return input.prevOutScript !== undefined &&
19089 input.signScript !== undefined &&
19090 input.pubKeys !== undefined &&
19091 input.signatures !== undefined &&
19092 input.signatures.length === input.pubKeys.length &&
19093 input.pubKeys.length > 0 &&
19094 input.witness !== undefined
19095 }
19096
19097 TransactionBuilder.prototype.sign = function (vin, keyPair, redeemScript, hashType, witnessValue, witnessScript) {
19098 if (keyPair.network !== this.network) throw new Error('Inconsistent network')
19099 if (!this.inputs[vin]) throw new Error('No input at index: ' + vin)
19100 hashType = hashType || Transaction.SIGHASH_ALL
19101
19102 var input = this.inputs[vin]
19103
19104 // if redeemScript was previously provided, enforce consistency
19105 if (input.redeemScript !== undefined &&
19106 redeemScript &&
19107 !input.redeemScript.equals(redeemScript)) {
19108 throw new Error('Inconsistent redeemScript')
19109 }
19110
19111 var kpPubKey = keyPair.getPublicKeyBuffer()
19112 if (!canSign(input)) {
19113 prepareInput(input, kpPubKey, redeemScript, witnessValue, witnessScript)
19114 if (!canSign(input)) throw Error(input.prevOutType + ' not supported')
19115 }
19116
19117 // ready to sign
19118 var signatureHash
19119 if (input.witness) {
19120 signatureHash = this.tx.hashForWitnessV0(vin, input.signScript, witnessValue, hashType)
19121 } else {
19122 signatureHash = this.tx.hashForSignature(vin, input.signScript, hashType)
19123 }
19124 // enforce in order signing of public keys
19125 var signed = input.pubKeys.some(function (pubKey, i) {
19126 if (!kpPubKey.equals(pubKey)) return false
19127 if (input.signatures[i]) throw new Error('Signature already exists')
19128
19129 input.signatures[i] = keyPair.sign(signatureHash).toScriptSignature(hashType)
19130 return true
19131 })
19132
19133 if (!signed) throw new Error('Key pair cannot sign for this input')
19134 }
19135
19136 function signatureHashType (buffer) {
19137 return buffer.readUInt8(buffer.length - 1)
19138 }
19139
19140 TransactionBuilder.prototype.__canModifyInputs = function () {
19141 return this.inputs.every(function (input) {
19142 // any signatures?
19143 if (input.signatures === undefined) return true
19144
19145 return input.signatures.every(function (signature) {
19146 if (!signature) return true
19147 var hashType = signatureHashType(signature)
19148
19149 // if SIGHASH_ANYONECANPAY is set, signatures would not
19150 // be invalidated by more inputs
19151 return hashType & Transaction.SIGHASH_ANYONECANPAY
19152 })
19153 })
19154 }
19155
19156 TransactionBuilder.prototype.__canModifyOutputs = function () {
19157 var nInputs = this.tx.ins.length
19158 var nOutputs = this.tx.outs.length
19159
19160 return this.inputs.every(function (input) {
19161 if (input.signatures === undefined) return true
19162
19163 return input.signatures.every(function (signature) {
19164 if (!signature) return true
19165 var hashType = signatureHashType(signature)
19166
19167 var hashTypeMod = hashType & 0x1f
19168 if (hashTypeMod === Transaction.SIGHASH_NONE) return true
19169 if (hashTypeMod === Transaction.SIGHASH_SINGLE) {
19170 // if SIGHASH_SINGLE is set, and nInputs > nOutputs
19171 // some signatures would be invalidated by the addition
19172 // of more outputs
19173 return nInputs <= nOutputs
19174 }
19175 })
19176 })
19177 }
19178
19179 TransactionBuilder.prototype.__overMaximumFees = function (bytes) {
19180 // not all inputs will have .value defined
19181 var incoming = this.inputs.reduce(function (a, x) { return a + (x.value >>> 0) }, 0)
19182
19183 // but all outputs do, and if we have any input value
19184 // we can immediately determine if the outputs are too small
19185 var outgoing = this.tx.outs.reduce(function (a, x) { return a + x.value }, 0)
19186 var fee = incoming - outgoing
19187 var feeRate = fee / bytes
19188
19189 return feeRate > this.maximumFeeRate
19190 }
19191
19192 module.exports = TransactionBuilder
19193
19194 },{"./address":42,"./crypto":45,"./ecpair":47,"./ecsignature":48,"./networks":51,"./script":52,"./transaction":76,"./types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],78:[function(require,module,exports){
19195 var typeforce = require('typeforce')
19196
19197 var UINT31_MAX = Math.pow(2, 31) - 1
19198 function UInt31 (value) {
19199 return typeforce.UInt32(value) && value <= UINT31_MAX
19200 }
19201
19202 function BIP32Path (value) {
19203 return typeforce.String(value) && value.match(/^(m\/)?(\d+'?\/)*\d+'?$/)
19204 }
19205 BIP32Path.toJSON = function () { return 'BIP32 derivation path' }
19206
19207 var SATOSHI_MAX = 21 * 1e14
19208 function Satoshi (value) {
19209 return typeforce.UInt53(value) && value <= SATOSHI_MAX
19210 }
19211
19212 // external dependent types
19213 var BigInt = typeforce.quacksLike('BigInteger')
19214 var ECPoint = typeforce.quacksLike('Point')
19215
19216 // exposed, external API
19217 var ECSignature = typeforce.compile({ r: BigInt, s: BigInt })
19218 var Network = typeforce.compile({
19219 messagePrefix: typeforce.oneOf(typeforce.Buffer, typeforce.String),
19220 bip32: {
19221 public: typeforce.UInt32,
19222 private: typeforce.UInt32
19223 },
19224 pubKeyHash: typeforce.UInt8,
19225 scriptHash: typeforce.UInt8,
19226 wif: typeforce.UInt8
19227 })
19228
19229 // extend typeforce types with ours
19230 var types = {
19231 BigInt: BigInt,
19232 BIP32Path: BIP32Path,
19233 Buffer256bit: typeforce.BufferN(32),
19234 ECPoint: ECPoint,
19235 ECSignature: ECSignature,
19236 Hash160bit: typeforce.BufferN(20),
19237 Hash256bit: typeforce.BufferN(32),
19238 Network: Network,
19239 Satoshi: Satoshi,
19240 UInt31: UInt31
19241 }
19242
19243 for (var typeName in typeforce) {
19244 types[typeName] = typeforce[typeName]
19245 }
19246
19247 module.exports = types
19248
19249 },{"typeforce":109}],79:[function(require,module,exports){
19250 var basex = require('base-x')
19251 var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
19252
19253 module.exports = basex(ALPHABET)
19254
19255 },{"base-x":34}],80:[function(require,module,exports){
19256 (function (Buffer){
19257 'use strict'
19258
19259 var base58 = require('bs58')
19260 var createHash = require('create-hash')
19261
19262 // SHA256(SHA256(buffer))
19263 function sha256x2 (buffer) {
19264 var tmp = createHash('sha256').update(buffer).digest()
19265 return createHash('sha256').update(tmp).digest()
19266 }
19267
19268 // Encode a buffer as a base58-check encoded string
19269 function encode (payload) {
19270 var checksum = sha256x2(payload)
19271
19272 return base58.encode(Buffer.concat([
19273 payload,
19274 checksum
19275 ], payload.length + 4))
19276 }
19277
19278 function decodeRaw (buffer) {
19279 var payload = buffer.slice(0, -4)
19280 var checksum = buffer.slice(-4)
19281 var newChecksum = sha256x2(payload)
19282
19283 if (checksum[0] ^ newChecksum[0] |
19284 checksum[1] ^ newChecksum[1] |
19285 checksum[2] ^ newChecksum[2] |
19286 checksum[3] ^ newChecksum[3]) return
19287
19288 return payload
19289 }
19290
19291 // Decode a base58-check encoded string to a buffer, no result if checksum is wrong
19292 function decodeUnsafe (string) {
19293 var buffer = base58.decodeUnsafe(string)
19294 if (!buffer) return
19295
19296 return decodeRaw(buffer)
19297 }
19298
19299 function decode (string) {
19300 var buffer = base58.decode(string)
19301 var payload = decodeRaw(buffer)
19302 if (!payload) throw new Error('Invalid checksum')
19303 return payload
19304 }
19305
19306 module.exports = {
19307 encode: encode,
19308 decode: decode,
19309 decodeUnsafe: decodeUnsafe
19310 }
19311
19312 }).call(this,require("buffer").Buffer)
19313 },{"bs58":79,"buffer":4,"create-hash":82}],81:[function(require,module,exports){
19314 var Buffer = require('safe-buffer').Buffer
19315 var Transform = require('stream').Transform
19316 var StringDecoder = require('string_decoder').StringDecoder
19317 var inherits = require('inherits')
19318
19319 function CipherBase (hashMode) {
19320 Transform.call(this)
19321 this.hashMode = typeof hashMode === 'string'
19322 if (this.hashMode) {
19323 this[hashMode] = this._finalOrDigest
19324 } else {
19325 this.final = this._finalOrDigest
19326 }
19327 if (this._final) {
19328 this.__final = this._final
19329 this._final = null
19330 }
19331 this._decoder = null
19332 this._encoding = null
19333 }
19334 inherits(CipherBase, Transform)
19335
19336 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
19337 if (typeof data === 'string') {
19338 data = Buffer.from(data, inputEnc)
19339 }
19340
19341 var outData = this._update(data)
19342 if (this.hashMode) return this
19343
19344 if (outputEnc) {
19345 outData = this._toString(outData, outputEnc)
19346 }
19347
19348 return outData
19349 }
19350
19351 CipherBase.prototype.setAutoPadding = function () {}
19352 CipherBase.prototype.getAuthTag = function () {
19353 throw new Error('trying to get auth tag in unsupported state')
19354 }
19355
19356 CipherBase.prototype.setAuthTag = function () {
19357 throw new Error('trying to set auth tag in unsupported state')
19358 }
19359
19360 CipherBase.prototype.setAAD = function () {
19361 throw new Error('trying to set aad in unsupported state')
19362 }
19363
19364 CipherBase.prototype._transform = function (data, _, next) {
19365 var err
19366 try {
19367 if (this.hashMode) {
19368 this._update(data)
19369 } else {
19370 this.push(this._update(data))
19371 }
19372 } catch (e) {
19373 err = e
19374 } finally {
19375 next(err)
19376 }
19377 }
19378 CipherBase.prototype._flush = function (done) {
19379 var err
19380 try {
19381 this.push(this.__final())
19382 } catch (e) {
19383 err = e
19384 }
19385
19386 done(err)
19387 }
19388 CipherBase.prototype._finalOrDigest = function (outputEnc) {
19389 var outData = this.__final() || Buffer.alloc(0)
19390 if (outputEnc) {
19391 outData = this._toString(outData, outputEnc, true)
19392 }
19393 return outData
19394 }
19395
19396 CipherBase.prototype._toString = function (value, enc, fin) {
19397 if (!this._decoder) {
19398 this._decoder = new StringDecoder(enc)
19399 this._encoding = enc
19400 }
19401
19402 if (this._encoding !== enc) throw new Error('can\'t switch encodings')
19403
19404 var out = this._decoder.write(value)
19405 if (fin) {
19406 out += this._decoder.end()
19407 }
19408
19409 return out
19410 }
19411
19412 module.exports = CipherBase
19413
19414 },{"inherits":93,"safe-buffer":98,"stream":27,"string_decoder":28}],82:[function(require,module,exports){
19415 (function (Buffer){
19416 'use strict'
19417 var inherits = require('inherits')
19418 var md5 = require('./md5')
19419 var RIPEMD160 = require('ripemd160')
19420 var sha = require('sha.js')
19421
19422 var Base = require('cipher-base')
19423
19424 function HashNoConstructor (hash) {
19425 Base.call(this, 'digest')
19426
19427 this._hash = hash
19428 this.buffers = []
19429 }
19430
19431 inherits(HashNoConstructor, Base)
19432
19433 HashNoConstructor.prototype._update = function (data) {
19434 this.buffers.push(data)
19435 }
19436
19437 HashNoConstructor.prototype._final = function () {
19438 var buf = Buffer.concat(this.buffers)
19439 var r = this._hash(buf)
19440 this.buffers = null
19441
19442 return r
19443 }
19444
19445 function Hash (hash) {
19446 Base.call(this, 'digest')
19447
19448 this._hash = hash
19449 }
19450
19451 inherits(Hash, Base)
19452
19453 Hash.prototype._update = function (data) {
19454 this._hash.update(data)
19455 }
19456
19457 Hash.prototype._final = function () {
19458 return this._hash.digest()
19459 }
19460
19461 module.exports = function createHash (alg) {
19462 alg = alg.toLowerCase()
19463 if (alg === 'md5') return new HashNoConstructor(md5)
19464 if (alg === 'rmd160' || alg === 'ripemd160') return new Hash(new RIPEMD160())
19465
19466 return new Hash(sha(alg))
19467 }
19468
19469 }).call(this,require("buffer").Buffer)
19470 },{"./md5":84,"buffer":4,"cipher-base":81,"inherits":93,"ripemd160":97,"sha.js":100}],83:[function(require,module,exports){
19471 (function (Buffer){
19472 'use strict'
19473 var intSize = 4
19474 var zeroBuffer = new Buffer(intSize)
19475 zeroBuffer.fill(0)
19476
19477 var charSize = 8
19478 var hashSize = 16
19479
19480 function toArray (buf) {
19481 if ((buf.length % intSize) !== 0) {
19482 var len = buf.length + (intSize - (buf.length % intSize))
19483 buf = Buffer.concat([buf, zeroBuffer], len)
19484 }
19485
19486 var arr = new Array(buf.length >>> 2)
19487 for (var i = 0, j = 0; i < buf.length; i += intSize, j++) {
19488 arr[j] = buf.readInt32LE(i)
19489 }
19490
19491 return arr
19492 }
19493
19494 module.exports = function hash (buf, fn) {
19495 var arr = fn(toArray(buf), buf.length * charSize)
19496 buf = new Buffer(hashSize)
19497 for (var i = 0; i < arr.length; i++) {
19498 buf.writeInt32LE(arr[i], i << 2, true)
19499 }
19500 return buf
19501 }
19502
19503 }).call(this,require("buffer").Buffer)
19504 },{"buffer":4}],84:[function(require,module,exports){
19505 'use strict'
19506 /*
19507 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
19508 * Digest Algorithm, as defined in RFC 1321.
19509 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
19510 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
19511 * Distributed under the BSD License
19512 * See http://pajhome.org.uk/crypt/md5 for more info.
19513 */
19514
19515 var makeHash = require('./make-hash')
19516
19517 /*
19518 * Calculate the MD5 of an array of little-endian words, and a bit length
19519 */
19520 function core_md5 (x, len) {
19521 /* append padding */
19522 x[len >> 5] |= 0x80 << ((len) % 32)
19523 x[(((len + 64) >>> 9) << 4) + 14] = len
19524
19525 var a = 1732584193
19526 var b = -271733879
19527 var c = -1732584194
19528 var d = 271733878
19529
19530 for (var i = 0; i < x.length; i += 16) {
19531 var olda = a
19532 var oldb = b
19533 var oldc = c
19534 var oldd = d
19535
19536 a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936)
19537 d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586)
19538 c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819)
19539 b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330)
19540 a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897)
19541 d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426)
19542 c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341)
19543 b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983)
19544 a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416)
19545 d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417)
19546 c = md5_ff(c, d, a, b, x[i + 10], 17, -42063)
19547 b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162)
19548 a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682)
19549 d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101)
19550 c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290)
19551 b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329)
19552
19553 a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510)
19554 d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632)
19555 c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713)
19556 b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302)
19557 a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691)
19558 d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083)
19559 c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335)
19560 b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848)
19561 a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438)
19562 d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690)
19563 c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961)
19564 b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501)
19565 a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467)
19566 d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784)
19567 c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473)
19568 b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734)
19569
19570 a = md5_hh(a, b, c, d, x[i + 5], 4, -378558)
19571 d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463)
19572 c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562)
19573 b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556)
19574 a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060)
19575 d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353)
19576 c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632)
19577 b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640)
19578 a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174)
19579 d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222)
19580 c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979)
19581 b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189)
19582 a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487)
19583 d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835)
19584 c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520)
19585 b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651)
19586
19587 a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844)
19588 d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415)
19589 c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905)
19590 b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055)
19591 a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571)
19592 d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606)
19593 c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523)
19594 b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799)
19595 a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359)
19596 d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744)
19597 c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380)
19598 b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649)
19599 a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070)
19600 d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379)
19601 c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259)
19602 b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551)
19603
19604 a = safe_add(a, olda)
19605 b = safe_add(b, oldb)
19606 c = safe_add(c, oldc)
19607 d = safe_add(d, oldd)
19608 }
19609
19610 return [a, b, c, d]
19611 }
19612
19613 /*
19614 * These functions implement the four basic operations the algorithm uses.
19615 */
19616 function md5_cmn (q, a, b, x, s, t) {
19617 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
19618 }
19619
19620 function md5_ff (a, b, c, d, x, s, t) {
19621 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)
19622 }
19623
19624 function md5_gg (a, b, c, d, x, s, t) {
19625 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)
19626 }
19627
19628 function md5_hh (a, b, c, d, x, s, t) {
19629 return md5_cmn(b ^ c ^ d, a, b, x, s, t)
19630 }
19631
19632 function md5_ii (a, b, c, d, x, s, t) {
19633 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)
19634 }
19635
19636 /*
19637 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
19638 * to work around bugs in some JS interpreters.
19639 */
19640 function safe_add (x, y) {
19641 var lsw = (x & 0xFFFF) + (y & 0xFFFF)
19642 var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
19643 return (msw << 16) | (lsw & 0xFFFF)
19644 }
19645
19646 /*
19647 * Bitwise rotate a 32-bit number to the left.
19648 */
19649 function bit_rol (num, cnt) {
19650 return (num << cnt) | (num >>> (32 - cnt))
19651 }
19652
19653 module.exports = function md5 (buf) {
19654 return makeHash(buf, core_md5)
19655 }
19656
19657 },{"./make-hash":83}],85:[function(require,module,exports){
19658 'use strict'
19659 var inherits = require('inherits')
19660 var Legacy = require('./legacy')
19661 var Base = require('cipher-base')
19662 var Buffer = require('safe-buffer').Buffer
19663 var md5 = require('create-hash/md5')
19664 var RIPEMD160 = require('ripemd160')
19665
19666 var sha = require('sha.js')
19667
19668 var ZEROS = Buffer.alloc(128)
19669
19670 function Hmac (alg, key) {
19671 Base.call(this, 'digest')
19672 if (typeof key === 'string') {
19673 key = Buffer.from(key)
19674 }
19675
19676 var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
19677
19678 this._alg = alg
19679 this._key = key
19680 if (key.length > blocksize) {
19681 var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
19682 key = hash.update(key).digest()
19683 } else if (key.length < blocksize) {
19684 key = Buffer.concat([key, ZEROS], blocksize)
19685 }
19686
19687 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
19688 var opad = this._opad = Buffer.allocUnsafe(blocksize)
19689
19690 for (var i = 0; i < blocksize; i++) {
19691 ipad[i] = key[i] ^ 0x36
19692 opad[i] = key[i] ^ 0x5C
19693 }
19694 this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
19695 this._hash.update(ipad)
19696 }
19697
19698 inherits(Hmac, Base)
19699
19700 Hmac.prototype._update = function (data) {
19701 this._hash.update(data)
19702 }
19703
19704 Hmac.prototype._final = function () {
19705 var h = this._hash.digest()
19706 var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)
19707 return hash.update(this._opad).update(h).digest()
19708 }
19709
19710 module.exports = function createHmac (alg, key) {
19711 alg = alg.toLowerCase()
19712 if (alg === 'rmd160' || alg === 'ripemd160') {
19713 return new Hmac('rmd160', key)
19714 }
19715 if (alg === 'md5') {
19716 return new Legacy(md5, key)
19717 }
19718 return new Hmac(alg, key)
19719 }
19720
19721 },{"./legacy":86,"cipher-base":81,"create-hash/md5":84,"inherits":93,"ripemd160":97,"safe-buffer":98,"sha.js":100}],86:[function(require,module,exports){
19722 'use strict'
19723 var inherits = require('inherits')
19724 var Buffer = require('safe-buffer').Buffer
19725
19726 var Base = require('cipher-base')
19727
19728 var ZEROS = Buffer.alloc(128)
19729 var blocksize = 64
19730
19731 function Hmac (alg, key) {
19732 Base.call(this, 'digest')
19733 if (typeof key === 'string') {
19734 key = Buffer.from(key)
19735 }
19736
19737 this._alg = alg
19738 this._key = key
19739
19740 if (key.length > blocksize) {
19741 key = alg(key)
19742 } else if (key.length < blocksize) {
19743 key = Buffer.concat([key, ZEROS], blocksize)
19744 }
19745
19746 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
19747 var opad = this._opad = Buffer.allocUnsafe(blocksize)
19748
19749 for (var i = 0; i < blocksize; i++) {
19750 ipad[i] = key[i] ^ 0x36
19751 opad[i] = key[i] ^ 0x5C
19752 }
19753
19754 this._hash = [ipad]
19755 }
19756
19757 inherits(Hmac, Base)
19758
19759 Hmac.prototype._update = function (data) {
19760 this._hash.push(data)
19761 }
19762
19763 Hmac.prototype._final = function () {
19764 var h = this._alg(Buffer.concat(this._hash))
19765 return this._alg(Buffer.concat([this._opad, h]))
19766 }
19767 module.exports = Hmac
19768
19769 },{"cipher-base":81,"inherits":93,"safe-buffer":98}],87:[function(require,module,exports){
19770 var assert = require('assert')
19771 var BigInteger = require('bigi')
19772
19773 var Point = require('./point')
19774
19775 function Curve (p, a, b, Gx, Gy, n, h) {
19776 this.p = p
19777 this.a = a
19778 this.b = b
19779 this.G = Point.fromAffine(this, Gx, Gy)
19780 this.n = n
19781 this.h = h
19782
19783 this.infinity = new Point(this, null, null, BigInteger.ZERO)
19784
19785 // result caching
19786 this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)
19787
19788 // determine size of p in bytes
19789 this.pLength = Math.floor((this.p.bitLength() + 7) / 8)
19790 }
19791
19792 Curve.prototype.pointFromX = function (isOdd, x) {
19793 var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)
19794 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
19795
19796 var y = beta
19797 if (beta.isEven() ^ !isOdd) {
19798 y = this.p.subtract(y) // -y % p
19799 }
19800
19801 return Point.fromAffine(this, x, y)
19802 }
19803
19804 Curve.prototype.isInfinity = function (Q) {
19805 if (Q === this.infinity) return true
19806
19807 return Q.z.signum() === 0 && Q.y.signum() !== 0
19808 }
19809
19810 Curve.prototype.isOnCurve = function (Q) {
19811 if (this.isInfinity(Q)) return true
19812
19813 var x = Q.affineX
19814 var y = Q.affineY
19815 var a = this.a
19816 var b = this.b
19817 var p = this.p
19818
19819 // Check that xQ and yQ are integers in the interval [0, p - 1]
19820 if (x.signum() < 0 || x.compareTo(p) >= 0) return false
19821 if (y.signum() < 0 || y.compareTo(p) >= 0) return false
19822
19823 // and check that y^2 = x^3 + ax + b (mod p)
19824 var lhs = y.square().mod(p)
19825 var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)
19826 return lhs.equals(rhs)
19827 }
19828
19829 /**
19830 * Validate an elliptic curve point.
19831 *
19832 * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive
19833 */
19834 Curve.prototype.validate = function (Q) {
19835 // Check Q != O
19836 assert(!this.isInfinity(Q), 'Point is at infinity')
19837 assert(this.isOnCurve(Q), 'Point is not on the curve')
19838
19839 // Check nQ = O (where Q is a scalar multiple of G)
19840 var nQ = Q.multiply(this.n)
19841 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
19842
19843 return true
19844 }
19845
19846 module.exports = Curve
19847
19848 },{"./point":91,"assert":1,"bigi":37}],88:[function(require,module,exports){
19849 module.exports={
19850 "secp128r1": {
19851 "p": "fffffffdffffffffffffffffffffffff",
19852 "a": "fffffffdfffffffffffffffffffffffc",
19853 "b": "e87579c11079f43dd824993c2cee5ed3",
19854 "n": "fffffffe0000000075a30d1b9038a115",
19855 "h": "01",
19856 "Gx": "161ff7528b899b2d0c28607ca52c5b86",
19857 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
19858 },
19859 "secp160k1": {
19860 "p": "fffffffffffffffffffffffffffffffeffffac73",
19861 "a": "00",
19862 "b": "07",
19863 "n": "0100000000000000000001b8fa16dfab9aca16b6b3",
19864 "h": "01",
19865 "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
19866 "Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
19867 },
19868 "secp160r1": {
19869 "p": "ffffffffffffffffffffffffffffffff7fffffff",
19870 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
19871 "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
19872 "n": "0100000000000000000001f4c8f927aed3ca752257",
19873 "h": "01",
19874 "Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
19875 "Gy": "23a628553168947d59dcc912042351377ac5fb32"
19876 },
19877 "secp192k1": {
19878 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
19879 "a": "00",
19880 "b": "03",
19881 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
19882 "h": "01",
19883 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
19884 "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
19885 },
19886 "secp192r1": {
19887 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
19888 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
19889 "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
19890 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
19891 "h": "01",
19892 "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
19893 "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
19894 },
19895 "secp256k1": {
19896 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
19897 "a": "00",
19898 "b": "07",
19899 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
19900 "h": "01",
19901 "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
19902 "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
19903 },
19904 "secp256r1": {
19905 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
19906 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
19907 "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
19908 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
19909 "h": "01",
19910 "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
19911 "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
19912 }
19913 }
19914
19915 },{}],89:[function(require,module,exports){
19916 var Point = require('./point')
19917 var Curve = require('./curve')
19918
19919 var getCurveByName = require('./names')
19920
19921 module.exports = {
19922 Curve: Curve,
19923 Point: Point,
19924 getCurveByName: getCurveByName
19925 }
19926
19927 },{"./curve":87,"./names":90,"./point":91}],90:[function(require,module,exports){
19928 var BigInteger = require('bigi')
19929
19930 var curves = require('./curves.json')
19931 var Curve = require('./curve')
19932
19933 function getCurveByName (name) {
19934 var curve = curves[name]
19935 if (!curve) return null
19936
19937 var p = new BigInteger(curve.p, 16)
19938 var a = new BigInteger(curve.a, 16)
19939 var b = new BigInteger(curve.b, 16)
19940 var n = new BigInteger(curve.n, 16)
19941 var h = new BigInteger(curve.h, 16)
19942 var Gx = new BigInteger(curve.Gx, 16)
19943 var Gy = new BigInteger(curve.Gy, 16)
19944
19945 return new Curve(p, a, b, Gx, Gy, n, h)
19946 }
19947
19948 module.exports = getCurveByName
19949
19950 },{"./curve":87,"./curves.json":88,"bigi":37}],91:[function(require,module,exports){
19951 (function (Buffer){
19952 var assert = require('assert')
19953 var BigInteger = require('bigi')
19954
19955 var THREE = BigInteger.valueOf(3)
19956
19957 function Point (curve, x, y, z) {
19958 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
19959
19960 this.curve = curve
19961 this.x = x
19962 this.y = y
19963 this.z = z
19964 this._zInv = null
19965
19966 this.compressed = true
19967 }
19968
19969 Object.defineProperty(Point.prototype, 'zInv', {
19970 get: function () {
19971 if (this._zInv === null) {
19972 this._zInv = this.z.modInverse(this.curve.p)
19973 }
19974
19975 return this._zInv
19976 }
19977 })
19978
19979 Object.defineProperty(Point.prototype, 'affineX', {
19980 get: function () {
19981 return this.x.multiply(this.zInv).mod(this.curve.p)
19982 }
19983 })
19984
19985 Object.defineProperty(Point.prototype, 'affineY', {
19986 get: function () {
19987 return this.y.multiply(this.zInv).mod(this.curve.p)
19988 }
19989 })
19990
19991 Point.fromAffine = function (curve, x, y) {
19992 return new Point(curve, x, y, BigInteger.ONE)
19993 }
19994
19995 Point.prototype.equals = function (other) {
19996 if (other === this) return true
19997 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
19998 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
19999
20000 // u = Y2 * Z1 - Y1 * Z2
20001 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
20002
20003 if (u.signum() !== 0) return false
20004
20005 // v = X2 * Z1 - X1 * Z2
20006 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
20007
20008 return v.signum() === 0
20009 }
20010
20011 Point.prototype.negate = function () {
20012 var y = this.curve.p.subtract(this.y)
20013
20014 return new Point(this.curve, this.x, y, this.z)
20015 }
20016
20017 Point.prototype.add = function (b) {
20018 if (this.curve.isInfinity(this)) return b
20019 if (this.curve.isInfinity(b)) return this
20020
20021 var x1 = this.x
20022 var y1 = this.y
20023 var x2 = b.x
20024 var y2 = b.y
20025
20026 // u = Y2 * Z1 - Y1 * Z2
20027 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
20028 // v = X2 * Z1 - X1 * Z2
20029 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
20030
20031 if (v.signum() === 0) {
20032 if (u.signum() === 0) {
20033 return this.twice() // this == b, so double
20034 }
20035
20036 return this.curve.infinity // this = -b, so infinity
20037 }
20038
20039 var v2 = v.square()
20040 var v3 = v2.multiply(v)
20041 var x1v2 = x1.multiply(v2)
20042 var zu2 = u.square().multiply(this.z)
20043
20044 // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
20045 var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
20046 // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
20047 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)
20048 // z3 = v^3 * z1 * z2
20049 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
20050
20051 return new Point(this.curve, x3, y3, z3)
20052 }
20053
20054 Point.prototype.twice = function () {
20055 if (this.curve.isInfinity(this)) return this
20056 if (this.y.signum() === 0) return this.curve.infinity
20057
20058 var x1 = this.x
20059 var y1 = this.y
20060
20061 var y1z1 = y1.multiply(this.z).mod(this.curve.p)
20062 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
20063 var a = this.curve.a
20064
20065 // w = 3 * x1^2 + a * z1^2
20066 var w = x1.square().multiply(THREE)
20067
20068 if (a.signum() !== 0) {
20069 w = w.add(this.z.square().multiply(a))
20070 }
20071
20072 w = w.mod(this.curve.p)
20073 // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
20074 var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)
20075 // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
20076 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)
20077 // z3 = 8 * (y1 * z1)^3
20078 var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)
20079
20080 return new Point(this.curve, x3, y3, z3)
20081 }
20082
20083 // Simple NAF (Non-Adjacent Form) multiplication algorithm
20084 // TODO: modularize the multiplication algorithm
20085 Point.prototype.multiply = function (k) {
20086 if (this.curve.isInfinity(this)) return this
20087 if (k.signum() === 0) return this.curve.infinity
20088
20089 var e = k
20090 var h = e.multiply(THREE)
20091
20092 var neg = this.negate()
20093 var R = this
20094
20095 for (var i = h.bitLength() - 2; i > 0; --i) {
20096 var hBit = h.testBit(i)
20097 var eBit = e.testBit(i)
20098
20099 R = R.twice()
20100
20101 if (hBit !== eBit) {
20102 R = R.add(hBit ? this : neg)
20103 }
20104 }
20105
20106 return R
20107 }
20108
20109 // Compute this*j + x*k (simultaneous multiplication)
20110 Point.prototype.multiplyTwo = function (j, x, k) {
20111 var i = Math.max(j.bitLength(), k.bitLength()) - 1
20112 var R = this.curve.infinity
20113 var both = this.add(x)
20114
20115 while (i >= 0) {
20116 var jBit = j.testBit(i)
20117 var kBit = k.testBit(i)
20118
20119 R = R.twice()
20120
20121 if (jBit) {
20122 if (kBit) {
20123 R = R.add(both)
20124 } else {
20125 R = R.add(this)
20126 }
20127 } else if (kBit) {
20128 R = R.add(x)
20129 }
20130 --i
20131 }
20132
20133 return R
20134 }
20135
20136 Point.prototype.getEncoded = function (compressed) {
20137 if (compressed == null) compressed = this.compressed
20138 if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'
20139
20140 var x = this.affineX
20141 var y = this.affineY
20142 var byteLength = this.curve.pLength
20143 var buffer
20144
20145 // 0x02/0x03 | X
20146 if (compressed) {
20147 buffer = new Buffer(1 + byteLength)
20148 buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)
20149
20150 // 0x04 | X | Y
20151 } else {
20152 buffer = new Buffer(1 + byteLength + byteLength)
20153 buffer.writeUInt8(0x04, 0)
20154
20155 y.toBuffer(byteLength).copy(buffer, 1 + byteLength)
20156 }
20157
20158 x.toBuffer(byteLength).copy(buffer, 1)
20159
20160 return buffer
20161 }
20162
20163 Point.decodeFrom = function (curve, buffer) {
20164 var type = buffer.readUInt8(0)
20165 var compressed = (type !== 4)
20166
20167 var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)
20168 var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))
20169
20170 var Q
20171 if (compressed) {
20172 assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')
20173 assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
20174
20175 var isOdd = (type === 0x03)
20176 Q = curve.pointFromX(isOdd, x)
20177 } else {
20178 assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')
20179
20180 var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))
20181 Q = Point.fromAffine(curve, x, y)
20182 }
20183
20184 Q.compressed = compressed
20185 return Q
20186 }
20187
20188 Point.prototype.toString = function () {
20189 if (this.curve.isInfinity(this)) return '(INFINITY)'
20190
20191 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
20192 }
20193
20194 module.exports = Point
20195
20196 }).call(this,require("buffer").Buffer)
20197 },{"assert":1,"bigi":37,"buffer":4}],92:[function(require,module,exports){
20198 (function (Buffer){
20199 'use strict'
20200 var Transform = require('stream').Transform
20201 var inherits = require('inherits')
20202
20203 function HashBase (blockSize) {
20204 Transform.call(this)
20205
20206 this._block = new Buffer(blockSize)
20207 this._blockSize = blockSize
20208 this._blockOffset = 0
20209 this._length = [0, 0, 0, 0]
20210
20211 this._finalized = false
20212 }
20213
20214 inherits(HashBase, Transform)
20215
20216 HashBase.prototype._transform = function (chunk, encoding, callback) {
20217 var error = null
20218 try {
20219 if (encoding !== 'buffer') chunk = new Buffer(chunk, encoding)
20220 this.update(chunk)
20221 } catch (err) {
20222 error = err
20223 }
20224
20225 callback(error)
20226 }
20227
20228 HashBase.prototype._flush = function (callback) {
20229 var error = null
20230 try {
20231 this.push(this._digest())
20232 } catch (err) {
20233 error = err
20234 }
20235
20236 callback(error)
20237 }
20238
20239 HashBase.prototype.update = function (data, encoding) {
20240 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
20241 if (this._finalized) throw new Error('Digest already called')
20242 if (!Buffer.isBuffer(data)) data = new Buffer(data, encoding || 'binary')
20243
20244 // consume data
20245 var block = this._block
20246 var offset = 0
20247 while (this._blockOffset + data.length - offset >= this._blockSize) {
20248 for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]
20249 this._update()
20250 this._blockOffset = 0
20251 }
20252 while (offset < data.length) block[this._blockOffset++] = data[offset++]
20253
20254 // update length
20255 for (var j = 0, carry = data.length * 8; carry > 0; ++j) {
20256 this._length[j] += carry
20257 carry = (this._length[j] / 0x0100000000) | 0
20258 if (carry > 0) this._length[j] -= 0x0100000000 * carry
20259 }
20260
20261 return this
20262 }
20263
20264 HashBase.prototype._update = function (data) {
20265 throw new Error('_update is not implemented')
20266 }
20267
20268 HashBase.prototype.digest = function (encoding) {
20269 if (this._finalized) throw new Error('Digest already called')
20270 this._finalized = true
20271
20272 var digest = this._digest()
20273 if (encoding !== undefined) digest = digest.toString(encoding)
20274 return digest
20275 }
20276
20277 HashBase.prototype._digest = function () {
20278 throw new Error('_digest is not implemented')
20279 }
20280
20281 module.exports = HashBase
20282
20283 }).call(this,require("buffer").Buffer)
20284 },{"buffer":4,"inherits":93,"stream":27}],93:[function(require,module,exports){
20285 arguments[4][8][0].apply(exports,arguments)
20286 },{"dup":8}],94:[function(require,module,exports){
20287 (function (Buffer){
20288 // constant-space merkle root calculation algorithm
20289 module.exports = function fastRoot (values, digestFn) {
20290 if (!Array.isArray(values)) throw TypeError('Expected values Array')
20291 if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')
20292
20293 var length = values.length
20294 var results = values.concat()
20295
20296 while (length > 1) {
20297 var j = 0
20298
20299 for (var i = 0; i < length; i += 2, ++j) {
20300 var left = results[i]
20301 var right = i + 1 === length ? left : results[i + 1]
20302 var data = Buffer.concat([left, right])
20303
20304 results[j] = digestFn(data)
20305 }
20306
20307 length = j
20308 }
20309
20310 return results[0]
20311 }
20312
20313 }).call(this,require("buffer").Buffer)
20314 },{"buffer":4}],95:[function(require,module,exports){
20315 var OPS = require('bitcoin-ops')
20316
20317 function encodingLength (i) {
20318 return i < OPS.OP_PUSHDATA1 ? 1
20319 : i <= 0xff ? 2
20320 : i <= 0xffff ? 3
20321 : 5
20322 }
20323
20324 function encode (buffer, number, offset) {
20325 var size = encodingLength(number)
20326
20327 // ~6 bit
20328 if (size === 1) {
20329 buffer.writeUInt8(number, offset)
20330
20331 // 8 bit
20332 } else if (size === 2) {
20333 buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)
20334 buffer.writeUInt8(number, offset + 1)
20335
20336 // 16 bit
20337 } else if (size === 3) {
20338 buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)
20339 buffer.writeUInt16LE(number, offset + 1)
20340
20341 // 32 bit
20342 } else {
20343 buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)
20344 buffer.writeUInt32LE(number, offset + 1)
20345 }
20346
20347 return size
20348 }
20349
20350 function decode (buffer, offset) {
20351 var opcode = buffer.readUInt8(offset)
20352 var number, size
20353
20354 // ~6 bit
20355 if (opcode < OPS.OP_PUSHDATA1) {
20356 number = opcode
20357 size = 1
20358
20359 // 8 bit
20360 } else if (opcode === OPS.OP_PUSHDATA1) {
20361 if (offset + 2 > buffer.length) return null
20362 number = buffer.readUInt8(offset + 1)
20363 size = 2
20364
20365 // 16 bit
20366 } else if (opcode === OPS.OP_PUSHDATA2) {
20367 if (offset + 3 > buffer.length) return null
20368 number = buffer.readUInt16LE(offset + 1)
20369 size = 3
20370
20371 // 32 bit
20372 } else {
20373 if (offset + 5 > buffer.length) return null
20374 if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')
20375
20376 number = buffer.readUInt32LE(offset + 1)
20377 size = 5
20378 }
20379
20380 return {
20381 opcode: opcode,
20382 number: number,
20383 size: size
20384 }
20385 }
20386
20387 module.exports = {
20388 encodingLength: encodingLength,
20389 encode: encode,
20390 decode: decode
20391 }
20392
20393 },{"bitcoin-ops":40}],96:[function(require,module,exports){
20394 (function (process,global){
20395 'use strict'
20396
20397 function oldBrowser () {
20398 throw new Error('secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11')
20399 }
20400
20401 var Buffer = require('safe-buffer').Buffer
20402 var crypto = global.crypto || global.msCrypto
20403
20404 if (crypto && crypto.getRandomValues) {
20405 module.exports = randomBytes
20406 } else {
20407 module.exports = oldBrowser
20408 }
20409
20410 function randomBytes (size, cb) {
20411 // phantomjs needs to throw
20412 if (size > 65536) throw new Error('requested too many random bytes')
20413 // in case browserify isn't using the Uint8Array version
20414 var rawBytes = new global.Uint8Array(size)
20415
20416 // This will not work in older browsers.
20417 // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
20418 if (size > 0) { // getRandomValues fails on IE if size == 0
20419 crypto.getRandomValues(rawBytes)
20420 }
20421
20422 // XXX: phantomjs doesn't like a buffer being passed here
20423 var bytes = Buffer.from(rawBytes.buffer)
20424
20425 if (typeof cb === 'function') {
20426 return process.nextTick(function () {
20427 cb(null, bytes)
20428 })
20429 }
20430
20431 return bytes
20432 }
20433
20434 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20435 },{"_process":12,"safe-buffer":98}],97:[function(require,module,exports){
20436 (function (Buffer){
20437 'use strict'
20438 var inherits = require('inherits')
20439 var HashBase = require('hash-base')
20440
20441 function RIPEMD160 () {
20442 HashBase.call(this, 64)
20443
20444 // state
20445 this._a = 0x67452301
20446 this._b = 0xefcdab89
20447 this._c = 0x98badcfe
20448 this._d = 0x10325476
20449 this._e = 0xc3d2e1f0
20450 }
20451
20452 inherits(RIPEMD160, HashBase)
20453
20454 RIPEMD160.prototype._update = function () {
20455 var m = new Array(16)
20456 for (var i = 0; i < 16; ++i) m[i] = this._block.readInt32LE(i * 4)
20457
20458 var al = this._a
20459 var bl = this._b
20460 var cl = this._c
20461 var dl = this._d
20462 var el = this._e
20463
20464 // Mj = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
20465 // K = 0x00000000
20466 // Sj = 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8
20467 al = fn1(al, bl, cl, dl, el, m[0], 0x00000000, 11); cl = rotl(cl, 10)
20468 el = fn1(el, al, bl, cl, dl, m[1], 0x00000000, 14); bl = rotl(bl, 10)
20469 dl = fn1(dl, el, al, bl, cl, m[2], 0x00000000, 15); al = rotl(al, 10)
20470 cl = fn1(cl, dl, el, al, bl, m[3], 0x00000000, 12); el = rotl(el, 10)
20471 bl = fn1(bl, cl, dl, el, al, m[4], 0x00000000, 5); dl = rotl(dl, 10)
20472 al = fn1(al, bl, cl, dl, el, m[5], 0x00000000, 8); cl = rotl(cl, 10)
20473 el = fn1(el, al, bl, cl, dl, m[6], 0x00000000, 7); bl = rotl(bl, 10)
20474 dl = fn1(dl, el, al, bl, cl, m[7], 0x00000000, 9); al = rotl(al, 10)
20475 cl = fn1(cl, dl, el, al, bl, m[8], 0x00000000, 11); el = rotl(el, 10)
20476 bl = fn1(bl, cl, dl, el, al, m[9], 0x00000000, 13); dl = rotl(dl, 10)
20477 al = fn1(al, bl, cl, dl, el, m[10], 0x00000000, 14); cl = rotl(cl, 10)
20478 el = fn1(el, al, bl, cl, dl, m[11], 0x00000000, 15); bl = rotl(bl, 10)
20479 dl = fn1(dl, el, al, bl, cl, m[12], 0x00000000, 6); al = rotl(al, 10)
20480 cl = fn1(cl, dl, el, al, bl, m[13], 0x00000000, 7); el = rotl(el, 10)
20481 bl = fn1(bl, cl, dl, el, al, m[14], 0x00000000, 9); dl = rotl(dl, 10)
20482 al = fn1(al, bl, cl, dl, el, m[15], 0x00000000, 8); cl = rotl(cl, 10)
20483
20484 // Mj = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8
20485 // K = 0x5a827999
20486 // Sj = 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12
20487 el = fn2(el, al, bl, cl, dl, m[7], 0x5a827999, 7); bl = rotl(bl, 10)
20488 dl = fn2(dl, el, al, bl, cl, m[4], 0x5a827999, 6); al = rotl(al, 10)
20489 cl = fn2(cl, dl, el, al, bl, m[13], 0x5a827999, 8); el = rotl(el, 10)
20490 bl = fn2(bl, cl, dl, el, al, m[1], 0x5a827999, 13); dl = rotl(dl, 10)
20491 al = fn2(al, bl, cl, dl, el, m[10], 0x5a827999, 11); cl = rotl(cl, 10)
20492 el = fn2(el, al, bl, cl, dl, m[6], 0x5a827999, 9); bl = rotl(bl, 10)
20493 dl = fn2(dl, el, al, bl, cl, m[15], 0x5a827999, 7); al = rotl(al, 10)
20494 cl = fn2(cl, dl, el, al, bl, m[3], 0x5a827999, 15); el = rotl(el, 10)
20495 bl = fn2(bl, cl, dl, el, al, m[12], 0x5a827999, 7); dl = rotl(dl, 10)
20496 al = fn2(al, bl, cl, dl, el, m[0], 0x5a827999, 12); cl = rotl(cl, 10)
20497 el = fn2(el, al, bl, cl, dl, m[9], 0x5a827999, 15); bl = rotl(bl, 10)
20498 dl = fn2(dl, el, al, bl, cl, m[5], 0x5a827999, 9); al = rotl(al, 10)
20499 cl = fn2(cl, dl, el, al, bl, m[2], 0x5a827999, 11); el = rotl(el, 10)
20500 bl = fn2(bl, cl, dl, el, al, m[14], 0x5a827999, 7); dl = rotl(dl, 10)
20501 al = fn2(al, bl, cl, dl, el, m[11], 0x5a827999, 13); cl = rotl(cl, 10)
20502 el = fn2(el, al, bl, cl, dl, m[8], 0x5a827999, 12); bl = rotl(bl, 10)
20503
20504 // Mj = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12
20505 // K = 0x6ed9eba1
20506 // Sj = 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5
20507 dl = fn3(dl, el, al, bl, cl, m[3], 0x6ed9eba1, 11); al = rotl(al, 10)
20508 cl = fn3(cl, dl, el, al, bl, m[10], 0x6ed9eba1, 13); el = rotl(el, 10)
20509 bl = fn3(bl, cl, dl, el, al, m[14], 0x6ed9eba1, 6); dl = rotl(dl, 10)
20510 al = fn3(al, bl, cl, dl, el, m[4], 0x6ed9eba1, 7); cl = rotl(cl, 10)
20511 el = fn3(el, al, bl, cl, dl, m[9], 0x6ed9eba1, 14); bl = rotl(bl, 10)
20512 dl = fn3(dl, el, al, bl, cl, m[15], 0x6ed9eba1, 9); al = rotl(al, 10)
20513 cl = fn3(cl, dl, el, al, bl, m[8], 0x6ed9eba1, 13); el = rotl(el, 10)
20514 bl = fn3(bl, cl, dl, el, al, m[1], 0x6ed9eba1, 15); dl = rotl(dl, 10)
20515 al = fn3(al, bl, cl, dl, el, m[2], 0x6ed9eba1, 14); cl = rotl(cl, 10)
20516 el = fn3(el, al, bl, cl, dl, m[7], 0x6ed9eba1, 8); bl = rotl(bl, 10)
20517 dl = fn3(dl, el, al, bl, cl, m[0], 0x6ed9eba1, 13); al = rotl(al, 10)
20518 cl = fn3(cl, dl, el, al, bl, m[6], 0x6ed9eba1, 6); el = rotl(el, 10)
20519 bl = fn3(bl, cl, dl, el, al, m[13], 0x6ed9eba1, 5); dl = rotl(dl, 10)
20520 al = fn3(al, bl, cl, dl, el, m[11], 0x6ed9eba1, 12); cl = rotl(cl, 10)
20521 el = fn3(el, al, bl, cl, dl, m[5], 0x6ed9eba1, 7); bl = rotl(bl, 10)
20522 dl = fn3(dl, el, al, bl, cl, m[12], 0x6ed9eba1, 5); al = rotl(al, 10)
20523
20524 // Mj = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2
20525 // K = 0x8f1bbcdc
20526 // Sj = 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12
20527 cl = fn4(cl, dl, el, al, bl, m[1], 0x8f1bbcdc, 11); el = rotl(el, 10)
20528 bl = fn4(bl, cl, dl, el, al, m[9], 0x8f1bbcdc, 12); dl = rotl(dl, 10)
20529 al = fn4(al, bl, cl, dl, el, m[11], 0x8f1bbcdc, 14); cl = rotl(cl, 10)
20530 el = fn4(el, al, bl, cl, dl, m[10], 0x8f1bbcdc, 15); bl = rotl(bl, 10)
20531 dl = fn4(dl, el, al, bl, cl, m[0], 0x8f1bbcdc, 14); al = rotl(al, 10)
20532 cl = fn4(cl, dl, el, al, bl, m[8], 0x8f1bbcdc, 15); el = rotl(el, 10)
20533 bl = fn4(bl, cl, dl, el, al, m[12], 0x8f1bbcdc, 9); dl = rotl(dl, 10)
20534 al = fn4(al, bl, cl, dl, el, m[4], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
20535 el = fn4(el, al, bl, cl, dl, m[13], 0x8f1bbcdc, 9); bl = rotl(bl, 10)
20536 dl = fn4(dl, el, al, bl, cl, m[3], 0x8f1bbcdc, 14); al = rotl(al, 10)
20537 cl = fn4(cl, dl, el, al, bl, m[7], 0x8f1bbcdc, 5); el = rotl(el, 10)
20538 bl = fn4(bl, cl, dl, el, al, m[15], 0x8f1bbcdc, 6); dl = rotl(dl, 10)
20539 al = fn4(al, bl, cl, dl, el, m[14], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
20540 el = fn4(el, al, bl, cl, dl, m[5], 0x8f1bbcdc, 6); bl = rotl(bl, 10)
20541 dl = fn4(dl, el, al, bl, cl, m[6], 0x8f1bbcdc, 5); al = rotl(al, 10)
20542 cl = fn4(cl, dl, el, al, bl, m[2], 0x8f1bbcdc, 12); el = rotl(el, 10)
20543
20544 // Mj = 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
20545 // K = 0xa953fd4e
20546 // Sj = 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
20547 bl = fn5(bl, cl, dl, el, al, m[4], 0xa953fd4e, 9); dl = rotl(dl, 10)
20548 al = fn5(al, bl, cl, dl, el, m[0], 0xa953fd4e, 15); cl = rotl(cl, 10)
20549 el = fn5(el, al, bl, cl, dl, m[5], 0xa953fd4e, 5); bl = rotl(bl, 10)
20550 dl = fn5(dl, el, al, bl, cl, m[9], 0xa953fd4e, 11); al = rotl(al, 10)
20551 cl = fn5(cl, dl, el, al, bl, m[7], 0xa953fd4e, 6); el = rotl(el, 10)
20552 bl = fn5(bl, cl, dl, el, al, m[12], 0xa953fd4e, 8); dl = rotl(dl, 10)
20553 al = fn5(al, bl, cl, dl, el, m[2], 0xa953fd4e, 13); cl = rotl(cl, 10)
20554 el = fn5(el, al, bl, cl, dl, m[10], 0xa953fd4e, 12); bl = rotl(bl, 10)
20555 dl = fn5(dl, el, al, bl, cl, m[14], 0xa953fd4e, 5); al = rotl(al, 10)
20556 cl = fn5(cl, dl, el, al, bl, m[1], 0xa953fd4e, 12); el = rotl(el, 10)
20557 bl = fn5(bl, cl, dl, el, al, m[3], 0xa953fd4e, 13); dl = rotl(dl, 10)
20558 al = fn5(al, bl, cl, dl, el, m[8], 0xa953fd4e, 14); cl = rotl(cl, 10)
20559 el = fn5(el, al, bl, cl, dl, m[11], 0xa953fd4e, 11); bl = rotl(bl, 10)
20560 dl = fn5(dl, el, al, bl, cl, m[6], 0xa953fd4e, 8); al = rotl(al, 10)
20561 cl = fn5(cl, dl, el, al, bl, m[15], 0xa953fd4e, 5); el = rotl(el, 10)
20562 bl = fn5(bl, cl, dl, el, al, m[13], 0xa953fd4e, 6); dl = rotl(dl, 10)
20563
20564 var ar = this._a
20565 var br = this._b
20566 var cr = this._c
20567 var dr = this._d
20568 var er = this._e
20569
20570 // M'j = 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12
20571 // K' = 0x50a28be6
20572 // S'j = 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6
20573 ar = fn5(ar, br, cr, dr, er, m[5], 0x50a28be6, 8); cr = rotl(cr, 10)
20574 er = fn5(er, ar, br, cr, dr, m[14], 0x50a28be6, 9); br = rotl(br, 10)
20575 dr = fn5(dr, er, ar, br, cr, m[7], 0x50a28be6, 9); ar = rotl(ar, 10)
20576 cr = fn5(cr, dr, er, ar, br, m[0], 0x50a28be6, 11); er = rotl(er, 10)
20577 br = fn5(br, cr, dr, er, ar, m[9], 0x50a28be6, 13); dr = rotl(dr, 10)
20578 ar = fn5(ar, br, cr, dr, er, m[2], 0x50a28be6, 15); cr = rotl(cr, 10)
20579 er = fn5(er, ar, br, cr, dr, m[11], 0x50a28be6, 15); br = rotl(br, 10)
20580 dr = fn5(dr, er, ar, br, cr, m[4], 0x50a28be6, 5); ar = rotl(ar, 10)
20581 cr = fn5(cr, dr, er, ar, br, m[13], 0x50a28be6, 7); er = rotl(er, 10)
20582 br = fn5(br, cr, dr, er, ar, m[6], 0x50a28be6, 7); dr = rotl(dr, 10)
20583 ar = fn5(ar, br, cr, dr, er, m[15], 0x50a28be6, 8); cr = rotl(cr, 10)
20584 er = fn5(er, ar, br, cr, dr, m[8], 0x50a28be6, 11); br = rotl(br, 10)
20585 dr = fn5(dr, er, ar, br, cr, m[1], 0x50a28be6, 14); ar = rotl(ar, 10)
20586 cr = fn5(cr, dr, er, ar, br, m[10], 0x50a28be6, 14); er = rotl(er, 10)
20587 br = fn5(br, cr, dr, er, ar, m[3], 0x50a28be6, 12); dr = rotl(dr, 10)
20588 ar = fn5(ar, br, cr, dr, er, m[12], 0x50a28be6, 6); cr = rotl(cr, 10)
20589
20590 // M'j = 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2
20591 // K' = 0x5c4dd124
20592 // S'j = 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11
20593 er = fn4(er, ar, br, cr, dr, m[6], 0x5c4dd124, 9); br = rotl(br, 10)
20594 dr = fn4(dr, er, ar, br, cr, m[11], 0x5c4dd124, 13); ar = rotl(ar, 10)
20595 cr = fn4(cr, dr, er, ar, br, m[3], 0x5c4dd124, 15); er = rotl(er, 10)
20596 br = fn4(br, cr, dr, er, ar, m[7], 0x5c4dd124, 7); dr = rotl(dr, 10)
20597 ar = fn4(ar, br, cr, dr, er, m[0], 0x5c4dd124, 12); cr = rotl(cr, 10)
20598 er = fn4(er, ar, br, cr, dr, m[13], 0x5c4dd124, 8); br = rotl(br, 10)
20599 dr = fn4(dr, er, ar, br, cr, m[5], 0x5c4dd124, 9); ar = rotl(ar, 10)
20600 cr = fn4(cr, dr, er, ar, br, m[10], 0x5c4dd124, 11); er = rotl(er, 10)
20601 br = fn4(br, cr, dr, er, ar, m[14], 0x5c4dd124, 7); dr = rotl(dr, 10)
20602 ar = fn4(ar, br, cr, dr, er, m[15], 0x5c4dd124, 7); cr = rotl(cr, 10)
20603 er = fn4(er, ar, br, cr, dr, m[8], 0x5c4dd124, 12); br = rotl(br, 10)
20604 dr = fn4(dr, er, ar, br, cr, m[12], 0x5c4dd124, 7); ar = rotl(ar, 10)
20605 cr = fn4(cr, dr, er, ar, br, m[4], 0x5c4dd124, 6); er = rotl(er, 10)
20606 br = fn4(br, cr, dr, er, ar, m[9], 0x5c4dd124, 15); dr = rotl(dr, 10)
20607 ar = fn4(ar, br, cr, dr, er, m[1], 0x5c4dd124, 13); cr = rotl(cr, 10)
20608 er = fn4(er, ar, br, cr, dr, m[2], 0x5c4dd124, 11); br = rotl(br, 10)
20609
20610 // M'j = 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13
20611 // K' = 0x6d703ef3
20612 // S'j = 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5
20613 dr = fn3(dr, er, ar, br, cr, m[15], 0x6d703ef3, 9); ar = rotl(ar, 10)
20614 cr = fn3(cr, dr, er, ar, br, m[5], 0x6d703ef3, 7); er = rotl(er, 10)
20615 br = fn3(br, cr, dr, er, ar, m[1], 0x6d703ef3, 15); dr = rotl(dr, 10)
20616 ar = fn3(ar, br, cr, dr, er, m[3], 0x6d703ef3, 11); cr = rotl(cr, 10)
20617 er = fn3(er, ar, br, cr, dr, m[7], 0x6d703ef3, 8); br = rotl(br, 10)
20618 dr = fn3(dr, er, ar, br, cr, m[14], 0x6d703ef3, 6); ar = rotl(ar, 10)
20619 cr = fn3(cr, dr, er, ar, br, m[6], 0x6d703ef3, 6); er = rotl(er, 10)
20620 br = fn3(br, cr, dr, er, ar, m[9], 0x6d703ef3, 14); dr = rotl(dr, 10)
20621 ar = fn3(ar, br, cr, dr, er, m[11], 0x6d703ef3, 12); cr = rotl(cr, 10)
20622 er = fn3(er, ar, br, cr, dr, m[8], 0x6d703ef3, 13); br = rotl(br, 10)
20623 dr = fn3(dr, er, ar, br, cr, m[12], 0x6d703ef3, 5); ar = rotl(ar, 10)
20624 cr = fn3(cr, dr, er, ar, br, m[2], 0x6d703ef3, 14); er = rotl(er, 10)
20625 br = fn3(br, cr, dr, er, ar, m[10], 0x6d703ef3, 13); dr = rotl(dr, 10)
20626 ar = fn3(ar, br, cr, dr, er, m[0], 0x6d703ef3, 13); cr = rotl(cr, 10)
20627 er = fn3(er, ar, br, cr, dr, m[4], 0x6d703ef3, 7); br = rotl(br, 10)
20628 dr = fn3(dr, er, ar, br, cr, m[13], 0x6d703ef3, 5); ar = rotl(ar, 10)
20629
20630 // M'j = 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14
20631 // K' = 0x7a6d76e9
20632 // S'j = 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8
20633 cr = fn2(cr, dr, er, ar, br, m[8], 0x7a6d76e9, 15); er = rotl(er, 10)
20634 br = fn2(br, cr, dr, er, ar, m[6], 0x7a6d76e9, 5); dr = rotl(dr, 10)
20635 ar = fn2(ar, br, cr, dr, er, m[4], 0x7a6d76e9, 8); cr = rotl(cr, 10)
20636 er = fn2(er, ar, br, cr, dr, m[1], 0x7a6d76e9, 11); br = rotl(br, 10)
20637 dr = fn2(dr, er, ar, br, cr, m[3], 0x7a6d76e9, 14); ar = rotl(ar, 10)
20638 cr = fn2(cr, dr, er, ar, br, m[11], 0x7a6d76e9, 14); er = rotl(er, 10)
20639 br = fn2(br, cr, dr, er, ar, m[15], 0x7a6d76e9, 6); dr = rotl(dr, 10)
20640 ar = fn2(ar, br, cr, dr, er, m[0], 0x7a6d76e9, 14); cr = rotl(cr, 10)
20641 er = fn2(er, ar, br, cr, dr, m[5], 0x7a6d76e9, 6); br = rotl(br, 10)
20642 dr = fn2(dr, er, ar, br, cr, m[12], 0x7a6d76e9, 9); ar = rotl(ar, 10)
20643 cr = fn2(cr, dr, er, ar, br, m[2], 0x7a6d76e9, 12); er = rotl(er, 10)
20644 br = fn2(br, cr, dr, er, ar, m[13], 0x7a6d76e9, 9); dr = rotl(dr, 10)
20645 ar = fn2(ar, br, cr, dr, er, m[9], 0x7a6d76e9, 12); cr = rotl(cr, 10)
20646 er = fn2(er, ar, br, cr, dr, m[7], 0x7a6d76e9, 5); br = rotl(br, 10)
20647 dr = fn2(dr, er, ar, br, cr, m[10], 0x7a6d76e9, 15); ar = rotl(ar, 10)
20648 cr = fn2(cr, dr, er, ar, br, m[14], 0x7a6d76e9, 8); er = rotl(er, 10)
20649
20650 // M'j = 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
20651 // K' = 0x00000000
20652 // S'j = 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
20653 br = fn1(br, cr, dr, er, ar, m[12], 0x00000000, 8); dr = rotl(dr, 10)
20654 ar = fn1(ar, br, cr, dr, er, m[15], 0x00000000, 5); cr = rotl(cr, 10)
20655 er = fn1(er, ar, br, cr, dr, m[10], 0x00000000, 12); br = rotl(br, 10)
20656 dr = fn1(dr, er, ar, br, cr, m[4], 0x00000000, 9); ar = rotl(ar, 10)
20657 cr = fn1(cr, dr, er, ar, br, m[1], 0x00000000, 12); er = rotl(er, 10)
20658 br = fn1(br, cr, dr, er, ar, m[5], 0x00000000, 5); dr = rotl(dr, 10)
20659 ar = fn1(ar, br, cr, dr, er, m[8], 0x00000000, 14); cr = rotl(cr, 10)
20660 er = fn1(er, ar, br, cr, dr, m[7], 0x00000000, 6); br = rotl(br, 10)
20661 dr = fn1(dr, er, ar, br, cr, m[6], 0x00000000, 8); ar = rotl(ar, 10)
20662 cr = fn1(cr, dr, er, ar, br, m[2], 0x00000000, 13); er = rotl(er, 10)
20663 br = fn1(br, cr, dr, er, ar, m[13], 0x00000000, 6); dr = rotl(dr, 10)
20664 ar = fn1(ar, br, cr, dr, er, m[14], 0x00000000, 5); cr = rotl(cr, 10)
20665 er = fn1(er, ar, br, cr, dr, m[0], 0x00000000, 15); br = rotl(br, 10)
20666 dr = fn1(dr, er, ar, br, cr, m[3], 0x00000000, 13); ar = rotl(ar, 10)
20667 cr = fn1(cr, dr, er, ar, br, m[9], 0x00000000, 11); er = rotl(er, 10)
20668 br = fn1(br, cr, dr, er, ar, m[11], 0x00000000, 11); dr = rotl(dr, 10)
20669
20670 // change state
20671 var t = (this._b + cl + dr) | 0
20672 this._b = (this._c + dl + er) | 0
20673 this._c = (this._d + el + ar) | 0
20674 this._d = (this._e + al + br) | 0
20675 this._e = (this._a + bl + cr) | 0
20676 this._a = t
20677 }
20678
20679 RIPEMD160.prototype._digest = function () {
20680 // create padding and handle blocks
20681 this._block[this._blockOffset++] = 0x80
20682 if (this._blockOffset > 56) {
20683 this._block.fill(0, this._blockOffset, 64)
20684 this._update()
20685 this._blockOffset = 0
20686 }
20687
20688 this._block.fill(0, this._blockOffset, 56)
20689 this._block.writeUInt32LE(this._length[0], 56)
20690 this._block.writeUInt32LE(this._length[1], 60)
20691 this._update()
20692
20693 // produce result
20694 var buffer = new Buffer(20)
20695 buffer.writeInt32LE(this._a, 0)
20696 buffer.writeInt32LE(this._b, 4)
20697 buffer.writeInt32LE(this._c, 8)
20698 buffer.writeInt32LE(this._d, 12)
20699 buffer.writeInt32LE(this._e, 16)
20700 return buffer
20701 }
20702
20703 function rotl (x, n) {
20704 return (x << n) | (x >>> (32 - n))
20705 }
20706
20707 function fn1 (a, b, c, d, e, m, k, s) {
20708 return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0
20709 }
20710
20711 function fn2 (a, b, c, d, e, m, k, s) {
20712 return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0
20713 }
20714
20715 function fn3 (a, b, c, d, e, m, k, s) {
20716 return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0
20717 }
20718
20719 function fn4 (a, b, c, d, e, m, k, s) {
20720 return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0
20721 }
20722
20723 function fn5 (a, b, c, d, e, m, k, s) {
20724 return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0
20725 }
20726
20727 module.exports = RIPEMD160
20728
20729 }).call(this,require("buffer").Buffer)
20730 },{"buffer":4,"hash-base":92,"inherits":93}],98:[function(require,module,exports){
20731 arguments[4][26][0].apply(exports,arguments)
20732 },{"buffer":4,"dup":26}],99:[function(require,module,exports){
20733 (function (Buffer){
20734 // prototype class for hash functions
20735 function Hash (blockSize, finalSize) {
20736 this._block = new Buffer(blockSize)
20737 this._finalSize = finalSize
20738 this._blockSize = blockSize
20739 this._len = 0
20740 this._s = 0
20741 }
20742
20743 Hash.prototype.update = function (data, enc) {
20744 if (typeof data === 'string') {
20745 enc = enc || 'utf8'
20746 data = new Buffer(data, enc)
20747 }
20748
20749 var l = this._len += data.length
20750 var s = this._s || 0
20751 var f = 0
20752 var buffer = this._block
20753
20754 while (s < l) {
20755 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
20756 var ch = (t - f)
20757
20758 for (var i = 0; i < ch; i++) {
20759 buffer[(s % this._blockSize) + i] = data[i + f]
20760 }
20761
20762 s += ch
20763 f += ch
20764
20765 if ((s % this._blockSize) === 0) {
20766 this._update(buffer)
20767 }
20768 }
20769 this._s = s
20770
20771 return this
20772 }
20773
20774 Hash.prototype.digest = function (enc) {
20775 // Suppose the length of the message M, in bits, is l
20776 var l = this._len * 8
20777
20778 // Append the bit 1 to the end of the message
20779 this._block[this._len % this._blockSize] = 0x80
20780
20781 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
20782 this._block.fill(0, this._len % this._blockSize + 1)
20783
20784 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
20785 this._update(this._block)
20786 this._block.fill(0)
20787 }
20788
20789 // to this append the block which is equal to the number l written in binary
20790 // TODO: handle case where l is > Math.pow(2, 29)
20791 this._block.writeInt32BE(l, this._blockSize - 4)
20792
20793 var hash = this._update(this._block) || this._hash()
20794
20795 return enc ? hash.toString(enc) : hash
20796 }
20797
20798 Hash.prototype._update = function () {
20799 throw new Error('_update must be implemented by subclass')
20800 }
20801
20802 module.exports = Hash
20803
20804 }).call(this,require("buffer").Buffer)
20805 },{"buffer":4}],100:[function(require,module,exports){
20806 var exports = module.exports = function SHA (algorithm) {
20807 algorithm = algorithm.toLowerCase()
20808
20809 var Algorithm = exports[algorithm]
20810 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
20811
20812 return new Algorithm()
20813 }
20814
20815 exports.sha = require('./sha')
20816 exports.sha1 = require('./sha1')
20817 exports.sha224 = require('./sha224')
20818 exports.sha256 = require('./sha256')
20819 exports.sha384 = require('./sha384')
20820 exports.sha512 = require('./sha512')
20821
20822 },{"./sha":101,"./sha1":102,"./sha224":103,"./sha256":104,"./sha384":105,"./sha512":106}],101:[function(require,module,exports){
20823 (function (Buffer){
20824 /*
20825 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
20826 * in FIPS PUB 180-1
20827 * This source code is derived from sha1.js of the same repository.
20828 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
20829 * operation was added.
20830 */
20831
20832 var inherits = require('inherits')
20833 var Hash = require('./hash')
20834
20835 var K = [
20836 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
20837 ]
20838
20839 var W = new Array(80)
20840
20841 function Sha () {
20842 this.init()
20843 this._w = W
20844
20845 Hash.call(this, 64, 56)
20846 }
20847
20848 inherits(Sha, Hash)
20849
20850 Sha.prototype.init = function () {
20851 this._a = 0x67452301
20852 this._b = 0xefcdab89
20853 this._c = 0x98badcfe
20854 this._d = 0x10325476
20855 this._e = 0xc3d2e1f0
20856
20857 return this
20858 }
20859
20860 function rotl5 (num) {
20861 return (num << 5) | (num >>> 27)
20862 }
20863
20864 function rotl30 (num) {
20865 return (num << 30) | (num >>> 2)
20866 }
20867
20868 function ft (s, b, c, d) {
20869 if (s === 0) return (b & c) | ((~b) & d)
20870 if (s === 2) return (b & c) | (b & d) | (c & d)
20871 return b ^ c ^ d
20872 }
20873
20874 Sha.prototype._update = function (M) {
20875 var W = this._w
20876
20877 var a = this._a | 0
20878 var b = this._b | 0
20879 var c = this._c | 0
20880 var d = this._d | 0
20881 var e = this._e | 0
20882
20883 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
20884 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
20885
20886 for (var j = 0; j < 80; ++j) {
20887 var s = ~~(j / 20)
20888 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
20889
20890 e = d
20891 d = c
20892 c = rotl30(b)
20893 b = a
20894 a = t
20895 }
20896
20897 this._a = (a + this._a) | 0
20898 this._b = (b + this._b) | 0
20899 this._c = (c + this._c) | 0
20900 this._d = (d + this._d) | 0
20901 this._e = (e + this._e) | 0
20902 }
20903
20904 Sha.prototype._hash = function () {
20905 var H = new Buffer(20)
20906
20907 H.writeInt32BE(this._a | 0, 0)
20908 H.writeInt32BE(this._b | 0, 4)
20909 H.writeInt32BE(this._c | 0, 8)
20910 H.writeInt32BE(this._d | 0, 12)
20911 H.writeInt32BE(this._e | 0, 16)
20912
20913 return H
20914 }
20915
20916 module.exports = Sha
20917
20918 }).call(this,require("buffer").Buffer)
20919 },{"./hash":99,"buffer":4,"inherits":93}],102:[function(require,module,exports){
20920 (function (Buffer){
20921 /*
20922 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
20923 * in FIPS PUB 180-1
20924 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
20925 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
20926 * Distributed under the BSD License
20927 * See http://pajhome.org.uk/crypt/md5 for details.
20928 */
20929
20930 var inherits = require('inherits')
20931 var Hash = require('./hash')
20932
20933 var K = [
20934 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
20935 ]
20936
20937 var W = new Array(80)
20938
20939 function Sha1 () {
20940 this.init()
20941 this._w = W
20942
20943 Hash.call(this, 64, 56)
20944 }
20945
20946 inherits(Sha1, Hash)
20947
20948 Sha1.prototype.init = function () {
20949 this._a = 0x67452301
20950 this._b = 0xefcdab89
20951 this._c = 0x98badcfe
20952 this._d = 0x10325476
20953 this._e = 0xc3d2e1f0
20954
20955 return this
20956 }
20957
20958 function rotl1 (num) {
20959 return (num << 1) | (num >>> 31)
20960 }
20961
20962 function rotl5 (num) {
20963 return (num << 5) | (num >>> 27)
20964 }
20965
20966 function rotl30 (num) {
20967 return (num << 30) | (num >>> 2)
20968 }
20969
20970 function ft (s, b, c, d) {
20971 if (s === 0) return (b & c) | ((~b) & d)
20972 if (s === 2) return (b & c) | (b & d) | (c & d)
20973 return b ^ c ^ d
20974 }
20975
20976 Sha1.prototype._update = function (M) {
20977 var W = this._w
20978
20979 var a = this._a | 0
20980 var b = this._b | 0
20981 var c = this._c | 0
20982 var d = this._d | 0
20983 var e = this._e | 0
20984
20985 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
20986 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
20987
20988 for (var j = 0; j < 80; ++j) {
20989 var s = ~~(j / 20)
20990 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
20991
20992 e = d
20993 d = c
20994 c = rotl30(b)
20995 b = a
20996 a = t
20997 }
20998
20999 this._a = (a + this._a) | 0
21000 this._b = (b + this._b) | 0
21001 this._c = (c + this._c) | 0
21002 this._d = (d + this._d) | 0
21003 this._e = (e + this._e) | 0
21004 }
21005
21006 Sha1.prototype._hash = function () {
21007 var H = new Buffer(20)
21008
21009 H.writeInt32BE(this._a | 0, 0)
21010 H.writeInt32BE(this._b | 0, 4)
21011 H.writeInt32BE(this._c | 0, 8)
21012 H.writeInt32BE(this._d | 0, 12)
21013 H.writeInt32BE(this._e | 0, 16)
21014
21015 return H
21016 }
21017
21018 module.exports = Sha1
21019
21020 }).call(this,require("buffer").Buffer)
21021 },{"./hash":99,"buffer":4,"inherits":93}],103:[function(require,module,exports){
21022 (function (Buffer){
21023 /**
21024 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
21025 * in FIPS 180-2
21026 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
21027 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
21028 *
21029 */
21030
21031 var inherits = require('inherits')
21032 var Sha256 = require('./sha256')
21033 var Hash = require('./hash')
21034
21035 var W = new Array(64)
21036
21037 function Sha224 () {
21038 this.init()
21039
21040 this._w = W // new Array(64)
21041
21042 Hash.call(this, 64, 56)
21043 }
21044
21045 inherits(Sha224, Sha256)
21046
21047 Sha224.prototype.init = function () {
21048 this._a = 0xc1059ed8
21049 this._b = 0x367cd507
21050 this._c = 0x3070dd17
21051 this._d = 0xf70e5939
21052 this._e = 0xffc00b31
21053 this._f = 0x68581511
21054 this._g = 0x64f98fa7
21055 this._h = 0xbefa4fa4
21056
21057 return this
21058 }
21059
21060 Sha224.prototype._hash = function () {
21061 var H = new Buffer(28)
21062
21063 H.writeInt32BE(this._a, 0)
21064 H.writeInt32BE(this._b, 4)
21065 H.writeInt32BE(this._c, 8)
21066 H.writeInt32BE(this._d, 12)
21067 H.writeInt32BE(this._e, 16)
21068 H.writeInt32BE(this._f, 20)
21069 H.writeInt32BE(this._g, 24)
21070
21071 return H
21072 }
21073
21074 module.exports = Sha224
21075
21076 }).call(this,require("buffer").Buffer)
21077 },{"./hash":99,"./sha256":104,"buffer":4,"inherits":93}],104:[function(require,module,exports){
21078 (function (Buffer){
21079 /**
21080 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
21081 * in FIPS 180-2
21082 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
21083 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
21084 *
21085 */
21086
21087 var inherits = require('inherits')
21088 var Hash = require('./hash')
21089
21090 var K = [
21091 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
21092 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
21093 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
21094 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
21095 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
21096 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
21097 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
21098 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
21099 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
21100 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
21101 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
21102 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
21103 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
21104 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
21105 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
21106 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
21107 ]
21108
21109 var W = new Array(64)
21110
21111 function Sha256 () {
21112 this.init()
21113
21114 this._w = W // new Array(64)
21115
21116 Hash.call(this, 64, 56)
21117 }
21118
21119 inherits(Sha256, Hash)
21120
21121 Sha256.prototype.init = function () {
21122 this._a = 0x6a09e667
21123 this._b = 0xbb67ae85
21124 this._c = 0x3c6ef372
21125 this._d = 0xa54ff53a
21126 this._e = 0x510e527f
21127 this._f = 0x9b05688c
21128 this._g = 0x1f83d9ab
21129 this._h = 0x5be0cd19
21130
21131 return this
21132 }
21133
21134 function ch (x, y, z) {
21135 return z ^ (x & (y ^ z))
21136 }
21137
21138 function maj (x, y, z) {
21139 return (x & y) | (z & (x | y))
21140 }
21141
21142 function sigma0 (x) {
21143 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
21144 }
21145
21146 function sigma1 (x) {
21147 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
21148 }
21149
21150 function gamma0 (x) {
21151 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
21152 }
21153
21154 function gamma1 (x) {
21155 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
21156 }
21157
21158 Sha256.prototype._update = function (M) {
21159 var W = this._w
21160
21161 var a = this._a | 0
21162 var b = this._b | 0
21163 var c = this._c | 0
21164 var d = this._d | 0
21165 var e = this._e | 0
21166 var f = this._f | 0
21167 var g = this._g | 0
21168 var h = this._h | 0
21169
21170 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
21171 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
21172
21173 for (var j = 0; j < 64; ++j) {
21174 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
21175 var T2 = (sigma0(a) + maj(a, b, c)) | 0
21176
21177 h = g
21178 g = f
21179 f = e
21180 e = (d + T1) | 0
21181 d = c
21182 c = b
21183 b = a
21184 a = (T1 + T2) | 0
21185 }
21186
21187 this._a = (a + this._a) | 0
21188 this._b = (b + this._b) | 0
21189 this._c = (c + this._c) | 0
21190 this._d = (d + this._d) | 0
21191 this._e = (e + this._e) | 0
21192 this._f = (f + this._f) | 0
21193 this._g = (g + this._g) | 0
21194 this._h = (h + this._h) | 0
21195 }
21196
21197 Sha256.prototype._hash = function () {
21198 var H = new Buffer(32)
21199
21200 H.writeInt32BE(this._a, 0)
21201 H.writeInt32BE(this._b, 4)
21202 H.writeInt32BE(this._c, 8)
21203 H.writeInt32BE(this._d, 12)
21204 H.writeInt32BE(this._e, 16)
21205 H.writeInt32BE(this._f, 20)
21206 H.writeInt32BE(this._g, 24)
21207 H.writeInt32BE(this._h, 28)
21208
21209 return H
21210 }
21211
21212 module.exports = Sha256
21213
21214 }).call(this,require("buffer").Buffer)
21215 },{"./hash":99,"buffer":4,"inherits":93}],105:[function(require,module,exports){
21216 (function (Buffer){
21217 var inherits = require('inherits')
21218 var SHA512 = require('./sha512')
21219 var Hash = require('./hash')
21220
21221 var W = new Array(160)
21222
21223 function Sha384 () {
21224 this.init()
21225 this._w = W
21226
21227 Hash.call(this, 128, 112)
21228 }
21229
21230 inherits(Sha384, SHA512)
21231
21232 Sha384.prototype.init = function () {
21233 this._ah = 0xcbbb9d5d
21234 this._bh = 0x629a292a
21235 this._ch = 0x9159015a
21236 this._dh = 0x152fecd8
21237 this._eh = 0x67332667
21238 this._fh = 0x8eb44a87
21239 this._gh = 0xdb0c2e0d
21240 this._hh = 0x47b5481d
21241
21242 this._al = 0xc1059ed8
21243 this._bl = 0x367cd507
21244 this._cl = 0x3070dd17
21245 this._dl = 0xf70e5939
21246 this._el = 0xffc00b31
21247 this._fl = 0x68581511
21248 this._gl = 0x64f98fa7
21249 this._hl = 0xbefa4fa4
21250
21251 return this
21252 }
21253
21254 Sha384.prototype._hash = function () {
21255 var H = new Buffer(48)
21256
21257 function writeInt64BE (h, l, offset) {
21258 H.writeInt32BE(h, offset)
21259 H.writeInt32BE(l, offset + 4)
21260 }
21261
21262 writeInt64BE(this._ah, this._al, 0)
21263 writeInt64BE(this._bh, this._bl, 8)
21264 writeInt64BE(this._ch, this._cl, 16)
21265 writeInt64BE(this._dh, this._dl, 24)
21266 writeInt64BE(this._eh, this._el, 32)
21267 writeInt64BE(this._fh, this._fl, 40)
21268
21269 return H
21270 }
21271
21272 module.exports = Sha384
21273
21274 }).call(this,require("buffer").Buffer)
21275 },{"./hash":99,"./sha512":106,"buffer":4,"inherits":93}],106:[function(require,module,exports){
21276 (function (Buffer){
21277 var inherits = require('inherits')
21278 var Hash = require('./hash')
21279
21280 var K = [
21281 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
21282 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
21283 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
21284 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
21285 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
21286 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
21287 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
21288 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
21289 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
21290 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
21291 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
21292 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
21293 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
21294 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
21295 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
21296 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
21297 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
21298 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
21299 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
21300 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
21301 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
21302 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
21303 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
21304 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
21305 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
21306 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
21307 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
21308 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
21309 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
21310 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
21311 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
21312 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
21313 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
21314 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
21315 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
21316 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
21317 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
21318 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
21319 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
21320 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
21321 ]
21322
21323 var W = new Array(160)
21324
21325 function Sha512 () {
21326 this.init()
21327 this._w = W
21328
21329 Hash.call(this, 128, 112)
21330 }
21331
21332 inherits(Sha512, Hash)
21333
21334 Sha512.prototype.init = function () {
21335 this._ah = 0x6a09e667
21336 this._bh = 0xbb67ae85
21337 this._ch = 0x3c6ef372
21338 this._dh = 0xa54ff53a
21339 this._eh = 0x510e527f
21340 this._fh = 0x9b05688c
21341 this._gh = 0x1f83d9ab
21342 this._hh = 0x5be0cd19
21343
21344 this._al = 0xf3bcc908
21345 this._bl = 0x84caa73b
21346 this._cl = 0xfe94f82b
21347 this._dl = 0x5f1d36f1
21348 this._el = 0xade682d1
21349 this._fl = 0x2b3e6c1f
21350 this._gl = 0xfb41bd6b
21351 this._hl = 0x137e2179
21352
21353 return this
21354 }
21355
21356 function Ch (x, y, z) {
21357 return z ^ (x & (y ^ z))
21358 }
21359
21360 function maj (x, y, z) {
21361 return (x & y) | (z & (x | y))
21362 }
21363
21364 function sigma0 (x, xl) {
21365 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
21366 }
21367
21368 function sigma1 (x, xl) {
21369 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
21370 }
21371
21372 function Gamma0 (x, xl) {
21373 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
21374 }
21375
21376 function Gamma0l (x, xl) {
21377 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
21378 }
21379
21380 function Gamma1 (x, xl) {
21381 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
21382 }
21383
21384 function Gamma1l (x, xl) {
21385 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
21386 }
21387
21388 function getCarry (a, b) {
21389 return (a >>> 0) < (b >>> 0) ? 1 : 0
21390 }
21391
21392 Sha512.prototype._update = function (M) {
21393 var W = this._w
21394
21395 var ah = this._ah | 0
21396 var bh = this._bh | 0
21397 var ch = this._ch | 0
21398 var dh = this._dh | 0
21399 var eh = this._eh | 0
21400 var fh = this._fh | 0
21401 var gh = this._gh | 0
21402 var hh = this._hh | 0
21403
21404 var al = this._al | 0
21405 var bl = this._bl | 0
21406 var cl = this._cl | 0
21407 var dl = this._dl | 0
21408 var el = this._el | 0
21409 var fl = this._fl | 0
21410 var gl = this._gl | 0
21411 var hl = this._hl | 0
21412
21413 for (var i = 0; i < 32; i += 2) {
21414 W[i] = M.readInt32BE(i * 4)
21415 W[i + 1] = M.readInt32BE(i * 4 + 4)
21416 }
21417 for (; i < 160; i += 2) {
21418 var xh = W[i - 15 * 2]
21419 var xl = W[i - 15 * 2 + 1]
21420 var gamma0 = Gamma0(xh, xl)
21421 var gamma0l = Gamma0l(xl, xh)
21422
21423 xh = W[i - 2 * 2]
21424 xl = W[i - 2 * 2 + 1]
21425 var gamma1 = Gamma1(xh, xl)
21426 var gamma1l = Gamma1l(xl, xh)
21427
21428 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
21429 var Wi7h = W[i - 7 * 2]
21430 var Wi7l = W[i - 7 * 2 + 1]
21431
21432 var Wi16h = W[i - 16 * 2]
21433 var Wi16l = W[i - 16 * 2 + 1]
21434
21435 var Wil = (gamma0l + Wi7l) | 0
21436 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
21437 Wil = (Wil + gamma1l) | 0
21438 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
21439 Wil = (Wil + Wi16l) | 0
21440 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
21441
21442 W[i] = Wih
21443 W[i + 1] = Wil
21444 }
21445
21446 for (var j = 0; j < 160; j += 2) {
21447 Wih = W[j]
21448 Wil = W[j + 1]
21449
21450 var majh = maj(ah, bh, ch)
21451 var majl = maj(al, bl, cl)
21452
21453 var sigma0h = sigma0(ah, al)
21454 var sigma0l = sigma0(al, ah)
21455 var sigma1h = sigma1(eh, el)
21456 var sigma1l = sigma1(el, eh)
21457
21458 // t1 = h + sigma1 + ch + K[j] + W[j]
21459 var Kih = K[j]
21460 var Kil = K[j + 1]
21461
21462 var chh = Ch(eh, fh, gh)
21463 var chl = Ch(el, fl, gl)
21464
21465 var t1l = (hl + sigma1l) | 0
21466 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
21467 t1l = (t1l + chl) | 0
21468 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
21469 t1l = (t1l + Kil) | 0
21470 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
21471 t1l = (t1l + Wil) | 0
21472 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
21473
21474 // t2 = sigma0 + maj
21475 var t2l = (sigma0l + majl) | 0
21476 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
21477
21478 hh = gh
21479 hl = gl
21480 gh = fh
21481 gl = fl
21482 fh = eh
21483 fl = el
21484 el = (dl + t1l) | 0
21485 eh = (dh + t1h + getCarry(el, dl)) | 0
21486 dh = ch
21487 dl = cl
21488 ch = bh
21489 cl = bl
21490 bh = ah
21491 bl = al
21492 al = (t1l + t2l) | 0
21493 ah = (t1h + t2h + getCarry(al, t1l)) | 0
21494 }
21495
21496 this._al = (this._al + al) | 0
21497 this._bl = (this._bl + bl) | 0
21498 this._cl = (this._cl + cl) | 0
21499 this._dl = (this._dl + dl) | 0
21500 this._el = (this._el + el) | 0
21501 this._fl = (this._fl + fl) | 0
21502 this._gl = (this._gl + gl) | 0
21503 this._hl = (this._hl + hl) | 0
21504
21505 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
21506 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
21507 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
21508 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
21509 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
21510 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
21511 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
21512 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
21513 }
21514
21515 Sha512.prototype._hash = function () {
21516 var H = new Buffer(64)
21517
21518 function writeInt64BE (h, l, offset) {
21519 H.writeInt32BE(h, offset)
21520 H.writeInt32BE(l, offset + 4)
21521 }
21522
21523 writeInt64BE(this._ah, this._al, 0)
21524 writeInt64BE(this._bh, this._bl, 8)
21525 writeInt64BE(this._ch, this._cl, 16)
21526 writeInt64BE(this._dh, this._dl, 24)
21527 writeInt64BE(this._eh, this._el, 32)
21528 writeInt64BE(this._fh, this._fl, 40)
21529 writeInt64BE(this._gh, this._gl, 48)
21530 writeInt64BE(this._hh, this._hl, 56)
21531
21532 return H
21533 }
21534
21535 module.exports = Sha512
21536
21537 }).call(this,require("buffer").Buffer)
21538 },{"./hash":99,"buffer":4,"inherits":93}],107:[function(require,module,exports){
21539 var inherits = require('inherits')
21540 var native = require('./native')
21541
21542 function TfTypeError (type, value, valueTypeName) {
21543 this.__error = Error.call(this)
21544 this.__type = type
21545 this.__value = value
21546 this.__valueTypeName = valueTypeName
21547
21548 var message
21549 Object.defineProperty(this, 'message', {
21550 enumerable: true,
21551 get: function () {
21552 if (message) return message
21553
21554 valueTypeName = valueTypeName || getValueTypeName(value)
21555 message = tfErrorString(type, value, valueTypeName)
21556
21557 return message
21558 }
21559 })
21560 }
21561
21562 function TfPropertyTypeError (type, property, label, value, error, valueTypeName) {
21563 this.__error = error || Error.call(this)
21564 this.__label = label
21565 this.__property = property
21566 this.__type = type
21567 this.__value = value
21568 this.__valueTypeName = valueTypeName
21569
21570 var message
21571 Object.defineProperty(this, 'message', {
21572 enumerable: true,
21573 get: function () {
21574 if (message) return message
21575 if (type) {
21576 valueTypeName = valueTypeName || getValueTypeName(value)
21577 message = tfPropertyErrorString(type, label, property, value, valueTypeName)
21578 } else {
21579 message = 'Unexpected property "' + property + '"'
21580 }
21581
21582 return message
21583 }
21584 })
21585 }
21586
21587 // inherit from Error, assign stack
21588 [TfTypeError, TfPropertyTypeError].forEach(function (tfErrorType) {
21589 inherits(tfErrorType, Error)
21590 Object.defineProperty(tfErrorType, 'stack', {
21591 get: function () { return this.__error.stack }
21592 })
21593 })
21594
21595 function tfCustomError (expected, actual) {
21596 return new TfTypeError(expected, {}, actual)
21597 }
21598
21599 function tfSubError (e, property, label) {
21600 // sub child?
21601 if (e instanceof TfPropertyTypeError) {
21602 property = property + '.' + e.__property
21603 label = e.__label
21604
21605 return new TfPropertyTypeError(
21606 e.__type, property, label, e.__value, e.__error, e.__valueTypeName
21607 )
21608 }
21609
21610 // child?
21611 if (e instanceof TfTypeError) {
21612 return new TfPropertyTypeError(
21613 e.__type, property, label, e.__value, e.__error, e.__valueTypeName
21614 )
21615 }
21616
21617 return e
21618 }
21619
21620 function getTypeName (fn) {
21621 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1]
21622 }
21623
21624 function getValueTypeName (value) {
21625 return native.Nil(value) ? '' : getTypeName(value.constructor)
21626 }
21627
21628 function getValue (value) {
21629 if (native.Function(value)) return ''
21630 if (native.String(value)) return JSON.stringify(value)
21631 if (value && native.Object(value)) return ''
21632 return value
21633 }
21634
21635 function tfJSON (type) {
21636 if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type)
21637 if (native.Array(type)) return 'Array'
21638 if (type && native.Object(type)) return 'Object'
21639
21640 return type !== undefined ? type : ''
21641 }
21642
21643 function tfErrorString (type, value, valueTypeName) {
21644 var valueJson = getValue(value)
21645
21646 return 'Expected ' + tfJSON(type) + ', got' +
21647 (valueTypeName !== '' ? ' ' + valueTypeName : '') +
21648 (valueJson !== '' ? ' ' + valueJson : '')
21649 }
21650
21651 function tfPropertyErrorString (type, label, name, value, valueTypeName) {
21652 var description = '" of type '
21653 if (label === 'key') description = '" with key type '
21654
21655 return tfErrorString('property "' + tfJSON(name) + description + tfJSON(type), value, valueTypeName)
21656 }
21657
21658 module.exports = {
21659 TfTypeError: TfTypeError,
21660 TfPropertyTypeError: TfPropertyTypeError,
21661 tfCustomError: tfCustomError,
21662 tfSubError: tfSubError,
21663 tfJSON: tfJSON,
21664 getValueTypeName: getValueTypeName
21665 }
21666
21667 },{"./native":110,"inherits":93}],108:[function(require,module,exports){
21668 (function (Buffer){
21669 var NATIVE = require('./native')
21670 var ERRORS = require('./errors')
21671
21672 function _Buffer (value) {
21673 return Buffer.isBuffer(value)
21674 }
21675
21676 function Hex (value) {
21677 return typeof value === 'string' && /^([0-9a-f]{2})+$/i.test(value)
21678 }
21679
21680 function _LengthN (type, length) {
21681 var name = type.toJSON()
21682
21683 function Length (value) {
21684 if (!type(value)) return false
21685 if (value.length === length) return true
21686
21687 throw ERRORS.tfCustomError(name + '(Length: ' + length + ')', name + '(Length: ' + value.length + ')')
21688 }
21689 Length.toJSON = function () { return name }
21690
21691 return Length
21692 }
21693
21694 var _ArrayN = _LengthN.bind(null, NATIVE.Array)
21695 var _BufferN = _LengthN.bind(null, _Buffer)
21696 var _HexN = _LengthN.bind(null, Hex)
21697
21698 var UINT53_MAX = Math.pow(2, 53) - 1
21699
21700 function Finite (value) {
21701 return typeof value === 'number' && isFinite(value)
21702 }
21703 function Int8 (value) { return ((value << 24) >> 24) === value }
21704 function Int16 (value) { return ((value << 16) >> 16) === value }
21705 function Int32 (value) { return (value | 0) === value }
21706 function UInt8 (value) { return (value & 0xff) === value }
21707 function UInt16 (value) { return (value & 0xffff) === value }
21708 function UInt32 (value) { return (value >>> 0) === value }
21709 function UInt53 (value) {
21710 return typeof value === 'number' &&
21711 value >= 0 &&
21712 value <= UINT53_MAX &&
21713 Math.floor(value) === value
21714 }
21715
21716 var types = {
21717 ArrayN: _ArrayN,
21718 Buffer: _Buffer,
21719 BufferN: _BufferN,
21720 Finite: Finite,
21721 Hex: Hex,
21722 HexN: _HexN,
21723 Int8: Int8,
21724 Int16: Int16,
21725 Int32: Int32,
21726 UInt8: UInt8,
21727 UInt16: UInt16,
21728 UInt32: UInt32,
21729 UInt53: UInt53
21730 }
21731
21732 for (var typeName in types) {
21733 types[typeName].toJSON = function (t) {
21734 return t
21735 }.bind(null, typeName)
21736 }
21737
21738 module.exports = types
21739
21740 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v6.0.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
21741 },{"../../../../../.nvm/versions/node/v6.0.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":9,"./errors":107,"./native":110}],109:[function(require,module,exports){
21742 var ERRORS = require('./errors')
21743 var NATIVE = require('./native')
21744
21745 // short-hand
21746 var tfJSON = ERRORS.tfJSON
21747 var TfTypeError = ERRORS.TfTypeError
21748 var TfPropertyTypeError = ERRORS.TfPropertyTypeError
21749 var tfSubError = ERRORS.tfSubError
21750 var getValueTypeName = ERRORS.getValueTypeName
21751
21752 var TYPES = {
21753 arrayOf: function arrayOf (type) {
21754 type = compile(type)
21755
21756 function _arrayOf (array, strict) {
21757 if (!NATIVE.Array(array)) return false
21758
21759 return array.every(function (value, i) {
21760 try {
21761 return typeforce(type, value, strict)
21762 } catch (e) {
21763 throw tfSubError(e, i)
21764 }
21765 })
21766 }
21767 _arrayOf.toJSON = function () { return '[' + tfJSON(type) + ']' }
21768
21769 return _arrayOf
21770 },
21771
21772 maybe: function maybe (type) {
21773 type = compile(type)
21774
21775 function _maybe (value, strict) {
21776 return NATIVE.Nil(value) || type(value, strict, maybe)
21777 }
21778 _maybe.toJSON = function () { return '?' + tfJSON(type) }
21779
21780 return _maybe
21781 },
21782
21783 map: function map (propertyType, propertyKeyType) {
21784 propertyType = compile(propertyType)
21785 if (propertyKeyType) propertyKeyType = compile(propertyKeyType)
21786
21787 function _map (value, strict) {
21788 if (!NATIVE.Object(value, strict)) return false
21789 if (NATIVE.Nil(value, strict)) return false
21790
21791 for (var propertyName in value) {
21792 try {
21793 if (propertyKeyType) {
21794 typeforce(propertyKeyType, propertyName, strict)
21795 }
21796 } catch (e) {
21797 throw tfSubError(e, propertyName, 'key')
21798 }
21799
21800 try {
21801 var propertyValue = value[propertyName]
21802 typeforce(propertyType, propertyValue, strict)
21803 } catch (e) {
21804 throw tfSubError(e, propertyName)
21805 }
21806 }
21807
21808 return true
21809 }
21810
21811 if (propertyKeyType) {
21812 _map.toJSON = function () {
21813 return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'
21814 }
21815 } else {
21816 _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }
21817 }
21818
21819 return _map
21820 },
21821
21822 object: function object (uncompiled) {
21823 var type = {}
21824
21825 for (var typePropertyName in uncompiled) {
21826 type[typePropertyName] = compile(uncompiled[typePropertyName])
21827 }
21828
21829 function _object (value, strict) {
21830 if (!NATIVE.Object(value)) return false
21831 if (NATIVE.Nil(value)) return false
21832
21833 var propertyName
21834
21835 try {
21836 for (propertyName in type) {
21837 var propertyType = type[propertyName]
21838 var propertyValue = value[propertyName]
21839
21840 typeforce(propertyType, propertyValue, strict)
21841 }
21842 } catch (e) {
21843 throw tfSubError(e, propertyName)
21844 }
21845
21846 if (strict) {
21847 for (propertyName in value) {
21848 if (type[propertyName]) continue
21849
21850 throw new TfPropertyTypeError(undefined, propertyName)
21851 }
21852 }
21853
21854 return true
21855 }
21856 _object.toJSON = function () { return tfJSON(type) }
21857
21858 return _object
21859 },
21860
21861 oneOf: function oneOf () {
21862 var types = [].slice.call(arguments).map(compile)
21863
21864 function _oneOf (value, strict) {
21865 return types.some(function (type) {
21866 try {
21867 return typeforce(type, value, strict)
21868 } catch (e) {
21869 return false
21870 }
21871 })
21872 }
21873 _oneOf.toJSON = function () { return types.map(tfJSON).join('|') }
21874
21875 return _oneOf
21876 },
21877
21878 quacksLike: function quacksLike (type) {
21879 function _quacksLike (value) {
21880 return type === getValueTypeName(value)
21881 }
21882 _quacksLike.toJSON = function () { return type }
21883
21884 return _quacksLike
21885 },
21886
21887 tuple: function tuple () {
21888 var types = [].slice.call(arguments).map(compile)
21889
21890 function _tuple (values, strict) {
21891 return types.every(function (type, i) {
21892 try {
21893 return typeforce(type, values[i], strict)
21894 } catch (e) {
21895 throw tfSubError(e, i)
21896 }
21897 }) && (!strict || values.length === arguments.length)
21898 }
21899 _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' }
21900
21901 return _tuple
21902 },
21903
21904 value: function value (expected) {
21905 function _value (actual) {
21906 return actual === expected
21907 }
21908 _value.toJSON = function () { return expected }
21909
21910 return _value
21911 }
21912 }
21913
21914 function compile (type) {
21915 if (NATIVE.String(type)) {
21916 if (type[0] === '?') return TYPES.maybe(compile(type.slice(1)))
21917
21918 return NATIVE[type] || TYPES.quacksLike(type)
21919 } else if (type && NATIVE.Object(type)) {
21920 if (NATIVE.Array(type)) return TYPES.arrayOf(compile(type[0]))
21921
21922 return TYPES.object(type)
21923 } else if (NATIVE.Function(type)) {
21924 return type
21925 }
21926
21927 return TYPES.value(type)
21928 }
21929
21930 function typeforce (type, value, strict, surrogate) {
21931 if (NATIVE.Function(type)) {
21932 if (type(value, strict)) return true
21933
21934 throw new TfTypeError(surrogate || type, value)
21935 }
21936
21937 // JIT
21938 return typeforce(compile(type), value, strict)
21939 }
21940
21941 // assign types to typeforce function
21942 for (var typeName in NATIVE) {
21943 typeforce[typeName] = NATIVE[typeName]
21944 }
21945
21946 for (typeName in TYPES) {
21947 typeforce[typeName] = TYPES[typeName]
21948 }
21949
21950 var EXTRA = require('./extra')
21951 for (typeName in EXTRA) {
21952 typeforce[typeName] = EXTRA[typeName]
21953 }
21954
21955 // async wrapper
21956 function __async (type, value, strict, callback) {
21957 // default to falsy strict if using shorthand overload
21958 if (typeof strict === 'function') return __async(type, value, false, strict)
21959
21960 try {
21961 typeforce(type, value, strict)
21962 } catch (e) {
21963 return callback(e)
21964 }
21965
21966 callback()
21967 }
21968
21969 typeforce.async = __async
21970 typeforce.compile = compile
21971 typeforce.TfTypeError = TfTypeError
21972 typeforce.TfPropertyTypeError = TfPropertyTypeError
21973
21974 module.exports = typeforce
21975
21976 },{"./errors":107,"./extra":108,"./native":110}],110:[function(require,module,exports){
21977 var types = {
21978 Array: function (value) { return value !== null && value !== undefined && value.constructor === Array },
21979 Boolean: function (value) { return typeof value === 'boolean' },
21980 Function: function (value) { return typeof value === 'function' },
21981 Nil: function (value) { return value === undefined || value === null },
21982 Number: function (value) { return typeof value === 'number' },
21983 Object: function (value) { return typeof value === 'object' },
21984 String: function (value) { return typeof value === 'string' },
21985 '': function () { return true }
21986 }
21987
21988 // TODO: deprecate
21989 types.Null = types.Nil
21990
21991 for (var typeName in types) {
21992 types[typeName].toJSON = function (t) {
21993 return t
21994 }.bind(null, typeName)
21995 }
21996
21997 module.exports = types
21998
21999 },{}],111:[function(require,module,exports){
22000 (function (Buffer){
22001 'use strict'
22002
22003 // Number.MAX_SAFE_INTEGER
22004 var MAX_SAFE_INTEGER = 9007199254740991
22005
22006 function checkUInt53 (n) {
22007 if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0) throw new RangeError('value out of range')
22008 }
22009
22010 function encode (number, buffer, offset) {
22011 checkUInt53(number)
22012
22013 if (!buffer) buffer = new Buffer(encodingLength(number))
22014 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
22015 if (!offset) offset = 0
22016
22017 // 8 bit
22018 if (number < 0xfd) {
22019 buffer.writeUInt8(number, offset)
22020 encode.bytes = 1
22021
22022 // 16 bit
22023 } else if (number <= 0xffff) {
22024 buffer.writeUInt8(0xfd, offset)
22025 buffer.writeUInt16LE(number, offset + 1)
22026 encode.bytes = 3
22027
22028 // 32 bit
22029 } else if (number <= 0xffffffff) {
22030 buffer.writeUInt8(0xfe, offset)
22031 buffer.writeUInt32LE(number, offset + 1)
22032 encode.bytes = 5
22033
22034 // 64 bit
22035 } else {
22036 buffer.writeUInt8(0xff, offset)
22037 buffer.writeUInt32LE(number >>> 0, offset + 1)
22038 buffer.writeUInt32LE((number / 0x100000000) | 0, offset + 5)
22039 encode.bytes = 9
22040 }
22041
22042 return buffer
22043 }
22044
22045 function decode (buffer, offset) {
22046 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
22047 if (!offset) offset = 0
22048
22049 var first = buffer.readUInt8(offset)
22050
22051 // 8 bit
22052 if (first < 0xfd) {
22053 decode.bytes = 1
22054 return first
22055
22056 // 16 bit
22057 } else if (first === 0xfd) {
22058 decode.bytes = 3
22059 return buffer.readUInt16LE(offset + 1)
22060
22061 // 32 bit
22062 } else if (first === 0xfe) {
22063 decode.bytes = 5
22064 return buffer.readUInt32LE(offset + 1)
22065
22066 // 64 bit
22067 } else {
22068 decode.bytes = 9
22069 var lo = buffer.readUInt32LE(offset + 1)
22070 var hi = buffer.readUInt32LE(offset + 5)
22071 var number = hi * 0x0100000000 + lo
22072 checkUInt53(number)
22073
22074 return number
22075 }
22076 }
22077
22078 function encodingLength (number) {
22079 checkUInt53(number)
22080
22081 return (
22082 number < 0xfd ? 1
22083 : number <= 0xffff ? 3
22084 : number <= 0xffffffff ? 5
22085 : 9
22086 )
22087 }
22088
22089 module.exports = { encode: encode, decode: decode, encodingLength: encodingLength }
22090
22091 }).call(this,require("buffer").Buffer)
22092 },{"buffer":4}],112:[function(require,module,exports){
22093 (function (Buffer){
22094 var bs58check = require('bs58check')
22095
22096 function decodeRaw (buffer, version) {
22097 // check version only if defined
22098 if (version !== undefined && buffer[0] !== version) throw new Error('Invalid network version')
22099
22100 // uncompressed
22101 if (buffer.length === 33) {
22102 return {
22103 version: buffer[0],
22104 privateKey: buffer.slice(1, 33),
22105 compressed: false
22106 }
22107 }
22108
22109 // invalid length
22110 if (buffer.length !== 34) throw new Error('Invalid WIF length')
22111
22112 // invalid compression flag
22113 if (buffer[33] !== 0x01) throw new Error('Invalid compression flag')
22114
22115 return {
22116 version: buffer[0],
22117 privateKey: buffer.slice(1, 33),
22118 compressed: true
22119 }
22120 }
22121
22122 function encodeRaw (version, privateKey, compressed) {
22123 var result = new Buffer(compressed ? 34 : 33)
22124
22125 result.writeUInt8(version, 0)
22126 privateKey.copy(result, 1)
22127
22128 if (compressed) {
22129 result[33] = 0x01
22130 }
22131
22132 return result
22133 }
22134
22135 function decode (string, version) {
22136 return decodeRaw(bs58check.decode(string), version)
22137 }
22138
22139 function encode (version, privateKey, compressed) {
22140 if (typeof version === 'number') return bs58check.encode(encodeRaw(version, privateKey, compressed))
22141
22142 return bs58check.encode(
22143 encodeRaw(
22144 version.version,
22145 version.privateKey,
22146 version.compressed
22147 )
22148 )
22149 }
22150
22151 module.exports = {
22152 decode: decode,
22153 decodeRaw: decodeRaw,
22154 encode: encode,
22155 encodeRaw: encodeRaw
22156 }
22157
22158 }).call(this,require("buffer").Buffer)
22159 },{"bs58check":80,"buffer":4}]},{},[33])(33)
22160 });
22161 </script>
22162 <script>bitcoinjs.bitcoin.networks.shadow = {
22163 messagePrefix: 'unused',
22164 bip32: {
22165 public: 0xEE80286A,
22166 private: 0xEE8031E8
22167 },
22168 pubKeyHash: 0x3f,
22169 scriptHash: 0x7d,
22170 wif: 0xbf
22171 };
22172
22173 bitcoinjs.bitcoin.networks.shadowtn = {
22174 messagePrefix: 'unused',
22175 bip32: {
22176 public: 0x76C0FDFB,
22177 private: 0x76C1077A
22178 },
22179 pubKeyHash: 0x7f,
22180 scriptHash: 0xc4,
22181 wif: 0xff
22182 };
22183
22184 bitcoinjs.bitcoin.networks.clam = {
22185 messagePrefix: 'unused',
22186 bip32: {
22187 public: 0xa8c26d64,
22188 private: 0xa8c17826
22189 },
22190 pubKeyHash: 0x89,
22191 scriptHash: 0x00, // TODO set this correctly
22192 wif: 0x85
22193 };
22194
22195 bitcoinjs.bitcoin.networks.crown = {
22196 messagePrefix: 'unused',
22197 bip32: {
22198 public: 0x0488b21e,
22199 private: 0x0488ade4
22200 },
22201 pubKeyHash: 0x00,
22202 scriptHash: 0x05,
22203 wif: 0x80
22204 };
22205
22206 bitcoinjs.bitcoin.networks.dash = {
22207 messagePrefix: 'unused',
22208 bip32: {
22209 public: 0x0488b21e,
22210 private: 0x0488ade4
22211 },
22212 pubKeyHash: 0x4c,
22213 scriptHash: 0x10,
22214 wif: 0xcc
22215 };
22216
22217 bitcoinjs.bitcoin.networks.maza = {
22218 messagePrefix: 'unused',
22219 bip32: {
22220 public: 0x0488b21e,
22221 private: 0x0488ade4
22222 },
22223 pubKeyHash: 0x32,
22224 scriptHash: 0x09,
22225 wif: 0xe0
22226 };
22227
22228 bitcoinjs.bitcoin.networks.dashtn = {
22229 messagePrefix: 'unused',
22230 bip32: {
22231 public: 0x043587cf,
22232 private: 0x04358394
22233 },
22234 pubKeyHash: 0x8c,
22235 scriptHash: 0x13,
22236 wif: 0xef
22237 };
22238
22239 bitcoinjs.bitcoin.networks.game = {
22240 messagePrefix: 'unused',
22241 bip32: {
22242 public: 0x0488b21e,
22243 private: 0x0488ade4
22244 },
22245 pubKeyHash: 0x26,
22246 scriptHash: 0x05,
22247 wif: 0xa6
22248 };
22249
22250 bitcoinjs.bitcoin.networks.namecoin = {
22251 messagePrefix: 'unused',
22252 bip32: {
22253 public: 0x0488b21e,
22254 private: 0x0488ade4
22255 },
22256 pubKeyHash: 0x34,
22257 scriptHash: 0x00, // TODO set this correctly
22258 wif: 0x80
22259 };
22260
22261 bitcoinjs.bitcoin.networks.peercoin = {
22262 messagePrefix: 'unused',
22263 bip32: {
22264 public: 0x0488b21e,
22265 private: 0x0488ade4
22266 },
22267 pubKeyHash: 0x37,
22268 scriptHash: 0x00, // TODO set this correctly
22269 wif: 0xb7
22270 };
22271
22272 bitcoinjs.bitcoin.networks.slimcoin = {
22273 messagePrefix: 'unused',
22274 bip32: {
22275 public: 0xef6adf10,
22276 private: 0xef69ea80
22277 },
22278 pubKeyHash: 0x3f,
22279 scriptHash: 0x7d,
22280 wif: 0x46
22281 };
22282
22283 bitcoinjs.bitcoin.networks.slimcointn = {
22284 messagePrefix: 'unused',
22285 bip32: {
22286 public: 0x043587CF,
22287 private: 0x04358394
22288 },
22289 pubKeyHash: 0x6f,
22290 scriptHash: 0xc4,
22291 wif: 0x57
22292 };
22293
22294 bitcoinjs.bitcoin.networks.dogecoin = {
22295 messagePrefix: '\x19Dogecoin Signed Message:\n',
22296 bip32: {
22297 public: 0x02facafd,
22298 private: 0x02fac398
22299 },
22300 pubKeyHash: 0x1e,
22301 scriptHash: 0x16,
22302 wif: 0x9e
22303 };
22304
22305 bitcoinjs.bitcoin.networks.viacoin = {
22306 messagePrefix: '\x18Viacoin Signed Message:\n',
22307 bip32: {
22308 public: 0x0488b21e,
22309 private: 0x0488ade4
22310 },
22311 pubKeyHash: 0x47,
22312 scriptHash: 0x21,
22313 wif: 0xc7
22314 };
22315
22316 bitcoinjs.bitcoin.networks.viacointestnet = {
22317 messagePrefix: '\x18Viacoin Signed Message:\n',
22318 bip32: {
22319 public: 0x043587cf,
22320 private: 0x04358394
22321 },
22322 pubKeyHash: 0x7f,
22323 scriptHash: 0xc4,
22324 wif: 0xff
22325 };
22326
22327 bitcoinjs.bitcoin.networks.gamerscoin = {
22328 messagePrefix: '\x19Gamerscoin Signed Message:\n',
22329 bip32: {
22330 public: 0x019da462,
22331 private: 0x019d9cfe
22332 },
22333 pubKeyHash: 0x26,
22334 scriptHash: 0x05,
22335 wif: 0xA6
22336 };
22337
22338 bitcoinjs.bitcoin.networks.jumbucks = {
22339 messagePrefix: '\x19Jumbucks Signed Message:\n',
22340 bip32: {
22341 public: 0x037a689a,
22342 private: 0x037a6460
22343 },
22344 pubKeyHash: 0x2b,
22345 scriptHash: 0x05,
22346 wif: 0xab
22347 };
22348
22349 bitcoinjs.bitcoin.networks.zetacoin = {
22350 messagePrefix: '\x18Zetacoin Signed Message:\n',
22351 bip32: {
22352 public: 0x0488b21e,
22353 private: 0x0488ade4
22354 },
22355 pubKeyHash: 0x50,
22356 scriptHash: 0x09,
22357 wif: 0xe0
22358 };
22359
22360 bitcoinjs.bitcoin.networks.myriadcoin = {
22361 messagePrefix: 'unused',
22362 bip32: {
22363 public: 0x0488b21e,
22364 private: 0x0488ade4
22365 },
22366 pubKeyHash: 0x32,
22367 scriptHash: 0x00, // TODO set this correctly
22368 wif: 0xb2
22369 };
22370
22371 bitcoinjs.bitcoin.networks.pivx = {
22372 messagePrefix: 'unused',
22373 bip32: {
22374 public: 0x022d2533,
22375 private: 0x0221312b
22376 },
22377 pubKeyHash: 0x1e,
22378 scriptHash: 0x0d,
22379 wif: 0xd4
22380 };
22381
22382 bitcoinjs.bitcoin.networks.pivxtestnet = {
22383 messagePrefix: 'unused',
22384 bip32: {
22385 public: 0x3a8061a0,
22386 private: 0x3a805837
22387 },
22388 pubKeyHash: 0x8b,
22389 scriptHash: 0x13,
22390 wif: 0xef
22391 };
22392
22393 bitcoinjs.bitcoin.networks.fujicoin = {
22394 messagePrefix: '\x19FujiCoin Signed Message:\n',
22395 bip32: {
22396 public: 0x0488b21e,
22397 private: 0x0488ade4
22398 },
22399 pubKeyHash: 0x24,
22400 scriptHash: 0x10,
22401 wif: 0xa4
22402 };
22403 </script>
22404 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.ethUtil = f()}})(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);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.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(require,module,exports){
22405 (function (global){
22406 'use strict';
22407
22408 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
22409 // original notice:
22410
22411 /*!
22412 * The buffer module from node.js, for the browser.
22413 *
22414 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
22415 * @license MIT
22416 */
22417 function compare(a, b) {
22418 if (a === b) {
22419 return 0;
22420 }
22421
22422 var x = a.length;
22423 var y = b.length;
22424
22425 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
22426 if (a[i] !== b[i]) {
22427 x = a[i];
22428 y = b[i];
22429 break;
22430 }
22431 }
22432
22433 if (x < y) {
22434 return -1;
22435 }
22436 if (y < x) {
22437 return 1;
22438 }
22439 return 0;
22440 }
22441 function isBuffer(b) {
22442 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
22443 return global.Buffer.isBuffer(b);
22444 }
22445 return !!(b != null && b._isBuffer);
22446 }
22447
22448 // based on node assert, original notice:
22449
22450 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
22451 //
22452 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
22453 //
22454 // Originally from narwhal.js (http://narwhaljs.org)
22455 // Copyright (c) 2009 Thomas Robinson <280north.com>
22456 //
22457 // Permission is hereby granted, free of charge, to any person obtaining a copy
22458 // of this software and associated documentation files (the 'Software'), to
22459 // deal in the Software without restriction, including without limitation the
22460 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
22461 // sell copies of the Software, and to permit persons to whom the Software is
22462 // furnished to do so, subject to the following conditions:
22463 //
22464 // The above copyright notice and this permission notice shall be included in
22465 // all copies or substantial portions of the Software.
22466 //
22467 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22468 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22469 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22470 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22471 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22472 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22473
22474 var util = require('util/');
22475 var hasOwn = Object.prototype.hasOwnProperty;
22476 var pSlice = Array.prototype.slice;
22477 var functionsHaveNames = (function () {
22478 return function foo() {}.name === 'foo';
22479 }());
22480 function pToString (obj) {
22481 return Object.prototype.toString.call(obj);
22482 }
22483 function isView(arrbuf) {
22484 if (isBuffer(arrbuf)) {
22485 return false;
22486 }
22487 if (typeof global.ArrayBuffer !== 'function') {
22488 return false;
22489 }
22490 if (typeof ArrayBuffer.isView === 'function') {
22491 return ArrayBuffer.isView(arrbuf);
22492 }
22493 if (!arrbuf) {
22494 return false;
22495 }
22496 if (arrbuf instanceof DataView) {
22497 return true;
22498 }
22499 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
22500 return true;
22501 }
22502 return false;
22503 }
22504 // 1. The assert module provides functions that throw
22505 // AssertionError's when particular conditions are not met. The
22506 // assert module must conform to the following interface.
22507
22508 var assert = module.exports = ok;
22509
22510 // 2. The AssertionError is defined in assert.
22511 // new assert.AssertionError({ message: message,
22512 // actual: actual,
22513 // expected: expected })
22514
22515 var regex = /\s*function\s+([^\(\s]*)\s*/;
22516 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
22517 function getName(func) {
22518 if (!util.isFunction(func)) {
22519 return;
22520 }
22521 if (functionsHaveNames) {
22522 return func.name;
22523 }
22524 var str = func.toString();
22525 var match = str.match(regex);
22526 return match && match[1];
22527 }
22528 assert.AssertionError = function AssertionError(options) {
22529 this.name = 'AssertionError';
22530 this.actual = options.actual;
22531 this.expected = options.expected;
22532 this.operator = options.operator;
22533 if (options.message) {
22534 this.message = options.message;
22535 this.generatedMessage = false;
22536 } else {
22537 this.message = getMessage(this);
22538 this.generatedMessage = true;
22539 }
22540 var stackStartFunction = options.stackStartFunction || fail;
22541 if (Error.captureStackTrace) {
22542 Error.captureStackTrace(this, stackStartFunction);
22543 } else {
22544 // non v8 browsers so we can have a stacktrace
22545 var err = new Error();
22546 if (err.stack) {
22547 var out = err.stack;
22548
22549 // try to strip useless frames
22550 var fn_name = getName(stackStartFunction);
22551 var idx = out.indexOf('\n' + fn_name);
22552 if (idx >= 0) {
22553 // once we have located the function frame
22554 // we need to strip out everything before it (and its line)
22555 var next_line = out.indexOf('\n', idx + 1);
22556 out = out.substring(next_line + 1);
22557 }
22558
22559 this.stack = out;
22560 }
22561 }
22562 };
22563
22564 // assert.AssertionError instanceof Error
22565 util.inherits(assert.AssertionError, Error);
22566
22567 function truncate(s, n) {
22568 if (typeof s === 'string') {
22569 return s.length < n ? s : s.slice(0, n);
22570 } else {
22571 return s;
22572 }
22573 }
22574 function inspect(something) {
22575 if (functionsHaveNames || !util.isFunction(something)) {
22576 return util.inspect(something);
22577 }
22578 var rawname = getName(something);
22579 var name = rawname ? ': ' + rawname : '';
22580 return '[Function' + name + ']';
22581 }
22582 function getMessage(self) {
22583 return truncate(inspect(self.actual), 128) + ' ' +
22584 self.operator + ' ' +
22585 truncate(inspect(self.expected), 128);
22586 }
22587
22588 // At present only the three keys mentioned above are used and
22589 // understood by the spec. Implementations or sub modules can pass
22590 // other keys to the AssertionError's constructor - they will be
22591 // ignored.
22592
22593 // 3. All of the following functions must throw an AssertionError
22594 // when a corresponding condition is not met, with a message that
22595 // may be undefined if not provided. All assertion methods provide
22596 // both the actual and expected values to the assertion error for
22597 // display purposes.
22598
22599 function fail(actual, expected, message, operator, stackStartFunction) {
22600 throw new assert.AssertionError({
22601 message: message,
22602 actual: actual,
22603 expected: expected,
22604 operator: operator,
22605 stackStartFunction: stackStartFunction
22606 });
22607 }
22608
22609 // EXTENSION! allows for well behaved errors defined elsewhere.
22610 assert.fail = fail;
22611
22612 // 4. Pure assertion tests whether a value is truthy, as determined
22613 // by !!guard.
22614 // assert.ok(guard, message_opt);
22615 // This statement is equivalent to assert.equal(true, !!guard,
22616 // message_opt);. To test strictly for the value true, use
22617 // assert.strictEqual(true, guard, message_opt);.
22618
22619 function ok(value, message) {
22620 if (!value) fail(value, true, message, '==', assert.ok);
22621 }
22622 assert.ok = ok;
22623
22624 // 5. The equality assertion tests shallow, coercive equality with
22625 // ==.
22626 // assert.equal(actual, expected, message_opt);
22627
22628 assert.equal = function equal(actual, expected, message) {
22629 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
22630 };
22631
22632 // 6. The non-equality assertion tests for whether two objects are not equal
22633 // with != assert.notEqual(actual, expected, message_opt);
22634
22635 assert.notEqual = function notEqual(actual, expected, message) {
22636 if (actual == expected) {
22637 fail(actual, expected, message, '!=', assert.notEqual);
22638 }
22639 };
22640
22641 // 7. The equivalence assertion tests a deep equality relation.
22642 // assert.deepEqual(actual, expected, message_opt);
22643
22644 assert.deepEqual = function deepEqual(actual, expected, message) {
22645 if (!_deepEqual(actual, expected, false)) {
22646 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
22647 }
22648 };
22649
22650 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
22651 if (!_deepEqual(actual, expected, true)) {
22652 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
22653 }
22654 };
22655
22656 function _deepEqual(actual, expected, strict, memos) {
22657 // 7.1. All identical values are equivalent, as determined by ===.
22658 if (actual === expected) {
22659 return true;
22660 } else if (isBuffer(actual) && isBuffer(expected)) {
22661 return compare(actual, expected) === 0;
22662
22663 // 7.2. If the expected value is a Date object, the actual value is
22664 // equivalent if it is also a Date object that refers to the same time.
22665 } else if (util.isDate(actual) && util.isDate(expected)) {
22666 return actual.getTime() === expected.getTime();
22667
22668 // 7.3 If the expected value is a RegExp object, the actual value is
22669 // equivalent if it is also a RegExp object with the same source and
22670 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
22671 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
22672 return actual.source === expected.source &&
22673 actual.global === expected.global &&
22674 actual.multiline === expected.multiline &&
22675 actual.lastIndex === expected.lastIndex &&
22676 actual.ignoreCase === expected.ignoreCase;
22677
22678 // 7.4. Other pairs that do not both pass typeof value == 'object',
22679 // equivalence is determined by ==.
22680 } else if ((actual === null || typeof actual !== 'object') &&
22681 (expected === null || typeof expected !== 'object')) {
22682 return strict ? actual === expected : actual == expected;
22683
22684 // If both values are instances of typed arrays, wrap their underlying
22685 // ArrayBuffers in a Buffer each to increase performance
22686 // This optimization requires the arrays to have the same type as checked by
22687 // Object.prototype.toString (aka pToString). Never perform binary
22688 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
22689 // bit patterns are not identical.
22690 } else if (isView(actual) && isView(expected) &&
22691 pToString(actual) === pToString(expected) &&
22692 !(actual instanceof Float32Array ||
22693 actual instanceof Float64Array)) {
22694 return compare(new Uint8Array(actual.buffer),
22695 new Uint8Array(expected.buffer)) === 0;
22696
22697 // 7.5 For all other Object pairs, including Array objects, equivalence is
22698 // determined by having the same number of owned properties (as verified
22699 // with Object.prototype.hasOwnProperty.call), the same set of keys
22700 // (although not necessarily the same order), equivalent values for every
22701 // corresponding key, and an identical 'prototype' property. Note: this
22702 // accounts for both named and indexed properties on Arrays.
22703 } else if (isBuffer(actual) !== isBuffer(expected)) {
22704 return false;
22705 } else {
22706 memos = memos || {actual: [], expected: []};
22707
22708 var actualIndex = memos.actual.indexOf(actual);
22709 if (actualIndex !== -1) {
22710 if (actualIndex === memos.expected.indexOf(expected)) {
22711 return true;
22712 }
22713 }
22714
22715 memos.actual.push(actual);
22716 memos.expected.push(expected);
22717
22718 return objEquiv(actual, expected, strict, memos);
22719 }
22720 }
22721
22722 function isArguments(object) {
22723 return Object.prototype.toString.call(object) == '[object Arguments]';
22724 }
22725
22726 function objEquiv(a, b, strict, actualVisitedObjects) {
22727 if (a === null || a === undefined || b === null || b === undefined)
22728 return false;
22729 // if one is a primitive, the other must be same
22730 if (util.isPrimitive(a) || util.isPrimitive(b))
22731 return a === b;
22732 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
22733 return false;
22734 var aIsArgs = isArguments(a);
22735 var bIsArgs = isArguments(b);
22736 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
22737 return false;
22738 if (aIsArgs) {
22739 a = pSlice.call(a);
22740 b = pSlice.call(b);
22741 return _deepEqual(a, b, strict);
22742 }
22743 var ka = objectKeys(a);
22744 var kb = objectKeys(b);
22745 var key, i;
22746 // having the same number of owned properties (keys incorporates
22747 // hasOwnProperty)
22748 if (ka.length !== kb.length)
22749 return false;
22750 //the same set of keys (although not necessarily the same order),
22751 ka.sort();
22752 kb.sort();
22753 //~~~cheap key test
22754 for (i = ka.length - 1; i >= 0; i--) {
22755 if (ka[i] !== kb[i])
22756 return false;
22757 }
22758 //equivalent values for every corresponding key, and
22759 //~~~possibly expensive deep test
22760 for (i = ka.length - 1; i >= 0; i--) {
22761 key = ka[i];
22762 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
22763 return false;
22764 }
22765 return true;
22766 }
22767
22768 // 8. The non-equivalence assertion tests for any deep inequality.
22769 // assert.notDeepEqual(actual, expected, message_opt);
22770
22771 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
22772 if (_deepEqual(actual, expected, false)) {
22773 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
22774 }
22775 };
22776
22777 assert.notDeepStrictEqual = notDeepStrictEqual;
22778 function notDeepStrictEqual(actual, expected, message) {
22779 if (_deepEqual(actual, expected, true)) {
22780 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
22781 }
22782 }
22783
22784
22785 // 9. The strict equality assertion tests strict equality, as determined by ===.
22786 // assert.strictEqual(actual, expected, message_opt);
22787
22788 assert.strictEqual = function strictEqual(actual, expected, message) {
22789 if (actual !== expected) {
22790 fail(actual, expected, message, '===', assert.strictEqual);
22791 }
22792 };
22793
22794 // 10. The strict non-equality assertion tests for strict inequality, as
22795 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
22796
22797 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
22798 if (actual === expected) {
22799 fail(actual, expected, message, '!==', assert.notStrictEqual);
22800 }
22801 };
22802
22803 function expectedException(actual, expected) {
22804 if (!actual || !expected) {
22805 return false;
22806 }
22807
22808 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
22809 return expected.test(actual);
22810 }
22811
22812 try {
22813 if (actual instanceof expected) {
22814 return true;
22815 }
22816 } catch (e) {
22817 // Ignore. The instanceof check doesn't work for arrow functions.
22818 }
22819
22820 if (Error.isPrototypeOf(expected)) {
22821 return false;
22822 }
22823
22824 return expected.call({}, actual) === true;
22825 }
22826
22827 function _tryBlock(block) {
22828 var error;
22829 try {
22830 block();
22831 } catch (e) {
22832 error = e;
22833 }
22834 return error;
22835 }
22836
22837 function _throws(shouldThrow, block, expected, message) {
22838 var actual;
22839
22840 if (typeof block !== 'function') {
22841 throw new TypeError('"block" argument must be a function');
22842 }
22843
22844 if (typeof expected === 'string') {
22845 message = expected;
22846 expected = null;
22847 }
22848
22849 actual = _tryBlock(block);
22850
22851 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
22852 (message ? ' ' + message : '.');
22853
22854 if (shouldThrow && !actual) {
22855 fail(actual, expected, 'Missing expected exception' + message);
22856 }
22857
22858 var userProvidedMessage = typeof message === 'string';
22859 var isUnwantedException = !shouldThrow && util.isError(actual);
22860 var isUnexpectedException = !shouldThrow && actual && !expected;
22861
22862 if ((isUnwantedException &&
22863 userProvidedMessage &&
22864 expectedException(actual, expected)) ||
22865 isUnexpectedException) {
22866 fail(actual, expected, 'Got unwanted exception' + message);
22867 }
22868
22869 if ((shouldThrow && actual && expected &&
22870 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
22871 throw actual;
22872 }
22873 }
22874
22875 // 11. Expected to throw an error:
22876 // assert.throws(block, Error_opt, message_opt);
22877
22878 assert.throws = function(block, /*optional*/error, /*optional*/message) {
22879 _throws(true, block, error, message);
22880 };
22881
22882 // EXTENSION! This is annoying to write outside this module.
22883 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
22884 _throws(false, block, error, message);
22885 };
22886
22887 assert.ifError = function(err) { if (err) throw err; };
22888
22889 var objectKeys = Object.keys || function (obj) {
22890 var keys = [];
22891 for (var key in obj) {
22892 if (hasOwn.call(obj, key)) keys.push(key);
22893 }
22894 return keys;
22895 };
22896
22897 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
22898 },{"util/":30}],2:[function(require,module,exports){
22899 'use strict'
22900
22901 exports.byteLength = byteLength
22902 exports.toByteArray = toByteArray
22903 exports.fromByteArray = fromByteArray
22904
22905 var lookup = []
22906 var revLookup = []
22907 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
22908
22909 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
22910 for (var i = 0, len = code.length; i < len; ++i) {
22911 lookup[i] = code[i]
22912 revLookup[code.charCodeAt(i)] = i
22913 }
22914
22915 revLookup['-'.charCodeAt(0)] = 62
22916 revLookup['_'.charCodeAt(0)] = 63
22917
22918 function placeHoldersCount (b64) {
22919 var len = b64.length
22920 if (len % 4 > 0) {
22921 throw new Error('Invalid string. Length must be a multiple of 4')
22922 }
22923
22924 // the number of equal signs (place holders)
22925 // if there are two placeholders, than the two characters before it
22926 // represent one byte
22927 // if there is only one, then the three characters before it represent 2 bytes
22928 // this is just a cheap hack to not do indexOf twice
22929 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
22930 }
22931
22932 function byteLength (b64) {
22933 // base64 is 4/3 + up to two characters of the original data
22934 return b64.length * 3 / 4 - placeHoldersCount(b64)
22935 }
22936
22937 function toByteArray (b64) {
22938 var i, j, l, tmp, placeHolders, arr
22939 var len = b64.length
22940 placeHolders = placeHoldersCount(b64)
22941
22942 arr = new Arr(len * 3 / 4 - placeHolders)
22943
22944 // if there are placeholders, only get up to the last complete 4 chars
22945 l = placeHolders > 0 ? len - 4 : len
22946
22947 var L = 0
22948
22949 for (i = 0, j = 0; i < l; i += 4, j += 3) {
22950 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
22951 arr[L++] = (tmp >> 16) & 0xFF
22952 arr[L++] = (tmp >> 8) & 0xFF
22953 arr[L++] = tmp & 0xFF
22954 }
22955
22956 if (placeHolders === 2) {
22957 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
22958 arr[L++] = tmp & 0xFF
22959 } else if (placeHolders === 1) {
22960 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
22961 arr[L++] = (tmp >> 8) & 0xFF
22962 arr[L++] = tmp & 0xFF
22963 }
22964
22965 return arr
22966 }
22967
22968 function tripletToBase64 (num) {
22969 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
22970 }
22971
22972 function encodeChunk (uint8, start, end) {
22973 var tmp
22974 var output = []
22975 for (var i = start; i < end; i += 3) {
22976 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
22977 output.push(tripletToBase64(tmp))
22978 }
22979 return output.join('')
22980 }
22981
22982 function fromByteArray (uint8) {
22983 var tmp
22984 var len = uint8.length
22985 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
22986 var output = ''
22987 var parts = []
22988 var maxChunkLength = 16383 // must be multiple of 3
22989
22990 // go through the array every three bytes, we'll deal with trailing stuff later
22991 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
22992 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
22993 }
22994
22995 // pad the end with zeros, but make sure to not forget the extra bytes
22996 if (extraBytes === 1) {
22997 tmp = uint8[len - 1]
22998 output += lookup[tmp >> 2]
22999 output += lookup[(tmp << 4) & 0x3F]
23000 output += '=='
23001 } else if (extraBytes === 2) {
23002 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
23003 output += lookup[tmp >> 10]
23004 output += lookup[(tmp >> 4) & 0x3F]
23005 output += lookup[(tmp << 2) & 0x3F]
23006 output += '='
23007 }
23008
23009 parts.push(output)
23010
23011 return parts.join('')
23012 }
23013
23014 },{}],3:[function(require,module,exports){
23015
23016 },{}],4:[function(require,module,exports){
23017 (function (global){
23018 'use strict';
23019
23020 var buffer = require('buffer');
23021 var Buffer = buffer.Buffer;
23022 var SlowBuffer = buffer.SlowBuffer;
23023 var MAX_LEN = buffer.kMaxLength || 2147483647;
23024 exports.alloc = function alloc(size, fill, encoding) {
23025 if (typeof Buffer.alloc === 'function') {
23026 return Buffer.alloc(size, fill, encoding);
23027 }
23028 if (typeof encoding === 'number') {
23029 throw new TypeError('encoding must not be number');
23030 }
23031 if (typeof size !== 'number') {
23032 throw new TypeError('size must be a number');
23033 }
23034 if (size > MAX_LEN) {
23035 throw new RangeError('size is too large');
23036 }
23037 var enc = encoding;
23038 var _fill = fill;
23039 if (_fill === undefined) {
23040 enc = undefined;
23041 _fill = 0;
23042 }
23043 var buf = new Buffer(size);
23044 if (typeof _fill === 'string') {
23045 var fillBuf = new Buffer(_fill, enc);
23046 var flen = fillBuf.length;
23047 var i = -1;
23048 while (++i < size) {
23049 buf[i] = fillBuf[i % flen];
23050 }
23051 } else {
23052 buf.fill(_fill);
23053 }
23054 return buf;
23055 }
23056 exports.allocUnsafe = function allocUnsafe(size) {
23057 if (typeof Buffer.allocUnsafe === 'function') {
23058 return Buffer.allocUnsafe(size);
23059 }
23060 if (typeof size !== 'number') {
23061 throw new TypeError('size must be a number');
23062 }
23063 if (size > MAX_LEN) {
23064 throw new RangeError('size is too large');
23065 }
23066 return new Buffer(size);
23067 }
23068 exports.from = function from(value, encodingOrOffset, length) {
23069 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
23070 return Buffer.from(value, encodingOrOffset, length);
23071 }
23072 if (typeof value === 'number') {
23073 throw new TypeError('"value" argument must not be a number');
23074 }
23075 if (typeof value === 'string') {
23076 return new Buffer(value, encodingOrOffset);
23077 }
23078 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
23079 var offset = encodingOrOffset;
23080 if (arguments.length === 1) {
23081 return new Buffer(value);
23082 }
23083 if (typeof offset === 'undefined') {
23084 offset = 0;
23085 }
23086 var len = length;
23087 if (typeof len === 'undefined') {
23088 len = value.byteLength - offset;
23089 }
23090 if (offset >= value.byteLength) {
23091 throw new RangeError('\'offset\' is out of bounds');
23092 }
23093 if (len > value.byteLength - offset) {
23094 throw new RangeError('\'length\' is out of bounds');
23095 }
23096 return new Buffer(value.slice(offset, offset + len));
23097 }
23098 if (Buffer.isBuffer(value)) {
23099 var out = new Buffer(value.length);
23100 value.copy(out, 0, 0, value.length);
23101 return out;
23102 }
23103 if (value) {
23104 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
23105 return new Buffer(value);
23106 }
23107 if (value.type === 'Buffer' && Array.isArray(value.data)) {
23108 return new Buffer(value.data);
23109 }
23110 }
23111
23112 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
23113 }
23114 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
23115 if (typeof Buffer.allocUnsafeSlow === 'function') {
23116 return Buffer.allocUnsafeSlow(size);
23117 }
23118 if (typeof size !== 'number') {
23119 throw new TypeError('size must be a number');
23120 }
23121 if (size >= MAX_LEN) {
23122 throw new RangeError('size is too large');
23123 }
23124 return new SlowBuffer(size);
23125 }
23126
23127 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
23128 },{"buffer":5}],5:[function(require,module,exports){
23129 /*!
23130 * The buffer module from node.js, for the browser.
23131 *
23132 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
23133 * @license MIT
23134 */
23135 /* eslint-disable no-proto */
23136
23137 'use strict'
23138
23139 var base64 = require('base64-js')
23140 var ieee754 = require('ieee754')
23141
23142 exports.Buffer = Buffer
23143 exports.SlowBuffer = SlowBuffer
23144 exports.INSPECT_MAX_BYTES = 50
23145
23146 var K_MAX_LENGTH = 0x7fffffff
23147 exports.kMaxLength = K_MAX_LENGTH
23148
23149 /**
23150 * If `Buffer.TYPED_ARRAY_SUPPORT`:
23151 * === true Use Uint8Array implementation (fastest)
23152 * === false Print warning and recommend using `buffer` v4.x which has an Object
23153 * implementation (most compatible, even IE6)
23154 *
23155 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
23156 * Opera 11.6+, iOS 4.2+.
23157 *
23158 * We report that the browser does not support typed arrays if the are not subclassable
23159 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
23160 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
23161 * for __proto__ and has a buggy typed array implementation.
23162 */
23163 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
23164
23165 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
23166 typeof console.error === 'function') {
23167 console.error(
23168 'This browser lacks typed array (Uint8Array) support which is required by ' +
23169 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
23170 )
23171 }
23172
23173 function typedArraySupport () {
23174 // Can typed array instances can be augmented?
23175 try {
23176 var arr = new Uint8Array(1)
23177 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
23178 return arr.foo() === 42
23179 } catch (e) {
23180 return false
23181 }
23182 }
23183
23184 function createBuffer (length) {
23185 if (length > K_MAX_LENGTH) {
23186 throw new RangeError('Invalid typed array length')
23187 }
23188 // Return an augmented `Uint8Array` instance
23189 var buf = new Uint8Array(length)
23190 buf.__proto__ = Buffer.prototype
23191 return buf
23192 }
23193
23194 /**
23195 * The Buffer constructor returns instances of `Uint8Array` that have their
23196 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
23197 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
23198 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
23199 * returns a single octet.
23200 *
23201 * The `Uint8Array` prototype remains unmodified.
23202 */
23203
23204 function Buffer (arg, encodingOrOffset, length) {
23205 // Common case.
23206 if (typeof arg === 'number') {
23207 if (typeof encodingOrOffset === 'string') {
23208 throw new Error(
23209 'If encoding is specified then the first argument must be a string'
23210 )
23211 }
23212 return allocUnsafe(arg)
23213 }
23214 return from(arg, encodingOrOffset, length)
23215 }
23216
23217 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
23218 if (typeof Symbol !== 'undefined' && Symbol.species &&
23219 Buffer[Symbol.species] === Buffer) {
23220 Object.defineProperty(Buffer, Symbol.species, {
23221 value: null,
23222 configurable: true,
23223 enumerable: false,
23224 writable: false
23225 })
23226 }
23227
23228 Buffer.poolSize = 8192 // not used by this implementation
23229
23230 function from (value, encodingOrOffset, length) {
23231 if (typeof value === 'number') {
23232 throw new TypeError('"value" argument must not be a number')
23233 }
23234
23235 if (value instanceof ArrayBuffer) {
23236 return fromArrayBuffer(value, encodingOrOffset, length)
23237 }
23238
23239 if (typeof value === 'string') {
23240 return fromString(value, encodingOrOffset)
23241 }
23242
23243 return fromObject(value)
23244 }
23245
23246 /**
23247 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
23248 * if value is a number.
23249 * Buffer.from(str[, encoding])
23250 * Buffer.from(array)
23251 * Buffer.from(buffer)
23252 * Buffer.from(arrayBuffer[, byteOffset[, length]])
23253 **/
23254 Buffer.from = function (value, encodingOrOffset, length) {
23255 return from(value, encodingOrOffset, length)
23256 }
23257
23258 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
23259 // https://github.com/feross/buffer/pull/148
23260 Buffer.prototype.__proto__ = Uint8Array.prototype
23261 Buffer.__proto__ = Uint8Array
23262
23263 function assertSize (size) {
23264 if (typeof size !== 'number') {
23265 throw new TypeError('"size" argument must be a number')
23266 } else if (size < 0) {
23267 throw new RangeError('"size" argument must not be negative')
23268 }
23269 }
23270
23271 function alloc (size, fill, encoding) {
23272 assertSize(size)
23273 if (size <= 0) {
23274 return createBuffer(size)
23275 }
23276 if (fill !== undefined) {
23277 // Only pay attention to encoding if it's a string. This
23278 // prevents accidentally sending in a number that would
23279 // be interpretted as a start offset.
23280 return typeof encoding === 'string'
23281 ? createBuffer(size).fill(fill, encoding)
23282 : createBuffer(size).fill(fill)
23283 }
23284 return createBuffer(size)
23285 }
23286
23287 /**
23288 * Creates a new filled Buffer instance.
23289 * alloc(size[, fill[, encoding]])
23290 **/
23291 Buffer.alloc = function (size, fill, encoding) {
23292 return alloc(size, fill, encoding)
23293 }
23294
23295 function allocUnsafe (size) {
23296 assertSize(size)
23297 return createBuffer(size < 0 ? 0 : checked(size) | 0)
23298 }
23299
23300 /**
23301 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
23302 * */
23303 Buffer.allocUnsafe = function (size) {
23304 return allocUnsafe(size)
23305 }
23306 /**
23307 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
23308 */
23309 Buffer.allocUnsafeSlow = function (size) {
23310 return allocUnsafe(size)
23311 }
23312
23313 function fromString (string, encoding) {
23314 if (typeof encoding !== 'string' || encoding === '') {
23315 encoding = 'utf8'
23316 }
23317
23318 if (!Buffer.isEncoding(encoding)) {
23319 throw new TypeError('"encoding" must be a valid string encoding')
23320 }
23321
23322 var length = byteLength(string, encoding) | 0
23323 var buf = createBuffer(length)
23324
23325 var actual = buf.write(string, encoding)
23326
23327 if (actual !== length) {
23328 // Writing a hex string, for example, that contains invalid characters will
23329 // cause everything after the first invalid character to be ignored. (e.g.
23330 // 'abxxcd' will be treated as 'ab')
23331 buf = buf.slice(0, actual)
23332 }
23333
23334 return buf
23335 }
23336
23337 function fromArrayLike (array) {
23338 var length = array.length < 0 ? 0 : checked(array.length) | 0
23339 var buf = createBuffer(length)
23340 for (var i = 0; i < length; i += 1) {
23341 buf[i] = array[i] & 255
23342 }
23343 return buf
23344 }
23345
23346 function fromArrayBuffer (array, byteOffset, length) {
23347 if (byteOffset < 0 || array.byteLength < byteOffset) {
23348 throw new RangeError('\'offset\' is out of bounds')
23349 }
23350
23351 if (array.byteLength < byteOffset + (length || 0)) {
23352 throw new RangeError('\'length\' is out of bounds')
23353 }
23354
23355 var buf
23356 if (byteOffset === undefined && length === undefined) {
23357 buf = new Uint8Array(array)
23358 } else if (length === undefined) {
23359 buf = new Uint8Array(array, byteOffset)
23360 } else {
23361 buf = new Uint8Array(array, byteOffset, length)
23362 }
23363
23364 // Return an augmented `Uint8Array` instance
23365 buf.__proto__ = Buffer.prototype
23366 return buf
23367 }
23368
23369 function fromObject (obj) {
23370 if (Buffer.isBuffer(obj)) {
23371 var len = checked(obj.length) | 0
23372 var buf = createBuffer(len)
23373
23374 if (buf.length === 0) {
23375 return buf
23376 }
23377
23378 obj.copy(buf, 0, 0, len)
23379 return buf
23380 }
23381
23382 if (obj) {
23383 if (ArrayBuffer.isView(obj) || 'length' in obj) {
23384 if (typeof obj.length !== 'number' || isnan(obj.length)) {
23385 return createBuffer(0)
23386 }
23387 return fromArrayLike(obj)
23388 }
23389
23390 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
23391 return fromArrayLike(obj.data)
23392 }
23393 }
23394
23395 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
23396 }
23397
23398 function checked (length) {
23399 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
23400 // length is NaN (which is otherwise coerced to zero.)
23401 if (length >= K_MAX_LENGTH) {
23402 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
23403 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
23404 }
23405 return length | 0
23406 }
23407
23408 function SlowBuffer (length) {
23409 if (+length != length) { // eslint-disable-line eqeqeq
23410 length = 0
23411 }
23412 return Buffer.alloc(+length)
23413 }
23414
23415 Buffer.isBuffer = function isBuffer (b) {
23416 return b != null && b._isBuffer === true
23417 }
23418
23419 Buffer.compare = function compare (a, b) {
23420 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
23421 throw new TypeError('Arguments must be Buffers')
23422 }
23423
23424 if (a === b) return 0
23425
23426 var x = a.length
23427 var y = b.length
23428
23429 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
23430 if (a[i] !== b[i]) {
23431 x = a[i]
23432 y = b[i]
23433 break
23434 }
23435 }
23436
23437 if (x < y) return -1
23438 if (y < x) return 1
23439 return 0
23440 }
23441
23442 Buffer.isEncoding = function isEncoding (encoding) {
23443 switch (String(encoding).toLowerCase()) {
23444 case 'hex':
23445 case 'utf8':
23446 case 'utf-8':
23447 case 'ascii':
23448 case 'latin1':
23449 case 'binary':
23450 case 'base64':
23451 case 'ucs2':
23452 case 'ucs-2':
23453 case 'utf16le':
23454 case 'utf-16le':
23455 return true
23456 default:
23457 return false
23458 }
23459 }
23460
23461 Buffer.concat = function concat (list, length) {
23462 if (!Array.isArray(list)) {
23463 throw new TypeError('"list" argument must be an Array of Buffers')
23464 }
23465
23466 if (list.length === 0) {
23467 return Buffer.alloc(0)
23468 }
23469
23470 var i
23471 if (length === undefined) {
23472 length = 0
23473 for (i = 0; i < list.length; ++i) {
23474 length += list[i].length
23475 }
23476 }
23477
23478 var buffer = Buffer.allocUnsafe(length)
23479 var pos = 0
23480 for (i = 0; i < list.length; ++i) {
23481 var buf = list[i]
23482 if (!Buffer.isBuffer(buf)) {
23483 throw new TypeError('"list" argument must be an Array of Buffers')
23484 }
23485 buf.copy(buffer, pos)
23486 pos += buf.length
23487 }
23488 return buffer
23489 }
23490
23491 function byteLength (string, encoding) {
23492 if (Buffer.isBuffer(string)) {
23493 return string.length
23494 }
23495 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
23496 return string.byteLength
23497 }
23498 if (typeof string !== 'string') {
23499 string = '' + string
23500 }
23501
23502 var len = string.length
23503 if (len === 0) return 0
23504
23505 // Use a for loop to avoid recursion
23506 var loweredCase = false
23507 for (;;) {
23508 switch (encoding) {
23509 case 'ascii':
23510 case 'latin1':
23511 case 'binary':
23512 return len
23513 case 'utf8':
23514 case 'utf-8':
23515 case undefined:
23516 return utf8ToBytes(string).length
23517 case 'ucs2':
23518 case 'ucs-2':
23519 case 'utf16le':
23520 case 'utf-16le':
23521 return len * 2
23522 case 'hex':
23523 return len >>> 1
23524 case 'base64':
23525 return base64ToBytes(string).length
23526 default:
23527 if (loweredCase) return utf8ToBytes(string).length // assume utf8
23528 encoding = ('' + encoding).toLowerCase()
23529 loweredCase = true
23530 }
23531 }
23532 }
23533 Buffer.byteLength = byteLength
23534
23535 function slowToString (encoding, start, end) {
23536 var loweredCase = false
23537
23538 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
23539 // property of a typed array.
23540
23541 // This behaves neither like String nor Uint8Array in that we set start/end
23542 // to their upper/lower bounds if the value passed is out of range.
23543 // undefined is handled specially as per ECMA-262 6th Edition,
23544 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
23545 if (start === undefined || start < 0) {
23546 start = 0
23547 }
23548 // Return early if start > this.length. Done here to prevent potential uint32
23549 // coercion fail below.
23550 if (start > this.length) {
23551 return ''
23552 }
23553
23554 if (end === undefined || end > this.length) {
23555 end = this.length
23556 }
23557
23558 if (end <= 0) {
23559 return ''
23560 }
23561
23562 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
23563 end >>>= 0
23564 start >>>= 0
23565
23566 if (end <= start) {
23567 return ''
23568 }
23569
23570 if (!encoding) encoding = 'utf8'
23571
23572 while (true) {
23573 switch (encoding) {
23574 case 'hex':
23575 return hexSlice(this, start, end)
23576
23577 case 'utf8':
23578 case 'utf-8':
23579 return utf8Slice(this, start, end)
23580
23581 case 'ascii':
23582 return asciiSlice(this, start, end)
23583
23584 case 'latin1':
23585 case 'binary':
23586 return latin1Slice(this, start, end)
23587
23588 case 'base64':
23589 return base64Slice(this, start, end)
23590
23591 case 'ucs2':
23592 case 'ucs-2':
23593 case 'utf16le':
23594 case 'utf-16le':
23595 return utf16leSlice(this, start, end)
23596
23597 default:
23598 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
23599 encoding = (encoding + '').toLowerCase()
23600 loweredCase = true
23601 }
23602 }
23603 }
23604
23605 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
23606 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
23607 // reliably in a browserify context because there could be multiple different
23608 // copies of the 'buffer' package in use. This method works even for Buffer
23609 // instances that were created from another copy of the `buffer` package.
23610 // See: https://github.com/feross/buffer/issues/154
23611 Buffer.prototype._isBuffer = true
23612
23613 function swap (b, n, m) {
23614 var i = b[n]
23615 b[n] = b[m]
23616 b[m] = i
23617 }
23618
23619 Buffer.prototype.swap16 = function swap16 () {
23620 var len = this.length
23621 if (len % 2 !== 0) {
23622 throw new RangeError('Buffer size must be a multiple of 16-bits')
23623 }
23624 for (var i = 0; i < len; i += 2) {
23625 swap(this, i, i + 1)
23626 }
23627 return this
23628 }
23629
23630 Buffer.prototype.swap32 = function swap32 () {
23631 var len = this.length
23632 if (len % 4 !== 0) {
23633 throw new RangeError('Buffer size must be a multiple of 32-bits')
23634 }
23635 for (var i = 0; i < len; i += 4) {
23636 swap(this, i, i + 3)
23637 swap(this, i + 1, i + 2)
23638 }
23639 return this
23640 }
23641
23642 Buffer.prototype.swap64 = function swap64 () {
23643 var len = this.length
23644 if (len % 8 !== 0) {
23645 throw new RangeError('Buffer size must be a multiple of 64-bits')
23646 }
23647 for (var i = 0; i < len; i += 8) {
23648 swap(this, i, i + 7)
23649 swap(this, i + 1, i + 6)
23650 swap(this, i + 2, i + 5)
23651 swap(this, i + 3, i + 4)
23652 }
23653 return this
23654 }
23655
23656 Buffer.prototype.toString = function toString () {
23657 var length = this.length
23658 if (length === 0) return ''
23659 if (arguments.length === 0) return utf8Slice(this, 0, length)
23660 return slowToString.apply(this, arguments)
23661 }
23662
23663 Buffer.prototype.equals = function equals (b) {
23664 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
23665 if (this === b) return true
23666 return Buffer.compare(this, b) === 0
23667 }
23668
23669 Buffer.prototype.inspect = function inspect () {
23670 var str = ''
23671 var max = exports.INSPECT_MAX_BYTES
23672 if (this.length > 0) {
23673 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
23674 if (this.length > max) str += ' ... '
23675 }
23676 return '<Buffer ' + str + '>'
23677 }
23678
23679 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
23680 if (!Buffer.isBuffer(target)) {
23681 throw new TypeError('Argument must be a Buffer')
23682 }
23683
23684 if (start === undefined) {
23685 start = 0
23686 }
23687 if (end === undefined) {
23688 end = target ? target.length : 0
23689 }
23690 if (thisStart === undefined) {
23691 thisStart = 0
23692 }
23693 if (thisEnd === undefined) {
23694 thisEnd = this.length
23695 }
23696
23697 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
23698 throw new RangeError('out of range index')
23699 }
23700
23701 if (thisStart >= thisEnd && start >= end) {
23702 return 0
23703 }
23704 if (thisStart >= thisEnd) {
23705 return -1
23706 }
23707 if (start >= end) {
23708 return 1
23709 }
23710
23711 start >>>= 0
23712 end >>>= 0
23713 thisStart >>>= 0
23714 thisEnd >>>= 0
23715
23716 if (this === target) return 0
23717
23718 var x = thisEnd - thisStart
23719 var y = end - start
23720 var len = Math.min(x, y)
23721
23722 var thisCopy = this.slice(thisStart, thisEnd)
23723 var targetCopy = target.slice(start, end)
23724
23725 for (var i = 0; i < len; ++i) {
23726 if (thisCopy[i] !== targetCopy[i]) {
23727 x = thisCopy[i]
23728 y = targetCopy[i]
23729 break
23730 }
23731 }
23732
23733 if (x < y) return -1
23734 if (y < x) return 1
23735 return 0
23736 }
23737
23738 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
23739 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
23740 //
23741 // Arguments:
23742 // - buffer - a Buffer to search
23743 // - val - a string, Buffer, or number
23744 // - byteOffset - an index into `buffer`; will be clamped to an int32
23745 // - encoding - an optional encoding, relevant is val is a string
23746 // - dir - true for indexOf, false for lastIndexOf
23747 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
23748 // Empty buffer means no match
23749 if (buffer.length === 0) return -1
23750
23751 // Normalize byteOffset
23752 if (typeof byteOffset === 'string') {
23753 encoding = byteOffset
23754 byteOffset = 0
23755 } else if (byteOffset > 0x7fffffff) {
23756 byteOffset = 0x7fffffff
23757 } else if (byteOffset < -0x80000000) {
23758 byteOffset = -0x80000000
23759 }
23760 byteOffset = +byteOffset // Coerce to Number.
23761 if (isNaN(byteOffset)) {
23762 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
23763 byteOffset = dir ? 0 : (buffer.length - 1)
23764 }
23765
23766 // Normalize byteOffset: negative offsets start from the end of the buffer
23767 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
23768 if (byteOffset >= buffer.length) {
23769 if (dir) return -1
23770 else byteOffset = buffer.length - 1
23771 } else if (byteOffset < 0) {
23772 if (dir) byteOffset = 0
23773 else return -1
23774 }
23775
23776 // Normalize val
23777 if (typeof val === 'string') {
23778 val = Buffer.from(val, encoding)
23779 }
23780
23781 // Finally, search either indexOf (if dir is true) or lastIndexOf
23782 if (Buffer.isBuffer(val)) {
23783 // Special case: looking for empty string/buffer always fails
23784 if (val.length === 0) {
23785 return -1
23786 }
23787 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
23788 } else if (typeof val === 'number') {
23789 val = val & 0xFF // Search for a byte value [0-255]
23790 if (typeof Uint8Array.prototype.indexOf === 'function') {
23791 if (dir) {
23792 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
23793 } else {
23794 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
23795 }
23796 }
23797 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
23798 }
23799
23800 throw new TypeError('val must be string, number or Buffer')
23801 }
23802
23803 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
23804 var indexSize = 1
23805 var arrLength = arr.length
23806 var valLength = val.length
23807
23808 if (encoding !== undefined) {
23809 encoding = String(encoding).toLowerCase()
23810 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
23811 encoding === 'utf16le' || encoding === 'utf-16le') {
23812 if (arr.length < 2 || val.length < 2) {
23813 return -1
23814 }
23815 indexSize = 2
23816 arrLength /= 2
23817 valLength /= 2
23818 byteOffset /= 2
23819 }
23820 }
23821
23822 function read (buf, i) {
23823 if (indexSize === 1) {
23824 return buf[i]
23825 } else {
23826 return buf.readUInt16BE(i * indexSize)
23827 }
23828 }
23829
23830 var i
23831 if (dir) {
23832 var foundIndex = -1
23833 for (i = byteOffset; i < arrLength; i++) {
23834 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
23835 if (foundIndex === -1) foundIndex = i
23836 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
23837 } else {
23838 if (foundIndex !== -1) i -= i - foundIndex
23839 foundIndex = -1
23840 }
23841 }
23842 } else {
23843 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
23844 for (i = byteOffset; i >= 0; i--) {
23845 var found = true
23846 for (var j = 0; j < valLength; j++) {
23847 if (read(arr, i + j) !== read(val, j)) {
23848 found = false
23849 break
23850 }
23851 }
23852 if (found) return i
23853 }
23854 }
23855
23856 return -1
23857 }
23858
23859 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
23860 return this.indexOf(val, byteOffset, encoding) !== -1
23861 }
23862
23863 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
23864 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
23865 }
23866
23867 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
23868 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
23869 }
23870
23871 function hexWrite (buf, string, offset, length) {
23872 offset = Number(offset) || 0
23873 var remaining = buf.length - offset
23874 if (!length) {
23875 length = remaining
23876 } else {
23877 length = Number(length)
23878 if (length > remaining) {
23879 length = remaining
23880 }
23881 }
23882
23883 // must be an even number of digits
23884 var strLen = string.length
23885 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
23886
23887 if (length > strLen / 2) {
23888 length = strLen / 2
23889 }
23890 for (var i = 0; i < length; ++i) {
23891 var parsed = parseInt(string.substr(i * 2, 2), 16)
23892 if (isNaN(parsed)) return i
23893 buf[offset + i] = parsed
23894 }
23895 return i
23896 }
23897
23898 function utf8Write (buf, string, offset, length) {
23899 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
23900 }
23901
23902 function asciiWrite (buf, string, offset, length) {
23903 return blitBuffer(asciiToBytes(string), buf, offset, length)
23904 }
23905
23906 function latin1Write (buf, string, offset, length) {
23907 return asciiWrite(buf, string, offset, length)
23908 }
23909
23910 function base64Write (buf, string, offset, length) {
23911 return blitBuffer(base64ToBytes(string), buf, offset, length)
23912 }
23913
23914 function ucs2Write (buf, string, offset, length) {
23915 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
23916 }
23917
23918 Buffer.prototype.write = function write (string, offset, length, encoding) {
23919 // Buffer#write(string)
23920 if (offset === undefined) {
23921 encoding = 'utf8'
23922 length = this.length
23923 offset = 0
23924 // Buffer#write(string, encoding)
23925 } else if (length === undefined && typeof offset === 'string') {
23926 encoding = offset
23927 length = this.length
23928 offset = 0
23929 // Buffer#write(string, offset[, length][, encoding])
23930 } else if (isFinite(offset)) {
23931 offset = offset >>> 0
23932 if (isFinite(length)) {
23933 length = length >>> 0
23934 if (encoding === undefined) encoding = 'utf8'
23935 } else {
23936 encoding = length
23937 length = undefined
23938 }
23939 } else {
23940 throw new Error(
23941 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
23942 )
23943 }
23944
23945 var remaining = this.length - offset
23946 if (length === undefined || length > remaining) length = remaining
23947
23948 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
23949 throw new RangeError('Attempt to write outside buffer bounds')
23950 }
23951
23952 if (!encoding) encoding = 'utf8'
23953
23954 var loweredCase = false
23955 for (;;) {
23956 switch (encoding) {
23957 case 'hex':
23958 return hexWrite(this, string, offset, length)
23959
23960 case 'utf8':
23961 case 'utf-8':
23962 return utf8Write(this, string, offset, length)
23963
23964 case 'ascii':
23965 return asciiWrite(this, string, offset, length)
23966
23967 case 'latin1':
23968 case 'binary':
23969 return latin1Write(this, string, offset, length)
23970
23971 case 'base64':
23972 // Warning: maxLength not taken into account in base64Write
23973 return base64Write(this, string, offset, length)
23974
23975 case 'ucs2':
23976 case 'ucs-2':
23977 case 'utf16le':
23978 case 'utf-16le':
23979 return ucs2Write(this, string, offset, length)
23980
23981 default:
23982 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
23983 encoding = ('' + encoding).toLowerCase()
23984 loweredCase = true
23985 }
23986 }
23987 }
23988
23989 Buffer.prototype.toJSON = function toJSON () {
23990 return {
23991 type: 'Buffer',
23992 data: Array.prototype.slice.call(this._arr || this, 0)
23993 }
23994 }
23995
23996 function base64Slice (buf, start, end) {
23997 if (start === 0 && end === buf.length) {
23998 return base64.fromByteArray(buf)
23999 } else {
24000 return base64.fromByteArray(buf.slice(start, end))
24001 }
24002 }
24003
24004 function utf8Slice (buf, start, end) {
24005 end = Math.min(buf.length, end)
24006 var res = []
24007
24008 var i = start
24009 while (i < end) {
24010 var firstByte = buf[i]
24011 var codePoint = null
24012 var bytesPerSequence = (firstByte > 0xEF) ? 4
24013 : (firstByte > 0xDF) ? 3
24014 : (firstByte > 0xBF) ? 2
24015 : 1
24016
24017 if (i + bytesPerSequence <= end) {
24018 var secondByte, thirdByte, fourthByte, tempCodePoint
24019
24020 switch (bytesPerSequence) {
24021 case 1:
24022 if (firstByte < 0x80) {
24023 codePoint = firstByte
24024 }
24025 break
24026 case 2:
24027 secondByte = buf[i + 1]
24028 if ((secondByte & 0xC0) === 0x80) {
24029 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
24030 if (tempCodePoint > 0x7F) {
24031 codePoint = tempCodePoint
24032 }
24033 }
24034 break
24035 case 3:
24036 secondByte = buf[i + 1]
24037 thirdByte = buf[i + 2]
24038 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
24039 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
24040 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
24041 codePoint = tempCodePoint
24042 }
24043 }
24044 break
24045 case 4:
24046 secondByte = buf[i + 1]
24047 thirdByte = buf[i + 2]
24048 fourthByte = buf[i + 3]
24049 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
24050 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
24051 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
24052 codePoint = tempCodePoint
24053 }
24054 }
24055 }
24056 }
24057
24058 if (codePoint === null) {
24059 // we did not generate a valid codePoint so insert a
24060 // replacement char (U+FFFD) and advance only 1 byte
24061 codePoint = 0xFFFD
24062 bytesPerSequence = 1
24063 } else if (codePoint > 0xFFFF) {
24064 // encode to utf16 (surrogate pair dance)
24065 codePoint -= 0x10000
24066 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
24067 codePoint = 0xDC00 | codePoint & 0x3FF
24068 }
24069
24070 res.push(codePoint)
24071 i += bytesPerSequence
24072 }
24073
24074 return decodeCodePointsArray(res)
24075 }
24076
24077 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
24078 // the lowest limit is Chrome, with 0x10000 args.
24079 // We go 1 magnitude less, for safety
24080 var MAX_ARGUMENTS_LENGTH = 0x1000
24081
24082 function decodeCodePointsArray (codePoints) {
24083 var len = codePoints.length
24084 if (len <= MAX_ARGUMENTS_LENGTH) {
24085 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
24086 }
24087
24088 // Decode in chunks to avoid "call stack size exceeded".
24089 var res = ''
24090 var i = 0
24091 while (i < len) {
24092 res += String.fromCharCode.apply(
24093 String,
24094 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
24095 )
24096 }
24097 return res
24098 }
24099
24100 function asciiSlice (buf, start, end) {
24101 var ret = ''
24102 end = Math.min(buf.length, end)
24103
24104 for (var i = start; i < end; ++i) {
24105 ret += String.fromCharCode(buf[i] & 0x7F)
24106 }
24107 return ret
24108 }
24109
24110 function latin1Slice (buf, start, end) {
24111 var ret = ''
24112 end = Math.min(buf.length, end)
24113
24114 for (var i = start; i < end; ++i) {
24115 ret += String.fromCharCode(buf[i])
24116 }
24117 return ret
24118 }
24119
24120 function hexSlice (buf, start, end) {
24121 var len = buf.length
24122
24123 if (!start || start < 0) start = 0
24124 if (!end || end < 0 || end > len) end = len
24125
24126 var out = ''
24127 for (var i = start; i < end; ++i) {
24128 out += toHex(buf[i])
24129 }
24130 return out
24131 }
24132
24133 function utf16leSlice (buf, start, end) {
24134 var bytes = buf.slice(start, end)
24135 var res = ''
24136 for (var i = 0; i < bytes.length; i += 2) {
24137 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
24138 }
24139 return res
24140 }
24141
24142 Buffer.prototype.slice = function slice (start, end) {
24143 var len = this.length
24144 start = ~~start
24145 end = end === undefined ? len : ~~end
24146
24147 if (start < 0) {
24148 start += len
24149 if (start < 0) start = 0
24150 } else if (start > len) {
24151 start = len
24152 }
24153
24154 if (end < 0) {
24155 end += len
24156 if (end < 0) end = 0
24157 } else if (end > len) {
24158 end = len
24159 }
24160
24161 if (end < start) end = start
24162
24163 var newBuf = this.subarray(start, end)
24164 // Return an augmented `Uint8Array` instance
24165 newBuf.__proto__ = Buffer.prototype
24166 return newBuf
24167 }
24168
24169 /*
24170 * Need to make sure that buffer isn't trying to write out of bounds.
24171 */
24172 function checkOffset (offset, ext, length) {
24173 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
24174 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
24175 }
24176
24177 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
24178 offset = offset >>> 0
24179 byteLength = byteLength >>> 0
24180 if (!noAssert) checkOffset(offset, byteLength, this.length)
24181
24182 var val = this[offset]
24183 var mul = 1
24184 var i = 0
24185 while (++i < byteLength && (mul *= 0x100)) {
24186 val += this[offset + i] * mul
24187 }
24188
24189 return val
24190 }
24191
24192 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
24193 offset = offset >>> 0
24194 byteLength = byteLength >>> 0
24195 if (!noAssert) {
24196 checkOffset(offset, byteLength, this.length)
24197 }
24198
24199 var val = this[offset + --byteLength]
24200 var mul = 1
24201 while (byteLength > 0 && (mul *= 0x100)) {
24202 val += this[offset + --byteLength] * mul
24203 }
24204
24205 return val
24206 }
24207
24208 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
24209 offset = offset >>> 0
24210 if (!noAssert) checkOffset(offset, 1, this.length)
24211 return this[offset]
24212 }
24213
24214 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
24215 offset = offset >>> 0
24216 if (!noAssert) checkOffset(offset, 2, this.length)
24217 return this[offset] | (this[offset + 1] << 8)
24218 }
24219
24220 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
24221 offset = offset >>> 0
24222 if (!noAssert) checkOffset(offset, 2, this.length)
24223 return (this[offset] << 8) | this[offset + 1]
24224 }
24225
24226 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
24227 offset = offset >>> 0
24228 if (!noAssert) checkOffset(offset, 4, this.length)
24229
24230 return ((this[offset]) |
24231 (this[offset + 1] << 8) |
24232 (this[offset + 2] << 16)) +
24233 (this[offset + 3] * 0x1000000)
24234 }
24235
24236 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
24237 offset = offset >>> 0
24238 if (!noAssert) checkOffset(offset, 4, this.length)
24239
24240 return (this[offset] * 0x1000000) +
24241 ((this[offset + 1] << 16) |
24242 (this[offset + 2] << 8) |
24243 this[offset + 3])
24244 }
24245
24246 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
24247 offset = offset >>> 0
24248 byteLength = byteLength >>> 0
24249 if (!noAssert) checkOffset(offset, byteLength, this.length)
24250
24251 var val = this[offset]
24252 var mul = 1
24253 var i = 0
24254 while (++i < byteLength && (mul *= 0x100)) {
24255 val += this[offset + i] * mul
24256 }
24257 mul *= 0x80
24258
24259 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
24260
24261 return val
24262 }
24263
24264 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
24265 offset = offset >>> 0
24266 byteLength = byteLength >>> 0
24267 if (!noAssert) checkOffset(offset, byteLength, this.length)
24268
24269 var i = byteLength
24270 var mul = 1
24271 var val = this[offset + --i]
24272 while (i > 0 && (mul *= 0x100)) {
24273 val += this[offset + --i] * mul
24274 }
24275 mul *= 0x80
24276
24277 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
24278
24279 return val
24280 }
24281
24282 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
24283 offset = offset >>> 0
24284 if (!noAssert) checkOffset(offset, 1, this.length)
24285 if (!(this[offset] & 0x80)) return (this[offset])
24286 return ((0xff - this[offset] + 1) * -1)
24287 }
24288
24289 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
24290 offset = offset >>> 0
24291 if (!noAssert) checkOffset(offset, 2, this.length)
24292 var val = this[offset] | (this[offset + 1] << 8)
24293 return (val & 0x8000) ? val | 0xFFFF0000 : val
24294 }
24295
24296 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
24297 offset = offset >>> 0
24298 if (!noAssert) checkOffset(offset, 2, this.length)
24299 var val = this[offset + 1] | (this[offset] << 8)
24300 return (val & 0x8000) ? val | 0xFFFF0000 : val
24301 }
24302
24303 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
24304 offset = offset >>> 0
24305 if (!noAssert) checkOffset(offset, 4, this.length)
24306
24307 return (this[offset]) |
24308 (this[offset + 1] << 8) |
24309 (this[offset + 2] << 16) |
24310 (this[offset + 3] << 24)
24311 }
24312
24313 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
24314 offset = offset >>> 0
24315 if (!noAssert) checkOffset(offset, 4, this.length)
24316
24317 return (this[offset] << 24) |
24318 (this[offset + 1] << 16) |
24319 (this[offset + 2] << 8) |
24320 (this[offset + 3])
24321 }
24322
24323 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
24324 offset = offset >>> 0
24325 if (!noAssert) checkOffset(offset, 4, this.length)
24326 return ieee754.read(this, offset, true, 23, 4)
24327 }
24328
24329 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
24330 offset = offset >>> 0
24331 if (!noAssert) checkOffset(offset, 4, this.length)
24332 return ieee754.read(this, offset, false, 23, 4)
24333 }
24334
24335 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
24336 offset = offset >>> 0
24337 if (!noAssert) checkOffset(offset, 8, this.length)
24338 return ieee754.read(this, offset, true, 52, 8)
24339 }
24340
24341 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
24342 offset = offset >>> 0
24343 if (!noAssert) checkOffset(offset, 8, this.length)
24344 return ieee754.read(this, offset, false, 52, 8)
24345 }
24346
24347 function checkInt (buf, value, offset, ext, max, min) {
24348 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
24349 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
24350 if (offset + ext > buf.length) throw new RangeError('Index out of range')
24351 }
24352
24353 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
24354 value = +value
24355 offset = offset >>> 0
24356 byteLength = byteLength >>> 0
24357 if (!noAssert) {
24358 var maxBytes = Math.pow(2, 8 * byteLength) - 1
24359 checkInt(this, value, offset, byteLength, maxBytes, 0)
24360 }
24361
24362 var mul = 1
24363 var i = 0
24364 this[offset] = value & 0xFF
24365 while (++i < byteLength && (mul *= 0x100)) {
24366 this[offset + i] = (value / mul) & 0xFF
24367 }
24368
24369 return offset + byteLength
24370 }
24371
24372 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
24373 value = +value
24374 offset = offset >>> 0
24375 byteLength = byteLength >>> 0
24376 if (!noAssert) {
24377 var maxBytes = Math.pow(2, 8 * byteLength) - 1
24378 checkInt(this, value, offset, byteLength, maxBytes, 0)
24379 }
24380
24381 var i = byteLength - 1
24382 var mul = 1
24383 this[offset + i] = value & 0xFF
24384 while (--i >= 0 && (mul *= 0x100)) {
24385 this[offset + i] = (value / mul) & 0xFF
24386 }
24387
24388 return offset + byteLength
24389 }
24390
24391 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
24392 value = +value
24393 offset = offset >>> 0
24394 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
24395 this[offset] = (value & 0xff)
24396 return offset + 1
24397 }
24398
24399 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
24400 value = +value
24401 offset = offset >>> 0
24402 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
24403 this[offset] = (value & 0xff)
24404 this[offset + 1] = (value >>> 8)
24405 return offset + 2
24406 }
24407
24408 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
24409 value = +value
24410 offset = offset >>> 0
24411 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
24412 this[offset] = (value >>> 8)
24413 this[offset + 1] = (value & 0xff)
24414 return offset + 2
24415 }
24416
24417 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
24418 value = +value
24419 offset = offset >>> 0
24420 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
24421 this[offset + 3] = (value >>> 24)
24422 this[offset + 2] = (value >>> 16)
24423 this[offset + 1] = (value >>> 8)
24424 this[offset] = (value & 0xff)
24425 return offset + 4
24426 }
24427
24428 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
24429 value = +value
24430 offset = offset >>> 0
24431 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
24432 this[offset] = (value >>> 24)
24433 this[offset + 1] = (value >>> 16)
24434 this[offset + 2] = (value >>> 8)
24435 this[offset + 3] = (value & 0xff)
24436 return offset + 4
24437 }
24438
24439 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
24440 value = +value
24441 offset = offset >>> 0
24442 if (!noAssert) {
24443 var limit = Math.pow(2, (8 * byteLength) - 1)
24444
24445 checkInt(this, value, offset, byteLength, limit - 1, -limit)
24446 }
24447
24448 var i = 0
24449 var mul = 1
24450 var sub = 0
24451 this[offset] = value & 0xFF
24452 while (++i < byteLength && (mul *= 0x100)) {
24453 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
24454 sub = 1
24455 }
24456 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
24457 }
24458
24459 return offset + byteLength
24460 }
24461
24462 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
24463 value = +value
24464 offset = offset >>> 0
24465 if (!noAssert) {
24466 var limit = Math.pow(2, (8 * byteLength) - 1)
24467
24468 checkInt(this, value, offset, byteLength, limit - 1, -limit)
24469 }
24470
24471 var i = byteLength - 1
24472 var mul = 1
24473 var sub = 0
24474 this[offset + i] = value & 0xFF
24475 while (--i >= 0 && (mul *= 0x100)) {
24476 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
24477 sub = 1
24478 }
24479 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
24480 }
24481
24482 return offset + byteLength
24483 }
24484
24485 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
24486 value = +value
24487 offset = offset >>> 0
24488 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
24489 if (value < 0) value = 0xff + value + 1
24490 this[offset] = (value & 0xff)
24491 return offset + 1
24492 }
24493
24494 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
24495 value = +value
24496 offset = offset >>> 0
24497 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
24498 this[offset] = (value & 0xff)
24499 this[offset + 1] = (value >>> 8)
24500 return offset + 2
24501 }
24502
24503 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
24504 value = +value
24505 offset = offset >>> 0
24506 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
24507 this[offset] = (value >>> 8)
24508 this[offset + 1] = (value & 0xff)
24509 return offset + 2
24510 }
24511
24512 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
24513 value = +value
24514 offset = offset >>> 0
24515 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
24516 this[offset] = (value & 0xff)
24517 this[offset + 1] = (value >>> 8)
24518 this[offset + 2] = (value >>> 16)
24519 this[offset + 3] = (value >>> 24)
24520 return offset + 4
24521 }
24522
24523 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
24524 value = +value
24525 offset = offset >>> 0
24526 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
24527 if (value < 0) value = 0xffffffff + value + 1
24528 this[offset] = (value >>> 24)
24529 this[offset + 1] = (value >>> 16)
24530 this[offset + 2] = (value >>> 8)
24531 this[offset + 3] = (value & 0xff)
24532 return offset + 4
24533 }
24534
24535 function checkIEEE754 (buf, value, offset, ext, max, min) {
24536 if (offset + ext > buf.length) throw new RangeError('Index out of range')
24537 if (offset < 0) throw new RangeError('Index out of range')
24538 }
24539
24540 function writeFloat (buf, value, offset, littleEndian, noAssert) {
24541 value = +value
24542 offset = offset >>> 0
24543 if (!noAssert) {
24544 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
24545 }
24546 ieee754.write(buf, value, offset, littleEndian, 23, 4)
24547 return offset + 4
24548 }
24549
24550 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
24551 return writeFloat(this, value, offset, true, noAssert)
24552 }
24553
24554 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
24555 return writeFloat(this, value, offset, false, noAssert)
24556 }
24557
24558 function writeDouble (buf, value, offset, littleEndian, noAssert) {
24559 value = +value
24560 offset = offset >>> 0
24561 if (!noAssert) {
24562 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
24563 }
24564 ieee754.write(buf, value, offset, littleEndian, 52, 8)
24565 return offset + 8
24566 }
24567
24568 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
24569 return writeDouble(this, value, offset, true, noAssert)
24570 }
24571
24572 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
24573 return writeDouble(this, value, offset, false, noAssert)
24574 }
24575
24576 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
24577 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
24578 if (!start) start = 0
24579 if (!end && end !== 0) end = this.length
24580 if (targetStart >= target.length) targetStart = target.length
24581 if (!targetStart) targetStart = 0
24582 if (end > 0 && end < start) end = start
24583
24584 // Copy 0 bytes; we're done
24585 if (end === start) return 0
24586 if (target.length === 0 || this.length === 0) return 0
24587
24588 // Fatal error conditions
24589 if (targetStart < 0) {
24590 throw new RangeError('targetStart out of bounds')
24591 }
24592 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
24593 if (end < 0) throw new RangeError('sourceEnd out of bounds')
24594
24595 // Are we oob?
24596 if (end > this.length) end = this.length
24597 if (target.length - targetStart < end - start) {
24598 end = target.length - targetStart + start
24599 }
24600
24601 var len = end - start
24602 var i
24603
24604 if (this === target && start < targetStart && targetStart < end) {
24605 // descending copy from end
24606 for (i = len - 1; i >= 0; --i) {
24607 target[i + targetStart] = this[i + start]
24608 }
24609 } else if (len < 1000) {
24610 // ascending copy from start
24611 for (i = 0; i < len; ++i) {
24612 target[i + targetStart] = this[i + start]
24613 }
24614 } else {
24615 Uint8Array.prototype.set.call(
24616 target,
24617 this.subarray(start, start + len),
24618 targetStart
24619 )
24620 }
24621
24622 return len
24623 }
24624
24625 // Usage:
24626 // buffer.fill(number[, offset[, end]])
24627 // buffer.fill(buffer[, offset[, end]])
24628 // buffer.fill(string[, offset[, end]][, encoding])
24629 Buffer.prototype.fill = function fill (val, start, end, encoding) {
24630 // Handle string cases:
24631 if (typeof val === 'string') {
24632 if (typeof start === 'string') {
24633 encoding = start
24634 start = 0
24635 end = this.length
24636 } else if (typeof end === 'string') {
24637 encoding = end
24638 end = this.length
24639 }
24640 if (val.length === 1) {
24641 var code = val.charCodeAt(0)
24642 if (code < 256) {
24643 val = code
24644 }
24645 }
24646 if (encoding !== undefined && typeof encoding !== 'string') {
24647 throw new TypeError('encoding must be a string')
24648 }
24649 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
24650 throw new TypeError('Unknown encoding: ' + encoding)
24651 }
24652 } else if (typeof val === 'number') {
24653 val = val & 255
24654 }
24655
24656 // Invalid ranges are not set to a default, so can range check early.
24657 if (start < 0 || this.length < start || this.length < end) {
24658 throw new RangeError('Out of range index')
24659 }
24660
24661 if (end <= start) {
24662 return this
24663 }
24664
24665 start = start >>> 0
24666 end = end === undefined ? this.length : end >>> 0
24667
24668 if (!val) val = 0
24669
24670 var i
24671 if (typeof val === 'number') {
24672 for (i = start; i < end; ++i) {
24673 this[i] = val
24674 }
24675 } else {
24676 var bytes = Buffer.isBuffer(val)
24677 ? val
24678 : new Buffer(val, encoding)
24679 var len = bytes.length
24680 for (i = 0; i < end - start; ++i) {
24681 this[i + start] = bytes[i % len]
24682 }
24683 }
24684
24685 return this
24686 }
24687
24688 // HELPER FUNCTIONS
24689 // ================
24690
24691 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
24692
24693 function base64clean (str) {
24694 // Node strips out invalid characters like \n and \t from the string, base64-js does not
24695 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
24696 // Node converts strings with length < 2 to ''
24697 if (str.length < 2) return ''
24698 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
24699 while (str.length % 4 !== 0) {
24700 str = str + '='
24701 }
24702 return str
24703 }
24704
24705 function stringtrim (str) {
24706 if (str.trim) return str.trim()
24707 return str.replace(/^\s+|\s+$/g, '')
24708 }
24709
24710 function toHex (n) {
24711 if (n < 16) return '0' + n.toString(16)
24712 return n.toString(16)
24713 }
24714
24715 function utf8ToBytes (string, units) {
24716 units = units || Infinity
24717 var codePoint
24718 var length = string.length
24719 var leadSurrogate = null
24720 var bytes = []
24721
24722 for (var i = 0; i < length; ++i) {
24723 codePoint = string.charCodeAt(i)
24724
24725 // is surrogate component
24726 if (codePoint > 0xD7FF && codePoint < 0xE000) {
24727 // last char was a lead
24728 if (!leadSurrogate) {
24729 // no lead yet
24730 if (codePoint > 0xDBFF) {
24731 // unexpected trail
24732 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24733 continue
24734 } else if (i + 1 === length) {
24735 // unpaired lead
24736 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24737 continue
24738 }
24739
24740 // valid lead
24741 leadSurrogate = codePoint
24742
24743 continue
24744 }
24745
24746 // 2 leads in a row
24747 if (codePoint < 0xDC00) {
24748 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24749 leadSurrogate = codePoint
24750 continue
24751 }
24752
24753 // valid surrogate pair
24754 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
24755 } else if (leadSurrogate) {
24756 // valid bmp char, but last char was a lead
24757 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24758 }
24759
24760 leadSurrogate = null
24761
24762 // encode utf8
24763 if (codePoint < 0x80) {
24764 if ((units -= 1) < 0) break
24765 bytes.push(codePoint)
24766 } else if (codePoint < 0x800) {
24767 if ((units -= 2) < 0) break
24768 bytes.push(
24769 codePoint >> 0x6 | 0xC0,
24770 codePoint & 0x3F | 0x80
24771 )
24772 } else if (codePoint < 0x10000) {
24773 if ((units -= 3) < 0) break
24774 bytes.push(
24775 codePoint >> 0xC | 0xE0,
24776 codePoint >> 0x6 & 0x3F | 0x80,
24777 codePoint & 0x3F | 0x80
24778 )
24779 } else if (codePoint < 0x110000) {
24780 if ((units -= 4) < 0) break
24781 bytes.push(
24782 codePoint >> 0x12 | 0xF0,
24783 codePoint >> 0xC & 0x3F | 0x80,
24784 codePoint >> 0x6 & 0x3F | 0x80,
24785 codePoint & 0x3F | 0x80
24786 )
24787 } else {
24788 throw new Error('Invalid code point')
24789 }
24790 }
24791
24792 return bytes
24793 }
24794
24795 function asciiToBytes (str) {
24796 var byteArray = []
24797 for (var i = 0; i < str.length; ++i) {
24798 // Node's code seems to be doing this and not & 0x7F..
24799 byteArray.push(str.charCodeAt(i) & 0xFF)
24800 }
24801 return byteArray
24802 }
24803
24804 function utf16leToBytes (str, units) {
24805 var c, hi, lo
24806 var byteArray = []
24807 for (var i = 0; i < str.length; ++i) {
24808 if ((units -= 2) < 0) break
24809
24810 c = str.charCodeAt(i)
24811 hi = c >> 8
24812 lo = c % 256
24813 byteArray.push(lo)
24814 byteArray.push(hi)
24815 }
24816
24817 return byteArray
24818 }
24819
24820 function base64ToBytes (str) {
24821 return base64.toByteArray(base64clean(str))
24822 }
24823
24824 function blitBuffer (src, dst, offset, length) {
24825 for (var i = 0; i < length; ++i) {
24826 if ((i + offset >= dst.length) || (i >= src.length)) break
24827 dst[i + offset] = src[i]
24828 }
24829 return i
24830 }
24831
24832 function isnan (val) {
24833 return val !== val // eslint-disable-line no-self-compare
24834 }
24835
24836 },{"base64-js":2,"ieee754":8}],6:[function(require,module,exports){
24837 (function (Buffer){
24838 // Copyright Joyent, Inc. and other Node contributors.
24839 //
24840 // Permission is hereby granted, free of charge, to any person obtaining a
24841 // copy of this software and associated documentation files (the
24842 // "Software"), to deal in the Software without restriction, including
24843 // without limitation the rights to use, copy, modify, merge, publish,
24844 // distribute, sublicense, and/or sell copies of the Software, and to permit
24845 // persons to whom the Software is furnished to do so, subject to the
24846 // following conditions:
24847 //
24848 // The above copyright notice and this permission notice shall be included
24849 // in all copies or substantial portions of the Software.
24850 //
24851 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24852 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24853 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
24854 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
24855 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24856 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24857 // USE OR OTHER DEALINGS IN THE SOFTWARE.
24858
24859 // NOTE: These type checking functions intentionally don't use `instanceof`
24860 // because it is fragile and can be easily faked with `Object.create()`.
24861
24862 function isArray(arg) {
24863 if (Array.isArray) {
24864 return Array.isArray(arg);
24865 }
24866 return objectToString(arg) === '[object Array]';
24867 }
24868 exports.isArray = isArray;
24869
24870 function isBoolean(arg) {
24871 return typeof arg === 'boolean';
24872 }
24873 exports.isBoolean = isBoolean;
24874
24875 function isNull(arg) {
24876 return arg === null;
24877 }
24878 exports.isNull = isNull;
24879
24880 function isNullOrUndefined(arg) {
24881 return arg == null;
24882 }
24883 exports.isNullOrUndefined = isNullOrUndefined;
24884
24885 function isNumber(arg) {
24886 return typeof arg === 'number';
24887 }
24888 exports.isNumber = isNumber;
24889
24890 function isString(arg) {
24891 return typeof arg === 'string';
24892 }
24893 exports.isString = isString;
24894
24895 function isSymbol(arg) {
24896 return typeof arg === 'symbol';
24897 }
24898 exports.isSymbol = isSymbol;
24899
24900 function isUndefined(arg) {
24901 return arg === void 0;
24902 }
24903 exports.isUndefined = isUndefined;
24904
24905 function isRegExp(re) {
24906 return objectToString(re) === '[object RegExp]';
24907 }
24908 exports.isRegExp = isRegExp;
24909
24910 function isObject(arg) {
24911 return typeof arg === 'object' && arg !== null;
24912 }
24913 exports.isObject = isObject;
24914
24915 function isDate(d) {
24916 return objectToString(d) === '[object Date]';
24917 }
24918 exports.isDate = isDate;
24919
24920 function isError(e) {
24921 return (objectToString(e) === '[object Error]' || e instanceof Error);
24922 }
24923 exports.isError = isError;
24924
24925 function isFunction(arg) {
24926 return typeof arg === 'function';
24927 }
24928 exports.isFunction = isFunction;
24929
24930 function isPrimitive(arg) {
24931 return arg === null ||
24932 typeof arg === 'boolean' ||
24933 typeof arg === 'number' ||
24934 typeof arg === 'string' ||
24935 typeof arg === 'symbol' || // ES6 symbol
24936 typeof arg === 'undefined';
24937 }
24938 exports.isPrimitive = isPrimitive;
24939
24940 exports.isBuffer = Buffer.isBuffer;
24941
24942 function objectToString(o) {
24943 return Object.prototype.toString.call(o);
24944 }
24945
24946 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
24947 },{"../../is-buffer/index.js":10}],7:[function(require,module,exports){
24948 // Copyright Joyent, Inc. and other Node contributors.
24949 //
24950 // Permission is hereby granted, free of charge, to any person obtaining a
24951 // copy of this software and associated documentation files (the
24952 // "Software"), to deal in the Software without restriction, including
24953 // without limitation the rights to use, copy, modify, merge, publish,
24954 // distribute, sublicense, and/or sell copies of the Software, and to permit
24955 // persons to whom the Software is furnished to do so, subject to the
24956 // following conditions:
24957 //
24958 // The above copyright notice and this permission notice shall be included
24959 // in all copies or substantial portions of the Software.
24960 //
24961 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24962 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24963 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
24964 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
24965 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24966 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24967 // USE OR OTHER DEALINGS IN THE SOFTWARE.
24968
24969 function EventEmitter() {
24970 this._events = this._events || {};
24971 this._maxListeners = this._maxListeners || undefined;
24972 }
24973 module.exports = EventEmitter;
24974
24975 // Backwards-compat with node 0.10.x
24976 EventEmitter.EventEmitter = EventEmitter;
24977
24978 EventEmitter.prototype._events = undefined;
24979 EventEmitter.prototype._maxListeners = undefined;
24980
24981 // By default EventEmitters will print a warning if more than 10 listeners are
24982 // added to it. This is a useful default which helps finding memory leaks.
24983 EventEmitter.defaultMaxListeners = 10;
24984
24985 // Obviously not all Emitters should be limited to 10. This function allows
24986 // that to be increased. Set to zero for unlimited.
24987 EventEmitter.prototype.setMaxListeners = function(n) {
24988 if (!isNumber(n) || n < 0 || isNaN(n))
24989 throw TypeError('n must be a positive number');
24990 this._maxListeners = n;
24991 return this;
24992 };
24993
24994 EventEmitter.prototype.emit = function(type) {
24995 var er, handler, len, args, i, listeners;
24996
24997 if (!this._events)
24998 this._events = {};
24999
25000 // If there is no 'error' event listener then throw.
25001 if (type === 'error') {
25002 if (!this._events.error ||
25003 (isObject(this._events.error) && !this._events.error.length)) {
25004 er = arguments[1];
25005 if (er instanceof Error) {
25006 throw er; // Unhandled 'error' event
25007 } else {
25008 // At least give some kind of context to the user
25009 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
25010 err.context = er;
25011 throw err;
25012 }
25013 }
25014 }
25015
25016 handler = this._events[type];
25017
25018 if (isUndefined(handler))
25019 return false;
25020
25021 if (isFunction(handler)) {
25022 switch (arguments.length) {
25023 // fast cases
25024 case 1:
25025 handler.call(this);
25026 break;
25027 case 2:
25028 handler.call(this, arguments[1]);
25029 break;
25030 case 3:
25031 handler.call(this, arguments[1], arguments[2]);
25032 break;
25033 // slower
25034 default:
25035 args = Array.prototype.slice.call(arguments, 1);
25036 handler.apply(this, args);
25037 }
25038 } else if (isObject(handler)) {
25039 args = Array.prototype.slice.call(arguments, 1);
25040 listeners = handler.slice();
25041 len = listeners.length;
25042 for (i = 0; i < len; i++)
25043 listeners[i].apply(this, args);
25044 }
25045
25046 return true;
25047 };
25048
25049 EventEmitter.prototype.addListener = function(type, listener) {
25050 var m;
25051
25052 if (!isFunction(listener))
25053 throw TypeError('listener must be a function');
25054
25055 if (!this._events)
25056 this._events = {};
25057
25058 // To avoid recursion in the case that type === "newListener"! Before
25059 // adding it to the listeners, first emit "newListener".
25060 if (this._events.newListener)
25061 this.emit('newListener', type,
25062 isFunction(listener.listener) ?
25063 listener.listener : listener);
25064
25065 if (!this._events[type])
25066 // Optimize the case of one listener. Don't need the extra array object.
25067 this._events[type] = listener;
25068 else if (isObject(this._events[type]))
25069 // If we've already got an array, just append.
25070 this._events[type].push(listener);
25071 else
25072 // Adding the second element, need to change to array.
25073 this._events[type] = [this._events[type], listener];
25074
25075 // Check for listener leak
25076 if (isObject(this._events[type]) && !this._events[type].warned) {
25077 if (!isUndefined(this._maxListeners)) {
25078 m = this._maxListeners;
25079 } else {
25080 m = EventEmitter.defaultMaxListeners;
25081 }
25082
25083 if (m && m > 0 && this._events[type].length > m) {
25084 this._events[type].warned = true;
25085 console.error('(node) warning: possible EventEmitter memory ' +
25086 'leak detected. %d listeners added. ' +
25087 'Use emitter.setMaxListeners() to increase limit.',
25088 this._events[type].length);
25089 if (typeof console.trace === 'function') {
25090 // not supported in IE 10
25091 console.trace();
25092 }
25093 }
25094 }
25095
25096 return this;
25097 };
25098
25099 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
25100
25101 EventEmitter.prototype.once = function(type, listener) {
25102 if (!isFunction(listener))
25103 throw TypeError('listener must be a function');
25104
25105 var fired = false;
25106
25107 function g() {
25108 this.removeListener(type, g);
25109
25110 if (!fired) {
25111 fired = true;
25112 listener.apply(this, arguments);
25113 }
25114 }
25115
25116 g.listener = listener;
25117 this.on(type, g);
25118
25119 return this;
25120 };
25121
25122 // emits a 'removeListener' event iff the listener was removed
25123 EventEmitter.prototype.removeListener = function(type, listener) {
25124 var list, position, length, i;
25125
25126 if (!isFunction(listener))
25127 throw TypeError('listener must be a function');
25128
25129 if (!this._events || !this._events[type])
25130 return this;
25131
25132 list = this._events[type];
25133 length = list.length;
25134 position = -1;
25135
25136 if (list === listener ||
25137 (isFunction(list.listener) && list.listener === listener)) {
25138 delete this._events[type];
25139 if (this._events.removeListener)
25140 this.emit('removeListener', type, listener);
25141
25142 } else if (isObject(list)) {
25143 for (i = length; i-- > 0;) {
25144 if (list[i] === listener ||
25145 (list[i].listener && list[i].listener === listener)) {
25146 position = i;
25147 break;
25148 }
25149 }
25150
25151 if (position < 0)
25152 return this;
25153
25154 if (list.length === 1) {
25155 list.length = 0;
25156 delete this._events[type];
25157 } else {
25158 list.splice(position, 1);
25159 }
25160
25161 if (this._events.removeListener)
25162 this.emit('removeListener', type, listener);
25163 }
25164
25165 return this;
25166 };
25167
25168 EventEmitter.prototype.removeAllListeners = function(type) {
25169 var key, listeners;
25170
25171 if (!this._events)
25172 return this;
25173
25174 // not listening for removeListener, no need to emit
25175 if (!this._events.removeListener) {
25176 if (arguments.length === 0)
25177 this._events = {};
25178 else if (this._events[type])
25179 delete this._events[type];
25180 return this;
25181 }
25182
25183 // emit removeListener for all listeners on all events
25184 if (arguments.length === 0) {
25185 for (key in this._events) {
25186 if (key === 'removeListener') continue;
25187 this.removeAllListeners(key);
25188 }
25189 this.removeAllListeners('removeListener');
25190 this._events = {};
25191 return this;
25192 }
25193
25194 listeners = this._events[type];
25195
25196 if (isFunction(listeners)) {
25197 this.removeListener(type, listeners);
25198 } else if (listeners) {
25199 // LIFO order
25200 while (listeners.length)
25201 this.removeListener(type, listeners[listeners.length - 1]);
25202 }
25203 delete this._events[type];
25204
25205 return this;
25206 };
25207
25208 EventEmitter.prototype.listeners = function(type) {
25209 var ret;
25210 if (!this._events || !this._events[type])
25211 ret = [];
25212 else if (isFunction(this._events[type]))
25213 ret = [this._events[type]];
25214 else
25215 ret = this._events[type].slice();
25216 return ret;
25217 };
25218
25219 EventEmitter.prototype.listenerCount = function(type) {
25220 if (this._events) {
25221 var evlistener = this._events[type];
25222
25223 if (isFunction(evlistener))
25224 return 1;
25225 else if (evlistener)
25226 return evlistener.length;
25227 }
25228 return 0;
25229 };
25230
25231 EventEmitter.listenerCount = function(emitter, type) {
25232 return emitter.listenerCount(type);
25233 };
25234
25235 function isFunction(arg) {
25236 return typeof arg === 'function';
25237 }
25238
25239 function isNumber(arg) {
25240 return typeof arg === 'number';
25241 }
25242
25243 function isObject(arg) {
25244 return typeof arg === 'object' && arg !== null;
25245 }
25246
25247 function isUndefined(arg) {
25248 return arg === void 0;
25249 }
25250
25251 },{}],8:[function(require,module,exports){
25252 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
25253 var e, m
25254 var eLen = nBytes * 8 - mLen - 1
25255 var eMax = (1 << eLen) - 1
25256 var eBias = eMax >> 1
25257 var nBits = -7
25258 var i = isLE ? (nBytes - 1) : 0
25259 var d = isLE ? -1 : 1
25260 var s = buffer[offset + i]
25261
25262 i += d
25263
25264 e = s & ((1 << (-nBits)) - 1)
25265 s >>= (-nBits)
25266 nBits += eLen
25267 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
25268
25269 m = e & ((1 << (-nBits)) - 1)
25270 e >>= (-nBits)
25271 nBits += mLen
25272 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
25273
25274 if (e === 0) {
25275 e = 1 - eBias
25276 } else if (e === eMax) {
25277 return m ? NaN : ((s ? -1 : 1) * Infinity)
25278 } else {
25279 m = m + Math.pow(2, mLen)
25280 e = e - eBias
25281 }
25282 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
25283 }
25284
25285 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
25286 var e, m, c
25287 var eLen = nBytes * 8 - mLen - 1
25288 var eMax = (1 << eLen) - 1
25289 var eBias = eMax >> 1
25290 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
25291 var i = isLE ? 0 : (nBytes - 1)
25292 var d = isLE ? 1 : -1
25293 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
25294
25295 value = Math.abs(value)
25296
25297 if (isNaN(value) || value === Infinity) {
25298 m = isNaN(value) ? 1 : 0
25299 e = eMax
25300 } else {
25301 e = Math.floor(Math.log(value) / Math.LN2)
25302 if (value * (c = Math.pow(2, -e)) < 1) {
25303 e--
25304 c *= 2
25305 }
25306 if (e + eBias >= 1) {
25307 value += rt / c
25308 } else {
25309 value += rt * Math.pow(2, 1 - eBias)
25310 }
25311 if (value * c >= 2) {
25312 e++
25313 c /= 2
25314 }
25315
25316 if (e + eBias >= eMax) {
25317 m = 0
25318 e = eMax
25319 } else if (e + eBias >= 1) {
25320 m = (value * c - 1) * Math.pow(2, mLen)
25321 e = e + eBias
25322 } else {
25323 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
25324 e = 0
25325 }
25326 }
25327
25328 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
25329
25330 e = (e << mLen) | m
25331 eLen += mLen
25332 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
25333
25334 buffer[offset + i - d] |= s * 128
25335 }
25336
25337 },{}],9:[function(require,module,exports){
25338 if (typeof Object.create === 'function') {
25339 // implementation from standard node.js 'util' module
25340 module.exports = function inherits(ctor, superCtor) {
25341 ctor.super_ = superCtor
25342 ctor.prototype = Object.create(superCtor.prototype, {
25343 constructor: {
25344 value: ctor,
25345 enumerable: false,
25346 writable: true,
25347 configurable: true
25348 }
25349 });
25350 };
25351 } else {
25352 // old school shim for old browsers
25353 module.exports = function inherits(ctor, superCtor) {
25354 ctor.super_ = superCtor
25355 var TempCtor = function () {}
25356 TempCtor.prototype = superCtor.prototype
25357 ctor.prototype = new TempCtor()
25358 ctor.prototype.constructor = ctor
25359 }
25360 }
25361
25362 },{}],10:[function(require,module,exports){
25363 /*!
25364 * Determine if an object is a Buffer
25365 *
25366 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
25367 * @license MIT
25368 */
25369
25370 // The _isBuffer check is for Safari 5-7 support, because it's missing
25371 // Object.prototype.constructor. Remove this eventually
25372 module.exports = function (obj) {
25373 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
25374 }
25375
25376 function isBuffer (obj) {
25377 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
25378 }
25379
25380 // For Node v0.10 support. Remove this eventually.
25381 function isSlowBuffer (obj) {
25382 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
25383 }
25384
25385 },{}],11:[function(require,module,exports){
25386 var toString = {}.toString;
25387
25388 module.exports = Array.isArray || function (arr) {
25389 return toString.call(arr) == '[object Array]';
25390 };
25391
25392 },{}],12:[function(require,module,exports){
25393 (function (process){
25394 'use strict';
25395
25396 if (!process.version ||
25397 process.version.indexOf('v0.') === 0 ||
25398 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
25399 module.exports = nextTick;
25400 } else {
25401 module.exports = process.nextTick;
25402 }
25403
25404 function nextTick(fn, arg1, arg2, arg3) {
25405 if (typeof fn !== 'function') {
25406 throw new TypeError('"callback" argument must be a function');
25407 }
25408 var len = arguments.length;
25409 var args, i;
25410 switch (len) {
25411 case 0:
25412 case 1:
25413 return process.nextTick(fn);
25414 case 2:
25415 return process.nextTick(function afterTickOne() {
25416 fn.call(null, arg1);
25417 });
25418 case 3:
25419 return process.nextTick(function afterTickTwo() {
25420 fn.call(null, arg1, arg2);
25421 });
25422 case 4:
25423 return process.nextTick(function afterTickThree() {
25424 fn.call(null, arg1, arg2, arg3);
25425 });
25426 default:
25427 args = new Array(len - 1);
25428 i = 0;
25429 while (i < args.length) {
25430 args[i++] = arguments[i];
25431 }
25432 return process.nextTick(function afterTick() {
25433 fn.apply(null, args);
25434 });
25435 }
25436 }
25437
25438 }).call(this,require('_process'))
25439 },{"_process":13}],13:[function(require,module,exports){
25440 // shim for using process in browser
25441 var process = module.exports = {};
25442
25443 // cached from whatever global is present so that test runners that stub it
25444 // don't break things. But we need to wrap it in a try catch in case it is
25445 // wrapped in strict mode code which doesn't define any globals. It's inside a
25446 // function because try/catches deoptimize in certain engines.
25447
25448 var cachedSetTimeout;
25449 var cachedClearTimeout;
25450
25451 function defaultSetTimout() {
25452 throw new Error('setTimeout has not been defined');
25453 }
25454 function defaultClearTimeout () {
25455 throw new Error('clearTimeout has not been defined');
25456 }
25457 (function () {
25458 try {
25459 if (typeof setTimeout === 'function') {
25460 cachedSetTimeout = setTimeout;
25461 } else {
25462 cachedSetTimeout = defaultSetTimout;
25463 }
25464 } catch (e) {
25465 cachedSetTimeout = defaultSetTimout;
25466 }
25467 try {
25468 if (typeof clearTimeout === 'function') {
25469 cachedClearTimeout = clearTimeout;
25470 } else {
25471 cachedClearTimeout = defaultClearTimeout;
25472 }
25473 } catch (e) {
25474 cachedClearTimeout = defaultClearTimeout;
25475 }
25476 } ())
25477 function runTimeout(fun) {
25478 if (cachedSetTimeout === setTimeout) {
25479 //normal enviroments in sane situations
25480 return setTimeout(fun, 0);
25481 }
25482 // if setTimeout wasn't available but was latter defined
25483 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
25484 cachedSetTimeout = setTimeout;
25485 return setTimeout(fun, 0);
25486 }
25487 try {
25488 // when when somebody has screwed with setTimeout but no I.E. maddness
25489 return cachedSetTimeout(fun, 0);
25490 } catch(e){
25491 try {
25492 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
25493 return cachedSetTimeout.call(null, fun, 0);
25494 } catch(e){
25495 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
25496 return cachedSetTimeout.call(this, fun, 0);
25497 }
25498 }
25499
25500
25501 }
25502 function runClearTimeout(marker) {
25503 if (cachedClearTimeout === clearTimeout) {
25504 //normal enviroments in sane situations
25505 return clearTimeout(marker);
25506 }
25507 // if clearTimeout wasn't available but was latter defined
25508 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
25509 cachedClearTimeout = clearTimeout;
25510 return clearTimeout(marker);
25511 }
25512 try {
25513 // when when somebody has screwed with setTimeout but no I.E. maddness
25514 return cachedClearTimeout(marker);
25515 } catch (e){
25516 try {
25517 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
25518 return cachedClearTimeout.call(null, marker);
25519 } catch (e){
25520 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
25521 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
25522 return cachedClearTimeout.call(this, marker);
25523 }
25524 }
25525
25526
25527
25528 }
25529 var queue = [];
25530 var draining = false;
25531 var currentQueue;
25532 var queueIndex = -1;
25533
25534 function cleanUpNextTick() {
25535 if (!draining || !currentQueue) {
25536 return;
25537 }
25538 draining = false;
25539 if (currentQueue.length) {
25540 queue = currentQueue.concat(queue);
25541 } else {
25542 queueIndex = -1;
25543 }
25544 if (queue.length) {
25545 drainQueue();
25546 }
25547 }
25548
25549 function drainQueue() {
25550 if (draining) {
25551 return;
25552 }
25553 var timeout = runTimeout(cleanUpNextTick);
25554 draining = true;
25555
25556 var len = queue.length;
25557 while(len) {
25558 currentQueue = queue;
25559 queue = [];
25560 while (++queueIndex < len) {
25561 if (currentQueue) {
25562 currentQueue[queueIndex].run();
25563 }
25564 }
25565 queueIndex = -1;
25566 len = queue.length;
25567 }
25568 currentQueue = null;
25569 draining = false;
25570 runClearTimeout(timeout);
25571 }
25572
25573 process.nextTick = function (fun) {
25574 var args = new Array(arguments.length - 1);
25575 if (arguments.length > 1) {
25576 for (var i = 1; i < arguments.length; i++) {
25577 args[i - 1] = arguments[i];
25578 }
25579 }
25580 queue.push(new Item(fun, args));
25581 if (queue.length === 1 && !draining) {
25582 runTimeout(drainQueue);
25583 }
25584 };
25585
25586 // v8 likes predictible objects
25587 function Item(fun, array) {
25588 this.fun = fun;
25589 this.array = array;
25590 }
25591 Item.prototype.run = function () {
25592 this.fun.apply(null, this.array);
25593 };
25594 process.title = 'browser';
25595 process.browser = true;
25596 process.env = {};
25597 process.argv = [];
25598 process.version = ''; // empty string to avoid regexp issues
25599 process.versions = {};
25600
25601 function noop() {}
25602
25603 process.on = noop;
25604 process.addListener = noop;
25605 process.once = noop;
25606 process.off = noop;
25607 process.removeListener = noop;
25608 process.removeAllListeners = noop;
25609 process.emit = noop;
25610
25611 process.binding = function (name) {
25612 throw new Error('process.binding is not supported');
25613 };
25614
25615 process.cwd = function () { return '/' };
25616 process.chdir = function (dir) {
25617 throw new Error('process.chdir is not supported');
25618 };
25619 process.umask = function() { return 0; };
25620
25621 },{}],14:[function(require,module,exports){
25622 module.exports = require("./lib/_stream_duplex.js")
25623
25624 },{"./lib/_stream_duplex.js":15}],15:[function(require,module,exports){
25625 // a duplex stream is just a stream that is both readable and writable.
25626 // Since JS doesn't have multiple prototypal inheritance, this class
25627 // prototypally inherits from Readable, and then parasitically from
25628 // Writable.
25629
25630 'use strict';
25631
25632 /*<replacement>*/
25633
25634 var objectKeys = Object.keys || function (obj) {
25635 var keys = [];
25636 for (var key in obj) {
25637 keys.push(key);
25638 }return keys;
25639 };
25640 /*</replacement>*/
25641
25642 module.exports = Duplex;
25643
25644 /*<replacement>*/
25645 var processNextTick = require('process-nextick-args');
25646 /*</replacement>*/
25647
25648 /*<replacement>*/
25649 var util = require('core-util-is');
25650 util.inherits = require('inherits');
25651 /*</replacement>*/
25652
25653 var Readable = require('./_stream_readable');
25654 var Writable = require('./_stream_writable');
25655
25656 util.inherits(Duplex, Readable);
25657
25658 var keys = objectKeys(Writable.prototype);
25659 for (var v = 0; v < keys.length; v++) {
25660 var method = keys[v];
25661 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
25662 }
25663
25664 function Duplex(options) {
25665 if (!(this instanceof Duplex)) return new Duplex(options);
25666
25667 Readable.call(this, options);
25668 Writable.call(this, options);
25669
25670 if (options && options.readable === false) this.readable = false;
25671
25672 if (options && options.writable === false) this.writable = false;
25673
25674 this.allowHalfOpen = true;
25675 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
25676
25677 this.once('end', onend);
25678 }
25679
25680 // the no-half-open enforcer
25681 function onend() {
25682 // if we allow half-open state, or if the writable side ended,
25683 // then we're ok.
25684 if (this.allowHalfOpen || this._writableState.ended) return;
25685
25686 // no more data can be written.
25687 // But allow more writes to happen in this tick.
25688 processNextTick(onEndNT, this);
25689 }
25690
25691 function onEndNT(self) {
25692 self.end();
25693 }
25694
25695 function forEach(xs, f) {
25696 for (var i = 0, l = xs.length; i < l; i++) {
25697 f(xs[i], i);
25698 }
25699 }
25700 },{"./_stream_readable":17,"./_stream_writable":19,"core-util-is":6,"inherits":9,"process-nextick-args":12}],16:[function(require,module,exports){
25701 // a passthrough stream.
25702 // basically just the most minimal sort of Transform stream.
25703 // Every written chunk gets output as-is.
25704
25705 'use strict';
25706
25707 module.exports = PassThrough;
25708
25709 var Transform = require('./_stream_transform');
25710
25711 /*<replacement>*/
25712 var util = require('core-util-is');
25713 util.inherits = require('inherits');
25714 /*</replacement>*/
25715
25716 util.inherits(PassThrough, Transform);
25717
25718 function PassThrough(options) {
25719 if (!(this instanceof PassThrough)) return new PassThrough(options);
25720
25721 Transform.call(this, options);
25722 }
25723
25724 PassThrough.prototype._transform = function (chunk, encoding, cb) {
25725 cb(null, chunk);
25726 };
25727 },{"./_stream_transform":18,"core-util-is":6,"inherits":9}],17:[function(require,module,exports){
25728 (function (process){
25729 'use strict';
25730
25731 module.exports = Readable;
25732
25733 /*<replacement>*/
25734 var processNextTick = require('process-nextick-args');
25735 /*</replacement>*/
25736
25737 /*<replacement>*/
25738 var isArray = require('isarray');
25739 /*</replacement>*/
25740
25741 /*<replacement>*/
25742 var Duplex;
25743 /*</replacement>*/
25744
25745 Readable.ReadableState = ReadableState;
25746
25747 /*<replacement>*/
25748 var EE = require('events').EventEmitter;
25749
25750 var EElistenerCount = function (emitter, type) {
25751 return emitter.listeners(type).length;
25752 };
25753 /*</replacement>*/
25754
25755 /*<replacement>*/
25756 var Stream;
25757 (function () {
25758 try {
25759 Stream = require('st' + 'ream');
25760 } catch (_) {} finally {
25761 if (!Stream) Stream = require('events').EventEmitter;
25762 }
25763 })();
25764 /*</replacement>*/
25765
25766 var Buffer = require('buffer').Buffer;
25767 /*<replacement>*/
25768 var bufferShim = require('buffer-shims');
25769 /*</replacement>*/
25770
25771 /*<replacement>*/
25772 var util = require('core-util-is');
25773 util.inherits = require('inherits');
25774 /*</replacement>*/
25775
25776 /*<replacement>*/
25777 var debugUtil = require('util');
25778 var debug = void 0;
25779 if (debugUtil && debugUtil.debuglog) {
25780 debug = debugUtil.debuglog('stream');
25781 } else {
25782 debug = function () {};
25783 }
25784 /*</replacement>*/
25785
25786 var BufferList = require('./internal/streams/BufferList');
25787 var StringDecoder;
25788
25789 util.inherits(Readable, Stream);
25790
25791 function prependListener(emitter, event, fn) {
25792 // Sadly this is not cacheable as some libraries bundle their own
25793 // event emitter implementation with them.
25794 if (typeof emitter.prependListener === 'function') {
25795 return emitter.prependListener(event, fn);
25796 } else {
25797 // This is a hack to make sure that our error handler is attached before any
25798 // userland ones. NEVER DO THIS. This is here only because this code needs
25799 // to continue to work with older versions of Node.js that do not include
25800 // the prependListener() method. The goal is to eventually remove this hack.
25801 if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
25802 }
25803 }
25804
25805 function ReadableState(options, stream) {
25806 Duplex = Duplex || require('./_stream_duplex');
25807
25808 options = options || {};
25809
25810 // object stream flag. Used to make read(n) ignore n and to
25811 // make all the buffer merging and length checks go away
25812 this.objectMode = !!options.objectMode;
25813
25814 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
25815
25816 // the point at which it stops calling _read() to fill the buffer
25817 // Note: 0 is a valid value, means "don't call _read preemptively ever"
25818 var hwm = options.highWaterMark;
25819 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
25820 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
25821
25822 // cast to ints.
25823 this.highWaterMark = ~ ~this.highWaterMark;
25824
25825 // A linked list is used to store data chunks instead of an array because the
25826 // linked list can remove elements from the beginning faster than
25827 // array.shift()
25828 this.buffer = new BufferList();
25829 this.length = 0;
25830 this.pipes = null;
25831 this.pipesCount = 0;
25832 this.flowing = null;
25833 this.ended = false;
25834 this.endEmitted = false;
25835 this.reading = false;
25836
25837 // a flag to be able to tell if the onwrite cb is called immediately,
25838 // or on a later tick. We set this to true at first, because any
25839 // actions that shouldn't happen until "later" should generally also
25840 // not happen before the first write call.
25841 this.sync = true;
25842
25843 // whenever we return null, then we set a flag to say
25844 // that we're awaiting a 'readable' event emission.
25845 this.needReadable = false;
25846 this.emittedReadable = false;
25847 this.readableListening = false;
25848 this.resumeScheduled = false;
25849
25850 // Crypto is kind of old and crusty. Historically, its default string
25851 // encoding is 'binary' so we have to make this configurable.
25852 // Everything else in the universe uses 'utf8', though.
25853 this.defaultEncoding = options.defaultEncoding || 'utf8';
25854
25855 // when piping, we only care about 'readable' events that happen
25856 // after read()ing all the bytes and not getting any pushback.
25857 this.ranOut = false;
25858
25859 // the number of writers that are awaiting a drain event in .pipe()s
25860 this.awaitDrain = 0;
25861
25862 // if true, a maybeReadMore has been scheduled
25863 this.readingMore = false;
25864
25865 this.decoder = null;
25866 this.encoding = null;
25867 if (options.encoding) {
25868 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
25869 this.decoder = new StringDecoder(options.encoding);
25870 this.encoding = options.encoding;
25871 }
25872 }
25873
25874 function Readable(options) {
25875 Duplex = Duplex || require('./_stream_duplex');
25876
25877 if (!(this instanceof Readable)) return new Readable(options);
25878
25879 this._readableState = new ReadableState(options, this);
25880
25881 // legacy
25882 this.readable = true;
25883
25884 if (options && typeof options.read === 'function') this._read = options.read;
25885
25886 Stream.call(this);
25887 }
25888
25889 // Manually shove something into the read() buffer.
25890 // This returns true if the highWaterMark has not been hit yet,
25891 // similar to how Writable.write() returns true if you should
25892 // write() some more.
25893 Readable.prototype.push = function (chunk, encoding) {
25894 var state = this._readableState;
25895
25896 if (!state.objectMode && typeof chunk === 'string') {
25897 encoding = encoding || state.defaultEncoding;
25898 if (encoding !== state.encoding) {
25899 chunk = bufferShim.from(chunk, encoding);
25900 encoding = '';
25901 }
25902 }
25903
25904 return readableAddChunk(this, state, chunk, encoding, false);
25905 };
25906
25907 // Unshift should *always* be something directly out of read()
25908 Readable.prototype.unshift = function (chunk) {
25909 var state = this._readableState;
25910 return readableAddChunk(this, state, chunk, '', true);
25911 };
25912
25913 Readable.prototype.isPaused = function () {
25914 return this._readableState.flowing === false;
25915 };
25916
25917 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
25918 var er = chunkInvalid(state, chunk);
25919 if (er) {
25920 stream.emit('error', er);
25921 } else if (chunk === null) {
25922 state.reading = false;
25923 onEofChunk(stream, state);
25924 } else if (state.objectMode || chunk && chunk.length > 0) {
25925 if (state.ended && !addToFront) {
25926 var e = new Error('stream.push() after EOF');
25927 stream.emit('error', e);
25928 } else if (state.endEmitted && addToFront) {
25929 var _e = new Error('stream.unshift() after end event');
25930 stream.emit('error', _e);
25931 } else {
25932 var skipAdd;
25933 if (state.decoder && !addToFront && !encoding) {
25934 chunk = state.decoder.write(chunk);
25935 skipAdd = !state.objectMode && chunk.length === 0;
25936 }
25937
25938 if (!addToFront) state.reading = false;
25939
25940 // Don't add to the buffer if we've decoded to an empty string chunk and
25941 // we're not in object mode
25942 if (!skipAdd) {
25943 // if we want the data now, just emit it.
25944 if (state.flowing && state.length === 0 && !state.sync) {
25945 stream.emit('data', chunk);
25946 stream.read(0);
25947 } else {
25948 // update the buffer info.
25949 state.length += state.objectMode ? 1 : chunk.length;
25950 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
25951
25952 if (state.needReadable) emitReadable(stream);
25953 }
25954 }
25955
25956 maybeReadMore(stream, state);
25957 }
25958 } else if (!addToFront) {
25959 state.reading = false;
25960 }
25961
25962 return needMoreData(state);
25963 }
25964
25965 // if it's past the high water mark, we can push in some more.
25966 // Also, if we have no data yet, we can stand some
25967 // more bytes. This is to work around cases where hwm=0,
25968 // such as the repl. Also, if the push() triggered a
25969 // readable event, and the user called read(largeNumber) such that
25970 // needReadable was set, then we ought to push more, so that another
25971 // 'readable' event will be triggered.
25972 function needMoreData(state) {
25973 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
25974 }
25975
25976 // backwards compatibility.
25977 Readable.prototype.setEncoding = function (enc) {
25978 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
25979 this._readableState.decoder = new StringDecoder(enc);
25980 this._readableState.encoding = enc;
25981 return this;
25982 };
25983
25984 // Don't raise the hwm > 8MB
25985 var MAX_HWM = 0x800000;
25986 function computeNewHighWaterMark(n) {
25987 if (n >= MAX_HWM) {
25988 n = MAX_HWM;
25989 } else {
25990 // Get the next highest power of 2 to prevent increasing hwm excessively in
25991 // tiny amounts
25992 n--;
25993 n |= n >>> 1;
25994 n |= n >>> 2;
25995 n |= n >>> 4;
25996 n |= n >>> 8;
25997 n |= n >>> 16;
25998 n++;
25999 }
26000 return n;
26001 }
26002
26003 // This function is designed to be inlinable, so please take care when making
26004 // changes to the function body.
26005 function howMuchToRead(n, state) {
26006 if (n <= 0 || state.length === 0 && state.ended) return 0;
26007 if (state.objectMode) return 1;
26008 if (n !== n) {
26009 // Only flow one buffer at a time
26010 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
26011 }
26012 // If we're asking for more than the current hwm, then raise the hwm.
26013 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
26014 if (n <= state.length) return n;
26015 // Don't have enough
26016 if (!state.ended) {
26017 state.needReadable = true;
26018 return 0;
26019 }
26020 return state.length;
26021 }
26022
26023 // you can override either this method, or the async _read(n) below.
26024 Readable.prototype.read = function (n) {
26025 debug('read', n);
26026 n = parseInt(n, 10);
26027 var state = this._readableState;
26028 var nOrig = n;
26029
26030 if (n !== 0) state.emittedReadable = false;
26031
26032 // if we're doing read(0) to trigger a readable event, but we
26033 // already have a bunch of data in the buffer, then just trigger
26034 // the 'readable' event and move on.
26035 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
26036 debug('read: emitReadable', state.length, state.ended);
26037 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
26038 return null;
26039 }
26040
26041 n = howMuchToRead(n, state);
26042
26043 // if we've ended, and we're now clear, then finish it up.
26044 if (n === 0 && state.ended) {
26045 if (state.length === 0) endReadable(this);
26046 return null;
26047 }
26048
26049 // All the actual chunk generation logic needs to be
26050 // *below* the call to _read. The reason is that in certain
26051 // synthetic stream cases, such as passthrough streams, _read
26052 // may be a completely synchronous operation which may change
26053 // the state of the read buffer, providing enough data when
26054 // before there was *not* enough.
26055 //
26056 // So, the steps are:
26057 // 1. Figure out what the state of things will be after we do
26058 // a read from the buffer.
26059 //
26060 // 2. If that resulting state will trigger a _read, then call _read.
26061 // Note that this may be asynchronous, or synchronous. Yes, it is
26062 // deeply ugly to write APIs this way, but that still doesn't mean
26063 // that the Readable class should behave improperly, as streams are
26064 // designed to be sync/async agnostic.
26065 // Take note if the _read call is sync or async (ie, if the read call
26066 // has returned yet), so that we know whether or not it's safe to emit
26067 // 'readable' etc.
26068 //
26069 // 3. Actually pull the requested chunks out of the buffer and return.
26070
26071 // if we need a readable event, then we need to do some reading.
26072 var doRead = state.needReadable;
26073 debug('need readable', doRead);
26074
26075 // if we currently have less than the highWaterMark, then also read some
26076 if (state.length === 0 || state.length - n < state.highWaterMark) {
26077 doRead = true;
26078 debug('length less than watermark', doRead);
26079 }
26080
26081 // however, if we've ended, then there's no point, and if we're already
26082 // reading, then it's unnecessary.
26083 if (state.ended || state.reading) {
26084 doRead = false;
26085 debug('reading or ended', doRead);
26086 } else if (doRead) {
26087 debug('do read');
26088 state.reading = true;
26089 state.sync = true;
26090 // if the length is currently zero, then we *need* a readable event.
26091 if (state.length === 0) state.needReadable = true;
26092 // call internal read method
26093 this._read(state.highWaterMark);
26094 state.sync = false;
26095 // If _read pushed data synchronously, then `reading` will be false,
26096 // and we need to re-evaluate how much data we can return to the user.
26097 if (!state.reading) n = howMuchToRead(nOrig, state);
26098 }
26099
26100 var ret;
26101 if (n > 0) ret = fromList(n, state);else ret = null;
26102
26103 if (ret === null) {
26104 state.needReadable = true;
26105 n = 0;
26106 } else {
26107 state.length -= n;
26108 }
26109
26110 if (state.length === 0) {
26111 // If we have nothing in the buffer, then we want to know
26112 // as soon as we *do* get something into the buffer.
26113 if (!state.ended) state.needReadable = true;
26114
26115 // If we tried to read() past the EOF, then emit end on the next tick.
26116 if (nOrig !== n && state.ended) endReadable(this);
26117 }
26118
26119 if (ret !== null) this.emit('data', ret);
26120
26121 return ret;
26122 };
26123
26124 function chunkInvalid(state, chunk) {
26125 var er = null;
26126 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
26127 er = new TypeError('Invalid non-string/buffer chunk');
26128 }
26129 return er;
26130 }
26131
26132 function onEofChunk(stream, state) {
26133 if (state.ended) return;
26134 if (state.decoder) {
26135 var chunk = state.decoder.end();
26136 if (chunk && chunk.length) {
26137 state.buffer.push(chunk);
26138 state.length += state.objectMode ? 1 : chunk.length;
26139 }
26140 }
26141 state.ended = true;
26142
26143 // emit 'readable' now to make sure it gets picked up.
26144 emitReadable(stream);
26145 }
26146
26147 // Don't emit readable right away in sync mode, because this can trigger
26148 // another read() call => stack overflow. This way, it might trigger
26149 // a nextTick recursion warning, but that's not so bad.
26150 function emitReadable(stream) {
26151 var state = stream._readableState;
26152 state.needReadable = false;
26153 if (!state.emittedReadable) {
26154 debug('emitReadable', state.flowing);
26155 state.emittedReadable = true;
26156 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
26157 }
26158 }
26159
26160 function emitReadable_(stream) {
26161 debug('emit readable');
26162 stream.emit('readable');
26163 flow(stream);
26164 }
26165
26166 // at this point, the user has presumably seen the 'readable' event,
26167 // and called read() to consume some data. that may have triggered
26168 // in turn another _read(n) call, in which case reading = true if
26169 // it's in progress.
26170 // However, if we're not ended, or reading, and the length < hwm,
26171 // then go ahead and try to read some more preemptively.
26172 function maybeReadMore(stream, state) {
26173 if (!state.readingMore) {
26174 state.readingMore = true;
26175 processNextTick(maybeReadMore_, stream, state);
26176 }
26177 }
26178
26179 function maybeReadMore_(stream, state) {
26180 var len = state.length;
26181 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
26182 debug('maybeReadMore read 0');
26183 stream.read(0);
26184 if (len === state.length)
26185 // didn't get any data, stop spinning.
26186 break;else len = state.length;
26187 }
26188 state.readingMore = false;
26189 }
26190
26191 // abstract method. to be overridden in specific implementation classes.
26192 // call cb(er, data) where data is <= n in length.
26193 // for virtual (non-string, non-buffer) streams, "length" is somewhat
26194 // arbitrary, and perhaps not very meaningful.
26195 Readable.prototype._read = function (n) {
26196 this.emit('error', new Error('_read() is not implemented'));
26197 };
26198
26199 Readable.prototype.pipe = function (dest, pipeOpts) {
26200 var src = this;
26201 var state = this._readableState;
26202
26203 switch (state.pipesCount) {
26204 case 0:
26205 state.pipes = dest;
26206 break;
26207 case 1:
26208 state.pipes = [state.pipes, dest];
26209 break;
26210 default:
26211 state.pipes.push(dest);
26212 break;
26213 }
26214 state.pipesCount += 1;
26215 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
26216
26217 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
26218
26219 var endFn = doEnd ? onend : cleanup;
26220 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
26221
26222 dest.on('unpipe', onunpipe);
26223 function onunpipe(readable) {
26224 debug('onunpipe');
26225 if (readable === src) {
26226 cleanup();
26227 }
26228 }
26229
26230 function onend() {
26231 debug('onend');
26232 dest.end();
26233 }
26234
26235 // when the dest drains, it reduces the awaitDrain counter
26236 // on the source. This would be more elegant with a .once()
26237 // handler in flow(), but adding and removing repeatedly is
26238 // too slow.
26239 var ondrain = pipeOnDrain(src);
26240 dest.on('drain', ondrain);
26241
26242 var cleanedUp = false;
26243 function cleanup() {
26244 debug('cleanup');
26245 // cleanup event handlers once the pipe is broken
26246 dest.removeListener('close', onclose);
26247 dest.removeListener('finish', onfinish);
26248 dest.removeListener('drain', ondrain);
26249 dest.removeListener('error', onerror);
26250 dest.removeListener('unpipe', onunpipe);
26251 src.removeListener('end', onend);
26252 src.removeListener('end', cleanup);
26253 src.removeListener('data', ondata);
26254
26255 cleanedUp = true;
26256
26257 // if the reader is waiting for a drain event from this
26258 // specific writer, then it would cause it to never start
26259 // flowing again.
26260 // So, if this is awaiting a drain, then we just call it now.
26261 // If we don't know, then assume that we are waiting for one.
26262 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
26263 }
26264
26265 // If the user pushes more data while we're writing to dest then we'll end up
26266 // in ondata again. However, we only want to increase awaitDrain once because
26267 // dest will only emit one 'drain' event for the multiple writes.
26268 // => Introduce a guard on increasing awaitDrain.
26269 var increasedAwaitDrain = false;
26270 src.on('data', ondata);
26271 function ondata(chunk) {
26272 debug('ondata');
26273 increasedAwaitDrain = false;
26274 var ret = dest.write(chunk);
26275 if (false === ret && !increasedAwaitDrain) {
26276 // If the user unpiped during `dest.write()`, it is possible
26277 // to get stuck in a permanently paused state if that write
26278 // also returned false.
26279 // => Check whether `dest` is still a piping destination.
26280 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
26281 debug('false write response, pause', src._readableState.awaitDrain);
26282 src._readableState.awaitDrain++;
26283 increasedAwaitDrain = true;
26284 }
26285 src.pause();
26286 }
26287 }
26288
26289 // if the dest has an error, then stop piping into it.
26290 // however, don't suppress the throwing behavior for this.
26291 function onerror(er) {
26292 debug('onerror', er);
26293 unpipe();
26294 dest.removeListener('error', onerror);
26295 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
26296 }
26297
26298 // Make sure our error handler is attached before userland ones.
26299 prependListener(dest, 'error', onerror);
26300
26301 // Both close and finish should trigger unpipe, but only once.
26302 function onclose() {
26303 dest.removeListener('finish', onfinish);
26304 unpipe();
26305 }
26306 dest.once('close', onclose);
26307 function onfinish() {
26308 debug('onfinish');
26309 dest.removeListener('close', onclose);
26310 unpipe();
26311 }
26312 dest.once('finish', onfinish);
26313
26314 function unpipe() {
26315 debug('unpipe');
26316 src.unpipe(dest);
26317 }
26318
26319 // tell the dest that it's being piped to
26320 dest.emit('pipe', src);
26321
26322 // start the flow if it hasn't been started already.
26323 if (!state.flowing) {
26324 debug('pipe resume');
26325 src.resume();
26326 }
26327
26328 return dest;
26329 };
26330
26331 function pipeOnDrain(src) {
26332 return function () {
26333 var state = src._readableState;
26334 debug('pipeOnDrain', state.awaitDrain);
26335 if (state.awaitDrain) state.awaitDrain--;
26336 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
26337 state.flowing = true;
26338 flow(src);
26339 }
26340 };
26341 }
26342
26343 Readable.prototype.unpipe = function (dest) {
26344 var state = this._readableState;
26345
26346 // if we're not piping anywhere, then do nothing.
26347 if (state.pipesCount === 0) return this;
26348
26349 // just one destination. most common case.
26350 if (state.pipesCount === 1) {
26351 // passed in one, but it's not the right one.
26352 if (dest && dest !== state.pipes) return this;
26353
26354 if (!dest) dest = state.pipes;
26355
26356 // got a match.
26357 state.pipes = null;
26358 state.pipesCount = 0;
26359 state.flowing = false;
26360 if (dest) dest.emit('unpipe', this);
26361 return this;
26362 }
26363
26364 // slow case. multiple pipe destinations.
26365
26366 if (!dest) {
26367 // remove all.
26368 var dests = state.pipes;
26369 var len = state.pipesCount;
26370 state.pipes = null;
26371 state.pipesCount = 0;
26372 state.flowing = false;
26373
26374 for (var i = 0; i < len; i++) {
26375 dests[i].emit('unpipe', this);
26376 }return this;
26377 }
26378
26379 // try to find the right one.
26380 var index = indexOf(state.pipes, dest);
26381 if (index === -1) return this;
26382
26383 state.pipes.splice(index, 1);
26384 state.pipesCount -= 1;
26385 if (state.pipesCount === 1) state.pipes = state.pipes[0];
26386
26387 dest.emit('unpipe', this);
26388
26389 return this;
26390 };
26391
26392 // set up data events if they are asked for
26393 // Ensure readable listeners eventually get something
26394 Readable.prototype.on = function (ev, fn) {
26395 var res = Stream.prototype.on.call(this, ev, fn);
26396
26397 if (ev === 'data') {
26398 // Start flowing on next tick if stream isn't explicitly paused
26399 if (this._readableState.flowing !== false) this.resume();
26400 } else if (ev === 'readable') {
26401 var state = this._readableState;
26402 if (!state.endEmitted && !state.readableListening) {
26403 state.readableListening = state.needReadable = true;
26404 state.emittedReadable = false;
26405 if (!state.reading) {
26406 processNextTick(nReadingNextTick, this);
26407 } else if (state.length) {
26408 emitReadable(this, state);
26409 }
26410 }
26411 }
26412
26413 return res;
26414 };
26415 Readable.prototype.addListener = Readable.prototype.on;
26416
26417 function nReadingNextTick(self) {
26418 debug('readable nexttick read 0');
26419 self.read(0);
26420 }
26421
26422 // pause() and resume() are remnants of the legacy readable stream API
26423 // If the user uses them, then switch into old mode.
26424 Readable.prototype.resume = function () {
26425 var state = this._readableState;
26426 if (!state.flowing) {
26427 debug('resume');
26428 state.flowing = true;
26429 resume(this, state);
26430 }
26431 return this;
26432 };
26433
26434 function resume(stream, state) {
26435 if (!state.resumeScheduled) {
26436 state.resumeScheduled = true;
26437 processNextTick(resume_, stream, state);
26438 }
26439 }
26440
26441 function resume_(stream, state) {
26442 if (!state.reading) {
26443 debug('resume read 0');
26444 stream.read(0);
26445 }
26446
26447 state.resumeScheduled = false;
26448 state.awaitDrain = 0;
26449 stream.emit('resume');
26450 flow(stream);
26451 if (state.flowing && !state.reading) stream.read(0);
26452 }
26453
26454 Readable.prototype.pause = function () {
26455 debug('call pause flowing=%j', this._readableState.flowing);
26456 if (false !== this._readableState.flowing) {
26457 debug('pause');
26458 this._readableState.flowing = false;
26459 this.emit('pause');
26460 }
26461 return this;
26462 };
26463
26464 function flow(stream) {
26465 var state = stream._readableState;
26466 debug('flow', state.flowing);
26467 while (state.flowing && stream.read() !== null) {}
26468 }
26469
26470 // wrap an old-style stream as the async data source.
26471 // This is *not* part of the readable stream interface.
26472 // It is an ugly unfortunate mess of history.
26473 Readable.prototype.wrap = function (stream) {
26474 var state = this._readableState;
26475 var paused = false;
26476
26477 var self = this;
26478 stream.on('end', function () {
26479 debug('wrapped end');
26480 if (state.decoder && !state.ended) {
26481 var chunk = state.decoder.end();
26482 if (chunk && chunk.length) self.push(chunk);
26483 }
26484
26485 self.push(null);
26486 });
26487
26488 stream.on('data', function (chunk) {
26489 debug('wrapped data');
26490 if (state.decoder) chunk = state.decoder.write(chunk);
26491
26492 // don't skip over falsy values in objectMode
26493 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
26494
26495 var ret = self.push(chunk);
26496 if (!ret) {
26497 paused = true;
26498 stream.pause();
26499 }
26500 });
26501
26502 // proxy all the other methods.
26503 // important when wrapping filters and duplexes.
26504 for (var i in stream) {
26505 if (this[i] === undefined && typeof stream[i] === 'function') {
26506 this[i] = function (method) {
26507 return function () {
26508 return stream[method].apply(stream, arguments);
26509 };
26510 }(i);
26511 }
26512 }
26513
26514 // proxy certain important events.
26515 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
26516 forEach(events, function (ev) {
26517 stream.on(ev, self.emit.bind(self, ev));
26518 });
26519
26520 // when we try to consume some more bytes, simply unpause the
26521 // underlying stream.
26522 self._read = function (n) {
26523 debug('wrapped _read', n);
26524 if (paused) {
26525 paused = false;
26526 stream.resume();
26527 }
26528 };
26529
26530 return self;
26531 };
26532
26533 // exposed for testing purposes only.
26534 Readable._fromList = fromList;
26535
26536 // Pluck off n bytes from an array of buffers.
26537 // Length is the combined lengths of all the buffers in the list.
26538 // This function is designed to be inlinable, so please take care when making
26539 // changes to the function body.
26540 function fromList(n, state) {
26541 // nothing buffered
26542 if (state.length === 0) return null;
26543
26544 var ret;
26545 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
26546 // read it all, truncate the list
26547 if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
26548 state.buffer.clear();
26549 } else {
26550 // read part of list
26551 ret = fromListPartial(n, state.buffer, state.decoder);
26552 }
26553
26554 return ret;
26555 }
26556
26557 // Extracts only enough buffered data to satisfy the amount requested.
26558 // This function is designed to be inlinable, so please take care when making
26559 // changes to the function body.
26560 function fromListPartial(n, list, hasStrings) {
26561 var ret;
26562 if (n < list.head.data.length) {
26563 // slice is the same for buffers and strings
26564 ret = list.head.data.slice(0, n);
26565 list.head.data = list.head.data.slice(n);
26566 } else if (n === list.head.data.length) {
26567 // first chunk is a perfect match
26568 ret = list.shift();
26569 } else {
26570 // result spans more than one buffer
26571 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
26572 }
26573 return ret;
26574 }
26575
26576 // Copies a specified amount of characters from the list of buffered data
26577 // chunks.
26578 // This function is designed to be inlinable, so please take care when making
26579 // changes to the function body.
26580 function copyFromBufferString(n, list) {
26581 var p = list.head;
26582 var c = 1;
26583 var ret = p.data;
26584 n -= ret.length;
26585 while (p = p.next) {
26586 var str = p.data;
26587 var nb = n > str.length ? str.length : n;
26588 if (nb === str.length) ret += str;else ret += str.slice(0, n);
26589 n -= nb;
26590 if (n === 0) {
26591 if (nb === str.length) {
26592 ++c;
26593 if (p.next) list.head = p.next;else list.head = list.tail = null;
26594 } else {
26595 list.head = p;
26596 p.data = str.slice(nb);
26597 }
26598 break;
26599 }
26600 ++c;
26601 }
26602 list.length -= c;
26603 return ret;
26604 }
26605
26606 // Copies a specified amount of bytes from the list of buffered data chunks.
26607 // This function is designed to be inlinable, so please take care when making
26608 // changes to the function body.
26609 function copyFromBuffer(n, list) {
26610 var ret = bufferShim.allocUnsafe(n);
26611 var p = list.head;
26612 var c = 1;
26613 p.data.copy(ret);
26614 n -= p.data.length;
26615 while (p = p.next) {
26616 var buf = p.data;
26617 var nb = n > buf.length ? buf.length : n;
26618 buf.copy(ret, ret.length - n, 0, nb);
26619 n -= nb;
26620 if (n === 0) {
26621 if (nb === buf.length) {
26622 ++c;
26623 if (p.next) list.head = p.next;else list.head = list.tail = null;
26624 } else {
26625 list.head = p;
26626 p.data = buf.slice(nb);
26627 }
26628 break;
26629 }
26630 ++c;
26631 }
26632 list.length -= c;
26633 return ret;
26634 }
26635
26636 function endReadable(stream) {
26637 var state = stream._readableState;
26638
26639 // If we get here before consuming all the bytes, then that is a
26640 // bug in node. Should never happen.
26641 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
26642
26643 if (!state.endEmitted) {
26644 state.ended = true;
26645 processNextTick(endReadableNT, state, stream);
26646 }
26647 }
26648
26649 function endReadableNT(state, stream) {
26650 // Check that we didn't get one last unshift.
26651 if (!state.endEmitted && state.length === 0) {
26652 state.endEmitted = true;
26653 stream.readable = false;
26654 stream.emit('end');
26655 }
26656 }
26657
26658 function forEach(xs, f) {
26659 for (var i = 0, l = xs.length; i < l; i++) {
26660 f(xs[i], i);
26661 }
26662 }
26663
26664 function indexOf(xs, x) {
26665 for (var i = 0, l = xs.length; i < l; i++) {
26666 if (xs[i] === x) return i;
26667 }
26668 return -1;
26669 }
26670 }).call(this,require('_process'))
26671 },{"./_stream_duplex":15,"./internal/streams/BufferList":20,"_process":13,"buffer":5,"buffer-shims":4,"core-util-is":6,"events":7,"inherits":9,"isarray":11,"process-nextick-args":12,"string_decoder/":26,"util":3}],18:[function(require,module,exports){
26672 // a transform stream is a readable/writable stream where you do
26673 // something with the data. Sometimes it's called a "filter",
26674 // but that's not a great name for it, since that implies a thing where
26675 // some bits pass through, and others are simply ignored. (That would
26676 // be a valid example of a transform, of course.)
26677 //
26678 // While the output is causally related to the input, it's not a
26679 // necessarily symmetric or synchronous transformation. For example,
26680 // a zlib stream might take multiple plain-text writes(), and then
26681 // emit a single compressed chunk some time in the future.
26682 //
26683 // Here's how this works:
26684 //
26685 // The Transform stream has all the aspects of the readable and writable
26686 // stream classes. When you write(chunk), that calls _write(chunk,cb)
26687 // internally, and returns false if there's a lot of pending writes
26688 // buffered up. When you call read(), that calls _read(n) until
26689 // there's enough pending readable data buffered up.
26690 //
26691 // In a transform stream, the written data is placed in a buffer. When
26692 // _read(n) is called, it transforms the queued up data, calling the
26693 // buffered _write cb's as it consumes chunks. If consuming a single
26694 // written chunk would result in multiple output chunks, then the first
26695 // outputted bit calls the readcb, and subsequent chunks just go into
26696 // the read buffer, and will cause it to emit 'readable' if necessary.
26697 //
26698 // This way, back-pressure is actually determined by the reading side,
26699 // since _read has to be called to start processing a new chunk. However,
26700 // a pathological inflate type of transform can cause excessive buffering
26701 // here. For example, imagine a stream where every byte of input is
26702 // interpreted as an integer from 0-255, and then results in that many
26703 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
26704 // 1kb of data being output. In this case, you could write a very small
26705 // amount of input, and end up with a very large amount of output. In
26706 // such a pathological inflating mechanism, there'd be no way to tell
26707 // the system to stop doing the transform. A single 4MB write could
26708 // cause the system to run out of memory.
26709 //
26710 // However, even in such a pathological case, only a single written chunk
26711 // would be consumed, and then the rest would wait (un-transformed) until
26712 // the results of the previous transformed chunk were consumed.
26713
26714 'use strict';
26715
26716 module.exports = Transform;
26717
26718 var Duplex = require('./_stream_duplex');
26719
26720 /*<replacement>*/
26721 var util = require('core-util-is');
26722 util.inherits = require('inherits');
26723 /*</replacement>*/
26724
26725 util.inherits(Transform, Duplex);
26726
26727 function TransformState(stream) {
26728 this.afterTransform = function (er, data) {
26729 return afterTransform(stream, er, data);
26730 };
26731
26732 this.needTransform = false;
26733 this.transforming = false;
26734 this.writecb = null;
26735 this.writechunk = null;
26736 this.writeencoding = null;
26737 }
26738
26739 function afterTransform(stream, er, data) {
26740 var ts = stream._transformState;
26741 ts.transforming = false;
26742
26743 var cb = ts.writecb;
26744
26745 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
26746
26747 ts.writechunk = null;
26748 ts.writecb = null;
26749
26750 if (data !== null && data !== undefined) stream.push(data);
26751
26752 cb(er);
26753
26754 var rs = stream._readableState;
26755 rs.reading = false;
26756 if (rs.needReadable || rs.length < rs.highWaterMark) {
26757 stream._read(rs.highWaterMark);
26758 }
26759 }
26760
26761 function Transform(options) {
26762 if (!(this instanceof Transform)) return new Transform(options);
26763
26764 Duplex.call(this, options);
26765
26766 this._transformState = new TransformState(this);
26767
26768 var stream = this;
26769
26770 // start out asking for a readable event once data is transformed.
26771 this._readableState.needReadable = true;
26772
26773 // we have implemented the _read method, and done the other things
26774 // that Readable wants before the first _read call, so unset the
26775 // sync guard flag.
26776 this._readableState.sync = false;
26777
26778 if (options) {
26779 if (typeof options.transform === 'function') this._transform = options.transform;
26780
26781 if (typeof options.flush === 'function') this._flush = options.flush;
26782 }
26783
26784 // When the writable side finishes, then flush out anything remaining.
26785 this.once('prefinish', function () {
26786 if (typeof this._flush === 'function') this._flush(function (er, data) {
26787 done(stream, er, data);
26788 });else done(stream);
26789 });
26790 }
26791
26792 Transform.prototype.push = function (chunk, encoding) {
26793 this._transformState.needTransform = false;
26794 return Duplex.prototype.push.call(this, chunk, encoding);
26795 };
26796
26797 // This is the part where you do stuff!
26798 // override this function in implementation classes.
26799 // 'chunk' is an input chunk.
26800 //
26801 // Call `push(newChunk)` to pass along transformed output
26802 // to the readable side. You may call 'push' zero or more times.
26803 //
26804 // Call `cb(err)` when you are done with this chunk. If you pass
26805 // an error, then that'll put the hurt on the whole operation. If you
26806 // never call cb(), then you'll never get another chunk.
26807 Transform.prototype._transform = function (chunk, encoding, cb) {
26808 throw new Error('_transform() is not implemented');
26809 };
26810
26811 Transform.prototype._write = function (chunk, encoding, cb) {
26812 var ts = this._transformState;
26813 ts.writecb = cb;
26814 ts.writechunk = chunk;
26815 ts.writeencoding = encoding;
26816 if (!ts.transforming) {
26817 var rs = this._readableState;
26818 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
26819 }
26820 };
26821
26822 // Doesn't matter what the args are here.
26823 // _transform does all the work.
26824 // That we got here means that the readable side wants more data.
26825 Transform.prototype._read = function (n) {
26826 var ts = this._transformState;
26827
26828 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
26829 ts.transforming = true;
26830 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
26831 } else {
26832 // mark that we need a transform, so that any data that comes in
26833 // will get processed, now that we've asked for it.
26834 ts.needTransform = true;
26835 }
26836 };
26837
26838 function done(stream, er, data) {
26839 if (er) return stream.emit('error', er);
26840
26841 if (data !== null && data !== undefined) stream.push(data);
26842
26843 // if there's nothing in the write buffer, then that means
26844 // that nothing more will ever be provided
26845 var ws = stream._writableState;
26846 var ts = stream._transformState;
26847
26848 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
26849
26850 if (ts.transforming) throw new Error('Calling transform done when still transforming');
26851
26852 return stream.push(null);
26853 }
26854 },{"./_stream_duplex":15,"core-util-is":6,"inherits":9}],19:[function(require,module,exports){
26855 (function (process){
26856 // A bit simpler than readable streams.
26857 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
26858 // the drain event emission and buffering.
26859
26860 'use strict';
26861
26862 module.exports = Writable;
26863
26864 /*<replacement>*/
26865 var processNextTick = require('process-nextick-args');
26866 /*</replacement>*/
26867
26868 /*<replacement>*/
26869 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
26870 /*</replacement>*/
26871
26872 /*<replacement>*/
26873 var Duplex;
26874 /*</replacement>*/
26875
26876 Writable.WritableState = WritableState;
26877
26878 /*<replacement>*/
26879 var util = require('core-util-is');
26880 util.inherits = require('inherits');
26881 /*</replacement>*/
26882
26883 /*<replacement>*/
26884 var internalUtil = {
26885 deprecate: require('util-deprecate')
26886 };
26887 /*</replacement>*/
26888
26889 /*<replacement>*/
26890 var Stream;
26891 (function () {
26892 try {
26893 Stream = require('st' + 'ream');
26894 } catch (_) {} finally {
26895 if (!Stream) Stream = require('events').EventEmitter;
26896 }
26897 })();
26898 /*</replacement>*/
26899
26900 var Buffer = require('buffer').Buffer;
26901 /*<replacement>*/
26902 var bufferShim = require('buffer-shims');
26903 /*</replacement>*/
26904
26905 util.inherits(Writable, Stream);
26906
26907 function nop() {}
26908
26909 function WriteReq(chunk, encoding, cb) {
26910 this.chunk = chunk;
26911 this.encoding = encoding;
26912 this.callback = cb;
26913 this.next = null;
26914 }
26915
26916 function WritableState(options, stream) {
26917 Duplex = Duplex || require('./_stream_duplex');
26918
26919 options = options || {};
26920
26921 // object stream flag to indicate whether or not this stream
26922 // contains buffers or objects.
26923 this.objectMode = !!options.objectMode;
26924
26925 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
26926
26927 // the point at which write() starts returning false
26928 // Note: 0 is a valid value, means that we always return false if
26929 // the entire buffer is not flushed immediately on write()
26930 var hwm = options.highWaterMark;
26931 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
26932 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
26933
26934 // cast to ints.
26935 this.highWaterMark = ~ ~this.highWaterMark;
26936
26937 // drain event flag.
26938 this.needDrain = false;
26939 // at the start of calling end()
26940 this.ending = false;
26941 // when end() has been called, and returned
26942 this.ended = false;
26943 // when 'finish' is emitted
26944 this.finished = false;
26945
26946 // should we decode strings into buffers before passing to _write?
26947 // this is here so that some node-core streams can optimize string
26948 // handling at a lower level.
26949 var noDecode = options.decodeStrings === false;
26950 this.decodeStrings = !noDecode;
26951
26952 // Crypto is kind of old and crusty. Historically, its default string
26953 // encoding is 'binary' so we have to make this configurable.
26954 // Everything else in the universe uses 'utf8', though.
26955 this.defaultEncoding = options.defaultEncoding || 'utf8';
26956
26957 // not an actual buffer we keep track of, but a measurement
26958 // of how much we're waiting to get pushed to some underlying
26959 // socket or file.
26960 this.length = 0;
26961
26962 // a flag to see when we're in the middle of a write.
26963 this.writing = false;
26964
26965 // when true all writes will be buffered until .uncork() call
26966 this.corked = 0;
26967
26968 // a flag to be able to tell if the onwrite cb is called immediately,
26969 // or on a later tick. We set this to true at first, because any
26970 // actions that shouldn't happen until "later" should generally also
26971 // not happen before the first write call.
26972 this.sync = true;
26973
26974 // a flag to know if we're processing previously buffered items, which
26975 // may call the _write() callback in the same tick, so that we don't
26976 // end up in an overlapped onwrite situation.
26977 this.bufferProcessing = false;
26978
26979 // the callback that's passed to _write(chunk,cb)
26980 this.onwrite = function (er) {
26981 onwrite(stream, er);
26982 };
26983
26984 // the callback that the user supplies to write(chunk,encoding,cb)
26985 this.writecb = null;
26986
26987 // the amount that is being written when _write is called.
26988 this.writelen = 0;
26989
26990 this.bufferedRequest = null;
26991 this.lastBufferedRequest = null;
26992
26993 // number of pending user-supplied write callbacks
26994 // this must be 0 before 'finish' can be emitted
26995 this.pendingcb = 0;
26996
26997 // emit prefinish if the only thing we're waiting for is _write cbs
26998 // This is relevant for synchronous Transform streams
26999 this.prefinished = false;
27000
27001 // True if the error was already emitted and should not be thrown again
27002 this.errorEmitted = false;
27003
27004 // count buffered requests
27005 this.bufferedRequestCount = 0;
27006
27007 // allocate the first CorkedRequest, there is always
27008 // one allocated and free to use, and we maintain at most two
27009 this.corkedRequestsFree = new CorkedRequest(this);
27010 }
27011
27012 WritableState.prototype.getBuffer = function getBuffer() {
27013 var current = this.bufferedRequest;
27014 var out = [];
27015 while (current) {
27016 out.push(current);
27017 current = current.next;
27018 }
27019 return out;
27020 };
27021
27022 (function () {
27023 try {
27024 Object.defineProperty(WritableState.prototype, 'buffer', {
27025 get: internalUtil.deprecate(function () {
27026 return this.getBuffer();
27027 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
27028 });
27029 } catch (_) {}
27030 })();
27031
27032 // Test _writableState for inheritance to account for Duplex streams,
27033 // whose prototype chain only points to Readable.
27034 var realHasInstance;
27035 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
27036 realHasInstance = Function.prototype[Symbol.hasInstance];
27037 Object.defineProperty(Writable, Symbol.hasInstance, {
27038 value: function (object) {
27039 if (realHasInstance.call(this, object)) return true;
27040
27041 return object && object._writableState instanceof WritableState;
27042 }
27043 });
27044 } else {
27045 realHasInstance = function (object) {
27046 return object instanceof this;
27047 };
27048 }
27049
27050 function Writable(options) {
27051 Duplex = Duplex || require('./_stream_duplex');
27052
27053 // Writable ctor is applied to Duplexes, too.
27054 // `realHasInstance` is necessary because using plain `instanceof`
27055 // would return false, as no `_writableState` property is attached.
27056
27057 // Trying to use the custom `instanceof` for Writable here will also break the
27058 // Node.js LazyTransform implementation, which has a non-trivial getter for
27059 // `_writableState` that would lead to infinite recursion.
27060 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
27061 return new Writable(options);
27062 }
27063
27064 this._writableState = new WritableState(options, this);
27065
27066 // legacy.
27067 this.writable = true;
27068
27069 if (options) {
27070 if (typeof options.write === 'function') this._write = options.write;
27071
27072 if (typeof options.writev === 'function') this._writev = options.writev;
27073 }
27074
27075 Stream.call(this);
27076 }
27077
27078 // Otherwise people can pipe Writable streams, which is just wrong.
27079 Writable.prototype.pipe = function () {
27080 this.emit('error', new Error('Cannot pipe, not readable'));
27081 };
27082
27083 function writeAfterEnd(stream, cb) {
27084 var er = new Error('write after end');
27085 // TODO: defer error events consistently everywhere, not just the cb
27086 stream.emit('error', er);
27087 processNextTick(cb, er);
27088 }
27089
27090 // If we get something that is not a buffer, string, null, or undefined,
27091 // and we're not in objectMode, then that's an error.
27092 // Otherwise stream chunks are all considered to be of length=1, and the
27093 // watermarks determine how many objects to keep in the buffer, rather than
27094 // how many bytes or characters.
27095 function validChunk(stream, state, chunk, cb) {
27096 var valid = true;
27097 var er = false;
27098 // Always throw error if a null is written
27099 // if we are not in object mode then throw
27100 // if it is not a buffer, string, or undefined.
27101 if (chunk === null) {
27102 er = new TypeError('May not write null values to stream');
27103 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
27104 er = new TypeError('Invalid non-string/buffer chunk');
27105 }
27106 if (er) {
27107 stream.emit('error', er);
27108 processNextTick(cb, er);
27109 valid = false;
27110 }
27111 return valid;
27112 }
27113
27114 Writable.prototype.write = function (chunk, encoding, cb) {
27115 var state = this._writableState;
27116 var ret = false;
27117
27118 if (typeof encoding === 'function') {
27119 cb = encoding;
27120 encoding = null;
27121 }
27122
27123 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
27124
27125 if (typeof cb !== 'function') cb = nop;
27126
27127 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
27128 state.pendingcb++;
27129 ret = writeOrBuffer(this, state, chunk, encoding, cb);
27130 }
27131
27132 return ret;
27133 };
27134
27135 Writable.prototype.cork = function () {
27136 var state = this._writableState;
27137
27138 state.corked++;
27139 };
27140
27141 Writable.prototype.uncork = function () {
27142 var state = this._writableState;
27143
27144 if (state.corked) {
27145 state.corked--;
27146
27147 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
27148 }
27149 };
27150
27151 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
27152 // node::ParseEncoding() requires lower case.
27153 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
27154 if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
27155 this._writableState.defaultEncoding = encoding;
27156 return this;
27157 };
27158
27159 function decodeChunk(state, chunk, encoding) {
27160 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
27161 chunk = bufferShim.from(chunk, encoding);
27162 }
27163 return chunk;
27164 }
27165
27166 // if we're already writing something, then just put this
27167 // in the queue, and wait our turn. Otherwise, call _write
27168 // If we return false, then we need a drain event, so set that flag.
27169 function writeOrBuffer(stream, state, chunk, encoding, cb) {
27170 chunk = decodeChunk(state, chunk, encoding);
27171
27172 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
27173 var len = state.objectMode ? 1 : chunk.length;
27174
27175 state.length += len;
27176
27177 var ret = state.length < state.highWaterMark;
27178 // we must ensure that previous needDrain will not be reset to false.
27179 if (!ret) state.needDrain = true;
27180
27181 if (state.writing || state.corked) {
27182 var last = state.lastBufferedRequest;
27183 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
27184 if (last) {
27185 last.next = state.lastBufferedRequest;
27186 } else {
27187 state.bufferedRequest = state.lastBufferedRequest;
27188 }
27189 state.bufferedRequestCount += 1;
27190 } else {
27191 doWrite(stream, state, false, len, chunk, encoding, cb);
27192 }
27193
27194 return ret;
27195 }
27196
27197 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
27198 state.writelen = len;
27199 state.writecb = cb;
27200 state.writing = true;
27201 state.sync = true;
27202 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
27203 state.sync = false;
27204 }
27205
27206 function onwriteError(stream, state, sync, er, cb) {
27207 --state.pendingcb;
27208 if (sync) processNextTick(cb, er);else cb(er);
27209
27210 stream._writableState.errorEmitted = true;
27211 stream.emit('error', er);
27212 }
27213
27214 function onwriteStateUpdate(state) {
27215 state.writing = false;
27216 state.writecb = null;
27217 state.length -= state.writelen;
27218 state.writelen = 0;
27219 }
27220
27221 function onwrite(stream, er) {
27222 var state = stream._writableState;
27223 var sync = state.sync;
27224 var cb = state.writecb;
27225
27226 onwriteStateUpdate(state);
27227
27228 if (er) onwriteError(stream, state, sync, er, cb);else {
27229 // Check if we're actually ready to finish, but don't emit yet
27230 var finished = needFinish(state);
27231
27232 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
27233 clearBuffer(stream, state);
27234 }
27235
27236 if (sync) {
27237 /*<replacement>*/
27238 asyncWrite(afterWrite, stream, state, finished, cb);
27239 /*</replacement>*/
27240 } else {
27241 afterWrite(stream, state, finished, cb);
27242 }
27243 }
27244 }
27245
27246 function afterWrite(stream, state, finished, cb) {
27247 if (!finished) onwriteDrain(stream, state);
27248 state.pendingcb--;
27249 cb();
27250 finishMaybe(stream, state);
27251 }
27252
27253 // Must force callback to be called on nextTick, so that we don't
27254 // emit 'drain' before the write() consumer gets the 'false' return
27255 // value, and has a chance to attach a 'drain' listener.
27256 function onwriteDrain(stream, state) {
27257 if (state.length === 0 && state.needDrain) {
27258 state.needDrain = false;
27259 stream.emit('drain');
27260 }
27261 }
27262
27263 // if there's something in the buffer waiting, then process it
27264 function clearBuffer(stream, state) {
27265 state.bufferProcessing = true;
27266 var entry = state.bufferedRequest;
27267
27268 if (stream._writev && entry && entry.next) {
27269 // Fast case, write everything using _writev()
27270 var l = state.bufferedRequestCount;
27271 var buffer = new Array(l);
27272 var holder = state.corkedRequestsFree;
27273 holder.entry = entry;
27274
27275 var count = 0;
27276 while (entry) {
27277 buffer[count] = entry;
27278 entry = entry.next;
27279 count += 1;
27280 }
27281
27282 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
27283
27284 // doWrite is almost always async, defer these to save a bit of time
27285 // as the hot path ends with doWrite
27286 state.pendingcb++;
27287 state.lastBufferedRequest = null;
27288 if (holder.next) {
27289 state.corkedRequestsFree = holder.next;
27290 holder.next = null;
27291 } else {
27292 state.corkedRequestsFree = new CorkedRequest(state);
27293 }
27294 } else {
27295 // Slow case, write chunks one-by-one
27296 while (entry) {
27297 var chunk = entry.chunk;
27298 var encoding = entry.encoding;
27299 var cb = entry.callback;
27300 var len = state.objectMode ? 1 : chunk.length;
27301
27302 doWrite(stream, state, false, len, chunk, encoding, cb);
27303 entry = entry.next;
27304 // if we didn't call the onwrite immediately, then
27305 // it means that we need to wait until it does.
27306 // also, that means that the chunk and cb are currently
27307 // being processed, so move the buffer counter past them.
27308 if (state.writing) {
27309 break;
27310 }
27311 }
27312
27313 if (entry === null) state.lastBufferedRequest = null;
27314 }
27315
27316 state.bufferedRequestCount = 0;
27317 state.bufferedRequest = entry;
27318 state.bufferProcessing = false;
27319 }
27320
27321 Writable.prototype._write = function (chunk, encoding, cb) {
27322 cb(new Error('_write() is not implemented'));
27323 };
27324
27325 Writable.prototype._writev = null;
27326
27327 Writable.prototype.end = function (chunk, encoding, cb) {
27328 var state = this._writableState;
27329
27330 if (typeof chunk === 'function') {
27331 cb = chunk;
27332 chunk = null;
27333 encoding = null;
27334 } else if (typeof encoding === 'function') {
27335 cb = encoding;
27336 encoding = null;
27337 }
27338
27339 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
27340
27341 // .end() fully uncorks
27342 if (state.corked) {
27343 state.corked = 1;
27344 this.uncork();
27345 }
27346
27347 // ignore unnecessary end() calls.
27348 if (!state.ending && !state.finished) endWritable(this, state, cb);
27349 };
27350
27351 function needFinish(state) {
27352 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
27353 }
27354
27355 function prefinish(stream, state) {
27356 if (!state.prefinished) {
27357 state.prefinished = true;
27358 stream.emit('prefinish');
27359 }
27360 }
27361
27362 function finishMaybe(stream, state) {
27363 var need = needFinish(state);
27364 if (need) {
27365 if (state.pendingcb === 0) {
27366 prefinish(stream, state);
27367 state.finished = true;
27368 stream.emit('finish');
27369 } else {
27370 prefinish(stream, state);
27371 }
27372 }
27373 return need;
27374 }
27375
27376 function endWritable(stream, state, cb) {
27377 state.ending = true;
27378 finishMaybe(stream, state);
27379 if (cb) {
27380 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
27381 }
27382 state.ended = true;
27383 stream.writable = false;
27384 }
27385
27386 // It seems a linked list but it is not
27387 // there will be only 2 of these for each stream
27388 function CorkedRequest(state) {
27389 var _this = this;
27390
27391 this.next = null;
27392 this.entry = null;
27393
27394 this.finish = function (err) {
27395 var entry = _this.entry;
27396 _this.entry = null;
27397 while (entry) {
27398 var cb = entry.callback;
27399 state.pendingcb--;
27400 cb(err);
27401 entry = entry.next;
27402 }
27403 if (state.corkedRequestsFree) {
27404 state.corkedRequestsFree.next = _this;
27405 } else {
27406 state.corkedRequestsFree = _this;
27407 }
27408 };
27409 }
27410 }).call(this,require('_process'))
27411 },{"./_stream_duplex":15,"_process":13,"buffer":5,"buffer-shims":4,"core-util-is":6,"events":7,"inherits":9,"process-nextick-args":12,"util-deprecate":27}],20:[function(require,module,exports){
27412 'use strict';
27413
27414 var Buffer = require('buffer').Buffer;
27415 /*<replacement>*/
27416 var bufferShim = require('buffer-shims');
27417 /*</replacement>*/
27418
27419 module.exports = BufferList;
27420
27421 function BufferList() {
27422 this.head = null;
27423 this.tail = null;
27424 this.length = 0;
27425 }
27426
27427 BufferList.prototype.push = function (v) {
27428 var entry = { data: v, next: null };
27429 if (this.length > 0) this.tail.next = entry;else this.head = entry;
27430 this.tail = entry;
27431 ++this.length;
27432 };
27433
27434 BufferList.prototype.unshift = function (v) {
27435 var entry = { data: v, next: this.head };
27436 if (this.length === 0) this.tail = entry;
27437 this.head = entry;
27438 ++this.length;
27439 };
27440
27441 BufferList.prototype.shift = function () {
27442 if (this.length === 0) return;
27443 var ret = this.head.data;
27444 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
27445 --this.length;
27446 return ret;
27447 };
27448
27449 BufferList.prototype.clear = function () {
27450 this.head = this.tail = null;
27451 this.length = 0;
27452 };
27453
27454 BufferList.prototype.join = function (s) {
27455 if (this.length === 0) return '';
27456 var p = this.head;
27457 var ret = '' + p.data;
27458 while (p = p.next) {
27459 ret += s + p.data;
27460 }return ret;
27461 };
27462
27463 BufferList.prototype.concat = function (n) {
27464 if (this.length === 0) return bufferShim.alloc(0);
27465 if (this.length === 1) return this.head.data;
27466 var ret = bufferShim.allocUnsafe(n >>> 0);
27467 var p = this.head;
27468 var i = 0;
27469 while (p) {
27470 p.data.copy(ret, i);
27471 i += p.data.length;
27472 p = p.next;
27473 }
27474 return ret;
27475 };
27476 },{"buffer":5,"buffer-shims":4}],21:[function(require,module,exports){
27477 module.exports = require("./lib/_stream_passthrough.js")
27478
27479 },{"./lib/_stream_passthrough.js":16}],22:[function(require,module,exports){
27480 (function (process){
27481 var Stream = (function (){
27482 try {
27483 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
27484 } catch(_){}
27485 }());
27486 exports = module.exports = require('./lib/_stream_readable.js');
27487 exports.Stream = Stream || exports;
27488 exports.Readable = exports;
27489 exports.Writable = require('./lib/_stream_writable.js');
27490 exports.Duplex = require('./lib/_stream_duplex.js');
27491 exports.Transform = require('./lib/_stream_transform.js');
27492 exports.PassThrough = require('./lib/_stream_passthrough.js');
27493
27494 if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
27495 module.exports = Stream;
27496 }
27497
27498 }).call(this,require('_process'))
27499 },{"./lib/_stream_duplex.js":15,"./lib/_stream_passthrough.js":16,"./lib/_stream_readable.js":17,"./lib/_stream_transform.js":18,"./lib/_stream_writable.js":19,"_process":13}],23:[function(require,module,exports){
27500 module.exports = require("./lib/_stream_transform.js")
27501
27502 },{"./lib/_stream_transform.js":18}],24:[function(require,module,exports){
27503 module.exports = require("./lib/_stream_writable.js")
27504
27505 },{"./lib/_stream_writable.js":19}],25:[function(require,module,exports){
27506 // Copyright Joyent, Inc. and other Node contributors.
27507 //
27508 // Permission is hereby granted, free of charge, to any person obtaining a
27509 // copy of this software and associated documentation files (the
27510 // "Software"), to deal in the Software without restriction, including
27511 // without limitation the rights to use, copy, modify, merge, publish,
27512 // distribute, sublicense, and/or sell copies of the Software, and to permit
27513 // persons to whom the Software is furnished to do so, subject to the
27514 // following conditions:
27515 //
27516 // The above copyright notice and this permission notice shall be included
27517 // in all copies or substantial portions of the Software.
27518 //
27519 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27520 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27521 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27522 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27523 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27524 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27525 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27526
27527 module.exports = Stream;
27528
27529 var EE = require('events').EventEmitter;
27530 var inherits = require('inherits');
27531
27532 inherits(Stream, EE);
27533 Stream.Readable = require('readable-stream/readable.js');
27534 Stream.Writable = require('readable-stream/writable.js');
27535 Stream.Duplex = require('readable-stream/duplex.js');
27536 Stream.Transform = require('readable-stream/transform.js');
27537 Stream.PassThrough = require('readable-stream/passthrough.js');
27538
27539 // Backwards-compat with node 0.4.x
27540 Stream.Stream = Stream;
27541
27542
27543
27544 // old-style streams. Note that the pipe method (the only relevant
27545 // part of this class) is overridden in the Readable class.
27546
27547 function Stream() {
27548 EE.call(this);
27549 }
27550
27551 Stream.prototype.pipe = function(dest, options) {
27552 var source = this;
27553
27554 function ondata(chunk) {
27555 if (dest.writable) {
27556 if (false === dest.write(chunk) && source.pause) {
27557 source.pause();
27558 }
27559 }
27560 }
27561
27562 source.on('data', ondata);
27563
27564 function ondrain() {
27565 if (source.readable && source.resume) {
27566 source.resume();
27567 }
27568 }
27569
27570 dest.on('drain', ondrain);
27571
27572 // If the 'end' option is not supplied, dest.end() will be called when
27573 // source gets the 'end' or 'close' events. Only dest.end() once.
27574 if (!dest._isStdio && (!options || options.end !== false)) {
27575 source.on('end', onend);
27576 source.on('close', onclose);
27577 }
27578
27579 var didOnEnd = false;
27580 function onend() {
27581 if (didOnEnd) return;
27582 didOnEnd = true;
27583
27584 dest.end();
27585 }
27586
27587
27588 function onclose() {
27589 if (didOnEnd) return;
27590 didOnEnd = true;
27591
27592 if (typeof dest.destroy === 'function') dest.destroy();
27593 }
27594
27595 // don't leave dangling pipes when there are errors.
27596 function onerror(er) {
27597 cleanup();
27598 if (EE.listenerCount(this, 'error') === 0) {
27599 throw er; // Unhandled stream error in pipe.
27600 }
27601 }
27602
27603 source.on('error', onerror);
27604 dest.on('error', onerror);
27605
27606 // remove all the event listeners that were added.
27607 function cleanup() {
27608 source.removeListener('data', ondata);
27609 dest.removeListener('drain', ondrain);
27610
27611 source.removeListener('end', onend);
27612 source.removeListener('close', onclose);
27613
27614 source.removeListener('error', onerror);
27615 dest.removeListener('error', onerror);
27616
27617 source.removeListener('end', cleanup);
27618 source.removeListener('close', cleanup);
27619
27620 dest.removeListener('close', cleanup);
27621 }
27622
27623 source.on('end', cleanup);
27624 source.on('close', cleanup);
27625
27626 dest.on('close', cleanup);
27627
27628 dest.emit('pipe', source);
27629
27630 // Allow for unix-like usage: A.pipe(B).pipe(C)
27631 return dest;
27632 };
27633
27634 },{"events":7,"inherits":9,"readable-stream/duplex.js":14,"readable-stream/passthrough.js":21,"readable-stream/readable.js":22,"readable-stream/transform.js":23,"readable-stream/writable.js":24}],26:[function(require,module,exports){
27635 // Copyright Joyent, Inc. and other Node contributors.
27636 //
27637 // Permission is hereby granted, free of charge, to any person obtaining a
27638 // copy of this software and associated documentation files (the
27639 // "Software"), to deal in the Software without restriction, including
27640 // without limitation the rights to use, copy, modify, merge, publish,
27641 // distribute, sublicense, and/or sell copies of the Software, and to permit
27642 // persons to whom the Software is furnished to do so, subject to the
27643 // following conditions:
27644 //
27645 // The above copyright notice and this permission notice shall be included
27646 // in all copies or substantial portions of the Software.
27647 //
27648 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27649 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27650 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27651 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27652 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27653 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27654 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27655
27656 var Buffer = require('buffer').Buffer;
27657
27658 var isBufferEncoding = Buffer.isEncoding
27659 || function(encoding) {
27660 switch (encoding && encoding.toLowerCase()) {
27661 case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;
27662 default: return false;
27663 }
27664 }
27665
27666
27667 function assertEncoding(encoding) {
27668 if (encoding && !isBufferEncoding(encoding)) {
27669 throw new Error('Unknown encoding: ' + encoding);
27670 }
27671 }
27672
27673 // StringDecoder provides an interface for efficiently splitting a series of
27674 // buffers into a series of JS strings without breaking apart multi-byte
27675 // characters. CESU-8 is handled as part of the UTF-8 encoding.
27676 //
27677 // @TODO Handling all encodings inside a single object makes it very difficult
27678 // to reason about this code, so it should be split up in the future.
27679 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
27680 // points as used by CESU-8.
27681 var StringDecoder = exports.StringDecoder = function(encoding) {
27682 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
27683 assertEncoding(encoding);
27684 switch (this.encoding) {
27685 case 'utf8':
27686 // CESU-8 represents each of Surrogate Pair by 3-bytes
27687 this.surrogateSize = 3;
27688 break;
27689 case 'ucs2':
27690 case 'utf16le':
27691 // UTF-16 represents each of Surrogate Pair by 2-bytes
27692 this.surrogateSize = 2;
27693 this.detectIncompleteChar = utf16DetectIncompleteChar;
27694 break;
27695 case 'base64':
27696 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
27697 this.surrogateSize = 3;
27698 this.detectIncompleteChar = base64DetectIncompleteChar;
27699 break;
27700 default:
27701 this.write = passThroughWrite;
27702 return;
27703 }
27704
27705 // Enough space to store all bytes of a single character. UTF-8 needs 4
27706 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
27707 this.charBuffer = new Buffer(6);
27708 // Number of bytes received for the current incomplete multi-byte character.
27709 this.charReceived = 0;
27710 // Number of bytes expected for the current incomplete multi-byte character.
27711 this.charLength = 0;
27712 };
27713
27714
27715 // write decodes the given buffer and returns it as JS string that is
27716 // guaranteed to not contain any partial multi-byte characters. Any partial
27717 // character found at the end of the buffer is buffered up, and will be
27718 // returned when calling write again with the remaining bytes.
27719 //
27720 // Note: Converting a Buffer containing an orphan surrogate to a String
27721 // currently works, but converting a String to a Buffer (via `new Buffer`, or
27722 // Buffer#write) will replace incomplete surrogates with the unicode
27723 // replacement character. See https://codereview.chromium.org/121173009/ .
27724 StringDecoder.prototype.write = function(buffer) {
27725 var charStr = '';
27726 // if our last write ended with an incomplete multibyte character
27727 while (this.charLength) {
27728 // determine how many remaining bytes this buffer has to offer for this char
27729 var available = (buffer.length >= this.charLength - this.charReceived) ?
27730 this.charLength - this.charReceived :
27731 buffer.length;
27732
27733 // add the new bytes to the char buffer
27734 buffer.copy(this.charBuffer, this.charReceived, 0, available);
27735 this.charReceived += available;
27736
27737 if (this.charReceived < this.charLength) {
27738 // still not enough chars in this buffer? wait for more ...
27739 return '';
27740 }
27741
27742 // remove bytes belonging to the current character from the buffer
27743 buffer = buffer.slice(available, buffer.length);
27744
27745 // get the character that was split
27746 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
27747
27748 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
27749 var charCode = charStr.charCodeAt(charStr.length - 1);
27750 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
27751 this.charLength += this.surrogateSize;
27752 charStr = '';
27753 continue;
27754 }
27755 this.charReceived = this.charLength = 0;
27756
27757 // if there are no more bytes in this buffer, just emit our char
27758 if (buffer.length === 0) {
27759 return charStr;
27760 }
27761 break;
27762 }
27763
27764 // determine and set charLength / charReceived
27765 this.detectIncompleteChar(buffer);
27766
27767 var end = buffer.length;
27768 if (this.charLength) {
27769 // buffer the incomplete character bytes we got
27770 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
27771 end -= this.charReceived;
27772 }
27773
27774 charStr += buffer.toString(this.encoding, 0, end);
27775
27776 var end = charStr.length - 1;
27777 var charCode = charStr.charCodeAt(end);
27778 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
27779 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
27780 var size = this.surrogateSize;
27781 this.charLength += size;
27782 this.charReceived += size;
27783 this.charBuffer.copy(this.charBuffer, size, 0, size);
27784 buffer.copy(this.charBuffer, 0, 0, size);
27785 return charStr.substring(0, end);
27786 }
27787
27788 // or just emit the charStr
27789 return charStr;
27790 };
27791
27792 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
27793 // the end of the given buffer. If so, it sets this.charLength to the byte
27794 // length that character, and sets this.charReceived to the number of bytes
27795 // that are available for this character.
27796 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
27797 // determine how many bytes we have to check at the end of this buffer
27798 var i = (buffer.length >= 3) ? 3 : buffer.length;
27799
27800 // Figure out if one of the last i bytes of our buffer announces an
27801 // incomplete char.
27802 for (; i > 0; i--) {
27803 var c = buffer[buffer.length - i];
27804
27805 // See http://en.wikipedia.org/wiki/UTF-8#Description
27806
27807 // 110XXXXX
27808 if (i == 1 && c >> 5 == 0x06) {
27809 this.charLength = 2;
27810 break;
27811 }
27812
27813 // 1110XXXX
27814 if (i <= 2 && c >> 4 == 0x0E) {
27815 this.charLength = 3;
27816 break;
27817 }
27818
27819 // 11110XXX
27820 if (i <= 3 && c >> 3 == 0x1E) {
27821 this.charLength = 4;
27822 break;
27823 }
27824 }
27825 this.charReceived = i;
27826 };
27827
27828 StringDecoder.prototype.end = function(buffer) {
27829 var res = '';
27830 if (buffer && buffer.length)
27831 res = this.write(buffer);
27832
27833 if (this.charReceived) {
27834 var cr = this.charReceived;
27835 var buf = this.charBuffer;
27836 var enc = this.encoding;
27837 res += buf.slice(0, cr).toString(enc);
27838 }
27839
27840 return res;
27841 };
27842
27843 function passThroughWrite(buffer) {
27844 return buffer.toString(this.encoding);
27845 }
27846
27847 function utf16DetectIncompleteChar(buffer) {
27848 this.charReceived = buffer.length % 2;
27849 this.charLength = this.charReceived ? 2 : 0;
27850 }
27851
27852 function base64DetectIncompleteChar(buffer) {
27853 this.charReceived = buffer.length % 3;
27854 this.charLength = this.charReceived ? 3 : 0;
27855 }
27856
27857 },{"buffer":5}],27:[function(require,module,exports){
27858 (function (global){
27859
27860 /**
27861 * Module exports.
27862 */
27863
27864 module.exports = deprecate;
27865
27866 /**
27867 * Mark that a method should not be used.
27868 * Returns a modified function which warns once by default.
27869 *
27870 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
27871 *
27872 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
27873 * will throw an Error when invoked.
27874 *
27875 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
27876 * will invoke `console.trace()` instead of `console.error()`.
27877 *
27878 * @param {Function} fn - the function to deprecate
27879 * @param {String} msg - the string to print to the console when `fn` is invoked
27880 * @returns {Function} a new "deprecated" version of `fn`
27881 * @api public
27882 */
27883
27884 function deprecate (fn, msg) {
27885 if (config('noDeprecation')) {
27886 return fn;
27887 }
27888
27889 var warned = false;
27890 function deprecated() {
27891 if (!warned) {
27892 if (config('throwDeprecation')) {
27893 throw new Error(msg);
27894 } else if (config('traceDeprecation')) {
27895 console.trace(msg);
27896 } else {
27897 console.warn(msg);
27898 }
27899 warned = true;
27900 }
27901 return fn.apply(this, arguments);
27902 }
27903
27904 return deprecated;
27905 }
27906
27907 /**
27908 * Checks `localStorage` for boolean values for the given `name`.
27909 *
27910 * @param {String} name
27911 * @returns {Boolean}
27912 * @api private
27913 */
27914
27915 function config (name) {
27916 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
27917 try {
27918 if (!global.localStorage) return false;
27919 } catch (_) {
27920 return false;
27921 }
27922 var val = global.localStorage[name];
27923 if (null == val) return false;
27924 return String(val).toLowerCase() === 'true';
27925 }
27926
27927 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
27928 },{}],28:[function(require,module,exports){
27929 arguments[4][9][0].apply(exports,arguments)
27930 },{"dup":9}],29:[function(require,module,exports){
27931 module.exports = function isBuffer(arg) {
27932 return arg && typeof arg === 'object'
27933 && typeof arg.copy === 'function'
27934 && typeof arg.fill === 'function'
27935 && typeof arg.readUInt8 === 'function';
27936 }
27937 },{}],30:[function(require,module,exports){
27938 (function (process,global){
27939 // Copyright Joyent, Inc. and other Node contributors.
27940 //
27941 // Permission is hereby granted, free of charge, to any person obtaining a
27942 // copy of this software and associated documentation files (the
27943 // "Software"), to deal in the Software without restriction, including
27944 // without limitation the rights to use, copy, modify, merge, publish,
27945 // distribute, sublicense, and/or sell copies of the Software, and to permit
27946 // persons to whom the Software is furnished to do so, subject to the
27947 // following conditions:
27948 //
27949 // The above copyright notice and this permission notice shall be included
27950 // in all copies or substantial portions of the Software.
27951 //
27952 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27953 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27954 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27955 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27956 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27957 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27958 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27959
27960 var formatRegExp = /%[sdj%]/g;
27961 exports.format = function(f) {
27962 if (!isString(f)) {
27963 var objects = [];
27964 for (var i = 0; i < arguments.length; i++) {
27965 objects.push(inspect(arguments[i]));
27966 }
27967 return objects.join(' ');
27968 }
27969
27970 var i = 1;
27971 var args = arguments;
27972 var len = args.length;
27973 var str = String(f).replace(formatRegExp, function(x) {
27974 if (x === '%%') return '%';
27975 if (i >= len) return x;
27976 switch (x) {
27977 case '%s': return String(args[i++]);
27978 case '%d': return Number(args[i++]);
27979 case '%j':
27980 try {
27981 return JSON.stringify(args[i++]);
27982 } catch (_) {
27983 return '[Circular]';
27984 }
27985 default:
27986 return x;
27987 }
27988 });
27989 for (var x = args[i]; i < len; x = args[++i]) {
27990 if (isNull(x) || !isObject(x)) {
27991 str += ' ' + x;
27992 } else {
27993 str += ' ' + inspect(x);
27994 }
27995 }
27996 return str;
27997 };
27998
27999
28000 // Mark that a method should not be used.
28001 // Returns a modified function which warns once by default.
28002 // If --no-deprecation is set, then it is a no-op.
28003 exports.deprecate = function(fn, msg) {
28004 // Allow for deprecating things in the process of starting up.
28005 if (isUndefined(global.process)) {
28006 return function() {
28007 return exports.deprecate(fn, msg).apply(this, arguments);
28008 };
28009 }
28010
28011 if (process.noDeprecation === true) {
28012 return fn;
28013 }
28014
28015 var warned = false;
28016 function deprecated() {
28017 if (!warned) {
28018 if (process.throwDeprecation) {
28019 throw new Error(msg);
28020 } else if (process.traceDeprecation) {
28021 console.trace(msg);
28022 } else {
28023 console.error(msg);
28024 }
28025 warned = true;
28026 }
28027 return fn.apply(this, arguments);
28028 }
28029
28030 return deprecated;
28031 };
28032
28033
28034 var debugs = {};
28035 var debugEnviron;
28036 exports.debuglog = function(set) {
28037 if (isUndefined(debugEnviron))
28038 debugEnviron = process.env.NODE_DEBUG || '';
28039 set = set.toUpperCase();
28040 if (!debugs[set]) {
28041 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
28042 var pid = process.pid;
28043 debugs[set] = function() {
28044 var msg = exports.format.apply(exports, arguments);
28045 console.error('%s %d: %s', set, pid, msg);
28046 };
28047 } else {
28048 debugs[set] = function() {};
28049 }
28050 }
28051 return debugs[set];
28052 };
28053
28054
28055 /**
28056 * Echos the value of a value. Trys to print the value out
28057 * in the best way possible given the different types.
28058 *
28059 * @param {Object} obj The object to print out.
28060 * @param {Object} opts Optional options object that alters the output.
28061 */
28062 /* legacy: obj, showHidden, depth, colors*/
28063 function inspect(obj, opts) {
28064 // default options
28065 var ctx = {
28066 seen: [],
28067 stylize: stylizeNoColor
28068 };
28069 // legacy...
28070 if (arguments.length >= 3) ctx.depth = arguments[2];
28071 if (arguments.length >= 4) ctx.colors = arguments[3];
28072 if (isBoolean(opts)) {
28073 // legacy...
28074 ctx.showHidden = opts;
28075 } else if (opts) {
28076 // got an "options" object
28077 exports._extend(ctx, opts);
28078 }
28079 // set default options
28080 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
28081 if (isUndefined(ctx.depth)) ctx.depth = 2;
28082 if (isUndefined(ctx.colors)) ctx.colors = false;
28083 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
28084 if (ctx.colors) ctx.stylize = stylizeWithColor;
28085 return formatValue(ctx, obj, ctx.depth);
28086 }
28087 exports.inspect = inspect;
28088
28089
28090 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
28091 inspect.colors = {
28092 'bold' : [1, 22],
28093 'italic' : [3, 23],
28094 'underline' : [4, 24],
28095 'inverse' : [7, 27],
28096 'white' : [37, 39],
28097 'grey' : [90, 39],
28098 'black' : [30, 39],
28099 'blue' : [34, 39],
28100 'cyan' : [36, 39],
28101 'green' : [32, 39],
28102 'magenta' : [35, 39],
28103 'red' : [31, 39],
28104 'yellow' : [33, 39]
28105 };
28106
28107 // Don't use 'blue' not visible on cmd.exe
28108 inspect.styles = {
28109 'special': 'cyan',
28110 'number': 'yellow',
28111 'boolean': 'yellow',
28112 'undefined': 'grey',
28113 'null': 'bold',
28114 'string': 'green',
28115 'date': 'magenta',
28116 // "name": intentionally not styling
28117 'regexp': 'red'
28118 };
28119
28120
28121 function stylizeWithColor(str, styleType) {
28122 var style = inspect.styles[styleType];
28123
28124 if (style) {
28125 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
28126 '\u001b[' + inspect.colors[style][1] + 'm';
28127 } else {
28128 return str;
28129 }
28130 }
28131
28132
28133 function stylizeNoColor(str, styleType) {
28134 return str;
28135 }
28136
28137
28138 function arrayToHash(array) {
28139 var hash = {};
28140
28141 array.forEach(function(val, idx) {
28142 hash[val] = true;
28143 });
28144
28145 return hash;
28146 }
28147
28148
28149 function formatValue(ctx, value, recurseTimes) {
28150 // Provide a hook for user-specified inspect functions.
28151 // Check that value is an object with an inspect function on it
28152 if (ctx.customInspect &&
28153 value &&
28154 isFunction(value.inspect) &&
28155 // Filter out the util module, it's inspect function is special
28156 value.inspect !== exports.inspect &&
28157 // Also filter out any prototype objects using the circular check.
28158 !(value.constructor && value.constructor.prototype === value)) {
28159 var ret = value.inspect(recurseTimes, ctx);
28160 if (!isString(ret)) {
28161 ret = formatValue(ctx, ret, recurseTimes);
28162 }
28163 return ret;
28164 }
28165
28166 // Primitive types cannot have properties
28167 var primitive = formatPrimitive(ctx, value);
28168 if (primitive) {
28169 return primitive;
28170 }
28171
28172 // Look up the keys of the object.
28173 var keys = Object.keys(value);
28174 var visibleKeys = arrayToHash(keys);
28175
28176 if (ctx.showHidden) {
28177 keys = Object.getOwnPropertyNames(value);
28178 }
28179
28180 // IE doesn't make error fields non-enumerable
28181 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
28182 if (isError(value)
28183 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
28184 return formatError(value);
28185 }
28186
28187 // Some type of object without properties can be shortcutted.
28188 if (keys.length === 0) {
28189 if (isFunction(value)) {
28190 var name = value.name ? ': ' + value.name : '';
28191 return ctx.stylize('[Function' + name + ']', 'special');
28192 }
28193 if (isRegExp(value)) {
28194 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
28195 }
28196 if (isDate(value)) {
28197 return ctx.stylize(Date.prototype.toString.call(value), 'date');
28198 }
28199 if (isError(value)) {
28200 return formatError(value);
28201 }
28202 }
28203
28204 var base = '', array = false, braces = ['{', '}'];
28205
28206 // Make Array say that they are Array
28207 if (isArray(value)) {
28208 array = true;
28209 braces = ['[', ']'];
28210 }
28211
28212 // Make functions say that they are functions
28213 if (isFunction(value)) {
28214 var n = value.name ? ': ' + value.name : '';
28215 base = ' [Function' + n + ']';
28216 }
28217
28218 // Make RegExps say that they are RegExps
28219 if (isRegExp(value)) {
28220 base = ' ' + RegExp.prototype.toString.call(value);
28221 }
28222
28223 // Make dates with properties first say the date
28224 if (isDate(value)) {
28225 base = ' ' + Date.prototype.toUTCString.call(value);
28226 }
28227
28228 // Make error with message first say the error
28229 if (isError(value)) {
28230 base = ' ' + formatError(value);
28231 }
28232
28233 if (keys.length === 0 && (!array || value.length == 0)) {
28234 return braces[0] + base + braces[1];
28235 }
28236
28237 if (recurseTimes < 0) {
28238 if (isRegExp(value)) {
28239 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
28240 } else {
28241 return ctx.stylize('[Object]', 'special');
28242 }
28243 }
28244
28245 ctx.seen.push(value);
28246
28247 var output;
28248 if (array) {
28249 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
28250 } else {
28251 output = keys.map(function(key) {
28252 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
28253 });
28254 }
28255
28256 ctx.seen.pop();
28257
28258 return reduceToSingleString(output, base, braces);
28259 }
28260
28261
28262 function formatPrimitive(ctx, value) {
28263 if (isUndefined(value))
28264 return ctx.stylize('undefined', 'undefined');
28265 if (isString(value)) {
28266 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
28267 .replace(/'/g, "\\'")
28268 .replace(/\\"/g, '"') + '\'';
28269 return ctx.stylize(simple, 'string');
28270 }
28271 if (isNumber(value))
28272 return ctx.stylize('' + value, 'number');
28273 if (isBoolean(value))
28274 return ctx.stylize('' + value, 'boolean');
28275 // For some reason typeof null is "object", so special case here.
28276 if (isNull(value))
28277 return ctx.stylize('null', 'null');
28278 }
28279
28280
28281 function formatError(value) {
28282 return '[' + Error.prototype.toString.call(value) + ']';
28283 }
28284
28285
28286 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
28287 var output = [];
28288 for (var i = 0, l = value.length; i < l; ++i) {
28289 if (hasOwnProperty(value, String(i))) {
28290 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
28291 String(i), true));
28292 } else {
28293 output.push('');
28294 }
28295 }
28296 keys.forEach(function(key) {
28297 if (!key.match(/^\d+$/)) {
28298 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
28299 key, true));
28300 }
28301 });
28302 return output;
28303 }
28304
28305
28306 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
28307 var name, str, desc;
28308 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
28309 if (desc.get) {
28310 if (desc.set) {
28311 str = ctx.stylize('[Getter/Setter]', 'special');
28312 } else {
28313 str = ctx.stylize('[Getter]', 'special');
28314 }
28315 } else {
28316 if (desc.set) {
28317 str = ctx.stylize('[Setter]', 'special');
28318 }
28319 }
28320 if (!hasOwnProperty(visibleKeys, key)) {
28321 name = '[' + key + ']';
28322 }
28323 if (!str) {
28324 if (ctx.seen.indexOf(desc.value) < 0) {
28325 if (isNull(recurseTimes)) {
28326 str = formatValue(ctx, desc.value, null);
28327 } else {
28328 str = formatValue(ctx, desc.value, recurseTimes - 1);
28329 }
28330 if (str.indexOf('\n') > -1) {
28331 if (array) {
28332 str = str.split('\n').map(function(line) {
28333 return ' ' + line;
28334 }).join('\n').substr(2);
28335 } else {
28336 str = '\n' + str.split('\n').map(function(line) {
28337 return ' ' + line;
28338 }).join('\n');
28339 }
28340 }
28341 } else {
28342 str = ctx.stylize('[Circular]', 'special');
28343 }
28344 }
28345 if (isUndefined(name)) {
28346 if (array && key.match(/^\d+$/)) {
28347 return str;
28348 }
28349 name = JSON.stringify('' + key);
28350 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
28351 name = name.substr(1, name.length - 2);
28352 name = ctx.stylize(name, 'name');
28353 } else {
28354 name = name.replace(/'/g, "\\'")
28355 .replace(/\\"/g, '"')
28356 .replace(/(^"|"$)/g, "'");
28357 name = ctx.stylize(name, 'string');
28358 }
28359 }
28360
28361 return name + ': ' + str;
28362 }
28363
28364
28365 function reduceToSingleString(output, base, braces) {
28366 var numLinesEst = 0;
28367 var length = output.reduce(function(prev, cur) {
28368 numLinesEst++;
28369 if (cur.indexOf('\n') >= 0) numLinesEst++;
28370 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
28371 }, 0);
28372
28373 if (length > 60) {
28374 return braces[0] +
28375 (base === '' ? '' : base + '\n ') +
28376 ' ' +
28377 output.join(',\n ') +
28378 ' ' +
28379 braces[1];
28380 }
28381
28382 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
28383 }
28384
28385
28386 // NOTE: These type checking functions intentionally don't use `instanceof`
28387 // because it is fragile and can be easily faked with `Object.create()`.
28388 function isArray(ar) {
28389 return Array.isArray(ar);
28390 }
28391 exports.isArray = isArray;
28392
28393 function isBoolean(arg) {
28394 return typeof arg === 'boolean';
28395 }
28396 exports.isBoolean = isBoolean;
28397
28398 function isNull(arg) {
28399 return arg === null;
28400 }
28401 exports.isNull = isNull;
28402
28403 function isNullOrUndefined(arg) {
28404 return arg == null;
28405 }
28406 exports.isNullOrUndefined = isNullOrUndefined;
28407
28408 function isNumber(arg) {
28409 return typeof arg === 'number';
28410 }
28411 exports.isNumber = isNumber;
28412
28413 function isString(arg) {
28414 return typeof arg === 'string';
28415 }
28416 exports.isString = isString;
28417
28418 function isSymbol(arg) {
28419 return typeof arg === 'symbol';
28420 }
28421 exports.isSymbol = isSymbol;
28422
28423 function isUndefined(arg) {
28424 return arg === void 0;
28425 }
28426 exports.isUndefined = isUndefined;
28427
28428 function isRegExp(re) {
28429 return isObject(re) && objectToString(re) === '[object RegExp]';
28430 }
28431 exports.isRegExp = isRegExp;
28432
28433 function isObject(arg) {
28434 return typeof arg === 'object' && arg !== null;
28435 }
28436 exports.isObject = isObject;
28437
28438 function isDate(d) {
28439 return isObject(d) && objectToString(d) === '[object Date]';
28440 }
28441 exports.isDate = isDate;
28442
28443 function isError(e) {
28444 return isObject(e) &&
28445 (objectToString(e) === '[object Error]' || e instanceof Error);
28446 }
28447 exports.isError = isError;
28448
28449 function isFunction(arg) {
28450 return typeof arg === 'function';
28451 }
28452 exports.isFunction = isFunction;
28453
28454 function isPrimitive(arg) {
28455 return arg === null ||
28456 typeof arg === 'boolean' ||
28457 typeof arg === 'number' ||
28458 typeof arg === 'string' ||
28459 typeof arg === 'symbol' || // ES6 symbol
28460 typeof arg === 'undefined';
28461 }
28462 exports.isPrimitive = isPrimitive;
28463
28464 exports.isBuffer = require('./support/isBuffer');
28465
28466 function objectToString(o) {
28467 return Object.prototype.toString.call(o);
28468 }
28469
28470
28471 function pad(n) {
28472 return n < 10 ? '0' + n.toString(10) : n.toString(10);
28473 }
28474
28475
28476 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
28477 'Oct', 'Nov', 'Dec'];
28478
28479 // 26 Feb 16:19:34
28480 function timestamp() {
28481 var d = new Date();
28482 var time = [pad(d.getHours()),
28483 pad(d.getMinutes()),
28484 pad(d.getSeconds())].join(':');
28485 return [d.getDate(), months[d.getMonth()], time].join(' ');
28486 }
28487
28488
28489 // log is just a thin wrapper to console.log that prepends a timestamp
28490 exports.log = function() {
28491 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
28492 };
28493
28494
28495 /**
28496 * Inherit the prototype methods from one constructor into another.
28497 *
28498 * The Function.prototype.inherits from lang.js rewritten as a standalone
28499 * function (not on Function.prototype). NOTE: If this file is to be loaded
28500 * during bootstrapping this function needs to be rewritten using some native
28501 * functions as prototype setup using normal JavaScript does not work as
28502 * expected during bootstrapping (see mirror.js in r114903).
28503 *
28504 * @param {function} ctor Constructor function which needs to inherit the
28505 * prototype.
28506 * @param {function} superCtor Constructor function to inherit prototype from.
28507 */
28508 exports.inherits = require('inherits');
28509
28510 exports._extend = function(origin, add) {
28511 // Don't do anything if add isn't an object
28512 if (!add || !isObject(add)) return origin;
28513
28514 var keys = Object.keys(add);
28515 var i = keys.length;
28516 while (i--) {
28517 origin[keys[i]] = add[keys[i]];
28518 }
28519 return origin;
28520 };
28521
28522 function hasOwnProperty(obj, prop) {
28523 return Object.prototype.hasOwnProperty.call(obj, prop);
28524 }
28525
28526 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
28527 },{"./support/isBuffer":29,"_process":13,"inherits":28}],31:[function(require,module,exports){
28528 (function (Buffer){
28529 const createKeccakHash = require('keccak')
28530 const secp256k1 = require('secp256k1')
28531 const assert = require('assert')
28532 const rlp = require('rlp')
28533 const BN = require('bn.js')
28534 const createHash = require('create-hash')
28535 Object.assign(exports, require('ethjs-util'))
28536
28537 /**
28538 * the max integer that this VM can handle (a ```BN```)
28539 * @var {BN} MAX_INTEGER
28540 */
28541 exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)
28542
28543 /**
28544 * 2^256 (a ```BN```)
28545 * @var {BN} TWO_POW256
28546 */
28547 exports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16)
28548
28549 /**
28550 * SHA3-256 hash of null (a ```String```)
28551 * @var {String} SHA3_NULL_S
28552 */
28553 exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
28554
28555 /**
28556 * SHA3-256 hash of null (a ```Buffer```)
28557 * @var {Buffer} SHA3_NULL
28558 */
28559 exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
28560
28561 /**
28562 * SHA3-256 of an RLP of an empty array (a ```String```)
28563 * @var {String} SHA3_RLP_ARRAY_S
28564 */
28565 exports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
28566
28567 /**
28568 * SHA3-256 of an RLP of an empty array (a ```Buffer```)
28569 * @var {Buffer} SHA3_RLP_ARRAY
28570 */
28571 exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
28572
28573 /**
28574 * SHA3-256 hash of the RLP of null (a ```String```)
28575 * @var {String} SHA3_RLP_S
28576 */
28577 exports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
28578
28579 /**
28580 * SHA3-256 hash of the RLP of null (a ```Buffer```)
28581 * @var {Buffer} SHA3_RLP
28582 */
28583 exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
28584
28585 /**
28586 * [`BN`](https://github.com/indutny/bn.js)
28587 * @var {Function}
28588 */
28589 exports.BN = BN
28590
28591 /**
28592 * [`rlp`](https://github.com/ethereumjs/rlp)
28593 * @var {Function}
28594 */
28595 exports.rlp = rlp
28596
28597 /**
28598 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
28599 * @var {Object}
28600 */
28601 exports.secp256k1 = secp256k1
28602
28603 /**
28604 * Returns a buffer filled with 0s
28605 * @method zeros
28606 * @param {Number} bytes the number of bytes the buffer should be
28607 * @return {Buffer}
28608 */
28609 exports.zeros = function (bytes) {
28610 return Buffer.allocUnsafe(bytes).fill(0)
28611 }
28612
28613 /**
28614 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
28615 * Or it truncates the beginning if it exceeds.
28616 * @method lsetLength
28617 * @param {Buffer|Array} msg the value to pad
28618 * @param {Number} length the number of bytes the output should be
28619 * @param {Boolean} [right=false] whether to start padding form the left or right
28620 * @return {Buffer|Array}
28621 */
28622 exports.setLengthLeft = exports.setLength = function (msg, length, right) {
28623 var buf = exports.zeros(length)
28624 msg = exports.toBuffer(msg)
28625 if (right) {
28626 if (msg.length < length) {
28627 msg.copy(buf)
28628 return buf
28629 }
28630 return msg.slice(0, length)
28631 } else {
28632 if (msg.length < length) {
28633 msg.copy(buf, length - msg.length)
28634 return buf
28635 }
28636 return msg.slice(-length)
28637 }
28638 }
28639
28640 /**
28641 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
28642 * Or it truncates the beginning if it exceeds.
28643 * @param {Buffer|Array} msg the value to pad
28644 * @param {Number} length the number of bytes the output should be
28645 * @return {Buffer|Array}
28646 */
28647 exports.setLengthRight = function (msg, length) {
28648 return exports.setLength(msg, length, true)
28649 }
28650
28651 /**
28652 * Trims leading zeros from a `Buffer` or an `Array`
28653 * @param {Buffer|Array|String} a
28654 * @return {Buffer|Array|String}
28655 */
28656 exports.unpad = exports.stripZeros = function (a) {
28657 a = exports.stripHexPrefix(a)
28658 var first = a[0]
28659 while (a.length > 0 && first.toString() === '0') {
28660 a = a.slice(1)
28661 first = a[0]
28662 }
28663 return a
28664 }
28665 /**
28666 * Attempts to turn a value into a `Buffer`. As input it supports `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` method.
28667 * @param {*} v the value
28668 */
28669 exports.toBuffer = function (v) {
28670 if (!Buffer.isBuffer(v)) {
28671 if (Array.isArray(v)) {
28672 v = Buffer.from(v)
28673 } else if (typeof v === 'string') {
28674 if (exports.isHexPrefixed(v)) {
28675 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
28676 } else {
28677 v = Buffer.from(v)
28678 }
28679 } else if (typeof v === 'number') {
28680 v = exports.intToBuffer(v)
28681 } else if (v === null || v === undefined) {
28682 v = Buffer.allocUnsafe(0)
28683 } else if (v.toArray) {
28684 // converts a BN to a Buffer
28685 v = Buffer.from(v.toArray())
28686 } else {
28687 throw new Error('invalid type')
28688 }
28689 }
28690 return v
28691 }
28692
28693 /**
28694 * Converts a `Buffer` to a `Number`
28695 * @param {Buffer} buf
28696 * @return {Number}
28697 * @throws If the input number exceeds 53 bits.
28698 */
28699 exports.bufferToInt = function (buf) {
28700 return new BN(exports.toBuffer(buf)).toNumber()
28701 }
28702
28703 /**
28704 * Converts a `Buffer` into a hex `String`
28705 * @param {Buffer} buf
28706 * @return {String}
28707 */
28708 exports.bufferToHex = function (buf) {
28709 buf = exports.toBuffer(buf)
28710 return '0x' + buf.toString('hex')
28711 }
28712
28713 /**
28714 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
28715 * @param {Buffer} num
28716 * @return {BN}
28717 */
28718 exports.fromSigned = function (num) {
28719 return new BN(num).fromTwos(256)
28720 }
28721
28722 /**
28723 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
28724 * @param {BN} num
28725 * @return {Buffer}
28726 */
28727 exports.toUnsigned = function (num) {
28728 return Buffer.from(num.toTwos(256).toArray())
28729 }
28730
28731 /**
28732 * Creates SHA-3 hash of the input
28733 * @param {Buffer|Array|String|Number} a the input data
28734 * @param {Number} [bits=256] the SHA width
28735 * @return {Buffer}
28736 */
28737 exports.sha3 = function (a, bits) {
28738 a = exports.toBuffer(a)
28739 if (!bits) bits = 256
28740
28741 return createKeccakHash('keccak' + bits).update(a).digest()
28742 }
28743
28744 /**
28745 * Creates SHA256 hash of the input
28746 * @param {Buffer|Array|String|Number} a the input data
28747 * @return {Buffer}
28748 */
28749 exports.sha256 = function (a) {
28750 a = exports.toBuffer(a)
28751 return createHash('sha256').update(a).digest()
28752 }
28753
28754 /**
28755 * Creates RIPEMD160 hash of the input
28756 * @param {Buffer|Array|String|Number} a the input data
28757 * @param {Boolean} padded whether it should be padded to 256 bits or not
28758 * @return {Buffer}
28759 */
28760 exports.ripemd160 = function (a, padded) {
28761 a = exports.toBuffer(a)
28762 var hash = createHash('rmd160').update(a).digest()
28763 if (padded === true) {
28764 return exports.setLength(hash, 32)
28765 } else {
28766 return hash
28767 }
28768 }
28769
28770 /**
28771 * Creates SHA-3 hash of the RLP encoded version of the input
28772 * @param {Buffer|Array|String|Number} a the input data
28773 * @return {Buffer}
28774 */
28775 exports.rlphash = function (a) {
28776 return exports.sha3(rlp.encode(a))
28777 }
28778
28779 /**
28780 * Checks if the private key satisfies the rules of the curve secp256k1.
28781 * @param {Buffer} privateKey
28782 * @return {Boolean}
28783 */
28784 exports.isValidPrivate = function (privateKey) {
28785 return secp256k1.privateKeyVerify(privateKey)
28786 }
28787
28788 /**
28789 * Checks if the public key satisfies the rules of the curve secp256k1
28790 * and the requirements of Ethereum.
28791 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
28792 * @param {Boolean} [sanitize=false] Accept public keys in other formats
28793 * @return {Boolean}
28794 */
28795 exports.isValidPublic = function (publicKey, sanitize) {
28796 if (publicKey.length === 64) {
28797 // Convert to SEC1 for secp256k1
28798 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([4]), publicKey ]))
28799 }
28800
28801 if (!sanitize) {
28802 return false
28803 }
28804
28805 return secp256k1.publicKeyVerify(publicKey)
28806 }
28807
28808 /**
28809 * Returns the ethereum address of a given public key.
28810 * Accepts "Ethereum public keys" and SEC1 encoded keys.
28811 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
28812 * @param {Boolean} [sanitize=false] Accept public keys in other formats
28813 * @return {Buffer}
28814 */
28815 exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
28816 pubKey = exports.toBuffer(pubKey)
28817 if (sanitize && (pubKey.length !== 64)) {
28818 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1)
28819 }
28820 assert(pubKey.length === 64)
28821 // Only take the lower 160bits of the hash
28822 return exports.sha3(pubKey).slice(-20)
28823 }
28824
28825 /**
28826 * Returns the ethereum public key of a given private key
28827 * @param {Buffer} privateKey A private key must be 256 bits wide
28828 * @return {Buffer}
28829 */
28830 var privateToPublic = exports.privateToPublic = function (privateKey) {
28831 privateKey = exports.toBuffer(privateKey)
28832 // skip the type flag and use the X, Y points
28833 return secp256k1.publicKeyCreate(privateKey, false).slice(1)
28834 }
28835
28836 /**
28837 * Converts a public key to the Ethereum format.
28838 * @param {Buffer} publicKey
28839 * @return {Buffer}
28840 */
28841 exports.importPublic = function (publicKey) {
28842 publicKey = exports.toBuffer(publicKey)
28843 if (publicKey.length !== 64) {
28844 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1)
28845 }
28846 return publicKey
28847 }
28848
28849 /**
28850 * ECDSA sign
28851 * @param {Buffer} msgHash
28852 * @param {Buffer} privateKey
28853 * @return {Object}
28854 */
28855 exports.ecsign = function (msgHash, privateKey) {
28856 var sig = secp256k1.sign(msgHash, privateKey)
28857
28858 var ret = {}
28859 ret.r = sig.signature.slice(0, 32)
28860 ret.s = sig.signature.slice(32, 64)
28861 ret.v = sig.recovery + 27
28862 return ret
28863 }
28864
28865 /**
28866 * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
28867 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
28868 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
28869 * used to produce the signature.
28870 * @param message
28871 * @returns {Buffer} hash
28872 */
28873 exports.hashPersonalMessage = function (message) {
28874 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
28875 return exports.sha3(Buffer.concat([prefix, message]))
28876 }
28877
28878 /**
28879 * ECDSA public key recovery from signature
28880 * @param {Buffer} msgHash
28881 * @param {Number} v
28882 * @param {Buffer} r
28883 * @param {Buffer} s
28884 * @return {Buffer} publicKey
28885 */
28886 exports.ecrecover = function (msgHash, v, r, s) {
28887 var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
28888 var recovery = v - 27
28889 if (recovery !== 0 && recovery !== 1) {
28890 throw new Error('Invalid signature v value')
28891 }
28892 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
28893 return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
28894 }
28895
28896 /**
28897 * Convert signature parameters into the format of `eth_sign` RPC method
28898 * @param {Number} v
28899 * @param {Buffer} r
28900 * @param {Buffer} s
28901 * @return {String} sig
28902 */
28903 exports.toRpcSig = function (v, r, s) {
28904 // NOTE: with potential introduction of chainId this might need to be updated
28905 if (v !== 27 && v !== 28) {
28906 throw new Error('Invalid recovery id')
28907 }
28908
28909 // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin
28910 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053
28911 return exports.bufferToHex(Buffer.concat([
28912 exports.setLengthLeft(r, 32),
28913 exports.setLengthLeft(s, 32),
28914 exports.toBuffer(v - 27)
28915 ]))
28916 }
28917
28918 /**
28919 * Convert signature format of the `eth_sign` RPC method to signature parameters
28920 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
28921 * @param {String} sig
28922 * @return {Object}
28923 */
28924 exports.fromRpcSig = function (sig) {
28925 sig = exports.toBuffer(sig)
28926
28927 // NOTE: with potential introduction of chainId this might need to be updated
28928 if (sig.length !== 65) {
28929 throw new Error('Invalid signature length')
28930 }
28931
28932 var v = sig[64]
28933 // support both versions of `eth_sign` responses
28934 if (v < 27) {
28935 v += 27
28936 }
28937
28938 return {
28939 v: v,
28940 r: sig.slice(0, 32),
28941 s: sig.slice(32, 64)
28942 }
28943 }
28944
28945 /**
28946 * Returns the ethereum address of a given private key
28947 * @param {Buffer} privateKey A private key must be 256 bits wide
28948 * @return {Buffer}
28949 */
28950 exports.privateToAddress = function (privateKey) {
28951 return exports.publicToAddress(privateToPublic(privateKey))
28952 }
28953
28954 /**
28955 * Checks if the address is a valid. Accepts checksummed addresses too
28956 * @param {String} address
28957 * @return {Boolean}
28958 */
28959 exports.isValidAddress = function (address) {
28960 return /^0x[0-9a-fA-F]{40}$/i.test(address)
28961 }
28962
28963 /**
28964 * Returns a checksummed address
28965 * @param {String} address
28966 * @return {String}
28967 */
28968 exports.toChecksumAddress = function (address) {
28969 address = exports.stripHexPrefix(address).toLowerCase()
28970 var hash = exports.sha3(address).toString('hex')
28971 var ret = '0x'
28972
28973 for (var i = 0; i < address.length; i++) {
28974 if (parseInt(hash[i], 16) >= 8) {
28975 ret += address[i].toUpperCase()
28976 } else {
28977 ret += address[i]
28978 }
28979 }
28980
28981 return ret
28982 }
28983
28984 /**
28985 * Checks if the address is a valid checksummed address
28986 * @param {Buffer} address
28987 * @return {Boolean}
28988 */
28989 exports.isValidChecksumAddress = function (address) {
28990 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
28991 }
28992
28993 /**
28994 * Generates an address of a newly created contract
28995 * @param {Buffer} from the address which is creating this new address
28996 * @param {Buffer} nonce the nonce of the from account
28997 * @return {Buffer}
28998 */
28999 exports.generateAddress = function (from, nonce) {
29000 from = exports.toBuffer(from)
29001 nonce = new BN(nonce)
29002
29003 if (nonce.isZero()) {
29004 // in RLP we want to encode null in the case of zero nonce
29005 // read the RLP documentation for an answer if you dare
29006 nonce = null
29007 } else {
29008 nonce = Buffer.from(nonce.toArray())
29009 }
29010
29011 // Only take the lower 160bits of the hash
29012 return exports.rlphash([from, nonce]).slice(-20)
29013 }
29014
29015 /**
29016 * Returns true if the supplied address belongs to a precompiled account
29017 * @param {Buffer|String} address
29018 * @return {Boolean}
29019 */
29020 exports.isPrecompiled = function (address) {
29021 var a = exports.unpad(address)
29022 return a.length === 1 && a[0] > 0 && a[0] < 5
29023 }
29024
29025 /**
29026 * Adds "0x" to a given `String` if it does not already start with "0x"
29027 * @param {String} str
29028 * @return {String}
29029 */
29030 exports.addHexPrefix = function (str) {
29031 if (typeof str !== 'string') {
29032 return str
29033 }
29034
29035 return exports.isHexPrefixed(str) ? str : '0x' + str
29036 }
29037
29038 /**
29039 * Validate ECDSA signature
29040 * @method isValidSignature
29041 * @param {Buffer} v
29042 * @param {Buffer} r
29043 * @param {Buffer} s
29044 * @param {Boolean} [homestead=true]
29045 * @return {Boolean}
29046 */
29047
29048 exports.isValidSignature = function (v, r, s, homestead) {
29049 const SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16)
29050 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)
29051
29052 if (r.length !== 32 || s.length !== 32) {
29053 return false
29054 }
29055
29056 if (v !== 27 && v !== 28) {
29057 return false
29058 }
29059
29060 r = new BN(r)
29061 s = new BN(s)
29062
29063 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
29064 return false
29065 }
29066
29067 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) === 1)) {
29068 return false
29069 }
29070
29071 return true
29072 }
29073
29074 /**
29075 * Converts a `Buffer` or `Array` to JSON
29076 * @param {Buffer|Array} ba
29077 * @return {Array|String|null}
29078 */
29079 exports.baToJSON = function (ba) {
29080 if (Buffer.isBuffer(ba)) {
29081 return '0x' + ba.toString('hex')
29082 } else if (ba instanceof Array) {
29083 var array = []
29084 for (var i = 0; i < ba.length; i++) {
29085 array.push(exports.baToJSON(ba[i]))
29086 }
29087 return array
29088 }
29089 }
29090
29091 /**
29092 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
29093 * @param {Object} self the `Object` to define properties on
29094 * @param {Array} fields an array fields to define. Fields can contain:
29095 * * `name` - the name of the properties
29096 * * `length` - the number of bytes the field can have
29097 * * `allowLess` - if the field can be less than the length
29098 * * `allowEmpty`
29099 * @param {*} data data to be validated against the definitions
29100 */
29101 exports.defineProperties = function (self, fields, data) {
29102 self.raw = []
29103 self._fields = []
29104
29105 // attach the `toJSON`
29106 self.toJSON = function (label) {
29107 if (label) {
29108 var obj = {}
29109 self._fields.forEach(function (field) {
29110 obj[field] = '0x' + self[field].toString('hex')
29111 })
29112 return obj
29113 }
29114 return exports.baToJSON(this.raw)
29115 }
29116
29117 self.serialize = function serialize () {
29118 return rlp.encode(self.raw)
29119 }
29120
29121 fields.forEach(function (field, i) {
29122 self._fields.push(field.name)
29123 function getter () {
29124 return self.raw[i]
29125 }
29126 function setter (v) {
29127 v = exports.toBuffer(v)
29128
29129 if (v.toString('hex') === '00' && !field.allowZero) {
29130 v = Buffer.allocUnsafe(0)
29131 }
29132
29133 if (field.allowLess && field.length) {
29134 v = exports.stripZeros(v)
29135 assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
29136 } else if (!(field.allowZero && v.length === 0) && field.length) {
29137 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
29138 }
29139
29140 self.raw[i] = v
29141 }
29142
29143 Object.defineProperty(self, field.name, {
29144 enumerable: true,
29145 configurable: true,
29146 get: getter,
29147 set: setter
29148 })
29149
29150 if (field.default) {
29151 self[field.name] = field.default
29152 }
29153
29154 // attach alias
29155 if (field.alias) {
29156 Object.defineProperty(self, field.alias, {
29157 enumerable: false,
29158 configurable: true,
29159 set: setter,
29160 get: getter
29161 })
29162 }
29163 })
29164
29165 // if the constuctor is passed data
29166 if (data) {
29167 if (typeof data === 'string') {
29168 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
29169 }
29170
29171 if (Buffer.isBuffer(data)) {
29172 data = rlp.decode(data)
29173 }
29174
29175 if (Array.isArray(data)) {
29176 if (data.length > self._fields.length) {
29177 throw (new Error('wrong number of fields in data'))
29178 }
29179
29180 // make sure all the items are buffers
29181 data.forEach(function (d, i) {
29182 self[self._fields[i]] = exports.toBuffer(d)
29183 })
29184 } else if (typeof data === 'object') {
29185 const keys = Object.keys(data)
29186 fields.forEach(function (field) {
29187 if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]
29188 if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]
29189 })
29190 } else {
29191 throw new Error('invalid data')
29192 }
29193 }
29194 }
29195
29196 }).call(this,require("buffer").Buffer)
29197 },{"assert":1,"bn.js":33,"buffer":5,"create-hash":36,"ethjs-util":56,"keccak":65,"rlp":72,"secp256k1":73}],32:[function(require,module,exports){
29198 (function (Buffer){
29199 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
29200 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
29201 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
29202
29203 function check (buffer) {
29204 if (buffer.length < 8) return false
29205 if (buffer.length > 72) return false
29206 if (buffer[0] !== 0x30) return false
29207 if (buffer[1] !== buffer.length - 2) return false
29208 if (buffer[2] !== 0x02) return false
29209
29210 var lenR = buffer[3]
29211 if (lenR === 0) return false
29212 if (5 + lenR >= buffer.length) return false
29213 if (buffer[4 + lenR] !== 0x02) return false
29214
29215 var lenS = buffer[5 + lenR]
29216 if (lenS === 0) return false
29217 if ((6 + lenR + lenS) !== buffer.length) return false
29218
29219 if (buffer[4] & 0x80) return false
29220 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
29221
29222 if (buffer[lenR + 6] & 0x80) return false
29223 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
29224 return true
29225 }
29226
29227 function decode (buffer) {
29228 if (buffer.length < 8) throw new Error('DER sequence length is too short')
29229 if (buffer.length > 72) throw new Error('DER sequence length is too long')
29230 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
29231 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
29232 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
29233
29234 var lenR = buffer[3]
29235 if (lenR === 0) throw new Error('R length is zero')
29236 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
29237 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
29238
29239 var lenS = buffer[5 + lenR]
29240 if (lenS === 0) throw new Error('S length is zero')
29241 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
29242
29243 if (buffer[4] & 0x80) throw new Error('R value is negative')
29244 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
29245
29246 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
29247 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
29248
29249 // non-BIP66 - extract R, S values
29250 return {
29251 r: buffer.slice(4, 4 + lenR),
29252 s: buffer.slice(6 + lenR)
29253 }
29254 }
29255
29256 /*
29257 * Expects r and s to be positive DER integers.
29258 *
29259 * The DER format uses the most significant bit as a sign bit (& 0x80).
29260 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
29261 *
29262 * Examples:
29263 *
29264 * 0 => 0x00
29265 * 1 => 0x01
29266 * -1 => 0xff
29267 * 127 => 0x7f
29268 * -127 => 0x81
29269 * 128 => 0x0080
29270 * -128 => 0x80
29271 * 255 => 0x00ff
29272 * -255 => 0xff01
29273 * 16300 => 0x3fac
29274 * -16300 => 0xc054
29275 * 62300 => 0x00f35c
29276 * -62300 => 0xff0ca4
29277 */
29278 function encode (r, s) {
29279 var lenR = r.length
29280 var lenS = s.length
29281 if (lenR === 0) throw new Error('R length is zero')
29282 if (lenS === 0) throw new Error('S length is zero')
29283 if (lenR > 33) throw new Error('R length is too long')
29284 if (lenS > 33) throw new Error('S length is too long')
29285 if (r[0] & 0x80) throw new Error('R value is negative')
29286 if (s[0] & 0x80) throw new Error('S value is negative')
29287 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
29288 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
29289
29290 var signature = new Buffer(6 + lenR + lenS)
29291
29292 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
29293 signature[0] = 0x30
29294 signature[1] = signature.length - 2
29295 signature[2] = 0x02
29296 signature[3] = r.length
29297 r.copy(signature, 4)
29298 signature[4 + lenR] = 0x02
29299 signature[5 + lenR] = s.length
29300 s.copy(signature, 6 + lenR)
29301
29302 return signature
29303 }
29304
29305 module.exports = {
29306 check: check,
29307 decode: decode,
29308 encode: encode
29309 }
29310
29311 }).call(this,require("buffer").Buffer)
29312 },{"buffer":5}],33:[function(require,module,exports){
29313 (function (module, exports) {
29314 'use strict';
29315
29316 // Utils
29317 function assert (val, msg) {
29318 if (!val) throw new Error(msg || 'Assertion failed');
29319 }
29320
29321 // Could use `inherits` module, but don't want to move from single file
29322 // architecture yet.
29323 function inherits (ctor, superCtor) {
29324 ctor.super_ = superCtor;
29325 var TempCtor = function () {};
29326 TempCtor.prototype = superCtor.prototype;
29327 ctor.prototype = new TempCtor();
29328 ctor.prototype.constructor = ctor;
29329 }
29330
29331 // BN
29332
29333 function BN (number, base, endian) {
29334 if (BN.isBN(number)) {
29335 return number;
29336 }
29337
29338 this.negative = 0;
29339 this.words = null;
29340 this.length = 0;
29341
29342 // Reduction context
29343 this.red = null;
29344
29345 if (number !== null) {
29346 if (base === 'le' || base === 'be') {
29347 endian = base;
29348 base = 10;
29349 }
29350
29351 this._init(number || 0, base || 10, endian || 'be');
29352 }
29353 }
29354 if (typeof module === 'object') {
29355 module.exports = BN;
29356 } else {
29357 exports.BN = BN;
29358 }
29359
29360 BN.BN = BN;
29361 BN.wordSize = 26;
29362
29363 var Buffer;
29364 try {
29365 Buffer = require('buf' + 'fer').Buffer;
29366 } catch (e) {
29367 }
29368
29369 BN.isBN = function isBN (num) {
29370 if (num instanceof BN) {
29371 return true;
29372 }
29373
29374 return num !== null && typeof num === 'object' &&
29375 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
29376 };
29377
29378 BN.max = function max (left, right) {
29379 if (left.cmp(right) > 0) return left;
29380 return right;
29381 };
29382
29383 BN.min = function min (left, right) {
29384 if (left.cmp(right) < 0) return left;
29385 return right;
29386 };
29387
29388 BN.prototype._init = function init (number, base, endian) {
29389 if (typeof number === 'number') {
29390 return this._initNumber(number, base, endian);
29391 }
29392
29393 if (typeof number === 'object') {
29394 return this._initArray(number, base, endian);
29395 }
29396
29397 if (base === 'hex') {
29398 base = 16;
29399 }
29400 assert(base === (base | 0) && base >= 2 && base <= 36);
29401
29402 number = number.toString().replace(/\s+/g, '');
29403 var start = 0;
29404 if (number[0] === '-') {
29405 start++;
29406 }
29407
29408 if (base === 16) {
29409 this._parseHex(number, start);
29410 } else {
29411 this._parseBase(number, base, start);
29412 }
29413
29414 if (number[0] === '-') {
29415 this.negative = 1;
29416 }
29417
29418 this.strip();
29419
29420 if (endian !== 'le') return;
29421
29422 this._initArray(this.toArray(), base, endian);
29423 };
29424
29425 BN.prototype._initNumber = function _initNumber (number, base, endian) {
29426 if (number < 0) {
29427 this.negative = 1;
29428 number = -number;
29429 }
29430 if (number < 0x4000000) {
29431 this.words = [ number & 0x3ffffff ];
29432 this.length = 1;
29433 } else if (number < 0x10000000000000) {
29434 this.words = [
29435 number & 0x3ffffff,
29436 (number / 0x4000000) & 0x3ffffff
29437 ];
29438 this.length = 2;
29439 } else {
29440 assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
29441 this.words = [
29442 number & 0x3ffffff,
29443 (number / 0x4000000) & 0x3ffffff,
29444 1
29445 ];
29446 this.length = 3;
29447 }
29448
29449 if (endian !== 'le') return;
29450
29451 // Reverse the bytes
29452 this._initArray(this.toArray(), base, endian);
29453 };
29454
29455 BN.prototype._initArray = function _initArray (number, base, endian) {
29456 // Perhaps a Uint8Array
29457 assert(typeof number.length === 'number');
29458 if (number.length <= 0) {
29459 this.words = [ 0 ];
29460 this.length = 1;
29461 return this;
29462 }
29463
29464 this.length = Math.ceil(number.length / 3);
29465 this.words = new Array(this.length);
29466 for (var i = 0; i < this.length; i++) {
29467 this.words[i] = 0;
29468 }
29469
29470 var j, w;
29471 var off = 0;
29472 if (endian === 'be') {
29473 for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
29474 w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
29475 this.words[j] |= (w << off) & 0x3ffffff;
29476 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
29477 off += 24;
29478 if (off >= 26) {
29479 off -= 26;
29480 j++;
29481 }
29482 }
29483 } else if (endian === 'le') {
29484 for (i = 0, j = 0; i < number.length; i += 3) {
29485 w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
29486 this.words[j] |= (w << off) & 0x3ffffff;
29487 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
29488 off += 24;
29489 if (off >= 26) {
29490 off -= 26;
29491 j++;
29492 }
29493 }
29494 }
29495 return this.strip();
29496 };
29497
29498 function parseHex (str, start, end) {
29499 var r = 0;
29500 var len = Math.min(str.length, end);
29501 for (var i = start; i < len; i++) {
29502 var c = str.charCodeAt(i) - 48;
29503
29504 r <<= 4;
29505
29506 // 'a' - 'f'
29507 if (c >= 49 && c <= 54) {
29508 r |= c - 49 + 0xa;
29509
29510 // 'A' - 'F'
29511 } else if (c >= 17 && c <= 22) {
29512 r |= c - 17 + 0xa;
29513
29514 // '0' - '9'
29515 } else {
29516 r |= c & 0xf;
29517 }
29518 }
29519 return r;
29520 }
29521
29522 BN.prototype._parseHex = function _parseHex (number, start) {
29523 // Create possibly bigger array to ensure that it fits the number
29524 this.length = Math.ceil((number.length - start) / 6);
29525 this.words = new Array(this.length);
29526 for (var i = 0; i < this.length; i++) {
29527 this.words[i] = 0;
29528 }
29529
29530 var j, w;
29531 // Scan 24-bit chunks and add them to the number
29532 var off = 0;
29533 for (i = number.length - 6, j = 0; i >= start; i -= 6) {
29534 w = parseHex(number, i, i + 6);
29535 this.words[j] |= (w << off) & 0x3ffffff;
29536 // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
29537 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
29538 off += 24;
29539 if (off >= 26) {
29540 off -= 26;
29541 j++;
29542 }
29543 }
29544 if (i + 6 !== start) {
29545 w = parseHex(number, start, i + 6);
29546 this.words[j] |= (w << off) & 0x3ffffff;
29547 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
29548 }
29549 this.strip();
29550 };
29551
29552 function parseBase (str, start, end, mul) {
29553 var r = 0;
29554 var len = Math.min(str.length, end);
29555 for (var i = start; i < len; i++) {
29556 var c = str.charCodeAt(i) - 48;
29557
29558 r *= mul;
29559
29560 // 'a'
29561 if (c >= 49) {
29562 r += c - 49 + 0xa;
29563
29564 // 'A'
29565 } else if (c >= 17) {
29566 r += c - 17 + 0xa;
29567
29568 // '0' - '9'
29569 } else {
29570 r += c;
29571 }
29572 }
29573 return r;
29574 }
29575
29576 BN.prototype._parseBase = function _parseBase (number, base, start) {
29577 // Initialize as zero
29578 this.words = [ 0 ];
29579 this.length = 1;
29580
29581 // Find length of limb in base
29582 for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
29583 limbLen++;
29584 }
29585 limbLen--;
29586 limbPow = (limbPow / base) | 0;
29587
29588 var total = number.length - start;
29589 var mod = total % limbLen;
29590 var end = Math.min(total, total - mod) + start;
29591
29592 var word = 0;
29593 for (var i = start; i < end; i += limbLen) {
29594 word = parseBase(number, i, i + limbLen, base);
29595
29596 this.imuln(limbPow);
29597 if (this.words[0] + word < 0x4000000) {
29598 this.words[0] += word;
29599 } else {
29600 this._iaddn(word);
29601 }
29602 }
29603
29604 if (mod !== 0) {
29605 var pow = 1;
29606 word = parseBase(number, i, number.length, base);
29607
29608 for (i = 0; i < mod; i++) {
29609 pow *= base;
29610 }
29611
29612 this.imuln(pow);
29613 if (this.words[0] + word < 0x4000000) {
29614 this.words[0] += word;
29615 } else {
29616 this._iaddn(word);
29617 }
29618 }
29619 };
29620
29621 BN.prototype.copy = function copy (dest) {
29622 dest.words = new Array(this.length);
29623 for (var i = 0; i < this.length; i++) {
29624 dest.words[i] = this.words[i];
29625 }
29626 dest.length = this.length;
29627 dest.negative = this.negative;
29628 dest.red = this.red;
29629 };
29630
29631 BN.prototype.clone = function clone () {
29632 var r = new BN(null);
29633 this.copy(r);
29634 return r;
29635 };
29636
29637 BN.prototype._expand = function _expand (size) {
29638 while (this.length < size) {
29639 this.words[this.length++] = 0;
29640 }
29641 return this;
29642 };
29643
29644 // Remove leading `0` from `this`
29645 BN.prototype.strip = function strip () {
29646 while (this.length > 1 && this.words[this.length - 1] === 0) {
29647 this.length--;
29648 }
29649 return this._normSign();
29650 };
29651
29652 BN.prototype._normSign = function _normSign () {
29653 // -0 = 0
29654 if (this.length === 1 && this.words[0] === 0) {
29655 this.negative = 0;
29656 }
29657 return this;
29658 };
29659
29660 BN.prototype.inspect = function inspect () {
29661 return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
29662 };
29663
29664 /*
29665
29666 var zeros = [];
29667 var groupSizes = [];
29668 var groupBases = [];
29669
29670 var s = '';
29671 var i = -1;
29672 while (++i < BN.wordSize) {
29673 zeros[i] = s;
29674 s += '0';
29675 }
29676 groupSizes[0] = 0;
29677 groupSizes[1] = 0;
29678 groupBases[0] = 0;
29679 groupBases[1] = 0;
29680 var base = 2 - 1;
29681 while (++base < 36 + 1) {
29682 var groupSize = 0;
29683 var groupBase = 1;
29684 while (groupBase < (1 << BN.wordSize) / base) {
29685 groupBase *= base;
29686 groupSize += 1;
29687 }
29688 groupSizes[base] = groupSize;
29689 groupBases[base] = groupBase;
29690 }
29691
29692 */
29693
29694 var zeros = [
29695 '',
29696 '0',
29697 '00',
29698 '000',
29699 '0000',
29700 '00000',
29701 '000000',
29702 '0000000',
29703 '00000000',
29704 '000000000',
29705 '0000000000',
29706 '00000000000',
29707 '000000000000',
29708 '0000000000000',
29709 '00000000000000',
29710 '000000000000000',
29711 '0000000000000000',
29712 '00000000000000000',
29713 '000000000000000000',
29714 '0000000000000000000',
29715 '00000000000000000000',
29716 '000000000000000000000',
29717 '0000000000000000000000',
29718 '00000000000000000000000',
29719 '000000000000000000000000',
29720 '0000000000000000000000000'
29721 ];
29722
29723 var groupSizes = [
29724 0, 0,
29725 25, 16, 12, 11, 10, 9, 8,
29726 8, 7, 7, 7, 7, 6, 6,
29727 6, 6, 6, 6, 6, 5, 5,
29728 5, 5, 5, 5, 5, 5, 5,
29729 5, 5, 5, 5, 5, 5, 5
29730 ];
29731
29732 var groupBases = [
29733 0, 0,
29734 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
29735 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
29736 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
29737 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
29738 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
29739 ];
29740
29741 BN.prototype.toString = function toString (base, padding) {
29742 base = base || 10;
29743 padding = padding | 0 || 1;
29744
29745 var out;
29746 if (base === 16 || base === 'hex') {
29747 out = '';
29748 var off = 0;
29749 var carry = 0;
29750 for (var i = 0; i < this.length; i++) {
29751 var w = this.words[i];
29752 var word = (((w << off) | carry) & 0xffffff).toString(16);
29753 carry = (w >>> (24 - off)) & 0xffffff;
29754 if (carry !== 0 || i !== this.length - 1) {
29755 out = zeros[6 - word.length] + word + out;
29756 } else {
29757 out = word + out;
29758 }
29759 off += 2;
29760 if (off >= 26) {
29761 off -= 26;
29762 i--;
29763 }
29764 }
29765 if (carry !== 0) {
29766 out = carry.toString(16) + out;
29767 }
29768 while (out.length % padding !== 0) {
29769 out = '0' + out;
29770 }
29771 if (this.negative !== 0) {
29772 out = '-' + out;
29773 }
29774 return out;
29775 }
29776
29777 if (base === (base | 0) && base >= 2 && base <= 36) {
29778 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
29779 var groupSize = groupSizes[base];
29780 // var groupBase = Math.pow(base, groupSize);
29781 var groupBase = groupBases[base];
29782 out = '';
29783 var c = this.clone();
29784 c.negative = 0;
29785 while (!c.isZero()) {
29786 var r = c.modn(groupBase).toString(base);
29787 c = c.idivn(groupBase);
29788
29789 if (!c.isZero()) {
29790 out = zeros[groupSize - r.length] + r + out;
29791 } else {
29792 out = r + out;
29793 }
29794 }
29795 if (this.isZero()) {
29796 out = '0' + out;
29797 }
29798 while (out.length % padding !== 0) {
29799 out = '0' + out;
29800 }
29801 if (this.negative !== 0) {
29802 out = '-' + out;
29803 }
29804 return out;
29805 }
29806
29807 assert(false, 'Base should be between 2 and 36');
29808 };
29809
29810 BN.prototype.toNumber = function toNumber () {
29811 var ret = this.words[0];
29812 if (this.length === 2) {
29813 ret += this.words[1] * 0x4000000;
29814 } else if (this.length === 3 && this.words[2] === 0x01) {
29815 // NOTE: at this stage it is known that the top bit is set
29816 ret += 0x10000000000000 + (this.words[1] * 0x4000000);
29817 } else if (this.length > 2) {
29818 assert(false, 'Number can only safely store up to 53 bits');
29819 }
29820 return (this.negative !== 0) ? -ret : ret;
29821 };
29822
29823 BN.prototype.toJSON = function toJSON () {
29824 return this.toString(16);
29825 };
29826
29827 BN.prototype.toBuffer = function toBuffer (endian, length) {
29828 assert(typeof Buffer !== 'undefined');
29829 return this.toArrayLike(Buffer, endian, length);
29830 };
29831
29832 BN.prototype.toArray = function toArray (endian, length) {
29833 return this.toArrayLike(Array, endian, length);
29834 };
29835
29836 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
29837 var byteLength = this.byteLength();
29838 var reqLength = length || Math.max(1, byteLength);
29839 assert(byteLength <= reqLength, 'byte array longer than desired length');
29840 assert(reqLength > 0, 'Requested array length <= 0');
29841
29842 this.strip();
29843 var littleEndian = endian === 'le';
29844 var res = new ArrayType(reqLength);
29845
29846 var b, i;
29847 var q = this.clone();
29848 if (!littleEndian) {
29849 // Assume big-endian
29850 for (i = 0; i < reqLength - byteLength; i++) {
29851 res[i] = 0;
29852 }
29853
29854 for (i = 0; !q.isZero(); i++) {
29855 b = q.andln(0xff);
29856 q.iushrn(8);
29857
29858 res[reqLength - i - 1] = b;
29859 }
29860 } else {
29861 for (i = 0; !q.isZero(); i++) {
29862 b = q.andln(0xff);
29863 q.iushrn(8);
29864
29865 res[i] = b;
29866 }
29867
29868 for (; i < reqLength; i++) {
29869 res[i] = 0;
29870 }
29871 }
29872
29873 return res;
29874 };
29875
29876 if (Math.clz32) {
29877 BN.prototype._countBits = function _countBits (w) {
29878 return 32 - Math.clz32(w);
29879 };
29880 } else {
29881 BN.prototype._countBits = function _countBits (w) {
29882 var t = w;
29883 var r = 0;
29884 if (t >= 0x1000) {
29885 r += 13;
29886 t >>>= 13;
29887 }
29888 if (t >= 0x40) {
29889 r += 7;
29890 t >>>= 7;
29891 }
29892 if (t >= 0x8) {
29893 r += 4;
29894 t >>>= 4;
29895 }
29896 if (t >= 0x02) {
29897 r += 2;
29898 t >>>= 2;
29899 }
29900 return r + t;
29901 };
29902 }
29903
29904 BN.prototype._zeroBits = function _zeroBits (w) {
29905 // Short-cut
29906 if (w === 0) return 26;
29907
29908 var t = w;
29909 var r = 0;
29910 if ((t & 0x1fff) === 0) {
29911 r += 13;
29912 t >>>= 13;
29913 }
29914 if ((t & 0x7f) === 0) {
29915 r += 7;
29916 t >>>= 7;
29917 }
29918 if ((t & 0xf) === 0) {
29919 r += 4;
29920 t >>>= 4;
29921 }
29922 if ((t & 0x3) === 0) {
29923 r += 2;
29924 t >>>= 2;
29925 }
29926 if ((t & 0x1) === 0) {
29927 r++;
29928 }
29929 return r;
29930 };
29931
29932 // Return number of used bits in a BN
29933 BN.prototype.bitLength = function bitLength () {
29934 var w = this.words[this.length - 1];
29935 var hi = this._countBits(w);
29936 return (this.length - 1) * 26 + hi;
29937 };
29938
29939 function toBitArray (num) {
29940 var w = new Array(num.bitLength());
29941
29942 for (var bit = 0; bit < w.length; bit++) {
29943 var off = (bit / 26) | 0;
29944 var wbit = bit % 26;
29945
29946 w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
29947 }
29948
29949 return w;
29950 }
29951
29952 // Number of trailing zero bits
29953 BN.prototype.zeroBits = function zeroBits () {
29954 if (this.isZero()) return 0;
29955
29956 var r = 0;
29957 for (var i = 0; i < this.length; i++) {
29958 var b = this._zeroBits(this.words[i]);
29959 r += b;
29960 if (b !== 26) break;
29961 }
29962 return r;
29963 };
29964
29965 BN.prototype.byteLength = function byteLength () {
29966 return Math.ceil(this.bitLength() / 8);
29967 };
29968
29969 BN.prototype.toTwos = function toTwos (width) {
29970 if (this.negative !== 0) {
29971 return this.abs().inotn(width).iaddn(1);
29972 }
29973 return this.clone();
29974 };
29975
29976 BN.prototype.fromTwos = function fromTwos (width) {
29977 if (this.testn(width - 1)) {
29978 return this.notn(width).iaddn(1).ineg();
29979 }
29980 return this.clone();
29981 };
29982
29983 BN.prototype.isNeg = function isNeg () {
29984 return this.negative !== 0;
29985 };
29986
29987 // Return negative clone of `this`
29988 BN.prototype.neg = function neg () {
29989 return this.clone().ineg();
29990 };
29991
29992 BN.prototype.ineg = function ineg () {
29993 if (!this.isZero()) {
29994 this.negative ^= 1;
29995 }
29996
29997 return this;
29998 };
29999
30000 // Or `num` with `this` in-place
30001 BN.prototype.iuor = function iuor (num) {
30002 while (this.length < num.length) {
30003 this.words[this.length++] = 0;
30004 }
30005
30006 for (var i = 0; i < num.length; i++) {
30007 this.words[i] = this.words[i] | num.words[i];
30008 }
30009
30010 return this.strip();
30011 };
30012
30013 BN.prototype.ior = function ior (num) {
30014 assert((this.negative | num.negative) === 0);
30015 return this.iuor(num);
30016 };
30017
30018 // Or `num` with `this`
30019 BN.prototype.or = function or (num) {
30020 if (this.length > num.length) return this.clone().ior(num);
30021 return num.clone().ior(this);
30022 };
30023
30024 BN.prototype.uor = function uor (num) {
30025 if (this.length > num.length) return this.clone().iuor(num);
30026 return num.clone().iuor(this);
30027 };
30028
30029 // And `num` with `this` in-place
30030 BN.prototype.iuand = function iuand (num) {
30031 // b = min-length(num, this)
30032 var b;
30033 if (this.length > num.length) {
30034 b = num;
30035 } else {
30036 b = this;
30037 }
30038
30039 for (var i = 0; i < b.length; i++) {
30040 this.words[i] = this.words[i] & num.words[i];
30041 }
30042
30043 this.length = b.length;
30044
30045 return this.strip();
30046 };
30047
30048 BN.prototype.iand = function iand (num) {
30049 assert((this.negative | num.negative) === 0);
30050 return this.iuand(num);
30051 };
30052
30053 // And `num` with `this`
30054 BN.prototype.and = function and (num) {
30055 if (this.length > num.length) return this.clone().iand(num);
30056 return num.clone().iand(this);
30057 };
30058
30059 BN.prototype.uand = function uand (num) {
30060 if (this.length > num.length) return this.clone().iuand(num);
30061 return num.clone().iuand(this);
30062 };
30063
30064 // Xor `num` with `this` in-place
30065 BN.prototype.iuxor = function iuxor (num) {
30066 // a.length > b.length
30067 var a;
30068 var b;
30069 if (this.length > num.length) {
30070 a = this;
30071 b = num;
30072 } else {
30073 a = num;
30074 b = this;
30075 }
30076
30077 for (var i = 0; i < b.length; i++) {
30078 this.words[i] = a.words[i] ^ b.words[i];
30079 }
30080
30081 if (this !== a) {
30082 for (; i < a.length; i++) {
30083 this.words[i] = a.words[i];
30084 }
30085 }
30086
30087 this.length = a.length;
30088
30089 return this.strip();
30090 };
30091
30092 BN.prototype.ixor = function ixor (num) {
30093 assert((this.negative | num.negative) === 0);
30094 return this.iuxor(num);
30095 };
30096
30097 // Xor `num` with `this`
30098 BN.prototype.xor = function xor (num) {
30099 if (this.length > num.length) return this.clone().ixor(num);
30100 return num.clone().ixor(this);
30101 };
30102
30103 BN.prototype.uxor = function uxor (num) {
30104 if (this.length > num.length) return this.clone().iuxor(num);
30105 return num.clone().iuxor(this);
30106 };
30107
30108 // Not ``this`` with ``width`` bitwidth
30109 BN.prototype.inotn = function inotn (width) {
30110 assert(typeof width === 'number' && width >= 0);
30111
30112 var bytesNeeded = Math.ceil(width / 26) | 0;
30113 var bitsLeft = width % 26;
30114
30115 // Extend the buffer with leading zeroes
30116 this._expand(bytesNeeded);
30117
30118 if (bitsLeft > 0) {
30119 bytesNeeded--;
30120 }
30121
30122 // Handle complete words
30123 for (var i = 0; i < bytesNeeded; i++) {
30124 this.words[i] = ~this.words[i] & 0x3ffffff;
30125 }
30126
30127 // Handle the residue
30128 if (bitsLeft > 0) {
30129 this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
30130 }
30131
30132 // And remove leading zeroes
30133 return this.strip();
30134 };
30135
30136 BN.prototype.notn = function notn (width) {
30137 return this.clone().inotn(width);
30138 };
30139
30140 // Set `bit` of `this`
30141 BN.prototype.setn = function setn (bit, val) {
30142 assert(typeof bit === 'number' && bit >= 0);
30143
30144 var off = (bit / 26) | 0;
30145 var wbit = bit % 26;
30146
30147 this._expand(off + 1);
30148
30149 if (val) {
30150 this.words[off] = this.words[off] | (1 << wbit);
30151 } else {
30152 this.words[off] = this.words[off] & ~(1 << wbit);
30153 }
30154
30155 return this.strip();
30156 };
30157
30158 // Add `num` to `this` in-place
30159 BN.prototype.iadd = function iadd (num) {
30160 var r;
30161
30162 // negative + positive
30163 if (this.negative !== 0 && num.negative === 0) {
30164 this.negative = 0;
30165 r = this.isub(num);
30166 this.negative ^= 1;
30167 return this._normSign();
30168
30169 // positive + negative
30170 } else if (this.negative === 0 && num.negative !== 0) {
30171 num.negative = 0;
30172 r = this.isub(num);
30173 num.negative = 1;
30174 return r._normSign();
30175 }
30176
30177 // a.length > b.length
30178 var a, b;
30179 if (this.length > num.length) {
30180 a = this;
30181 b = num;
30182 } else {
30183 a = num;
30184 b = this;
30185 }
30186
30187 var carry = 0;
30188 for (var i = 0; i < b.length; i++) {
30189 r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
30190 this.words[i] = r & 0x3ffffff;
30191 carry = r >>> 26;
30192 }
30193 for (; carry !== 0 && i < a.length; i++) {
30194 r = (a.words[i] | 0) + carry;
30195 this.words[i] = r & 0x3ffffff;
30196 carry = r >>> 26;
30197 }
30198
30199 this.length = a.length;
30200 if (carry !== 0) {
30201 this.words[this.length] = carry;
30202 this.length++;
30203 // Copy the rest of the words
30204 } else if (a !== this) {
30205 for (; i < a.length; i++) {
30206 this.words[i] = a.words[i];
30207 }
30208 }
30209
30210 return this;
30211 };
30212
30213 // Add `num` to `this`
30214 BN.prototype.add = function add (num) {
30215 var res;
30216 if (num.negative !== 0 && this.negative === 0) {
30217 num.negative = 0;
30218 res = this.sub(num);
30219 num.negative ^= 1;
30220 return res;
30221 } else if (num.negative === 0 && this.negative !== 0) {
30222 this.negative = 0;
30223 res = num.sub(this);
30224 this.negative = 1;
30225 return res;
30226 }
30227
30228 if (this.length > num.length) return this.clone().iadd(num);
30229
30230 return num.clone().iadd(this);
30231 };
30232
30233 // Subtract `num` from `this` in-place
30234 BN.prototype.isub = function isub (num) {
30235 // this - (-num) = this + num
30236 if (num.negative !== 0) {
30237 num.negative = 0;
30238 var r = this.iadd(num);
30239 num.negative = 1;
30240 return r._normSign();
30241
30242 // -this - num = -(this + num)
30243 } else if (this.negative !== 0) {
30244 this.negative = 0;
30245 this.iadd(num);
30246 this.negative = 1;
30247 return this._normSign();
30248 }
30249
30250 // At this point both numbers are positive
30251 var cmp = this.cmp(num);
30252
30253 // Optimization - zeroify
30254 if (cmp === 0) {
30255 this.negative = 0;
30256 this.length = 1;
30257 this.words[0] = 0;
30258 return this;
30259 }
30260
30261 // a > b
30262 var a, b;
30263 if (cmp > 0) {
30264 a = this;
30265 b = num;
30266 } else {
30267 a = num;
30268 b = this;
30269 }
30270
30271 var carry = 0;
30272 for (var i = 0; i < b.length; i++) {
30273 r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
30274 carry = r >> 26;
30275 this.words[i] = r & 0x3ffffff;
30276 }
30277 for (; carry !== 0 && i < a.length; i++) {
30278 r = (a.words[i] | 0) + carry;
30279 carry = r >> 26;
30280 this.words[i] = r & 0x3ffffff;
30281 }
30282
30283 // Copy rest of the words
30284 if (carry === 0 && i < a.length && a !== this) {
30285 for (; i < a.length; i++) {
30286 this.words[i] = a.words[i];
30287 }
30288 }
30289
30290 this.length = Math.max(this.length, i);
30291
30292 if (a !== this) {
30293 this.negative = 1;
30294 }
30295
30296 return this.strip();
30297 };
30298
30299 // Subtract `num` from `this`
30300 BN.prototype.sub = function sub (num) {
30301 return this.clone().isub(num);
30302 };
30303
30304 function smallMulTo (self, num, out) {
30305 out.negative = num.negative ^ self.negative;
30306 var len = (self.length + num.length) | 0;
30307 out.length = len;
30308 len = (len - 1) | 0;
30309
30310 // Peel one iteration (compiler can't do it, because of code complexity)
30311 var a = self.words[0] | 0;
30312 var b = num.words[0] | 0;
30313 var r = a * b;
30314
30315 var lo = r & 0x3ffffff;
30316 var carry = (r / 0x4000000) | 0;
30317 out.words[0] = lo;
30318
30319 for (var k = 1; k < len; k++) {
30320 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
30321 // note that ncarry could be >= 0x3ffffff
30322 var ncarry = carry >>> 26;
30323 var rword = carry & 0x3ffffff;
30324 var maxJ = Math.min(k, num.length - 1);
30325 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
30326 var i = (k - j) | 0;
30327 a = self.words[i] | 0;
30328 b = num.words[j] | 0;
30329 r = a * b + rword;
30330 ncarry += (r / 0x4000000) | 0;
30331 rword = r & 0x3ffffff;
30332 }
30333 out.words[k] = rword | 0;
30334 carry = ncarry | 0;
30335 }
30336 if (carry !== 0) {
30337 out.words[k] = carry | 0;
30338 } else {
30339 out.length--;
30340 }
30341
30342 return out.strip();
30343 }
30344
30345 // TODO(indutny): it may be reasonable to omit it for users who don't need
30346 // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
30347 // multiplication (like elliptic secp256k1).
30348 var comb10MulTo = function comb10MulTo (self, num, out) {
30349 var a = self.words;
30350 var b = num.words;
30351 var o = out.words;
30352 var c = 0;
30353 var lo;
30354 var mid;
30355 var hi;
30356 var a0 = a[0] | 0;
30357 var al0 = a0 & 0x1fff;
30358 var ah0 = a0 >>> 13;
30359 var a1 = a[1] | 0;
30360 var al1 = a1 & 0x1fff;
30361 var ah1 = a1 >>> 13;
30362 var a2 = a[2] | 0;
30363 var al2 = a2 & 0x1fff;
30364 var ah2 = a2 >>> 13;
30365 var a3 = a[3] | 0;
30366 var al3 = a3 & 0x1fff;
30367 var ah3 = a3 >>> 13;
30368 var a4 = a[4] | 0;
30369 var al4 = a4 & 0x1fff;
30370 var ah4 = a4 >>> 13;
30371 var a5 = a[5] | 0;
30372 var al5 = a5 & 0x1fff;
30373 var ah5 = a5 >>> 13;
30374 var a6 = a[6] | 0;
30375 var al6 = a6 & 0x1fff;
30376 var ah6 = a6 >>> 13;
30377 var a7 = a[7] | 0;
30378 var al7 = a7 & 0x1fff;
30379 var ah7 = a7 >>> 13;
30380 var a8 = a[8] | 0;
30381 var al8 = a8 & 0x1fff;
30382 var ah8 = a8 >>> 13;
30383 var a9 = a[9] | 0;
30384 var al9 = a9 & 0x1fff;
30385 var ah9 = a9 >>> 13;
30386 var b0 = b[0] | 0;
30387 var bl0 = b0 & 0x1fff;
30388 var bh0 = b0 >>> 13;
30389 var b1 = b[1] | 0;
30390 var bl1 = b1 & 0x1fff;
30391 var bh1 = b1 >>> 13;
30392 var b2 = b[2] | 0;
30393 var bl2 = b2 & 0x1fff;
30394 var bh2 = b2 >>> 13;
30395 var b3 = b[3] | 0;
30396 var bl3 = b3 & 0x1fff;
30397 var bh3 = b3 >>> 13;
30398 var b4 = b[4] | 0;
30399 var bl4 = b4 & 0x1fff;
30400 var bh4 = b4 >>> 13;
30401 var b5 = b[5] | 0;
30402 var bl5 = b5 & 0x1fff;
30403 var bh5 = b5 >>> 13;
30404 var b6 = b[6] | 0;
30405 var bl6 = b6 & 0x1fff;
30406 var bh6 = b6 >>> 13;
30407 var b7 = b[7] | 0;
30408 var bl7 = b7 & 0x1fff;
30409 var bh7 = b7 >>> 13;
30410 var b8 = b[8] | 0;
30411 var bl8 = b8 & 0x1fff;
30412 var bh8 = b8 >>> 13;
30413 var b9 = b[9] | 0;
30414 var bl9 = b9 & 0x1fff;
30415 var bh9 = b9 >>> 13;
30416
30417 out.negative = self.negative ^ num.negative;
30418 out.length = 19;
30419 /* k = 0 */
30420 lo = Math.imul(al0, bl0);
30421 mid = Math.imul(al0, bh0);
30422 mid = (mid + Math.imul(ah0, bl0)) | 0;
30423 hi = Math.imul(ah0, bh0);
30424 var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30425 c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
30426 w0 &= 0x3ffffff;
30427 /* k = 1 */
30428 lo = Math.imul(al1, bl0);
30429 mid = Math.imul(al1, bh0);
30430 mid = (mid + Math.imul(ah1, bl0)) | 0;
30431 hi = Math.imul(ah1, bh0);
30432 lo = (lo + Math.imul(al0, bl1)) | 0;
30433 mid = (mid + Math.imul(al0, bh1)) | 0;
30434 mid = (mid + Math.imul(ah0, bl1)) | 0;
30435 hi = (hi + Math.imul(ah0, bh1)) | 0;
30436 var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30437 c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
30438 w1 &= 0x3ffffff;
30439 /* k = 2 */
30440 lo = Math.imul(al2, bl0);
30441 mid = Math.imul(al2, bh0);
30442 mid = (mid + Math.imul(ah2, bl0)) | 0;
30443 hi = Math.imul(ah2, bh0);
30444 lo = (lo + Math.imul(al1, bl1)) | 0;
30445 mid = (mid + Math.imul(al1, bh1)) | 0;
30446 mid = (mid + Math.imul(ah1, bl1)) | 0;
30447 hi = (hi + Math.imul(ah1, bh1)) | 0;
30448 lo = (lo + Math.imul(al0, bl2)) | 0;
30449 mid = (mid + Math.imul(al0, bh2)) | 0;
30450 mid = (mid + Math.imul(ah0, bl2)) | 0;
30451 hi = (hi + Math.imul(ah0, bh2)) | 0;
30452 var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30453 c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
30454 w2 &= 0x3ffffff;
30455 /* k = 3 */
30456 lo = Math.imul(al3, bl0);
30457 mid = Math.imul(al3, bh0);
30458 mid = (mid + Math.imul(ah3, bl0)) | 0;
30459 hi = Math.imul(ah3, bh0);
30460 lo = (lo + Math.imul(al2, bl1)) | 0;
30461 mid = (mid + Math.imul(al2, bh1)) | 0;
30462 mid = (mid + Math.imul(ah2, bl1)) | 0;
30463 hi = (hi + Math.imul(ah2, bh1)) | 0;
30464 lo = (lo + Math.imul(al1, bl2)) | 0;
30465 mid = (mid + Math.imul(al1, bh2)) | 0;
30466 mid = (mid + Math.imul(ah1, bl2)) | 0;
30467 hi = (hi + Math.imul(ah1, bh2)) | 0;
30468 lo = (lo + Math.imul(al0, bl3)) | 0;
30469 mid = (mid + Math.imul(al0, bh3)) | 0;
30470 mid = (mid + Math.imul(ah0, bl3)) | 0;
30471 hi = (hi + Math.imul(ah0, bh3)) | 0;
30472 var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30473 c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
30474 w3 &= 0x3ffffff;
30475 /* k = 4 */
30476 lo = Math.imul(al4, bl0);
30477 mid = Math.imul(al4, bh0);
30478 mid = (mid + Math.imul(ah4, bl0)) | 0;
30479 hi = Math.imul(ah4, bh0);
30480 lo = (lo + Math.imul(al3, bl1)) | 0;
30481 mid = (mid + Math.imul(al3, bh1)) | 0;
30482 mid = (mid + Math.imul(ah3, bl1)) | 0;
30483 hi = (hi + Math.imul(ah3, bh1)) | 0;
30484 lo = (lo + Math.imul(al2, bl2)) | 0;
30485 mid = (mid + Math.imul(al2, bh2)) | 0;
30486 mid = (mid + Math.imul(ah2, bl2)) | 0;
30487 hi = (hi + Math.imul(ah2, bh2)) | 0;
30488 lo = (lo + Math.imul(al1, bl3)) | 0;
30489 mid = (mid + Math.imul(al1, bh3)) | 0;
30490 mid = (mid + Math.imul(ah1, bl3)) | 0;
30491 hi = (hi + Math.imul(ah1, bh3)) | 0;
30492 lo = (lo + Math.imul(al0, bl4)) | 0;
30493 mid = (mid + Math.imul(al0, bh4)) | 0;
30494 mid = (mid + Math.imul(ah0, bl4)) | 0;
30495 hi = (hi + Math.imul(ah0, bh4)) | 0;
30496 var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30497 c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
30498 w4 &= 0x3ffffff;
30499 /* k = 5 */
30500 lo = Math.imul(al5, bl0);
30501 mid = Math.imul(al5, bh0);
30502 mid = (mid + Math.imul(ah5, bl0)) | 0;
30503 hi = Math.imul(ah5, bh0);
30504 lo = (lo + Math.imul(al4, bl1)) | 0;
30505 mid = (mid + Math.imul(al4, bh1)) | 0;
30506 mid = (mid + Math.imul(ah4, bl1)) | 0;
30507 hi = (hi + Math.imul(ah4, bh1)) | 0;
30508 lo = (lo + Math.imul(al3, bl2)) | 0;
30509 mid = (mid + Math.imul(al3, bh2)) | 0;
30510 mid = (mid + Math.imul(ah3, bl2)) | 0;
30511 hi = (hi + Math.imul(ah3, bh2)) | 0;
30512 lo = (lo + Math.imul(al2, bl3)) | 0;
30513 mid = (mid + Math.imul(al2, bh3)) | 0;
30514 mid = (mid + Math.imul(ah2, bl3)) | 0;
30515 hi = (hi + Math.imul(ah2, bh3)) | 0;
30516 lo = (lo + Math.imul(al1, bl4)) | 0;
30517 mid = (mid + Math.imul(al1, bh4)) | 0;
30518 mid = (mid + Math.imul(ah1, bl4)) | 0;
30519 hi = (hi + Math.imul(ah1, bh4)) | 0;
30520 lo = (lo + Math.imul(al0, bl5)) | 0;
30521 mid = (mid + Math.imul(al0, bh5)) | 0;
30522 mid = (mid + Math.imul(ah0, bl5)) | 0;
30523 hi = (hi + Math.imul(ah0, bh5)) | 0;
30524 var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30525 c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
30526 w5 &= 0x3ffffff;
30527 /* k = 6 */
30528 lo = Math.imul(al6, bl0);
30529 mid = Math.imul(al6, bh0);
30530 mid = (mid + Math.imul(ah6, bl0)) | 0;
30531 hi = Math.imul(ah6, bh0);
30532 lo = (lo + Math.imul(al5, bl1)) | 0;
30533 mid = (mid + Math.imul(al5, bh1)) | 0;
30534 mid = (mid + Math.imul(ah5, bl1)) | 0;
30535 hi = (hi + Math.imul(ah5, bh1)) | 0;
30536 lo = (lo + Math.imul(al4, bl2)) | 0;
30537 mid = (mid + Math.imul(al4, bh2)) | 0;
30538 mid = (mid + Math.imul(ah4, bl2)) | 0;
30539 hi = (hi + Math.imul(ah4, bh2)) | 0;
30540 lo = (lo + Math.imul(al3, bl3)) | 0;
30541 mid = (mid + Math.imul(al3, bh3)) | 0;
30542 mid = (mid + Math.imul(ah3, bl3)) | 0;
30543 hi = (hi + Math.imul(ah3, bh3)) | 0;
30544 lo = (lo + Math.imul(al2, bl4)) | 0;
30545 mid = (mid + Math.imul(al2, bh4)) | 0;
30546 mid = (mid + Math.imul(ah2, bl4)) | 0;
30547 hi = (hi + Math.imul(ah2, bh4)) | 0;
30548 lo = (lo + Math.imul(al1, bl5)) | 0;
30549 mid = (mid + Math.imul(al1, bh5)) | 0;
30550 mid = (mid + Math.imul(ah1, bl5)) | 0;
30551 hi = (hi + Math.imul(ah1, bh5)) | 0;
30552 lo = (lo + Math.imul(al0, bl6)) | 0;
30553 mid = (mid + Math.imul(al0, bh6)) | 0;
30554 mid = (mid + Math.imul(ah0, bl6)) | 0;
30555 hi = (hi + Math.imul(ah0, bh6)) | 0;
30556 var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30557 c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
30558 w6 &= 0x3ffffff;
30559 /* k = 7 */
30560 lo = Math.imul(al7, bl0);
30561 mid = Math.imul(al7, bh0);
30562 mid = (mid + Math.imul(ah7, bl0)) | 0;
30563 hi = Math.imul(ah7, bh0);
30564 lo = (lo + Math.imul(al6, bl1)) | 0;
30565 mid = (mid + Math.imul(al6, bh1)) | 0;
30566 mid = (mid + Math.imul(ah6, bl1)) | 0;
30567 hi = (hi + Math.imul(ah6, bh1)) | 0;
30568 lo = (lo + Math.imul(al5, bl2)) | 0;
30569 mid = (mid + Math.imul(al5, bh2)) | 0;
30570 mid = (mid + Math.imul(ah5, bl2)) | 0;
30571 hi = (hi + Math.imul(ah5, bh2)) | 0;
30572 lo = (lo + Math.imul(al4, bl3)) | 0;
30573 mid = (mid + Math.imul(al4, bh3)) | 0;
30574 mid = (mid + Math.imul(ah4, bl3)) | 0;
30575 hi = (hi + Math.imul(ah4, bh3)) | 0;
30576 lo = (lo + Math.imul(al3, bl4)) | 0;
30577 mid = (mid + Math.imul(al3, bh4)) | 0;
30578 mid = (mid + Math.imul(ah3, bl4)) | 0;
30579 hi = (hi + Math.imul(ah3, bh4)) | 0;
30580 lo = (lo + Math.imul(al2, bl5)) | 0;
30581 mid = (mid + Math.imul(al2, bh5)) | 0;
30582 mid = (mid + Math.imul(ah2, bl5)) | 0;
30583 hi = (hi + Math.imul(ah2, bh5)) | 0;
30584 lo = (lo + Math.imul(al1, bl6)) | 0;
30585 mid = (mid + Math.imul(al1, bh6)) | 0;
30586 mid = (mid + Math.imul(ah1, bl6)) | 0;
30587 hi = (hi + Math.imul(ah1, bh6)) | 0;
30588 lo = (lo + Math.imul(al0, bl7)) | 0;
30589 mid = (mid + Math.imul(al0, bh7)) | 0;
30590 mid = (mid + Math.imul(ah0, bl7)) | 0;
30591 hi = (hi + Math.imul(ah0, bh7)) | 0;
30592 var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30593 c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
30594 w7 &= 0x3ffffff;
30595 /* k = 8 */
30596 lo = Math.imul(al8, bl0);
30597 mid = Math.imul(al8, bh0);
30598 mid = (mid + Math.imul(ah8, bl0)) | 0;
30599 hi = Math.imul(ah8, bh0);
30600 lo = (lo + Math.imul(al7, bl1)) | 0;
30601 mid = (mid + Math.imul(al7, bh1)) | 0;
30602 mid = (mid + Math.imul(ah7, bl1)) | 0;
30603 hi = (hi + Math.imul(ah7, bh1)) | 0;
30604 lo = (lo + Math.imul(al6, bl2)) | 0;
30605 mid = (mid + Math.imul(al6, bh2)) | 0;
30606 mid = (mid + Math.imul(ah6, bl2)) | 0;
30607 hi = (hi + Math.imul(ah6, bh2)) | 0;
30608 lo = (lo + Math.imul(al5, bl3)) | 0;
30609 mid = (mid + Math.imul(al5, bh3)) | 0;
30610 mid = (mid + Math.imul(ah5, bl3)) | 0;
30611 hi = (hi + Math.imul(ah5, bh3)) | 0;
30612 lo = (lo + Math.imul(al4, bl4)) | 0;
30613 mid = (mid + Math.imul(al4, bh4)) | 0;
30614 mid = (mid + Math.imul(ah4, bl4)) | 0;
30615 hi = (hi + Math.imul(ah4, bh4)) | 0;
30616 lo = (lo + Math.imul(al3, bl5)) | 0;
30617 mid = (mid + Math.imul(al3, bh5)) | 0;
30618 mid = (mid + Math.imul(ah3, bl5)) | 0;
30619 hi = (hi + Math.imul(ah3, bh5)) | 0;
30620 lo = (lo + Math.imul(al2, bl6)) | 0;
30621 mid = (mid + Math.imul(al2, bh6)) | 0;
30622 mid = (mid + Math.imul(ah2, bl6)) | 0;
30623 hi = (hi + Math.imul(ah2, bh6)) | 0;
30624 lo = (lo + Math.imul(al1, bl7)) | 0;
30625 mid = (mid + Math.imul(al1, bh7)) | 0;
30626 mid = (mid + Math.imul(ah1, bl7)) | 0;
30627 hi = (hi + Math.imul(ah1, bh7)) | 0;
30628 lo = (lo + Math.imul(al0, bl8)) | 0;
30629 mid = (mid + Math.imul(al0, bh8)) | 0;
30630 mid = (mid + Math.imul(ah0, bl8)) | 0;
30631 hi = (hi + Math.imul(ah0, bh8)) | 0;
30632 var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30633 c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
30634 w8 &= 0x3ffffff;
30635 /* k = 9 */
30636 lo = Math.imul(al9, bl0);
30637 mid = Math.imul(al9, bh0);
30638 mid = (mid + Math.imul(ah9, bl0)) | 0;
30639 hi = Math.imul(ah9, bh0);
30640 lo = (lo + Math.imul(al8, bl1)) | 0;
30641 mid = (mid + Math.imul(al8, bh1)) | 0;
30642 mid = (mid + Math.imul(ah8, bl1)) | 0;
30643 hi = (hi + Math.imul(ah8, bh1)) | 0;
30644 lo = (lo + Math.imul(al7, bl2)) | 0;
30645 mid = (mid + Math.imul(al7, bh2)) | 0;
30646 mid = (mid + Math.imul(ah7, bl2)) | 0;
30647 hi = (hi + Math.imul(ah7, bh2)) | 0;
30648 lo = (lo + Math.imul(al6, bl3)) | 0;
30649 mid = (mid + Math.imul(al6, bh3)) | 0;
30650 mid = (mid + Math.imul(ah6, bl3)) | 0;
30651 hi = (hi + Math.imul(ah6, bh3)) | 0;
30652 lo = (lo + Math.imul(al5, bl4)) | 0;
30653 mid = (mid + Math.imul(al5, bh4)) | 0;
30654 mid = (mid + Math.imul(ah5, bl4)) | 0;
30655 hi = (hi + Math.imul(ah5, bh4)) | 0;
30656 lo = (lo + Math.imul(al4, bl5)) | 0;
30657 mid = (mid + Math.imul(al4, bh5)) | 0;
30658 mid = (mid + Math.imul(ah4, bl5)) | 0;
30659 hi = (hi + Math.imul(ah4, bh5)) | 0;
30660 lo = (lo + Math.imul(al3, bl6)) | 0;
30661 mid = (mid + Math.imul(al3, bh6)) | 0;
30662 mid = (mid + Math.imul(ah3, bl6)) | 0;
30663 hi = (hi + Math.imul(ah3, bh6)) | 0;
30664 lo = (lo + Math.imul(al2, bl7)) | 0;
30665 mid = (mid + Math.imul(al2, bh7)) | 0;
30666 mid = (mid + Math.imul(ah2, bl7)) | 0;
30667 hi = (hi + Math.imul(ah2, bh7)) | 0;
30668 lo = (lo + Math.imul(al1, bl8)) | 0;
30669 mid = (mid + Math.imul(al1, bh8)) | 0;
30670 mid = (mid + Math.imul(ah1, bl8)) | 0;
30671 hi = (hi + Math.imul(ah1, bh8)) | 0;
30672 lo = (lo + Math.imul(al0, bl9)) | 0;
30673 mid = (mid + Math.imul(al0, bh9)) | 0;
30674 mid = (mid + Math.imul(ah0, bl9)) | 0;
30675 hi = (hi + Math.imul(ah0, bh9)) | 0;
30676 var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30677 c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
30678 w9 &= 0x3ffffff;
30679 /* k = 10 */
30680 lo = Math.imul(al9, bl1);
30681 mid = Math.imul(al9, bh1);
30682 mid = (mid + Math.imul(ah9, bl1)) | 0;
30683 hi = Math.imul(ah9, bh1);
30684 lo = (lo + Math.imul(al8, bl2)) | 0;
30685 mid = (mid + Math.imul(al8, bh2)) | 0;
30686 mid = (mid + Math.imul(ah8, bl2)) | 0;
30687 hi = (hi + Math.imul(ah8, bh2)) | 0;
30688 lo = (lo + Math.imul(al7, bl3)) | 0;
30689 mid = (mid + Math.imul(al7, bh3)) | 0;
30690 mid = (mid + Math.imul(ah7, bl3)) | 0;
30691 hi = (hi + Math.imul(ah7, bh3)) | 0;
30692 lo = (lo + Math.imul(al6, bl4)) | 0;
30693 mid = (mid + Math.imul(al6, bh4)) | 0;
30694 mid = (mid + Math.imul(ah6, bl4)) | 0;
30695 hi = (hi + Math.imul(ah6, bh4)) | 0;
30696 lo = (lo + Math.imul(al5, bl5)) | 0;
30697 mid = (mid + Math.imul(al5, bh5)) | 0;
30698 mid = (mid + Math.imul(ah5, bl5)) | 0;
30699 hi = (hi + Math.imul(ah5, bh5)) | 0;
30700 lo = (lo + Math.imul(al4, bl6)) | 0;
30701 mid = (mid + Math.imul(al4, bh6)) | 0;
30702 mid = (mid + Math.imul(ah4, bl6)) | 0;
30703 hi = (hi + Math.imul(ah4, bh6)) | 0;
30704 lo = (lo + Math.imul(al3, bl7)) | 0;
30705 mid = (mid + Math.imul(al3, bh7)) | 0;
30706 mid = (mid + Math.imul(ah3, bl7)) | 0;
30707 hi = (hi + Math.imul(ah3, bh7)) | 0;
30708 lo = (lo + Math.imul(al2, bl8)) | 0;
30709 mid = (mid + Math.imul(al2, bh8)) | 0;
30710 mid = (mid + Math.imul(ah2, bl8)) | 0;
30711 hi = (hi + Math.imul(ah2, bh8)) | 0;
30712 lo = (lo + Math.imul(al1, bl9)) | 0;
30713 mid = (mid + Math.imul(al1, bh9)) | 0;
30714 mid = (mid + Math.imul(ah1, bl9)) | 0;
30715 hi = (hi + Math.imul(ah1, bh9)) | 0;
30716 var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30717 c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
30718 w10 &= 0x3ffffff;
30719 /* k = 11 */
30720 lo = Math.imul(al9, bl2);
30721 mid = Math.imul(al9, bh2);
30722 mid = (mid + Math.imul(ah9, bl2)) | 0;
30723 hi = Math.imul(ah9, bh2);
30724 lo = (lo + Math.imul(al8, bl3)) | 0;
30725 mid = (mid + Math.imul(al8, bh3)) | 0;
30726 mid = (mid + Math.imul(ah8, bl3)) | 0;
30727 hi = (hi + Math.imul(ah8, bh3)) | 0;
30728 lo = (lo + Math.imul(al7, bl4)) | 0;
30729 mid = (mid + Math.imul(al7, bh4)) | 0;
30730 mid = (mid + Math.imul(ah7, bl4)) | 0;
30731 hi = (hi + Math.imul(ah7, bh4)) | 0;
30732 lo = (lo + Math.imul(al6, bl5)) | 0;
30733 mid = (mid + Math.imul(al6, bh5)) | 0;
30734 mid = (mid + Math.imul(ah6, bl5)) | 0;
30735 hi = (hi + Math.imul(ah6, bh5)) | 0;
30736 lo = (lo + Math.imul(al5, bl6)) | 0;
30737 mid = (mid + Math.imul(al5, bh6)) | 0;
30738 mid = (mid + Math.imul(ah5, bl6)) | 0;
30739 hi = (hi + Math.imul(ah5, bh6)) | 0;
30740 lo = (lo + Math.imul(al4, bl7)) | 0;
30741 mid = (mid + Math.imul(al4, bh7)) | 0;
30742 mid = (mid + Math.imul(ah4, bl7)) | 0;
30743 hi = (hi + Math.imul(ah4, bh7)) | 0;
30744 lo = (lo + Math.imul(al3, bl8)) | 0;
30745 mid = (mid + Math.imul(al3, bh8)) | 0;
30746 mid = (mid + Math.imul(ah3, bl8)) | 0;
30747 hi = (hi + Math.imul(ah3, bh8)) | 0;
30748 lo = (lo + Math.imul(al2, bl9)) | 0;
30749 mid = (mid + Math.imul(al2, bh9)) | 0;
30750 mid = (mid + Math.imul(ah2, bl9)) | 0;
30751 hi = (hi + Math.imul(ah2, bh9)) | 0;
30752 var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30753 c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
30754 w11 &= 0x3ffffff;
30755 /* k = 12 */
30756 lo = Math.imul(al9, bl3);
30757 mid = Math.imul(al9, bh3);
30758 mid = (mid + Math.imul(ah9, bl3)) | 0;
30759 hi = Math.imul(ah9, bh3);
30760 lo = (lo + Math.imul(al8, bl4)) | 0;
30761 mid = (mid + Math.imul(al8, bh4)) | 0;
30762 mid = (mid + Math.imul(ah8, bl4)) | 0;
30763 hi = (hi + Math.imul(ah8, bh4)) | 0;
30764 lo = (lo + Math.imul(al7, bl5)) | 0;
30765 mid = (mid + Math.imul(al7, bh5)) | 0;
30766 mid = (mid + Math.imul(ah7, bl5)) | 0;
30767 hi = (hi + Math.imul(ah7, bh5)) | 0;
30768 lo = (lo + Math.imul(al6, bl6)) | 0;
30769 mid = (mid + Math.imul(al6, bh6)) | 0;
30770 mid = (mid + Math.imul(ah6, bl6)) | 0;
30771 hi = (hi + Math.imul(ah6, bh6)) | 0;
30772 lo = (lo + Math.imul(al5, bl7)) | 0;
30773 mid = (mid + Math.imul(al5, bh7)) | 0;
30774 mid = (mid + Math.imul(ah5, bl7)) | 0;
30775 hi = (hi + Math.imul(ah5, bh7)) | 0;
30776 lo = (lo + Math.imul(al4, bl8)) | 0;
30777 mid = (mid + Math.imul(al4, bh8)) | 0;
30778 mid = (mid + Math.imul(ah4, bl8)) | 0;
30779 hi = (hi + Math.imul(ah4, bh8)) | 0;
30780 lo = (lo + Math.imul(al3, bl9)) | 0;
30781 mid = (mid + Math.imul(al3, bh9)) | 0;
30782 mid = (mid + Math.imul(ah3, bl9)) | 0;
30783 hi = (hi + Math.imul(ah3, bh9)) | 0;
30784 var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30785 c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
30786 w12 &= 0x3ffffff;
30787 /* k = 13 */
30788 lo = Math.imul(al9, bl4);
30789 mid = Math.imul(al9, bh4);
30790 mid = (mid + Math.imul(ah9, bl4)) | 0;
30791 hi = Math.imul(ah9, bh4);
30792 lo = (lo + Math.imul(al8, bl5)) | 0;
30793 mid = (mid + Math.imul(al8, bh5)) | 0;
30794 mid = (mid + Math.imul(ah8, bl5)) | 0;
30795 hi = (hi + Math.imul(ah8, bh5)) | 0;
30796 lo = (lo + Math.imul(al7, bl6)) | 0;
30797 mid = (mid + Math.imul(al7, bh6)) | 0;
30798 mid = (mid + Math.imul(ah7, bl6)) | 0;
30799 hi = (hi + Math.imul(ah7, bh6)) | 0;
30800 lo = (lo + Math.imul(al6, bl7)) | 0;
30801 mid = (mid + Math.imul(al6, bh7)) | 0;
30802 mid = (mid + Math.imul(ah6, bl7)) | 0;
30803 hi = (hi + Math.imul(ah6, bh7)) | 0;
30804 lo = (lo + Math.imul(al5, bl8)) | 0;
30805 mid = (mid + Math.imul(al5, bh8)) | 0;
30806 mid = (mid + Math.imul(ah5, bl8)) | 0;
30807 hi = (hi + Math.imul(ah5, bh8)) | 0;
30808 lo = (lo + Math.imul(al4, bl9)) | 0;
30809 mid = (mid + Math.imul(al4, bh9)) | 0;
30810 mid = (mid + Math.imul(ah4, bl9)) | 0;
30811 hi = (hi + Math.imul(ah4, bh9)) | 0;
30812 var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30813 c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
30814 w13 &= 0x3ffffff;
30815 /* k = 14 */
30816 lo = Math.imul(al9, bl5);
30817 mid = Math.imul(al9, bh5);
30818 mid = (mid + Math.imul(ah9, bl5)) | 0;
30819 hi = Math.imul(ah9, bh5);
30820 lo = (lo + Math.imul(al8, bl6)) | 0;
30821 mid = (mid + Math.imul(al8, bh6)) | 0;
30822 mid = (mid + Math.imul(ah8, bl6)) | 0;
30823 hi = (hi + Math.imul(ah8, bh6)) | 0;
30824 lo = (lo + Math.imul(al7, bl7)) | 0;
30825 mid = (mid + Math.imul(al7, bh7)) | 0;
30826 mid = (mid + Math.imul(ah7, bl7)) | 0;
30827 hi = (hi + Math.imul(ah7, bh7)) | 0;
30828 lo = (lo + Math.imul(al6, bl8)) | 0;
30829 mid = (mid + Math.imul(al6, bh8)) | 0;
30830 mid = (mid + Math.imul(ah6, bl8)) | 0;
30831 hi = (hi + Math.imul(ah6, bh8)) | 0;
30832 lo = (lo + Math.imul(al5, bl9)) | 0;
30833 mid = (mid + Math.imul(al5, bh9)) | 0;
30834 mid = (mid + Math.imul(ah5, bl9)) | 0;
30835 hi = (hi + Math.imul(ah5, bh9)) | 0;
30836 var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30837 c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
30838 w14 &= 0x3ffffff;
30839 /* k = 15 */
30840 lo = Math.imul(al9, bl6);
30841 mid = Math.imul(al9, bh6);
30842 mid = (mid + Math.imul(ah9, bl6)) | 0;
30843 hi = Math.imul(ah9, bh6);
30844 lo = (lo + Math.imul(al8, bl7)) | 0;
30845 mid = (mid + Math.imul(al8, bh7)) | 0;
30846 mid = (mid + Math.imul(ah8, bl7)) | 0;
30847 hi = (hi + Math.imul(ah8, bh7)) | 0;
30848 lo = (lo + Math.imul(al7, bl8)) | 0;
30849 mid = (mid + Math.imul(al7, bh8)) | 0;
30850 mid = (mid + Math.imul(ah7, bl8)) | 0;
30851 hi = (hi + Math.imul(ah7, bh8)) | 0;
30852 lo = (lo + Math.imul(al6, bl9)) | 0;
30853 mid = (mid + Math.imul(al6, bh9)) | 0;
30854 mid = (mid + Math.imul(ah6, bl9)) | 0;
30855 hi = (hi + Math.imul(ah6, bh9)) | 0;
30856 var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30857 c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
30858 w15 &= 0x3ffffff;
30859 /* k = 16 */
30860 lo = Math.imul(al9, bl7);
30861 mid = Math.imul(al9, bh7);
30862 mid = (mid + Math.imul(ah9, bl7)) | 0;
30863 hi = Math.imul(ah9, bh7);
30864 lo = (lo + Math.imul(al8, bl8)) | 0;
30865 mid = (mid + Math.imul(al8, bh8)) | 0;
30866 mid = (mid + Math.imul(ah8, bl8)) | 0;
30867 hi = (hi + Math.imul(ah8, bh8)) | 0;
30868 lo = (lo + Math.imul(al7, bl9)) | 0;
30869 mid = (mid + Math.imul(al7, bh9)) | 0;
30870 mid = (mid + Math.imul(ah7, bl9)) | 0;
30871 hi = (hi + Math.imul(ah7, bh9)) | 0;
30872 var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30873 c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
30874 w16 &= 0x3ffffff;
30875 /* k = 17 */
30876 lo = Math.imul(al9, bl8);
30877 mid = Math.imul(al9, bh8);
30878 mid = (mid + Math.imul(ah9, bl8)) | 0;
30879 hi = Math.imul(ah9, bh8);
30880 lo = (lo + Math.imul(al8, bl9)) | 0;
30881 mid = (mid + Math.imul(al8, bh9)) | 0;
30882 mid = (mid + Math.imul(ah8, bl9)) | 0;
30883 hi = (hi + Math.imul(ah8, bh9)) | 0;
30884 var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30885 c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
30886 w17 &= 0x3ffffff;
30887 /* k = 18 */
30888 lo = Math.imul(al9, bl9);
30889 mid = Math.imul(al9, bh9);
30890 mid = (mid + Math.imul(ah9, bl9)) | 0;
30891 hi = Math.imul(ah9, bh9);
30892 var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30893 c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
30894 w18 &= 0x3ffffff;
30895 o[0] = w0;
30896 o[1] = w1;
30897 o[2] = w2;
30898 o[3] = w3;
30899 o[4] = w4;
30900 o[5] = w5;
30901 o[6] = w6;
30902 o[7] = w7;
30903 o[8] = w8;
30904 o[9] = w9;
30905 o[10] = w10;
30906 o[11] = w11;
30907 o[12] = w12;
30908 o[13] = w13;
30909 o[14] = w14;
30910 o[15] = w15;
30911 o[16] = w16;
30912 o[17] = w17;
30913 o[18] = w18;
30914 if (c !== 0) {
30915 o[19] = c;
30916 out.length++;
30917 }
30918 return out;
30919 };
30920
30921 // Polyfill comb
30922 if (!Math.imul) {
30923 comb10MulTo = smallMulTo;
30924 }
30925
30926 function bigMulTo (self, num, out) {
30927 out.negative = num.negative ^ self.negative;
30928 out.length = self.length + num.length;
30929
30930 var carry = 0;
30931 var hncarry = 0;
30932 for (var k = 0; k < out.length - 1; k++) {
30933 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
30934 // note that ncarry could be >= 0x3ffffff
30935 var ncarry = hncarry;
30936 hncarry = 0;
30937 var rword = carry & 0x3ffffff;
30938 var maxJ = Math.min(k, num.length - 1);
30939 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
30940 var i = k - j;
30941 var a = self.words[i] | 0;
30942 var b = num.words[j] | 0;
30943 var r = a * b;
30944
30945 var lo = r & 0x3ffffff;
30946 ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
30947 lo = (lo + rword) | 0;
30948 rword = lo & 0x3ffffff;
30949 ncarry = (ncarry + (lo >>> 26)) | 0;
30950
30951 hncarry += ncarry >>> 26;
30952 ncarry &= 0x3ffffff;
30953 }
30954 out.words[k] = rword;
30955 carry = ncarry;
30956 ncarry = hncarry;
30957 }
30958 if (carry !== 0) {
30959 out.words[k] = carry;
30960 } else {
30961 out.length--;
30962 }
30963
30964 return out.strip();
30965 }
30966
30967 function jumboMulTo (self, num, out) {
30968 var fftm = new FFTM();
30969 return fftm.mulp(self, num, out);
30970 }
30971
30972 BN.prototype.mulTo = function mulTo (num, out) {
30973 var res;
30974 var len = this.length + num.length;
30975 if (this.length === 10 && num.length === 10) {
30976 res = comb10MulTo(this, num, out);
30977 } else if (len < 63) {
30978 res = smallMulTo(this, num, out);
30979 } else if (len < 1024) {
30980 res = bigMulTo(this, num, out);
30981 } else {
30982 res = jumboMulTo(this, num, out);
30983 }
30984
30985 return res;
30986 };
30987
30988 // Cooley-Tukey algorithm for FFT
30989 // slightly revisited to rely on looping instead of recursion
30990
30991 function FFTM (x, y) {
30992 this.x = x;
30993 this.y = y;
30994 }
30995
30996 FFTM.prototype.makeRBT = function makeRBT (N) {
30997 var t = new Array(N);
30998 var l = BN.prototype._countBits(N) - 1;
30999 for (var i = 0; i < N; i++) {
31000 t[i] = this.revBin(i, l, N);
31001 }
31002
31003 return t;
31004 };
31005
31006 // Returns binary-reversed representation of `x`
31007 FFTM.prototype.revBin = function revBin (x, l, N) {
31008 if (x === 0 || x === N - 1) return x;
31009
31010 var rb = 0;
31011 for (var i = 0; i < l; i++) {
31012 rb |= (x & 1) << (l - i - 1);
31013 x >>= 1;
31014 }
31015
31016 return rb;
31017 };
31018
31019 // Performs "tweedling" phase, therefore 'emulating'
31020 // behaviour of the recursive algorithm
31021 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
31022 for (var i = 0; i < N; i++) {
31023 rtws[i] = rws[rbt[i]];
31024 itws[i] = iws[rbt[i]];
31025 }
31026 };
31027
31028 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
31029 this.permute(rbt, rws, iws, rtws, itws, N);
31030
31031 for (var s = 1; s < N; s <<= 1) {
31032 var l = s << 1;
31033
31034 var rtwdf = Math.cos(2 * Math.PI / l);
31035 var itwdf = Math.sin(2 * Math.PI / l);
31036
31037 for (var p = 0; p < N; p += l) {
31038 var rtwdf_ = rtwdf;
31039 var itwdf_ = itwdf;
31040
31041 for (var j = 0; j < s; j++) {
31042 var re = rtws[p + j];
31043 var ie = itws[p + j];
31044
31045 var ro = rtws[p + j + s];
31046 var io = itws[p + j + s];
31047
31048 var rx = rtwdf_ * ro - itwdf_ * io;
31049
31050 io = rtwdf_ * io + itwdf_ * ro;
31051 ro = rx;
31052
31053 rtws[p + j] = re + ro;
31054 itws[p + j] = ie + io;
31055
31056 rtws[p + j + s] = re - ro;
31057 itws[p + j + s] = ie - io;
31058
31059 /* jshint maxdepth : false */
31060 if (j !== l) {
31061 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
31062
31063 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
31064 rtwdf_ = rx;
31065 }
31066 }
31067 }
31068 }
31069 };
31070
31071 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
31072 var N = Math.max(m, n) | 1;
31073 var odd = N & 1;
31074 var i = 0;
31075 for (N = N / 2 | 0; N; N = N >>> 1) {
31076 i++;
31077 }
31078
31079 return 1 << i + 1 + odd;
31080 };
31081
31082 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
31083 if (N <= 1) return;
31084
31085 for (var i = 0; i < N / 2; i++) {
31086 var t = rws[i];
31087
31088 rws[i] = rws[N - i - 1];
31089 rws[N - i - 1] = t;
31090
31091 t = iws[i];
31092
31093 iws[i] = -iws[N - i - 1];
31094 iws[N - i - 1] = -t;
31095 }
31096 };
31097
31098 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
31099 var carry = 0;
31100 for (var i = 0; i < N / 2; i++) {
31101 var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
31102 Math.round(ws[2 * i] / N) +
31103 carry;
31104
31105 ws[i] = w & 0x3ffffff;
31106
31107 if (w < 0x4000000) {
31108 carry = 0;
31109 } else {
31110 carry = w / 0x4000000 | 0;
31111 }
31112 }
31113
31114 return ws;
31115 };
31116
31117 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
31118 var carry = 0;
31119 for (var i = 0; i < len; i++) {
31120 carry = carry + (ws[i] | 0);
31121
31122 rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
31123 rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
31124 }
31125
31126 // Pad with zeroes
31127 for (i = 2 * len; i < N; ++i) {
31128 rws[i] = 0;
31129 }
31130
31131 assert(carry === 0);
31132 assert((carry & ~0x1fff) === 0);
31133 };
31134
31135 FFTM.prototype.stub = function stub (N) {
31136 var ph = new Array(N);
31137 for (var i = 0; i < N; i++) {
31138 ph[i] = 0;
31139 }
31140
31141 return ph;
31142 };
31143
31144 FFTM.prototype.mulp = function mulp (x, y, out) {
31145 var N = 2 * this.guessLen13b(x.length, y.length);
31146
31147 var rbt = this.makeRBT(N);
31148
31149 var _ = this.stub(N);
31150
31151 var rws = new Array(N);
31152 var rwst = new Array(N);
31153 var iwst = new Array(N);
31154
31155 var nrws = new Array(N);
31156 var nrwst = new Array(N);
31157 var niwst = new Array(N);
31158
31159 var rmws = out.words;
31160 rmws.length = N;
31161
31162 this.convert13b(x.words, x.length, rws, N);
31163 this.convert13b(y.words, y.length, nrws, N);
31164
31165 this.transform(rws, _, rwst, iwst, N, rbt);
31166 this.transform(nrws, _, nrwst, niwst, N, rbt);
31167
31168 for (var i = 0; i < N; i++) {
31169 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
31170 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
31171 rwst[i] = rx;
31172 }
31173
31174 this.conjugate(rwst, iwst, N);
31175 this.transform(rwst, iwst, rmws, _, N, rbt);
31176 this.conjugate(rmws, _, N);
31177 this.normalize13b(rmws, N);
31178
31179 out.negative = x.negative ^ y.negative;
31180 out.length = x.length + y.length;
31181 return out.strip();
31182 };
31183
31184 // Multiply `this` by `num`
31185 BN.prototype.mul = function mul (num) {
31186 var out = new BN(null);
31187 out.words = new Array(this.length + num.length);
31188 return this.mulTo(num, out);
31189 };
31190
31191 // Multiply employing FFT
31192 BN.prototype.mulf = function mulf (num) {
31193 var out = new BN(null);
31194 out.words = new Array(this.length + num.length);
31195 return jumboMulTo(this, num, out);
31196 };
31197
31198 // In-place Multiplication
31199 BN.prototype.imul = function imul (num) {
31200 return this.clone().mulTo(num, this);
31201 };
31202
31203 BN.prototype.imuln = function imuln (num) {
31204 assert(typeof num === 'number');
31205 assert(num < 0x4000000);
31206
31207 // Carry
31208 var carry = 0;
31209 for (var i = 0; i < this.length; i++) {
31210 var w = (this.words[i] | 0) * num;
31211 var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
31212 carry >>= 26;
31213 carry += (w / 0x4000000) | 0;
31214 // NOTE: lo is 27bit maximum
31215 carry += lo >>> 26;
31216 this.words[i] = lo & 0x3ffffff;
31217 }
31218
31219 if (carry !== 0) {
31220 this.words[i] = carry;
31221 this.length++;
31222 }
31223
31224 return this;
31225 };
31226
31227 BN.prototype.muln = function muln (num) {
31228 return this.clone().imuln(num);
31229 };
31230
31231 // `this` * `this`
31232 BN.prototype.sqr = function sqr () {
31233 return this.mul(this);
31234 };
31235
31236 // `this` * `this` in-place
31237 BN.prototype.isqr = function isqr () {
31238 return this.imul(this.clone());
31239 };
31240
31241 // Math.pow(`this`, `num`)
31242 BN.prototype.pow = function pow (num) {
31243 var w = toBitArray(num);
31244 if (w.length === 0) return new BN(1);
31245
31246 // Skip leading zeroes
31247 var res = this;
31248 for (var i = 0; i < w.length; i++, res = res.sqr()) {
31249 if (w[i] !== 0) break;
31250 }
31251
31252 if (++i < w.length) {
31253 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
31254 if (w[i] === 0) continue;
31255
31256 res = res.mul(q);
31257 }
31258 }
31259
31260 return res;
31261 };
31262
31263 // Shift-left in-place
31264 BN.prototype.iushln = function iushln (bits) {
31265 assert(typeof bits === 'number' && bits >= 0);
31266 var r = bits % 26;
31267 var s = (bits - r) / 26;
31268 var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
31269 var i;
31270
31271 if (r !== 0) {
31272 var carry = 0;
31273
31274 for (i = 0; i < this.length; i++) {
31275 var newCarry = this.words[i] & carryMask;
31276 var c = ((this.words[i] | 0) - newCarry) << r;
31277 this.words[i] = c | carry;
31278 carry = newCarry >>> (26 - r);
31279 }
31280
31281 if (carry) {
31282 this.words[i] = carry;
31283 this.length++;
31284 }
31285 }
31286
31287 if (s !== 0) {
31288 for (i = this.length - 1; i >= 0; i--) {
31289 this.words[i + s] = this.words[i];
31290 }
31291
31292 for (i = 0; i < s; i++) {
31293 this.words[i] = 0;
31294 }
31295
31296 this.length += s;
31297 }
31298
31299 return this.strip();
31300 };
31301
31302 BN.prototype.ishln = function ishln (bits) {
31303 // TODO(indutny): implement me
31304 assert(this.negative === 0);
31305 return this.iushln(bits);
31306 };
31307
31308 // Shift-right in-place
31309 // NOTE: `hint` is a lowest bit before trailing zeroes
31310 // NOTE: if `extended` is present - it will be filled with destroyed bits
31311 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
31312 assert(typeof bits === 'number' && bits >= 0);
31313 var h;
31314 if (hint) {
31315 h = (hint - (hint % 26)) / 26;
31316 } else {
31317 h = 0;
31318 }
31319
31320 var r = bits % 26;
31321 var s = Math.min((bits - r) / 26, this.length);
31322 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
31323 var maskedWords = extended;
31324
31325 h -= s;
31326 h = Math.max(0, h);
31327
31328 // Extended mode, copy masked part
31329 if (maskedWords) {
31330 for (var i = 0; i < s; i++) {
31331 maskedWords.words[i] = this.words[i];
31332 }
31333 maskedWords.length = s;
31334 }
31335
31336 if (s === 0) {
31337 // No-op, we should not move anything at all
31338 } else if (this.length > s) {
31339 this.length -= s;
31340 for (i = 0; i < this.length; i++) {
31341 this.words[i] = this.words[i + s];
31342 }
31343 } else {
31344 this.words[0] = 0;
31345 this.length = 1;
31346 }
31347
31348 var carry = 0;
31349 for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
31350 var word = this.words[i] | 0;
31351 this.words[i] = (carry << (26 - r)) | (word >>> r);
31352 carry = word & mask;
31353 }
31354
31355 // Push carried bits as a mask
31356 if (maskedWords && carry !== 0) {
31357 maskedWords.words[maskedWords.length++] = carry;
31358 }
31359
31360 if (this.length === 0) {
31361 this.words[0] = 0;
31362 this.length = 1;
31363 }
31364
31365 return this.strip();
31366 };
31367
31368 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
31369 // TODO(indutny): implement me
31370 assert(this.negative === 0);
31371 return this.iushrn(bits, hint, extended);
31372 };
31373
31374 // Shift-left
31375 BN.prototype.shln = function shln (bits) {
31376 return this.clone().ishln(bits);
31377 };
31378
31379 BN.prototype.ushln = function ushln (bits) {
31380 return this.clone().iushln(bits);
31381 };
31382
31383 // Shift-right
31384 BN.prototype.shrn = function shrn (bits) {
31385 return this.clone().ishrn(bits);
31386 };
31387
31388 BN.prototype.ushrn = function ushrn (bits) {
31389 return this.clone().iushrn(bits);
31390 };
31391
31392 // Test if n bit is set
31393 BN.prototype.testn = function testn (bit) {
31394 assert(typeof bit === 'number' && bit >= 0);
31395 var r = bit % 26;
31396 var s = (bit - r) / 26;
31397 var q = 1 << r;
31398
31399 // Fast case: bit is much higher than all existing words
31400 if (this.length <= s) return false;
31401
31402 // Check bit and return
31403 var w = this.words[s];
31404
31405 return !!(w & q);
31406 };
31407
31408 // Return only lowers bits of number (in-place)
31409 BN.prototype.imaskn = function imaskn (bits) {
31410 assert(typeof bits === 'number' && bits >= 0);
31411 var r = bits % 26;
31412 var s = (bits - r) / 26;
31413
31414 assert(this.negative === 0, 'imaskn works only with positive numbers');
31415
31416 if (this.length <= s) {
31417 return this;
31418 }
31419
31420 if (r !== 0) {
31421 s++;
31422 }
31423 this.length = Math.min(s, this.length);
31424
31425 if (r !== 0) {
31426 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
31427 this.words[this.length - 1] &= mask;
31428 }
31429
31430 return this.strip();
31431 };
31432
31433 // Return only lowers bits of number
31434 BN.prototype.maskn = function maskn (bits) {
31435 return this.clone().imaskn(bits);
31436 };
31437
31438 // Add plain number `num` to `this`
31439 BN.prototype.iaddn = function iaddn (num) {
31440 assert(typeof num === 'number');
31441 assert(num < 0x4000000);
31442 if (num < 0) return this.isubn(-num);
31443
31444 // Possible sign change
31445 if (this.negative !== 0) {
31446 if (this.length === 1 && (this.words[0] | 0) < num) {
31447 this.words[0] = num - (this.words[0] | 0);
31448 this.negative = 0;
31449 return this;
31450 }
31451
31452 this.negative = 0;
31453 this.isubn(num);
31454 this.negative = 1;
31455 return this;
31456 }
31457
31458 // Add without checks
31459 return this._iaddn(num);
31460 };
31461
31462 BN.prototype._iaddn = function _iaddn (num) {
31463 this.words[0] += num;
31464
31465 // Carry
31466 for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
31467 this.words[i] -= 0x4000000;
31468 if (i === this.length - 1) {
31469 this.words[i + 1] = 1;
31470 } else {
31471 this.words[i + 1]++;
31472 }
31473 }
31474 this.length = Math.max(this.length, i + 1);
31475
31476 return this;
31477 };
31478
31479 // Subtract plain number `num` from `this`
31480 BN.prototype.isubn = function isubn (num) {
31481 assert(typeof num === 'number');
31482 assert(num < 0x4000000);
31483 if (num < 0) return this.iaddn(-num);
31484
31485 if (this.negative !== 0) {
31486 this.negative = 0;
31487 this.iaddn(num);
31488 this.negative = 1;
31489 return this;
31490 }
31491
31492 this.words[0] -= num;
31493
31494 if (this.length === 1 && this.words[0] < 0) {
31495 this.words[0] = -this.words[0];
31496 this.negative = 1;
31497 } else {
31498 // Carry
31499 for (var i = 0; i < this.length && this.words[i] < 0; i++) {
31500 this.words[i] += 0x4000000;
31501 this.words[i + 1] -= 1;
31502 }
31503 }
31504
31505 return this.strip();
31506 };
31507
31508 BN.prototype.addn = function addn (num) {
31509 return this.clone().iaddn(num);
31510 };
31511
31512 BN.prototype.subn = function subn (num) {
31513 return this.clone().isubn(num);
31514 };
31515
31516 BN.prototype.iabs = function iabs () {
31517 this.negative = 0;
31518
31519 return this;
31520 };
31521
31522 BN.prototype.abs = function abs () {
31523 return this.clone().iabs();
31524 };
31525
31526 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
31527 var len = num.length + shift;
31528 var i;
31529
31530 this._expand(len);
31531
31532 var w;
31533 var carry = 0;
31534 for (i = 0; i < num.length; i++) {
31535 w = (this.words[i + shift] | 0) + carry;
31536 var right = (num.words[i] | 0) * mul;
31537 w -= right & 0x3ffffff;
31538 carry = (w >> 26) - ((right / 0x4000000) | 0);
31539 this.words[i + shift] = w & 0x3ffffff;
31540 }
31541 for (; i < this.length - shift; i++) {
31542 w = (this.words[i + shift] | 0) + carry;
31543 carry = w >> 26;
31544 this.words[i + shift] = w & 0x3ffffff;
31545 }
31546
31547 if (carry === 0) return this.strip();
31548
31549 // Subtraction overflow
31550 assert(carry === -1);
31551 carry = 0;
31552 for (i = 0; i < this.length; i++) {
31553 w = -(this.words[i] | 0) + carry;
31554 carry = w >> 26;
31555 this.words[i] = w & 0x3ffffff;
31556 }
31557 this.negative = 1;
31558
31559 return this.strip();
31560 };
31561
31562 BN.prototype._wordDiv = function _wordDiv (num, mode) {
31563 var shift = this.length - num.length;
31564
31565 var a = this.clone();
31566 var b = num;
31567
31568 // Normalize
31569 var bhi = b.words[b.length - 1] | 0;
31570 var bhiBits = this._countBits(bhi);
31571 shift = 26 - bhiBits;
31572 if (shift !== 0) {
31573 b = b.ushln(shift);
31574 a.iushln(shift);
31575 bhi = b.words[b.length - 1] | 0;
31576 }
31577
31578 // Initialize quotient
31579 var m = a.length - b.length;
31580 var q;
31581
31582 if (mode !== 'mod') {
31583 q = new BN(null);
31584 q.length = m + 1;
31585 q.words = new Array(q.length);
31586 for (var i = 0; i < q.length; i++) {
31587 q.words[i] = 0;
31588 }
31589 }
31590
31591 var diff = a.clone()._ishlnsubmul(b, 1, m);
31592 if (diff.negative === 0) {
31593 a = diff;
31594 if (q) {
31595 q.words[m] = 1;
31596 }
31597 }
31598
31599 for (var j = m - 1; j >= 0; j--) {
31600 var qj = (a.words[b.length + j] | 0) * 0x4000000 +
31601 (a.words[b.length + j - 1] | 0);
31602
31603 // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
31604 // (0x7ffffff)
31605 qj = Math.min((qj / bhi) | 0, 0x3ffffff);
31606
31607 a._ishlnsubmul(b, qj, j);
31608 while (a.negative !== 0) {
31609 qj--;
31610 a.negative = 0;
31611 a._ishlnsubmul(b, 1, j);
31612 if (!a.isZero()) {
31613 a.negative ^= 1;
31614 }
31615 }
31616 if (q) {
31617 q.words[j] = qj;
31618 }
31619 }
31620 if (q) {
31621 q.strip();
31622 }
31623 a.strip();
31624
31625 // Denormalize
31626 if (mode !== 'div' && shift !== 0) {
31627 a.iushrn(shift);
31628 }
31629
31630 return {
31631 div: q || null,
31632 mod: a
31633 };
31634 };
31635
31636 // NOTE: 1) `mode` can be set to `mod` to request mod only,
31637 // to `div` to request div only, or be absent to
31638 // request both div & mod
31639 // 2) `positive` is true if unsigned mod is requested
31640 BN.prototype.divmod = function divmod (num, mode, positive) {
31641 assert(!num.isZero());
31642
31643 if (this.isZero()) {
31644 return {
31645 div: new BN(0),
31646 mod: new BN(0)
31647 };
31648 }
31649
31650 var div, mod, res;
31651 if (this.negative !== 0 && num.negative === 0) {
31652 res = this.neg().divmod(num, mode);
31653
31654 if (mode !== 'mod') {
31655 div = res.div.neg();
31656 }
31657
31658 if (mode !== 'div') {
31659 mod = res.mod.neg();
31660 if (positive && mod.negative !== 0) {
31661 mod.iadd(num);
31662 }
31663 }
31664
31665 return {
31666 div: div,
31667 mod: mod
31668 };
31669 }
31670
31671 if (this.negative === 0 && num.negative !== 0) {
31672 res = this.divmod(num.neg(), mode);
31673
31674 if (mode !== 'mod') {
31675 div = res.div.neg();
31676 }
31677
31678 return {
31679 div: div,
31680 mod: res.mod
31681 };
31682 }
31683
31684 if ((this.negative & num.negative) !== 0) {
31685 res = this.neg().divmod(num.neg(), mode);
31686
31687 if (mode !== 'div') {
31688 mod = res.mod.neg();
31689 if (positive && mod.negative !== 0) {
31690 mod.isub(num);
31691 }
31692 }
31693
31694 return {
31695 div: res.div,
31696 mod: mod
31697 };
31698 }
31699
31700 // Both numbers are positive at this point
31701
31702 // Strip both numbers to approximate shift value
31703 if (num.length > this.length || this.cmp(num) < 0) {
31704 return {
31705 div: new BN(0),
31706 mod: this
31707 };
31708 }
31709
31710 // Very short reduction
31711 if (num.length === 1) {
31712 if (mode === 'div') {
31713 return {
31714 div: this.divn(num.words[0]),
31715 mod: null
31716 };
31717 }
31718
31719 if (mode === 'mod') {
31720 return {
31721 div: null,
31722 mod: new BN(this.modn(num.words[0]))
31723 };
31724 }
31725
31726 return {
31727 div: this.divn(num.words[0]),
31728 mod: new BN(this.modn(num.words[0]))
31729 };
31730 }
31731
31732 return this._wordDiv(num, mode);
31733 };
31734
31735 // Find `this` / `num`
31736 BN.prototype.div = function div (num) {
31737 return this.divmod(num, 'div', false).div;
31738 };
31739
31740 // Find `this` % `num`
31741 BN.prototype.mod = function mod (num) {
31742 return this.divmod(num, 'mod', false).mod;
31743 };
31744
31745 BN.prototype.umod = function umod (num) {
31746 return this.divmod(num, 'mod', true).mod;
31747 };
31748
31749 // Find Round(`this` / `num`)
31750 BN.prototype.divRound = function divRound (num) {
31751 var dm = this.divmod(num);
31752
31753 // Fast case - exact division
31754 if (dm.mod.isZero()) return dm.div;
31755
31756 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
31757
31758 var half = num.ushrn(1);
31759 var r2 = num.andln(1);
31760 var cmp = mod.cmp(half);
31761
31762 // Round down
31763 if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
31764
31765 // Round up
31766 return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
31767 };
31768
31769 BN.prototype.modn = function modn (num) {
31770 assert(num <= 0x3ffffff);
31771 var p = (1 << 26) % num;
31772
31773 var acc = 0;
31774 for (var i = this.length - 1; i >= 0; i--) {
31775 acc = (p * acc + (this.words[i] | 0)) % num;
31776 }
31777
31778 return acc;
31779 };
31780
31781 // In-place division by number
31782 BN.prototype.idivn = function idivn (num) {
31783 assert(num <= 0x3ffffff);
31784
31785 var carry = 0;
31786 for (var i = this.length - 1; i >= 0; i--) {
31787 var w = (this.words[i] | 0) + carry * 0x4000000;
31788 this.words[i] = (w / num) | 0;
31789 carry = w % num;
31790 }
31791
31792 return this.strip();
31793 };
31794
31795 BN.prototype.divn = function divn (num) {
31796 return this.clone().idivn(num);
31797 };
31798
31799 BN.prototype.egcd = function egcd (p) {
31800 assert(p.negative === 0);
31801 assert(!p.isZero());
31802
31803 var x = this;
31804 var y = p.clone();
31805
31806 if (x.negative !== 0) {
31807 x = x.umod(p);
31808 } else {
31809 x = x.clone();
31810 }
31811
31812 // A * x + B * y = x
31813 var A = new BN(1);
31814 var B = new BN(0);
31815
31816 // C * x + D * y = y
31817 var C = new BN(0);
31818 var D = new BN(1);
31819
31820 var g = 0;
31821
31822 while (x.isEven() && y.isEven()) {
31823 x.iushrn(1);
31824 y.iushrn(1);
31825 ++g;
31826 }
31827
31828 var yp = y.clone();
31829 var xp = x.clone();
31830
31831 while (!x.isZero()) {
31832 for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
31833 if (i > 0) {
31834 x.iushrn(i);
31835 while (i-- > 0) {
31836 if (A.isOdd() || B.isOdd()) {
31837 A.iadd(yp);
31838 B.isub(xp);
31839 }
31840
31841 A.iushrn(1);
31842 B.iushrn(1);
31843 }
31844 }
31845
31846 for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
31847 if (j > 0) {
31848 y.iushrn(j);
31849 while (j-- > 0) {
31850 if (C.isOdd() || D.isOdd()) {
31851 C.iadd(yp);
31852 D.isub(xp);
31853 }
31854
31855 C.iushrn(1);
31856 D.iushrn(1);
31857 }
31858 }
31859
31860 if (x.cmp(y) >= 0) {
31861 x.isub(y);
31862 A.isub(C);
31863 B.isub(D);
31864 } else {
31865 y.isub(x);
31866 C.isub(A);
31867 D.isub(B);
31868 }
31869 }
31870
31871 return {
31872 a: C,
31873 b: D,
31874 gcd: y.iushln(g)
31875 };
31876 };
31877
31878 // This is reduced incarnation of the binary EEA
31879 // above, designated to invert members of the
31880 // _prime_ fields F(p) at a maximal speed
31881 BN.prototype._invmp = function _invmp (p) {
31882 assert(p.negative === 0);
31883 assert(!p.isZero());
31884
31885 var a = this;
31886 var b = p.clone();
31887
31888 if (a.negative !== 0) {
31889 a = a.umod(p);
31890 } else {
31891 a = a.clone();
31892 }
31893
31894 var x1 = new BN(1);
31895 var x2 = new BN(0);
31896
31897 var delta = b.clone();
31898
31899 while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
31900 for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
31901 if (i > 0) {
31902 a.iushrn(i);
31903 while (i-- > 0) {
31904 if (x1.isOdd()) {
31905 x1.iadd(delta);
31906 }
31907
31908 x1.iushrn(1);
31909 }
31910 }
31911
31912 for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
31913 if (j > 0) {
31914 b.iushrn(j);
31915 while (j-- > 0) {
31916 if (x2.isOdd()) {
31917 x2.iadd(delta);
31918 }
31919
31920 x2.iushrn(1);
31921 }
31922 }
31923
31924 if (a.cmp(b) >= 0) {
31925 a.isub(b);
31926 x1.isub(x2);
31927 } else {
31928 b.isub(a);
31929 x2.isub(x1);
31930 }
31931 }
31932
31933 var res;
31934 if (a.cmpn(1) === 0) {
31935 res = x1;
31936 } else {
31937 res = x2;
31938 }
31939
31940 if (res.cmpn(0) < 0) {
31941 res.iadd(p);
31942 }
31943
31944 return res;
31945 };
31946
31947 BN.prototype.gcd = function gcd (num) {
31948 if (this.isZero()) return num.abs();
31949 if (num.isZero()) return this.abs();
31950
31951 var a = this.clone();
31952 var b = num.clone();
31953 a.negative = 0;
31954 b.negative = 0;
31955
31956 // Remove common factor of two
31957 for (var shift = 0; a.isEven() && b.isEven(); shift++) {
31958 a.iushrn(1);
31959 b.iushrn(1);
31960 }
31961
31962 do {
31963 while (a.isEven()) {
31964 a.iushrn(1);
31965 }
31966 while (b.isEven()) {
31967 b.iushrn(1);
31968 }
31969
31970 var r = a.cmp(b);
31971 if (r < 0) {
31972 // Swap `a` and `b` to make `a` always bigger than `b`
31973 var t = a;
31974 a = b;
31975 b = t;
31976 } else if (r === 0 || b.cmpn(1) === 0) {
31977 break;
31978 }
31979
31980 a.isub(b);
31981 } while (true);
31982
31983 return b.iushln(shift);
31984 };
31985
31986 // Invert number in the field F(num)
31987 BN.prototype.invm = function invm (num) {
31988 return this.egcd(num).a.umod(num);
31989 };
31990
31991 BN.prototype.isEven = function isEven () {
31992 return (this.words[0] & 1) === 0;
31993 };
31994
31995 BN.prototype.isOdd = function isOdd () {
31996 return (this.words[0] & 1) === 1;
31997 };
31998
31999 // And first word and num
32000 BN.prototype.andln = function andln (num) {
32001 return this.words[0] & num;
32002 };
32003
32004 // Increment at the bit position in-line
32005 BN.prototype.bincn = function bincn (bit) {
32006 assert(typeof bit === 'number');
32007 var r = bit % 26;
32008 var s = (bit - r) / 26;
32009 var q = 1 << r;
32010
32011 // Fast case: bit is much higher than all existing words
32012 if (this.length <= s) {
32013 this._expand(s + 1);
32014 this.words[s] |= q;
32015 return this;
32016 }
32017
32018 // Add bit and propagate, if needed
32019 var carry = q;
32020 for (var i = s; carry !== 0 && i < this.length; i++) {
32021 var w = this.words[i] | 0;
32022 w += carry;
32023 carry = w >>> 26;
32024 w &= 0x3ffffff;
32025 this.words[i] = w;
32026 }
32027 if (carry !== 0) {
32028 this.words[i] = carry;
32029 this.length++;
32030 }
32031 return this;
32032 };
32033
32034 BN.prototype.isZero = function isZero () {
32035 return this.length === 1 && this.words[0] === 0;
32036 };
32037
32038 BN.prototype.cmpn = function cmpn (num) {
32039 var negative = num < 0;
32040
32041 if (this.negative !== 0 && !negative) return -1;
32042 if (this.negative === 0 && negative) return 1;
32043
32044 this.strip();
32045
32046 var res;
32047 if (this.length > 1) {
32048 res = 1;
32049 } else {
32050 if (negative) {
32051 num = -num;
32052 }
32053
32054 assert(num <= 0x3ffffff, 'Number is too big');
32055
32056 var w = this.words[0] | 0;
32057 res = w === num ? 0 : w < num ? -1 : 1;
32058 }
32059 if (this.negative !== 0) return -res | 0;
32060 return res;
32061 };
32062
32063 // Compare two numbers and return:
32064 // 1 - if `this` > `num`
32065 // 0 - if `this` == `num`
32066 // -1 - if `this` < `num`
32067 BN.prototype.cmp = function cmp (num) {
32068 if (this.negative !== 0 && num.negative === 0) return -1;
32069 if (this.negative === 0 && num.negative !== 0) return 1;
32070
32071 var res = this.ucmp(num);
32072 if (this.negative !== 0) return -res | 0;
32073 return res;
32074 };
32075
32076 // Unsigned comparison
32077 BN.prototype.ucmp = function ucmp (num) {
32078 // At this point both numbers have the same sign
32079 if (this.length > num.length) return 1;
32080 if (this.length < num.length) return -1;
32081
32082 var res = 0;
32083 for (var i = this.length - 1; i >= 0; i--) {
32084 var a = this.words[i] | 0;
32085 var b = num.words[i] | 0;
32086
32087 if (a === b) continue;
32088 if (a < b) {
32089 res = -1;
32090 } else if (a > b) {
32091 res = 1;
32092 }
32093 break;
32094 }
32095 return res;
32096 };
32097
32098 BN.prototype.gtn = function gtn (num) {
32099 return this.cmpn(num) === 1;
32100 };
32101
32102 BN.prototype.gt = function gt (num) {
32103 return this.cmp(num) === 1;
32104 };
32105
32106 BN.prototype.gten = function gten (num) {
32107 return this.cmpn(num) >= 0;
32108 };
32109
32110 BN.prototype.gte = function gte (num) {
32111 return this.cmp(num) >= 0;
32112 };
32113
32114 BN.prototype.ltn = function ltn (num) {
32115 return this.cmpn(num) === -1;
32116 };
32117
32118 BN.prototype.lt = function lt (num) {
32119 return this.cmp(num) === -1;
32120 };
32121
32122 BN.prototype.lten = function lten (num) {
32123 return this.cmpn(num) <= 0;
32124 };
32125
32126 BN.prototype.lte = function lte (num) {
32127 return this.cmp(num) <= 0;
32128 };
32129
32130 BN.prototype.eqn = function eqn (num) {
32131 return this.cmpn(num) === 0;
32132 };
32133
32134 BN.prototype.eq = function eq (num) {
32135 return this.cmp(num) === 0;
32136 };
32137
32138 //
32139 // A reduce context, could be using montgomery or something better, depending
32140 // on the `m` itself.
32141 //
32142 BN.red = function red (num) {
32143 return new Red(num);
32144 };
32145
32146 BN.prototype.toRed = function toRed (ctx) {
32147 assert(!this.red, 'Already a number in reduction context');
32148 assert(this.negative === 0, 'red works only with positives');
32149 return ctx.convertTo(this)._forceRed(ctx);
32150 };
32151
32152 BN.prototype.fromRed = function fromRed () {
32153 assert(this.red, 'fromRed works only with numbers in reduction context');
32154 return this.red.convertFrom(this);
32155 };
32156
32157 BN.prototype._forceRed = function _forceRed (ctx) {
32158 this.red = ctx;
32159 return this;
32160 };
32161
32162 BN.prototype.forceRed = function forceRed (ctx) {
32163 assert(!this.red, 'Already a number in reduction context');
32164 return this._forceRed(ctx);
32165 };
32166
32167 BN.prototype.redAdd = function redAdd (num) {
32168 assert(this.red, 'redAdd works only with red numbers');
32169 return this.red.add(this, num);
32170 };
32171
32172 BN.prototype.redIAdd = function redIAdd (num) {
32173 assert(this.red, 'redIAdd works only with red numbers');
32174 return this.red.iadd(this, num);
32175 };
32176
32177 BN.prototype.redSub = function redSub (num) {
32178 assert(this.red, 'redSub works only with red numbers');
32179 return this.red.sub(this, num);
32180 };
32181
32182 BN.prototype.redISub = function redISub (num) {
32183 assert(this.red, 'redISub works only with red numbers');
32184 return this.red.isub(this, num);
32185 };
32186
32187 BN.prototype.redShl = function redShl (num) {
32188 assert(this.red, 'redShl works only with red numbers');
32189 return this.red.shl(this, num);
32190 };
32191
32192 BN.prototype.redMul = function redMul (num) {
32193 assert(this.red, 'redMul works only with red numbers');
32194 this.red._verify2(this, num);
32195 return this.red.mul(this, num);
32196 };
32197
32198 BN.prototype.redIMul = function redIMul (num) {
32199 assert(this.red, 'redMul works only with red numbers');
32200 this.red._verify2(this, num);
32201 return this.red.imul(this, num);
32202 };
32203
32204 BN.prototype.redSqr = function redSqr () {
32205 assert(this.red, 'redSqr works only with red numbers');
32206 this.red._verify1(this);
32207 return this.red.sqr(this);
32208 };
32209
32210 BN.prototype.redISqr = function redISqr () {
32211 assert(this.red, 'redISqr works only with red numbers');
32212 this.red._verify1(this);
32213 return this.red.isqr(this);
32214 };
32215
32216 // Square root over p
32217 BN.prototype.redSqrt = function redSqrt () {
32218 assert(this.red, 'redSqrt works only with red numbers');
32219 this.red._verify1(this);
32220 return this.red.sqrt(this);
32221 };
32222
32223 BN.prototype.redInvm = function redInvm () {
32224 assert(this.red, 'redInvm works only with red numbers');
32225 this.red._verify1(this);
32226 return this.red.invm(this);
32227 };
32228
32229 // Return negative clone of `this` % `red modulo`
32230 BN.prototype.redNeg = function redNeg () {
32231 assert(this.red, 'redNeg works only with red numbers');
32232 this.red._verify1(this);
32233 return this.red.neg(this);
32234 };
32235
32236 BN.prototype.redPow = function redPow (num) {
32237 assert(this.red && !num.red, 'redPow(normalNum)');
32238 this.red._verify1(this);
32239 return this.red.pow(this, num);
32240 };
32241
32242 // Prime numbers with efficient reduction
32243 var primes = {
32244 k256: null,
32245 p224: null,
32246 p192: null,
32247 p25519: null
32248 };
32249
32250 // Pseudo-Mersenne prime
32251 function MPrime (name, p) {
32252 // P = 2 ^ N - K
32253 this.name = name;
32254 this.p = new BN(p, 16);
32255 this.n = this.p.bitLength();
32256 this.k = new BN(1).iushln(this.n).isub(this.p);
32257
32258 this.tmp = this._tmp();
32259 }
32260
32261 MPrime.prototype._tmp = function _tmp () {
32262 var tmp = new BN(null);
32263 tmp.words = new Array(Math.ceil(this.n / 13));
32264 return tmp;
32265 };
32266
32267 MPrime.prototype.ireduce = function ireduce (num) {
32268 // Assumes that `num` is less than `P^2`
32269 // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
32270 var r = num;
32271 var rlen;
32272
32273 do {
32274 this.split(r, this.tmp);
32275 r = this.imulK(r);
32276 r = r.iadd(this.tmp);
32277 rlen = r.bitLength();
32278 } while (rlen > this.n);
32279
32280 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
32281 if (cmp === 0) {
32282 r.words[0] = 0;
32283 r.length = 1;
32284 } else if (cmp > 0) {
32285 r.isub(this.p);
32286 } else {
32287 r.strip();
32288 }
32289
32290 return r;
32291 };
32292
32293 MPrime.prototype.split = function split (input, out) {
32294 input.iushrn(this.n, 0, out);
32295 };
32296
32297 MPrime.prototype.imulK = function imulK (num) {
32298 return num.imul(this.k);
32299 };
32300
32301 function K256 () {
32302 MPrime.call(
32303 this,
32304 'k256',
32305 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
32306 }
32307 inherits(K256, MPrime);
32308
32309 K256.prototype.split = function split (input, output) {
32310 // 256 = 9 * 26 + 22
32311 var mask = 0x3fffff;
32312
32313 var outLen = Math.min(input.length, 9);
32314 for (var i = 0; i < outLen; i++) {
32315 output.words[i] = input.words[i];
32316 }
32317 output.length = outLen;
32318
32319 if (input.length <= 9) {
32320 input.words[0] = 0;
32321 input.length = 1;
32322 return;
32323 }
32324
32325 // Shift by 9 limbs
32326 var prev = input.words[9];
32327 output.words[output.length++] = prev & mask;
32328
32329 for (i = 10; i < input.length; i++) {
32330 var next = input.words[i] | 0;
32331 input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
32332 prev = next;
32333 }
32334 prev >>>= 22;
32335 input.words[i - 10] = prev;
32336 if (prev === 0 && input.length > 10) {
32337 input.length -= 10;
32338 } else {
32339 input.length -= 9;
32340 }
32341 };
32342
32343 K256.prototype.imulK = function imulK (num) {
32344 // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
32345 num.words[num.length] = 0;
32346 num.words[num.length + 1] = 0;
32347 num.length += 2;
32348
32349 // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
32350 var lo = 0;
32351 for (var i = 0; i < num.length; i++) {
32352 var w = num.words[i] | 0;
32353 lo += w * 0x3d1;
32354 num.words[i] = lo & 0x3ffffff;
32355 lo = w * 0x40 + ((lo / 0x4000000) | 0);
32356 }
32357
32358 // Fast length reduction
32359 if (num.words[num.length - 1] === 0) {
32360 num.length--;
32361 if (num.words[num.length - 1] === 0) {
32362 num.length--;
32363 }
32364 }
32365 return num;
32366 };
32367
32368 function P224 () {
32369 MPrime.call(
32370 this,
32371 'p224',
32372 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
32373 }
32374 inherits(P224, MPrime);
32375
32376 function P192 () {
32377 MPrime.call(
32378 this,
32379 'p192',
32380 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
32381 }
32382 inherits(P192, MPrime);
32383
32384 function P25519 () {
32385 // 2 ^ 255 - 19
32386 MPrime.call(
32387 this,
32388 '25519',
32389 '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
32390 }
32391 inherits(P25519, MPrime);
32392
32393 P25519.prototype.imulK = function imulK (num) {
32394 // K = 0x13
32395 var carry = 0;
32396 for (var i = 0; i < num.length; i++) {
32397 var hi = (num.words[i] | 0) * 0x13 + carry;
32398 var lo = hi & 0x3ffffff;
32399 hi >>>= 26;
32400
32401 num.words[i] = lo;
32402 carry = hi;
32403 }
32404 if (carry !== 0) {
32405 num.words[num.length++] = carry;
32406 }
32407 return num;
32408 };
32409
32410 // Exported mostly for testing purposes, use plain name instead
32411 BN._prime = function prime (name) {
32412 // Cached version of prime
32413 if (primes[name]) return primes[name];
32414
32415 var prime;
32416 if (name === 'k256') {
32417 prime = new K256();
32418 } else if (name === 'p224') {
32419 prime = new P224();
32420 } else if (name === 'p192') {
32421 prime = new P192();
32422 } else if (name === 'p25519') {
32423 prime = new P25519();
32424 } else {
32425 throw new Error('Unknown prime ' + name);
32426 }
32427 primes[name] = prime;
32428
32429 return prime;
32430 };
32431
32432 //
32433 // Base reduction engine
32434 //
32435 function Red (m) {
32436 if (typeof m === 'string') {
32437 var prime = BN._prime(m);
32438 this.m = prime.p;
32439 this.prime = prime;
32440 } else {
32441 assert(m.gtn(1), 'modulus must be greater than 1');
32442 this.m = m;
32443 this.prime = null;
32444 }
32445 }
32446
32447 Red.prototype._verify1 = function _verify1 (a) {
32448 assert(a.negative === 0, 'red works only with positives');
32449 assert(a.red, 'red works only with red numbers');
32450 };
32451
32452 Red.prototype._verify2 = function _verify2 (a, b) {
32453 assert((a.negative | b.negative) === 0, 'red works only with positives');
32454 assert(a.red && a.red === b.red,
32455 'red works only with red numbers');
32456 };
32457
32458 Red.prototype.imod = function imod (a) {
32459 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
32460 return a.umod(this.m)._forceRed(this);
32461 };
32462
32463 Red.prototype.neg = function neg (a) {
32464 if (a.isZero()) {
32465 return a.clone();
32466 }
32467
32468 return this.m.sub(a)._forceRed(this);
32469 };
32470
32471 Red.prototype.add = function add (a, b) {
32472 this._verify2(a, b);
32473
32474 var res = a.add(b);
32475 if (res.cmp(this.m) >= 0) {
32476 res.isub(this.m);
32477 }
32478 return res._forceRed(this);
32479 };
32480
32481 Red.prototype.iadd = function iadd (a, b) {
32482 this._verify2(a, b);
32483
32484 var res = a.iadd(b);
32485 if (res.cmp(this.m) >= 0) {
32486 res.isub(this.m);
32487 }
32488 return res;
32489 };
32490
32491 Red.prototype.sub = function sub (a, b) {
32492 this._verify2(a, b);
32493
32494 var res = a.sub(b);
32495 if (res.cmpn(0) < 0) {
32496 res.iadd(this.m);
32497 }
32498 return res._forceRed(this);
32499 };
32500
32501 Red.prototype.isub = function isub (a, b) {
32502 this._verify2(a, b);
32503
32504 var res = a.isub(b);
32505 if (res.cmpn(0) < 0) {
32506 res.iadd(this.m);
32507 }
32508 return res;
32509 };
32510
32511 Red.prototype.shl = function shl (a, num) {
32512 this._verify1(a);
32513 return this.imod(a.ushln(num));
32514 };
32515
32516 Red.prototype.imul = function imul (a, b) {
32517 this._verify2(a, b);
32518 return this.imod(a.imul(b));
32519 };
32520
32521 Red.prototype.mul = function mul (a, b) {
32522 this._verify2(a, b);
32523 return this.imod(a.mul(b));
32524 };
32525
32526 Red.prototype.isqr = function isqr (a) {
32527 return this.imul(a, a.clone());
32528 };
32529
32530 Red.prototype.sqr = function sqr (a) {
32531 return this.mul(a, a);
32532 };
32533
32534 Red.prototype.sqrt = function sqrt (a) {
32535 if (a.isZero()) return a.clone();
32536
32537 var mod3 = this.m.andln(3);
32538 assert(mod3 % 2 === 1);
32539
32540 // Fast case
32541 if (mod3 === 3) {
32542 var pow = this.m.add(new BN(1)).iushrn(2);
32543 return this.pow(a, pow);
32544 }
32545
32546 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
32547 //
32548 // Find Q and S, that Q * 2 ^ S = (P - 1)
32549 var q = this.m.subn(1);
32550 var s = 0;
32551 while (!q.isZero() && q.andln(1) === 0) {
32552 s++;
32553 q.iushrn(1);
32554 }
32555 assert(!q.isZero());
32556
32557 var one = new BN(1).toRed(this);
32558 var nOne = one.redNeg();
32559
32560 // Find quadratic non-residue
32561 // NOTE: Max is such because of generalized Riemann hypothesis.
32562 var lpow = this.m.subn(1).iushrn(1);
32563 var z = this.m.bitLength();
32564 z = new BN(2 * z * z).toRed(this);
32565
32566 while (this.pow(z, lpow).cmp(nOne) !== 0) {
32567 z.redIAdd(nOne);
32568 }
32569
32570 var c = this.pow(z, q);
32571 var r = this.pow(a, q.addn(1).iushrn(1));
32572 var t = this.pow(a, q);
32573 var m = s;
32574 while (t.cmp(one) !== 0) {
32575 var tmp = t;
32576 for (var i = 0; tmp.cmp(one) !== 0; i++) {
32577 tmp = tmp.redSqr();
32578 }
32579 assert(i < m);
32580 var b = this.pow(c, new BN(1).iushln(m - i - 1));
32581
32582 r = r.redMul(b);
32583 c = b.redSqr();
32584 t = t.redMul(c);
32585 m = i;
32586 }
32587
32588 return r;
32589 };
32590
32591 Red.prototype.invm = function invm (a) {
32592 var inv = a._invmp(this.m);
32593 if (inv.negative !== 0) {
32594 inv.negative = 0;
32595 return this.imod(inv).redNeg();
32596 } else {
32597 return this.imod(inv);
32598 }
32599 };
32600
32601 Red.prototype.pow = function pow (a, num) {
32602 if (num.isZero()) return new BN(1);
32603 if (num.cmpn(1) === 0) return a.clone();
32604
32605 var windowSize = 4;
32606 var wnd = new Array(1 << windowSize);
32607 wnd[0] = new BN(1).toRed(this);
32608 wnd[1] = a;
32609 for (var i = 2; i < wnd.length; i++) {
32610 wnd[i] = this.mul(wnd[i - 1], a);
32611 }
32612
32613 var res = wnd[0];
32614 var current = 0;
32615 var currentLen = 0;
32616 var start = num.bitLength() % 26;
32617 if (start === 0) {
32618 start = 26;
32619 }
32620
32621 for (i = num.length - 1; i >= 0; i--) {
32622 var word = num.words[i];
32623 for (var j = start - 1; j >= 0; j--) {
32624 var bit = (word >> j) & 1;
32625 if (res !== wnd[0]) {
32626 res = this.sqr(res);
32627 }
32628
32629 if (bit === 0 && current === 0) {
32630 currentLen = 0;
32631 continue;
32632 }
32633
32634 current <<= 1;
32635 current |= bit;
32636 currentLen++;
32637 if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
32638
32639 res = this.mul(res, wnd[current]);
32640 currentLen = 0;
32641 current = 0;
32642 }
32643 start = 26;
32644 }
32645
32646 return res;
32647 };
32648
32649 Red.prototype.convertTo = function convertTo (num) {
32650 var r = num.umod(this.m);
32651
32652 return r === num ? r.clone() : r;
32653 };
32654
32655 Red.prototype.convertFrom = function convertFrom (num) {
32656 var res = num.clone();
32657 res.red = null;
32658 return res;
32659 };
32660
32661 //
32662 // Montgomery method engine
32663 //
32664
32665 BN.mont = function mont (num) {
32666 return new Mont(num);
32667 };
32668
32669 function Mont (m) {
32670 Red.call(this, m);
32671
32672 this.shift = this.m.bitLength();
32673 if (this.shift % 26 !== 0) {
32674 this.shift += 26 - (this.shift % 26);
32675 }
32676
32677 this.r = new BN(1).iushln(this.shift);
32678 this.r2 = this.imod(this.r.sqr());
32679 this.rinv = this.r._invmp(this.m);
32680
32681 this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
32682 this.minv = this.minv.umod(this.r);
32683 this.minv = this.r.sub(this.minv);
32684 }
32685 inherits(Mont, Red);
32686
32687 Mont.prototype.convertTo = function convertTo (num) {
32688 return this.imod(num.ushln(this.shift));
32689 };
32690
32691 Mont.prototype.convertFrom = function convertFrom (num) {
32692 var r = this.imod(num.mul(this.rinv));
32693 r.red = null;
32694 return r;
32695 };
32696
32697 Mont.prototype.imul = function imul (a, b) {
32698 if (a.isZero() || b.isZero()) {
32699 a.words[0] = 0;
32700 a.length = 1;
32701 return a;
32702 }
32703
32704 var t = a.imul(b);
32705 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
32706 var u = t.isub(c).iushrn(this.shift);
32707 var res = u;
32708
32709 if (u.cmp(this.m) >= 0) {
32710 res = u.isub(this.m);
32711 } else if (u.cmpn(0) < 0) {
32712 res = u.iadd(this.m);
32713 }
32714
32715 return res._forceRed(this);
32716 };
32717
32718 Mont.prototype.mul = function mul (a, b) {
32719 if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
32720
32721 var t = a.mul(b);
32722 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
32723 var u = t.isub(c).iushrn(this.shift);
32724 var res = u;
32725 if (u.cmp(this.m) >= 0) {
32726 res = u.isub(this.m);
32727 } else if (u.cmpn(0) < 0) {
32728 res = u.iadd(this.m);
32729 }
32730
32731 return res._forceRed(this);
32732 };
32733
32734 Mont.prototype.invm = function invm (a) {
32735 // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
32736 var res = this.imod(a._invmp(this.m).mul(this.r2));
32737 return res._forceRed(this);
32738 };
32739 })(typeof module === 'undefined' || module, this);
32740
32741 },{}],34:[function(require,module,exports){
32742 var r;
32743
32744 module.exports = function rand(len) {
32745 if (!r)
32746 r = new Rand(null);
32747
32748 return r.generate(len);
32749 };
32750
32751 function Rand(rand) {
32752 this.rand = rand;
32753 }
32754 module.exports.Rand = Rand;
32755
32756 Rand.prototype.generate = function generate(len) {
32757 return this._rand(len);
32758 };
32759
32760 if (typeof self === 'object') {
32761 if (self.crypto && self.crypto.getRandomValues) {
32762 // Modern browsers
32763 Rand.prototype._rand = function _rand(n) {
32764 var arr = new Uint8Array(n);
32765 self.crypto.getRandomValues(arr);
32766 return arr;
32767 };
32768 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
32769 // IE
32770 Rand.prototype._rand = function _rand(n) {
32771 var arr = new Uint8Array(n);
32772 self.msCrypto.getRandomValues(arr);
32773 return arr;
32774 };
32775 } else {
32776 // Old junk
32777 Rand.prototype._rand = function() {
32778 throw new Error('Not implemented yet');
32779 };
32780 }
32781 } else {
32782 // Node.js or Web worker with no crypto support
32783 try {
32784 var crypto = require('crypto');
32785
32786 Rand.prototype._rand = function _rand(n) {
32787 return crypto.randomBytes(n);
32788 };
32789 } catch (e) {
32790 // Emulate crypto API using randy
32791 Rand.prototype._rand = function _rand(n) {
32792 var res = new Uint8Array(n);
32793 for (var i = 0; i < res.length; i++)
32794 res[i] = this.rand.getByte();
32795 return res;
32796 };
32797 }
32798 }
32799
32800 },{"crypto":3}],35:[function(require,module,exports){
32801 (function (Buffer){
32802 var Transform = require('stream').Transform
32803 var inherits = require('inherits')
32804 var StringDecoder = require('string_decoder').StringDecoder
32805 module.exports = CipherBase
32806 inherits(CipherBase, Transform)
32807 function CipherBase (hashMode) {
32808 Transform.call(this)
32809 this.hashMode = typeof hashMode === 'string'
32810 if (this.hashMode) {
32811 this[hashMode] = this._finalOrDigest
32812 } else {
32813 this.final = this._finalOrDigest
32814 }
32815 this._decoder = null
32816 this._encoding = null
32817 }
32818 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
32819 if (typeof data === 'string') {
32820 data = new Buffer(data, inputEnc)
32821 }
32822 var outData = this._update(data)
32823 if (this.hashMode) {
32824 return this
32825 }
32826 if (outputEnc) {
32827 outData = this._toString(outData, outputEnc)
32828 }
32829 return outData
32830 }
32831
32832 CipherBase.prototype.setAutoPadding = function () {}
32833
32834 CipherBase.prototype.getAuthTag = function () {
32835 throw new Error('trying to get auth tag in unsupported state')
32836 }
32837
32838 CipherBase.prototype.setAuthTag = function () {
32839 throw new Error('trying to set auth tag in unsupported state')
32840 }
32841
32842 CipherBase.prototype.setAAD = function () {
32843 throw new Error('trying to set aad in unsupported state')
32844 }
32845
32846 CipherBase.prototype._transform = function (data, _, next) {
32847 var err
32848 try {
32849 if (this.hashMode) {
32850 this._update(data)
32851 } else {
32852 this.push(this._update(data))
32853 }
32854 } catch (e) {
32855 err = e
32856 } finally {
32857 next(err)
32858 }
32859 }
32860 CipherBase.prototype._flush = function (done) {
32861 var err
32862 try {
32863 this.push(this._final())
32864 } catch (e) {
32865 err = e
32866 } finally {
32867 done(err)
32868 }
32869 }
32870 CipherBase.prototype._finalOrDigest = function (outputEnc) {
32871 var outData = this._final() || new Buffer('')
32872 if (outputEnc) {
32873 outData = this._toString(outData, outputEnc, true)
32874 }
32875 return outData
32876 }
32877
32878 CipherBase.prototype._toString = function (value, enc, fin) {
32879 if (!this._decoder) {
32880 this._decoder = new StringDecoder(enc)
32881 this._encoding = enc
32882 }
32883 if (this._encoding !== enc) {
32884 throw new Error('can\'t switch encodings')
32885 }
32886 var out = this._decoder.write(value)
32887 if (fin) {
32888 out += this._decoder.end()
32889 }
32890 return out
32891 }
32892
32893 }).call(this,require("buffer").Buffer)
32894 },{"buffer":5,"inherits":63,"stream":25,"string_decoder":26}],36:[function(require,module,exports){
32895 (function (Buffer){
32896 'use strict';
32897 var inherits = require('inherits')
32898 var md5 = require('./md5')
32899 var rmd160 = require('ripemd160')
32900 var sha = require('sha.js')
32901
32902 var Base = require('cipher-base')
32903
32904 function HashNoConstructor(hash) {
32905 Base.call(this, 'digest')
32906
32907 this._hash = hash
32908 this.buffers = []
32909 }
32910
32911 inherits(HashNoConstructor, Base)
32912
32913 HashNoConstructor.prototype._update = function (data) {
32914 this.buffers.push(data)
32915 }
32916
32917 HashNoConstructor.prototype._final = function () {
32918 var buf = Buffer.concat(this.buffers)
32919 var r = this._hash(buf)
32920 this.buffers = null
32921
32922 return r
32923 }
32924
32925 function Hash(hash) {
32926 Base.call(this, 'digest')
32927
32928 this._hash = hash
32929 }
32930
32931 inherits(Hash, Base)
32932
32933 Hash.prototype._update = function (data) {
32934 this._hash.update(data)
32935 }
32936
32937 Hash.prototype._final = function () {
32938 return this._hash.digest()
32939 }
32940
32941 module.exports = function createHash (alg) {
32942 alg = alg.toLowerCase()
32943 if ('md5' === alg) return new HashNoConstructor(md5)
32944 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
32945
32946 return new Hash(sha(alg))
32947 }
32948
32949 }).call(this,require("buffer").Buffer)
32950 },{"./md5":38,"buffer":5,"cipher-base":35,"inherits":63,"ripemd160":71,"sha.js":80}],37:[function(require,module,exports){
32951 (function (Buffer){
32952 'use strict';
32953 var intSize = 4;
32954 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
32955 var chrsz = 8;
32956
32957 function toArray(buf, bigEndian) {
32958 if ((buf.length % intSize) !== 0) {
32959 var len = buf.length + (intSize - (buf.length % intSize));
32960 buf = Buffer.concat([buf, zeroBuffer], len);
32961 }
32962
32963 var arr = [];
32964 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
32965 for (var i = 0; i < buf.length; i += intSize) {
32966 arr.push(fn.call(buf, i));
32967 }
32968 return arr;
32969 }
32970
32971 function toBuffer(arr, size, bigEndian) {
32972 var buf = new Buffer(size);
32973 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
32974 for (var i = 0; i < arr.length; i++) {
32975 fn.call(buf, arr[i], i * 4, true);
32976 }
32977 return buf;
32978 }
32979
32980 function hash(buf, fn, hashSize, bigEndian) {
32981 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
32982 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
32983 return toBuffer(arr, hashSize, bigEndian);
32984 }
32985 exports.hash = hash;
32986 }).call(this,require("buffer").Buffer)
32987 },{"buffer":5}],38:[function(require,module,exports){
32988 'use strict';
32989 /*
32990 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
32991 * Digest Algorithm, as defined in RFC 1321.
32992 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
32993 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
32994 * Distributed under the BSD License
32995 * See http://pajhome.org.uk/crypt/md5 for more info.
32996 */
32997
32998 var helpers = require('./helpers');
32999
33000 /*
33001 * Calculate the MD5 of an array of little-endian words, and a bit length
33002 */
33003 function core_md5(x, len)
33004 {
33005 /* append padding */
33006 x[len >> 5] |= 0x80 << ((len) % 32);
33007 x[(((len + 64) >>> 9) << 4) + 14] = len;
33008
33009 var a = 1732584193;
33010 var b = -271733879;
33011 var c = -1732584194;
33012 var d = 271733878;
33013
33014 for(var i = 0; i < x.length; i += 16)
33015 {
33016 var olda = a;
33017 var oldb = b;
33018 var oldc = c;
33019 var oldd = d;
33020
33021 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
33022 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
33023 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
33024 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
33025 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
33026 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
33027 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
33028 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
33029 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
33030 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
33031 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
33032 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
33033 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
33034 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
33035 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
33036 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
33037
33038 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
33039 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
33040 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
33041 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
33042 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
33043 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
33044 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
33045 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
33046 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
33047 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
33048 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
33049 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
33050 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
33051 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
33052 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
33053 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
33054
33055 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
33056 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
33057 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
33058 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
33059 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
33060 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
33061 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
33062 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
33063 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
33064 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
33065 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
33066 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
33067 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
33068 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
33069 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
33070 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
33071
33072 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
33073 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
33074 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
33075 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
33076 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
33077 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
33078 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
33079 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
33080 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
33081 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
33082 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
33083 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
33084 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
33085 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
33086 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
33087 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
33088
33089 a = safe_add(a, olda);
33090 b = safe_add(b, oldb);
33091 c = safe_add(c, oldc);
33092 d = safe_add(d, oldd);
33093 }
33094 return Array(a, b, c, d);
33095
33096 }
33097
33098 /*
33099 * These functions implement the four basic operations the algorithm uses.
33100 */
33101 function md5_cmn(q, a, b, x, s, t)
33102 {
33103 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
33104 }
33105 function md5_ff(a, b, c, d, x, s, t)
33106 {
33107 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
33108 }
33109 function md5_gg(a, b, c, d, x, s, t)
33110 {
33111 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
33112 }
33113 function md5_hh(a, b, c, d, x, s, t)
33114 {
33115 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
33116 }
33117 function md5_ii(a, b, c, d, x, s, t)
33118 {
33119 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
33120 }
33121
33122 /*
33123 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
33124 * to work around bugs in some JS interpreters.
33125 */
33126 function safe_add(x, y)
33127 {
33128 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
33129 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
33130 return (msw << 16) | (lsw & 0xFFFF);
33131 }
33132
33133 /*
33134 * Bitwise rotate a 32-bit number to the left.
33135 */
33136 function bit_rol(num, cnt)
33137 {
33138 return (num << cnt) | (num >>> (32 - cnt));
33139 }
33140
33141 module.exports = function md5(buf) {
33142 return helpers.hash(buf, core_md5, 16);
33143 };
33144 },{"./helpers":37}],39:[function(require,module,exports){
33145 'use strict';
33146
33147 var elliptic = exports;
33148
33149 elliptic.version = require('../package.json').version;
33150 elliptic.utils = require('./elliptic/utils');
33151 elliptic.rand = require('brorand');
33152 elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
33153 elliptic.curve = require('./elliptic/curve');
33154 elliptic.curves = require('./elliptic/curves');
33155
33156 // Protocols
33157 elliptic.ec = require('./elliptic/ec');
33158 elliptic.eddsa = require('./elliptic/eddsa');
33159
33160 },{"../package.json":55,"./elliptic/curve":42,"./elliptic/curves":45,"./elliptic/ec":46,"./elliptic/eddsa":49,"./elliptic/hmac-drbg":52,"./elliptic/utils":54,"brorand":34}],40:[function(require,module,exports){
33161 'use strict';
33162
33163 var BN = require('bn.js');
33164 var elliptic = require('../../elliptic');
33165 var utils = elliptic.utils;
33166 var getNAF = utils.getNAF;
33167 var getJSF = utils.getJSF;
33168 var assert = utils.assert;
33169
33170 function BaseCurve(type, conf) {
33171 this.type = type;
33172 this.p = new BN(conf.p, 16);
33173
33174 // Use Montgomery, when there is no fast reduction for the prime
33175 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
33176
33177 // Useful for many curves
33178 this.zero = new BN(0).toRed(this.red);
33179 this.one = new BN(1).toRed(this.red);
33180 this.two = new BN(2).toRed(this.red);
33181
33182 // Curve configuration, optional
33183 this.n = conf.n && new BN(conf.n, 16);
33184 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
33185
33186 // Temporary arrays
33187 this._wnafT1 = new Array(4);
33188 this._wnafT2 = new Array(4);
33189 this._wnafT3 = new Array(4);
33190 this._wnafT4 = new Array(4);
33191
33192 // Generalized Greg Maxwell's trick
33193 var adjustCount = this.n && this.p.div(this.n);
33194 if (!adjustCount || adjustCount.cmpn(100) > 0) {
33195 this.redN = null;
33196 } else {
33197 this._maxwellTrick = true;
33198 this.redN = this.n.toRed(this.red);
33199 }
33200 }
33201 module.exports = BaseCurve;
33202
33203 BaseCurve.prototype.point = function point() {
33204 throw new Error('Not implemented');
33205 };
33206
33207 BaseCurve.prototype.validate = function validate() {
33208 throw new Error('Not implemented');
33209 };
33210
33211 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
33212 assert(p.precomputed);
33213 var doubles = p._getDoubles();
33214
33215 var naf = getNAF(k, 1);
33216 var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
33217 I /= 3;
33218
33219 // Translate into more windowed form
33220 var repr = [];
33221 for (var j = 0; j < naf.length; j += doubles.step) {
33222 var nafW = 0;
33223 for (var k = j + doubles.step - 1; k >= j; k--)
33224 nafW = (nafW << 1) + naf[k];
33225 repr.push(nafW);
33226 }
33227
33228 var a = this.jpoint(null, null, null);
33229 var b = this.jpoint(null, null, null);
33230 for (var i = I; i > 0; i--) {
33231 for (var j = 0; j < repr.length; j++) {
33232 var nafW = repr[j];
33233 if (nafW === i)
33234 b = b.mixedAdd(doubles.points[j]);
33235 else if (nafW === -i)
33236 b = b.mixedAdd(doubles.points[j].neg());
33237 }
33238 a = a.add(b);
33239 }
33240 return a.toP();
33241 };
33242
33243 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
33244 var w = 4;
33245
33246 // Precompute window
33247 var nafPoints = p._getNAFPoints(w);
33248 w = nafPoints.wnd;
33249 var wnd = nafPoints.points;
33250
33251 // Get NAF form
33252 var naf = getNAF(k, w);
33253
33254 // Add `this`*(N+1) for every w-NAF index
33255 var acc = this.jpoint(null, null, null);
33256 for (var i = naf.length - 1; i >= 0; i--) {
33257 // Count zeroes
33258 for (var k = 0; i >= 0 && naf[i] === 0; i--)
33259 k++;
33260 if (i >= 0)
33261 k++;
33262 acc = acc.dblp(k);
33263
33264 if (i < 0)
33265 break;
33266 var z = naf[i];
33267 assert(z !== 0);
33268 if (p.type === 'affine') {
33269 // J +- P
33270 if (z > 0)
33271 acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
33272 else
33273 acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
33274 } else {
33275 // J +- J
33276 if (z > 0)
33277 acc = acc.add(wnd[(z - 1) >> 1]);
33278 else
33279 acc = acc.add(wnd[(-z - 1) >> 1].neg());
33280 }
33281 }
33282 return p.type === 'affine' ? acc.toP() : acc;
33283 };
33284
33285 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
33286 points,
33287 coeffs,
33288 len,
33289 jacobianResult) {
33290 var wndWidth = this._wnafT1;
33291 var wnd = this._wnafT2;
33292 var naf = this._wnafT3;
33293
33294 // Fill all arrays
33295 var max = 0;
33296 for (var i = 0; i < len; i++) {
33297 var p = points[i];
33298 var nafPoints = p._getNAFPoints(defW);
33299 wndWidth[i] = nafPoints.wnd;
33300 wnd[i] = nafPoints.points;
33301 }
33302
33303 // Comb small window NAFs
33304 for (var i = len - 1; i >= 1; i -= 2) {
33305 var a = i - 1;
33306 var b = i;
33307 if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
33308 naf[a] = getNAF(coeffs[a], wndWidth[a]);
33309 naf[b] = getNAF(coeffs[b], wndWidth[b]);
33310 max = Math.max(naf[a].length, max);
33311 max = Math.max(naf[b].length, max);
33312 continue;
33313 }
33314
33315 var comb = [
33316 points[a], /* 1 */
33317 null, /* 3 */
33318 null, /* 5 */
33319 points[b] /* 7 */
33320 ];
33321
33322 // Try to avoid Projective points, if possible
33323 if (points[a].y.cmp(points[b].y) === 0) {
33324 comb[1] = points[a].add(points[b]);
33325 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
33326 } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
33327 comb[1] = points[a].toJ().mixedAdd(points[b]);
33328 comb[2] = points[a].add(points[b].neg());
33329 } else {
33330 comb[1] = points[a].toJ().mixedAdd(points[b]);
33331 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
33332 }
33333
33334 var index = [
33335 -3, /* -1 -1 */
33336 -1, /* -1 0 */
33337 -5, /* -1 1 */
33338 -7, /* 0 -1 */
33339 0, /* 0 0 */
33340 7, /* 0 1 */
33341 5, /* 1 -1 */
33342 1, /* 1 0 */
33343 3 /* 1 1 */
33344 ];
33345
33346 var jsf = getJSF(coeffs[a], coeffs[b]);
33347 max = Math.max(jsf[0].length, max);
33348 naf[a] = new Array(max);
33349 naf[b] = new Array(max);
33350 for (var j = 0; j < max; j++) {
33351 var ja = jsf[0][j] | 0;
33352 var jb = jsf[1][j] | 0;
33353
33354 naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
33355 naf[b][j] = 0;
33356 wnd[a] = comb;
33357 }
33358 }
33359
33360 var acc = this.jpoint(null, null, null);
33361 var tmp = this._wnafT4;
33362 for (var i = max; i >= 0; i--) {
33363 var k = 0;
33364
33365 while (i >= 0) {
33366 var zero = true;
33367 for (var j = 0; j < len; j++) {
33368 tmp[j] = naf[j][i] | 0;
33369 if (tmp[j] !== 0)
33370 zero = false;
33371 }
33372 if (!zero)
33373 break;
33374 k++;
33375 i--;
33376 }
33377 if (i >= 0)
33378 k++;
33379 acc = acc.dblp(k);
33380 if (i < 0)
33381 break;
33382
33383 for (var j = 0; j < len; j++) {
33384 var z = tmp[j];
33385 var p;
33386 if (z === 0)
33387 continue;
33388 else if (z > 0)
33389 p = wnd[j][(z - 1) >> 1];
33390 else if (z < 0)
33391 p = wnd[j][(-z - 1) >> 1].neg();
33392
33393 if (p.type === 'affine')
33394 acc = acc.mixedAdd(p);
33395 else
33396 acc = acc.add(p);
33397 }
33398 }
33399 // Zeroify references
33400 for (var i = 0; i < len; i++)
33401 wnd[i] = null;
33402
33403 if (jacobianResult)
33404 return acc;
33405 else
33406 return acc.toP();
33407 };
33408
33409 function BasePoint(curve, type) {
33410 this.curve = curve;
33411 this.type = type;
33412 this.precomputed = null;
33413 }
33414 BaseCurve.BasePoint = BasePoint;
33415
33416 BasePoint.prototype.eq = function eq(/*other*/) {
33417 throw new Error('Not implemented');
33418 };
33419
33420 BasePoint.prototype.validate = function validate() {
33421 return this.curve.validate(this);
33422 };
33423
33424 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
33425 bytes = utils.toArray(bytes, enc);
33426
33427 var len = this.p.byteLength();
33428
33429 // uncompressed, hybrid-odd, hybrid-even
33430 if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
33431 bytes.length - 1 === 2 * len) {
33432 if (bytes[0] === 0x06)
33433 assert(bytes[bytes.length - 1] % 2 === 0);
33434 else if (bytes[0] === 0x07)
33435 assert(bytes[bytes.length - 1] % 2 === 1);
33436
33437 var res = this.point(bytes.slice(1, 1 + len),
33438 bytes.slice(1 + len, 1 + 2 * len));
33439
33440 return res;
33441 } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
33442 bytes.length - 1 === len) {
33443 return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
33444 }
33445 throw new Error('Unknown point format');
33446 };
33447
33448 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
33449 return this.encode(enc, true);
33450 };
33451
33452 BasePoint.prototype._encode = function _encode(compact) {
33453 var len = this.curve.p.byteLength();
33454 var x = this.getX().toArray('be', len);
33455
33456 if (compact)
33457 return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
33458
33459 return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
33460 };
33461
33462 BasePoint.prototype.encode = function encode(enc, compact) {
33463 return utils.encode(this._encode(compact), enc);
33464 };
33465
33466 BasePoint.prototype.precompute = function precompute(power) {
33467 if (this.precomputed)
33468 return this;
33469
33470 var precomputed = {
33471 doubles: null,
33472 naf: null,
33473 beta: null
33474 };
33475 precomputed.naf = this._getNAFPoints(8);
33476 precomputed.doubles = this._getDoubles(4, power);
33477 precomputed.beta = this._getBeta();
33478 this.precomputed = precomputed;
33479
33480 return this;
33481 };
33482
33483 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
33484 if (!this.precomputed)
33485 return false;
33486
33487 var doubles = this.precomputed.doubles;
33488 if (!doubles)
33489 return false;
33490
33491 return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
33492 };
33493
33494 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
33495 if (this.precomputed && this.precomputed.doubles)
33496 return this.precomputed.doubles;
33497
33498 var doubles = [ this ];
33499 var acc = this;
33500 for (var i = 0; i < power; i += step) {
33501 for (var j = 0; j < step; j++)
33502 acc = acc.dbl();
33503 doubles.push(acc);
33504 }
33505 return {
33506 step: step,
33507 points: doubles
33508 };
33509 };
33510
33511 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
33512 if (this.precomputed && this.precomputed.naf)
33513 return this.precomputed.naf;
33514
33515 var res = [ this ];
33516 var max = (1 << wnd) - 1;
33517 var dbl = max === 1 ? null : this.dbl();
33518 for (var i = 1; i < max; i++)
33519 res[i] = res[i - 1].add(dbl);
33520 return {
33521 wnd: wnd,
33522 points: res
33523 };
33524 };
33525
33526 BasePoint.prototype._getBeta = function _getBeta() {
33527 return null;
33528 };
33529
33530 BasePoint.prototype.dblp = function dblp(k) {
33531 var r = this;
33532 for (var i = 0; i < k; i++)
33533 r = r.dbl();
33534 return r;
33535 };
33536
33537 },{"../../elliptic":39,"bn.js":33}],41:[function(require,module,exports){
33538 'use strict';
33539
33540 var curve = require('../curve');
33541 var elliptic = require('../../elliptic');
33542 var BN = require('bn.js');
33543 var inherits = require('inherits');
33544 var Base = curve.base;
33545
33546 var assert = elliptic.utils.assert;
33547
33548 function EdwardsCurve(conf) {
33549 // NOTE: Important as we are creating point in Base.call()
33550 this.twisted = (conf.a | 0) !== 1;
33551 this.mOneA = this.twisted && (conf.a | 0) === -1;
33552 this.extended = this.mOneA;
33553
33554 Base.call(this, 'edwards', conf);
33555
33556 this.a = new BN(conf.a, 16).umod(this.red.m);
33557 this.a = this.a.toRed(this.red);
33558 this.c = new BN(conf.c, 16).toRed(this.red);
33559 this.c2 = this.c.redSqr();
33560 this.d = new BN(conf.d, 16).toRed(this.red);
33561 this.dd = this.d.redAdd(this.d);
33562
33563 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
33564 this.oneC = (conf.c | 0) === 1;
33565 }
33566 inherits(EdwardsCurve, Base);
33567 module.exports = EdwardsCurve;
33568
33569 EdwardsCurve.prototype._mulA = function _mulA(num) {
33570 if (this.mOneA)
33571 return num.redNeg();
33572 else
33573 return this.a.redMul(num);
33574 };
33575
33576 EdwardsCurve.prototype._mulC = function _mulC(num) {
33577 if (this.oneC)
33578 return num;
33579 else
33580 return this.c.redMul(num);
33581 };
33582
33583 // Just for compatibility with Short curve
33584 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
33585 return this.point(x, y, z, t);
33586 };
33587
33588 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
33589 x = new BN(x, 16);
33590 if (!x.red)
33591 x = x.toRed(this.red);
33592
33593 var x2 = x.redSqr();
33594 var rhs = this.c2.redSub(this.a.redMul(x2));
33595 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
33596
33597 var y2 = rhs.redMul(lhs.redInvm());
33598 var y = y2.redSqrt();
33599 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
33600 throw new Error('invalid point');
33601
33602 var isOdd = y.fromRed().isOdd();
33603 if (odd && !isOdd || !odd && isOdd)
33604 y = y.redNeg();
33605
33606 return this.point(x, y);
33607 };
33608
33609 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
33610 y = new BN(y, 16);
33611 if (!y.red)
33612 y = y.toRed(this.red);
33613
33614 // x^2 = (y^2 - 1) / (d y^2 + 1)
33615 var y2 = y.redSqr();
33616 var lhs = y2.redSub(this.one);
33617 var rhs = y2.redMul(this.d).redAdd(this.one);
33618 var x2 = lhs.redMul(rhs.redInvm());
33619
33620 if (x2.cmp(this.zero) === 0) {
33621 if (odd)
33622 throw new Error('invalid point');
33623 else
33624 return this.point(this.zero, y);
33625 }
33626
33627 var x = x2.redSqrt();
33628 if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
33629 throw new Error('invalid point');
33630
33631 if (x.isOdd() !== odd)
33632 x = x.redNeg();
33633
33634 return this.point(x, y);
33635 };
33636
33637 EdwardsCurve.prototype.validate = function validate(point) {
33638 if (point.isInfinity())
33639 return true;
33640
33641 // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
33642 point.normalize();
33643
33644 var x2 = point.x.redSqr();
33645 var y2 = point.y.redSqr();
33646 var lhs = x2.redMul(this.a).redAdd(y2);
33647 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
33648
33649 return lhs.cmp(rhs) === 0;
33650 };
33651
33652 function Point(curve, x, y, z, t) {
33653 Base.BasePoint.call(this, curve, 'projective');
33654 if (x === null && y === null && z === null) {
33655 this.x = this.curve.zero;
33656 this.y = this.curve.one;
33657 this.z = this.curve.one;
33658 this.t = this.curve.zero;
33659 this.zOne = true;
33660 } else {
33661 this.x = new BN(x, 16);
33662 this.y = new BN(y, 16);
33663 this.z = z ? new BN(z, 16) : this.curve.one;
33664 this.t = t && new BN(t, 16);
33665 if (!this.x.red)
33666 this.x = this.x.toRed(this.curve.red);
33667 if (!this.y.red)
33668 this.y = this.y.toRed(this.curve.red);
33669 if (!this.z.red)
33670 this.z = this.z.toRed(this.curve.red);
33671 if (this.t && !this.t.red)
33672 this.t = this.t.toRed(this.curve.red);
33673 this.zOne = this.z === this.curve.one;
33674
33675 // Use extended coordinates
33676 if (this.curve.extended && !this.t) {
33677 this.t = this.x.redMul(this.y);
33678 if (!this.zOne)
33679 this.t = this.t.redMul(this.z.redInvm());
33680 }
33681 }
33682 }
33683 inherits(Point, Base.BasePoint);
33684
33685 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
33686 return Point.fromJSON(this, obj);
33687 };
33688
33689 EdwardsCurve.prototype.point = function point(x, y, z, t) {
33690 return new Point(this, x, y, z, t);
33691 };
33692
33693 Point.fromJSON = function fromJSON(curve, obj) {
33694 return new Point(curve, obj[0], obj[1], obj[2]);
33695 };
33696
33697 Point.prototype.inspect = function inspect() {
33698 if (this.isInfinity())
33699 return '<EC Point Infinity>';
33700 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
33701 ' y: ' + this.y.fromRed().toString(16, 2) +
33702 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
33703 };
33704
33705 Point.prototype.isInfinity = function isInfinity() {
33706 // XXX This code assumes that zero is always zero in red
33707 return this.x.cmpn(0) === 0 &&
33708 this.y.cmp(this.z) === 0;
33709 };
33710
33711 Point.prototype._extDbl = function _extDbl() {
33712 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
33713 // #doubling-dbl-2008-hwcd
33714 // 4M + 4S
33715
33716 // A = X1^2
33717 var a = this.x.redSqr();
33718 // B = Y1^2
33719 var b = this.y.redSqr();
33720 // C = 2 * Z1^2
33721 var c = this.z.redSqr();
33722 c = c.redIAdd(c);
33723 // D = a * A
33724 var d = this.curve._mulA(a);
33725 // E = (X1 + Y1)^2 - A - B
33726 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
33727 // G = D + B
33728 var g = d.redAdd(b);
33729 // F = G - C
33730 var f = g.redSub(c);
33731 // H = D - B
33732 var h = d.redSub(b);
33733 // X3 = E * F
33734 var nx = e.redMul(f);
33735 // Y3 = G * H
33736 var ny = g.redMul(h);
33737 // T3 = E * H
33738 var nt = e.redMul(h);
33739 // Z3 = F * G
33740 var nz = f.redMul(g);
33741 return this.curve.point(nx, ny, nz, nt);
33742 };
33743
33744 Point.prototype._projDbl = function _projDbl() {
33745 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
33746 // #doubling-dbl-2008-bbjlp
33747 // #doubling-dbl-2007-bl
33748 // and others
33749 // Generally 3M + 4S or 2M + 4S
33750
33751 // B = (X1 + Y1)^2
33752 var b = this.x.redAdd(this.y).redSqr();
33753 // C = X1^2
33754 var c = this.x.redSqr();
33755 // D = Y1^2
33756 var d = this.y.redSqr();
33757
33758 var nx;
33759 var ny;
33760 var nz;
33761 if (this.curve.twisted) {
33762 // E = a * C
33763 var e = this.curve._mulA(c);
33764 // F = E + D
33765 var f = e.redAdd(d);
33766 if (this.zOne) {
33767 // X3 = (B - C - D) * (F - 2)
33768 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
33769 // Y3 = F * (E - D)
33770 ny = f.redMul(e.redSub(d));
33771 // Z3 = F^2 - 2 * F
33772 nz = f.redSqr().redSub(f).redSub(f);
33773 } else {
33774 // H = Z1^2
33775 var h = this.z.redSqr();
33776 // J = F - 2 * H
33777 var j = f.redSub(h).redISub(h);
33778 // X3 = (B-C-D)*J
33779 nx = b.redSub(c).redISub(d).redMul(j);
33780 // Y3 = F * (E - D)
33781 ny = f.redMul(e.redSub(d));
33782 // Z3 = F * J
33783 nz = f.redMul(j);
33784 }
33785 } else {
33786 // E = C + D
33787 var e = c.redAdd(d);
33788 // H = (c * Z1)^2
33789 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
33790 // J = E - 2 * H
33791 var j = e.redSub(h).redSub(h);
33792 // X3 = c * (B - E) * J
33793 nx = this.curve._mulC(b.redISub(e)).redMul(j);
33794 // Y3 = c * E * (C - D)
33795 ny = this.curve._mulC(e).redMul(c.redISub(d));
33796 // Z3 = E * J
33797 nz = e.redMul(j);
33798 }
33799 return this.curve.point(nx, ny, nz);
33800 };
33801
33802 Point.prototype.dbl = function dbl() {
33803 if (this.isInfinity())
33804 return this;
33805
33806 // Double in extended coordinates
33807 if (this.curve.extended)
33808 return this._extDbl();
33809 else
33810 return this._projDbl();
33811 };
33812
33813 Point.prototype._extAdd = function _extAdd(p) {
33814 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
33815 // #addition-add-2008-hwcd-3
33816 // 8M
33817
33818 // A = (Y1 - X1) * (Y2 - X2)
33819 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
33820 // B = (Y1 + X1) * (Y2 + X2)
33821 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
33822 // C = T1 * k * T2
33823 var c = this.t.redMul(this.curve.dd).redMul(p.t);
33824 // D = Z1 * 2 * Z2
33825 var d = this.z.redMul(p.z.redAdd(p.z));
33826 // E = B - A
33827 var e = b.redSub(a);
33828 // F = D - C
33829 var f = d.redSub(c);
33830 // G = D + C
33831 var g = d.redAdd(c);
33832 // H = B + A
33833 var h = b.redAdd(a);
33834 // X3 = E * F
33835 var nx = e.redMul(f);
33836 // Y3 = G * H
33837 var ny = g.redMul(h);
33838 // T3 = E * H
33839 var nt = e.redMul(h);
33840 // Z3 = F * G
33841 var nz = f.redMul(g);
33842 return this.curve.point(nx, ny, nz, nt);
33843 };
33844
33845 Point.prototype._projAdd = function _projAdd(p) {
33846 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
33847 // #addition-add-2008-bbjlp
33848 // #addition-add-2007-bl
33849 // 10M + 1S
33850
33851 // A = Z1 * Z2
33852 var a = this.z.redMul(p.z);
33853 // B = A^2
33854 var b = a.redSqr();
33855 // C = X1 * X2
33856 var c = this.x.redMul(p.x);
33857 // D = Y1 * Y2
33858 var d = this.y.redMul(p.y);
33859 // E = d * C * D
33860 var e = this.curve.d.redMul(c).redMul(d);
33861 // F = B - E
33862 var f = b.redSub(e);
33863 // G = B + E
33864 var g = b.redAdd(e);
33865 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
33866 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
33867 var nx = a.redMul(f).redMul(tmp);
33868 var ny;
33869 var nz;
33870 if (this.curve.twisted) {
33871 // Y3 = A * G * (D - a * C)
33872 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
33873 // Z3 = F * G
33874 nz = f.redMul(g);
33875 } else {
33876 // Y3 = A * G * (D - C)
33877 ny = a.redMul(g).redMul(d.redSub(c));
33878 // Z3 = c * F * G
33879 nz = this.curve._mulC(f).redMul(g);
33880 }
33881 return this.curve.point(nx, ny, nz);
33882 };
33883
33884 Point.prototype.add = function add(p) {
33885 if (this.isInfinity())
33886 return p;
33887 if (p.isInfinity())
33888 return this;
33889
33890 if (this.curve.extended)
33891 return this._extAdd(p);
33892 else
33893 return this._projAdd(p);
33894 };
33895
33896 Point.prototype.mul = function mul(k) {
33897 if (this._hasDoubles(k))
33898 return this.curve._fixedNafMul(this, k);
33899 else
33900 return this.curve._wnafMul(this, k);
33901 };
33902
33903 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
33904 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
33905 };
33906
33907 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
33908 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
33909 };
33910
33911 Point.prototype.normalize = function normalize() {
33912 if (this.zOne)
33913 return this;
33914
33915 // Normalize coordinates
33916 var zi = this.z.redInvm();
33917 this.x = this.x.redMul(zi);
33918 this.y = this.y.redMul(zi);
33919 if (this.t)
33920 this.t = this.t.redMul(zi);
33921 this.z = this.curve.one;
33922 this.zOne = true;
33923 return this;
33924 };
33925
33926 Point.prototype.neg = function neg() {
33927 return this.curve.point(this.x.redNeg(),
33928 this.y,
33929 this.z,
33930 this.t && this.t.redNeg());
33931 };
33932
33933 Point.prototype.getX = function getX() {
33934 this.normalize();
33935 return this.x.fromRed();
33936 };
33937
33938 Point.prototype.getY = function getY() {
33939 this.normalize();
33940 return this.y.fromRed();
33941 };
33942
33943 Point.prototype.eq = function eq(other) {
33944 return this === other ||
33945 this.getX().cmp(other.getX()) === 0 &&
33946 this.getY().cmp(other.getY()) === 0;
33947 };
33948
33949 Point.prototype.eqXToP = function eqXToP(x) {
33950 var rx = x.toRed(this.curve.red).redMul(this.z);
33951 if (this.x.cmp(rx) === 0)
33952 return true;
33953
33954 var xc = x.clone();
33955 var t = this.curve.redN.redMul(this.z);
33956 for (;;) {
33957 xc.iadd(this.curve.n);
33958 if (xc.cmp(this.curve.p) >= 0)
33959 return false;
33960
33961 rx.redIAdd(t);
33962 if (this.x.cmp(rx) === 0)
33963 return true;
33964 }
33965 return false;
33966 };
33967
33968 // Compatibility with BaseCurve
33969 Point.prototype.toP = Point.prototype.normalize;
33970 Point.prototype.mixedAdd = Point.prototype.add;
33971
33972 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],42:[function(require,module,exports){
33973 'use strict';
33974
33975 var curve = exports;
33976
33977 curve.base = require('./base');
33978 curve.short = require('./short');
33979 curve.mont = require('./mont');
33980 curve.edwards = require('./edwards');
33981
33982 },{"./base":40,"./edwards":41,"./mont":43,"./short":44}],43:[function(require,module,exports){
33983 'use strict';
33984
33985 var curve = require('../curve');
33986 var BN = require('bn.js');
33987 var inherits = require('inherits');
33988 var Base = curve.base;
33989
33990 var elliptic = require('../../elliptic');
33991 var utils = elliptic.utils;
33992
33993 function MontCurve(conf) {
33994 Base.call(this, 'mont', conf);
33995
33996 this.a = new BN(conf.a, 16).toRed(this.red);
33997 this.b = new BN(conf.b, 16).toRed(this.red);
33998 this.i4 = new BN(4).toRed(this.red).redInvm();
33999 this.two = new BN(2).toRed(this.red);
34000 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
34001 }
34002 inherits(MontCurve, Base);
34003 module.exports = MontCurve;
34004
34005 MontCurve.prototype.validate = function validate(point) {
34006 var x = point.normalize().x;
34007 var x2 = x.redSqr();
34008 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
34009 var y = rhs.redSqrt();
34010
34011 return y.redSqr().cmp(rhs) === 0;
34012 };
34013
34014 function Point(curve, x, z) {
34015 Base.BasePoint.call(this, curve, 'projective');
34016 if (x === null && z === null) {
34017 this.x = this.curve.one;
34018 this.z = this.curve.zero;
34019 } else {
34020 this.x = new BN(x, 16);
34021 this.z = new BN(z, 16);
34022 if (!this.x.red)
34023 this.x = this.x.toRed(this.curve.red);
34024 if (!this.z.red)
34025 this.z = this.z.toRed(this.curve.red);
34026 }
34027 }
34028 inherits(Point, Base.BasePoint);
34029
34030 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
34031 return this.point(utils.toArray(bytes, enc), 1);
34032 };
34033
34034 MontCurve.prototype.point = function point(x, z) {
34035 return new Point(this, x, z);
34036 };
34037
34038 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
34039 return Point.fromJSON(this, obj);
34040 };
34041
34042 Point.prototype.precompute = function precompute() {
34043 // No-op
34044 };
34045
34046 Point.prototype._encode = function _encode() {
34047 return this.getX().toArray('be', this.curve.p.byteLength());
34048 };
34049
34050 Point.fromJSON = function fromJSON(curve, obj) {
34051 return new Point(curve, obj[0], obj[1] || curve.one);
34052 };
34053
34054 Point.prototype.inspect = function inspect() {
34055 if (this.isInfinity())
34056 return '<EC Point Infinity>';
34057 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
34058 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
34059 };
34060
34061 Point.prototype.isInfinity = function isInfinity() {
34062 // XXX This code assumes that zero is always zero in red
34063 return this.z.cmpn(0) === 0;
34064 };
34065
34066 Point.prototype.dbl = function dbl() {
34067 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
34068 // 2M + 2S + 4A
34069
34070 // A = X1 + Z1
34071 var a = this.x.redAdd(this.z);
34072 // AA = A^2
34073 var aa = a.redSqr();
34074 // B = X1 - Z1
34075 var b = this.x.redSub(this.z);
34076 // BB = B^2
34077 var bb = b.redSqr();
34078 // C = AA - BB
34079 var c = aa.redSub(bb);
34080 // X3 = AA * BB
34081 var nx = aa.redMul(bb);
34082 // Z3 = C * (BB + A24 * C)
34083 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
34084 return this.curve.point(nx, nz);
34085 };
34086
34087 Point.prototype.add = function add() {
34088 throw new Error('Not supported on Montgomery curve');
34089 };
34090
34091 Point.prototype.diffAdd = function diffAdd(p, diff) {
34092 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
34093 // 4M + 2S + 6A
34094
34095 // A = X2 + Z2
34096 var a = this.x.redAdd(this.z);
34097 // B = X2 - Z2
34098 var b = this.x.redSub(this.z);
34099 // C = X3 + Z3
34100 var c = p.x.redAdd(p.z);
34101 // D = X3 - Z3
34102 var d = p.x.redSub(p.z);
34103 // DA = D * A
34104 var da = d.redMul(a);
34105 // CB = C * B
34106 var cb = c.redMul(b);
34107 // X5 = Z1 * (DA + CB)^2
34108 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
34109 // Z5 = X1 * (DA - CB)^2
34110 var nz = diff.x.redMul(da.redISub(cb).redSqr());
34111 return this.curve.point(nx, nz);
34112 };
34113
34114 Point.prototype.mul = function mul(k) {
34115 var t = k.clone();
34116 var a = this; // (N / 2) * Q + Q
34117 var b = this.curve.point(null, null); // (N / 2) * Q
34118 var c = this; // Q
34119
34120 for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
34121 bits.push(t.andln(1));
34122
34123 for (var i = bits.length - 1; i >= 0; i--) {
34124 if (bits[i] === 0) {
34125 // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
34126 a = a.diffAdd(b, c);
34127 // N * Q = 2 * ((N / 2) * Q + Q))
34128 b = b.dbl();
34129 } else {
34130 // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
34131 b = a.diffAdd(b, c);
34132 // N * Q + Q = 2 * ((N / 2) * Q + Q)
34133 a = a.dbl();
34134 }
34135 }
34136 return b;
34137 };
34138
34139 Point.prototype.mulAdd = function mulAdd() {
34140 throw new Error('Not supported on Montgomery curve');
34141 };
34142
34143 Point.prototype.jumlAdd = function jumlAdd() {
34144 throw new Error('Not supported on Montgomery curve');
34145 };
34146
34147 Point.prototype.eq = function eq(other) {
34148 return this.getX().cmp(other.getX()) === 0;
34149 };
34150
34151 Point.prototype.normalize = function normalize() {
34152 this.x = this.x.redMul(this.z.redInvm());
34153 this.z = this.curve.one;
34154 return this;
34155 };
34156
34157 Point.prototype.getX = function getX() {
34158 // Normalize coordinates
34159 this.normalize();
34160
34161 return this.x.fromRed();
34162 };
34163
34164 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],44:[function(require,module,exports){
34165 'use strict';
34166
34167 var curve = require('../curve');
34168 var elliptic = require('../../elliptic');
34169 var BN = require('bn.js');
34170 var inherits = require('inherits');
34171 var Base = curve.base;
34172
34173 var assert = elliptic.utils.assert;
34174
34175 function ShortCurve(conf) {
34176 Base.call(this, 'short', conf);
34177
34178 this.a = new BN(conf.a, 16).toRed(this.red);
34179 this.b = new BN(conf.b, 16).toRed(this.red);
34180 this.tinv = this.two.redInvm();
34181
34182 this.zeroA = this.a.fromRed().cmpn(0) === 0;
34183 this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
34184
34185 // If the curve is endomorphic, precalculate beta and lambda
34186 this.endo = this._getEndomorphism(conf);
34187 this._endoWnafT1 = new Array(4);
34188 this._endoWnafT2 = new Array(4);
34189 }
34190 inherits(ShortCurve, Base);
34191 module.exports = ShortCurve;
34192
34193 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
34194 // No efficient endomorphism
34195 if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
34196 return;
34197
34198 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
34199 var beta;
34200 var lambda;
34201 if (conf.beta) {
34202 beta = new BN(conf.beta, 16).toRed(this.red);
34203 } else {
34204 var betas = this._getEndoRoots(this.p);
34205 // Choose the smallest beta
34206 beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
34207 beta = beta.toRed(this.red);
34208 }
34209 if (conf.lambda) {
34210 lambda = new BN(conf.lambda, 16);
34211 } else {
34212 // Choose the lambda that is matching selected beta
34213 var lambdas = this._getEndoRoots(this.n);
34214 if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
34215 lambda = lambdas[0];
34216 } else {
34217 lambda = lambdas[1];
34218 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
34219 }
34220 }
34221
34222 // Get basis vectors, used for balanced length-two representation
34223 var basis;
34224 if (conf.basis) {
34225 basis = conf.basis.map(function(vec) {
34226 return {
34227 a: new BN(vec.a, 16),
34228 b: new BN(vec.b, 16)
34229 };
34230 });
34231 } else {
34232 basis = this._getEndoBasis(lambda);
34233 }
34234
34235 return {
34236 beta: beta,
34237 lambda: lambda,
34238 basis: basis
34239 };
34240 };
34241
34242 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
34243 // Find roots of for x^2 + x + 1 in F
34244 // Root = (-1 +- Sqrt(-3)) / 2
34245 //
34246 var red = num === this.p ? this.red : BN.mont(num);
34247 var tinv = new BN(2).toRed(red).redInvm();
34248 var ntinv = tinv.redNeg();
34249
34250 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
34251
34252 var l1 = ntinv.redAdd(s).fromRed();
34253 var l2 = ntinv.redSub(s).fromRed();
34254 return [ l1, l2 ];
34255 };
34256
34257 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
34258 // aprxSqrt >= sqrt(this.n)
34259 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
34260
34261 // 3.74
34262 // Run EGCD, until r(L + 1) < aprxSqrt
34263 var u = lambda;
34264 var v = this.n.clone();
34265 var x1 = new BN(1);
34266 var y1 = new BN(0);
34267 var x2 = new BN(0);
34268 var y2 = new BN(1);
34269
34270 // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
34271 var a0;
34272 var b0;
34273 // First vector
34274 var a1;
34275 var b1;
34276 // Second vector
34277 var a2;
34278 var b2;
34279
34280 var prevR;
34281 var i = 0;
34282 var r;
34283 var x;
34284 while (u.cmpn(0) !== 0) {
34285 var q = v.div(u);
34286 r = v.sub(q.mul(u));
34287 x = x2.sub(q.mul(x1));
34288 var y = y2.sub(q.mul(y1));
34289
34290 if (!a1 && r.cmp(aprxSqrt) < 0) {
34291 a0 = prevR.neg();
34292 b0 = x1;
34293 a1 = r.neg();
34294 b1 = x;
34295 } else if (a1 && ++i === 2) {
34296 break;
34297 }
34298 prevR = r;
34299
34300 v = u;
34301 u = r;
34302 x2 = x1;
34303 x1 = x;
34304 y2 = y1;
34305 y1 = y;
34306 }
34307 a2 = r.neg();
34308 b2 = x;
34309
34310 var len1 = a1.sqr().add(b1.sqr());
34311 var len2 = a2.sqr().add(b2.sqr());
34312 if (len2.cmp(len1) >= 0) {
34313 a2 = a0;
34314 b2 = b0;
34315 }
34316
34317 // Normalize signs
34318 if (a1.negative) {
34319 a1 = a1.neg();
34320 b1 = b1.neg();
34321 }
34322 if (a2.negative) {
34323 a2 = a2.neg();
34324 b2 = b2.neg();
34325 }
34326
34327 return [
34328 { a: a1, b: b1 },
34329 { a: a2, b: b2 }
34330 ];
34331 };
34332
34333 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
34334 var basis = this.endo.basis;
34335 var v1 = basis[0];
34336 var v2 = basis[1];
34337
34338 var c1 = v2.b.mul(k).divRound(this.n);
34339 var c2 = v1.b.neg().mul(k).divRound(this.n);
34340
34341 var p1 = c1.mul(v1.a);
34342 var p2 = c2.mul(v2.a);
34343 var q1 = c1.mul(v1.b);
34344 var q2 = c2.mul(v2.b);
34345
34346 // Calculate answer
34347 var k1 = k.sub(p1).sub(p2);
34348 var k2 = q1.add(q2).neg();
34349 return { k1: k1, k2: k2 };
34350 };
34351
34352 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
34353 x = new BN(x, 16);
34354 if (!x.red)
34355 x = x.toRed(this.red);
34356
34357 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
34358 var y = y2.redSqrt();
34359 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
34360 throw new Error('invalid point');
34361
34362 // XXX Is there any way to tell if the number is odd without converting it
34363 // to non-red form?
34364 var isOdd = y.fromRed().isOdd();
34365 if (odd && !isOdd || !odd && isOdd)
34366 y = y.redNeg();
34367
34368 return this.point(x, y);
34369 };
34370
34371 ShortCurve.prototype.validate = function validate(point) {
34372 if (point.inf)
34373 return true;
34374
34375 var x = point.x;
34376 var y = point.y;
34377
34378 var ax = this.a.redMul(x);
34379 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
34380 return y.redSqr().redISub(rhs).cmpn(0) === 0;
34381 };
34382
34383 ShortCurve.prototype._endoWnafMulAdd =
34384 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
34385 var npoints = this._endoWnafT1;
34386 var ncoeffs = this._endoWnafT2;
34387 for (var i = 0; i < points.length; i++) {
34388 var split = this._endoSplit(coeffs[i]);
34389 var p = points[i];
34390 var beta = p._getBeta();
34391
34392 if (split.k1.negative) {
34393 split.k1.ineg();
34394 p = p.neg(true);
34395 }
34396 if (split.k2.negative) {
34397 split.k2.ineg();
34398 beta = beta.neg(true);
34399 }
34400
34401 npoints[i * 2] = p;
34402 npoints[i * 2 + 1] = beta;
34403 ncoeffs[i * 2] = split.k1;
34404 ncoeffs[i * 2 + 1] = split.k2;
34405 }
34406 var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
34407
34408 // Clean-up references to points and coefficients
34409 for (var j = 0; j < i * 2; j++) {
34410 npoints[j] = null;
34411 ncoeffs[j] = null;
34412 }
34413 return res;
34414 };
34415
34416 function Point(curve, x, y, isRed) {
34417 Base.BasePoint.call(this, curve, 'affine');
34418 if (x === null && y === null) {
34419 this.x = null;
34420 this.y = null;
34421 this.inf = true;
34422 } else {
34423 this.x = new BN(x, 16);
34424 this.y = new BN(y, 16);
34425 // Force redgomery representation when loading from JSON
34426 if (isRed) {
34427 this.x.forceRed(this.curve.red);
34428 this.y.forceRed(this.curve.red);
34429 }
34430 if (!this.x.red)
34431 this.x = this.x.toRed(this.curve.red);
34432 if (!this.y.red)
34433 this.y = this.y.toRed(this.curve.red);
34434 this.inf = false;
34435 }
34436 }
34437 inherits(Point, Base.BasePoint);
34438
34439 ShortCurve.prototype.point = function point(x, y, isRed) {
34440 return new Point(this, x, y, isRed);
34441 };
34442
34443 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
34444 return Point.fromJSON(this, obj, red);
34445 };
34446
34447 Point.prototype._getBeta = function _getBeta() {
34448 if (!this.curve.endo)
34449 return;
34450
34451 var pre = this.precomputed;
34452 if (pre && pre.beta)
34453 return pre.beta;
34454
34455 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
34456 if (pre) {
34457 var curve = this.curve;
34458 var endoMul = function(p) {
34459 return curve.point(p.x.redMul(curve.endo.beta), p.y);
34460 };
34461 pre.beta = beta;
34462 beta.precomputed = {
34463 beta: null,
34464 naf: pre.naf && {
34465 wnd: pre.naf.wnd,
34466 points: pre.naf.points.map(endoMul)
34467 },
34468 doubles: pre.doubles && {
34469 step: pre.doubles.step,
34470 points: pre.doubles.points.map(endoMul)
34471 }
34472 };
34473 }
34474 return beta;
34475 };
34476
34477 Point.prototype.toJSON = function toJSON() {
34478 if (!this.precomputed)
34479 return [ this.x, this.y ];
34480
34481 return [ this.x, this.y, this.precomputed && {
34482 doubles: this.precomputed.doubles && {
34483 step: this.precomputed.doubles.step,
34484 points: this.precomputed.doubles.points.slice(1)
34485 },
34486 naf: this.precomputed.naf && {
34487 wnd: this.precomputed.naf.wnd,
34488 points: this.precomputed.naf.points.slice(1)
34489 }
34490 } ];
34491 };
34492
34493 Point.fromJSON = function fromJSON(curve, obj, red) {
34494 if (typeof obj === 'string')
34495 obj = JSON.parse(obj);
34496 var res = curve.point(obj[0], obj[1], red);
34497 if (!obj[2])
34498 return res;
34499
34500 function obj2point(obj) {
34501 return curve.point(obj[0], obj[1], red);
34502 }
34503
34504 var pre = obj[2];
34505 res.precomputed = {
34506 beta: null,
34507 doubles: pre.doubles && {
34508 step: pre.doubles.step,
34509 points: [ res ].concat(pre.doubles.points.map(obj2point))
34510 },
34511 naf: pre.naf && {
34512 wnd: pre.naf.wnd,
34513 points: [ res ].concat(pre.naf.points.map(obj2point))
34514 }
34515 };
34516 return res;
34517 };
34518
34519 Point.prototype.inspect = function inspect() {
34520 if (this.isInfinity())
34521 return '<EC Point Infinity>';
34522 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
34523 ' y: ' + this.y.fromRed().toString(16, 2) + '>';
34524 };
34525
34526 Point.prototype.isInfinity = function isInfinity() {
34527 return this.inf;
34528 };
34529
34530 Point.prototype.add = function add(p) {
34531 // O + P = P
34532 if (this.inf)
34533 return p;
34534
34535 // P + O = P
34536 if (p.inf)
34537 return this;
34538
34539 // P + P = 2P
34540 if (this.eq(p))
34541 return this.dbl();
34542
34543 // P + (-P) = O
34544 if (this.neg().eq(p))
34545 return this.curve.point(null, null);
34546
34547 // P + Q = O
34548 if (this.x.cmp(p.x) === 0)
34549 return this.curve.point(null, null);
34550
34551 var c = this.y.redSub(p.y);
34552 if (c.cmpn(0) !== 0)
34553 c = c.redMul(this.x.redSub(p.x).redInvm());
34554 var nx = c.redSqr().redISub(this.x).redISub(p.x);
34555 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
34556 return this.curve.point(nx, ny);
34557 };
34558
34559 Point.prototype.dbl = function dbl() {
34560 if (this.inf)
34561 return this;
34562
34563 // 2P = O
34564 var ys1 = this.y.redAdd(this.y);
34565 if (ys1.cmpn(0) === 0)
34566 return this.curve.point(null, null);
34567
34568 var a = this.curve.a;
34569
34570 var x2 = this.x.redSqr();
34571 var dyinv = ys1.redInvm();
34572 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
34573
34574 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
34575 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
34576 return this.curve.point(nx, ny);
34577 };
34578
34579 Point.prototype.getX = function getX() {
34580 return this.x.fromRed();
34581 };
34582
34583 Point.prototype.getY = function getY() {
34584 return this.y.fromRed();
34585 };
34586
34587 Point.prototype.mul = function mul(k) {
34588 k = new BN(k, 16);
34589
34590 if (this._hasDoubles(k))
34591 return this.curve._fixedNafMul(this, k);
34592 else if (this.curve.endo)
34593 return this.curve._endoWnafMulAdd([ this ], [ k ]);
34594 else
34595 return this.curve._wnafMul(this, k);
34596 };
34597
34598 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
34599 var points = [ this, p2 ];
34600 var coeffs = [ k1, k2 ];
34601 if (this.curve.endo)
34602 return this.curve._endoWnafMulAdd(points, coeffs);
34603 else
34604 return this.curve._wnafMulAdd(1, points, coeffs, 2);
34605 };
34606
34607 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
34608 var points = [ this, p2 ];
34609 var coeffs = [ k1, k2 ];
34610 if (this.curve.endo)
34611 return this.curve._endoWnafMulAdd(points, coeffs, true);
34612 else
34613 return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
34614 };
34615
34616 Point.prototype.eq = function eq(p) {
34617 return this === p ||
34618 this.inf === p.inf &&
34619 (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
34620 };
34621
34622 Point.prototype.neg = function neg(_precompute) {
34623 if (this.inf)
34624 return this;
34625
34626 var res = this.curve.point(this.x, this.y.redNeg());
34627 if (_precompute && this.precomputed) {
34628 var pre = this.precomputed;
34629 var negate = function(p) {
34630 return p.neg();
34631 };
34632 res.precomputed = {
34633 naf: pre.naf && {
34634 wnd: pre.naf.wnd,
34635 points: pre.naf.points.map(negate)
34636 },
34637 doubles: pre.doubles && {
34638 step: pre.doubles.step,
34639 points: pre.doubles.points.map(negate)
34640 }
34641 };
34642 }
34643 return res;
34644 };
34645
34646 Point.prototype.toJ = function toJ() {
34647 if (this.inf)
34648 return this.curve.jpoint(null, null, null);
34649
34650 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
34651 return res;
34652 };
34653
34654 function JPoint(curve, x, y, z) {
34655 Base.BasePoint.call(this, curve, 'jacobian');
34656 if (x === null && y === null && z === null) {
34657 this.x = this.curve.one;
34658 this.y = this.curve.one;
34659 this.z = new BN(0);
34660 } else {
34661 this.x = new BN(x, 16);
34662 this.y = new BN(y, 16);
34663 this.z = new BN(z, 16);
34664 }
34665 if (!this.x.red)
34666 this.x = this.x.toRed(this.curve.red);
34667 if (!this.y.red)
34668 this.y = this.y.toRed(this.curve.red);
34669 if (!this.z.red)
34670 this.z = this.z.toRed(this.curve.red);
34671
34672 this.zOne = this.z === this.curve.one;
34673 }
34674 inherits(JPoint, Base.BasePoint);
34675
34676 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
34677 return new JPoint(this, x, y, z);
34678 };
34679
34680 JPoint.prototype.toP = function toP() {
34681 if (this.isInfinity())
34682 return this.curve.point(null, null);
34683
34684 var zinv = this.z.redInvm();
34685 var zinv2 = zinv.redSqr();
34686 var ax = this.x.redMul(zinv2);
34687 var ay = this.y.redMul(zinv2).redMul(zinv);
34688
34689 return this.curve.point(ax, ay);
34690 };
34691
34692 JPoint.prototype.neg = function neg() {
34693 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
34694 };
34695
34696 JPoint.prototype.add = function add(p) {
34697 // O + P = P
34698 if (this.isInfinity())
34699 return p;
34700
34701 // P + O = P
34702 if (p.isInfinity())
34703 return this;
34704
34705 // 12M + 4S + 7A
34706 var pz2 = p.z.redSqr();
34707 var z2 = this.z.redSqr();
34708 var u1 = this.x.redMul(pz2);
34709 var u2 = p.x.redMul(z2);
34710 var s1 = this.y.redMul(pz2.redMul(p.z));
34711 var s2 = p.y.redMul(z2.redMul(this.z));
34712
34713 var h = u1.redSub(u2);
34714 var r = s1.redSub(s2);
34715 if (h.cmpn(0) === 0) {
34716 if (r.cmpn(0) !== 0)
34717 return this.curve.jpoint(null, null, null);
34718 else
34719 return this.dbl();
34720 }
34721
34722 var h2 = h.redSqr();
34723 var h3 = h2.redMul(h);
34724 var v = u1.redMul(h2);
34725
34726 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
34727 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
34728 var nz = this.z.redMul(p.z).redMul(h);
34729
34730 return this.curve.jpoint(nx, ny, nz);
34731 };
34732
34733 JPoint.prototype.mixedAdd = function mixedAdd(p) {
34734 // O + P = P
34735 if (this.isInfinity())
34736 return p.toJ();
34737
34738 // P + O = P
34739 if (p.isInfinity())
34740 return this;
34741
34742 // 8M + 3S + 7A
34743 var z2 = this.z.redSqr();
34744 var u1 = this.x;
34745 var u2 = p.x.redMul(z2);
34746 var s1 = this.y;
34747 var s2 = p.y.redMul(z2).redMul(this.z);
34748
34749 var h = u1.redSub(u2);
34750 var r = s1.redSub(s2);
34751 if (h.cmpn(0) === 0) {
34752 if (r.cmpn(0) !== 0)
34753 return this.curve.jpoint(null, null, null);
34754 else
34755 return this.dbl();
34756 }
34757
34758 var h2 = h.redSqr();
34759 var h3 = h2.redMul(h);
34760 var v = u1.redMul(h2);
34761
34762 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
34763 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
34764 var nz = this.z.redMul(h);
34765
34766 return this.curve.jpoint(nx, ny, nz);
34767 };
34768
34769 JPoint.prototype.dblp = function dblp(pow) {
34770 if (pow === 0)
34771 return this;
34772 if (this.isInfinity())
34773 return this;
34774 if (!pow)
34775 return this.dbl();
34776
34777 if (this.curve.zeroA || this.curve.threeA) {
34778 var r = this;
34779 for (var i = 0; i < pow; i++)
34780 r = r.dbl();
34781 return r;
34782 }
34783
34784 // 1M + 2S + 1A + N * (4S + 5M + 8A)
34785 // N = 1 => 6M + 6S + 9A
34786 var a = this.curve.a;
34787 var tinv = this.curve.tinv;
34788
34789 var jx = this.x;
34790 var jy = this.y;
34791 var jz = this.z;
34792 var jz4 = jz.redSqr().redSqr();
34793
34794 // Reuse results
34795 var jyd = jy.redAdd(jy);
34796 for (var i = 0; i < pow; i++) {
34797 var jx2 = jx.redSqr();
34798 var jyd2 = jyd.redSqr();
34799 var jyd4 = jyd2.redSqr();
34800 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
34801
34802 var t1 = jx.redMul(jyd2);
34803 var nx = c.redSqr().redISub(t1.redAdd(t1));
34804 var t2 = t1.redISub(nx);
34805 var dny = c.redMul(t2);
34806 dny = dny.redIAdd(dny).redISub(jyd4);
34807 var nz = jyd.redMul(jz);
34808 if (i + 1 < pow)
34809 jz4 = jz4.redMul(jyd4);
34810
34811 jx = nx;
34812 jz = nz;
34813 jyd = dny;
34814 }
34815
34816 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
34817 };
34818
34819 JPoint.prototype.dbl = function dbl() {
34820 if (this.isInfinity())
34821 return this;
34822
34823 if (this.curve.zeroA)
34824 return this._zeroDbl();
34825 else if (this.curve.threeA)
34826 return this._threeDbl();
34827 else
34828 return this._dbl();
34829 };
34830
34831 JPoint.prototype._zeroDbl = function _zeroDbl() {
34832 var nx;
34833 var ny;
34834 var nz;
34835 // Z = 1
34836 if (this.zOne) {
34837 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
34838 // #doubling-mdbl-2007-bl
34839 // 1M + 5S + 14A
34840
34841 // XX = X1^2
34842 var xx = this.x.redSqr();
34843 // YY = Y1^2
34844 var yy = this.y.redSqr();
34845 // YYYY = YY^2
34846 var yyyy = yy.redSqr();
34847 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
34848 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34849 s = s.redIAdd(s);
34850 // M = 3 * XX + a; a = 0
34851 var m = xx.redAdd(xx).redIAdd(xx);
34852 // T = M ^ 2 - 2*S
34853 var t = m.redSqr().redISub(s).redISub(s);
34854
34855 // 8 * YYYY
34856 var yyyy8 = yyyy.redIAdd(yyyy);
34857 yyyy8 = yyyy8.redIAdd(yyyy8);
34858 yyyy8 = yyyy8.redIAdd(yyyy8);
34859
34860 // X3 = T
34861 nx = t;
34862 // Y3 = M * (S - T) - 8 * YYYY
34863 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
34864 // Z3 = 2*Y1
34865 nz = this.y.redAdd(this.y);
34866 } else {
34867 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
34868 // #doubling-dbl-2009-l
34869 // 2M + 5S + 13A
34870
34871 // A = X1^2
34872 var a = this.x.redSqr();
34873 // B = Y1^2
34874 var b = this.y.redSqr();
34875 // C = B^2
34876 var c = b.redSqr();
34877 // D = 2 * ((X1 + B)^2 - A - C)
34878 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
34879 d = d.redIAdd(d);
34880 // E = 3 * A
34881 var e = a.redAdd(a).redIAdd(a);
34882 // F = E^2
34883 var f = e.redSqr();
34884
34885 // 8 * C
34886 var c8 = c.redIAdd(c);
34887 c8 = c8.redIAdd(c8);
34888 c8 = c8.redIAdd(c8);
34889
34890 // X3 = F - 2 * D
34891 nx = f.redISub(d).redISub(d);
34892 // Y3 = E * (D - X3) - 8 * C
34893 ny = e.redMul(d.redISub(nx)).redISub(c8);
34894 // Z3 = 2 * Y1 * Z1
34895 nz = this.y.redMul(this.z);
34896 nz = nz.redIAdd(nz);
34897 }
34898
34899 return this.curve.jpoint(nx, ny, nz);
34900 };
34901
34902 JPoint.prototype._threeDbl = function _threeDbl() {
34903 var nx;
34904 var ny;
34905 var nz;
34906 // Z = 1
34907 if (this.zOne) {
34908 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
34909 // #doubling-mdbl-2007-bl
34910 // 1M + 5S + 15A
34911
34912 // XX = X1^2
34913 var xx = this.x.redSqr();
34914 // YY = Y1^2
34915 var yy = this.y.redSqr();
34916 // YYYY = YY^2
34917 var yyyy = yy.redSqr();
34918 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
34919 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34920 s = s.redIAdd(s);
34921 // M = 3 * XX + a
34922 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
34923 // T = M^2 - 2 * S
34924 var t = m.redSqr().redISub(s).redISub(s);
34925 // X3 = T
34926 nx = t;
34927 // Y3 = M * (S - T) - 8 * YYYY
34928 var yyyy8 = yyyy.redIAdd(yyyy);
34929 yyyy8 = yyyy8.redIAdd(yyyy8);
34930 yyyy8 = yyyy8.redIAdd(yyyy8);
34931 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
34932 // Z3 = 2 * Y1
34933 nz = this.y.redAdd(this.y);
34934 } else {
34935 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
34936 // 3M + 5S
34937
34938 // delta = Z1^2
34939 var delta = this.z.redSqr();
34940 // gamma = Y1^2
34941 var gamma = this.y.redSqr();
34942 // beta = X1 * gamma
34943 var beta = this.x.redMul(gamma);
34944 // alpha = 3 * (X1 - delta) * (X1 + delta)
34945 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
34946 alpha = alpha.redAdd(alpha).redIAdd(alpha);
34947 // X3 = alpha^2 - 8 * beta
34948 var beta4 = beta.redIAdd(beta);
34949 beta4 = beta4.redIAdd(beta4);
34950 var beta8 = beta4.redAdd(beta4);
34951 nx = alpha.redSqr().redISub(beta8);
34952 // Z3 = (Y1 + Z1)^2 - gamma - delta
34953 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
34954 // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
34955 var ggamma8 = gamma.redSqr();
34956 ggamma8 = ggamma8.redIAdd(ggamma8);
34957 ggamma8 = ggamma8.redIAdd(ggamma8);
34958 ggamma8 = ggamma8.redIAdd(ggamma8);
34959 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
34960 }
34961
34962 return this.curve.jpoint(nx, ny, nz);
34963 };
34964
34965 JPoint.prototype._dbl = function _dbl() {
34966 var a = this.curve.a;
34967
34968 // 4M + 6S + 10A
34969 var jx = this.x;
34970 var jy = this.y;
34971 var jz = this.z;
34972 var jz4 = jz.redSqr().redSqr();
34973
34974 var jx2 = jx.redSqr();
34975 var jy2 = jy.redSqr();
34976
34977 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
34978
34979 var jxd4 = jx.redAdd(jx);
34980 jxd4 = jxd4.redIAdd(jxd4);
34981 var t1 = jxd4.redMul(jy2);
34982 var nx = c.redSqr().redISub(t1.redAdd(t1));
34983 var t2 = t1.redISub(nx);
34984
34985 var jyd8 = jy2.redSqr();
34986 jyd8 = jyd8.redIAdd(jyd8);
34987 jyd8 = jyd8.redIAdd(jyd8);
34988 jyd8 = jyd8.redIAdd(jyd8);
34989 var ny = c.redMul(t2).redISub(jyd8);
34990 var nz = jy.redAdd(jy).redMul(jz);
34991
34992 return this.curve.jpoint(nx, ny, nz);
34993 };
34994
34995 JPoint.prototype.trpl = function trpl() {
34996 if (!this.curve.zeroA)
34997 return this.dbl().add(this);
34998
34999 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
35000 // 5M + 10S + ...
35001
35002 // XX = X1^2
35003 var xx = this.x.redSqr();
35004 // YY = Y1^2
35005 var yy = this.y.redSqr();
35006 // ZZ = Z1^2
35007 var zz = this.z.redSqr();
35008 // YYYY = YY^2
35009 var yyyy = yy.redSqr();
35010 // M = 3 * XX + a * ZZ2; a = 0
35011 var m = xx.redAdd(xx).redIAdd(xx);
35012 // MM = M^2
35013 var mm = m.redSqr();
35014 // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
35015 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
35016 e = e.redIAdd(e);
35017 e = e.redAdd(e).redIAdd(e);
35018 e = e.redISub(mm);
35019 // EE = E^2
35020 var ee = e.redSqr();
35021 // T = 16*YYYY
35022 var t = yyyy.redIAdd(yyyy);
35023 t = t.redIAdd(t);
35024 t = t.redIAdd(t);
35025 t = t.redIAdd(t);
35026 // U = (M + E)^2 - MM - EE - T
35027 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
35028 // X3 = 4 * (X1 * EE - 4 * YY * U)
35029 var yyu4 = yy.redMul(u);
35030 yyu4 = yyu4.redIAdd(yyu4);
35031 yyu4 = yyu4.redIAdd(yyu4);
35032 var nx = this.x.redMul(ee).redISub(yyu4);
35033 nx = nx.redIAdd(nx);
35034 nx = nx.redIAdd(nx);
35035 // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
35036 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
35037 ny = ny.redIAdd(ny);
35038 ny = ny.redIAdd(ny);
35039 ny = ny.redIAdd(ny);
35040 // Z3 = (Z1 + E)^2 - ZZ - EE
35041 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
35042
35043 return this.curve.jpoint(nx, ny, nz);
35044 };
35045
35046 JPoint.prototype.mul = function mul(k, kbase) {
35047 k = new BN(k, kbase);
35048
35049 return this.curve._wnafMul(this, k);
35050 };
35051
35052 JPoint.prototype.eq = function eq(p) {
35053 if (p.type === 'affine')
35054 return this.eq(p.toJ());
35055
35056 if (this === p)
35057 return true;
35058
35059 // x1 * z2^2 == x2 * z1^2
35060 var z2 = this.z.redSqr();
35061 var pz2 = p.z.redSqr();
35062 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
35063 return false;
35064
35065 // y1 * z2^3 == y2 * z1^3
35066 var z3 = z2.redMul(this.z);
35067 var pz3 = pz2.redMul(p.z);
35068 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
35069 };
35070
35071 JPoint.prototype.eqXToP = function eqXToP(x) {
35072 var zs = this.z.redSqr();
35073 var rx = x.toRed(this.curve.red).redMul(zs);
35074 if (this.x.cmp(rx) === 0)
35075 return true;
35076
35077 var xc = x.clone();
35078 var t = this.curve.redN.redMul(zs);
35079 for (;;) {
35080 xc.iadd(this.curve.n);
35081 if (xc.cmp(this.curve.p) >= 0)
35082 return false;
35083
35084 rx.redIAdd(t);
35085 if (this.x.cmp(rx) === 0)
35086 return true;
35087 }
35088 return false;
35089 };
35090
35091 JPoint.prototype.inspect = function inspect() {
35092 if (this.isInfinity())
35093 return '<EC JPoint Infinity>';
35094 return '<EC JPoint x: ' + this.x.toString(16, 2) +
35095 ' y: ' + this.y.toString(16, 2) +
35096 ' z: ' + this.z.toString(16, 2) + '>';
35097 };
35098
35099 JPoint.prototype.isInfinity = function isInfinity() {
35100 // XXX This code assumes that zero is always zero in red
35101 return this.z.cmpn(0) === 0;
35102 };
35103
35104 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],45:[function(require,module,exports){
35105 'use strict';
35106
35107 var curves = exports;
35108
35109 var hash = require('hash.js');
35110 var elliptic = require('../elliptic');
35111
35112 var assert = elliptic.utils.assert;
35113
35114 function PresetCurve(options) {
35115 if (options.type === 'short')
35116 this.curve = new elliptic.curve.short(options);
35117 else if (options.type === 'edwards')
35118 this.curve = new elliptic.curve.edwards(options);
35119 else
35120 this.curve = new elliptic.curve.mont(options);
35121 this.g = this.curve.g;
35122 this.n = this.curve.n;
35123 this.hash = options.hash;
35124
35125 assert(this.g.validate(), 'Invalid curve');
35126 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
35127 }
35128 curves.PresetCurve = PresetCurve;
35129
35130 function defineCurve(name, options) {
35131 Object.defineProperty(curves, name, {
35132 configurable: true,
35133 enumerable: true,
35134 get: function() {
35135 var curve = new PresetCurve(options);
35136 Object.defineProperty(curves, name, {
35137 configurable: true,
35138 enumerable: true,
35139 value: curve
35140 });
35141 return curve;
35142 }
35143 });
35144 }
35145
35146 defineCurve('p192', {
35147 type: 'short',
35148 prime: 'p192',
35149 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
35150 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
35151 b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
35152 n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
35153 hash: hash.sha256,
35154 gRed: false,
35155 g: [
35156 '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
35157 '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
35158 ]
35159 });
35160
35161 defineCurve('p224', {
35162 type: 'short',
35163 prime: 'p224',
35164 p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
35165 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
35166 b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
35167 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
35168 hash: hash.sha256,
35169 gRed: false,
35170 g: [
35171 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
35172 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
35173 ]
35174 });
35175
35176 defineCurve('p256', {
35177 type: 'short',
35178 prime: null,
35179 p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
35180 a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
35181 b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
35182 n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
35183 hash: hash.sha256,
35184 gRed: false,
35185 g: [
35186 '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
35187 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
35188 ]
35189 });
35190
35191 defineCurve('p384', {
35192 type: 'short',
35193 prime: null,
35194 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35195 'fffffffe ffffffff 00000000 00000000 ffffffff',
35196 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35197 'fffffffe ffffffff 00000000 00000000 fffffffc',
35198 b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
35199 '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
35200 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
35201 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
35202 hash: hash.sha384,
35203 gRed: false,
35204 g: [
35205 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
35206 '5502f25d bf55296c 3a545e38 72760ab7',
35207 '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
35208 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
35209 ]
35210 });
35211
35212 defineCurve('p521', {
35213 type: 'short',
35214 prime: null,
35215 p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35216 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35217 'ffffffff ffffffff ffffffff ffffffff ffffffff',
35218 a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35219 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35220 'ffffffff ffffffff ffffffff ffffffff fffffffc',
35221 b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
35222 '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
35223 '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
35224 n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35225 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
35226 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
35227 hash: hash.sha512,
35228 gRed: false,
35229 g: [
35230 '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
35231 '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
35232 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
35233 '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
35234 '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
35235 '3fad0761 353c7086 a272c240 88be9476 9fd16650'
35236 ]
35237 });
35238
35239 defineCurve('curve25519', {
35240 type: 'mont',
35241 prime: 'p25519',
35242 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
35243 a: '76d06',
35244 b: '1',
35245 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
35246 hash: hash.sha256,
35247 gRed: false,
35248 g: [
35249 '9'
35250 ]
35251 });
35252
35253 defineCurve('ed25519', {
35254 type: 'edwards',
35255 prime: 'p25519',
35256 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
35257 a: '-1',
35258 c: '1',
35259 // -121665 * (121666^(-1)) (mod P)
35260 d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
35261 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
35262 hash: hash.sha256,
35263 gRed: false,
35264 g: [
35265 '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
35266
35267 // 4/5
35268 '6666666666666666666666666666666666666666666666666666666666666658'
35269 ]
35270 });
35271
35272 var pre;
35273 try {
35274 pre = require('./precomputed/secp256k1');
35275 } catch (e) {
35276 pre = undefined;
35277 }
35278
35279 defineCurve('secp256k1', {
35280 type: 'short',
35281 prime: 'k256',
35282 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
35283 a: '0',
35284 b: '7',
35285 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
35286 h: '1',
35287 hash: hash.sha256,
35288
35289 // Precomputed endomorphism
35290 beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
35291 lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
35292 basis: [
35293 {
35294 a: '3086d221a7d46bcde86c90e49284eb15',
35295 b: '-e4437ed6010e88286f547fa90abfe4c3'
35296 },
35297 {
35298 a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
35299 b: '3086d221a7d46bcde86c90e49284eb15'
35300 }
35301 ],
35302
35303 gRed: false,
35304 g: [
35305 '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
35306 '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
35307 pre
35308 ]
35309 });
35310
35311 },{"../elliptic":39,"./precomputed/secp256k1":53,"hash.js":57}],46:[function(require,module,exports){
35312 'use strict';
35313
35314 var BN = require('bn.js');
35315 var elliptic = require('../../elliptic');
35316 var utils = elliptic.utils;
35317 var assert = utils.assert;
35318
35319 var KeyPair = require('./key');
35320 var Signature = require('./signature');
35321
35322 function EC(options) {
35323 if (!(this instanceof EC))
35324 return new EC(options);
35325
35326 // Shortcut `elliptic.ec(curve-name)`
35327 if (typeof options === 'string') {
35328 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
35329
35330 options = elliptic.curves[options];
35331 }
35332
35333 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
35334 if (options instanceof elliptic.curves.PresetCurve)
35335 options = { curve: options };
35336
35337 this.curve = options.curve.curve;
35338 this.n = this.curve.n;
35339 this.nh = this.n.ushrn(1);
35340 this.g = this.curve.g;
35341
35342 // Point on curve
35343 this.g = options.curve.g;
35344 this.g.precompute(options.curve.n.bitLength() + 1);
35345
35346 // Hash for function for DRBG
35347 this.hash = options.hash || options.curve.hash;
35348 }
35349 module.exports = EC;
35350
35351 EC.prototype.keyPair = function keyPair(options) {
35352 return new KeyPair(this, options);
35353 };
35354
35355 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
35356 return KeyPair.fromPrivate(this, priv, enc);
35357 };
35358
35359 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
35360 return KeyPair.fromPublic(this, pub, enc);
35361 };
35362
35363 EC.prototype.genKeyPair = function genKeyPair(options) {
35364 if (!options)
35365 options = {};
35366
35367 // Instantiate Hmac_DRBG
35368 var drbg = new elliptic.hmacDRBG({
35369 hash: this.hash,
35370 pers: options.pers,
35371 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
35372 nonce: this.n.toArray()
35373 });
35374
35375 var bytes = this.n.byteLength();
35376 var ns2 = this.n.sub(new BN(2));
35377 do {
35378 var priv = new BN(drbg.generate(bytes));
35379 if (priv.cmp(ns2) > 0)
35380 continue;
35381
35382 priv.iaddn(1);
35383 return this.keyFromPrivate(priv);
35384 } while (true);
35385 };
35386
35387 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
35388 var delta = msg.byteLength() * 8 - this.n.bitLength();
35389 if (delta > 0)
35390 msg = msg.ushrn(delta);
35391 if (!truncOnly && msg.cmp(this.n) >= 0)
35392 return msg.sub(this.n);
35393 else
35394 return msg;
35395 };
35396
35397 EC.prototype.sign = function sign(msg, key, enc, options) {
35398 if (typeof enc === 'object') {
35399 options = enc;
35400 enc = null;
35401 }
35402 if (!options)
35403 options = {};
35404
35405 key = this.keyFromPrivate(key, enc);
35406 msg = this._truncateToN(new BN(msg, 16));
35407
35408 // Zero-extend key to provide enough entropy
35409 var bytes = this.n.byteLength();
35410 var bkey = key.getPrivate().toArray('be', bytes);
35411
35412 // Zero-extend nonce to have the same byte size as N
35413 var nonce = msg.toArray('be', bytes);
35414
35415 // Instantiate Hmac_DRBG
35416 var drbg = new elliptic.hmacDRBG({
35417 hash: this.hash,
35418 entropy: bkey,
35419 nonce: nonce,
35420 pers: options.pers,
35421 persEnc: options.persEnc
35422 });
35423
35424 // Number of bytes to generate
35425 var ns1 = this.n.sub(new BN(1));
35426
35427 for (var iter = 0; true; iter++) {
35428 var k = options.k ?
35429 options.k(iter) :
35430 new BN(drbg.generate(this.n.byteLength()));
35431 k = this._truncateToN(k, true);
35432 if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
35433 continue;
35434
35435 var kp = this.g.mul(k);
35436 if (kp.isInfinity())
35437 continue;
35438
35439 var kpX = kp.getX();
35440 var r = kpX.umod(this.n);
35441 if (r.cmpn(0) === 0)
35442 continue;
35443
35444 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
35445 s = s.umod(this.n);
35446 if (s.cmpn(0) === 0)
35447 continue;
35448
35449 var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
35450 (kpX.cmp(r) !== 0 ? 2 : 0);
35451
35452 // Use complement of `s`, if it is > `n / 2`
35453 if (options.canonical && s.cmp(this.nh) > 0) {
35454 s = this.n.sub(s);
35455 recoveryParam ^= 1;
35456 }
35457
35458 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
35459 }
35460 };
35461
35462 EC.prototype.verify = function verify(msg, signature, key, enc) {
35463 msg = this._truncateToN(new BN(msg, 16));
35464 key = this.keyFromPublic(key, enc);
35465 signature = new Signature(signature, 'hex');
35466
35467 // Perform primitive values validation
35468 var r = signature.r;
35469 var s = signature.s;
35470 if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
35471 return false;
35472 if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
35473 return false;
35474
35475 // Validate signature
35476 var sinv = s.invm(this.n);
35477 var u1 = sinv.mul(msg).umod(this.n);
35478 var u2 = sinv.mul(r).umod(this.n);
35479
35480 if (!this.curve._maxwellTrick) {
35481 var p = this.g.mulAdd(u1, key.getPublic(), u2);
35482 if (p.isInfinity())
35483 return false;
35484
35485 return p.getX().umod(this.n).cmp(r) === 0;
35486 }
35487
35488 // NOTE: Greg Maxwell's trick, inspired by:
35489 // https://git.io/vad3K
35490
35491 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
35492 if (p.isInfinity())
35493 return false;
35494
35495 // Compare `p.x` of Jacobian point with `r`,
35496 // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
35497 // inverse of `p.z^2`
35498 return p.eqXToP(r);
35499 };
35500
35501 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
35502 assert((3 & j) === j, 'The recovery param is more than two bits');
35503 signature = new Signature(signature, enc);
35504
35505 var n = this.n;
35506 var e = new BN(msg);
35507 var r = signature.r;
35508 var s = signature.s;
35509
35510 // A set LSB signifies that the y-coordinate is odd
35511 var isYOdd = j & 1;
35512 var isSecondKey = j >> 1;
35513 if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
35514 throw new Error('Unable to find sencond key candinate');
35515
35516 // 1.1. Let x = r + jn.
35517 if (isSecondKey)
35518 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
35519 else
35520 r = this.curve.pointFromX(r, isYOdd);
35521
35522 var rInv = signature.r.invm(n);
35523 var s1 = n.sub(e).mul(rInv).umod(n);
35524 var s2 = s.mul(rInv).umod(n);
35525
35526 // 1.6.1 Compute Q = r^-1 (sR - eG)
35527 // Q = r^-1 (sR + -eG)
35528 return this.g.mulAdd(s1, r, s2);
35529 };
35530
35531 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
35532 signature = new Signature(signature, enc);
35533 if (signature.recoveryParam !== null)
35534 return signature.recoveryParam;
35535
35536 for (var i = 0; i < 4; i++) {
35537 var Qprime;
35538 try {
35539 Qprime = this.recoverPubKey(e, signature, i);
35540 } catch (e) {
35541 continue;
35542 }
35543
35544 if (Qprime.eq(Q))
35545 return i;
35546 }
35547 throw new Error('Unable to find valid recovery factor');
35548 };
35549
35550 },{"../../elliptic":39,"./key":47,"./signature":48,"bn.js":33}],47:[function(require,module,exports){
35551 'use strict';
35552
35553 var BN = require('bn.js');
35554 var elliptic = require('../../elliptic');
35555 var utils = elliptic.utils;
35556 var assert = utils.assert;
35557
35558 function KeyPair(ec, options) {
35559 this.ec = ec;
35560 this.priv = null;
35561 this.pub = null;
35562
35563 // KeyPair(ec, { priv: ..., pub: ... })
35564 if (options.priv)
35565 this._importPrivate(options.priv, options.privEnc);
35566 if (options.pub)
35567 this._importPublic(options.pub, options.pubEnc);
35568 }
35569 module.exports = KeyPair;
35570
35571 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
35572 if (pub instanceof KeyPair)
35573 return pub;
35574
35575 return new KeyPair(ec, {
35576 pub: pub,
35577 pubEnc: enc
35578 });
35579 };
35580
35581 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
35582 if (priv instanceof KeyPair)
35583 return priv;
35584
35585 return new KeyPair(ec, {
35586 priv: priv,
35587 privEnc: enc
35588 });
35589 };
35590
35591 KeyPair.prototype.validate = function validate() {
35592 var pub = this.getPublic();
35593
35594 if (pub.isInfinity())
35595 return { result: false, reason: 'Invalid public key' };
35596 if (!pub.validate())
35597 return { result: false, reason: 'Public key is not a point' };
35598 if (!pub.mul(this.ec.curve.n).isInfinity())
35599 return { result: false, reason: 'Public key * N != O' };
35600
35601 return { result: true, reason: null };
35602 };
35603
35604 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
35605 // compact is optional argument
35606 if (typeof compact === 'string') {
35607 enc = compact;
35608 compact = null;
35609 }
35610
35611 if (!this.pub)
35612 this.pub = this.ec.g.mul(this.priv);
35613
35614 if (!enc)
35615 return this.pub;
35616
35617 return this.pub.encode(enc, compact);
35618 };
35619
35620 KeyPair.prototype.getPrivate = function getPrivate(enc) {
35621 if (enc === 'hex')
35622 return this.priv.toString(16, 2);
35623 else
35624 return this.priv;
35625 };
35626
35627 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
35628 this.priv = new BN(key, enc || 16);
35629
35630 // Ensure that the priv won't be bigger than n, otherwise we may fail
35631 // in fixed multiplication method
35632 this.priv = this.priv.umod(this.ec.curve.n);
35633 };
35634
35635 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
35636 if (key.x || key.y) {
35637 // Montgomery points only have an `x` coordinate.
35638 // Weierstrass/Edwards points on the other hand have both `x` and
35639 // `y` coordinates.
35640 if (this.ec.curve.type === 'mont') {
35641 assert(key.x, 'Need x coordinate');
35642 } else if (this.ec.curve.type === 'short' ||
35643 this.ec.curve.type === 'edwards') {
35644 assert(key.x && key.y, 'Need both x and y coordinate');
35645 }
35646 this.pub = this.ec.curve.point(key.x, key.y);
35647 return;
35648 }
35649 this.pub = this.ec.curve.decodePoint(key, enc);
35650 };
35651
35652 // ECDH
35653 KeyPair.prototype.derive = function derive(pub) {
35654 return pub.mul(this.priv).getX();
35655 };
35656
35657 // ECDSA
35658 KeyPair.prototype.sign = function sign(msg, enc, options) {
35659 return this.ec.sign(msg, this, enc, options);
35660 };
35661
35662 KeyPair.prototype.verify = function verify(msg, signature) {
35663 return this.ec.verify(msg, signature, this);
35664 };
35665
35666 KeyPair.prototype.inspect = function inspect() {
35667 return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
35668 ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
35669 };
35670
35671 },{"../../elliptic":39,"bn.js":33}],48:[function(require,module,exports){
35672 'use strict';
35673
35674 var BN = require('bn.js');
35675
35676 var elliptic = require('../../elliptic');
35677 var utils = elliptic.utils;
35678 var assert = utils.assert;
35679
35680 function Signature(options, enc) {
35681 if (options instanceof Signature)
35682 return options;
35683
35684 if (this._importDER(options, enc))
35685 return;
35686
35687 assert(options.r && options.s, 'Signature without r or s');
35688 this.r = new BN(options.r, 16);
35689 this.s = new BN(options.s, 16);
35690 if (options.recoveryParam === undefined)
35691 this.recoveryParam = null;
35692 else
35693 this.recoveryParam = options.recoveryParam;
35694 }
35695 module.exports = Signature;
35696
35697 function Position() {
35698 this.place = 0;
35699 }
35700
35701 function getLength(buf, p) {
35702 var initial = buf[p.place++];
35703 if (!(initial & 0x80)) {
35704 return initial;
35705 }
35706 var octetLen = initial & 0xf;
35707 var val = 0;
35708 for (var i = 0, off = p.place; i < octetLen; i++, off++) {
35709 val <<= 8;
35710 val |= buf[off];
35711 }
35712 p.place = off;
35713 return val;
35714 }
35715
35716 function rmPadding(buf) {
35717 var i = 0;
35718 var len = buf.length - 1;
35719 while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
35720 i++;
35721 }
35722 if (i === 0) {
35723 return buf;
35724 }
35725 return buf.slice(i);
35726 }
35727
35728 Signature.prototype._importDER = function _importDER(data, enc) {
35729 data = utils.toArray(data, enc);
35730 var p = new Position();
35731 if (data[p.place++] !== 0x30) {
35732 return false;
35733 }
35734 var len = getLength(data, p);
35735 if ((len + p.place) !== data.length) {
35736 return false;
35737 }
35738 if (data[p.place++] !== 0x02) {
35739 return false;
35740 }
35741 var rlen = getLength(data, p);
35742 var r = data.slice(p.place, rlen + p.place);
35743 p.place += rlen;
35744 if (data[p.place++] !== 0x02) {
35745 return false;
35746 }
35747 var slen = getLength(data, p);
35748 if (data.length !== slen + p.place) {
35749 return false;
35750 }
35751 var s = data.slice(p.place, slen + p.place);
35752 if (r[0] === 0 && (r[1] & 0x80)) {
35753 r = r.slice(1);
35754 }
35755 if (s[0] === 0 && (s[1] & 0x80)) {
35756 s = s.slice(1);
35757 }
35758
35759 this.r = new BN(r);
35760 this.s = new BN(s);
35761 this.recoveryParam = null;
35762
35763 return true;
35764 };
35765
35766 function constructLength(arr, len) {
35767 if (len < 0x80) {
35768 arr.push(len);
35769 return;
35770 }
35771 var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
35772 arr.push(octets | 0x80);
35773 while (--octets) {
35774 arr.push((len >>> (octets << 3)) & 0xff);
35775 }
35776 arr.push(len);
35777 }
35778
35779 Signature.prototype.toDER = function toDER(enc) {
35780 var r = this.r.toArray();
35781 var s = this.s.toArray();
35782
35783 // Pad values
35784 if (r[0] & 0x80)
35785 r = [ 0 ].concat(r);
35786 // Pad values
35787 if (s[0] & 0x80)
35788 s = [ 0 ].concat(s);
35789
35790 r = rmPadding(r);
35791 s = rmPadding(s);
35792
35793 while (!s[0] && !(s[1] & 0x80)) {
35794 s = s.slice(1);
35795 }
35796 var arr = [ 0x02 ];
35797 constructLength(arr, r.length);
35798 arr = arr.concat(r);
35799 arr.push(0x02);
35800 constructLength(arr, s.length);
35801 var backHalf = arr.concat(s);
35802 var res = [ 0x30 ];
35803 constructLength(res, backHalf.length);
35804 res = res.concat(backHalf);
35805 return utils.encode(res, enc);
35806 };
35807
35808 },{"../../elliptic":39,"bn.js":33}],49:[function(require,module,exports){
35809 'use strict';
35810
35811 var hash = require('hash.js');
35812 var elliptic = require('../../elliptic');
35813 var utils = elliptic.utils;
35814 var assert = utils.assert;
35815 var parseBytes = utils.parseBytes;
35816 var KeyPair = require('./key');
35817 var Signature = require('./signature');
35818
35819 function EDDSA(curve) {
35820 assert(curve === 'ed25519', 'only tested with ed25519 so far');
35821
35822 if (!(this instanceof EDDSA))
35823 return new EDDSA(curve);
35824
35825 var curve = elliptic.curves[curve].curve;
35826 this.curve = curve;
35827 this.g = curve.g;
35828 this.g.precompute(curve.n.bitLength() + 1);
35829
35830 this.pointClass = curve.point().constructor;
35831 this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
35832 this.hash = hash.sha512;
35833 }
35834
35835 module.exports = EDDSA;
35836
35837 /**
35838 * @param {Array|String} message - message bytes
35839 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
35840 * @returns {Signature} - signature
35841 */
35842 EDDSA.prototype.sign = function sign(message, secret) {
35843 message = parseBytes(message);
35844 var key = this.keyFromSecret(secret);
35845 var r = this.hashInt(key.messagePrefix(), message);
35846 var R = this.g.mul(r);
35847 var Rencoded = this.encodePoint(R);
35848 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
35849 .mul(key.priv());
35850 var S = r.add(s_).umod(this.curve.n);
35851 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
35852 };
35853
35854 /**
35855 * @param {Array} message - message bytes
35856 * @param {Array|String|Signature} sig - sig bytes
35857 * @param {Array|String|Point|KeyPair} pub - public key
35858 * @returns {Boolean} - true if public key matches sig of message
35859 */
35860 EDDSA.prototype.verify = function verify(message, sig, pub) {
35861 message = parseBytes(message);
35862 sig = this.makeSignature(sig);
35863 var key = this.keyFromPublic(pub);
35864 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
35865 var SG = this.g.mul(sig.S());
35866 var RplusAh = sig.R().add(key.pub().mul(h));
35867 return RplusAh.eq(SG);
35868 };
35869
35870 EDDSA.prototype.hashInt = function hashInt() {
35871 var hash = this.hash();
35872 for (var i = 0; i < arguments.length; i++)
35873 hash.update(arguments[i]);
35874 return utils.intFromLE(hash.digest()).umod(this.curve.n);
35875 };
35876
35877 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
35878 return KeyPair.fromPublic(this, pub);
35879 };
35880
35881 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
35882 return KeyPair.fromSecret(this, secret);
35883 };
35884
35885 EDDSA.prototype.makeSignature = function makeSignature(sig) {
35886 if (sig instanceof Signature)
35887 return sig;
35888 return new Signature(this, sig);
35889 };
35890
35891 /**
35892 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
35893 *
35894 * EDDSA defines methods for encoding and decoding points and integers. These are
35895 * helper convenience methods, that pass along to utility functions implied
35896 * parameters.
35897 *
35898 */
35899 EDDSA.prototype.encodePoint = function encodePoint(point) {
35900 var enc = point.getY().toArray('le', this.encodingLength);
35901 enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
35902 return enc;
35903 };
35904
35905 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
35906 bytes = utils.parseBytes(bytes);
35907
35908 var lastIx = bytes.length - 1;
35909 var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
35910 var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
35911
35912 var y = utils.intFromLE(normed);
35913 return this.curve.pointFromY(y, xIsOdd);
35914 };
35915
35916 EDDSA.prototype.encodeInt = function encodeInt(num) {
35917 return num.toArray('le', this.encodingLength);
35918 };
35919
35920 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
35921 return utils.intFromLE(bytes);
35922 };
35923
35924 EDDSA.prototype.isPoint = function isPoint(val) {
35925 return val instanceof this.pointClass;
35926 };
35927
35928 },{"../../elliptic":39,"./key":50,"./signature":51,"hash.js":57}],50:[function(require,module,exports){
35929 'use strict';
35930
35931 var elliptic = require('../../elliptic');
35932 var utils = elliptic.utils;
35933 var assert = utils.assert;
35934 var parseBytes = utils.parseBytes;
35935 var cachedProperty = utils.cachedProperty;
35936
35937 /**
35938 * @param {EDDSA} eddsa - instance
35939 * @param {Object} params - public/private key parameters
35940 *
35941 * @param {Array<Byte>} [params.secret] - secret seed bytes
35942 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
35943 * @param {Array<Byte>} [params.pub] - public key point encoded as bytes
35944 *
35945 */
35946 function KeyPair(eddsa, params) {
35947 this.eddsa = eddsa;
35948 this._secret = parseBytes(params.secret);
35949 if (eddsa.isPoint(params.pub))
35950 this._pub = params.pub;
35951 else
35952 this._pubBytes = parseBytes(params.pub);
35953 }
35954
35955 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
35956 if (pub instanceof KeyPair)
35957 return pub;
35958 return new KeyPair(eddsa, { pub: pub });
35959 };
35960
35961 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
35962 if (secret instanceof KeyPair)
35963 return secret;
35964 return new KeyPair(eddsa, { secret: secret });
35965 };
35966
35967 KeyPair.prototype.secret = function secret() {
35968 return this._secret;
35969 };
35970
35971 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
35972 return this.eddsa.encodePoint(this.pub());
35973 });
35974
35975 cachedProperty(KeyPair, 'pub', function pub() {
35976 if (this._pubBytes)
35977 return this.eddsa.decodePoint(this._pubBytes);
35978 return this.eddsa.g.mul(this.priv());
35979 });
35980
35981 cachedProperty(KeyPair, 'privBytes', function privBytes() {
35982 var eddsa = this.eddsa;
35983 var hash = this.hash();
35984 var lastIx = eddsa.encodingLength - 1;
35985
35986 var a = hash.slice(0, eddsa.encodingLength);
35987 a[0] &= 248;
35988 a[lastIx] &= 127;
35989 a[lastIx] |= 64;
35990
35991 return a;
35992 });
35993
35994 cachedProperty(KeyPair, 'priv', function priv() {
35995 return this.eddsa.decodeInt(this.privBytes());
35996 });
35997
35998 cachedProperty(KeyPair, 'hash', function hash() {
35999 return this.eddsa.hash().update(this.secret()).digest();
36000 });
36001
36002 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
36003 return this.hash().slice(this.eddsa.encodingLength);
36004 });
36005
36006 KeyPair.prototype.sign = function sign(message) {
36007 assert(this._secret, 'KeyPair can only verify');
36008 return this.eddsa.sign(message, this);
36009 };
36010
36011 KeyPair.prototype.verify = function verify(message, sig) {
36012 return this.eddsa.verify(message, sig, this);
36013 };
36014
36015 KeyPair.prototype.getSecret = function getSecret(enc) {
36016 assert(this._secret, 'KeyPair is public only');
36017 return utils.encode(this.secret(), enc);
36018 };
36019
36020 KeyPair.prototype.getPublic = function getPublic(enc) {
36021 return utils.encode(this.pubBytes(), enc);
36022 };
36023
36024 module.exports = KeyPair;
36025
36026 },{"../../elliptic":39}],51:[function(require,module,exports){
36027 'use strict';
36028
36029 var BN = require('bn.js');
36030 var elliptic = require('../../elliptic');
36031 var utils = elliptic.utils;
36032 var assert = utils.assert;
36033 var cachedProperty = utils.cachedProperty;
36034 var parseBytes = utils.parseBytes;
36035
36036 /**
36037 * @param {EDDSA} eddsa - eddsa instance
36038 * @param {Array<Bytes>|Object} sig -
36039 * @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
36040 * @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
36041 * @param {Array<Bytes>} [sig.Rencoded] - R point encoded
36042 * @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
36043 */
36044 function Signature(eddsa, sig) {
36045 this.eddsa = eddsa;
36046
36047 if (typeof sig !== 'object')
36048 sig = parseBytes(sig);
36049
36050 if (Array.isArray(sig)) {
36051 sig = {
36052 R: sig.slice(0, eddsa.encodingLength),
36053 S: sig.slice(eddsa.encodingLength)
36054 };
36055 }
36056
36057 assert(sig.R && sig.S, 'Signature without R or S');
36058
36059 if (eddsa.isPoint(sig.R))
36060 this._R = sig.R;
36061 if (sig.S instanceof BN)
36062 this._S = sig.S;
36063
36064 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
36065 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
36066 }
36067
36068 cachedProperty(Signature, 'S', function S() {
36069 return this.eddsa.decodeInt(this.Sencoded());
36070 });
36071
36072 cachedProperty(Signature, 'R', function R() {
36073 return this.eddsa.decodePoint(this.Rencoded());
36074 });
36075
36076 cachedProperty(Signature, 'Rencoded', function Rencoded() {
36077 return this.eddsa.encodePoint(this.R());
36078 });
36079
36080 cachedProperty(Signature, 'Sencoded', function Sencoded() {
36081 return this.eddsa.encodeInt(this.S());
36082 });
36083
36084 Signature.prototype.toBytes = function toBytes() {
36085 return this.Rencoded().concat(this.Sencoded());
36086 };
36087
36088 Signature.prototype.toHex = function toHex() {
36089 return utils.encode(this.toBytes(), 'hex').toUpperCase();
36090 };
36091
36092 module.exports = Signature;
36093
36094 },{"../../elliptic":39,"bn.js":33}],52:[function(require,module,exports){
36095 'use strict';
36096
36097 var hash = require('hash.js');
36098 var elliptic = require('../elliptic');
36099 var utils = elliptic.utils;
36100 var assert = utils.assert;
36101
36102 function HmacDRBG(options) {
36103 if (!(this instanceof HmacDRBG))
36104 return new HmacDRBG(options);
36105 this.hash = options.hash;
36106 this.predResist = !!options.predResist;
36107
36108 this.outLen = this.hash.outSize;
36109 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
36110
36111 this.reseed = null;
36112 this.reseedInterval = null;
36113 this.K = null;
36114 this.V = null;
36115
36116 var entropy = utils.toArray(options.entropy, options.entropyEnc);
36117 var nonce = utils.toArray(options.nonce, options.nonceEnc);
36118 var pers = utils.toArray(options.pers, options.persEnc);
36119 assert(entropy.length >= (this.minEntropy / 8),
36120 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
36121 this._init(entropy, nonce, pers);
36122 }
36123 module.exports = HmacDRBG;
36124
36125 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
36126 var seed = entropy.concat(nonce).concat(pers);
36127
36128 this.K = new Array(this.outLen / 8);
36129 this.V = new Array(this.outLen / 8);
36130 for (var i = 0; i < this.V.length; i++) {
36131 this.K[i] = 0x00;
36132 this.V[i] = 0x01;
36133 }
36134
36135 this._update(seed);
36136 this.reseed = 1;
36137 this.reseedInterval = 0x1000000000000; // 2^48
36138 };
36139
36140 HmacDRBG.prototype._hmac = function hmac() {
36141 return new hash.hmac(this.hash, this.K);
36142 };
36143
36144 HmacDRBG.prototype._update = function update(seed) {
36145 var kmac = this._hmac()
36146 .update(this.V)
36147 .update([ 0x00 ]);
36148 if (seed)
36149 kmac = kmac.update(seed);
36150 this.K = kmac.digest();
36151 this.V = this._hmac().update(this.V).digest();
36152 if (!seed)
36153 return;
36154
36155 this.K = this._hmac()
36156 .update(this.V)
36157 .update([ 0x01 ])
36158 .update(seed)
36159 .digest();
36160 this.V = this._hmac().update(this.V).digest();
36161 };
36162
36163 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
36164 // Optional entropy enc
36165 if (typeof entropyEnc !== 'string') {
36166 addEnc = add;
36167 add = entropyEnc;
36168 entropyEnc = null;
36169 }
36170
36171 entropy = utils.toBuffer(entropy, entropyEnc);
36172 add = utils.toBuffer(add, addEnc);
36173
36174 assert(entropy.length >= (this.minEntropy / 8),
36175 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
36176
36177 this._update(entropy.concat(add || []));
36178 this.reseed = 1;
36179 };
36180
36181 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
36182 if (this.reseed > this.reseedInterval)
36183 throw new Error('Reseed is required');
36184
36185 // Optional encoding
36186 if (typeof enc !== 'string') {
36187 addEnc = add;
36188 add = enc;
36189 enc = null;
36190 }
36191
36192 // Optional additional data
36193 if (add) {
36194 add = utils.toArray(add, addEnc);
36195 this._update(add);
36196 }
36197
36198 var temp = [];
36199 while (temp.length < len) {
36200 this.V = this._hmac().update(this.V).digest();
36201 temp = temp.concat(this.V);
36202 }
36203
36204 var res = temp.slice(0, len);
36205 this._update(add);
36206 this.reseed++;
36207 return utils.encode(res, enc);
36208 };
36209
36210 },{"../elliptic":39,"hash.js":57}],53:[function(require,module,exports){
36211 module.exports = {
36212 doubles: {
36213 step: 4,
36214 points: [
36215 [
36216 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
36217 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
36218 ],
36219 [
36220 '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
36221 '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
36222 ],
36223 [
36224 '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
36225 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
36226 ],
36227 [
36228 '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
36229 '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
36230 ],
36231 [
36232 '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
36233 '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
36234 ],
36235 [
36236 '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
36237 '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
36238 ],
36239 [
36240 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
36241 '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
36242 ],
36243 [
36244 '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
36245 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
36246 ],
36247 [
36248 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
36249 '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
36250 ],
36251 [
36252 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
36253 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
36254 ],
36255 [
36256 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
36257 '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
36258 ],
36259 [
36260 '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
36261 '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
36262 ],
36263 [
36264 '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
36265 '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
36266 ],
36267 [
36268 '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
36269 '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
36270 ],
36271 [
36272 '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
36273 '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
36274 ],
36275 [
36276 '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
36277 '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
36278 ],
36279 [
36280 '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
36281 '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
36282 ],
36283 [
36284 '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
36285 '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
36286 ],
36287 [
36288 '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
36289 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
36290 ],
36291 [
36292 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
36293 '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
36294 ],
36295 [
36296 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
36297 '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
36298 ],
36299 [
36300 '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
36301 '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
36302 ],
36303 [
36304 '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
36305 '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
36306 ],
36307 [
36308 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
36309 '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
36310 ],
36311 [
36312 '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
36313 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
36314 ],
36315 [
36316 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
36317 '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
36318 ],
36319 [
36320 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
36321 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
36322 ],
36323 [
36324 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
36325 '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
36326 ],
36327 [
36328 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
36329 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
36330 ],
36331 [
36332 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
36333 '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
36334 ],
36335 [
36336 '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
36337 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
36338 ],
36339 [
36340 '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
36341 '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
36342 ],
36343 [
36344 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
36345 '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
36346 ],
36347 [
36348 '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
36349 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
36350 ],
36351 [
36352 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
36353 '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
36354 ],
36355 [
36356 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
36357 '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
36358 ],
36359 [
36360 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
36361 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
36362 ],
36363 [
36364 '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
36365 '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
36366 ],
36367 [
36368 '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
36369 '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
36370 ],
36371 [
36372 '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
36373 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
36374 ],
36375 [
36376 '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
36377 '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
36378 ],
36379 [
36380 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
36381 '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
36382 ],
36383 [
36384 '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
36385 '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
36386 ],
36387 [
36388 '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
36389 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
36390 ],
36391 [
36392 '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
36393 '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
36394 ],
36395 [
36396 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
36397 '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
36398 ],
36399 [
36400 '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
36401 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
36402 ],
36403 [
36404 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
36405 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
36406 ],
36407 [
36408 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
36409 '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
36410 ],
36411 [
36412 '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
36413 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
36414 ],
36415 [
36416 '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
36417 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
36418 ],
36419 [
36420 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
36421 '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
36422 ],
36423 [
36424 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
36425 '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
36426 ],
36427 [
36428 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
36429 '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
36430 ],
36431 [
36432 '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
36433 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
36434 ],
36435 [
36436 '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
36437 '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
36438 ],
36439 [
36440 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
36441 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
36442 ],
36443 [
36444 '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
36445 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
36446 ],
36447 [
36448 '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
36449 '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
36450 ],
36451 [
36452 '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
36453 '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
36454 ],
36455 [
36456 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
36457 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
36458 ],
36459 [
36460 '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
36461 '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
36462 ],
36463 [
36464 '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
36465 '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
36466 ],
36467 [
36468 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
36469 '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
36470 ],
36471 [
36472 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
36473 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
36474 ]
36475 ]
36476 },
36477 naf: {
36478 wnd: 7,
36479 points: [
36480 [
36481 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
36482 '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
36483 ],
36484 [
36485 '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
36486 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
36487 ],
36488 [
36489 '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
36490 '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
36491 ],
36492 [
36493 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
36494 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
36495 ],
36496 [
36497 '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
36498 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
36499 ],
36500 [
36501 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
36502 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
36503 ],
36504 [
36505 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
36506 '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
36507 ],
36508 [
36509 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
36510 '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
36511 ],
36512 [
36513 '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
36514 '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
36515 ],
36516 [
36517 '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
36518 '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
36519 ],
36520 [
36521 '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
36522 '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
36523 ],
36524 [
36525 '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
36526 '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
36527 ],
36528 [
36529 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
36530 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
36531 ],
36532 [
36533 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
36534 '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
36535 ],
36536 [
36537 '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
36538 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
36539 ],
36540 [
36541 '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
36542 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
36543 ],
36544 [
36545 '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
36546 '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
36547 ],
36548 [
36549 '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
36550 '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
36551 ],
36552 [
36553 '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
36554 '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
36555 ],
36556 [
36557 '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
36558 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
36559 ],
36560 [
36561 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
36562 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
36563 ],
36564 [
36565 '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
36566 '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
36567 ],
36568 [
36569 '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
36570 '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
36571 ],
36572 [
36573 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
36574 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
36575 ],
36576 [
36577 '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
36578 '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
36579 ],
36580 [
36581 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
36582 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
36583 ],
36584 [
36585 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
36586 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
36587 ],
36588 [
36589 '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
36590 '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
36591 ],
36592 [
36593 '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
36594 '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
36595 ],
36596 [
36597 '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
36598 '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
36599 ],
36600 [
36601 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
36602 '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
36603 ],
36604 [
36605 '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
36606 '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
36607 ],
36608 [
36609 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
36610 '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
36611 ],
36612 [
36613 '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
36614 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
36615 ],
36616 [
36617 '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
36618 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
36619 ],
36620 [
36621 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
36622 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
36623 ],
36624 [
36625 '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
36626 '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
36627 ],
36628 [
36629 '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
36630 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
36631 ],
36632 [
36633 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
36634 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
36635 ],
36636 [
36637 '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
36638 '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
36639 ],
36640 [
36641 '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
36642 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
36643 ],
36644 [
36645 '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
36646 '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
36647 ],
36648 [
36649 '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
36650 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
36651 ],
36652 [
36653 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
36654 '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
36655 ],
36656 [
36657 '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
36658 '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
36659 ],
36660 [
36661 '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
36662 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
36663 ],
36664 [
36665 '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
36666 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
36667 ],
36668 [
36669 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
36670 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
36671 ],
36672 [
36673 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
36674 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
36675 ],
36676 [
36677 '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
36678 '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
36679 ],
36680 [
36681 '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
36682 '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
36683 ],
36684 [
36685 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
36686 '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
36687 ],
36688 [
36689 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
36690 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
36691 ],
36692 [
36693 '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
36694 '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
36695 ],
36696 [
36697 '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
36698 '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
36699 ],
36700 [
36701 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
36702 '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
36703 ],
36704 [
36705 '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
36706 '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
36707 ],
36708 [
36709 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
36710 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
36711 ],
36712 [
36713 '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
36714 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
36715 ],
36716 [
36717 '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
36718 '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
36719 ],
36720 [
36721 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
36722 '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
36723 ],
36724 [
36725 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
36726 '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
36727 ],
36728 [
36729 '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
36730 '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
36731 ],
36732 [
36733 '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
36734 '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
36735 ],
36736 [
36737 '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
36738 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
36739 ],
36740 [
36741 '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
36742 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
36743 ],
36744 [
36745 '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
36746 '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
36747 ],
36748 [
36749 '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
36750 '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
36751 ],
36752 [
36753 '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
36754 '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
36755 ],
36756 [
36757 '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
36758 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
36759 ],
36760 [
36761 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
36762 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
36763 ],
36764 [
36765 '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
36766 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
36767 ],
36768 [
36769 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
36770 '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
36771 ],
36772 [
36773 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
36774 '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
36775 ],
36776 [
36777 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
36778 '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
36779 ],
36780 [
36781 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
36782 '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
36783 ],
36784 [
36785 '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
36786 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
36787 ],
36788 [
36789 '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
36790 '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
36791 ],
36792 [
36793 '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
36794 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
36795 ],
36796 [
36797 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
36798 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
36799 ],
36800 [
36801 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
36802 '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
36803 ],
36804 [
36805 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
36806 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
36807 ],
36808 [
36809 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
36810 '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
36811 ],
36812 [
36813 '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
36814 '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
36815 ],
36816 [
36817 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
36818 '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
36819 ],
36820 [
36821 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
36822 '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
36823 ],
36824 [
36825 '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
36826 '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
36827 ],
36828 [
36829 '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
36830 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
36831 ],
36832 [
36833 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
36834 '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
36835 ],
36836 [
36837 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
36838 '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
36839 ],
36840 [
36841 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
36842 '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
36843 ],
36844 [
36845 '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
36846 '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
36847 ],
36848 [
36849 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
36850 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
36851 ],
36852 [
36853 '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
36854 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
36855 ],
36856 [
36857 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
36858 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
36859 ],
36860 [
36861 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
36862 '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
36863 ],
36864 [
36865 '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
36866 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
36867 ],
36868 [
36869 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
36870 '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
36871 ],
36872 [
36873 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
36874 '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
36875 ],
36876 [
36877 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
36878 '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
36879 ],
36880 [
36881 '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
36882 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
36883 ],
36884 [
36885 '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
36886 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
36887 ],
36888 [
36889 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
36890 '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
36891 ],
36892 [
36893 '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
36894 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
36895 ],
36896 [
36897 '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
36898 '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
36899 ],
36900 [
36901 '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
36902 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
36903 ],
36904 [
36905 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
36906 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
36907 ],
36908 [
36909 '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
36910 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
36911 ],
36912 [
36913 '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
36914 '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
36915 ],
36916 [
36917 '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
36918 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
36919 ],
36920 [
36921 '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
36922 '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
36923 ],
36924 [
36925 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
36926 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
36927 ],
36928 [
36929 '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
36930 '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
36931 ],
36932 [
36933 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
36934 '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
36935 ],
36936 [
36937 '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
36938 '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
36939 ],
36940 [
36941 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
36942 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
36943 ],
36944 [
36945 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
36946 '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
36947 ],
36948 [
36949 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
36950 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
36951 ],
36952 [
36953 '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
36954 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
36955 ],
36956 [
36957 '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
36958 '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
36959 ],
36960 [
36961 '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
36962 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
36963 ],
36964 [
36965 '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
36966 '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
36967 ],
36968 [
36969 '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
36970 '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
36971 ],
36972 [
36973 '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
36974 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
36975 ],
36976 [
36977 '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
36978 '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
36979 ],
36980 [
36981 '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
36982 '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
36983 ],
36984 [
36985 '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
36986 '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
36987 ]
36988 ]
36989 }
36990 };
36991
36992 },{}],54:[function(require,module,exports){
36993 'use strict';
36994
36995 var utils = exports;
36996 var BN = require('bn.js');
36997
36998 utils.assert = function assert(val, msg) {
36999 if (!val)
37000 throw new Error(msg || 'Assertion failed');
37001 };
37002
37003 function toArray(msg, enc) {
37004 if (Array.isArray(msg))
37005 return msg.slice();
37006 if (!msg)
37007 return [];
37008 var res = [];
37009 if (typeof msg !== 'string') {
37010 for (var i = 0; i < msg.length; i++)
37011 res[i] = msg[i] | 0;
37012 return res;
37013 }
37014 if (!enc) {
37015 for (var i = 0; i < msg.length; i++) {
37016 var c = msg.charCodeAt(i);
37017 var hi = c >> 8;
37018 var lo = c & 0xff;
37019 if (hi)
37020 res.push(hi, lo);
37021 else
37022 res.push(lo);
37023 }
37024 } else if (enc === 'hex') {
37025 msg = msg.replace(/[^a-z0-9]+/ig, '');
37026 if (msg.length % 2 !== 0)
37027 msg = '0' + msg;
37028 for (var i = 0; i < msg.length; i += 2)
37029 res.push(parseInt(msg[i] + msg[i + 1], 16));
37030 }
37031 return res;
37032 }
37033 utils.toArray = toArray;
37034
37035 function zero2(word) {
37036 if (word.length === 1)
37037 return '0' + word;
37038 else
37039 return word;
37040 }
37041 utils.zero2 = zero2;
37042
37043 function toHex(msg) {
37044 var res = '';
37045 for (var i = 0; i < msg.length; i++)
37046 res += zero2(msg[i].toString(16));
37047 return res;
37048 }
37049 utils.toHex = toHex;
37050
37051 utils.encode = function encode(arr, enc) {
37052 if (enc === 'hex')
37053 return toHex(arr);
37054 else
37055 return arr;
37056 };
37057
37058 // Represent num in a w-NAF form
37059 function getNAF(num, w) {
37060 var naf = [];
37061 var ws = 1 << (w + 1);
37062 var k = num.clone();
37063 while (k.cmpn(1) >= 0) {
37064 var z;
37065 if (k.isOdd()) {
37066 var mod = k.andln(ws - 1);
37067 if (mod > (ws >> 1) - 1)
37068 z = (ws >> 1) - mod;
37069 else
37070 z = mod;
37071 k.isubn(z);
37072 } else {
37073 z = 0;
37074 }
37075 naf.push(z);
37076
37077 // Optimization, shift by word if possible
37078 var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
37079 for (var i = 1; i < shift; i++)
37080 naf.push(0);
37081 k.iushrn(shift);
37082 }
37083
37084 return naf;
37085 }
37086 utils.getNAF = getNAF;
37087
37088 // Represent k1, k2 in a Joint Sparse Form
37089 function getJSF(k1, k2) {
37090 var jsf = [
37091 [],
37092 []
37093 ];
37094
37095 k1 = k1.clone();
37096 k2 = k2.clone();
37097 var d1 = 0;
37098 var d2 = 0;
37099 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
37100
37101 // First phase
37102 var m14 = (k1.andln(3) + d1) & 3;
37103 var m24 = (k2.andln(3) + d2) & 3;
37104 if (m14 === 3)
37105 m14 = -1;
37106 if (m24 === 3)
37107 m24 = -1;
37108 var u1;
37109 if ((m14 & 1) === 0) {
37110 u1 = 0;
37111 } else {
37112 var m8 = (k1.andln(7) + d1) & 7;
37113 if ((m8 === 3 || m8 === 5) && m24 === 2)
37114 u1 = -m14;
37115 else
37116 u1 = m14;
37117 }
37118 jsf[0].push(u1);
37119
37120 var u2;
37121 if ((m24 & 1) === 0) {
37122 u2 = 0;
37123 } else {
37124 var m8 = (k2.andln(7) + d2) & 7;
37125 if ((m8 === 3 || m8 === 5) && m14 === 2)
37126 u2 = -m24;
37127 else
37128 u2 = m24;
37129 }
37130 jsf[1].push(u2);
37131
37132 // Second phase
37133 if (2 * d1 === u1 + 1)
37134 d1 = 1 - d1;
37135 if (2 * d2 === u2 + 1)
37136 d2 = 1 - d2;
37137 k1.iushrn(1);
37138 k2.iushrn(1);
37139 }
37140
37141 return jsf;
37142 }
37143 utils.getJSF = getJSF;
37144
37145 function cachedProperty(obj, name, computer) {
37146 var key = '_' + name;
37147 obj.prototype[name] = function cachedProperty() {
37148 return this[key] !== undefined ? this[key] :
37149 this[key] = computer.call(this);
37150 };
37151 }
37152 utils.cachedProperty = cachedProperty;
37153
37154 function parseBytes(bytes) {
37155 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
37156 bytes;
37157 }
37158 utils.parseBytes = parseBytes;
37159
37160 function intFromLE(bytes) {
37161 return new BN(bytes, 'hex', 'le');
37162 }
37163 utils.intFromLE = intFromLE;
37164
37165
37166 },{"bn.js":33}],55:[function(require,module,exports){
37167 module.exports={
37168 "_args": [
37169 [
37170 {
37171 "raw": "elliptic@^6.2.3",
37172 "scope": null,
37173 "escapedName": "elliptic",
37174 "name": "elliptic",
37175 "rawSpec": "^6.2.3",
37176 "spec": ">=6.2.3 <7.0.0",
37177 "type": "range"
37178 },
37179 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
37180 ]
37181 ],
37182 "_from": "elliptic@>=6.2.3 <7.0.0",
37183 "_id": "elliptic@6.3.3",
37184 "_inCache": true,
37185 "_location": "/elliptic",
37186 "_nodeVersion": "7.0.0",
37187 "_npmOperationalInternal": {
37188 "host": "packages-18-east.internal.npmjs.com",
37189 "tmp": "tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
37190 },
37191 "_npmUser": {
37192 "name": "indutny",
37193 "email": "fedor@indutny.com"
37194 },
37195 "_npmVersion": "3.10.8",
37196 "_phantomChildren": {},
37197 "_requested": {
37198 "raw": "elliptic@^6.2.3",
37199 "scope": null,
37200 "escapedName": "elliptic",
37201 "name": "elliptic",
37202 "rawSpec": "^6.2.3",
37203 "spec": ">=6.2.3 <7.0.0",
37204 "type": "range"
37205 },
37206 "_requiredBy": [
37207 "/browserify-sign",
37208 "/create-ecdh",
37209 "/secp256k1"
37210 ],
37211 "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
37212 "_shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
37213 "_shrinkwrap": null,
37214 "_spec": "elliptic@^6.2.3",
37215 "_where": "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
37216 "author": {
37217 "name": "Fedor Indutny",
37218 "email": "fedor@indutny.com"
37219 },
37220 "bugs": {
37221 "url": "https://github.com/indutny/elliptic/issues"
37222 },
37223 "dependencies": {
37224 "bn.js": "^4.4.0",
37225 "brorand": "^1.0.1",
37226 "hash.js": "^1.0.0",
37227 "inherits": "^2.0.1"
37228 },
37229 "description": "EC cryptography",
37230 "devDependencies": {
37231 "brfs": "^1.4.3",
37232 "coveralls": "^2.11.3",
37233 "grunt": "^0.4.5",
37234 "grunt-browserify": "^5.0.0",
37235 "grunt-cli": "^1.2.0",
37236 "grunt-contrib-connect": "^1.0.0",
37237 "grunt-contrib-copy": "^1.0.0",
37238 "grunt-contrib-uglify": "^1.0.1",
37239 "grunt-mocha-istanbul": "^3.0.1",
37240 "grunt-saucelabs": "^8.6.2",
37241 "istanbul": "^0.4.2",
37242 "jscs": "^2.9.0",
37243 "jshint": "^2.6.0",
37244 "mocha": "^2.1.0"
37245 },
37246 "directories": {},
37247 "dist": {
37248 "shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
37249 "tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
37250 },
37251 "files": [
37252 "lib"
37253 ],
37254 "gitHead": "63aee8d697e9b7fac37ece24222029117a890a7e",
37255 "homepage": "https://github.com/indutny/elliptic",
37256 "keywords": [
37257 "EC",
37258 "Elliptic",
37259 "curve",
37260 "Cryptography"
37261 ],
37262 "license": "MIT",
37263 "main": "lib/elliptic.js",
37264 "maintainers": [
37265 {
37266 "name": "indutny",
37267 "email": "fedor@indutny.com"
37268 }
37269 ],
37270 "name": "elliptic",
37271 "optionalDependencies": {},
37272 "readme": "ERROR: No README data found!",
37273 "repository": {
37274 "type": "git",
37275 "url": "git+ssh://git@github.com/indutny/elliptic.git"
37276 },
37277 "scripts": {
37278 "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
37279 "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
37280 "lint": "npm run jscs && npm run jshint",
37281 "test": "npm run lint && npm run unit",
37282 "unit": "istanbul test _mocha --reporter=spec test/index.js",
37283 "version": "grunt dist && git add dist/"
37284 },
37285 "version": "6.3.3"
37286 }
37287
37288 },{}],56:[function(require,module,exports){
37289 (function (Buffer){
37290 'use strict';
37291
37292 var isHexPrefixed = require('is-hex-prefixed');
37293 var stripHexPrefix = require('strip-hex-prefix');
37294
37295 /**
37296 * Pads a `String` to have an even length
37297 * @param {String} value
37298 * @return {String} output
37299 */
37300 function padToEven(value) {
37301 var a = value; // eslint-disable-line
37302
37303 if (typeof a !== 'string') {
37304 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
37305 }
37306
37307 if (a.length % 2) {
37308 a = '0' + a;
37309 }
37310
37311 return a;
37312 }
37313
37314 /**
37315 * Converts a `Number` into a hex `String`
37316 * @param {Number} i
37317 * @return {String}
37318 */
37319 function intToHex(i) {
37320 var hex = i.toString(16); // eslint-disable-line
37321
37322 return '0x' + padToEven(hex);
37323 }
37324
37325 /**
37326 * Converts an `Number` to a `Buffer`
37327 * @param {Number} i
37328 * @return {Buffer}
37329 */
37330 function intToBuffer(i) {
37331 var hex = intToHex(i);
37332
37333 return new Buffer(hex.slice(2), 'hex');
37334 }
37335
37336 /**
37337 * Get the binary size of a string
37338 * @param {String} str
37339 * @return {Number}
37340 */
37341 function getBinarySize(str) {
37342 if (typeof str !== 'string') {
37343 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
37344 }
37345
37346 return Buffer.byteLength(str, 'utf8');
37347 }
37348
37349 /**
37350 * Returns TRUE if the first specified array contains all elements
37351 * from the second one. FALSE otherwise.
37352 *
37353 * @param {array} superset
37354 * @param {array} subset
37355 *
37356 * @returns {boolean}
37357 */
37358 function arrayContainsArray(superset, subset, some) {
37359 if (Array.isArray(superset) !== true) {
37360 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
37361 }
37362 if (Array.isArray(subset) !== true) {
37363 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
37364 }
37365
37366 return subset[Boolean(some) && 'some' || 'every'](function (value) {
37367 return superset.indexOf(value) >= 0;
37368 });
37369 }
37370
37371 /**
37372 * Should be called to get utf8 from it's hex representation
37373 *
37374 * @method toUtf8
37375 * @param {String} string in hex
37376 * @returns {String} ascii string representation of hex value
37377 */
37378 function toUtf8(hex) {
37379 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');
37380
37381 return bufferValue.toString('utf8');
37382 }
37383
37384 /**
37385 * Should be called to get ascii from it's hex representation
37386 *
37387 * @method toAscii
37388 * @param {String} string in hex
37389 * @returns {String} ascii string representation of hex value
37390 */
37391 function toAscii(hex) {
37392 var str = ''; // eslint-disable-line
37393 var i = 0,
37394 l = hex.length; // eslint-disable-line
37395
37396 if (hex.substring(0, 2) === '0x') {
37397 i = 2;
37398 }
37399
37400 for (; i < l; i += 2) {
37401 var code = parseInt(hex.substr(i, 2), 16);
37402 str += String.fromCharCode(code);
37403 }
37404
37405 return str;
37406 }
37407
37408 /**
37409 * Should be called to get hex representation (prefixed by 0x) of utf8 string
37410 *
37411 * @method fromUtf8
37412 * @param {String} string
37413 * @param {Number} optional padding
37414 * @returns {String} hex representation of input string
37415 */
37416 function fromUtf8(stringValue) {
37417 var str = new Buffer(stringValue, 'utf8');
37418
37419 return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');
37420 }
37421
37422 /**
37423 * Should be called to get hex representation (prefixed by 0x) of ascii string
37424 *
37425 * @method fromAscii
37426 * @param {String} string
37427 * @param {Number} optional padding
37428 * @returns {String} hex representation of input string
37429 */
37430 function fromAscii(stringValue) {
37431 var hex = ''; // eslint-disable-line
37432 for (var i = 0; i < stringValue.length; i++) {
37433 // eslint-disable-line
37434 var code = stringValue.charCodeAt(i);
37435 var n = code.toString(16);
37436 hex += n.length < 2 ? '0' + n : n;
37437 }
37438
37439 return '0x' + hex;
37440 }
37441
37442 /**
37443 * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]
37444 *
37445 * @method getKeys get specific key from inner object array of objects
37446 * @param {String} params
37447 * @param {String} key
37448 * @param {Boolean} allowEmpty
37449 * @returns {Array} output just a simple array of output keys
37450 */
37451 function getKeys(params, key, allowEmpty) {
37452 if (!Array.isArray(params)) {
37453 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
37454 }
37455 if (typeof key !== 'string') {
37456 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
37457 }
37458
37459 var result = []; // eslint-disable-line
37460
37461 for (var i = 0; i < params.length; i++) {
37462 // eslint-disable-line
37463 var value = params[i][key]; // eslint-disable-line
37464 if (allowEmpty && !value) {
37465 value = '';
37466 } else if (typeof value !== 'string') {
37467 throw new Error('invalid abi');
37468 }
37469 result.push(value);
37470 }
37471
37472 return result;
37473 }
37474
37475 /**
37476 * Is the string a hex string.
37477 *
37478 * @method check if string is hex string of specific length
37479 * @param {String} value
37480 * @param {Number} length
37481 * @returns {Boolean} output the string is a hex string
37482 */
37483 function isHexString(value, length) {
37484 if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
37485 return false;
37486 }
37487
37488 if (length && value.length !== 2 + 2 * length) {
37489 return false;
37490 }
37491
37492 return true;
37493 }
37494
37495 module.exports = {
37496 arrayContainsArray: arrayContainsArray,
37497 intToBuffer: intToBuffer,
37498 getBinarySize: getBinarySize,
37499 isHexPrefixed: isHexPrefixed,
37500 stripHexPrefix: stripHexPrefix,
37501 padToEven: padToEven,
37502 intToHex: intToHex,
37503 fromAscii: fromAscii,
37504 fromUtf8: fromUtf8,
37505 toAscii: toAscii,
37506 toUtf8: toUtf8,
37507 getKeys: getKeys,
37508 isHexString: isHexString
37509 };
37510 }).call(this,require("buffer").Buffer)
37511 },{"buffer":5,"is-hex-prefixed":64,"strip-hex-prefix":87}],57:[function(require,module,exports){
37512 var hash = exports;
37513
37514 hash.utils = require('./hash/utils');
37515 hash.common = require('./hash/common');
37516 hash.sha = require('./hash/sha');
37517 hash.ripemd = require('./hash/ripemd');
37518 hash.hmac = require('./hash/hmac');
37519
37520 // Proxy hash functions to the main object
37521 hash.sha1 = hash.sha.sha1;
37522 hash.sha256 = hash.sha.sha256;
37523 hash.sha224 = hash.sha.sha224;
37524 hash.sha384 = hash.sha.sha384;
37525 hash.sha512 = hash.sha.sha512;
37526 hash.ripemd160 = hash.ripemd.ripemd160;
37527
37528 },{"./hash/common":58,"./hash/hmac":59,"./hash/ripemd":60,"./hash/sha":61,"./hash/utils":62}],58:[function(require,module,exports){
37529 var hash = require('../hash');
37530 var utils = hash.utils;
37531 var assert = utils.assert;
37532
37533 function BlockHash() {
37534 this.pending = null;
37535 this.pendingTotal = 0;
37536 this.blockSize = this.constructor.blockSize;
37537 this.outSize = this.constructor.outSize;
37538 this.hmacStrength = this.constructor.hmacStrength;
37539 this.padLength = this.constructor.padLength / 8;
37540 this.endian = 'big';
37541
37542 this._delta8 = this.blockSize / 8;
37543 this._delta32 = this.blockSize / 32;
37544 }
37545 exports.BlockHash = BlockHash;
37546
37547 BlockHash.prototype.update = function update(msg, enc) {
37548 // Convert message to array, pad it, and join into 32bit blocks
37549 msg = utils.toArray(msg, enc);
37550 if (!this.pending)
37551 this.pending = msg;
37552 else
37553 this.pending = this.pending.concat(msg);
37554 this.pendingTotal += msg.length;
37555
37556 // Enough data, try updating
37557 if (this.pending.length >= this._delta8) {
37558 msg = this.pending;
37559
37560 // Process pending data in blocks
37561 var r = msg.length % this._delta8;
37562 this.pending = msg.slice(msg.length - r, msg.length);
37563 if (this.pending.length === 0)
37564 this.pending = null;
37565
37566 msg = utils.join32(msg, 0, msg.length - r, this.endian);
37567 for (var i = 0; i < msg.length; i += this._delta32)
37568 this._update(msg, i, i + this._delta32);
37569 }
37570
37571 return this;
37572 };
37573
37574 BlockHash.prototype.digest = function digest(enc) {
37575 this.update(this._pad());
37576 assert(this.pending === null);
37577
37578 return this._digest(enc);
37579 };
37580
37581 BlockHash.prototype._pad = function pad() {
37582 var len = this.pendingTotal;
37583 var bytes = this._delta8;
37584 var k = bytes - ((len + this.padLength) % bytes);
37585 var res = new Array(k + this.padLength);
37586 res[0] = 0x80;
37587 for (var i = 1; i < k; i++)
37588 res[i] = 0;
37589
37590 // Append length
37591 len <<= 3;
37592 if (this.endian === 'big') {
37593 for (var t = 8; t < this.padLength; t++)
37594 res[i++] = 0;
37595
37596 res[i++] = 0;
37597 res[i++] = 0;
37598 res[i++] = 0;
37599 res[i++] = 0;
37600 res[i++] = (len >>> 24) & 0xff;
37601 res[i++] = (len >>> 16) & 0xff;
37602 res[i++] = (len >>> 8) & 0xff;
37603 res[i++] = len & 0xff;
37604 } else {
37605 res[i++] = len & 0xff;
37606 res[i++] = (len >>> 8) & 0xff;
37607 res[i++] = (len >>> 16) & 0xff;
37608 res[i++] = (len >>> 24) & 0xff;
37609 res[i++] = 0;
37610 res[i++] = 0;
37611 res[i++] = 0;
37612 res[i++] = 0;
37613
37614 for (var t = 8; t < this.padLength; t++)
37615 res[i++] = 0;
37616 }
37617
37618 return res;
37619 };
37620
37621 },{"../hash":57}],59:[function(require,module,exports){
37622 var hmac = exports;
37623
37624 var hash = require('../hash');
37625 var utils = hash.utils;
37626 var assert = utils.assert;
37627
37628 function Hmac(hash, key, enc) {
37629 if (!(this instanceof Hmac))
37630 return new Hmac(hash, key, enc);
37631 this.Hash = hash;
37632 this.blockSize = hash.blockSize / 8;
37633 this.outSize = hash.outSize / 8;
37634 this.inner = null;
37635 this.outer = null;
37636
37637 this._init(utils.toArray(key, enc));
37638 }
37639 module.exports = Hmac;
37640
37641 Hmac.prototype._init = function init(key) {
37642 // Shorten key, if needed
37643 if (key.length > this.blockSize)
37644 key = new this.Hash().update(key).digest();
37645 assert(key.length <= this.blockSize);
37646
37647 // Add padding to key
37648 for (var i = key.length; i < this.blockSize; i++)
37649 key.push(0);
37650
37651 for (var i = 0; i < key.length; i++)
37652 key[i] ^= 0x36;
37653 this.inner = new this.Hash().update(key);
37654
37655 // 0x36 ^ 0x5c = 0x6a
37656 for (var i = 0; i < key.length; i++)
37657 key[i] ^= 0x6a;
37658 this.outer = new this.Hash().update(key);
37659 };
37660
37661 Hmac.prototype.update = function update(msg, enc) {
37662 this.inner.update(msg, enc);
37663 return this;
37664 };
37665
37666 Hmac.prototype.digest = function digest(enc) {
37667 this.outer.update(this.inner.digest());
37668 return this.outer.digest(enc);
37669 };
37670
37671 },{"../hash":57}],60:[function(require,module,exports){
37672 var hash = require('../hash');
37673 var utils = hash.utils;
37674
37675 var rotl32 = utils.rotl32;
37676 var sum32 = utils.sum32;
37677 var sum32_3 = utils.sum32_3;
37678 var sum32_4 = utils.sum32_4;
37679 var BlockHash = hash.common.BlockHash;
37680
37681 function RIPEMD160() {
37682 if (!(this instanceof RIPEMD160))
37683 return new RIPEMD160();
37684
37685 BlockHash.call(this);
37686
37687 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
37688 this.endian = 'little';
37689 }
37690 utils.inherits(RIPEMD160, BlockHash);
37691 exports.ripemd160 = RIPEMD160;
37692
37693 RIPEMD160.blockSize = 512;
37694 RIPEMD160.outSize = 160;
37695 RIPEMD160.hmacStrength = 192;
37696 RIPEMD160.padLength = 64;
37697
37698 RIPEMD160.prototype._update = function update(msg, start) {
37699 var A = this.h[0];
37700 var B = this.h[1];
37701 var C = this.h[2];
37702 var D = this.h[3];
37703 var E = this.h[4];
37704 var Ah = A;
37705 var Bh = B;
37706 var Ch = C;
37707 var Dh = D;
37708 var Eh = E;
37709 for (var j = 0; j < 80; j++) {
37710 var T = sum32(
37711 rotl32(
37712 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
37713 s[j]),
37714 E);
37715 A = E;
37716 E = D;
37717 D = rotl32(C, 10);
37718 C = B;
37719 B = T;
37720 T = sum32(
37721 rotl32(
37722 sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
37723 sh[j]),
37724 Eh);
37725 Ah = Eh;
37726 Eh = Dh;
37727 Dh = rotl32(Ch, 10);
37728 Ch = Bh;
37729 Bh = T;
37730 }
37731 T = sum32_3(this.h[1], C, Dh);
37732 this.h[1] = sum32_3(this.h[2], D, Eh);
37733 this.h[2] = sum32_3(this.h[3], E, Ah);
37734 this.h[3] = sum32_3(this.h[4], A, Bh);
37735 this.h[4] = sum32_3(this.h[0], B, Ch);
37736 this.h[0] = T;
37737 };
37738
37739 RIPEMD160.prototype._digest = function digest(enc) {
37740 if (enc === 'hex')
37741 return utils.toHex32(this.h, 'little');
37742 else
37743 return utils.split32(this.h, 'little');
37744 };
37745
37746 function f(j, x, y, z) {
37747 if (j <= 15)
37748 return x ^ y ^ z;
37749 else if (j <= 31)
37750 return (x & y) | ((~x) & z);
37751 else if (j <= 47)
37752 return (x | (~y)) ^ z;
37753 else if (j <= 63)
37754 return (x & z) | (y & (~z));
37755 else
37756 return x ^ (y | (~z));
37757 }
37758
37759 function K(j) {
37760 if (j <= 15)
37761 return 0x00000000;
37762 else if (j <= 31)
37763 return 0x5a827999;
37764 else if (j <= 47)
37765 return 0x6ed9eba1;
37766 else if (j <= 63)
37767 return 0x8f1bbcdc;
37768 else
37769 return 0xa953fd4e;
37770 }
37771
37772 function Kh(j) {
37773 if (j <= 15)
37774 return 0x50a28be6;
37775 else if (j <= 31)
37776 return 0x5c4dd124;
37777 else if (j <= 47)
37778 return 0x6d703ef3;
37779 else if (j <= 63)
37780 return 0x7a6d76e9;
37781 else
37782 return 0x00000000;
37783 }
37784
37785 var r = [
37786 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
37787 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
37788 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
37789 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
37790 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
37791 ];
37792
37793 var rh = [
37794 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
37795 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
37796 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
37797 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
37798 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
37799 ];
37800
37801 var s = [
37802 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
37803 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
37804 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
37805 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
37806 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
37807 ];
37808
37809 var sh = [
37810 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
37811 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
37812 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
37813 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
37814 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
37815 ];
37816
37817 },{"../hash":57}],61:[function(require,module,exports){
37818 var hash = require('../hash');
37819 var utils = hash.utils;
37820 var assert = utils.assert;
37821
37822 var rotr32 = utils.rotr32;
37823 var rotl32 = utils.rotl32;
37824 var sum32 = utils.sum32;
37825 var sum32_4 = utils.sum32_4;
37826 var sum32_5 = utils.sum32_5;
37827 var rotr64_hi = utils.rotr64_hi;
37828 var rotr64_lo = utils.rotr64_lo;
37829 var shr64_hi = utils.shr64_hi;
37830 var shr64_lo = utils.shr64_lo;
37831 var sum64 = utils.sum64;
37832 var sum64_hi = utils.sum64_hi;
37833 var sum64_lo = utils.sum64_lo;
37834 var sum64_4_hi = utils.sum64_4_hi;
37835 var sum64_4_lo = utils.sum64_4_lo;
37836 var sum64_5_hi = utils.sum64_5_hi;
37837 var sum64_5_lo = utils.sum64_5_lo;
37838 var BlockHash = hash.common.BlockHash;
37839
37840 var sha256_K = [
37841 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
37842 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
37843 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
37844 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
37845 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
37846 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
37847 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
37848 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
37849 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
37850 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
37851 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
37852 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
37853 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
37854 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
37855 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
37856 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
37857 ];
37858
37859 var sha512_K = [
37860 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
37861 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
37862 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
37863 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
37864 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
37865 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
37866 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
37867 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
37868 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
37869 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
37870 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
37871 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
37872 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
37873 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
37874 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
37875 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
37876 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
37877 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
37878 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
37879 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
37880 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
37881 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
37882 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
37883 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
37884 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
37885 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
37886 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
37887 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
37888 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
37889 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
37890 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
37891 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
37892 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
37893 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
37894 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
37895 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
37896 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
37897 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
37898 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
37899 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
37900 ];
37901
37902 var sha1_K = [
37903 0x5A827999, 0x6ED9EBA1,
37904 0x8F1BBCDC, 0xCA62C1D6
37905 ];
37906
37907 function SHA256() {
37908 if (!(this instanceof SHA256))
37909 return new SHA256();
37910
37911 BlockHash.call(this);
37912 this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
37913 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];
37914 this.k = sha256_K;
37915 this.W = new Array(64);
37916 }
37917 utils.inherits(SHA256, BlockHash);
37918 exports.sha256 = SHA256;
37919
37920 SHA256.blockSize = 512;
37921 SHA256.outSize = 256;
37922 SHA256.hmacStrength = 192;
37923 SHA256.padLength = 64;
37924
37925 SHA256.prototype._update = function _update(msg, start) {
37926 var W = this.W;
37927
37928 for (var i = 0; i < 16; i++)
37929 W[i] = msg[start + i];
37930 for (; i < W.length; i++)
37931 W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
37932
37933 var a = this.h[0];
37934 var b = this.h[1];
37935 var c = this.h[2];
37936 var d = this.h[3];
37937 var e = this.h[4];
37938 var f = this.h[5];
37939 var g = this.h[6];
37940 var h = this.h[7];
37941
37942 assert(this.k.length === W.length);
37943 for (var i = 0; i < W.length; i++) {
37944 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
37945 var T2 = sum32(s0_256(a), maj32(a, b, c));
37946 h = g;
37947 g = f;
37948 f = e;
37949 e = sum32(d, T1);
37950 d = c;
37951 c = b;
37952 b = a;
37953 a = sum32(T1, T2);
37954 }
37955
37956 this.h[0] = sum32(this.h[0], a);
37957 this.h[1] = sum32(this.h[1], b);
37958 this.h[2] = sum32(this.h[2], c);
37959 this.h[3] = sum32(this.h[3], d);
37960 this.h[4] = sum32(this.h[4], e);
37961 this.h[5] = sum32(this.h[5], f);
37962 this.h[6] = sum32(this.h[6], g);
37963 this.h[7] = sum32(this.h[7], h);
37964 };
37965
37966 SHA256.prototype._digest = function digest(enc) {
37967 if (enc === 'hex')
37968 return utils.toHex32(this.h, 'big');
37969 else
37970 return utils.split32(this.h, 'big');
37971 };
37972
37973 function SHA224() {
37974 if (!(this instanceof SHA224))
37975 return new SHA224();
37976
37977 SHA256.call(this);
37978 this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
37979 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
37980 }
37981 utils.inherits(SHA224, SHA256);
37982 exports.sha224 = SHA224;
37983
37984 SHA224.blockSize = 512;
37985 SHA224.outSize = 224;
37986 SHA224.hmacStrength = 192;
37987 SHA224.padLength = 64;
37988
37989 SHA224.prototype._digest = function digest(enc) {
37990 // Just truncate output
37991 if (enc === 'hex')
37992 return utils.toHex32(this.h.slice(0, 7), 'big');
37993 else
37994 return utils.split32(this.h.slice(0, 7), 'big');
37995 };
37996
37997 function SHA512() {
37998 if (!(this instanceof SHA512))
37999 return new SHA512();
38000
38001 BlockHash.call(this);
38002 this.h = [ 0x6a09e667, 0xf3bcc908,
38003 0xbb67ae85, 0x84caa73b,
38004 0x3c6ef372, 0xfe94f82b,
38005 0xa54ff53a, 0x5f1d36f1,
38006 0x510e527f, 0xade682d1,
38007 0x9b05688c, 0x2b3e6c1f,
38008 0x1f83d9ab, 0xfb41bd6b,
38009 0x5be0cd19, 0x137e2179 ];
38010 this.k = sha512_K;
38011 this.W = new Array(160);
38012 }
38013 utils.inherits(SHA512, BlockHash);
38014 exports.sha512 = SHA512;
38015
38016 SHA512.blockSize = 1024;
38017 SHA512.outSize = 512;
38018 SHA512.hmacStrength = 192;
38019 SHA512.padLength = 128;
38020
38021 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
38022 var W = this.W;
38023
38024 // 32 x 32bit words
38025 for (var i = 0; i < 32; i++)
38026 W[i] = msg[start + i];
38027 for (; i < W.length; i += 2) {
38028 var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
38029 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
38030 var c1_hi = W[i - 14]; // i - 7
38031 var c1_lo = W[i - 13];
38032 var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
38033 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
38034 var c3_hi = W[i - 32]; // i - 16
38035 var c3_lo = W[i - 31];
38036
38037 W[i] = sum64_4_hi(c0_hi, c0_lo,
38038 c1_hi, c1_lo,
38039 c2_hi, c2_lo,
38040 c3_hi, c3_lo);
38041 W[i + 1] = sum64_4_lo(c0_hi, c0_lo,
38042 c1_hi, c1_lo,
38043 c2_hi, c2_lo,
38044 c3_hi, c3_lo);
38045 }
38046 };
38047
38048 SHA512.prototype._update = function _update(msg, start) {
38049 this._prepareBlock(msg, start);
38050
38051 var W = this.W;
38052
38053 var ah = this.h[0];
38054 var al = this.h[1];
38055 var bh = this.h[2];
38056 var bl = this.h[3];
38057 var ch = this.h[4];
38058 var cl = this.h[5];
38059 var dh = this.h[6];
38060 var dl = this.h[7];
38061 var eh = this.h[8];
38062 var el = this.h[9];
38063 var fh = this.h[10];
38064 var fl = this.h[11];
38065 var gh = this.h[12];
38066 var gl = this.h[13];
38067 var hh = this.h[14];
38068 var hl = this.h[15];
38069
38070 assert(this.k.length === W.length);
38071 for (var i = 0; i < W.length; i += 2) {
38072 var c0_hi = hh;
38073 var c0_lo = hl;
38074 var c1_hi = s1_512_hi(eh, el);
38075 var c1_lo = s1_512_lo(eh, el);
38076 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
38077 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
38078 var c3_hi = this.k[i];
38079 var c3_lo = this.k[i + 1];
38080 var c4_hi = W[i];
38081 var c4_lo = W[i + 1];
38082
38083 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
38084 c1_hi, c1_lo,
38085 c2_hi, c2_lo,
38086 c3_hi, c3_lo,
38087 c4_hi, c4_lo);
38088 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
38089 c1_hi, c1_lo,
38090 c2_hi, c2_lo,
38091 c3_hi, c3_lo,
38092 c4_hi, c4_lo);
38093
38094 var c0_hi = s0_512_hi(ah, al);
38095 var c0_lo = s0_512_lo(ah, al);
38096 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
38097 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
38098
38099 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
38100 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
38101
38102 hh = gh;
38103 hl = gl;
38104
38105 gh = fh;
38106 gl = fl;
38107
38108 fh = eh;
38109 fl = el;
38110
38111 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
38112 el = sum64_lo(dl, dl, T1_hi, T1_lo);
38113
38114 dh = ch;
38115 dl = cl;
38116
38117 ch = bh;
38118 cl = bl;
38119
38120 bh = ah;
38121 bl = al;
38122
38123 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
38124 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
38125 }
38126
38127 sum64(this.h, 0, ah, al);
38128 sum64(this.h, 2, bh, bl);
38129 sum64(this.h, 4, ch, cl);
38130 sum64(this.h, 6, dh, dl);
38131 sum64(this.h, 8, eh, el);
38132 sum64(this.h, 10, fh, fl);
38133 sum64(this.h, 12, gh, gl);
38134 sum64(this.h, 14, hh, hl);
38135 };
38136
38137 SHA512.prototype._digest = function digest(enc) {
38138 if (enc === 'hex')
38139 return utils.toHex32(this.h, 'big');
38140 else
38141 return utils.split32(this.h, 'big');
38142 };
38143
38144 function SHA384() {
38145 if (!(this instanceof SHA384))
38146 return new SHA384();
38147
38148 SHA512.call(this);
38149 this.h = [ 0xcbbb9d5d, 0xc1059ed8,
38150 0x629a292a, 0x367cd507,
38151 0x9159015a, 0x3070dd17,
38152 0x152fecd8, 0xf70e5939,
38153 0x67332667, 0xffc00b31,
38154 0x8eb44a87, 0x68581511,
38155 0xdb0c2e0d, 0x64f98fa7,
38156 0x47b5481d, 0xbefa4fa4 ];
38157 }
38158 utils.inherits(SHA384, SHA512);
38159 exports.sha384 = SHA384;
38160
38161 SHA384.blockSize = 1024;
38162 SHA384.outSize = 384;
38163 SHA384.hmacStrength = 192;
38164 SHA384.padLength = 128;
38165
38166 SHA384.prototype._digest = function digest(enc) {
38167 if (enc === 'hex')
38168 return utils.toHex32(this.h.slice(0, 12), 'big');
38169 else
38170 return utils.split32(this.h.slice(0, 12), 'big');
38171 };
38172
38173 function SHA1() {
38174 if (!(this instanceof SHA1))
38175 return new SHA1();
38176
38177 BlockHash.call(this);
38178 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,
38179 0x10325476, 0xc3d2e1f0 ];
38180 this.W = new Array(80);
38181 }
38182
38183 utils.inherits(SHA1, BlockHash);
38184 exports.sha1 = SHA1;
38185
38186 SHA1.blockSize = 512;
38187 SHA1.outSize = 160;
38188 SHA1.hmacStrength = 80;
38189 SHA1.padLength = 64;
38190
38191 SHA1.prototype._update = function _update(msg, start) {
38192 var W = this.W;
38193
38194 for (var i = 0; i < 16; i++)
38195 W[i] = msg[start + i];
38196
38197 for(; i < W.length; i++)
38198 W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
38199
38200 var a = this.h[0];
38201 var b = this.h[1];
38202 var c = this.h[2];
38203 var d = this.h[3];
38204 var e = this.h[4];
38205
38206 for (var i = 0; i < W.length; i++) {
38207 var s = ~~(i / 20);
38208 var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
38209 e = d;
38210 d = c;
38211 c = rotl32(b, 30);
38212 b = a;
38213 a = t;
38214 }
38215
38216 this.h[0] = sum32(this.h[0], a);
38217 this.h[1] = sum32(this.h[1], b);
38218 this.h[2] = sum32(this.h[2], c);
38219 this.h[3] = sum32(this.h[3], d);
38220 this.h[4] = sum32(this.h[4], e);
38221 };
38222
38223 SHA1.prototype._digest = function digest(enc) {
38224 if (enc === 'hex')
38225 return utils.toHex32(this.h, 'big');
38226 else
38227 return utils.split32(this.h, 'big');
38228 };
38229
38230 function ch32(x, y, z) {
38231 return (x & y) ^ ((~x) & z);
38232 }
38233
38234 function maj32(x, y, z) {
38235 return (x & y) ^ (x & z) ^ (y & z);
38236 }
38237
38238 function p32(x, y, z) {
38239 return x ^ y ^ z;
38240 }
38241
38242 function s0_256(x) {
38243 return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
38244 }
38245
38246 function s1_256(x) {
38247 return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
38248 }
38249
38250 function g0_256(x) {
38251 return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
38252 }
38253
38254 function g1_256(x) {
38255 return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
38256 }
38257
38258 function ft_1(s, x, y, z) {
38259 if (s === 0)
38260 return ch32(x, y, z);
38261 if (s === 1 || s === 3)
38262 return p32(x, y, z);
38263 if (s === 2)
38264 return maj32(x, y, z);
38265 }
38266
38267 function ch64_hi(xh, xl, yh, yl, zh, zl) {
38268 var r = (xh & yh) ^ ((~xh) & zh);
38269 if (r < 0)
38270 r += 0x100000000;
38271 return r;
38272 }
38273
38274 function ch64_lo(xh, xl, yh, yl, zh, zl) {
38275 var r = (xl & yl) ^ ((~xl) & zl);
38276 if (r < 0)
38277 r += 0x100000000;
38278 return r;
38279 }
38280
38281 function maj64_hi(xh, xl, yh, yl, zh, zl) {
38282 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
38283 if (r < 0)
38284 r += 0x100000000;
38285 return r;
38286 }
38287
38288 function maj64_lo(xh, xl, yh, yl, zh, zl) {
38289 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
38290 if (r < 0)
38291 r += 0x100000000;
38292 return r;
38293 }
38294
38295 function s0_512_hi(xh, xl) {
38296 var c0_hi = rotr64_hi(xh, xl, 28);
38297 var c1_hi = rotr64_hi(xl, xh, 2); // 34
38298 var c2_hi = rotr64_hi(xl, xh, 7); // 39
38299
38300 var r = c0_hi ^ c1_hi ^ c2_hi;
38301 if (r < 0)
38302 r += 0x100000000;
38303 return r;
38304 }
38305
38306 function s0_512_lo(xh, xl) {
38307 var c0_lo = rotr64_lo(xh, xl, 28);
38308 var c1_lo = rotr64_lo(xl, xh, 2); // 34
38309 var c2_lo = rotr64_lo(xl, xh, 7); // 39
38310
38311 var r = c0_lo ^ c1_lo ^ c2_lo;
38312 if (r < 0)
38313 r += 0x100000000;
38314 return r;
38315 }
38316
38317 function s1_512_hi(xh, xl) {
38318 var c0_hi = rotr64_hi(xh, xl, 14);
38319 var c1_hi = rotr64_hi(xh, xl, 18);
38320 var c2_hi = rotr64_hi(xl, xh, 9); // 41
38321
38322 var r = c0_hi ^ c1_hi ^ c2_hi;
38323 if (r < 0)
38324 r += 0x100000000;
38325 return r;
38326 }
38327
38328 function s1_512_lo(xh, xl) {
38329 var c0_lo = rotr64_lo(xh, xl, 14);
38330 var c1_lo = rotr64_lo(xh, xl, 18);
38331 var c2_lo = rotr64_lo(xl, xh, 9); // 41
38332
38333 var r = c0_lo ^ c1_lo ^ c2_lo;
38334 if (r < 0)
38335 r += 0x100000000;
38336 return r;
38337 }
38338
38339 function g0_512_hi(xh, xl) {
38340 var c0_hi = rotr64_hi(xh, xl, 1);
38341 var c1_hi = rotr64_hi(xh, xl, 8);
38342 var c2_hi = shr64_hi(xh, xl, 7);
38343
38344 var r = c0_hi ^ c1_hi ^ c2_hi;
38345 if (r < 0)
38346 r += 0x100000000;
38347 return r;
38348 }
38349
38350 function g0_512_lo(xh, xl) {
38351 var c0_lo = rotr64_lo(xh, xl, 1);
38352 var c1_lo = rotr64_lo(xh, xl, 8);
38353 var c2_lo = shr64_lo(xh, xl, 7);
38354
38355 var r = c0_lo ^ c1_lo ^ c2_lo;
38356 if (r < 0)
38357 r += 0x100000000;
38358 return r;
38359 }
38360
38361 function g1_512_hi(xh, xl) {
38362 var c0_hi = rotr64_hi(xh, xl, 19);
38363 var c1_hi = rotr64_hi(xl, xh, 29); // 61
38364 var c2_hi = shr64_hi(xh, xl, 6);
38365
38366 var r = c0_hi ^ c1_hi ^ c2_hi;
38367 if (r < 0)
38368 r += 0x100000000;
38369 return r;
38370 }
38371
38372 function g1_512_lo(xh, xl) {
38373 var c0_lo = rotr64_lo(xh, xl, 19);
38374 var c1_lo = rotr64_lo(xl, xh, 29); // 61
38375 var c2_lo = shr64_lo(xh, xl, 6);
38376
38377 var r = c0_lo ^ c1_lo ^ c2_lo;
38378 if (r < 0)
38379 r += 0x100000000;
38380 return r;
38381 }
38382
38383 },{"../hash":57}],62:[function(require,module,exports){
38384 var utils = exports;
38385 var inherits = require('inherits');
38386
38387 function toArray(msg, enc) {
38388 if (Array.isArray(msg))
38389 return msg.slice();
38390 if (!msg)
38391 return [];
38392 var res = [];
38393 if (typeof msg === 'string') {
38394 if (!enc) {
38395 for (var i = 0; i < msg.length; i++) {
38396 var c = msg.charCodeAt(i);
38397 var hi = c >> 8;
38398 var lo = c & 0xff;
38399 if (hi)
38400 res.push(hi, lo);
38401 else
38402 res.push(lo);
38403 }
38404 } else if (enc === 'hex') {
38405 msg = msg.replace(/[^a-z0-9]+/ig, '');
38406 if (msg.length % 2 !== 0)
38407 msg = '0' + msg;
38408 for (var i = 0; i < msg.length; i += 2)
38409 res.push(parseInt(msg[i] + msg[i + 1], 16));
38410 }
38411 } else {
38412 for (var i = 0; i < msg.length; i++)
38413 res[i] = msg[i] | 0;
38414 }
38415 return res;
38416 }
38417 utils.toArray = toArray;
38418
38419 function toHex(msg) {
38420 var res = '';
38421 for (var i = 0; i < msg.length; i++)
38422 res += zero2(msg[i].toString(16));
38423 return res;
38424 }
38425 utils.toHex = toHex;
38426
38427 function htonl(w) {
38428 var res = (w >>> 24) |
38429 ((w >>> 8) & 0xff00) |
38430 ((w << 8) & 0xff0000) |
38431 ((w & 0xff) << 24);
38432 return res >>> 0;
38433 }
38434 utils.htonl = htonl;
38435
38436 function toHex32(msg, endian) {
38437 var res = '';
38438 for (var i = 0; i < msg.length; i++) {
38439 var w = msg[i];
38440 if (endian === 'little')
38441 w = htonl(w);
38442 res += zero8(w.toString(16));
38443 }
38444 return res;
38445 }
38446 utils.toHex32 = toHex32;
38447
38448 function zero2(word) {
38449 if (word.length === 1)
38450 return '0' + word;
38451 else
38452 return word;
38453 }
38454 utils.zero2 = zero2;
38455
38456 function zero8(word) {
38457 if (word.length === 7)
38458 return '0' + word;
38459 else if (word.length === 6)
38460 return '00' + word;
38461 else if (word.length === 5)
38462 return '000' + word;
38463 else if (word.length === 4)
38464 return '0000' + word;
38465 else if (word.length === 3)
38466 return '00000' + word;
38467 else if (word.length === 2)
38468 return '000000' + word;
38469 else if (word.length === 1)
38470 return '0000000' + word;
38471 else
38472 return word;
38473 }
38474 utils.zero8 = zero8;
38475
38476 function join32(msg, start, end, endian) {
38477 var len = end - start;
38478 assert(len % 4 === 0);
38479 var res = new Array(len / 4);
38480 for (var i = 0, k = start; i < res.length; i++, k += 4) {
38481 var w;
38482 if (endian === 'big')
38483 w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
38484 else
38485 w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
38486 res[i] = w >>> 0;
38487 }
38488 return res;
38489 }
38490 utils.join32 = join32;
38491
38492 function split32(msg, endian) {
38493 var res = new Array(msg.length * 4);
38494 for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
38495 var m = msg[i];
38496 if (endian === 'big') {
38497 res[k] = m >>> 24;
38498 res[k + 1] = (m >>> 16) & 0xff;
38499 res[k + 2] = (m >>> 8) & 0xff;
38500 res[k + 3] = m & 0xff;
38501 } else {
38502 res[k + 3] = m >>> 24;
38503 res[k + 2] = (m >>> 16) & 0xff;
38504 res[k + 1] = (m >>> 8) & 0xff;
38505 res[k] = m & 0xff;
38506 }
38507 }
38508 return res;
38509 }
38510 utils.split32 = split32;
38511
38512 function rotr32(w, b) {
38513 return (w >>> b) | (w << (32 - b));
38514 }
38515 utils.rotr32 = rotr32;
38516
38517 function rotl32(w, b) {
38518 return (w << b) | (w >>> (32 - b));
38519 }
38520 utils.rotl32 = rotl32;
38521
38522 function sum32(a, b) {
38523 return (a + b) >>> 0;
38524 }
38525 utils.sum32 = sum32;
38526
38527 function sum32_3(a, b, c) {
38528 return (a + b + c) >>> 0;
38529 }
38530 utils.sum32_3 = sum32_3;
38531
38532 function sum32_4(a, b, c, d) {
38533 return (a + b + c + d) >>> 0;
38534 }
38535 utils.sum32_4 = sum32_4;
38536
38537 function sum32_5(a, b, c, d, e) {
38538 return (a + b + c + d + e) >>> 0;
38539 }
38540 utils.sum32_5 = sum32_5;
38541
38542 function assert(cond, msg) {
38543 if (!cond)
38544 throw new Error(msg || 'Assertion failed');
38545 }
38546 utils.assert = assert;
38547
38548 utils.inherits = inherits;
38549
38550 function sum64(buf, pos, ah, al) {
38551 var bh = buf[pos];
38552 var bl = buf[pos + 1];
38553
38554 var lo = (al + bl) >>> 0;
38555 var hi = (lo < al ? 1 : 0) + ah + bh;
38556 buf[pos] = hi >>> 0;
38557 buf[pos + 1] = lo;
38558 }
38559 exports.sum64 = sum64;
38560
38561 function sum64_hi(ah, al, bh, bl) {
38562 var lo = (al + bl) >>> 0;
38563 var hi = (lo < al ? 1 : 0) + ah + bh;
38564 return hi >>> 0;
38565 };
38566 exports.sum64_hi = sum64_hi;
38567
38568 function sum64_lo(ah, al, bh, bl) {
38569 var lo = al + bl;
38570 return lo >>> 0;
38571 };
38572 exports.sum64_lo = sum64_lo;
38573
38574 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
38575 var carry = 0;
38576 var lo = al;
38577 lo = (lo + bl) >>> 0;
38578 carry += lo < al ? 1 : 0;
38579 lo = (lo + cl) >>> 0;
38580 carry += lo < cl ? 1 : 0;
38581 lo = (lo + dl) >>> 0;
38582 carry += lo < dl ? 1 : 0;
38583
38584 var hi = ah + bh + ch + dh + carry;
38585 return hi >>> 0;
38586 };
38587 exports.sum64_4_hi = sum64_4_hi;
38588
38589 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
38590 var lo = al + bl + cl + dl;
38591 return lo >>> 0;
38592 };
38593 exports.sum64_4_lo = sum64_4_lo;
38594
38595 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
38596 var carry = 0;
38597 var lo = al;
38598 lo = (lo + bl) >>> 0;
38599 carry += lo < al ? 1 : 0;
38600 lo = (lo + cl) >>> 0;
38601 carry += lo < cl ? 1 : 0;
38602 lo = (lo + dl) >>> 0;
38603 carry += lo < dl ? 1 : 0;
38604 lo = (lo + el) >>> 0;
38605 carry += lo < el ? 1 : 0;
38606
38607 var hi = ah + bh + ch + dh + eh + carry;
38608 return hi >>> 0;
38609 };
38610 exports.sum64_5_hi = sum64_5_hi;
38611
38612 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
38613 var lo = al + bl + cl + dl + el;
38614
38615 return lo >>> 0;
38616 };
38617 exports.sum64_5_lo = sum64_5_lo;
38618
38619 function rotr64_hi(ah, al, num) {
38620 var r = (al << (32 - num)) | (ah >>> num);
38621 return r >>> 0;
38622 };
38623 exports.rotr64_hi = rotr64_hi;
38624
38625 function rotr64_lo(ah, al, num) {
38626 var r = (ah << (32 - num)) | (al >>> num);
38627 return r >>> 0;
38628 };
38629 exports.rotr64_lo = rotr64_lo;
38630
38631 function shr64_hi(ah, al, num) {
38632 return ah >>> num;
38633 };
38634 exports.shr64_hi = shr64_hi;
38635
38636 function shr64_lo(ah, al, num) {
38637 var r = (ah << (32 - num)) | (al >>> num);
38638 return r >>> 0;
38639 };
38640 exports.shr64_lo = shr64_lo;
38641
38642 },{"inherits":63}],63:[function(require,module,exports){
38643 arguments[4][9][0].apply(exports,arguments)
38644 },{"dup":9}],64:[function(require,module,exports){
38645 /**
38646 * Returns a `Boolean` on whether or not the a `String` starts with '0x'
38647 * @param {String} str the string input value
38648 * @return {Boolean} a boolean if it is or is not hex prefixed
38649 * @throws if the str input is not a string
38650 */
38651 module.exports = function isHexPrefixed(str) {
38652 if (typeof str !== 'string') {
38653 throw new Error("[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) + ", while checking isHexPrefixed.");
38654 }
38655
38656 return str.slice(0, 2) === '0x';
38657 }
38658
38659 },{}],65:[function(require,module,exports){
38660 'use strict'
38661 module.exports = require('./lib/api')(require('./lib/keccak'))
38662
38663 },{"./lib/api":66,"./lib/keccak":70}],66:[function(require,module,exports){
38664 'use strict'
38665 var createKeccak = require('./keccak')
38666 var createShake = require('./shake')
38667
38668 module.exports = function (KeccakState) {
38669 var Keccak = createKeccak(KeccakState)
38670 var Shake = createShake(KeccakState)
38671
38672 return function (algorithm, options) {
38673 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
38674 switch (hash) {
38675 case 'keccak224': return new Keccak(1152, 448, null, 224, options)
38676 case 'keccak256': return new Keccak(1088, 512, null, 256, options)
38677 case 'keccak384': return new Keccak(832, 768, null, 384, options)
38678 case 'keccak512': return new Keccak(576, 1024, null, 512, options)
38679
38680 case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)
38681 case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)
38682 case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)
38683 case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)
38684
38685 case 'shake128': return new Shake(1344, 256, 0x1f, options)
38686 case 'shake256': return new Shake(1088, 512, 0x1f, options)
38687
38688 default: throw new Error('Invald algorithm: ' + algorithm)
38689 }
38690 }
38691 }
38692
38693 },{"./keccak":67,"./shake":68}],67:[function(require,module,exports){
38694 (function (Buffer){
38695 'use strict'
38696 var Transform = require('stream').Transform
38697 var inherits = require('inherits')
38698
38699 module.exports = function (KeccakState) {
38700 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
38701 Transform.call(this, options)
38702
38703 this._rate = rate
38704 this._capacity = capacity
38705 this._delimitedSuffix = delimitedSuffix
38706 this._hashBitLength = hashBitLength
38707 this._options = options
38708
38709 this._state = new KeccakState()
38710 this._state.initialize(rate, capacity)
38711 this._finalized = false
38712 }
38713
38714 inherits(Keccak, Transform)
38715
38716 Keccak.prototype._transform = function (chunk, encoding, callback) {
38717 var error = null
38718 try {
38719 this.update(chunk, encoding)
38720 } catch (err) {
38721 error = err
38722 }
38723
38724 callback(error)
38725 }
38726
38727 Keccak.prototype._flush = function (callback) {
38728 var error = null
38729 try {
38730 this.push(this.digest())
38731 } catch (err) {
38732 error = err
38733 }
38734
38735 callback(error)
38736 }
38737
38738 Keccak.prototype.update = function (data, encoding) {
38739 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
38740 if (this._finalized) throw new Error('Digest already called')
38741 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
38742
38743 this._state.absorb(data)
38744
38745 return this
38746 }
38747
38748 Keccak.prototype.digest = function (encoding) {
38749 if (this._finalized) throw new Error('Digest already called')
38750 this._finalized = true
38751
38752 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
38753 var digest = this._state.squeeze(this._hashBitLength / 8)
38754 if (encoding !== undefined) digest = digest.toString(encoding)
38755
38756 this._resetState()
38757
38758 return digest
38759 }
38760
38761 // remove result from memory
38762 Keccak.prototype._resetState = function () {
38763 this._state.initialize(this._rate, this._capacity)
38764 return this
38765 }
38766
38767 // because sometimes we need hash right now and little later
38768 Keccak.prototype._clone = function () {
38769 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
38770 this._state.copy(clone._state)
38771 clone._finalized = this._finalized
38772
38773 return clone
38774 }
38775
38776 return Keccak
38777 }
38778
38779 }).call(this,require("buffer").Buffer)
38780 },{"buffer":5,"inherits":63,"stream":25}],68:[function(require,module,exports){
38781 (function (Buffer){
38782 'use strict'
38783 var Transform = require('stream').Transform
38784 var inherits = require('inherits')
38785
38786 module.exports = function (KeccakState) {
38787 function Shake (rate, capacity, delimitedSuffix, options) {
38788 Transform.call(this, options)
38789
38790 this._rate = rate
38791 this._capacity = capacity
38792 this._delimitedSuffix = delimitedSuffix
38793 this._options = options
38794
38795 this._state = new KeccakState()
38796 this._state.initialize(rate, capacity)
38797 this._finalized = false
38798 }
38799
38800 inherits(Shake, Transform)
38801
38802 Shake.prototype._transform = function (chunk, encoding, callback) {
38803 var error = null
38804 try {
38805 this.update(chunk, encoding)
38806 } catch (err) {
38807 error = err
38808 }
38809
38810 callback(error)
38811 }
38812
38813 Shake.prototype._flush = function () {}
38814
38815 Shake.prototype._read = function (size) {
38816 this.push(this.squeeze(size))
38817 }
38818
38819 Shake.prototype.update = function (data, encoding) {
38820 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
38821 if (this._finalized) throw new Error('Squeeze already called')
38822 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
38823
38824 this._state.absorb(data)
38825
38826 return this
38827 }
38828
38829 Shake.prototype.squeeze = function (dataByteLength, encoding) {
38830 if (!this._finalized) {
38831 this._finalized = true
38832 this._state.absorbLastFewBits(this._delimitedSuffix)
38833 }
38834
38835 var data = this._state.squeeze(dataByteLength)
38836 if (encoding !== undefined) data = data.toString(encoding)
38837
38838 return data
38839 }
38840
38841 Shake.prototype._resetState = function () {
38842 this._state.initialize(this._rate, this._capacity)
38843 return this
38844 }
38845
38846 Shake.prototype._clone = function () {
38847 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
38848 this._state.copy(clone._state)
38849 clone._finalized = this._finalized
38850
38851 return clone
38852 }
38853
38854 return Shake
38855 }
38856
38857 }).call(this,require("buffer").Buffer)
38858 },{"buffer":5,"inherits":63,"stream":25}],69:[function(require,module,exports){
38859 'use strict'
38860 var P1600_ROUND_CONSTANTS = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648]
38861
38862 exports.p1600 = function (s) {
38863 for (var round = 0; round < 24; ++round) {
38864 // theta
38865 var lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]
38866 var hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]
38867 var lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]
38868 var hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]
38869 var lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]
38870 var hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]
38871 var lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]
38872 var hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]
38873 var lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]
38874 var hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]
38875
38876 var lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)
38877 var hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)
38878 var t1slo0 = s[0] ^ lo
38879 var t1shi0 = s[1] ^ hi
38880 var t1slo5 = s[10] ^ lo
38881 var t1shi5 = s[11] ^ hi
38882 var t1slo10 = s[20] ^ lo
38883 var t1shi10 = s[21] ^ hi
38884 var t1slo15 = s[30] ^ lo
38885 var t1shi15 = s[31] ^ hi
38886 var t1slo20 = s[40] ^ lo
38887 var t1shi20 = s[41] ^ hi
38888 lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)
38889 hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)
38890 var t1slo1 = s[2] ^ lo
38891 var t1shi1 = s[3] ^ hi
38892 var t1slo6 = s[12] ^ lo
38893 var t1shi6 = s[13] ^ hi
38894 var t1slo11 = s[22] ^ lo
38895 var t1shi11 = s[23] ^ hi
38896 var t1slo16 = s[32] ^ lo
38897 var t1shi16 = s[33] ^ hi
38898 var t1slo21 = s[42] ^ lo
38899 var t1shi21 = s[43] ^ hi
38900 lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)
38901 hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)
38902 var t1slo2 = s[4] ^ lo
38903 var t1shi2 = s[5] ^ hi
38904 var t1slo7 = s[14] ^ lo
38905 var t1shi7 = s[15] ^ hi
38906 var t1slo12 = s[24] ^ lo
38907 var t1shi12 = s[25] ^ hi
38908 var t1slo17 = s[34] ^ lo
38909 var t1shi17 = s[35] ^ hi
38910 var t1slo22 = s[44] ^ lo
38911 var t1shi22 = s[45] ^ hi
38912 lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)
38913 hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)
38914 var t1slo3 = s[6] ^ lo
38915 var t1shi3 = s[7] ^ hi
38916 var t1slo8 = s[16] ^ lo
38917 var t1shi8 = s[17] ^ hi
38918 var t1slo13 = s[26] ^ lo
38919 var t1shi13 = s[27] ^ hi
38920 var t1slo18 = s[36] ^ lo
38921 var t1shi18 = s[37] ^ hi
38922 var t1slo23 = s[46] ^ lo
38923 var t1shi23 = s[47] ^ hi
38924 lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)
38925 hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)
38926 var t1slo4 = s[8] ^ lo
38927 var t1shi4 = s[9] ^ hi
38928 var t1slo9 = s[18] ^ lo
38929 var t1shi9 = s[19] ^ hi
38930 var t1slo14 = s[28] ^ lo
38931 var t1shi14 = s[29] ^ hi
38932 var t1slo19 = s[38] ^ lo
38933 var t1shi19 = s[39] ^ hi
38934 var t1slo24 = s[48] ^ lo
38935 var t1shi24 = s[49] ^ hi
38936
38937 // rho & pi
38938 var t2slo0 = t1slo0
38939 var t2shi0 = t1shi0
38940 var t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)
38941 var t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)
38942 var t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)
38943 var t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)
38944 var t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)
38945 var t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)
38946 var t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)
38947 var t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)
38948 var t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)
38949 var t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)
38950 var t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)
38951 var t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)
38952 var t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)
38953 var t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)
38954 var t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)
38955 var t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)
38956 var t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)
38957 var t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)
38958 var t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)
38959 var t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)
38960 var t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)
38961 var t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)
38962 var t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)
38963 var t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)
38964 var t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)
38965 var t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)
38966 var t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)
38967 var t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)
38968 var t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)
38969 var t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)
38970 var t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)
38971 var t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)
38972 var t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)
38973 var t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)
38974 var t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)
38975 var t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)
38976 var t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)
38977 var t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)
38978 var t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)
38979 var t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)
38980 var t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)
38981 var t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)
38982 var t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)
38983 var t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)
38984 var t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)
38985 var t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)
38986 var t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)
38987 var t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)
38988
38989 // chi
38990 s[0] = t2slo0 ^ (~t2slo1 & t2slo2)
38991 s[1] = t2shi0 ^ (~t2shi1 & t2shi2)
38992 s[10] = t2slo5 ^ (~t2slo6 & t2slo7)
38993 s[11] = t2shi5 ^ (~t2shi6 & t2shi7)
38994 s[20] = t2slo10 ^ (~t2slo11 & t2slo12)
38995 s[21] = t2shi10 ^ (~t2shi11 & t2shi12)
38996 s[30] = t2slo15 ^ (~t2slo16 & t2slo17)
38997 s[31] = t2shi15 ^ (~t2shi16 & t2shi17)
38998 s[40] = t2slo20 ^ (~t2slo21 & t2slo22)
38999 s[41] = t2shi20 ^ (~t2shi21 & t2shi22)
39000 s[2] = t2slo1 ^ (~t2slo2 & t2slo3)
39001 s[3] = t2shi1 ^ (~t2shi2 & t2shi3)
39002 s[12] = t2slo6 ^ (~t2slo7 & t2slo8)
39003 s[13] = t2shi6 ^ (~t2shi7 & t2shi8)
39004 s[22] = t2slo11 ^ (~t2slo12 & t2slo13)
39005 s[23] = t2shi11 ^ (~t2shi12 & t2shi13)
39006 s[32] = t2slo16 ^ (~t2slo17 & t2slo18)
39007 s[33] = t2shi16 ^ (~t2shi17 & t2shi18)
39008 s[42] = t2slo21 ^ (~t2slo22 & t2slo23)
39009 s[43] = t2shi21 ^ (~t2shi22 & t2shi23)
39010 s[4] = t2slo2 ^ (~t2slo3 & t2slo4)
39011 s[5] = t2shi2 ^ (~t2shi3 & t2shi4)
39012 s[14] = t2slo7 ^ (~t2slo8 & t2slo9)
39013 s[15] = t2shi7 ^ (~t2shi8 & t2shi9)
39014 s[24] = t2slo12 ^ (~t2slo13 & t2slo14)
39015 s[25] = t2shi12 ^ (~t2shi13 & t2shi14)
39016 s[34] = t2slo17 ^ (~t2slo18 & t2slo19)
39017 s[35] = t2shi17 ^ (~t2shi18 & t2shi19)
39018 s[44] = t2slo22 ^ (~t2slo23 & t2slo24)
39019 s[45] = t2shi22 ^ (~t2shi23 & t2shi24)
39020 s[6] = t2slo3 ^ (~t2slo4 & t2slo0)
39021 s[7] = t2shi3 ^ (~t2shi4 & t2shi0)
39022 s[16] = t2slo8 ^ (~t2slo9 & t2slo5)
39023 s[17] = t2shi8 ^ (~t2shi9 & t2shi5)
39024 s[26] = t2slo13 ^ (~t2slo14 & t2slo10)
39025 s[27] = t2shi13 ^ (~t2shi14 & t2shi10)
39026 s[36] = t2slo18 ^ (~t2slo19 & t2slo15)
39027 s[37] = t2shi18 ^ (~t2shi19 & t2shi15)
39028 s[46] = t2slo23 ^ (~t2slo24 & t2slo20)
39029 s[47] = t2shi23 ^ (~t2shi24 & t2shi20)
39030 s[8] = t2slo4 ^ (~t2slo0 & t2slo1)
39031 s[9] = t2shi4 ^ (~t2shi0 & t2shi1)
39032 s[18] = t2slo9 ^ (~t2slo5 & t2slo6)
39033 s[19] = t2shi9 ^ (~t2shi5 & t2shi6)
39034 s[28] = t2slo14 ^ (~t2slo10 & t2slo11)
39035 s[29] = t2shi14 ^ (~t2shi10 & t2shi11)
39036 s[38] = t2slo19 ^ (~t2slo15 & t2slo16)
39037 s[39] = t2shi19 ^ (~t2shi15 & t2shi16)
39038 s[48] = t2slo24 ^ (~t2slo20 & t2slo21)
39039 s[49] = t2shi24 ^ (~t2shi20 & t2shi21)
39040
39041 // iota
39042 s[0] ^= P1600_ROUND_CONSTANTS[round * 2]
39043 s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]
39044 }
39045 }
39046
39047 },{}],70:[function(require,module,exports){
39048 (function (Buffer){
39049 'use strict'
39050 var keccakState = require('./keccak-state-unroll')
39051
39052 function Keccak () {
39053 // much faster than `new Array(50)`
39054 this.state = [
39055 0, 0, 0, 0, 0,
39056 0, 0, 0, 0, 0,
39057 0, 0, 0, 0, 0,
39058 0, 0, 0, 0, 0,
39059 0, 0, 0, 0, 0
39060 ]
39061
39062 this.blockSize = null
39063 this.count = 0
39064 this.squeezing = false
39065 }
39066
39067 Keccak.prototype.initialize = function (rate, capacity) {
39068 for (var i = 0; i < 50; ++i) this.state[i] = 0
39069 this.blockSize = rate / 8
39070 this.count = 0
39071 this.squeezing = false
39072 }
39073
39074 Keccak.prototype.absorb = function (data) {
39075 for (var i = 0; i < data.length; ++i) {
39076 this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))
39077 this.count += 1
39078 if (this.count === this.blockSize) {
39079 keccakState.p1600(this.state)
39080 this.count = 0
39081 }
39082 }
39083 }
39084
39085 Keccak.prototype.absorbLastFewBits = function (bits) {
39086 this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))
39087 if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)
39088 this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))
39089 keccakState.p1600(this.state)
39090 this.count = 0
39091 this.squeezing = true
39092 }
39093
39094 Keccak.prototype.squeeze = function (length) {
39095 if (!this.squeezing) this.absorbLastFewBits(0x01)
39096
39097 var output = Buffer.allocUnsafe(length)
39098 for (var i = 0; i < length; ++i) {
39099 output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff
39100 this.count += 1
39101 if (this.count === this.blockSize) {
39102 keccakState.p1600(this.state)
39103 this.count = 0
39104 }
39105 }
39106
39107 return output
39108 }
39109
39110 Keccak.prototype.copy = function (dest) {
39111 for (var i = 0; i < 50; ++i) dest.state[i] = this.state[i]
39112 dest.blockSize = this.blockSize
39113 dest.count = this.count
39114 dest.squeezing = this.squeezing
39115 }
39116
39117 module.exports = Keccak
39118
39119 }).call(this,require("buffer").Buffer)
39120 },{"./keccak-state-unroll":69,"buffer":5}],71:[function(require,module,exports){
39121 (function (Buffer){
39122 /*
39123 CryptoJS v3.1.2
39124 code.google.com/p/crypto-js
39125 (c) 2009-2013 by Jeff Mott. All rights reserved.
39126 code.google.com/p/crypto-js/wiki/License
39127 */
39128 /** @preserve
39129 (c) 2012 by Cédric Mesnil. All rights reserved.
39130
39131 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
39132
39133 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
39134 - 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.
39135
39136 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.
39137 */
39138
39139 // constants table
39140 var zl = [
39141 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
39142 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
39143 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
39144 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
39145 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
39146 ]
39147
39148 var zr = [
39149 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
39150 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
39151 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
39152 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
39153 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
39154 ]
39155
39156 var sl = [
39157 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
39158 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
39159 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
39160 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
39161 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
39162 ]
39163
39164 var sr = [
39165 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
39166 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
39167 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
39168 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
39169 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
39170 ]
39171
39172 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
39173 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
39174
39175 function bytesToWords (bytes) {
39176 var words = []
39177 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
39178 words[b >>> 5] |= bytes[i] << (24 - b % 32)
39179 }
39180 return words
39181 }
39182
39183 function wordsToBytes (words) {
39184 var bytes = []
39185 for (var b = 0; b < words.length * 32; b += 8) {
39186 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
39187 }
39188 return bytes
39189 }
39190
39191 function processBlock (H, M, offset) {
39192 // swap endian
39193 for (var i = 0; i < 16; i++) {
39194 var offset_i = offset + i
39195 var M_offset_i = M[offset_i]
39196
39197 // Swap
39198 M[offset_i] = (
39199 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
39200 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
39201 )
39202 }
39203
39204 // Working variables
39205 var al, bl, cl, dl, el
39206 var ar, br, cr, dr, er
39207
39208 ar = al = H[0]
39209 br = bl = H[1]
39210 cr = cl = H[2]
39211 dr = dl = H[3]
39212 er = el = H[4]
39213
39214 // computation
39215 var t
39216 for (i = 0; i < 80; i += 1) {
39217 t = (al + M[offset + zl[i]]) | 0
39218 if (i < 16) {
39219 t += f1(bl, cl, dl) + hl[0]
39220 } else if (i < 32) {
39221 t += f2(bl, cl, dl) + hl[1]
39222 } else if (i < 48) {
39223 t += f3(bl, cl, dl) + hl[2]
39224 } else if (i < 64) {
39225 t += f4(bl, cl, dl) + hl[3]
39226 } else {// if (i<80) {
39227 t += f5(bl, cl, dl) + hl[4]
39228 }
39229 t = t | 0
39230 t = rotl(t, sl[i])
39231 t = (t + el) | 0
39232 al = el
39233 el = dl
39234 dl = rotl(cl, 10)
39235 cl = bl
39236 bl = t
39237
39238 t = (ar + M[offset + zr[i]]) | 0
39239 if (i < 16) {
39240 t += f5(br, cr, dr) + hr[0]
39241 } else if (i < 32) {
39242 t += f4(br, cr, dr) + hr[1]
39243 } else if (i < 48) {
39244 t += f3(br, cr, dr) + hr[2]
39245 } else if (i < 64) {
39246 t += f2(br, cr, dr) + hr[3]
39247 } else {// if (i<80) {
39248 t += f1(br, cr, dr) + hr[4]
39249 }
39250
39251 t = t | 0
39252 t = rotl(t, sr[i])
39253 t = (t + er) | 0
39254 ar = er
39255 er = dr
39256 dr = rotl(cr, 10)
39257 cr = br
39258 br = t
39259 }
39260
39261 // intermediate hash value
39262 t = (H[1] + cl + dr) | 0
39263 H[1] = (H[2] + dl + er) | 0
39264 H[2] = (H[3] + el + ar) | 0
39265 H[3] = (H[4] + al + br) | 0
39266 H[4] = (H[0] + bl + cr) | 0
39267 H[0] = t
39268 }
39269
39270 function f1 (x, y, z) {
39271 return ((x) ^ (y) ^ (z))
39272 }
39273
39274 function f2 (x, y, z) {
39275 return (((x) & (y)) | ((~x) & (z)))
39276 }
39277
39278 function f3 (x, y, z) {
39279 return (((x) | (~(y))) ^ (z))
39280 }
39281
39282 function f4 (x, y, z) {
39283 return (((x) & (z)) | ((y) & (~(z))))
39284 }
39285
39286 function f5 (x, y, z) {
39287 return ((x) ^ ((y) | (~(z))))
39288 }
39289
39290 function rotl (x, n) {
39291 return (x << n) | (x >>> (32 - n))
39292 }
39293
39294 function ripemd160 (message) {
39295 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
39296
39297 if (typeof message === 'string') {
39298 message = new Buffer(message, 'utf8')
39299 }
39300
39301 var m = bytesToWords(message)
39302
39303 var nBitsLeft = message.length * 8
39304 var nBitsTotal = message.length * 8
39305
39306 // Add padding
39307 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
39308 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
39309 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
39310 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
39311 )
39312
39313 for (var i = 0; i < m.length; i += 16) {
39314 processBlock(H, m, i)
39315 }
39316
39317 // swap endian
39318 for (i = 0; i < 5; i++) {
39319 // shortcut
39320 var H_i = H[i]
39321
39322 // Swap
39323 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
39324 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
39325 }
39326
39327 var digestbytes = wordsToBytes(H)
39328 return new Buffer(digestbytes)
39329 }
39330
39331 module.exports = ripemd160
39332
39333 }).call(this,require("buffer").Buffer)
39334 },{"buffer":5}],72:[function(require,module,exports){
39335 (function (Buffer){
39336 const assert = require('assert')
39337 /**
39338 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
39339 * This function takes in a data, convert it to buffer if not, and a length for recursion
39340 *
39341 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
39342 * @returns {Buffer} - returns buffer of encoded data
39343 **/
39344 exports.encode = function (input) {
39345 if (input instanceof Array) {
39346 var output = []
39347 for (var i = 0; i < input.length; i++) {
39348 output.push(exports.encode(input[i]))
39349 }
39350 var buf = Buffer.concat(output)
39351 return Buffer.concat([encodeLength(buf.length, 192), buf])
39352 } else {
39353 input = toBuffer(input)
39354 if (input.length === 1 && input[0] < 128) {
39355 return input
39356 } else {
39357 return Buffer.concat([encodeLength(input.length, 128), input])
39358 }
39359 }
39360 }
39361
39362 function safeParseInt (v, base) {
39363 if (v.slice(0, 2) === '00') {
39364 throw (new Error('invalid RLP: extra zeros'))
39365 }
39366
39367 return parseInt(v, base)
39368 }
39369
39370 function encodeLength (len, offset) {
39371 if (len < 56) {
39372 return new Buffer([len + offset])
39373 } else {
39374 var hexLength = intToHex(len)
39375 var lLength = hexLength.length / 2
39376 var firstByte = intToHex(offset + 55 + lLength)
39377 return new Buffer(firstByte + hexLength, 'hex')
39378 }
39379 }
39380
39381 /**
39382 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}
39383 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
39384 * @returns {Array} - returns decode Array of Buffers containg the original message
39385 **/
39386 exports.decode = function (input, stream) {
39387 if (!input || input.length === 0) {
39388 return new Buffer([])
39389 }
39390
39391 input = toBuffer(input)
39392 var decoded = _decode(input)
39393
39394 if (stream) {
39395 return decoded
39396 }
39397
39398 assert.equal(decoded.remainder.length, 0, 'invalid remainder')
39399 return decoded.data
39400 }
39401
39402 exports.getLength = function (input) {
39403 if (!input || input.length === 0) {
39404 return new Buffer([])
39405 }
39406
39407 input = toBuffer(input)
39408 var firstByte = input[0]
39409 if (firstByte <= 0x7f) {
39410 return input.length
39411 } else if (firstByte <= 0xb7) {
39412 return firstByte - 0x7f
39413 } else if (firstByte <= 0xbf) {
39414 return firstByte - 0xb6
39415 } else if (firstByte <= 0xf7) {
39416 // a list between 0-55 bytes long
39417 return firstByte - 0xbf
39418 } else {
39419 // a list over 55 bytes long
39420 var llength = firstByte - 0xf6
39421 var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39422 return llength + length
39423 }
39424 }
39425
39426 function _decode (input) {
39427 var length, llength, data, innerRemainder, d
39428 var decoded = []
39429 var firstByte = input[0]
39430
39431 if (firstByte <= 0x7f) {
39432 // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
39433 return {
39434 data: input.slice(0, 1),
39435 remainder: input.slice(1)
39436 }
39437 } else if (firstByte <= 0xb7) {
39438 // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string
39439 // The range of the first byte is [0x80, 0xb7]
39440 length = firstByte - 0x7f
39441
39442 // set 0x80 null to 0
39443 if (firstByte === 0x80) {
39444 data = new Buffer([])
39445 } else {
39446 data = input.slice(1, length)
39447 }
39448
39449 if (length === 2 && data[0] < 0x80) {
39450 throw new Error('invalid rlp encoding: byte must be less 0x80')
39451 }
39452
39453 return {
39454 data: data,
39455 remainder: input.slice(length)
39456 }
39457 } else if (firstByte <= 0xbf) {
39458 llength = firstByte - 0xb6
39459 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39460 data = input.slice(llength, length + llength)
39461 if (data.length < length) {
39462 throw (new Error('invalid RLP'))
39463 }
39464
39465 return {
39466 data: data,
39467 remainder: input.slice(length + llength)
39468 }
39469 } else if (firstByte <= 0xf7) {
39470 // a list between 0-55 bytes long
39471 length = firstByte - 0xbf
39472 innerRemainder = input.slice(1, length)
39473 while (innerRemainder.length) {
39474 d = _decode(innerRemainder)
39475 decoded.push(d.data)
39476 innerRemainder = d.remainder
39477 }
39478
39479 return {
39480 data: decoded,
39481 remainder: input.slice(length)
39482 }
39483 } else {
39484 // a list over 55 bytes long
39485 llength = firstByte - 0xf6
39486 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39487 var totalLength = llength + length
39488 if (totalLength > input.length) {
39489 throw new Error('invalid rlp: total length is larger than the data')
39490 }
39491
39492 innerRemainder = input.slice(llength, totalLength)
39493 if (innerRemainder.length === 0) {
39494 throw new Error('invalid rlp, List has a invalid length')
39495 }
39496
39497 while (innerRemainder.length) {
39498 d = _decode(innerRemainder)
39499 decoded.push(d.data)
39500 innerRemainder = d.remainder
39501 }
39502 return {
39503 data: decoded,
39504 remainder: input.slice(totalLength)
39505 }
39506 }
39507 }
39508
39509 function isHexPrefixed (str) {
39510 return str.slice(0, 2) === '0x'
39511 }
39512
39513 // Removes 0x from a given String
39514 function stripHexPrefix (str) {
39515 if (typeof str !== 'string') {
39516 return str
39517 }
39518 return isHexPrefixed(str) ? str.slice(2) : str
39519 }
39520
39521 function intToHex (i) {
39522 var hex = i.toString(16)
39523 if (hex.length % 2) {
39524 hex = '0' + hex
39525 }
39526
39527 return hex
39528 }
39529
39530 function padToEven (a) {
39531 if (a.length % 2) a = '0' + a
39532 return a
39533 }
39534
39535 function intToBuffer (i) {
39536 var hex = intToHex(i)
39537 return new Buffer(hex, 'hex')
39538 }
39539
39540 function toBuffer (v) {
39541 if (!Buffer.isBuffer(v)) {
39542 if (typeof v === 'string') {
39543 if (isHexPrefixed(v)) {
39544 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
39545 } else {
39546 v = new Buffer(v)
39547 }
39548 } else if (typeof v === 'number') {
39549 if (!v) {
39550 v = new Buffer([])
39551 } else {
39552 v = intToBuffer(v)
39553 }
39554 } else if (v === null || v === undefined) {
39555 v = new Buffer([])
39556 } else if (v.toArray) {
39557 // converts a BN to a Buffer
39558 v = new Buffer(v.toArray())
39559 } else {
39560 throw new Error('invalid type')
39561 }
39562 }
39563 return v
39564 }
39565
39566 }).call(this,require("buffer").Buffer)
39567 },{"assert":1,"buffer":5}],73:[function(require,module,exports){
39568 'use strict'
39569 module.exports = require('./lib')(require('./lib/elliptic'))
39570
39571 },{"./lib":77,"./lib/elliptic":76}],74:[function(require,module,exports){
39572 (function (Buffer){
39573 'use strict'
39574 var toString = Object.prototype.toString
39575
39576 // TypeError
39577 exports.isArray = function (value, message) {
39578 if (!Array.isArray(value)) throw TypeError(message)
39579 }
39580
39581 exports.isBoolean = function (value, message) {
39582 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
39583 }
39584
39585 exports.isBuffer = function (value, message) {
39586 if (!Buffer.isBuffer(value)) throw TypeError(message)
39587 }
39588
39589 exports.isFunction = function (value, message) {
39590 if (toString.call(value) !== '[object Function]') throw TypeError(message)
39591 }
39592
39593 exports.isNumber = function (value, message) {
39594 if (toString.call(value) !== '[object Number]') throw TypeError(message)
39595 }
39596
39597 exports.isObject = function (value, message) {
39598 if (toString.call(value) !== '[object Object]') throw TypeError(message)
39599 }
39600
39601 // RangeError
39602 exports.isBufferLength = function (buffer, length, message) {
39603 if (buffer.length !== length) throw RangeError(message)
39604 }
39605
39606 exports.isBufferLength2 = function (buffer, length1, length2, message) {
39607 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
39608 }
39609
39610 exports.isLengthGTZero = function (value, message) {
39611 if (value.length === 0) throw RangeError(message)
39612 }
39613
39614 exports.isNumberInInterval = function (number, x, y, message) {
39615 if (number <= x || number >= y) throw RangeError(message)
39616 }
39617
39618 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
39619 },{"../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":10}],75:[function(require,module,exports){
39620 (function (Buffer){
39621 'use strict'
39622 var bip66 = require('bip66')
39623
39624 var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
39625 // begin
39626 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,
39627 // private key
39628 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39629 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39630 // middle
39631 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
39632 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39633 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39634 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
39635 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
39636 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
39637 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39638 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
39639 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,
39640 // public key
39641 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39642 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39643 0x00
39644 ])
39645
39646 var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
39647 // begin
39648 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,
39649 // private key
39650 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39651 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39652 // middle
39653 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
39654 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39655 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39656 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
39657 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
39658 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
39659 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,
39660 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
39661 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39662 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
39663 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,
39664 // public key
39665 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39666 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39667 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39668 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39669 0x00
39670 ])
39671
39672 var ZERO_BUFFER_32 = new Buffer([
39673 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39674 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
39675 ])
39676
39677 exports.privateKeyExport = function (privateKey, publicKey, compressed) {
39678 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
39679 privateKey.copy(result, compressed ? 8 : 9)
39680 publicKey.copy(result, compressed ? 181 : 214)
39681 return result
39682 }
39683
39684 exports.privateKeyImport = function (privateKey) {
39685 var length = privateKey.length
39686
39687 // sequence header
39688 var index = 0
39689 if (length < index + 1 || privateKey[index] !== 0x30) return
39690 index += 1
39691
39692 // sequence length constructor
39693 if (length < index + 1 || !(privateKey[index] & 0x80)) return
39694
39695 var lenb = privateKey[index] & 0x7f
39696 index += 1
39697 if (lenb < 1 || lenb > 2) return
39698 if (length < index + lenb) return
39699
39700 // sequence length
39701 var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)
39702 index += lenb
39703 if (length < index + len) return
39704
39705 // sequence element 0: version number (=1)
39706 if (length < index + 3 ||
39707 privateKey[index] !== 0x02 ||
39708 privateKey[index + 1] !== 0x01 ||
39709 privateKey[index + 2] !== 0x01) {
39710 return
39711 }
39712 index += 3
39713
39714 // sequence element 1: octet string, up to 32 bytes
39715 if (length < index + 2 ||
39716 privateKey[index] !== 0x04 ||
39717 privateKey[index + 1] > 0x20 ||
39718 length < index + 2 + privateKey[index + 1]) {
39719 return
39720 }
39721
39722 return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])
39723 }
39724
39725 exports.signatureExport = function (sigObj) {
39726 var r = Buffer.concat([new Buffer([0]), sigObj.r])
39727 for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);
39728
39729 var s = Buffer.concat([new Buffer([0]), sigObj.s])
39730 for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);
39731
39732 return bip66.encode(r.slice(posR), s.slice(posS))
39733 }
39734
39735 exports.signatureImport = function (sig) {
39736 var r = new Buffer(ZERO_BUFFER_32)
39737 var s = new Buffer(ZERO_BUFFER_32)
39738
39739 try {
39740 var sigObj = bip66.decode(sig)
39741 if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)
39742 if (sigObj.r.length > 32) throw new Error('R length is too long')
39743 if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)
39744 if (sigObj.s.length > 32) throw new Error('S length is too long')
39745 } catch (err) {
39746 return
39747 }
39748
39749 sigObj.r.copy(r, 32 - sigObj.r.length)
39750 sigObj.s.copy(s, 32 - sigObj.s.length)
39751
39752 return { r: r, s: s }
39753 }
39754
39755 exports.signatureImportLax = function (sig) {
39756 var r = new Buffer(ZERO_BUFFER_32)
39757 var s = new Buffer(ZERO_BUFFER_32)
39758
39759 var length = sig.length
39760 var index = 0
39761
39762 // sequence tag byte
39763 if (sig[index++] !== 0x30) return
39764
39765 // sequence length byte
39766 var lenbyte = sig[index++]
39767 if (lenbyte & 0x80) {
39768 index += lenbyte - 0x80
39769 if (index > length) return
39770 }
39771
39772 // sequence tag byte for r
39773 if (sig[index++] !== 0x02) return
39774
39775 // length for r
39776 var rlen = sig[index++]
39777 if (rlen & 0x80) {
39778 lenbyte = rlen - 0x80
39779 if (index + lenbyte > length) return
39780 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
39781 for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]
39782 }
39783 if (rlen > length - index) return
39784 var rindex = index
39785 index += rlen
39786
39787 // sequence tag byte for s
39788 if (sig[index++] !== 0x02) return
39789
39790 // length for s
39791 var slen = sig[index++]
39792 if (slen & 0x80) {
39793 lenbyte = slen - 0x80
39794 if (index + lenbyte > length) return
39795 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
39796 for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]
39797 }
39798 if (slen > length - index) return
39799 var sindex = index
39800 index += slen
39801
39802 // ignore leading zeros in r
39803 for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);
39804 // copy r value
39805 if (rlen > 32) return
39806 var rvalue = sig.slice(rindex, rindex + rlen)
39807 rvalue.copy(r, 32 - rvalue.length)
39808
39809 // ignore leading zeros in s
39810 for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);
39811 // copy s value
39812 if (slen > 32) return
39813 var svalue = sig.slice(sindex, sindex + slen)
39814 svalue.copy(s, 32 - svalue.length)
39815
39816 return { r: r, s: s }
39817 }
39818
39819 }).call(this,require("buffer").Buffer)
39820 },{"bip66":32,"buffer":5}],76:[function(require,module,exports){
39821 (function (Buffer){
39822 'use strict'
39823 var createHash = require('create-hash')
39824 var BN = require('bn.js')
39825 var EC = require('elliptic').ec
39826
39827 var messages = require('../messages.json')
39828
39829 var ec = new EC('secp256k1')
39830 var ecparams = ec.curve
39831
39832 function loadCompressedPublicKey (first, xBuffer) {
39833 var x = new BN(xBuffer)
39834
39835 // overflow
39836 if (x.cmp(ecparams.p) >= 0) return null
39837 x = x.toRed(ecparams.red)
39838
39839 // compute corresponding Y
39840 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
39841 if ((first === 0x03) !== y.isOdd()) y = y.redNeg()
39842
39843 return ec.keyPair({ pub: { x: x, y: y } })
39844 }
39845
39846 function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
39847 var x = new BN(xBuffer)
39848 var y = new BN(yBuffer)
39849
39850 // overflow
39851 if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null
39852
39853 x = x.toRed(ecparams.red)
39854 y = y.toRed(ecparams.red)
39855
39856 // is odd flag
39857 if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null
39858
39859 // x*x*x + b = y*y
39860 var x3 = x.redSqr().redIMul(x)
39861 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
39862
39863 return ec.keyPair({ pub: { x: x, y: y } })
39864 }
39865
39866 function loadPublicKey (publicKey) {
39867 var first = publicKey[0]
39868 switch (first) {
39869 case 0x02:
39870 case 0x03:
39871 if (publicKey.length !== 33) return null
39872 return loadCompressedPublicKey(first, publicKey.slice(1, 33))
39873 case 0x04:
39874 case 0x06:
39875 case 0x07:
39876 if (publicKey.length !== 65) return null
39877 return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))
39878 default:
39879 return null
39880 }
39881 }
39882
39883 exports.privateKeyVerify = function (privateKey) {
39884 var bn = new BN(privateKey)
39885 return bn.cmp(ecparams.n) < 0 && !bn.isZero()
39886 }
39887
39888 exports.privateKeyExport = function (privateKey, compressed) {
39889 var d = new BN(privateKey)
39890 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
39891
39892 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
39893 }
39894
39895 exports.privateKeyTweakAdd = function (privateKey, tweak) {
39896 var bn = new BN(tweak)
39897 if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
39898
39899 bn.iadd(new BN(privateKey))
39900 if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)
39901 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
39902
39903 return bn.toArrayLike(Buffer, 'be', 32)
39904 }
39905
39906 exports.privateKeyTweakMul = function (privateKey, tweak) {
39907 var bn = new BN(tweak)
39908 if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
39909
39910 bn.imul(new BN(privateKey))
39911 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
39912
39913 return bn.toArrayLike(Buffer, 'be', 32)
39914 }
39915
39916 exports.publicKeyCreate = function (privateKey, compressed) {
39917 var d = new BN(privateKey)
39918 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
39919
39920 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
39921 }
39922
39923 exports.publicKeyConvert = function (publicKey, compressed) {
39924 var pair = loadPublicKey(publicKey)
39925 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39926
39927 return new Buffer(pair.getPublic(compressed, true))
39928 }
39929
39930 exports.publicKeyVerify = function (publicKey) {
39931 return loadPublicKey(publicKey) !== null
39932 }
39933
39934 exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
39935 var pair = loadPublicKey(publicKey)
39936 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39937
39938 tweak = new BN(tweak)
39939 if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
39940
39941 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
39942 }
39943
39944 exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
39945 var pair = loadPublicKey(publicKey)
39946 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39947
39948 tweak = new BN(tweak)
39949 if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
39950
39951 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
39952 }
39953
39954 exports.publicKeyCombine = function (publicKeys, compressed) {
39955 var pairs = new Array(publicKeys.length)
39956 for (var i = 0; i < publicKeys.length; ++i) {
39957 pairs[i] = loadPublicKey(publicKeys[i])
39958 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39959 }
39960
39961 var point = pairs[0].pub
39962 for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
39963 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
39964
39965 return new Buffer(point.encode(true, compressed))
39966 }
39967
39968 exports.signatureNormalize = function (signature) {
39969 var r = new BN(signature.slice(0, 32))
39970 var s = new BN(signature.slice(32, 64))
39971 if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39972
39973 var result = new Buffer(signature)
39974 if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)
39975
39976 return result
39977 }
39978
39979 exports.signatureExport = function (signature) {
39980 var r = signature.slice(0, 32)
39981 var s = signature.slice(32, 64)
39982 if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39983
39984 return { r: r, s: s }
39985 }
39986
39987 exports.signatureImport = function (sigObj) {
39988 var r = new BN(sigObj.r)
39989 if (r.cmp(ecparams.n) >= 0) r = new BN(0)
39990
39991 var s = new BN(sigObj.s)
39992 if (s.cmp(ecparams.n) >= 0) s = new BN(0)
39993
39994 return Buffer.concat([
39995 r.toArrayLike(Buffer, 'be', 32),
39996 s.toArrayLike(Buffer, 'be', 32)
39997 ])
39998 }
39999
40000 exports.sign = function (message, privateKey, noncefn, data) {
40001 if (typeof noncefn === 'function') {
40002 var getNonce = noncefn
40003 noncefn = function (counter) {
40004 var nonce = getNonce(message, privateKey, null, data, counter)
40005 if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)
40006
40007 return new BN(nonce)
40008 }
40009 }
40010
40011 var d = new BN(privateKey)
40012 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
40013
40014 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
40015 return {
40016 signature: Buffer.concat([
40017 result.r.toArrayLike(Buffer, 'be', 32),
40018 result.s.toArrayLike(Buffer, 'be', 32)
40019 ]),
40020 recovery: result.recoveryParam
40021 }
40022 }
40023
40024 exports.verify = function (message, signature, publicKey) {
40025 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
40026
40027 var sigr = new BN(sigObj.r)
40028 var sigs = new BN(sigObj.s)
40029 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
40030 if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false
40031
40032 var pair = loadPublicKey(publicKey)
40033 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
40034
40035 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
40036 }
40037
40038 exports.recover = function (message, signature, recovery, compressed) {
40039 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
40040
40041 var sigr = new BN(sigObj.r)
40042 var sigs = new BN(sigObj.s)
40043 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
40044
40045 try {
40046 if (sigr.isZero() || sigs.isZero()) throw new Error()
40047
40048 var point = ec.recoverPubKey(message, sigObj, recovery)
40049 return new Buffer(point.encode(true, compressed))
40050 } catch (err) {
40051 throw new Error(messages.ECDSA_RECOVER_FAIL)
40052 }
40053 }
40054
40055 exports.ecdh = function (publicKey, privateKey) {
40056 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
40057 return createHash('sha256').update(shared).digest()
40058 }
40059
40060 exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
40061 var pair = loadPublicKey(publicKey)
40062 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
40063
40064 var scalar = new BN(privateKey)
40065 if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
40066
40067 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
40068 }
40069
40070 }).call(this,require("buffer").Buffer)
40071 },{"../messages.json":78,"bn.js":33,"buffer":5,"create-hash":36,"elliptic":39}],77:[function(require,module,exports){
40072 'use strict'
40073 var assert = require('./assert')
40074 var der = require('./der')
40075 var messages = require('./messages.json')
40076
40077 function initCompressedValue (value, defaultValue) {
40078 if (value === undefined) return defaultValue
40079
40080 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
40081 return value
40082 }
40083
40084 module.exports = function (secp256k1) {
40085 return {
40086 privateKeyVerify: function (privateKey) {
40087 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40088 return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)
40089 },
40090
40091 privateKeyExport: function (privateKey, compressed) {
40092 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40093 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40094
40095 compressed = initCompressedValue(compressed, true)
40096 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
40097
40098 return der.privateKeyExport(privateKey, publicKey, compressed)
40099 },
40100
40101 privateKeyImport: function (privateKey) {
40102 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40103
40104 privateKey = der.privateKeyImport(privateKey)
40105 if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
40106
40107 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
40108 },
40109
40110 privateKeyTweakAdd: function (privateKey, tweak) {
40111 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40112 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40113
40114 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40115 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40116
40117 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
40118 },
40119
40120 privateKeyTweakMul: function (privateKey, tweak) {
40121 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40122 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40123
40124 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40125 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40126
40127 return secp256k1.privateKeyTweakMul(privateKey, tweak)
40128 },
40129
40130 publicKeyCreate: function (privateKey, compressed) {
40131 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40132 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40133
40134 compressed = initCompressedValue(compressed, true)
40135
40136 return secp256k1.publicKeyCreate(privateKey, compressed)
40137 },
40138
40139 publicKeyConvert: function (publicKey, compressed) {
40140 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40141 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40142
40143 compressed = initCompressedValue(compressed, true)
40144
40145 return secp256k1.publicKeyConvert(publicKey, compressed)
40146 },
40147
40148 publicKeyVerify: function (publicKey) {
40149 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40150 return secp256k1.publicKeyVerify(publicKey)
40151 },
40152
40153 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
40154 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40155 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40156
40157 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40158 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40159
40160 compressed = initCompressedValue(compressed, true)
40161
40162 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
40163 },
40164
40165 publicKeyTweakMul: function (publicKey, tweak, compressed) {
40166 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40167 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40168
40169 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40170 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40171
40172 compressed = initCompressedValue(compressed, true)
40173
40174 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
40175 },
40176
40177 publicKeyCombine: function (publicKeys, compressed) {
40178 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
40179 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
40180 for (var i = 0; i < publicKeys.length; ++i) {
40181 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
40182 assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40183 }
40184
40185 compressed = initCompressedValue(compressed, true)
40186
40187 return secp256k1.publicKeyCombine(publicKeys, compressed)
40188 },
40189
40190 signatureNormalize: function (signature) {
40191 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40192 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40193
40194 return secp256k1.signatureNormalize(signature)
40195 },
40196
40197 signatureExport: function (signature) {
40198 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40199 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40200
40201 var sigObj = secp256k1.signatureExport(signature)
40202 return der.signatureExport(sigObj)
40203 },
40204
40205 signatureImport: function (sig) {
40206 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40207 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40208
40209 var sigObj = der.signatureImport(sig)
40210 if (sigObj) return secp256k1.signatureImport(sigObj)
40211
40212 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
40213 },
40214
40215 signatureImportLax: function (sig) {
40216 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40217 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40218
40219 var sigObj = der.signatureImportLax(sig)
40220 if (sigObj) return secp256k1.signatureImport(sigObj)
40221
40222 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
40223 },
40224
40225 sign: function (message, privateKey, options) {
40226 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40227 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40228
40229 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40230 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40231
40232 var data = null
40233 var noncefn = null
40234 if (options !== undefined) {
40235 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
40236
40237 if (options.data !== undefined) {
40238 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
40239 assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)
40240 data = options.data
40241 }
40242
40243 if (options.noncefn !== undefined) {
40244 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
40245 noncefn = options.noncefn
40246 }
40247 }
40248
40249 return secp256k1.sign(message, privateKey, noncefn, data)
40250 },
40251
40252 verify: function (message, signature, publicKey) {
40253 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40254 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40255
40256 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40257 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40258
40259 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40260 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40261
40262 return secp256k1.verify(message, signature, publicKey)
40263 },
40264
40265 recover: function (message, signature, recovery, compressed) {
40266 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40267 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40268
40269 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40270 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40271
40272 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
40273 assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)
40274
40275 compressed = initCompressedValue(compressed, true)
40276
40277 return secp256k1.recover(message, signature, recovery, compressed)
40278 },
40279
40280 ecdh: function (publicKey, privateKey) {
40281 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40282 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40283
40284 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40285 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40286
40287 return secp256k1.ecdh(publicKey, privateKey)
40288 },
40289
40290 ecdhUnsafe: function (publicKey, privateKey, compressed) {
40291 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40292 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40293
40294 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40295 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40296
40297 compressed = initCompressedValue(compressed, true)
40298
40299 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
40300 }
40301 }
40302 }
40303
40304 },{"./assert":74,"./der":75,"./messages.json":78}],78:[function(require,module,exports){
40305 module.exports={
40306 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
40307 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
40308 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
40309 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
40310 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
40311 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
40312 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
40313 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
40314 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least 1 element",
40315 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
40316 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
40317 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
40318 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
40319 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
40320 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
40321 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
40322 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
40323 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
40324 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
40325 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
40326 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
40327 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
40328 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
40329 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
40330 "MSG32_TYPE_INVALID": "message should be a Buffer",
40331 "MSG32_LENGTH_INVALID": "message length is invalid",
40332 "OPTIONS_TYPE_INVALID": "options should be an Object",
40333 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
40334 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
40335 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
40336 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
40337 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -1 and 4",
40338 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
40339 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
40340 }
40341
40342 },{}],79:[function(require,module,exports){
40343 (function (Buffer){
40344 // prototype class for hash functions
40345 function Hash (blockSize, finalSize) {
40346 this._block = new Buffer(blockSize)
40347 this._finalSize = finalSize
40348 this._blockSize = blockSize
40349 this._len = 0
40350 this._s = 0
40351 }
40352
40353 Hash.prototype.update = function (data, enc) {
40354 if (typeof data === 'string') {
40355 enc = enc || 'utf8'
40356 data = new Buffer(data, enc)
40357 }
40358
40359 var l = this._len += data.length
40360 var s = this._s || 0
40361 var f = 0
40362 var buffer = this._block
40363
40364 while (s < l) {
40365 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
40366 var ch = (t - f)
40367
40368 for (var i = 0; i < ch; i++) {
40369 buffer[(s % this._blockSize) + i] = data[i + f]
40370 }
40371
40372 s += ch
40373 f += ch
40374
40375 if ((s % this._blockSize) === 0) {
40376 this._update(buffer)
40377 }
40378 }
40379 this._s = s
40380
40381 return this
40382 }
40383
40384 Hash.prototype.digest = function (enc) {
40385 // Suppose the length of the message M, in bits, is l
40386 var l = this._len * 8
40387
40388 // Append the bit 1 to the end of the message
40389 this._block[this._len % this._blockSize] = 0x80
40390
40391 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
40392 this._block.fill(0, this._len % this._blockSize + 1)
40393
40394 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
40395 this._update(this._block)
40396 this._block.fill(0)
40397 }
40398
40399 // to this append the block which is equal to the number l written in binary
40400 // TODO: handle case where l is > Math.pow(2, 29)
40401 this._block.writeInt32BE(l, this._blockSize - 4)
40402
40403 var hash = this._update(this._block) || this._hash()
40404
40405 return enc ? hash.toString(enc) : hash
40406 }
40407
40408 Hash.prototype._update = function () {
40409 throw new Error('_update must be implemented by subclass')
40410 }
40411
40412 module.exports = Hash
40413
40414 }).call(this,require("buffer").Buffer)
40415 },{"buffer":5}],80:[function(require,module,exports){
40416 var exports = module.exports = function SHA (algorithm) {
40417 algorithm = algorithm.toLowerCase()
40418
40419 var Algorithm = exports[algorithm]
40420 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
40421
40422 return new Algorithm()
40423 }
40424
40425 exports.sha = require('./sha')
40426 exports.sha1 = require('./sha1')
40427 exports.sha224 = require('./sha224')
40428 exports.sha256 = require('./sha256')
40429 exports.sha384 = require('./sha384')
40430 exports.sha512 = require('./sha512')
40431
40432 },{"./sha":81,"./sha1":82,"./sha224":83,"./sha256":84,"./sha384":85,"./sha512":86}],81:[function(require,module,exports){
40433 (function (Buffer){
40434 /*
40435 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
40436 * in FIPS PUB 180-1
40437 * This source code is derived from sha1.js of the same repository.
40438 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
40439 * operation was added.
40440 */
40441
40442 var inherits = require('inherits')
40443 var Hash = require('./hash')
40444
40445 var K = [
40446 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
40447 ]
40448
40449 var W = new Array(80)
40450
40451 function Sha () {
40452 this.init()
40453 this._w = W
40454
40455 Hash.call(this, 64, 56)
40456 }
40457
40458 inherits(Sha, Hash)
40459
40460 Sha.prototype.init = function () {
40461 this._a = 0x67452301
40462 this._b = 0xefcdab89
40463 this._c = 0x98badcfe
40464 this._d = 0x10325476
40465 this._e = 0xc3d2e1f0
40466
40467 return this
40468 }
40469
40470 function rotl5 (num) {
40471 return (num << 5) | (num >>> 27)
40472 }
40473
40474 function rotl30 (num) {
40475 return (num << 30) | (num >>> 2)
40476 }
40477
40478 function ft (s, b, c, d) {
40479 if (s === 0) return (b & c) | ((~b) & d)
40480 if (s === 2) return (b & c) | (b & d) | (c & d)
40481 return b ^ c ^ d
40482 }
40483
40484 Sha.prototype._update = function (M) {
40485 var W = this._w
40486
40487 var a = this._a | 0
40488 var b = this._b | 0
40489 var c = this._c | 0
40490 var d = this._d | 0
40491 var e = this._e | 0
40492
40493 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40494 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
40495
40496 for (var j = 0; j < 80; ++j) {
40497 var s = ~~(j / 20)
40498 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
40499
40500 e = d
40501 d = c
40502 c = rotl30(b)
40503 b = a
40504 a = t
40505 }
40506
40507 this._a = (a + this._a) | 0
40508 this._b = (b + this._b) | 0
40509 this._c = (c + this._c) | 0
40510 this._d = (d + this._d) | 0
40511 this._e = (e + this._e) | 0
40512 }
40513
40514 Sha.prototype._hash = function () {
40515 var H = new Buffer(20)
40516
40517 H.writeInt32BE(this._a | 0, 0)
40518 H.writeInt32BE(this._b | 0, 4)
40519 H.writeInt32BE(this._c | 0, 8)
40520 H.writeInt32BE(this._d | 0, 12)
40521 H.writeInt32BE(this._e | 0, 16)
40522
40523 return H
40524 }
40525
40526 module.exports = Sha
40527
40528 }).call(this,require("buffer").Buffer)
40529 },{"./hash":79,"buffer":5,"inherits":63}],82:[function(require,module,exports){
40530 (function (Buffer){
40531 /*
40532 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
40533 * in FIPS PUB 180-1
40534 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
40535 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40536 * Distributed under the BSD License
40537 * See http://pajhome.org.uk/crypt/md5 for details.
40538 */
40539
40540 var inherits = require('inherits')
40541 var Hash = require('./hash')
40542
40543 var K = [
40544 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
40545 ]
40546
40547 var W = new Array(80)
40548
40549 function Sha1 () {
40550 this.init()
40551 this._w = W
40552
40553 Hash.call(this, 64, 56)
40554 }
40555
40556 inherits(Sha1, Hash)
40557
40558 Sha1.prototype.init = function () {
40559 this._a = 0x67452301
40560 this._b = 0xefcdab89
40561 this._c = 0x98badcfe
40562 this._d = 0x10325476
40563 this._e = 0xc3d2e1f0
40564
40565 return this
40566 }
40567
40568 function rotl1 (num) {
40569 return (num << 1) | (num >>> 31)
40570 }
40571
40572 function rotl5 (num) {
40573 return (num << 5) | (num >>> 27)
40574 }
40575
40576 function rotl30 (num) {
40577 return (num << 30) | (num >>> 2)
40578 }
40579
40580 function ft (s, b, c, d) {
40581 if (s === 0) return (b & c) | ((~b) & d)
40582 if (s === 2) return (b & c) | (b & d) | (c & d)
40583 return b ^ c ^ d
40584 }
40585
40586 Sha1.prototype._update = function (M) {
40587 var W = this._w
40588
40589 var a = this._a | 0
40590 var b = this._b | 0
40591 var c = this._c | 0
40592 var d = this._d | 0
40593 var e = this._e | 0
40594
40595 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40596 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
40597
40598 for (var j = 0; j < 80; ++j) {
40599 var s = ~~(j / 20)
40600 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
40601
40602 e = d
40603 d = c
40604 c = rotl30(b)
40605 b = a
40606 a = t
40607 }
40608
40609 this._a = (a + this._a) | 0
40610 this._b = (b + this._b) | 0
40611 this._c = (c + this._c) | 0
40612 this._d = (d + this._d) | 0
40613 this._e = (e + this._e) | 0
40614 }
40615
40616 Sha1.prototype._hash = function () {
40617 var H = new Buffer(20)
40618
40619 H.writeInt32BE(this._a | 0, 0)
40620 H.writeInt32BE(this._b | 0, 4)
40621 H.writeInt32BE(this._c | 0, 8)
40622 H.writeInt32BE(this._d | 0, 12)
40623 H.writeInt32BE(this._e | 0, 16)
40624
40625 return H
40626 }
40627
40628 module.exports = Sha1
40629
40630 }).call(this,require("buffer").Buffer)
40631 },{"./hash":79,"buffer":5,"inherits":63}],83:[function(require,module,exports){
40632 (function (Buffer){
40633 /**
40634 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
40635 * in FIPS 180-2
40636 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
40637 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40638 *
40639 */
40640
40641 var inherits = require('inherits')
40642 var Sha256 = require('./sha256')
40643 var Hash = require('./hash')
40644
40645 var W = new Array(64)
40646
40647 function Sha224 () {
40648 this.init()
40649
40650 this._w = W // new Array(64)
40651
40652 Hash.call(this, 64, 56)
40653 }
40654
40655 inherits(Sha224, Sha256)
40656
40657 Sha224.prototype.init = function () {
40658 this._a = 0xc1059ed8
40659 this._b = 0x367cd507
40660 this._c = 0x3070dd17
40661 this._d = 0xf70e5939
40662 this._e = 0xffc00b31
40663 this._f = 0x68581511
40664 this._g = 0x64f98fa7
40665 this._h = 0xbefa4fa4
40666
40667 return this
40668 }
40669
40670 Sha224.prototype._hash = function () {
40671 var H = new Buffer(28)
40672
40673 H.writeInt32BE(this._a, 0)
40674 H.writeInt32BE(this._b, 4)
40675 H.writeInt32BE(this._c, 8)
40676 H.writeInt32BE(this._d, 12)
40677 H.writeInt32BE(this._e, 16)
40678 H.writeInt32BE(this._f, 20)
40679 H.writeInt32BE(this._g, 24)
40680
40681 return H
40682 }
40683
40684 module.exports = Sha224
40685
40686 }).call(this,require("buffer").Buffer)
40687 },{"./hash":79,"./sha256":84,"buffer":5,"inherits":63}],84:[function(require,module,exports){
40688 (function (Buffer){
40689 /**
40690 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
40691 * in FIPS 180-2
40692 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
40693 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40694 *
40695 */
40696
40697 var inherits = require('inherits')
40698 var Hash = require('./hash')
40699
40700 var K = [
40701 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
40702 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
40703 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
40704 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
40705 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
40706 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
40707 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
40708 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
40709 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
40710 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
40711 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
40712 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
40713 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
40714 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
40715 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
40716 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
40717 ]
40718
40719 var W = new Array(64)
40720
40721 function Sha256 () {
40722 this.init()
40723
40724 this._w = W // new Array(64)
40725
40726 Hash.call(this, 64, 56)
40727 }
40728
40729 inherits(Sha256, Hash)
40730
40731 Sha256.prototype.init = function () {
40732 this._a = 0x6a09e667
40733 this._b = 0xbb67ae85
40734 this._c = 0x3c6ef372
40735 this._d = 0xa54ff53a
40736 this._e = 0x510e527f
40737 this._f = 0x9b05688c
40738 this._g = 0x1f83d9ab
40739 this._h = 0x5be0cd19
40740
40741 return this
40742 }
40743
40744 function ch (x, y, z) {
40745 return z ^ (x & (y ^ z))
40746 }
40747
40748 function maj (x, y, z) {
40749 return (x & y) | (z & (x | y))
40750 }
40751
40752 function sigma0 (x) {
40753 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
40754 }
40755
40756 function sigma1 (x) {
40757 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
40758 }
40759
40760 function gamma0 (x) {
40761 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
40762 }
40763
40764 function gamma1 (x) {
40765 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
40766 }
40767
40768 Sha256.prototype._update = function (M) {
40769 var W = this._w
40770
40771 var a = this._a | 0
40772 var b = this._b | 0
40773 var c = this._c | 0
40774 var d = this._d | 0
40775 var e = this._e | 0
40776 var f = this._f | 0
40777 var g = this._g | 0
40778 var h = this._h | 0
40779
40780 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40781 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
40782
40783 for (var j = 0; j < 64; ++j) {
40784 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
40785 var T2 = (sigma0(a) + maj(a, b, c)) | 0
40786
40787 h = g
40788 g = f
40789 f = e
40790 e = (d + T1) | 0
40791 d = c
40792 c = b
40793 b = a
40794 a = (T1 + T2) | 0
40795 }
40796
40797 this._a = (a + this._a) | 0
40798 this._b = (b + this._b) | 0
40799 this._c = (c + this._c) | 0
40800 this._d = (d + this._d) | 0
40801 this._e = (e + this._e) | 0
40802 this._f = (f + this._f) | 0
40803 this._g = (g + this._g) | 0
40804 this._h = (h + this._h) | 0
40805 }
40806
40807 Sha256.prototype._hash = function () {
40808 var H = new Buffer(32)
40809
40810 H.writeInt32BE(this._a, 0)
40811 H.writeInt32BE(this._b, 4)
40812 H.writeInt32BE(this._c, 8)
40813 H.writeInt32BE(this._d, 12)
40814 H.writeInt32BE(this._e, 16)
40815 H.writeInt32BE(this._f, 20)
40816 H.writeInt32BE(this._g, 24)
40817 H.writeInt32BE(this._h, 28)
40818
40819 return H
40820 }
40821
40822 module.exports = Sha256
40823
40824 }).call(this,require("buffer").Buffer)
40825 },{"./hash":79,"buffer":5,"inherits":63}],85:[function(require,module,exports){
40826 (function (Buffer){
40827 var inherits = require('inherits')
40828 var SHA512 = require('./sha512')
40829 var Hash = require('./hash')
40830
40831 var W = new Array(160)
40832
40833 function Sha384 () {
40834 this.init()
40835 this._w = W
40836
40837 Hash.call(this, 128, 112)
40838 }
40839
40840 inherits(Sha384, SHA512)
40841
40842 Sha384.prototype.init = function () {
40843 this._ah = 0xcbbb9d5d
40844 this._bh = 0x629a292a
40845 this._ch = 0x9159015a
40846 this._dh = 0x152fecd8
40847 this._eh = 0x67332667
40848 this._fh = 0x8eb44a87
40849 this._gh = 0xdb0c2e0d
40850 this._hh = 0x47b5481d
40851
40852 this._al = 0xc1059ed8
40853 this._bl = 0x367cd507
40854 this._cl = 0x3070dd17
40855 this._dl = 0xf70e5939
40856 this._el = 0xffc00b31
40857 this._fl = 0x68581511
40858 this._gl = 0x64f98fa7
40859 this._hl = 0xbefa4fa4
40860
40861 return this
40862 }
40863
40864 Sha384.prototype._hash = function () {
40865 var H = new Buffer(48)
40866
40867 function writeInt64BE (h, l, offset) {
40868 H.writeInt32BE(h, offset)
40869 H.writeInt32BE(l, offset + 4)
40870 }
40871
40872 writeInt64BE(this._ah, this._al, 0)
40873 writeInt64BE(this._bh, this._bl, 8)
40874 writeInt64BE(this._ch, this._cl, 16)
40875 writeInt64BE(this._dh, this._dl, 24)
40876 writeInt64BE(this._eh, this._el, 32)
40877 writeInt64BE(this._fh, this._fl, 40)
40878
40879 return H
40880 }
40881
40882 module.exports = Sha384
40883
40884 }).call(this,require("buffer").Buffer)
40885 },{"./hash":79,"./sha512":86,"buffer":5,"inherits":63}],86:[function(require,module,exports){
40886 (function (Buffer){
40887 var inherits = require('inherits')
40888 var Hash = require('./hash')
40889
40890 var K = [
40891 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
40892 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
40893 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
40894 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
40895 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
40896 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
40897 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
40898 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
40899 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
40900 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
40901 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
40902 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
40903 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
40904 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
40905 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
40906 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
40907 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
40908 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
40909 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
40910 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
40911 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
40912 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
40913 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
40914 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
40915 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
40916 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
40917 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
40918 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
40919 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
40920 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
40921 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
40922 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
40923 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
40924 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
40925 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
40926 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
40927 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
40928 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
40929 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
40930 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
40931 ]
40932
40933 var W = new Array(160)
40934
40935 function Sha512 () {
40936 this.init()
40937 this._w = W
40938
40939 Hash.call(this, 128, 112)
40940 }
40941
40942 inherits(Sha512, Hash)
40943
40944 Sha512.prototype.init = function () {
40945 this._ah = 0x6a09e667
40946 this._bh = 0xbb67ae85
40947 this._ch = 0x3c6ef372
40948 this._dh = 0xa54ff53a
40949 this._eh = 0x510e527f
40950 this._fh = 0x9b05688c
40951 this._gh = 0x1f83d9ab
40952 this._hh = 0x5be0cd19
40953
40954 this._al = 0xf3bcc908
40955 this._bl = 0x84caa73b
40956 this._cl = 0xfe94f82b
40957 this._dl = 0x5f1d36f1
40958 this._el = 0xade682d1
40959 this._fl = 0x2b3e6c1f
40960 this._gl = 0xfb41bd6b
40961 this._hl = 0x137e2179
40962
40963 return this
40964 }
40965
40966 function Ch (x, y, z) {
40967 return z ^ (x & (y ^ z))
40968 }
40969
40970 function maj (x, y, z) {
40971 return (x & y) | (z & (x | y))
40972 }
40973
40974 function sigma0 (x, xl) {
40975 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
40976 }
40977
40978 function sigma1 (x, xl) {
40979 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
40980 }
40981
40982 function Gamma0 (x, xl) {
40983 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
40984 }
40985
40986 function Gamma0l (x, xl) {
40987 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
40988 }
40989
40990 function Gamma1 (x, xl) {
40991 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
40992 }
40993
40994 function Gamma1l (x, xl) {
40995 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
40996 }
40997
40998 function getCarry (a, b) {
40999 return (a >>> 0) < (b >>> 0) ? 1 : 0
41000 }
41001
41002 Sha512.prototype._update = function (M) {
41003 var W = this._w
41004
41005 var ah = this._ah | 0
41006 var bh = this._bh | 0
41007 var ch = this._ch | 0
41008 var dh = this._dh | 0
41009 var eh = this._eh | 0
41010 var fh = this._fh | 0
41011 var gh = this._gh | 0
41012 var hh = this._hh | 0
41013
41014 var al = this._al | 0
41015 var bl = this._bl | 0
41016 var cl = this._cl | 0
41017 var dl = this._dl | 0
41018 var el = this._el | 0
41019 var fl = this._fl | 0
41020 var gl = this._gl | 0
41021 var hl = this._hl | 0
41022
41023 for (var i = 0; i < 32; i += 2) {
41024 W[i] = M.readInt32BE(i * 4)
41025 W[i + 1] = M.readInt32BE(i * 4 + 4)
41026 }
41027 for (; i < 160; i += 2) {
41028 var xh = W[i - 15 * 2]
41029 var xl = W[i - 15 * 2 + 1]
41030 var gamma0 = Gamma0(xh, xl)
41031 var gamma0l = Gamma0l(xl, xh)
41032
41033 xh = W[i - 2 * 2]
41034 xl = W[i - 2 * 2 + 1]
41035 var gamma1 = Gamma1(xh, xl)
41036 var gamma1l = Gamma1l(xl, xh)
41037
41038 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
41039 var Wi7h = W[i - 7 * 2]
41040 var Wi7l = W[i - 7 * 2 + 1]
41041
41042 var Wi16h = W[i - 16 * 2]
41043 var Wi16l = W[i - 16 * 2 + 1]
41044
41045 var Wil = (gamma0l + Wi7l) | 0
41046 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
41047 Wil = (Wil + gamma1l) | 0
41048 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
41049 Wil = (Wil + Wi16l) | 0
41050 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
41051
41052 W[i] = Wih
41053 W[i + 1] = Wil
41054 }
41055
41056 for (var j = 0; j < 160; j += 2) {
41057 Wih = W[j]
41058 Wil = W[j + 1]
41059
41060 var majh = maj(ah, bh, ch)
41061 var majl = maj(al, bl, cl)
41062
41063 var sigma0h = sigma0(ah, al)
41064 var sigma0l = sigma0(al, ah)
41065 var sigma1h = sigma1(eh, el)
41066 var sigma1l = sigma1(el, eh)
41067
41068 // t1 = h + sigma1 + ch + K[j] + W[j]
41069 var Kih = K[j]
41070 var Kil = K[j + 1]
41071
41072 var chh = Ch(eh, fh, gh)
41073 var chl = Ch(el, fl, gl)
41074
41075 var t1l = (hl + sigma1l) | 0
41076 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
41077 t1l = (t1l + chl) | 0
41078 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
41079 t1l = (t1l + Kil) | 0
41080 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
41081 t1l = (t1l + Wil) | 0
41082 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
41083
41084 // t2 = sigma0 + maj
41085 var t2l = (sigma0l + majl) | 0
41086 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
41087
41088 hh = gh
41089 hl = gl
41090 gh = fh
41091 gl = fl
41092 fh = eh
41093 fl = el
41094 el = (dl + t1l) | 0
41095 eh = (dh + t1h + getCarry(el, dl)) | 0
41096 dh = ch
41097 dl = cl
41098 ch = bh
41099 cl = bl
41100 bh = ah
41101 bl = al
41102 al = (t1l + t2l) | 0
41103 ah = (t1h + t2h + getCarry(al, t1l)) | 0
41104 }
41105
41106 this._al = (this._al + al) | 0
41107 this._bl = (this._bl + bl) | 0
41108 this._cl = (this._cl + cl) | 0
41109 this._dl = (this._dl + dl) | 0
41110 this._el = (this._el + el) | 0
41111 this._fl = (this._fl + fl) | 0
41112 this._gl = (this._gl + gl) | 0
41113 this._hl = (this._hl + hl) | 0
41114
41115 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
41116 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
41117 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
41118 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
41119 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
41120 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
41121 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
41122 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
41123 }
41124
41125 Sha512.prototype._hash = function () {
41126 var H = new Buffer(64)
41127
41128 function writeInt64BE (h, l, offset) {
41129 H.writeInt32BE(h, offset)
41130 H.writeInt32BE(l, offset + 4)
41131 }
41132
41133 writeInt64BE(this._ah, this._al, 0)
41134 writeInt64BE(this._bh, this._bl, 8)
41135 writeInt64BE(this._ch, this._cl, 16)
41136 writeInt64BE(this._dh, this._dl, 24)
41137 writeInt64BE(this._eh, this._el, 32)
41138 writeInt64BE(this._fh, this._fl, 40)
41139 writeInt64BE(this._gh, this._gl, 48)
41140 writeInt64BE(this._hh, this._hl, 56)
41141
41142 return H
41143 }
41144
41145 module.exports = Sha512
41146
41147 }).call(this,require("buffer").Buffer)
41148 },{"./hash":79,"buffer":5,"inherits":63}],87:[function(require,module,exports){
41149 var isHexPrefixed = require('is-hex-prefixed');
41150
41151 /**
41152 * Removes '0x' from a given `String` is present
41153 * @param {String} str the string value
41154 * @return {String|Optional} a string by pass if necessary
41155 */
41156 module.exports = function stripHexPrefix(str) {
41157 if (typeof str !== 'string') {
41158 return str;
41159 }
41160
41161 return isHexPrefixed(str) ? str.slice(2) : str;
41162 }
41163
41164 },{"is-hex-prefixed":64}]},{},[31])(31)
41165 });</script>
41166 <script>function convertRippleAdrr(address) {
41167 return window.basex('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz').encode(
41168 window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(address)
41169 )
41170 }
41171
41172 function convertRipplePriv(priv) {
41173 return window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(priv).toString("hex").slice(2,66)
41174 }
41175
41176 </script>
41177 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
41178
41179 //// base.js
41180
41181 /** @fileOverview Javascript cryptography implementation.
41182 *
41183 * Crush to remove comments, shorten variable names and
41184 * generally reduce transmission size.
41185 *
41186 * @author Emily Stark
41187 * @author Mike Hamburg
41188 * @author Dan Boneh
41189 */
41190
41191 "use strict";
41192 /*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
41193 /*global document, window, escape, unescape, module, require, Uint32Array */
41194
41195 /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
41196 var sjcl = {
41197 /** @namespace Symmetric ciphers. */
41198 cipher: {},
41199
41200 /** @namespace Hash functions. Right now only SHA256 is implemented. */
41201 hash: {},
41202
41203 /** @namespace Key exchange functions. Right now only SRP is implemented. */
41204 keyexchange: {},
41205
41206 /** @namespace Block cipher modes of operation. */
41207 mode: {},
41208
41209 /** @namespace Miscellaneous. HMAC and PBKDF2. */
41210 misc: {},
41211
41212 /**
41213 * @namespace Bit array encoders and decoders.
41214 *
41215 * @description
41216 * The members of this namespace are functions which translate between
41217 * SJCL's bitArrays and other objects (usually strings). Because it
41218 * isn't always clear which direction is encoding and which is decoding,
41219 * the method names are "fromBits" and "toBits".
41220 */
41221 codec: {},
41222
41223 /** @namespace Exceptions. */
41224 exception: {
41225 /** @constructor Ciphertext is corrupt. */
41226 corrupt: function(message) {
41227 this.toString = function() { return "CORRUPT: "+this.message; };
41228 this.message = message;
41229 },
41230
41231 /** @constructor Invalid parameter. */
41232 invalid: function(message) {
41233 this.toString = function() { return "INVALID: "+this.message; };
41234 this.message = message;
41235 },
41236
41237 /** @constructor Bug or missing feature in SJCL. @constructor */
41238 bug: function(message) {
41239 this.toString = function() { return "BUG: "+this.message; };
41240 this.message = message;
41241 },
41242
41243 /** @constructor Something isn't ready. */
41244 notReady: function(message) {
41245 this.toString = function() { return "NOT READY: "+this.message; };
41246 this.message = message;
41247 }
41248 }
41249 };
41250
41251 if(typeof module !== 'undefined' && module.exports){
41252 module.exports = sjcl;
41253 }
41254 if (typeof define === "function") {
41255 define([], function () {
41256 return sjcl;
41257 });
41258 }
41259
41260
41261 //// bitArray.js
41262
41263 /** @fileOverview Arrays of bits, encoded as arrays of Numbers.
41264 *
41265 * @author Emily Stark
41266 * @author Mike Hamburg
41267 * @author Dan Boneh
41268 */
41269
41270 /** @namespace Arrays of bits, encoded as arrays of Numbers.
41271 *
41272 * @description
41273 * <p>
41274 * These objects are the currency accepted by SJCL's crypto functions.
41275 * </p>
41276 *
41277 * <p>
41278 * Most of our crypto primitives operate on arrays of 4-byte words internally,
41279 * but many of them can take arguments that are not a multiple of 4 bytes.
41280 * This library encodes arrays of bits (whose size need not be a multiple of 8
41281 * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
41282 * array of words, 32 bits at a time. Since the words are double-precision
41283 * floating point numbers, they fit some extra data. We use this (in a private,
41284 * possibly-changing manner) to encode the number of bits actually present
41285 * in the last word of the array.
41286 * </p>
41287 *
41288 * <p>
41289 * Because bitwise ops clear this out-of-band data, these arrays can be passed
41290 * to ciphers like AES which want arrays of words.
41291 * </p>
41292 */
41293 sjcl.bitArray = {
41294 /**
41295 * Array slices in units of bits.
41296 * @param {bitArray} a The array to slice.
41297 * @param {Number} bstart The offset to the start of the slice, in bits.
41298 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
41299 * slice until the end of the array.
41300 * @return {bitArray} The requested slice.
41301 */
41302 bitSlice: function (a, bstart, bend) {
41303 a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
41304 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
41305 },
41306
41307 /**
41308 * Extract a number packed into a bit array.
41309 * @param {bitArray} a The array to slice.
41310 * @param {Number} bstart The offset to the start of the slice, in bits.
41311 * @param {Number} length The length of the number to extract.
41312 * @return {Number} The requested slice.
41313 */
41314 extract: function(a, bstart, blength) {
41315 // FIXME: this Math.floor is not necessary at all, but for some reason
41316 // seems to suppress a bug in the Chromium JIT.
41317 var x, sh = Math.floor((-bstart-blength) & 31);
41318 if ((bstart + blength - 1 ^ bstart) & -32) {
41319 // it crosses a boundary
41320 x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
41321 } else {
41322 // within a single word
41323 x = a[bstart/32|0] >>> sh;
41324 }
41325 return x & ((1<<blength) - 1);
41326 },
41327
41328 /**
41329 * Concatenate two bit arrays.
41330 * @param {bitArray} a1 The first array.
41331 * @param {bitArray} a2 The second array.
41332 * @return {bitArray} The concatenation of a1 and a2.
41333 */
41334 concat: function (a1, a2) {
41335 if (a1.length === 0 || a2.length === 0) {
41336 return a1.concat(a2);
41337 }
41338
41339 var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
41340 if (shift === 32) {
41341 return a1.concat(a2);
41342 } else {
41343 return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
41344 }
41345 },
41346
41347 /**
41348 * Find the length of an array of bits.
41349 * @param {bitArray} a The array.
41350 * @return {Number} The length of a, in bits.
41351 */
41352 bitLength: function (a) {
41353 var l = a.length, x;
41354 if (l === 0) { return 0; }
41355 x = a[l - 1];
41356 return (l-1) * 32 + sjcl.bitArray.getPartial(x);
41357 },
41358
41359 /**
41360 * Truncate an array.
41361 * @param {bitArray} a The array.
41362 * @param {Number} len The length to truncate to, in bits.
41363 * @return {bitArray} A new array, truncated to len bits.
41364 */
41365 clamp: function (a, len) {
41366 if (a.length * 32 < len) { return a; }
41367 a = a.slice(0, Math.ceil(len / 32));
41368 var l = a.length;
41369 len = len & 31;
41370 if (l > 0 && len) {
41371 a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
41372 }
41373 return a;
41374 },
41375
41376 /**
41377 * Make a partial word for a bit array.
41378 * @param {Number} len The number of bits in the word.
41379 * @param {Number} x The bits.
41380 * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
41381 * @return {Number} The partial word.
41382 */
41383 partial: function (len, x, _end) {
41384 if (len === 32) { return x; }
41385 return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
41386 },
41387
41388 /**
41389 * Get the number of bits used by a partial word.
41390 * @param {Number} x The partial word.
41391 * @return {Number} The number of bits used by the partial word.
41392 */
41393 getPartial: function (x) {
41394 return Math.round(x/0x10000000000) || 32;
41395 },
41396
41397 /**
41398 * Compare two arrays for equality in a predictable amount of time.
41399 * @param {bitArray} a The first array.
41400 * @param {bitArray} b The second array.
41401 * @return {boolean} true if a == b; false otherwise.
41402 */
41403 equal: function (a, b) {
41404 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
41405 return false;
41406 }
41407 var x = 0, i;
41408 for (i=0; i<a.length; i++) {
41409 x |= a[i]^b[i];
41410 }
41411 return (x === 0);
41412 },
41413
41414 /** Shift an array right.
41415 * @param {bitArray} a The array to shift.
41416 * @param {Number} shift The number of bits to shift.
41417 * @param {Number} [carry=0] A byte to carry in
41418 * @param {bitArray} [out=[]] An array to prepend to the output.
41419 * @private
41420 */
41421 _shiftRight: function (a, shift, carry, out) {
41422 var i, last2=0, shift2;
41423 if (out === undefined) { out = []; }
41424
41425 for (; shift >= 32; shift -= 32) {
41426 out.push(carry);
41427 carry = 0;
41428 }
41429 if (shift === 0) {
41430 return out.concat(a);
41431 }
41432
41433 for (i=0; i<a.length; i++) {
41434 out.push(carry | a[i]>>>shift);
41435 carry = a[i] << (32-shift);
41436 }
41437 last2 = a.length ? a[a.length-1] : 0;
41438 shift2 = sjcl.bitArray.getPartial(last2);
41439 out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
41440 return out;
41441 },
41442
41443 /** xor a block of 4 words together.
41444 * @private
41445 */
41446 _xor4: function(x,y) {
41447 return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
41448 },
41449
41450 /** byteswap a word array inplace.
41451 * (does not handle partial words)
41452 * @param {sjcl.bitArray} a word array
41453 * @return {sjcl.bitArray} byteswapped array
41454 */
41455 byteswapM: function(a) {
41456 var i, v, m = 0xff00;
41457 for (i = 0; i < a.length; ++i) {
41458 v = a[i];
41459 a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24);
41460 }
41461 return a;
41462 }
41463 };
41464
41465
41466 //// codecString.js
41467
41468 /** @fileOverview Bit array codec implementations.
41469 *
41470 * @author Emily Stark
41471 * @author Mike Hamburg
41472 * @author Dan Boneh
41473 */
41474
41475 /** @namespace UTF-8 strings */
41476 sjcl.codec.utf8String = {
41477 /** Convert from a bitArray to a UTF-8 string. */
41478 fromBits: function (arr) {
41479 var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
41480 for (i=0; i<bl/8; i++) {
41481 if ((i&3) === 0) {
41482 tmp = arr[i/4];
41483 }
41484 out += String.fromCharCode(tmp >>> 24);
41485 tmp <<= 8;
41486 }
41487 return decodeURIComponent(escape(out));
41488 },
41489
41490 /** Convert from a UTF-8 string to a bitArray. */
41491 toBits: function (str) {
41492 str = unescape(encodeURIComponent(str));
41493 var out = [], i, tmp=0;
41494 for (i=0; i<str.length; i++) {
41495 tmp = tmp << 8 | str.charCodeAt(i);
41496 if ((i&3) === 3) {
41497 out.push(tmp);
41498 tmp = 0;
41499 }
41500 }
41501 if (i&3) {
41502 out.push(sjcl.bitArray.partial(8*(i&3), tmp));
41503 }
41504 return out;
41505 }
41506 };
41507
41508
41509 //// codecHex.js
41510
41511 /** @fileOverview Bit array codec implementations.
41512 *
41513 * @author Emily Stark
41514 * @author Mike Hamburg
41515 * @author Dan Boneh
41516 */
41517
41518 /** @namespace Hexadecimal */
41519 sjcl.codec.hex = {
41520 /** Convert from a bitArray to a hex string. */
41521 fromBits: function (arr) {
41522 var out = "", i;
41523 for (i=0; i<arr.length; i++) {
41524 out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4);
41525 }
41526 return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 ");
41527 },
41528 /** Convert from a hex string to a bitArray. */
41529 toBits: function (str) {
41530 var i, out=[], len;
41531 str = str.replace(/\s|0x/g, "");
41532 len = str.length;
41533 str = str + "00000000";
41534 for (i=0; i<str.length; i+=8) {
41535 out.push(parseInt(str.substr(i,8),16)^0);
41536 }
41537 return sjcl.bitArray.clamp(out, len*4);
41538 }
41539 };
41540
41541
41542 //// sha512.js
41543
41544 /** @fileOverview Javascript SHA-512 implementation.
41545 *
41546 * This implementation was written for CryptoJS by Jeff Mott and adapted for
41547 * SJCL by Stefan Thomas.
41548 *
41549 * CryptoJS (c) 20092012 by Jeff Mott. All rights reserved.
41550 * Released with New BSD License
41551 *
41552 * @author Emily Stark
41553 * @author Mike Hamburg
41554 * @author Dan Boneh
41555 * @author Jeff Mott
41556 * @author Stefan Thomas
41557 */
41558
41559 /**
41560 * Context for a SHA-512 operation in progress.
41561 * @constructor
41562 * @class Secure Hash Algorithm, 512 bits.
41563 */
41564 sjcl.hash.sha512 = function (hash) {
41565 if (!this._key[0]) { this._precompute(); }
41566 if (hash) {
41567 this._h = hash._h.slice(0);
41568 this._buffer = hash._buffer.slice(0);
41569 this._length = hash._length;
41570 } else {
41571 this.reset();
41572 }
41573 };
41574
41575 /**
41576 * Hash a string or an array of words.
41577 * @static
41578 * @param {bitArray|String} data the data to hash.
41579 * @return {bitArray} The hash value, an array of 16 big-endian words.
41580 */
41581 sjcl.hash.sha512.hash = function (data) {
41582 return (new sjcl.hash.sha512()).update(data).finalize();
41583 };
41584
41585 sjcl.hash.sha512.prototype = {
41586 /**
41587 * The hash's block size, in bits.
41588 * @constant
41589 */
41590 blockSize: 1024,
41591
41592 /**
41593 * Reset the hash state.
41594 * @return this
41595 */
41596 reset:function () {
41597 this._h = this._init.slice(0);
41598 this._buffer = [];
41599 this._length = 0;
41600 return this;
41601 },
41602
41603 /**
41604 * Input several words to the hash.
41605 * @param {bitArray|String} data the data to hash.
41606 * @return this
41607 */
41608 update: function (data) {
41609 if (typeof data === "string") {
41610 data = sjcl.codec.utf8String.toBits(data);
41611 }
41612 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
41613 ol = this._length,
41614 nl = this._length = ol + sjcl.bitArray.bitLength(data);
41615 for (i = 1024+ol & -1024; i <= nl; i+= 1024) {
41616 this._block(b.splice(0,32));
41617 }
41618 return this;
41619 },
41620
41621 /**
41622 * Complete hashing and output the hash value.
41623 * @return {bitArray} The hash value, an array of 16 big-endian words.
41624 */
41625 finalize:function () {
41626 var i, b = this._buffer, h = this._h;
41627
41628 // Round out and push the buffer
41629 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
41630
41631 // Round out the buffer to a multiple of 32 words, less the 4 length words.
41632 for (i = b.length + 4; i & 31; i++) {
41633 b.push(0);
41634 }
41635
41636 // append the length
41637 b.push(0);
41638 b.push(0);
41639 b.push(Math.floor(this._length / 0x100000000));
41640 b.push(this._length | 0);
41641
41642 while (b.length) {
41643 this._block(b.splice(0,32));
41644 }
41645
41646 this.reset();
41647 return h;
41648 },
41649
41650 /**
41651 * The SHA-512 initialization vector, to be precomputed.
41652 * @private
41653 */
41654 _init:[],
41655
41656 /**
41657 * Least significant 24 bits of SHA512 initialization values.
41658 *
41659 * Javascript only has 53 bits of precision, so we compute the 40 most
41660 * significant bits and add the remaining 24 bits as constants.
41661 *
41662 * @private
41663 */
41664 _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ],
41665
41666 /*
41667 _init:
41668 [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
41669 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179],
41670 */
41671
41672 /**
41673 * The SHA-512 hash key, to be precomputed.
41674 * @private
41675 */
41676 _key:[],
41677
41678 /**
41679 * Least significant 24 bits of SHA512 key values.
41680 * @private
41681 */
41682 _keyr:
41683 [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118,
41684 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694,
41685 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5,
41686 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70,
41687 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b,
41688 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8,
41689 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3,
41690 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b,
41691 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b,
41692 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817],
41693
41694 /*
41695 _key:
41696 [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
41697 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
41698 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
41699 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
41700 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
41701 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
41702 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
41703 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
41704 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
41705 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
41706 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
41707 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
41708 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
41709 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
41710 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
41711 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
41712 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
41713 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
41714 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
41715 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817],
41716 */
41717
41718 /**
41719 * Function to precompute _init and _key.
41720 * @private
41721 */
41722 _precompute: function () {
41723 // XXX: This code is for precomputing the SHA256 constants, change for
41724 // SHA512 and re-enable.
41725 var i = 0, prime = 2, factor;
41726
41727 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
41728 function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; }
41729
41730 outer: for (; i<80; prime++) {
41731 for (factor=2; factor*factor <= prime; factor++) {
41732 if (prime % factor === 0) {
41733 // not a prime
41734 continue outer;
41735 }
41736 }
41737
41738 if (i<8) {
41739 this._init[i*2] = frac(Math.pow(prime, 1/2));
41740 this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i];
41741 }
41742 this._key[i*2] = frac(Math.pow(prime, 1/3));
41743 this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i];
41744 i++;
41745 }
41746 },
41747
41748 /**
41749 * Perform one cycle of SHA-512.
41750 * @param {bitArray} words one block of words.
41751 * @private
41752 */
41753 _block:function (words) {
41754 var i, wrh, wrl,
41755 w = words.slice(0),
41756 h = this._h,
41757 k = this._key,
41758 h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3],
41759 h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7],
41760 h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11],
41761 h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15];
41762
41763 // Working variables
41764 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
41765 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
41766 eh = h4h, el = h4l, fh = h5h, fl = h5l,
41767 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
41768
41769 for (i=0; i<80; i++) {
41770 // load up the input word for this round
41771 if (i<16) {
41772 wrh = w[i * 2];
41773 wrl = w[i * 2 + 1];
41774 } else {
41775 // Gamma0
41776 var gamma0xh = w[(i-15) * 2];
41777 var gamma0xl = w[(i-15) * 2 + 1];
41778 var gamma0h =
41779 ((gamma0xl << 31) | (gamma0xh >>> 1)) ^
41780 ((gamma0xl << 24) | (gamma0xh >>> 8)) ^
41781 (gamma0xh >>> 7);
41782 var gamma0l =
41783 ((gamma0xh << 31) | (gamma0xl >>> 1)) ^
41784 ((gamma0xh << 24) | (gamma0xl >>> 8)) ^
41785 ((gamma0xh << 25) | (gamma0xl >>> 7));
41786
41787 // Gamma1
41788 var gamma1xh = w[(i-2) * 2];
41789 var gamma1xl = w[(i-2) * 2 + 1];
41790 var gamma1h =
41791 ((gamma1xl << 13) | (gamma1xh >>> 19)) ^
41792 ((gamma1xh << 3) | (gamma1xl >>> 29)) ^
41793 (gamma1xh >>> 6);
41794 var gamma1l =
41795 ((gamma1xh << 13) | (gamma1xl >>> 19)) ^
41796 ((gamma1xl << 3) | (gamma1xh >>> 29)) ^
41797 ((gamma1xh << 26) | (gamma1xl >>> 6));
41798
41799 // Shortcuts
41800 var wr7h = w[(i-7) * 2];
41801 var wr7l = w[(i-7) * 2 + 1];
41802
41803 var wr16h = w[(i-16) * 2];
41804 var wr16l = w[(i-16) * 2 + 1];
41805
41806 // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16)
41807 wrl = gamma0l + wr7l;
41808 wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0);
41809 wrl += gamma1l;
41810 wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0);
41811 wrl += wr16l;
41812 wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0);
41813 }
41814
41815 w[i*2] = wrh |= 0;
41816 w[i*2 + 1] = wrl |= 0;
41817
41818 // Ch
41819 var chh = (eh & fh) ^ (~eh & gh);
41820 var chl = (el & fl) ^ (~el & gl);
41821
41822 // Maj
41823 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
41824 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
41825
41826 // Sigma0
41827 var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
41828 var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
41829
41830 // Sigma1
41831 var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9));
41832 var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9));
41833
41834 // K(round)
41835 var krh = k[i*2];
41836 var krl = k[i*2+1];
41837
41838 // t1 = h + sigma1 + ch + K(round) + W(round)
41839 var t1l = hl + sigma1l;
41840 var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
41841 t1l += chl;
41842 t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
41843 t1l += krl;
41844 t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0);
41845 t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972
41846 t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0);
41847
41848 // t2 = sigma0 + maj
41849 var t2l = sigma0l + majl;
41850 var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
41851
41852 // Update working variables
41853 hh = gh;
41854 hl = gl;
41855 gh = fh;
41856 gl = fl;
41857 fh = eh;
41858 fl = el;
41859 el = (dl + t1l) | 0;
41860 eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
41861 dh = ch;
41862 dl = cl;
41863 ch = bh;
41864 cl = bl;
41865 bh = ah;
41866 bl = al;
41867 al = (t1l + t2l) | 0;
41868 ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
41869 }
41870
41871 // Intermediate hash
41872 h0l = h[1] = (h0l + al) | 0;
41873 h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0;
41874 h1l = h[3] = (h1l + bl) | 0;
41875 h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0;
41876 h2l = h[5] = (h2l + cl) | 0;
41877 h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0;
41878 h3l = h[7] = (h3l + dl) | 0;
41879 h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
41880 h4l = h[9] = (h4l + el) | 0;
41881 h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0;
41882 h5l = h[11] = (h5l + fl) | 0;
41883 h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0;
41884 h6l = h[13] = (h6l + gl) | 0;
41885 h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0;
41886 h7l = h[15] = (h7l + hl) | 0;
41887 h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
41888 }
41889 };
41890
41891
41892 //// hmac.js
41893
41894 /** @fileOverview HMAC implementation.
41895 *
41896 * @author Emily Stark
41897 * @author Mike Hamburg
41898 * @author Dan Boneh
41899 */
41900
41901 /** HMAC with the specified hash function.
41902 * @constructor
41903 * @param {bitArray} key the key for HMAC.
41904 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
41905 */
41906 sjcl.misc.hmac = function (key, Hash) {
41907 this._hash = Hash = Hash || sjcl.hash.sha256;
41908 var exKey = [[],[]], i,
41909 bs = Hash.prototype.blockSize / 32;
41910 this._baseHash = [new Hash(), new Hash()];
41911
41912 if (key.length > bs) {
41913 key = Hash.hash(key);
41914 }
41915
41916 for (i=0; i<bs; i++) {
41917 exKey[0][i] = key[i]^0x36363636;
41918 exKey[1][i] = key[i]^0x5C5C5C5C;
41919 }
41920
41921 this._baseHash[0].update(exKey[0]);
41922 this._baseHash[1].update(exKey[1]);
41923 this._resultHash = new Hash(this._baseHash[0]);
41924 };
41925
41926 /** HMAC with the specified hash function. Also called encrypt since it's a prf.
41927 * @param {bitArray|String} data The data to mac.
41928 */
41929 sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
41930 if (!this._updated) {
41931 this.update(data);
41932 return this.digest(data);
41933 } else {
41934 throw new sjcl.exception.invalid("encrypt on already updated hmac called!");
41935 }
41936 };
41937
41938 sjcl.misc.hmac.prototype.reset = function () {
41939 this._resultHash = new this._hash(this._baseHash[0]);
41940 this._updated = false;
41941 };
41942
41943 sjcl.misc.hmac.prototype.update = function (data) {
41944 this._updated = true;
41945 this._resultHash.update(data);
41946 };
41947
41948 sjcl.misc.hmac.prototype.digest = function () {
41949 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize();
41950
41951 this.reset();
41952
41953 return result;
41954 };
41955
41956
41957 //// pbkdf2.js
41958
41959
41960 /** @fileOverview Password-based key-derivation function, version 2.0.
41961 *
41962 * @author Emily Stark
41963 * @author Mike Hamburg
41964 * @author Dan Boneh
41965 */
41966
41967 /** Password-Based Key-Derivation Function, version 2.0.
41968 *
41969 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
41970 *
41971 * This is the method specified by RSA's PKCS #5 standard.
41972 *
41973 * @param {bitArray|String} password The password.
41974 * @param {bitArray|String} salt The salt. Should have lots of entropy.
41975 * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure.
41976 * @param {Number} [length] The length of the derived key. Defaults to the
41977 output size of the hash function.
41978 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
41979 * @return {bitArray} the derived key.
41980 */
41981 sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
41982 count = count || 1000;
41983
41984 if (length < 0 || count < 0) {
41985 throw sjcl.exception.invalid("invalid params to pbkdf2");
41986 }
41987
41988 if (typeof password === "string") {
41989 password = sjcl.codec.utf8String.toBits(password);
41990 }
41991
41992 if (typeof salt === "string") {
41993 salt = sjcl.codec.utf8String.toBits(salt);
41994 }
41995
41996 Prff = Prff || sjcl.misc.hmac;
41997
41998 var prf = new Prff(password),
41999 u, ui, i, j, k, out = [], b = sjcl.bitArray;
42000
42001 for (k = 1; 32 * out.length < (length || 1); k++) {
42002 u = ui = prf.encrypt(b.concat(salt,[k]));
42003
42004 for (i=1; i<count; i++) {
42005 ui = prf.encrypt(ui);
42006 for (j=0; j<ui.length; j++) {
42007 u[j] ^= ui[j];
42008 }
42009 }
42010
42011 out = out.concat(u);
42012 }
42013
42014 if (length) { out = b.clamp(out, length); }
42015
42016 return out;
42017 };
42018
42019
42020 //// sha256.js
42021
42022 /** @fileOverview Javascript SHA-256 implementation.
42023 *
42024 * An older version of this implementation is available in the public
42025 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
42026 * Stanford University 2008-2010 and BSD-licensed for liability
42027 * reasons.
42028 *
42029 * Special thanks to Aldo Cortesi for pointing out several bugs in
42030 * this code.
42031 *
42032 * @author Emily Stark
42033 * @author Mike Hamburg
42034 * @author Dan Boneh
42035 */
42036
42037 /**
42038 * Context for a SHA-256 operation in progress.
42039 * @constructor
42040 * @class Secure Hash Algorithm, 256 bits.
42041 */
42042 sjcl.hash.sha256 = function (hash) {
42043 if (!this._key[0]) { this._precompute(); }
42044 if (hash) {
42045 this._h = hash._h.slice(0);
42046 this._buffer = hash._buffer.slice(0);
42047 this._length = hash._length;
42048 } else {
42049 this.reset();
42050 }
42051 };
42052
42053 /**
42054 * Hash a string or an array of words.
42055 * @static
42056 * @param {bitArray|String} data the data to hash.
42057 * @return {bitArray} The hash value, an array of 16 big-endian words.
42058 */
42059 sjcl.hash.sha256.hash = function (data) {
42060 return (new sjcl.hash.sha256()).update(data).finalize();
42061 };
42062
42063 sjcl.hash.sha256.prototype = {
42064 /**
42065 * The hash's block size, in bits.
42066 * @constant
42067 */
42068 blockSize: 512,
42069
42070 /**
42071 * Reset the hash state.
42072 * @return this
42073 */
42074 reset:function () {
42075 this._h = this._init.slice(0);
42076 this._buffer = [];
42077 this._length = 0;
42078 return this;
42079 },
42080
42081 /**
42082 * Input several words to the hash.
42083 * @param {bitArray|String} data the data to hash.
42084 * @return this
42085 */
42086 update: function (data) {
42087 if (typeof data === "string") {
42088 data = sjcl.codec.utf8String.toBits(data);
42089 }
42090 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
42091 ol = this._length,
42092 nl = this._length = ol + sjcl.bitArray.bitLength(data);
42093 for (i = 512+ol & -512; i <= nl; i+= 512) {
42094 this._block(b.splice(0,16));
42095 }
42096 return this;
42097 },
42098
42099 /**
42100 * Complete hashing and output the hash value.
42101 * @return {bitArray} The hash value, an array of 8 big-endian words.
42102 */
42103 finalize:function () {
42104 var i, b = this._buffer, h = this._h;
42105
42106 // Round out and push the buffer
42107 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
42108
42109 // Round out the buffer to a multiple of 16 words, less the 2 length words.
42110 for (i = b.length + 2; i & 15; i++) {
42111 b.push(0);
42112 }
42113
42114 // append the length
42115 b.push(Math.floor(this._length / 0x100000000));
42116 b.push(this._length | 0);
42117
42118 while (b.length) {
42119 this._block(b.splice(0,16));
42120 }
42121
42122 this.reset();
42123 return h;
42124 },
42125
42126 /**
42127 * The SHA-256 initialization vector, to be precomputed.
42128 * @private
42129 */
42130 _init:[],
42131 /*
42132 _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
42133 */
42134
42135 /**
42136 * The SHA-256 hash key, to be precomputed.
42137 * @private
42138 */
42139 _key:[],
42140 /*
42141 _key:
42142 [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
42143 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
42144 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
42145 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
42146 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
42147 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
42148 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
42149 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
42150 */
42151
42152
42153 /**
42154 * Function to precompute _init and _key.
42155 * @private
42156 */
42157 _precompute: function () {
42158 var i = 0, prime = 2, factor;
42159
42160 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
42161
42162 outer: for (; i<64; prime++) {
42163 for (factor=2; factor*factor <= prime; factor++) {
42164 if (prime % factor === 0) {
42165 // not a prime
42166 continue outer;
42167 }
42168 }
42169
42170 if (i<8) {
42171 this._init[i] = frac(Math.pow(prime, 1/2));
42172 }
42173 this._key[i] = frac(Math.pow(prime, 1/3));
42174 i++;
42175 }
42176 },
42177
42178 /**
42179 * Perform one cycle of SHA-256.
42180 * @param {bitArray} words one block of words.
42181 * @private
42182 */
42183 _block:function (words) {
42184 var i, tmp, a, b,
42185 w = words.slice(0),
42186 h = this._h,
42187 k = this._key,
42188 h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
42189 h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
42190
42191 /* Rationale for placement of |0 :
42192 * If a value can overflow is original 32 bits by a factor of more than a few
42193 * million (2^23 ish), there is a possibility that it might overflow the
42194 * 53-bit mantissa and lose precision.
42195 *
42196 * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
42197 * propagates around the loop, and on the hash state h[]. I don't believe
42198 * that the clamps on h4 and on h0 are strictly necessary, but it's close
42199 * (for h4 anyway), and better safe than sorry.
42200 *
42201 * The clamps on h[] are necessary for the output to be correct even in the
42202 * common case and for short inputs.
42203 */
42204 for (i=0; i<64; i++) {
42205 // load up the input word for this round
42206 if (i<16) {
42207 tmp = w[i];
42208 } else {
42209 a = w[(i+1 ) & 15];
42210 b = w[(i+14) & 15];
42211 tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
42212 (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
42213 w[i&15] + w[(i+9) & 15]) | 0;
42214 }
42215
42216 tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
42217
42218 // shift register
42219 h7 = h6; h6 = h5; h5 = h4;
42220 h4 = h3 + tmp | 0;
42221 h3 = h2; h2 = h1; h1 = h0;
42222
42223 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
42224 }
42225
42226 h[0] = h[0]+h0 | 0;
42227 h[1] = h[1]+h1 | 0;
42228 h[2] = h[2]+h2 | 0;
42229 h[3] = h[3]+h3 | 0;
42230 h[4] = h[4]+h4 | 0;
42231 h[5] = h[5]+h5 | 0;
42232 h[6] = h[6]+h6 | 0;
42233 h[7] = h[7]+h7 | 0;
42234 }
42235 };
42236 </script>
42237 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42238 WORDLISTS["english"] = [
42239 "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
42240 "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
42241 "action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
42242 "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
42243 "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
42244 "alien","all","alley","allow","almost","alone","alpha","already","also","alter",
42245 "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
42246 "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
42247 "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
42248 "area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
42249 "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
42250 "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
42251 "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
42252 "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
42253 "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
42254 "barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
42255 "beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
42256 "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
42257 "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
42258 "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
42259 "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
42260 "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
42261 "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
42262 "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
42263 "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
42264 "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
42265 "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
42266 "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
42267 "cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
42268 "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
42269 "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
42270 "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
42271 "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
42272 "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
42273 "clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
42274 "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
42275 "code","coffee","coil","coin","collect","color","column","combine","come","comfort",
42276 "comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
42277 "convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
42278 "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
42279 "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
42280 "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
42281 "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
42282 "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
42283 "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
42284 "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
42285 "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
42286 "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
42287 "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
42288 "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
42289 "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
42290 "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
42291 "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
42292 "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
42293 "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
42294 "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
42295 "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
42296 "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
42297 "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
42298 "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
42299 "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
42300 "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
42301 "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
42302 "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
42303 "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
42304 "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
42305 "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
42306 "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
42307 "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
42308 "film","filter","final","find","fine","finger","finish","fire","firm","first",
42309 "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
42310 "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
42311 "foam","focus","fog","foil","fold","follow","food","foot","force","forest",
42312 "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
42313 "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
42314 "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
42315 "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
42316 "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
42317 "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
42318 "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
42319 "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
42320 "grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
42321 "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
42322 "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
42323 "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
42324 "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
42325 "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
42326 "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
42327 "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
42328 "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
42329 "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
42330 "impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
42331 "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
42332 "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
42333 "intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
42334 "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
42335 "job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
42336 "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
42337 "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
42338 "knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
42339 "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
42340 "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
42341 "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
42342 "liar","liberty","library","license","life","lift","light","like","limb","limit",
42343 "link","lion","liquid","list","little","live","lizard","load","loan","lobster",
42344 "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
42345 "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
42346 "magic","magnet","maid","mail","main","major","make","mammal","man","manage",
42347 "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
42348 "marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
42349 "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
42350 "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
42351 "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
42352 "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
42353 "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
42354 "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
42355 "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
42356 "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
42357 "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
42358 "network","neutral","never","news","next","nice","night","noble","noise","nominee",
42359 "noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
42360 "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
42361 "obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
42362 "oil","okay","old","olive","olympic","omit","once","one","onion","online",
42363 "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
42364 "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
42365 "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
42366 "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
42367 "parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
42368 "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
42369 "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
42370 "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
42371 "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
42372 "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
42373 "pole","police","pond","pony","pool","popular","portion","position","possible","post",
42374 "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
42375 "present","pretty","prevent","price","pride","primary","print","priority","prison","private",
42376 "prize","problem","process","produce","profit","program","project","promote","proof","property",
42377 "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
42378 "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
42379 "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
42380 "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
42381 "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
42382 "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
42383 "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
42384 "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
42385 "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
42386 "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
42387 "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
42388 "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
42389 "romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
42390 "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
42391 "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
42392 "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
42393 "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
42394 "scrub","sea","search","season","seat","second","secret","section","security","seed",
42395 "seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
42396 "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
42397 "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
42398 "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
42399 "siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
42400 "sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
42401 "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
42402 "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
42403 "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
42404 "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
42405 "sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
42406 "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
42407 "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
42408 "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
42409 "stand","start","state","stay","steak","steel","stem","step","stereo","stick",
42410 "still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
42411 "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
42412 "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
42413 "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
42414 "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
42415 "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
42416 "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
42417 "teach","team","tell","ten","tenant","tennis","tent","term","test","text",
42418 "thank","that","theme","then","theory","there","they","thing","this","thought",
42419 "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
42420 "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
42421 "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
42422 "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
42423 "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
42424 "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
42425 "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
42426 "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
42427 "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
42428 "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
42429 "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
42430 "uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
42431 "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
42432 "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
42433 "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
42434 "video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
42435 "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
42436 "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
42437 "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
42438 "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
42439 "wheel","when","where","whip","whisper","wide","width","wife","wild","will",
42440 "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
42441 "wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
42442 "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
42443 "yellow","you","young","youth","zebra","zero","zone","zoo"]
42444 </script>
42445 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42446 WORDLISTS["japanese"] = [
42447 "あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
42448 "あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
42449 "あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
42450 "あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
42451 "あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
42452 "あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
42453 "いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
42454 "いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
42455 "いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
42456 "いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
42457 "いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
42458 "いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
42459 "いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
42460 "いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
42461 "いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
42462 "うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
42463 "うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
42464 "うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
42465 "うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
42466 "うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
42467 "うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
42468 "えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
42469 "えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
42470 "えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
42471 "えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
42472 "おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
42473 "おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
42474 "おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
42475 "おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
42476 "おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
42477 "おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
42478 "おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
42479 "かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
42480 "かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
42481 "かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
42482 "がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
42483 "かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
42484 "かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
42485 "きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
42486 "きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
42487 "ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
42488 "きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
42489 "きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
42490 "きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
42491 "きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
42492 "きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
42493 "くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ",
42494 "くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう",
42495 "くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした",
42496 "ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる",
42497 "くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく",
42498 "ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん",
42499 "けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは",
42500 "げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと",
42501 "けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい",
42502 "けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ",
42503 "けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし",
42504 "けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき",
42505 "けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない",
42506 "けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと",
42507 "ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい",
42508 "ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう",
42509 "ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい",
42510 "こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ",
42511 "こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか",
42512 "こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな",
42513 "こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら",
42514 "こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく",
42515 "こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる",
42516 "こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん",
42517 "こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ",
42518 "さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち",
42519 "さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん",
42520 "さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも",
42521 "さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ",
42522 "さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう",
42523 "さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい",
42524 "ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ",
42525 "しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん",
42526 "しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり",
42527 "しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん",
42528 "しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう",
42529 "しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ",
42530 "しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん",
42531 "しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん",
42532 "しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい",
42533 "しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ",
42534 "しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん",
42535 "すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい",
42536 "すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる",
42537 "すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる",
42538 "ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと",
42539 "すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん",
42540 "せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく",
42541 "せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび",
42542 "せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる",
42543 "せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん",
42544 "ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう",
42545 "せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう",
42546 "せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき",
42547 "そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい",
42548 "そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう",
42549 "そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる",
42550 "そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも",
42551 "そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび",
42552 "ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう",
42553 "たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい",
42554 "だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな",
42555 "たいみんぐ", "たいむ", "たいめん", "たいやき", "たいよう", "たいら", "たいりょく", "たいる", "たいわん", "たうえ",
42556 "たえる", "たおす", "たおる", "たおれる", "たかい", "たかね", "たきび", "たくさん", "たこく", "たこやき",
42557 "たさい", "たしざん", "だじゃれ", "たすける", "たずさわる", "たそがれ", "たたかう", "たたく", "ただしい", "たたみ",
42558 "たちばな", "だっかい", "だっきゃく", "だっこ", "だっしゅつ", "だったい", "たてる", "たとえる", "たなばた", "たにん",
42559 "たぬき", "たのしみ", "たはつ", "たぶん", "たべる", "たぼう", "たまご", "たまる", "だむる", "ためいき",
42560 "ためす", "ためる", "たもつ", "たやすい", "たよる", "たらす", "たりきほんがん", "たりょう", "たりる", "たると",
42561 "たれる", "たれんと", "たろっと", "たわむれる", "だんあつ", "たんい", "たんおん", "たんか", "たんき", "たんけん",
42562 "たんご", "たんさん", "たんじょうび", "だんせい", "たんそく", "たんたい", "だんち", "たんてい", "たんとう", "だんな",
42563 "たんにん", "だんねつ", "たんのう", "たんぴん", "だんぼう", "たんまつ", "たんめい", "だんれつ", "だんろ", "だんわ",
42564 "ちあい", "ちあん", "ちいき", "ちいさい", "ちえん", "ちかい", "ちから", "ちきゅう", "ちきん", "ちけいず",
42565 "ちけん", "ちこく", "ちさい", "ちしき", "ちしりょう", "ちせい", "ちそう", "ちたい", "ちたん", "ちちおや",
42566 "ちつじょ", "ちてき", "ちてん", "ちぬき", "ちぬり", "ちのう", "ちひょう", "ちへいせん", "ちほう", "ちまた",
42567 "ちみつ", "ちみどろ", "ちめいど", "ちゃんこなべ", "ちゅうい", "ちゆりょく", "ちょうし", "ちょさくけん", "ちらし", "ちらみ",
42568 "ちりがみ", "ちりょう", "ちるど", "ちわわ", "ちんたい", "ちんもく", "ついか", "ついたち", "つうか", "つうじょう",
42569 "つうはん", "つうわ", "つかう", "つかれる", "つくね", "つくる", "つけね", "つける", "つごう", "つたえる",
42570 "つづく", "つつじ", "つつむ", "つとめる", "つながる", "つなみ", "つねづね", "つのる", "つぶす", "つまらない",
42571 "つまる", "つみき", "つめたい", "つもり", "つもる", "つよい", "つるぼ", "つるみく", "つわもの", "つわり",
42572 "てあし", "てあて", "てあみ", "ていおん", "ていか", "ていき", "ていけい", "ていこく", "ていさつ", "ていし",
42573 "ていせい", "ていたい", "ていど", "ていねい", "ていひょう", "ていへん", "ていぼう", "てうち", "ておくれ", "てきとう",
42574 "てくび", "でこぼこ", "てさぎょう", "てさげ", "てすり", "てそう", "てちがい", "てちょう", "てつがく", "てつづき",
42575 "でっぱ", "てつぼう", "てつや", "でぬかえ", "てぬき", "てぬぐい", "てのひら", "てはい", "てぶくろ", "てふだ",
42576 "てほどき", "てほん", "てまえ", "てまきずし", "てみじか", "てみやげ", "てらす", "てれび", "てわけ", "てわたし",
42577 "でんあつ", "てんいん", "てんかい", "てんき", "てんぐ", "てんけん", "てんごく", "てんさい", "てんし", "てんすう",
42578 "でんち", "てんてき", "てんとう", "てんない", "てんぷら", "てんぼうだい", "てんめつ", "てんらんかい", "でんりょく", "でんわ",
42579 "どあい", "といれ", "どうかん", "とうきゅう", "どうぐ", "とうし", "とうむぎ", "とおい", "とおか", "とおく",
42580 "とおす", "とおる", "とかい", "とかす", "ときおり", "ときどき", "とくい", "とくしゅう", "とくてん", "とくに",
42581 "とくべつ", "とけい", "とける", "とこや", "とさか", "としょかん", "とそう", "とたん", "とちゅう", "とっきゅう",
42582 "とっくん", "とつぜん", "とつにゅう", "とどける", "ととのえる", "とない", "となえる", "となり", "とのさま", "とばす",
42583 "どぶがわ", "とほう", "とまる", "とめる", "ともだち", "ともる", "どようび", "とらえる", "とんかつ", "どんぶり",
42584 "ないかく", "ないこう", "ないしょ", "ないす", "ないせん", "ないそう", "なおす", "ながい", "なくす", "なげる",
42585 "なこうど", "なさけ", "なたでここ", "なっとう", "なつやすみ", "ななおし", "なにごと", "なにもの", "なにわ", "なのか",
42586 "なふだ", "なまいき", "なまえ", "なまみ", "なみだ", "なめらか", "なめる", "なやむ", "ならう", "ならび",
42587 "ならぶ", "なれる", "なわとび", "なわばり", "にあう", "にいがた", "にうけ", "におい", "にかい", "にがて",
42588 "にきび", "にくしみ", "にくまん", "にげる", "にさんかたんそ", "にしき", "にせもの", "にちじょう", "にちようび", "にっか",
42589 "にっき", "にっけい", "にっこう", "にっさん", "にっしょく", "にっすう", "にっせき", "にってい", "になう", "にほん",
42590 "にまめ", "にもつ", "にやり", "にゅういん", "にりんしゃ", "にわとり", "にんい", "にんか", "にんき", "にんげん",
42591 "にんしき", "にんずう", "にんそう", "にんたい", "にんち", "にんてい", "にんにく", "にんぷ", "にんまり", "にんむ",
42592 "にんめい", "にんよう", "ぬいくぎ", "ぬかす", "ぬぐいとる", "ぬぐう", "ぬくもり", "ぬすむ", "ぬまえび", "ぬめり",
42593 "ぬらす", "ぬんちゃく", "ねあげ", "ねいき", "ねいる", "ねいろ", "ねぐせ", "ねくたい", "ねくら", "ねこぜ",
42594 "ねこむ", "ねさげ", "ねすごす", "ねそべる", "ねだん", "ねつい", "ねっしん", "ねつぞう", "ねったいぎょ", "ねぶそく",
42595 "ねふだ", "ねぼう", "ねほりはほり", "ねまき", "ねまわし", "ねみみ", "ねむい", "ねむたい", "ねもと", "ねらう",
42596 "ねわざ", "ねんいり", "ねんおし", "ねんかん", "ねんきん", "ねんぐ", "ねんざ", "ねんし", "ねんちゃく", "ねんど",
42597 "ねんぴ", "ねんぶつ", "ねんまつ", "ねんりょう", "ねんれい", "のいず", "のおづま", "のがす", "のきなみ", "のこぎり",
42598 "のこす", "のこる", "のせる", "のぞく", "のぞむ", "のたまう", "のちほど", "のっく", "のばす", "のはら",
42599 "のべる", "のぼる", "のみもの", "のやま", "のらいぬ", "のらねこ", "のりもの", "のりゆき", "のれん", "のんき",
42600 "ばあい", "はあく", "ばあさん", "ばいか", "ばいく", "はいけん", "はいご", "はいしん", "はいすい", "はいせん",
42601 "はいそう", "はいち", "ばいばい", "はいれつ", "はえる", "はおる", "はかい", "ばかり", "はかる", "はくしゅ",
42602 "はけん", "はこぶ", "はさみ", "はさん", "はしご", "ばしょ", "はしる", "はせる", "ぱそこん", "はそん",
42603 "はたん", "はちみつ", "はつおん", "はっかく", "はづき", "はっきり", "はっくつ", "はっけん", "はっこう", "はっさん",
42604 "はっしん", "はったつ", "はっちゅう", "はってん", "はっぴょう", "はっぽう", "はなす", "はなび", "はにかむ", "はぶらし",
42605 "はみがき", "はむかう", "はめつ", "はやい", "はやし", "はらう", "はろうぃん", "はわい", "はんい", "はんえい",
42606 "はんおん", "はんかく", "はんきょう", "ばんぐみ", "はんこ", "はんしゃ", "はんすう", "はんだん", "ぱんち", "ぱんつ",
42607 "はんてい", "はんとし", "はんのう", "はんぱ", "はんぶん", "はんぺん", "はんぼうき", "はんめい", "はんらん", "はんろん",
42608 "ひいき", "ひうん", "ひえる", "ひかく", "ひかり", "ひかる", "ひかん", "ひくい", "ひけつ", "ひこうき",
42609 "ひこく", "ひさい", "ひさしぶり", "ひさん", "びじゅつかん", "ひしょ", "ひそか", "ひそむ", "ひたむき", "ひだり",
42610 "ひたる", "ひつぎ", "ひっこし", "ひっし", "ひつじゅひん", "ひっす", "ひつぜん", "ぴったり", "ぴっちり", "ひつよう",
42611 "ひてい", "ひとごみ", "ひなまつり", "ひなん", "ひねる", "ひはん", "ひびく", "ひひょう", "ひほう", "ひまわり",
42612 "ひまん", "ひみつ", "ひめい", "ひめじし", "ひやけ", "ひやす", "ひよう", "びょうき", "ひらがな", "ひらく",
42613 "ひりつ", "ひりょう", "ひるま", "ひるやすみ", "ひれい", "ひろい", "ひろう", "ひろき", "ひろゆき", "ひんかく",
42614 "ひんけつ", "ひんこん", "ひんしゅ", "ひんそう", "ぴんち", "ひんぱん", "びんぼう", "ふあん", "ふいうち", "ふうけい",
42615 "ふうせん", "ぷうたろう", "ふうとう", "ふうふ", "ふえる", "ふおん", "ふかい", "ふきん", "ふくざつ", "ふくぶくろ",
42616 "ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん",
42617 "ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう",
42618 "ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる",
42619 "ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん",
42620 "へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん",
42621 "へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし",
42622 "へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん",
42623 "ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう",
42624 "ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる",
42625 "ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ",
42626 "ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく",
42627 "まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう",
42628 "まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち",
42629 "みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる",
42630 "みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす",
42631 "みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき",
42632 "むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい",
42633 "むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう",
42634 "むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん",
42635 "めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす",
42636 "めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん",
42637 "もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや",
42638 "やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん",
42639 "やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ",
42640 "ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ",
42641 "ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん",
42642 "よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか",
42643 "よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご",
42644 "らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい",
42645 "りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん",
42646 "りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき",
42647 "りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ",
42648 "れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい",
42649 "れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら",
42650 "ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす",
42651 "わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"]
42652 </script>
42653 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42654 WORDLISTS["spanish"] = [
42655 "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
42656 "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
42657 "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
42658 "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
42659 "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
42660 "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
42661 "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
42662 "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
42663 "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
42664 "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
42665 "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
42666 "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
42667 "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
42668 "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
42669 "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
42670 "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
42671 "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
42672 "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
42673 "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
42674 "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
42675 "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
42676 "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
42677 "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
42678 "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
42679 "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
42680 "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
42681 "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
42682 "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
42683 "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
42684 "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
42685 "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
42686 "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
42687 "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
42688 "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
42689 "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
42690 "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
42691 "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
42692 "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
42693 "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
42694 "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
42695 "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
42696 "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
42697 "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
42698 "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
42699 "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
42700 "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
42701 "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
42702 "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
42703 "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
42704 "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
42705 "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
42706 "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
42707 "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
42708 "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
42709 "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
42710 "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
42711 "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
42712 "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
42713 "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
42714 "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
42715 "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
42716 "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
42717 "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
42718 "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
42719 "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
42720 "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
42721 "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
42722 "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
42723 "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
42724 "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
42725 "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
42726 "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
42727 "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
42728 "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
42729 "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
42730 "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
42731 "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
42732 "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
42733 "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
42734 "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
42735 "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
42736 "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
42737 "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
42738 "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
42739 "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
42740 "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
42741 "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
42742 "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
42743 "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
42744 "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
42745 "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
42746 "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
42747 "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
42748 "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
42749 "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
42750 "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
42751 "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
42752 "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
42753 "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
42754 "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
42755 "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
42756 "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
42757 "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
42758 "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
42759 "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
42760 "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
42761 "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
42762 "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
42763 "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
42764 "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
42765 "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
42766 "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
42767 "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
42768 "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
42769 "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
42770 "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
42771 "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
42772 "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
42773 "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
42774 "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
42775 "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
42776 "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
42777 "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
42778 "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
42779 "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
42780 "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
42781 "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
42782 "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
42783 "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
42784 "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
42785 "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
42786 "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
42787 "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
42788 "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
42789 "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
42790 "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
42791 "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
42792 "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
42793 "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
42794 "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
42795 "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
42796 "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
42797 "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
42798 "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
42799 "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
42800 "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
42801 "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
42802 "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
42803 "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
42804 "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
42805 "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
42806 "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
42807 "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
42808 "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
42809 "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
42810 "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
42811 "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
42812 "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
42813 "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
42814 "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
42815 "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
42816 "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
42817 "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
42818 "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
42819 "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
42820 "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
42821 "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
42822 "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
42823 "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
42824 "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
42825 "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
42826 "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
42827 "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
42828 "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
42829 "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
42830 "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
42831 "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
42832 "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
42833 "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
42834 "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
42835 "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
42836 "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
42837 "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
42838 "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
42839 "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
42840 "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
42841 "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
42842 "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
42843 "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
42844 "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
42845 "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
42846 "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
42847 "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
42848 "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
42849 "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
42850 "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
42851 "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
42852 "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
42853 "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
42854 "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
42855 "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
42856 "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
42857 "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
42858 "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
42859 "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
42860 </script>
42861 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42862 WORDLISTS["chinese_simplified"] = [
42863 "的", "一", "是", "在", "不", "了", "有", "和", "人", "这",
42864 "中", "大", "为", "上", "个", "国", "我", "以", "要", "他",
42865 "时", "来", "用", "们", "生", "到", "作", "地", "于", "出",
42866 "就", "分", "对", "成", "会", "可", "主", "发", "年", "动",
42867 "同", "工", "也", "能", "下", "过", "子", "说", "产", "种",
42868 "面", "而", "方", "后", "多", "定", "行", "学", "法", "所",
42869 "民", "得", "经", "十", "三", "之", "进", "着", "等", "部",
42870 "度", "家", "电", "力", "里", "如", "水", "化", "高", "自",
42871 "二", "理", "起", "小", "物", "现", "实", "加", "量", "都",
42872 "两", "体", "制", "机", "当", "使", "点", "从", "业", "本",
42873 "去", "把", "性", "好", "应", "开", "它", "合", "还", "因",
42874 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
42875 "那", "社", "义", "事", "平", "形", "相", "全", "表", "间",
42876 "样", "与", "关", "各", "重", "新", "线", "内", "数", "正",
42877 "心", "反", "你", "明", "看", "原", "又", "么", "利", "比",
42878 "或", "但", "质", "气", "第", "向", "道", "命", "此", "变",
42879 "条", "只", "没", "结", "解", "问", "意", "建", "月", "公",
42880 "无", "系", "军", "很", "情", "者", "最", "立", "代", "想",
42881 "已", "通", "并", "提", "直", "题", "党", "程", "展", "五",
42882 "果", "料", "象", "员", "革", "位", "入", "常", "文", "总",
42883 "次", "品", "式", "活", "设", "及", "管", "特", "件", "长",
42884 "求", "老", "头", "基", "资", "边", "流", "路", "级", "少",
42885 "图", "山", "统", "接", "知", "较", "将", "组", "见", "计",
42886 "别", "她", "手", "角", "期", "根", "论", "运", "农", "指",
42887 "几", "九", "区", "强", "放", "决", "西", "被", "干", "做",
42888 "必", "战", "先", "回", "则", "任", "取", "据", "处", "队",
42889 "南", "给", "色", "光", "门", "即", "保", "治", "北", "造",
42890 "百", "规", "热", "领", "七", "海", "口", "东", "导", "器",
42891 "压", "志", "世", "金", "增", "争", "济", "阶", "油", "思",
42892 "术", "极", "交", "受", "联", "什", "认", "六", "共", "权",
42893 "收", "证", "改", "清", "美", "再", "采", "转", "更", "单",
42894 "风", "切", "打", "白", "教", "速", "花", "带", "安", "场",
42895 "身", "车", "例", "真", "务", "具", "万", "每", "目", "至",
42896 "达", "走", "积", "示", "议", "声", "报", "斗", "完", "类",
42897 "八", "离", "华", "名", "确", "才", "科", "张", "信", "马",
42898 "节", "话", "米", "整", "空", "元", "况", "今", "集", "温",
42899 "传", "土", "许", "步", "群", "广", "石", "记", "需", "段",
42900 "研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越",
42901 "织", "装", "影", "算", "低", "持", "音", "众", "书", "布",
42902 "复", "容", "儿", "须", "际", "商", "非", "验", "连", "断",
42903 "深", "难", "近", "矿", "千", "周", "委", "素", "技", "备",
42904 "半", "办", "青", "省", "列", "习", "响", "约", "支", "般",
42905 "史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克",
42906 "何", "除", "消", "构", "府", "称", "太", "准", "精", "值",
42907 "号", "率", "族", "维", "划", "选", "标", "写", "存", "候",
42908 "毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼",
42909 "王", "按", "格", "养", "易", "置", "派", "层", "片", "始",
42910 "却", "专", "状", "育", "厂", "京", "识", "适", "属", "圆",
42911 "包", "火", "住", "调", "满", "县", "局", "照", "参", "红",
42912 "细", "引", "听", "该", "铁", "价", "严", "首", "底", "液",
42913 "官", "德", "随", "病", "苏", "失", "尔", "死", "讲", "配",
42914 "女", "黄", "推", "显", "谈", "罪", "神", "艺", "呢", "席",
42915 "含", "企", "望", "密", "批", "营", "项", "防", "举", "球",
42916 "英", "氧", "势", "告", "李", "台", "落", "木", "帮", "轮",
42917 "破", "亚", "师", "围", "注", "远", "字", "材", "排", "供",
42918 "河", "态", "封", "另", "施", "减", "树", "溶", "怎", "止",
42919 "案", "言", "士", "均", "武", "固", "叶", "鱼", "波", "视",
42920 "仅", "费", "紧", "爱", "左", "章", "早", "朝", "害", "续",
42921 "轻", "服", "试", "食", "充", "兵", "源", "判", "护", "司",
42922 "足", "某", "练", "差", "致", "板", "田", "降", "黑", "犯",
42923 "负", "击", "范", "继", "兴", "似", "余", "坚", "曲", "输",
42924 "修", "故", "城", "夫", "够", "送", "笔", "船", "占", "右",
42925 "财", "吃", "富", "春", "职", "觉", "汉", "画", "功", "巴",
42926 "跟", "虽", "杂", "飞", "检", "吸", "助", "升", "阳", "互",
42927 "初", "创", "抗", "考", "投", "坏", "策", "古", "径", "换",
42928 "未", "跑", "留", "钢", "曾", "端", "责", "站", "简", "述",
42929 "钱", "副", "尽", "帝", "射", "草", "冲", "承", "独", "令",
42930 "限", "阿", "宣", "环", "双", "请", "超", "微", "让", "控",
42931 "州", "良", "轴", "找", "否", "纪", "益", "依", "优", "顶",
42932 "础", "载", "倒", "房", "突", "坐", "粉", "敌", "略", "客",
42933 "袁", "冷", "胜", "绝", "析", "块", "剂", "测", "丝", "协",
42934 "诉", "念", "陈", "仍", "罗", "盐", "友", "洋", "错", "苦",
42935 "夜", "刑", "移", "频", "逐", "靠", "混", "母", "短", "皮",
42936 "终", "聚", "汽", "村", "云", "哪", "既", "距", "卫", "停",
42937 "烈", "央", "察", "烧", "迅", "境", "若", "印", "洲", "刻",
42938 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
42939 "侵", "吧", "甲", "游", "久", "菜", "味", "旧", "模", "湖",
42940 "货", "损", "预", "阻", "毫", "普", "稳", "乙", "妈", "植",
42941 "息", "扩", "银", "语", "挥", "酒", "守", "拿", "序", "纸",
42942 "医", "缺", "雨", "吗", "针", "刘", "啊", "急", "唱", "误",
42943 "训", "愿", "审", "附", "获", "茶", "鲜", "粮", "斤", "孩",
42944 "脱", "硫", "肥", "善", "龙", "演", "父", "渐", "血", "欢",
42945 "械", "掌", "歌", "沙", "刚", "攻", "谓", "盾", "讨", "晚",
42946 "粒", "乱", "燃", "矛", "乎", "杀", "药", "宁", "鲁", "贵",
42947 "钟", "煤", "读", "班", "伯", "香", "介", "迫", "句", "丰",
42948 "培", "握", "兰", "担", "弦", "蛋", "沉", "假", "穿", "执",
42949 "答", "乐", "谁", "顺", "烟", "缩", "征", "脸", "喜", "松",
42950 "脚", "困", "异", "免", "背", "星", "福", "买", "染", "井",
42951 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "静", "补",
42952 "评", "翻", "肉", "践", "尼", "衣", "宽", "扬", "棉", "希",
42953 "伤", "操", "垂", "秋", "宜", "氢", "套", "督", "振", "架",
42954 "亮", "末", "宪", "庆", "编", "牛", "触", "映", "雷", "销",
42955 "诗", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
42956 "绿", "晶", "厚", "盟", "衡", "鸡", "孙", "延", "危", "胶",
42957 "屋", "乡", "临", "陆", "顾", "掉", "呀", "灯", "岁", "措",
42958 "束", "耐", "剧", "玉", "赵", "跳", "哥", "季", "课", "凯",
42959 "胡", "额", "款", "绍", "卷", "齐", "伟", "蒸", "殖", "永",
42960 "宗", "苗", "川", "炉", "岩", "弱", "零", "杨", "奏", "沿",
42961 "露", "杆", "探", "滑", "镇", "饭", "浓", "航", "怀", "赶",
42962 "库", "夺", "伊", "灵", "税", "途", "灭", "赛", "归", "召",
42963 "鼓", "播", "盘", "裁", "险", "康", "唯", "录", "菌", "纯",
42964 "借", "糖", "盖", "横", "符", "私", "努", "堂", "域", "枪",
42965 "润", "幅", "哈", "竟", "熟", "虫", "泽", "脑", "壤", "碳",
42966 "欧", "遍", "侧", "寨", "敢", "彻", "虑", "斜", "薄", "庭",
42967 "纳", "弹", "饲", "伸", "折", "麦", "湿", "暗", "荷", "瓦",
42968 "塞", "床", "筑", "恶", "户", "访", "塔", "奇", "透", "梁",
42969 "刀", "旋", "迹", "卡", "氯", "遇", "份", "毒", "泥", "退",
42970 "洗", "摆", "灰", "彩", "卖", "耗", "夏", "择", "忙", "铜",
42971 "献", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
42972 "阵", "阴", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
42973 "楼", "避", "谋", "吨", "野", "猪", "旗", "累", "偏", "典",
42974 "馆", "索", "秦", "脂", "潮", "爷", "豆", "忽", "托", "惊",
42975 "塑", "遗", "愈", "朱", "替", "纤", "粗", "倾", "尚", "痛",
42976 "楚", "谢", "奋", "购", "磨", "君", "池", "旁", "碎", "骨",
42977 "监", "捕", "弟", "暴", "割", "贯", "殊", "释", "词", "亡",
42978 "壁", "顿", "宝", "午", "尘", "闻", "揭", "炮", "残", "冬",
42979 "桥", "妇", "警", "综", "招", "吴", "付", "浮", "遭", "徐",
42980 "您", "摇", "谷", "赞", "箱", "隔", "订", "男", "吹", "园",
42981 "纷", "唐", "败", "宋", "玻", "巨", "耕", "坦", "荣", "闭",
42982 "湾", "键", "凡", "驻", "锅", "救", "恩", "剥", "凝", "碱",
42983 "齿", "截", "炼", "麻", "纺", "禁", "废", "盛", "版", "缓",
42984 "净", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
42985 "庄", "街", "藏", "姑", "贸", "腐", "奴", "啦", "惯", "乘",
42986 "伙", "恢", "匀", "纱", "扎", "辩", "耳", "彪", "臣", "亿",
42987 "璃", "抵", "脉", "秀", "萨", "俄", "网", "舞", "店", "喷",
42988 "纵", "寸", "汗", "挂", "洪", "贺", "闪", "柬", "爆", "烯",
42989 "津", "稻", "墙", "软", "勇", "像", "滚", "厘", "蒙", "芳",
42990 "肯", "坡", "柱", "荡", "腿", "仪", "旅", "尾", "轧", "冰",
42991 "贡", "登", "黎", "削", "钻", "勒", "逃", "障", "氨", "郭",
42992 "峰", "币", "港", "伏", "轨", "亩", "毕", "擦", "莫", "刺",
42993 "浪", "秘", "援", "株", "健", "售", "股", "岛", "甘", "泡",
42994 "睡", "童", "铸", "汤", "阀", "休", "汇", "舍", "牧", "绕",
42995 "炸", "哲", "磷", "绩", "朋", "淡", "尖", "启", "陷", "柴",
42996 "呈", "徒", "颜", "泪", "稍", "忘", "泵", "蓝", "拖", "洞",
42997 "授", "镜", "辛", "壮", "锋", "贫", "虚", "弯", "摩", "泰",
42998 "幼", "廷", "尊", "窗", "纲", "弄", "隶", "疑", "氏", "宫",
42999 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "违",
43000 "夹", "腰", "缘", "珠", "穷", "森", "枝", "竹", "沟", "催",
43001 "绳", "忆", "邦", "剩", "幸", "浆", "栏", "拥", "牙", "贮",
43002 "礼", "滤", "钠", "纹", "罢", "拍", "咱", "喊", "袖", "埃",
43003 "勤", "罚", "焦", "潜", "伍", "墨", "欲", "缝", "姓", "刊",
43004 "饱", "仿", "奖", "铝", "鬼", "丽", "跨", "默", "挖", "链",
43005 "扫", "喝", "袋", "炭", "污", "幕", "诸", "弧", "励", "梅",
43006 "奶", "洁", "灾", "舟", "鉴", "苯", "讼", "抱", "毁", "懂",
43007 "寒", "智", "埔", "寄", "届", "跃", "渡", "挑", "丹", "艰",
43008 "贝", "碰", "拔", "爹", "戴", "码", "梦", "芽", "熔", "赤",
43009 "渔", "哭", "敬", "颗", "奔", "铅", "仲", "虎", "稀", "妹",
43010 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "仓", "魏",
43011 "锐", "晓", "氮", "兼", "隐", "碍", "赫", "拨", "忠", "肃",
43012 "缸", "牵", "抢", "博", "巧", "壳", "兄", "杜", "讯", "诚",
43013 "碧", "祥", "柯", "页", "巡", "矩", "悲", "灌", "龄", "伦",
43014 "票", "寻", "桂", "铺", "圣", "恐", "恰", "郑", "趣", "抬",
43015 "荒", "腾", "贴", "柔", "滴", "猛", "阔", "辆", "妻", "填",
43016 "撤", "储", "签", "闹", "扰", "紫", "砂", "递", "戏", "吊",
43017 "陶", "伐", "喂", "疗", "瓶", "婆", "抚", "臂", "摸", "忍",
43018 "虾", "蜡", "邻", "胸", "巩", "挤", "偶", "弃", "槽", "劲",
43019 "乳", "邓", "吉", "仁", "烂", "砖", "租", "乌", "舰", "伴",
43020 "瓜", "浅", "丙", "暂", "燥", "橡", "柳", "迷", "暖", "牌",
43021 "秧", "胆", "详", "簧", "踏", "瓷", "谱", "呆", "宾", "糊",
43022 "洛", "辉", "愤", "竞", "隙", "怒", "粘", "乃", "绪", "肩",
43023 "籍", "敏", "涂", "熙", "皆", "侦", "悬", "掘", "享", "纠",
43024 "醒", "狂", "锁", "淀", "恨", "牲", "霸", "爬", "赏", "逆",
43025 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鸭",
43026 "趋", "凤", "晨", "畜", "辈", "秩", "卵", "署", "梯", "炎",
43027 "滩", "棋", "驱", "筛", "峡", "冒", "啥", "寿", "译", "浸",
43028 "泉", "帽", "迟", "硅", "疆", "贷", "漏", "稿", "冠", "嫩",
43029 "胁", "芯", "牢", "叛", "蚀", "奥", "鸣", "岭", "羊", "凭",
43030 "串", "塘", "绘", "酵", "融", "盆", "锡", "庙", "筹", "冻",
43031 "辅", "摄", "袭", "筋", "拒", "僚", "旱", "钾", "鸟", "漆",
43032 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韩", "逼", "扭",
43033 "侨", "凉", "挺", "碗", "栽", "炒", "杯", "患", "馏", "劝",
43034 "豪", "辽", "勃", "鸿", "旦", "吏", "拜", "狗", "埋", "辊",
43035 "掩", "饮", "搬", "骂", "辞", "勾", "扣", "估", "蒋", "绒",
43036 "雾", "丈", "朵", "姆", "拟", "宇", "辑", "陕", "雕", "偿",
43037 "蓄", "崇", "剪", "倡", "厅", "咬", "驶", "薯", "刷", "斥",
43038 "番", "赋", "奉", "佛", "浇", "漫", "曼", "扇", "钙", "桃",
43039 "扶", "仔", "返", "俗", "亏", "腔", "鞋", "棱", "覆", "框",
43040 "悄", "叔", "撞", "骗", "勘", "旺", "沸", "孤", "吐", "孟",
43041 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "胀", "谐", "抛",
43042 "霉", "桑", "岗", "嘛", "衰", "盗", "渗", "脏", "赖", "涌",
43043 "甜", "曹", "阅", "肌", "哩", "厉", "烃", "纬", "毅", "昨",
43044 "伪", "症", "煮", "叹", "钉", "搭", "茎", "笼", "酷", "偷",
43045 "弓", "锥", "恒", "杰", "坑", "鼻", "翼", "纶", "叙", "狱",
43046 "逮", "罐", "络", "棚", "抑", "膨", "蔬", "寺", "骤", "穆",
43047 "冶", "枯", "册", "尸", "凸", "绅", "坯", "牺", "焰", "轰",
43048 "欣", "晋", "瘦", "御", "锭", "锦", "丧", "旬", "锻", "垄",
43049 "搜", "扑", "邀", "亭", "酯", "迈", "舒", "脆", "酶", "闲",
43050 "忧", "酚", "顽", "羽", "涨", "卸", "仗", "陪", "辟", "惩",
43051 "杭", "姚", "肚", "捉", "飘", "漂", "昆", "欺", "吾", "郎",
43052 "烷", "汁", "呵", "饰", "萧", "雅", "邮", "迁", "燕", "撒",
43053 "姻", "赴", "宴", "烦", "债", "帐", "斑", "铃", "旨", "醇",
43054 "董", "饼", "雏", "姿", "拌", "傅", "腹", "妥", "揉", "贤",
43055 "拆", "歪", "葡", "胺", "丢", "浩", "徽", "昂", "垫", "挡",
43056 "览", "贪", "慰", "缴", "汪", "慌", "冯", "诺", "姜", "谊",
43057 "凶", "劣", "诬", "耀", "昏", "躺", "盈", "骑", "乔", "溪",
43058 "丛", "卢", "抹", "闷", "咨", "刮", "驾", "缆", "悟", "摘",
43059 "铒", "掷", "颇", "幻", "柄", "惠", "惨", "佳", "仇", "腊",
43060 "窝", "涤", "剑", "瞧", "堡", "泼", "葱", "罩", "霍", "捞",
43061 "胎", "苍", "滨", "俩", "捅", "湘", "砍", "霞", "邵", "萄",
43062 "疯", "淮", "遂", "熊", "粪", "烘", "宿", "档", "戈", "驳",
43063 "嫂", "裕", "徙", "箭", "捐", "肠", "撑", "晒", "辨", "殿",
43064 "莲", "摊", "搅", "酱", "屏", "疫", "哀", "蔡", "堵", "沫",
43065 "皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝",
43066 "巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝",
43067 "卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ]
43068 </script>
43069 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43070 WORDLISTS["chinese_traditional"] = [
43071 "的", "一", "是", "在", "不", "了", "有", "和", "人", "這",
43072 "中", "大", "為", "上", "個", "國", "我", "以", "要", "他",
43073 "時", "來", "用", "們", "生", "到", "作", "地", "於", "出",
43074 "就", "分", "對", "成", "會", "可", "主", "發", "年", "動",
43075 "同", "工", "也", "能", "下", "過", "子", "說", "產", "種",
43076 "面", "而", "方", "後", "多", "定", "行", "學", "法", "所",
43077 "民", "得", "經", "十", "三", "之", "進", "著", "等", "部",
43078 "度", "家", "電", "力", "裡", "如", "水", "化", "高", "自",
43079 "二", "理", "起", "小", "物", "現", "實", "加", "量", "都",
43080 "兩", "體", "制", "機", "當", "使", "點", "從", "業", "本",
43081 "去", "把", "性", "好", "應", "開", "它", "合", "還", "因",
43082 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
43083 "那", "社", "義", "事", "平", "形", "相", "全", "表", "間",
43084 "樣", "與", "關", "各", "重", "新", "線", "內", "數", "正",
43085 "心", "反", "你", "明", "看", "原", "又", "麼", "利", "比",
43086 "或", "但", "質", "氣", "第", "向", "道", "命", "此", "變",
43087 "條", "只", "沒", "結", "解", "問", "意", "建", "月", "公",
43088 "無", "系", "軍", "很", "情", "者", "最", "立", "代", "想",
43089 "已", "通", "並", "提", "直", "題", "黨", "程", "展", "五",
43090 "果", "料", "象", "員", "革", "位", "入", "常", "文", "總",
43091 "次", "品", "式", "活", "設", "及", "管", "特", "件", "長",
43092 "求", "老", "頭", "基", "資", "邊", "流", "路", "級", "少",
43093 "圖", "山", "統", "接", "知", "較", "將", "組", "見", "計",
43094 "別", "她", "手", "角", "期", "根", "論", "運", "農", "指",
43095 "幾", "九", "區", "強", "放", "決", "西", "被", "幹", "做",
43096 "必", "戰", "先", "回", "則", "任", "取", "據", "處", "隊",
43097 "南", "給", "色", "光", "門", "即", "保", "治", "北", "造",
43098 "百", "規", "熱", "領", "七", "海", "口", "東", "導", "器",
43099 "壓", "志", "世", "金", "增", "爭", "濟", "階", "油", "思",
43100 "術", "極", "交", "受", "聯", "什", "認", "六", "共", "權",
43101 "收", "證", "改", "清", "美", "再", "採", "轉", "更", "單",
43102 "風", "切", "打", "白", "教", "速", "花", "帶", "安", "場",
43103 "身", "車", "例", "真", "務", "具", "萬", "每", "目", "至",
43104 "達", "走", "積", "示", "議", "聲", "報", "鬥", "完", "類",
43105 "八", "離", "華", "名", "確", "才", "科", "張", "信", "馬",
43106 "節", "話", "米", "整", "空", "元", "況", "今", "集", "溫",
43107 "傳", "土", "許", "步", "群", "廣", "石", "記", "需", "段",
43108 "研", "界", "拉", "林", "律", "叫", "且", "究", "觀", "越",
43109 "織", "裝", "影", "算", "低", "持", "音", "眾", "書", "布",
43110 "复", "容", "兒", "須", "際", "商", "非", "驗", "連", "斷",
43111 "深", "難", "近", "礦", "千", "週", "委", "素", "技", "備",
43112 "半", "辦", "青", "省", "列", "習", "響", "約", "支", "般",
43113 "史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克",
43114 "何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
43115 "號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
43116 "毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
43117 "王", "按", "格", "養", "易", "置", "派", "層", "片", "始",
43118 "卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓",
43119 "包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅",
43120 "細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液",
43121 "官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配",
43122 "女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席",
43123 "含", "企", "望", "密", "批", "營", "項", "防", "舉", "球",
43124 "英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪",
43125 "破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供",
43126 "河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止",
43127 "案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視",
43128 "僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續",
43129 "輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司",
43130 "足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯",
43131 "負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸",
43132 "修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右",
43133 "財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴",
43134 "跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互",
43135 "初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換",
43136 "未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述",
43137 "錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令",
43138 "限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控",
43139 "州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂",
43140 "礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客",
43141 "袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協",
43142 "訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦",
43143 "夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮",
43144 "終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停",
43145 "烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻",
43146 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
43147 "侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖",
43148 "貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植",
43149 "息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙",
43150 "醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤",
43151 "訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩",
43152 "脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡",
43153 "械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚",
43154 "粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴",
43155 "鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐",
43156 "培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執",
43157 "答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松",
43158 "腳", "困", "異", "免", "背", "星", "福", "買", "染", "井",
43159 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補",
43160 "評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希",
43161 "傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架",
43162 "亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷",
43163 "詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
43164 "綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠",
43165 "屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措",
43166 "束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱",
43167 "胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永",
43168 "宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿",
43169 "露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕",
43170 "庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召",
43171 "鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純",
43172 "借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍",
43173 "潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳",
43174 "歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭",
43175 "納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦",
43176 "塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁",
43177 "刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退",
43178 "洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅",
43179 "獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
43180 "陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
43181 "樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典",
43182 "館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚",
43183 "塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛",
43184 "楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨",
43185 "監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡",
43186 "壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬",
43187 "橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐",
43188 "您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園",
43189 "紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉",
43190 "灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼",
43191 "齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩",
43192 "淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
43193 "莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘",
43194 "夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億",
43195 "璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴",
43196 "縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯",
43197 "津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳",
43198 "肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰",
43199 "貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭",
43200 "峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺",
43201 "浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡",
43202 "睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞",
43203 "炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴",
43204 "呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞",
43205 "授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰",
43206 "幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮",
43207 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違",
43208 "夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催",
43209 "繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯",
43210 "禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃",
43211 "勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊",
43212 "飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈",
43213 "掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅",
43214 "奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂",
43215 "寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱",
43216 "貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤",
43217 "漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹",
43218 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏",
43219 "銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅",
43220 "缸", "牽", "搶", "博", "巧", "殼", "兄", "杜", "訊", "誠",
43221 "碧", "祥", "柯", "頁", "巡", "矩", "悲", "灌", "齡", "倫",
43222 "票", "尋", "桂", "鋪", "聖", "恐", "恰", "鄭", "趣", "抬",
43223 "荒", "騰", "貼", "柔", "滴", "猛", "闊", "輛", "妻", "填",
43224 "撤", "儲", "簽", "鬧", "擾", "紫", "砂", "遞", "戲", "吊",
43225 "陶", "伐", "餵", "療", "瓶", "婆", "撫", "臂", "摸", "忍",
43226 "蝦", "蠟", "鄰", "胸", "鞏", "擠", "偶", "棄", "槽", "勁",
43227 "乳", "鄧", "吉", "仁", "爛", "磚", "租", "烏", "艦", "伴",
43228 "瓜", "淺", "丙", "暫", "燥", "橡", "柳", "迷", "暖", "牌",
43229 "秧", "膽", "詳", "簧", "踏", "瓷", "譜", "呆", "賓", "糊",
43230 "洛", "輝", "憤", "競", "隙", "怒", "粘", "乃", "緒", "肩",
43231 "籍", "敏", "塗", "熙", "皆", "偵", "懸", "掘", "享", "糾",
43232 "醒", "狂", "鎖", "淀", "恨", "牲", "霸", "爬", "賞", "逆",
43233 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鴨",
43234 "趨", "鳳", "晨", "畜", "輩", "秩", "卵", "署", "梯", "炎",
43235 "灘", "棋", "驅", "篩", "峽", "冒", "啥", "壽", "譯", "浸",
43236 "泉", "帽", "遲", "矽", "疆", "貸", "漏", "稿", "冠", "嫩",
43237 "脅", "芯", "牢", "叛", "蝕", "奧", "鳴", "嶺", "羊", "憑",
43238 "串", "塘", "繪", "酵", "融", "盆", "錫", "廟", "籌", "凍",
43239 "輔", "攝", "襲", "筋", "拒", "僚", "旱", "鉀", "鳥", "漆",
43240 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭",
43241 "僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸",
43242 "豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥",
43243 "掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨",
43244 "霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償",
43245 "蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥",
43246 "番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃",
43247 "扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框",
43248 "悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟",
43249 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋",
43250 "黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧",
43251 "甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨",
43252 "偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷",
43253 "弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄",
43254 "逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆",
43255 "冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟",
43256 "欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟",
43257 "搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒",
43258 "憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲",
43259 "杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎",
43260 "烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒",
43261 "姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇",
43262 "董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢",
43263 "拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋",
43264 "覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼",
43265 "兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪",
43266 "叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘",
43267 "鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘",
43268 "窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈",
43269 "胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄",
43270 "瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁",
43271 "嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿",
43272 "蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫",
43273 "皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩",
43274 "巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗",
43275 "卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ]
43276 </script>
43277 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43278 WORDLISTS["french"] = [
43279 "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
43280 "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
43281 "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
43282 "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
43283 "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
43284 "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
43285 "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
43286 "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
43287 "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
43288 "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
43289 "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
43290 "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
43291 "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
43292 "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
43293 "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
43294 "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
43295 "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
43296 "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
43297 "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
43298 "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
43299 "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
43300 "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
43301 "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
43302 "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
43303 "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
43304 "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
43305 "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
43306 "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
43307 "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
43308 "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
43309 "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
43310 "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
43311 "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
43312 "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
43313 "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
43314 "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
43315 "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
43316 "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
43317 "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
43318 "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
43319 "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
43320 "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
43321 "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
43322 "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
43323 "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
43324 "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
43325 "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
43326 "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
43327 "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
43328 "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
43329 "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
43330 "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
43331 "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
43332 "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
43333 "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
43334 "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
43335 "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
43336 "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
43337 "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
43338 "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
43339 "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
43340 "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
43341 "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
43342 "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
43343 "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
43344 "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
43345 "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
43346 "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
43347 "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
43348 "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
43349 "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
43350 "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
43351 "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
43352 "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
43353 "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
43354 "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
43355 "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
43356 "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
43357 "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
43358 "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
43359 "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
43360 "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
43361 "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
43362 "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
43363 "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
43364 "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
43365 "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
43366 "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
43367 "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
43368 "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
43369 "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
43370 "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
43371 "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
43372 "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
43373 "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
43374 "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
43375 "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
43376 "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
43377 "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
43378 "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
43379 "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
43380 "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
43381 "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
43382 "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
43383 "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
43384 "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
43385 "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
43386 "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
43387 "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
43388 "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
43389 "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
43390 "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
43391 "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
43392 "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
43393 "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
43394 "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
43395 "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
43396 "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
43397 "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
43398 "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
43399 "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
43400 "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
43401 "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
43402 "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
43403 "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
43404 "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
43405 "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
43406 "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
43407 "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
43408 "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
43409 "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
43410 "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
43411 "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
43412 "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
43413 "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
43414 "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
43415 "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
43416 "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
43417 "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
43418 "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
43419 "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
43420 "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
43421 "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
43422 "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
43423 "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
43424 "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
43425 "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
43426 "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
43427 "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
43428 "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
43429 "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
43430 "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
43431 "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
43432 "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
43433 "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
43434 "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
43435 "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
43436 "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
43437 "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
43438 "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
43439 "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
43440 "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
43441 "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
43442 "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
43443 "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
43444 "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
43445 "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
43446 "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
43447 "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
43448 "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
43449 "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
43450 "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
43451 "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
43452 "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
43453 "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
43454 "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
43455 "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
43456 "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
43457 "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
43458 "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
43459 "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
43460 "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
43461 "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
43462 "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
43463 "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
43464 "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
43465 "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
43466 "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
43467 "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
43468 "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
43469 "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
43470 "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
43471 "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
43472 "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
43473 "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
43474 "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
43475 "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
43476 "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
43477 "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
43478 "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
43479 "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
43480 "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
43481 "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
43482 "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
43483 "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
43484 </script>
43485 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43486 WORDLISTS["italian"] = [
43487 "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
43488 "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
43489 "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
43490 "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
43491 "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
43492 "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
43493 "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
43494 "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
43495 "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
43496 "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
43497 "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
43498 "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
43499 "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
43500 "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
43501 "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
43502 "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
43503 "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
43504 "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
43505 "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
43506 "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
43507 "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
43508 "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
43509 "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
43510 "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
43511 "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
43512 "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
43513 "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
43514 "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
43515 "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
43516 "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
43517 "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
43518 "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
43519 "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
43520 "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
43521 "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
43522 "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
43523 "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
43524 "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
43525 "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
43526 "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
43527 "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
43528 "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
43529 "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
43530 "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
43531 "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
43532 "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
43533 "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
43534 "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
43535 "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
43536 "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
43537 "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
43538 "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
43539 "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
43540 "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
43541 "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
43542 "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
43543 "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
43544 "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
43545 "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
43546 "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
43547 "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
43548 "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
43549 "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
43550 "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
43551 "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
43552 "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
43553 "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
43554 "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
43555 "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
43556 "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
43557 "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
43558 "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
43559 "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
43560 "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
43561 "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
43562 "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
43563 "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
43564 "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
43565 "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
43566 "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
43567 "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
43568 "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
43569 "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
43570 "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
43571 "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
43572 "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
43573 "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
43574 "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
43575 "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
43576 "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
43577 "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
43578 "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
43579 "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
43580 "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
43581 "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
43582 "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
43583 "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
43584 "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
43585 "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
43586 "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
43587 "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
43588 "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
43589 "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
43590 "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
43591 "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
43592 "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
43593 "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
43594 "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
43595 "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
43596 "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
43597 "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
43598 "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
43599 "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
43600 "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
43601 "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
43602 "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
43603 "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
43604 "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
43605 "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
43606 "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
43607 "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
43608 "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
43609 "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
43610 "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
43611 "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
43612 "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
43613 "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
43614 "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
43615 "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
43616 "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
43617 "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
43618 "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
43619 "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
43620 "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
43621 "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
43622 "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
43623 "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
43624 "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
43625 "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
43626 "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
43627 "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
43628 "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
43629 "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
43630 "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
43631 "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
43632 "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
43633 "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
43634 "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
43635 "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
43636 "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
43637 "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
43638 "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
43639 "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
43640 "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
43641 "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
43642 "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
43643 "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
43644 "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
43645 "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
43646 "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
43647 "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
43648 "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
43649 "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
43650 "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
43651 "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
43652 "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
43653 "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
43654 "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
43655 "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
43656 "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
43657 "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
43658 "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
43659 "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
43660 "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
43661 "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
43662 "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
43663 "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
43664 "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
43665 "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
43666 "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
43667 "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
43668 "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
43669 "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
43670 "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
43671 "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
43672 "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
43673 "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
43674 "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
43675 "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
43676 "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
43677 "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
43678 "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
43679 "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
43680 "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
43681 "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
43682 "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
43683 "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
43684 "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
43685 "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
43686 "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
43687 "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
43688 "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
43689 "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
43690 "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
43691 "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
43692 </script>
43693 <script>/*
43694 * Copyright (c) 2013 Pavol Rusnak
43695 *
43696 * Permission is hereby granted, free of charge, to any person obtaining a copy of
43697 * this software and associated documentation files (the "Software"), to deal in
43698 * the Software without restriction, including without limitation the rights to
43699 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
43700 * of the Software, and to permit persons to whom the Software is furnished to do
43701 * so, subject to the following conditions:
43702 *
43703 * The above copyright notice and this permission notice shall be included in all
43704 * copies or substantial portions of the Software.
43705 *
43706 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
43707 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
43708 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
43709 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
43710 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
43711 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
43712 */
43713
43714 /*
43715 * Javascript port from python by Ian Coleman
43716 *
43717 * Requires code from sjcl
43718 * https://github.com/bitwiseshiftleft/sjcl
43719 */
43720
43721 var Mnemonic = function(language) {
43722
43723 var PBKDF2_ROUNDS = 2048;
43724 var RADIX = 2048;
43725
43726 var self = this;
43727 var wordlist = [];
43728
43729 var hmacSHA512 = function(key) {
43730 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
43731 this.encrypt = function() {
43732 return hasher.encrypt.apply(hasher, arguments);
43733 };
43734 };
43735
43736 function init() {
43737 wordlist = WORDLISTS[language];
43738 if (wordlist.length != RADIX) {
43739 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
43740 throw err;
43741 }
43742 }
43743
43744 self.generate = function(strength) {
43745 strength = strength || 128;
43746 var r = strength % 32;
43747 if (r > 0) {
43748 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
43749 }
43750 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
43751 if (!hasStrongCrypto) {
43752 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
43753 }
43754 var buffer = new Uint8Array(strength / 8);
43755 var data = crypto.getRandomValues(buffer);
43756 return self.toMnemonic(data);
43757 }
43758
43759 self.toMnemonic = function(byteArray) {
43760 if (byteArray.length % 4 > 0) {
43761 throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).'
43762 }
43763
43764 //h = hashlib.sha256(data).hexdigest()
43765 var data = byteArrayToWordArray(byteArray);
43766 var hash = sjcl.hash.sha256.hash(data);
43767 var h = sjcl.codec.hex.fromBits(hash);
43768
43769 // b is a binary string, eg '00111010101100...'
43770 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
43771 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
43772 //
43773 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
43774 // c = bin(int(h, 16))[2:].zfill(256)
43775 // d = c[:len(data) * 8 / 32]
43776 var a = byteArrayToBinaryString(byteArray);
43777 var c = zfill(hexStringToBinaryString(h), 256);
43778 var d = c.substring(0, byteArray.length * 8 / 32);
43779 // b = line1 + line2
43780 var b = a + d;
43781
43782 var result = [];
43783 var blen = b.length / 11;
43784 for (var i=0; i<blen; i++) {
43785 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
43786 result.push(wordlist[idx]);
43787 }
43788 return self.joinWords(result);
43789 }
43790
43791 self.check = function(mnemonic) {
43792 var mnemonic = self.splitWords(mnemonic);
43793 if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
43794 return false
43795 }
43796 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
43797 var idx = [];
43798 for (var i=0; i<mnemonic.length; i++) {
43799 var word = mnemonic[i];
43800 var wordIndex = wordlist.indexOf(word);
43801 if (wordIndex == -1) {
43802 return false;
43803 }
43804 var binaryIndex = zfill(wordIndex.toString(2), 11);
43805 idx.push(binaryIndex);
43806 }
43807 var b = idx.join('');
43808 var l = b.length;
43809 //d = b[:l / 33 * 32]
43810 //h = b[-l / 33:]
43811 var d = b.substring(0, l / 33 * 32);
43812 var h = b.substring(l - l / 33, l);
43813 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
43814 var nd = binaryStringToWordArray(d);
43815 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
43816 var ndHash = sjcl.hash.sha256.hash(nd);
43817 var ndHex = sjcl.codec.hex.fromBits(ndHash);
43818 var ndBstr = zfill(hexStringToBinaryString(ndHex), 256);
43819 var nh = ndBstr.substring(0,l/33);
43820 return h == nh;
43821 }
43822
43823 self.toSeed = function(mnemonic, passphrase) {
43824 passphrase = passphrase || '';
43825 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
43826 var mnemonicNormalized = self.normalizeString(mnemonic);
43827 passphrase = self.normalizeString(passphrase)
43828 passphrase = "mnemonic" + passphrase;
43829 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
43830 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
43831 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
43832 var hashHex = sjcl.codec.hex.fromBits(result);
43833 return hashHex;
43834 }
43835
43836 self.splitWords = function(mnemonic) {
43837 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
43838 }
43839
43840 self.joinWords = function(words) {
43841 // Set space correctly depending on the language
43842 // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
43843 var space = " ";
43844 if (language == "japanese") {
43845 space = "\u3000"; // ideographic space
43846 }
43847 return words.join(space);
43848 }
43849
43850 self.normalizeString = function(str) {
43851 if (typeof str.normalize == "function") {
43852 return str.normalize("NFKD");
43853 }
43854 else {
43855 // TODO decide how to handle this in the future.
43856 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
43857 return str;
43858 }
43859 }
43860
43861 function byteArrayToWordArray(data) {
43862 var a = [];
43863 for (var i=0; i<data.length/4; i++) {
43864 v = 0;
43865 v += data[i*4 + 0] << 8 * 3;
43866 v += data[i*4 + 1] << 8 * 2;
43867 v += data[i*4 + 2] << 8 * 1;
43868 v += data[i*4 + 3] << 8 * 0;
43869 a.push(v);
43870 }
43871 return a;
43872 }
43873
43874 function byteArrayToBinaryString(data) {
43875 var bin = "";
43876 for (var i=0; i<data.length; i++) {
43877 bin += zfill(data[i].toString(2), 8);
43878 }
43879 return bin;
43880 }
43881
43882 function hexStringToBinaryString(hexString) {
43883 binaryString = "";
43884 for (var i=0; i<hexString.length; i++) {
43885 binaryString += zfill(parseInt(hexString[i], 16).toString(2),4);
43886 }
43887 return binaryString;
43888 }
43889
43890 function binaryStringToWordArray(binary) {
43891 var aLen = binary.length / 32;
43892 var a = [];
43893 for (var i=0; i<aLen; i++) {
43894 var valueStr = binary.substring(0,32);
43895 var value = parseInt(valueStr, 2);
43896 a.push(value);
43897 binary = binary.slice(32);
43898 }
43899 return a;
43900 }
43901
43902 // Pad a numeric string on the left with zero digits until the given width
43903 // is reached.
43904 // Note this differs to the python implementation because it does not
43905 // handle numbers starting with a sign.
43906 function zfill(source, length) {
43907 source = source.toString();
43908 while (source.length < length) {
43909 source = '0' + source;
43910 }
43911 return source;
43912 }
43913
43914 init();
43915
43916 }
43917 </script>
43918 <script>/*
43919 JavaScript BigInteger library version 0.9.1
43920 http://silentmatt.com/biginteger/
43921
43922 Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
43923 Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
43924 Licensed under the MIT license.
43925
43926 Support for arbitrary internal representation base was added by
43927 Vitaly Magerya.
43928 */
43929
43930 /*
43931 File: biginteger.js
43932
43933 Exports:
43934
43935 <BigInteger>
43936 */
43937 (function(exports) {
43938 "use strict";
43939 /*
43940 Class: BigInteger
43941 An arbitrarily-large integer.
43942
43943 <BigInteger> objects should be considered immutable. None of the "built-in"
43944 methods modify *this* or their arguments. All properties should be
43945 considered private.
43946
43947 All the methods of <BigInteger> instances can be called "statically". The
43948 static versions are convenient if you don't already have a <BigInteger>
43949 object.
43950
43951 As an example, these calls are equivalent.
43952
43953 > BigInteger(4).multiply(5); // returns BigInteger(20);
43954 > BigInteger.multiply(4, 5); // returns BigInteger(20);
43955
43956 > var a = 42;
43957 > var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
43958 */
43959
43960 var CONSTRUCT = {}; // Unique token to call "private" version of constructor
43961
43962 /*
43963 Constructor: BigInteger()
43964 Convert a value to a <BigInteger>.
43965
43966 Although <BigInteger()> is the constructor for <BigInteger> objects, it is
43967 best not to call it as a constructor. If *n* is a <BigInteger> object, it is
43968 simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
43969 without a radix argument.
43970
43971 > var n0 = BigInteger(); // Same as <BigInteger.ZERO>
43972 > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
43973 > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123
43974 > var n3 = BigInteger(n2); // Return n2, unchanged
43975
43976 The constructor form only takes an array and a sign. *n* must be an
43977 array of numbers in little-endian order, where each digit is between 0
43978 and BigInteger.base. The second parameter sets the sign: -1 for
43979 negative, +1 for positive, or 0 for zero. The array is *not copied and
43980 may be modified*. If the array contains only zeros, the sign parameter
43981 is ignored and is forced to zero.
43982
43983 > new BigInteger([5], -1): create a new BigInteger with value -5
43984
43985 Parameters:
43986
43987 n - Value to convert to a <BigInteger>.
43988
43989 Returns:
43990
43991 A <BigInteger> value.
43992
43993 See Also:
43994
43995 <parse>, <BigInteger>
43996 */
43997 function BigInteger(n, s, token) {
43998 if (token !== CONSTRUCT) {
43999 if (n instanceof BigInteger) {
44000 return n;
44001 }
44002 else if (typeof n === "undefined") {
44003 return ZERO;
44004 }
44005 return BigInteger.parse(n);
44006 }
44007
44008 n = n || []; // Provide the nullary constructor for subclasses.
44009 while (n.length && !n[n.length - 1]) {
44010 --n.length;
44011 }
44012 this._d = n;
44013 this._s = n.length ? (s || 1) : 0;
44014 }
44015
44016 BigInteger._construct = function(n, s) {
44017 return new BigInteger(n, s, CONSTRUCT);
44018 };
44019
44020 // Base-10 speedup hacks in parse, toString, exp10 and log functions
44021 // require base to be a power of 10. 10^7 is the largest such power
44022 // that won't cause a precision loss when digits are multiplied.
44023 var BigInteger_base = 10000000;
44024 var BigInteger_base_log10 = 7;
44025
44026 BigInteger.base = BigInteger_base;
44027 BigInteger.base_log10 = BigInteger_base_log10;
44028
44029 var ZERO = new BigInteger([], 0, CONSTRUCT);
44030 // Constant: ZERO
44031 // <BigInteger> 0.
44032 BigInteger.ZERO = ZERO;
44033
44034 var ONE = new BigInteger([1], 1, CONSTRUCT);
44035 // Constant: ONE
44036 // <BigInteger> 1.
44037 BigInteger.ONE = ONE;
44038
44039 var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
44040 // Constant: M_ONE
44041 // <BigInteger> -1.
44042 BigInteger.M_ONE = M_ONE;
44043
44044 // Constant: _0
44045 // Shortcut for <ZERO>.
44046 BigInteger._0 = ZERO;
44047
44048 // Constant: _1
44049 // Shortcut for <ONE>.
44050 BigInteger._1 = ONE;
44051
44052 /*
44053 Constant: small
44054 Array of <BigIntegers> from 0 to 36.
44055
44056 These are used internally for parsing, but useful when you need a "small"
44057 <BigInteger>.
44058
44059 See Also:
44060
44061 <ZERO>, <ONE>, <_0>, <_1>
44062 */
44063 BigInteger.small = [
44064 ZERO,
44065 ONE,
44066 /* Assuming BigInteger_base > 36 */
44067 new BigInteger( [2], 1, CONSTRUCT),
44068 new BigInteger( [3], 1, CONSTRUCT),
44069 new BigInteger( [4], 1, CONSTRUCT),
44070 new BigInteger( [5], 1, CONSTRUCT),
44071 new BigInteger( [6], 1, CONSTRUCT),
44072 new BigInteger( [7], 1, CONSTRUCT),
44073 new BigInteger( [8], 1, CONSTRUCT),
44074 new BigInteger( [9], 1, CONSTRUCT),
44075 new BigInteger([10], 1, CONSTRUCT),
44076 new BigInteger([11], 1, CONSTRUCT),
44077 new BigInteger([12], 1, CONSTRUCT),
44078 new BigInteger([13], 1, CONSTRUCT),
44079 new BigInteger([14], 1, CONSTRUCT),
44080 new BigInteger([15], 1, CONSTRUCT),
44081 new BigInteger([16], 1, CONSTRUCT),
44082 new BigInteger([17], 1, CONSTRUCT),
44083 new BigInteger([18], 1, CONSTRUCT),
44084 new BigInteger([19], 1, CONSTRUCT),
44085 new BigInteger([20], 1, CONSTRUCT),
44086 new BigInteger([21], 1, CONSTRUCT),
44087 new BigInteger([22], 1, CONSTRUCT),
44088 new BigInteger([23], 1, CONSTRUCT),
44089 new BigInteger([24], 1, CONSTRUCT),
44090 new BigInteger([25], 1, CONSTRUCT),
44091 new BigInteger([26], 1, CONSTRUCT),
44092 new BigInteger([27], 1, CONSTRUCT),
44093 new BigInteger([28], 1, CONSTRUCT),
44094 new BigInteger([29], 1, CONSTRUCT),
44095 new BigInteger([30], 1, CONSTRUCT),
44096 new BigInteger([31], 1, CONSTRUCT),
44097 new BigInteger([32], 1, CONSTRUCT),
44098 new BigInteger([33], 1, CONSTRUCT),
44099 new BigInteger([34], 1, CONSTRUCT),
44100 new BigInteger([35], 1, CONSTRUCT),
44101 new BigInteger([36], 1, CONSTRUCT)
44102 ];
44103
44104 // Used for parsing/radix conversion
44105 BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
44106
44107 /*
44108 Method: toString
44109 Convert a <BigInteger> to a string.
44110
44111 When *base* is greater than 10, letters are upper case.
44112
44113 Parameters:
44114
44115 base - Optional base to represent the number in (default is base 10).
44116 Must be between 2 and 36 inclusive, or an Error will be thrown.
44117
44118 Returns:
44119
44120 The string representation of the <BigInteger>.
44121 */
44122 BigInteger.prototype.toString = function(base) {
44123 base = +base || 10;
44124 if (base < 2 || base > 36) {
44125 throw new Error("illegal radix " + base + ".");
44126 }
44127 if (this._s === 0) {
44128 return "0";
44129 }
44130 if (base === 10) {
44131 var str = this._s < 0 ? "-" : "";
44132 str += this._d[this._d.length - 1].toString();
44133 for (var i = this._d.length - 2; i >= 0; i--) {
44134 var group = this._d[i].toString();
44135 while (group.length < BigInteger_base_log10) group = '0' + group;
44136 str += group;
44137 }
44138 return str;
44139 }
44140 else {
44141 var numerals = BigInteger.digits;
44142 base = BigInteger.small[base];
44143 var sign = this._s;
44144
44145 var n = this.abs();
44146 var digits = [];
44147 var digit;
44148
44149 while (n._s !== 0) {
44150 var divmod = n.divRem(base);
44151 n = divmod[0];
44152 digit = divmod[1];
44153 // TODO: This could be changed to unshift instead of reversing at the end.
44154 // Benchmark both to compare speeds.
44155 digits.push(numerals[digit.valueOf()]);
44156 }
44157 return (sign < 0 ? "-" : "") + digits.reverse().join("");
44158 }
44159 };
44160
44161 // Verify strings for parsing
44162 BigInteger.radixRegex = [
44163 /^$/,
44164 /^$/,
44165 /^[01]*$/,
44166 /^[012]*$/,
44167 /^[0-3]*$/,
44168 /^[0-4]*$/,
44169 /^[0-5]*$/,
44170 /^[0-6]*$/,
44171 /^[0-7]*$/,
44172 /^[0-8]*$/,
44173 /^[0-9]*$/,
44174 /^[0-9aA]*$/,
44175 /^[0-9abAB]*$/,
44176 /^[0-9abcABC]*$/,
44177 /^[0-9a-dA-D]*$/,
44178 /^[0-9a-eA-E]*$/,
44179 /^[0-9a-fA-F]*$/,
44180 /^[0-9a-gA-G]*$/,
44181 /^[0-9a-hA-H]*$/,
44182 /^[0-9a-iA-I]*$/,
44183 /^[0-9a-jA-J]*$/,
44184 /^[0-9a-kA-K]*$/,
44185 /^[0-9a-lA-L]*$/,
44186 /^[0-9a-mA-M]*$/,
44187 /^[0-9a-nA-N]*$/,
44188 /^[0-9a-oA-O]*$/,
44189 /^[0-9a-pA-P]*$/,
44190 /^[0-9a-qA-Q]*$/,
44191 /^[0-9a-rA-R]*$/,
44192 /^[0-9a-sA-S]*$/,
44193 /^[0-9a-tA-T]*$/,
44194 /^[0-9a-uA-U]*$/,
44195 /^[0-9a-vA-V]*$/,
44196 /^[0-9a-wA-W]*$/,
44197 /^[0-9a-xA-X]*$/,
44198 /^[0-9a-yA-Y]*$/,
44199 /^[0-9a-zA-Z]*$/
44200 ];
44201
44202 /*
44203 Function: parse
44204 Parse a string into a <BigInteger>.
44205
44206 *base* is optional but, if provided, must be from 2 to 36 inclusive. If
44207 *base* is not provided, it will be guessed based on the leading characters
44208 of *s* as follows:
44209
44210 - "0x" or "0X": *base* = 16
44211 - "0c" or "0C": *base* = 8
44212 - "0b" or "0B": *base* = 2
44213 - else: *base* = 10
44214
44215 If no base is provided, or *base* is 10, the number can be in exponential
44216 form. For example, these are all valid:
44217
44218 > BigInteger.parse("1e9"); // Same as "1000000000"
44219 > BigInteger.parse("1.234*10^3"); // Same as 1234
44220 > BigInteger.parse("56789 * 10 ** -2"); // Same as 567
44221
44222 If any characters fall outside the range defined by the radix, an exception
44223 will be thrown.
44224
44225 Parameters:
44226
44227 s - The string to parse.
44228 base - Optional radix (default is to guess based on *s*).
44229
44230 Returns:
44231
44232 a <BigInteger> instance.
44233 */
44234 BigInteger.parse = function(s, base) {
44235 // Expands a number in exponential form to decimal form.
44236 // expandExponential("-13.441*10^5") === "1344100";
44237 // expandExponential("1.12300e-1") === "0.112300";
44238 // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
44239 function expandExponential(str) {
44240 str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
44241
44242 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
44243 c = +c;
44244 var l = c < 0;
44245 var i = n.length + c;
44246 x = (l ? n : f).length;
44247 c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
44248 var z = (new Array(c + 1)).join("0");
44249 var r = n + f;
44250 return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
44251 });
44252 }
44253
44254 s = s.toString();
44255 if (typeof base === "undefined" || +base === 10) {
44256 s = expandExponential(s);
44257 }
44258
44259 var prefixRE;
44260 if (typeof base === "undefined") {
44261 prefixRE = '0[xcb]';
44262 }
44263 else if (base == 16) {
44264 prefixRE = '0x';
44265 }
44266 else if (base == 8) {
44267 prefixRE = '0c';
44268 }
44269 else if (base == 2) {
44270 prefixRE = '0b';
44271 }
44272 else {
44273 prefixRE = '';
44274 }
44275 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
44276 if (parts) {
44277 var sign = parts[1] || "+";
44278 var baseSection = parts[2] || "";
44279 var digits = parts[3] || "";
44280
44281 if (typeof base === "undefined") {
44282 // Guess base
44283 if (baseSection === "0x" || baseSection === "0X") { // Hex
44284 base = 16;
44285 }
44286 else if (baseSection === "0c" || baseSection === "0C") { // Octal
44287 base = 8;
44288 }
44289 else if (baseSection === "0b" || baseSection === "0B") { // Binary
44290 base = 2;
44291 }
44292 else {
44293 base = 10;
44294 }
44295 }
44296 else if (base < 2 || base > 36) {
44297 throw new Error("Illegal radix " + base + ".");
44298 }
44299
44300 base = +base;
44301
44302 // Check for digits outside the range
44303 if (!(BigInteger.radixRegex[base].test(digits))) {
44304 throw new Error("Bad digit for radix " + base);
44305 }
44306
44307 // Strip leading zeros, and convert to array
44308 digits = digits.replace(/^0+/, "").split("");
44309 if (digits.length === 0) {
44310 return ZERO;
44311 }
44312
44313 // Get the sign (we know it's not zero)
44314 sign = (sign === "-") ? -1 : 1;
44315
44316 // Optimize 10
44317 if (base == 10) {
44318 var d = [];
44319 while (digits.length >= BigInteger_base_log10) {
44320 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
44321 }
44322 d.push(parseInt(digits.join(''), 10));
44323 return new BigInteger(d, sign, CONSTRUCT);
44324 }
44325
44326 // Do the conversion
44327 var d = ZERO;
44328 base = BigInteger.small[base];
44329 var small = BigInteger.small;
44330 for (var i = 0; i < digits.length; i++) {
44331 d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
44332 }
44333 return new BigInteger(d._d, sign, CONSTRUCT);
44334 }
44335 else {
44336 throw new Error("Invalid BigInteger format: " + s);
44337 }
44338 };
44339
44340 /*
44341 Function: add
44342 Add two <BigIntegers>.
44343
44344 Parameters:
44345
44346 n - The number to add to *this*. Will be converted to a <BigInteger>.
44347
44348 Returns:
44349
44350 The numbers added together.
44351
44352 See Also:
44353
44354 <subtract>, <multiply>, <quotient>, <next>
44355 */
44356 BigInteger.prototype.add = function(n) {
44357 if (this._s === 0) {
44358 return BigInteger(n);
44359 }
44360
44361 n = BigInteger(n);
44362 if (n._s === 0) {
44363 return this;
44364 }
44365 if (this._s !== n._s) {
44366 n = n.negate();
44367 return this.subtract(n);
44368 }
44369
44370 var a = this._d;
44371 var b = n._d;
44372 var al = a.length;
44373 var bl = b.length;
44374 var sum = new Array(Math.max(al, bl) + 1);
44375 var size = Math.min(al, bl);
44376 var carry = 0;
44377 var digit;
44378
44379 for (var i = 0; i < size; i++) {
44380 digit = a[i] + b[i] + carry;
44381 sum[i] = digit % BigInteger_base;
44382 carry = (digit / BigInteger_base) | 0;
44383 }
44384 if (bl > al) {
44385 a = b;
44386 al = bl;
44387 }
44388 for (i = size; carry && i < al; i++) {
44389 digit = a[i] + carry;
44390 sum[i] = digit % BigInteger_base;
44391 carry = (digit / BigInteger_base) | 0;
44392 }
44393 if (carry) {
44394 sum[i] = carry;
44395 }
44396
44397 for ( ; i < al; i++) {
44398 sum[i] = a[i];
44399 }
44400
44401 return new BigInteger(sum, this._s, CONSTRUCT);
44402 };
44403
44404 /*
44405 Function: negate
44406 Get the additive inverse of a <BigInteger>.
44407
44408 Returns:
44409
44410 A <BigInteger> with the same magnatude, but with the opposite sign.
44411
44412 See Also:
44413
44414 <abs>
44415 */
44416 BigInteger.prototype.negate = function() {
44417 return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
44418 };
44419
44420 /*
44421 Function: abs
44422 Get the absolute value of a <BigInteger>.
44423
44424 Returns:
44425
44426 A <BigInteger> with the same magnatude, but always positive (or zero).
44427
44428 See Also:
44429
44430 <negate>
44431 */
44432 BigInteger.prototype.abs = function() {
44433 return (this._s < 0) ? this.negate() : this;
44434 };
44435
44436 /*
44437 Function: subtract
44438 Subtract two <BigIntegers>.
44439
44440 Parameters:
44441
44442 n - The number to subtract from *this*. Will be converted to a <BigInteger>.
44443
44444 Returns:
44445
44446 The *n* subtracted from *this*.
44447
44448 See Also:
44449
44450 <add>, <multiply>, <quotient>, <prev>
44451 */
44452 BigInteger.prototype.subtract = function(n) {
44453 if (this._s === 0) {
44454 return BigInteger(n).negate();
44455 }
44456
44457 n = BigInteger(n);
44458 if (n._s === 0) {
44459 return this;
44460 }
44461 if (this._s !== n._s) {
44462 n = n.negate();
44463 return this.add(n);
44464 }
44465
44466 var m = this;
44467 // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
44468 if (this._s < 0) {
44469 m = new BigInteger(n._d, 1, CONSTRUCT);
44470 n = new BigInteger(this._d, 1, CONSTRUCT);
44471 }
44472
44473 // Both are positive => a - b
44474 var sign = m.compareAbs(n);
44475 if (sign === 0) {
44476 return ZERO;
44477 }
44478 else if (sign < 0) {
44479 // swap m and n
44480 var t = n;
44481 n = m;
44482 m = t;
44483 }
44484
44485 // a > b
44486 var a = m._d;
44487 var b = n._d;
44488 var al = a.length;
44489 var bl = b.length;
44490 var diff = new Array(al); // al >= bl since a > b
44491 var borrow = 0;
44492 var i;
44493 var digit;
44494
44495 for (i = 0; i < bl; i++) {
44496 digit = a[i] - borrow - b[i];
44497 if (digit < 0) {
44498 digit += BigInteger_base;
44499 borrow = 1;
44500 }
44501 else {
44502 borrow = 0;
44503 }
44504 diff[i] = digit;
44505 }
44506 for (i = bl; i < al; i++) {
44507 digit = a[i] - borrow;
44508 if (digit < 0) {
44509 digit += BigInteger_base;
44510 }
44511 else {
44512 diff[i++] = digit;
44513 break;
44514 }
44515 diff[i] = digit;
44516 }
44517 for ( ; i < al; i++) {
44518 diff[i] = a[i];
44519 }
44520
44521 return new BigInteger(diff, sign, CONSTRUCT);
44522 };
44523
44524 (function() {
44525 function addOne(n, sign) {
44526 var a = n._d;
44527 var sum = a.slice();
44528 var carry = true;
44529 var i = 0;
44530
44531 while (true) {
44532 var digit = (a[i] || 0) + 1;
44533 sum[i] = digit % BigInteger_base;
44534 if (digit <= BigInteger_base - 1) {
44535 break;
44536 }
44537 ++i;
44538 }
44539
44540 return new BigInteger(sum, sign, CONSTRUCT);
44541 }
44542
44543 function subtractOne(n, sign) {
44544 var a = n._d;
44545 var sum = a.slice();
44546 var borrow = true;
44547 var i = 0;
44548
44549 while (true) {
44550 var digit = (a[i] || 0) - 1;
44551 if (digit < 0) {
44552 sum[i] = digit + BigInteger_base;
44553 }
44554 else {
44555 sum[i] = digit;
44556 break;
44557 }
44558 ++i;
44559 }
44560
44561 return new BigInteger(sum, sign, CONSTRUCT);
44562 }
44563
44564 /*
44565 Function: next
44566 Get the next <BigInteger> (add one).
44567
44568 Returns:
44569
44570 *this* + 1.
44571
44572 See Also:
44573
44574 <add>, <prev>
44575 */
44576 BigInteger.prototype.next = function() {
44577 switch (this._s) {
44578 case 0:
44579 return ONE;
44580 case -1:
44581 return subtractOne(this, -1);
44582 // case 1:
44583 default:
44584 return addOne(this, 1);
44585 }
44586 };
44587
44588 /*
44589 Function: prev
44590 Get the previous <BigInteger> (subtract one).
44591
44592 Returns:
44593
44594 *this* - 1.
44595
44596 See Also:
44597
44598 <next>, <subtract>
44599 */
44600 BigInteger.prototype.prev = function() {
44601 switch (this._s) {
44602 case 0:
44603 return M_ONE;
44604 case -1:
44605 return addOne(this, -1);
44606 // case 1:
44607 default:
44608 return subtractOne(this, 1);
44609 }
44610 };
44611 })();
44612
44613 /*
44614 Function: compareAbs
44615 Compare the absolute value of two <BigIntegers>.
44616
44617 Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
44618
44619 Parameters:
44620
44621 n - The number to compare to *this*. Will be converted to a <BigInteger>.
44622
44623 Returns:
44624
44625 -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
44626
44627 See Also:
44628
44629 <compare>, <abs>
44630 */
44631 BigInteger.prototype.compareAbs = function(n) {
44632 if (this === n) {
44633 return 0;
44634 }
44635
44636 if (!(n instanceof BigInteger)) {
44637 if (!isFinite(n)) {
44638 return(isNaN(n) ? n : -1);
44639 }
44640 n = BigInteger(n);
44641 }
44642
44643 if (this._s === 0) {
44644 return (n._s !== 0) ? -1 : 0;
44645 }
44646 if (n._s === 0) {
44647 return 1;
44648 }
44649
44650 var l = this._d.length;
44651 var nl = n._d.length;
44652 if (l < nl) {
44653 return -1;
44654 }
44655 else if (l > nl) {
44656 return 1;
44657 }
44658
44659 var a = this._d;
44660 var b = n._d;
44661 for (var i = l-1; i >= 0; i--) {
44662 if (a[i] !== b[i]) {
44663 return a[i] < b[i] ? -1 : 1;
44664 }
44665 }
44666
44667 return 0;
44668 };
44669
44670 /*
44671 Function: compare
44672 Compare two <BigIntegers>.
44673
44674 Parameters:
44675
44676 n - The number to compare to *this*. Will be converted to a <BigInteger>.
44677
44678 Returns:
44679
44680 -1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
44681
44682 See Also:
44683
44684 <compareAbs>, <isPositive>, <isNegative>, <isUnit>
44685 */
44686 BigInteger.prototype.compare = function(n) {
44687 if (this === n) {
44688 return 0;
44689 }
44690
44691 n = BigInteger(n);
44692
44693 if (this._s === 0) {
44694 return -n._s;
44695 }
44696
44697 if (this._s === n._s) { // both positive or both negative
44698 var cmp = this.compareAbs(n);
44699 return cmp * this._s;
44700 }
44701 else {
44702 return this._s;
44703 }
44704 };
44705
44706 /*
44707 Function: isUnit
44708 Return true iff *this* is either 1 or -1.
44709
44710 Returns:
44711
44712 true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
44713
44714 See Also:
44715
44716 <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
44717 <BigInteger.ONE>, <BigInteger.M_ONE>
44718 */
44719 BigInteger.prototype.isUnit = function() {
44720 return this === ONE ||
44721 this === M_ONE ||
44722 (this._d.length === 1 && this._d[0] === 1);
44723 };
44724
44725 /*
44726 Function: multiply
44727 Multiply two <BigIntegers>.
44728
44729 Parameters:
44730
44731 n - The number to multiply *this* by. Will be converted to a
44732 <BigInteger>.
44733
44734 Returns:
44735
44736 The numbers multiplied together.
44737
44738 See Also:
44739
44740 <add>, <subtract>, <quotient>, <square>
44741 */
44742 BigInteger.prototype.multiply = function(n) {
44743 // TODO: Consider adding Karatsuba multiplication for large numbers
44744 if (this._s === 0) {
44745 return ZERO;
44746 }
44747
44748 n = BigInteger(n);
44749 if (n._s === 0) {
44750 return ZERO;
44751 }
44752 if (this.isUnit()) {
44753 if (this._s < 0) {
44754 return n.negate();
44755 }
44756 return n;
44757 }
44758 if (n.isUnit()) {
44759 if (n._s < 0) {
44760 return this.negate();
44761 }
44762 return this;
44763 }
44764 if (this === n) {
44765 return this.square();
44766 }
44767
44768 var r = (this._d.length >= n._d.length);
44769 var a = (r ? this : n)._d; // a will be longer than b
44770 var b = (r ? n : this)._d;
44771 var al = a.length;
44772 var bl = b.length;
44773
44774 var pl = al + bl;
44775 var partial = new Array(pl);
44776 var i;
44777 for (i = 0; i < pl; i++) {
44778 partial[i] = 0;
44779 }
44780
44781 for (i = 0; i < bl; i++) {
44782 var carry = 0;
44783 var bi = b[i];
44784 var jlimit = al + i;
44785 var digit;
44786 for (var j = i; j < jlimit; j++) {
44787 digit = partial[j] + bi * a[j - i] + carry;
44788 carry = (digit / BigInteger_base) | 0;
44789 partial[j] = (digit % BigInteger_base) | 0;
44790 }
44791 if (carry) {
44792 digit = partial[j] + carry;
44793 carry = (digit / BigInteger_base) | 0;
44794 partial[j] = digit % BigInteger_base;
44795 }
44796 }
44797 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
44798 };
44799
44800 // Multiply a BigInteger by a single-digit native number
44801 // Assumes that this and n are >= 0
44802 // This is not really intended to be used outside the library itself
44803 BigInteger.prototype.multiplySingleDigit = function(n) {
44804 if (n === 0 || this._s === 0) {
44805 return ZERO;
44806 }
44807 if (n === 1) {
44808 return this;
44809 }
44810
44811 var digit;
44812 if (this._d.length === 1) {
44813 digit = this._d[0] * n;
44814 if (digit >= BigInteger_base) {
44815 return new BigInteger([(digit % BigInteger_base)|0,
44816 (digit / BigInteger_base)|0], 1, CONSTRUCT);
44817 }
44818 return new BigInteger([digit], 1, CONSTRUCT);
44819 }
44820
44821 if (n === 2) {
44822 return this.add(this);
44823 }
44824 if (this.isUnit()) {
44825 return new BigInteger([n], 1, CONSTRUCT);
44826 }
44827
44828 var a = this._d;
44829 var al = a.length;
44830
44831 var pl = al + 1;
44832 var partial = new Array(pl);
44833 for (var i = 0; i < pl; i++) {
44834 partial[i] = 0;
44835 }
44836
44837 var carry = 0;
44838 for (var j = 0; j < al; j++) {
44839 digit = n * a[j] + carry;
44840 carry = (digit / BigInteger_base) | 0;
44841 partial[j] = (digit % BigInteger_base) | 0;
44842 }
44843 if (carry) {
44844 partial[j] = carry;
44845 }
44846
44847 return new BigInteger(partial, 1, CONSTRUCT);
44848 };
44849
44850 /*
44851 Function: square
44852 Multiply a <BigInteger> by itself.
44853
44854 This is slightly faster than regular multiplication, since it removes the
44855 duplicated multiplcations.
44856
44857 Returns:
44858
44859 > this.multiply(this)
44860
44861 See Also:
44862 <multiply>
44863 */
44864 BigInteger.prototype.square = function() {
44865 // Normally, squaring a 10-digit number would take 100 multiplications.
44866 // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
44867 // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
44868 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
44869
44870 if (this._s === 0) {
44871 return ZERO;
44872 }
44873 if (this.isUnit()) {
44874 return ONE;
44875 }
44876
44877 var digits = this._d;
44878 var length = digits.length;
44879 var imult1 = new Array(length + length + 1);
44880 var product, carry, k;
44881 var i;
44882
44883 // Calculate diagonal
44884 for (i = 0; i < length; i++) {
44885 k = i * 2;
44886 product = digits[i] * digits[i];
44887 carry = (product / BigInteger_base) | 0;
44888 imult1[k] = product % BigInteger_base;
44889 imult1[k + 1] = carry;
44890 }
44891
44892 // Calculate repeating part
44893 for (i = 0; i < length; i++) {
44894 carry = 0;
44895 k = i * 2 + 1;
44896 for (var j = i + 1; j < length; j++, k++) {
44897 product = digits[j] * digits[i] * 2 + imult1[k] + carry;
44898 carry = (product / BigInteger_base) | 0;
44899 imult1[k] = product % BigInteger_base;
44900 }
44901 k = length + i;
44902 var digit = carry + imult1[k];
44903 carry = (digit / BigInteger_base) | 0;
44904 imult1[k] = digit % BigInteger_base;
44905 imult1[k + 1] += carry;
44906 }
44907
44908 return new BigInteger(imult1, 1, CONSTRUCT);
44909 };
44910
44911 /*
44912 Function: quotient
44913 Divide two <BigIntegers> and truncate towards zero.
44914
44915 <quotient> throws an exception if *n* is zero.
44916
44917 Parameters:
44918
44919 n - The number to divide *this* by. Will be converted to a <BigInteger>.
44920
44921 Returns:
44922
44923 The *this* / *n*, truncated to an integer.
44924
44925 See Also:
44926
44927 <add>, <subtract>, <multiply>, <divRem>, <remainder>
44928 */
44929 BigInteger.prototype.quotient = function(n) {
44930 return this.divRem(n)[0];
44931 };
44932
44933 /*
44934 Function: divide
44935 Deprecated synonym for <quotient>.
44936 */
44937 BigInteger.prototype.divide = BigInteger.prototype.quotient;
44938
44939 /*
44940 Function: remainder
44941 Calculate the remainder of two <BigIntegers>.
44942
44943 <remainder> throws an exception if *n* is zero.
44944
44945 Parameters:
44946
44947 n - The remainder after *this* is divided *this* by *n*. Will be
44948 converted to a <BigInteger>.
44949
44950 Returns:
44951
44952 *this* % *n*.
44953
44954 See Also:
44955
44956 <divRem>, <quotient>
44957 */
44958 BigInteger.prototype.remainder = function(n) {
44959 return this.divRem(n)[1];
44960 };
44961
44962 /*
44963 Function: divRem
44964 Calculate the integer quotient and remainder of two <BigIntegers>.
44965
44966 <divRem> throws an exception if *n* is zero.
44967
44968 Parameters:
44969
44970 n - The number to divide *this* by. Will be converted to a <BigInteger>.
44971
44972 Returns:
44973
44974 A two-element array containing the quotient and the remainder.
44975
44976 > a.divRem(b)
44977
44978 is exactly equivalent to
44979
44980 > [a.quotient(b), a.remainder(b)]
44981
44982 except it is faster, because they are calculated at the same time.
44983
44984 See Also:
44985
44986 <quotient>, <remainder>
44987 */
44988 BigInteger.prototype.divRem = function(n) {
44989 n = BigInteger(n);
44990 if (n._s === 0) {
44991 throw new Error("Divide by zero");
44992 }
44993 if (this._s === 0) {
44994 return [ZERO, ZERO];
44995 }
44996 if (n._d.length === 1) {
44997 return this.divRemSmall(n._s * n._d[0]);
44998 }
44999
45000 // Test for easy cases -- |n1| <= |n2|
45001 switch (this.compareAbs(n)) {
45002 case 0: // n1 == n2
45003 return [this._s === n._s ? ONE : M_ONE, ZERO];
45004 case -1: // |n1| < |n2|
45005 return [ZERO, this];
45006 }
45007
45008 var sign = this._s * n._s;
45009 var a = n.abs();
45010 var b_digits = this._d;
45011 var b_index = b_digits.length;
45012 var digits = n._d.length;
45013 var quot = [];
45014 var guess;
45015
45016 var part = new BigInteger([], 0, CONSTRUCT);
45017
45018 while (b_index) {
45019 part._d.unshift(b_digits[--b_index]);
45020 part = new BigInteger(part._d, 1, CONSTRUCT);
45021
45022 if (part.compareAbs(n) < 0) {
45023 quot.push(0);
45024 continue;
45025 }
45026 if (part._s === 0) {
45027 guess = 0;
45028 }
45029 else {
45030 var xlen = part._d.length, ylen = a._d.length;
45031 var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
45032 var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
45033 if (part._d.length > a._d.length) {
45034 // The length of part._d can either match a._d length,
45035 // or exceed it by one.
45036 highx = (highx+1)*BigInteger_base;
45037 }
45038 guess = Math.ceil(highx/highy);
45039 }
45040 do {
45041 var check = a.multiplySingleDigit(guess);
45042 if (check.compareAbs(part) <= 0) {
45043 break;
45044 }
45045 guess--;
45046 } while (guess);
45047
45048 quot.push(guess);
45049 if (!guess) {
45050 continue;
45051 }
45052 var diff = part.subtract(check);
45053 part._d = diff._d.slice();
45054 }
45055
45056 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
45057 new BigInteger(part._d, this._s, CONSTRUCT)];
45058 };
45059
45060 // Throws an exception if n is outside of (-BigInteger.base, -1] or
45061 // [1, BigInteger.base). It's not necessary to call this, since the
45062 // other division functions will call it if they are able to.
45063 BigInteger.prototype.divRemSmall = function(n) {
45064 var r;
45065 n = +n;
45066 if (n === 0) {
45067 throw new Error("Divide by zero");
45068 }
45069
45070 var n_s = n < 0 ? -1 : 1;
45071 var sign = this._s * n_s;
45072 n = Math.abs(n);
45073
45074 if (n < 1 || n >= BigInteger_base) {
45075 throw new Error("Argument out of range");
45076 }
45077
45078 if (this._s === 0) {
45079 return [ZERO, ZERO];
45080 }
45081
45082 if (n === 1 || n === -1) {
45083 return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
45084 }
45085
45086 // 2 <= n < BigInteger_base
45087
45088 // divide a single digit by a single digit
45089 if (this._d.length === 1) {
45090 var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
45091 r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
45092 if (sign < 0) {
45093 q = q.negate();
45094 }
45095 if (this._s < 0) {
45096 r = r.negate();
45097 }
45098 return [q, r];
45099 }
45100
45101 var digits = this._d.slice();
45102 var quot = new Array(digits.length);
45103 var part = 0;
45104 var diff = 0;
45105 var i = 0;
45106 var guess;
45107
45108 while (digits.length) {
45109 part = part * BigInteger_base + digits[digits.length - 1];
45110 if (part < n) {
45111 quot[i++] = 0;
45112 digits.pop();
45113 diff = BigInteger_base * diff + part;
45114 continue;
45115 }
45116 if (part === 0) {
45117 guess = 0;
45118 }
45119 else {
45120 guess = (part / n) | 0;
45121 }
45122
45123 var check = n * guess;
45124 diff = part - check;
45125 quot[i++] = guess;
45126 if (!guess) {
45127 digits.pop();
45128 continue;
45129 }
45130
45131 digits.pop();
45132 part = diff;
45133 }
45134
45135 r = new BigInteger([diff], 1, CONSTRUCT);
45136 if (this._s < 0) {
45137 r = r.negate();
45138 }
45139 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
45140 };
45141
45142 /*
45143 Function: isEven
45144 Return true iff *this* is divisible by two.
45145
45146 Note that <BigInteger.ZERO> is even.
45147
45148 Returns:
45149
45150 true if *this* is even, false otherwise.
45151
45152 See Also:
45153
45154 <isOdd>
45155 */
45156 BigInteger.prototype.isEven = function() {
45157 var digits = this._d;
45158 return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
45159 };
45160
45161 /*
45162 Function: isOdd
45163 Return true iff *this* is not divisible by two.
45164
45165 Returns:
45166
45167 true if *this* is odd, false otherwise.
45168
45169 See Also:
45170
45171 <isEven>
45172 */
45173 BigInteger.prototype.isOdd = function() {
45174 return !this.isEven();
45175 };
45176
45177 /*
45178 Function: sign
45179 Get the sign of a <BigInteger>.
45180
45181 Returns:
45182
45183 * -1 if *this* < 0
45184 * 0 if *this* == 0
45185 * +1 if *this* > 0
45186
45187 See Also:
45188
45189 <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
45190 */
45191 BigInteger.prototype.sign = function() {
45192 return this._s;
45193 };
45194
45195 /*
45196 Function: isPositive
45197 Return true iff *this* > 0.
45198
45199 Returns:
45200
45201 true if *this*.compare(<BigInteger.ZERO>) == 1.
45202
45203 See Also:
45204
45205 <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
45206 */
45207 BigInteger.prototype.isPositive = function() {
45208 return this._s > 0;
45209 };
45210
45211 /*
45212 Function: isNegative
45213 Return true iff *this* < 0.
45214
45215 Returns:
45216
45217 true if *this*.compare(<BigInteger.ZERO>) == -1.
45218
45219 See Also:
45220
45221 <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
45222 */
45223 BigInteger.prototype.isNegative = function() {
45224 return this._s < 0;
45225 };
45226
45227 /*
45228 Function: isZero
45229 Return true iff *this* == 0.
45230
45231 Returns:
45232
45233 true if *this*.compare(<BigInteger.ZERO>) == 0.
45234
45235 See Also:
45236
45237 <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
45238 */
45239 BigInteger.prototype.isZero = function() {
45240 return this._s === 0;
45241 };
45242
45243 /*
45244 Function: exp10
45245 Multiply a <BigInteger> by a power of 10.
45246
45247 This is equivalent to, but faster than
45248
45249 > if (n >= 0) {
45250 > return this.multiply(BigInteger("1e" + n));
45251 > }
45252 > else { // n <= 0
45253 > return this.quotient(BigInteger("1e" + -n));
45254 > }
45255
45256 Parameters:
45257
45258 n - The power of 10 to multiply *this* by. *n* is converted to a
45259 javascipt number and must be no greater than <BigInteger.MAX_EXP>
45260 (0x7FFFFFFF), or an exception will be thrown.
45261
45262 Returns:
45263
45264 *this* * (10 ** *n*), truncated to an integer if necessary.
45265
45266 See Also:
45267
45268 <pow>, <multiply>
45269 */
45270 BigInteger.prototype.exp10 = function(n) {
45271 n = +n;
45272 if (n === 0) {
45273 return this;
45274 }
45275 if (Math.abs(n) > Number(MAX_EXP)) {
45276 throw new Error("exponent too large in BigInteger.exp10");
45277 }
45278 // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
45279 if (this._s === 0) {
45280 return ZERO;
45281 }
45282 if (n > 0) {
45283 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
45284
45285 for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
45286 k._d.unshift(0);
45287 }
45288 if (n == 0)
45289 return k;
45290 k._s = 1;
45291 k = k.multiplySingleDigit(Math.pow(10, n));
45292 return (this._s < 0 ? k.negate() : k);
45293 } else if (-n >= this._d.length*BigInteger_base_log10) {
45294 return ZERO;
45295 } else {
45296 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
45297
45298 for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
45299 k._d.shift();
45300 }
45301 return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
45302 }
45303 };
45304
45305 /*
45306 Function: pow
45307 Raise a <BigInteger> to a power.
45308
45309 In this implementation, 0**0 is 1.
45310
45311 Parameters:
45312
45313 n - The exponent to raise *this* by. *n* must be no greater than
45314 <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
45315
45316 Returns:
45317
45318 *this* raised to the *nth* power.
45319
45320 See Also:
45321
45322 <modPow>
45323 */
45324 BigInteger.prototype.pow = function(n) {
45325 if (this.isUnit()) {
45326 if (this._s > 0) {
45327 return this;
45328 }
45329 else {
45330 return BigInteger(n).isOdd() ? this : this.negate();
45331 }
45332 }
45333
45334 n = BigInteger(n);
45335 if (n._s === 0) {
45336 return ONE;
45337 }
45338 else if (n._s < 0) {
45339 if (this._s === 0) {
45340 throw new Error("Divide by zero");
45341 }
45342 else {
45343 return ZERO;
45344 }
45345 }
45346 if (this._s === 0) {
45347 return ZERO;
45348 }
45349 if (n.isUnit()) {
45350 return this;
45351 }
45352
45353 if (n.compareAbs(MAX_EXP) > 0) {
45354 throw new Error("exponent too large in BigInteger.pow");
45355 }
45356 var x = this;
45357 var aux = ONE;
45358 var two = BigInteger.small[2];
45359
45360 while (n.isPositive()) {
45361 if (n.isOdd()) {
45362 aux = aux.multiply(x);
45363 if (n.isUnit()) {
45364 return aux;
45365 }
45366 }
45367 x = x.square();
45368 n = n.quotient(two);
45369 }
45370
45371 return aux;
45372 };
45373
45374 /*
45375 Function: modPow
45376 Raise a <BigInteger> to a power (mod m).
45377
45378 Because it is reduced by a modulus, <modPow> is not limited by
45379 <BigInteger.MAX_EXP> like <pow>.
45380
45381 Parameters:
45382
45383 exponent - The exponent to raise *this* by. Must be positive.
45384 modulus - The modulus.
45385
45386 Returns:
45387
45388 *this* ^ *exponent* (mod *modulus*).
45389
45390 See Also:
45391
45392 <pow>, <mod>
45393 */
45394 BigInteger.prototype.modPow = function(exponent, modulus) {
45395 var result = ONE;
45396 var base = this;
45397
45398 while (exponent.isPositive()) {
45399 if (exponent.isOdd()) {
45400 result = result.multiply(base).remainder(modulus);
45401 }
45402
45403 exponent = exponent.quotient(BigInteger.small[2]);
45404 if (exponent.isPositive()) {
45405 base = base.square().remainder(modulus);
45406 }
45407 }
45408
45409 return result;
45410 };
45411
45412 /*
45413 Function: log
45414 Get the natural logarithm of a <BigInteger> as a native JavaScript number.
45415
45416 This is equivalent to
45417
45418 > Math.log(this.toJSValue())
45419
45420 but handles values outside of the native number range.
45421
45422 Returns:
45423
45424 log( *this* )
45425
45426 See Also:
45427
45428 <toJSValue>
45429 */
45430 BigInteger.prototype.log = function() {
45431 switch (this._s) {
45432 case 0: return -Infinity;
45433 case -1: return NaN;
45434 default: // Fall through.
45435 }
45436
45437 var l = this._d.length;
45438
45439 if (l*BigInteger_base_log10 < 30) {
45440 return Math.log(this.valueOf());
45441 }
45442
45443 var N = Math.ceil(30/BigInteger_base_log10);
45444 var firstNdigits = this._d.slice(l - N);
45445 return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
45446 };
45447
45448 /*
45449 Function: valueOf
45450 Convert a <BigInteger> to a native JavaScript integer.
45451
45452 This is called automatically by JavaScipt to convert a <BigInteger> to a
45453 native value.
45454
45455 Returns:
45456
45457 > parseInt(this.toString(), 10)
45458
45459 See Also:
45460
45461 <toString>, <toJSValue>
45462 */
45463 BigInteger.prototype.valueOf = function() {
45464 return parseInt(this.toString(), 10);
45465 };
45466
45467 /*
45468 Function: toJSValue
45469 Convert a <BigInteger> to a native JavaScript integer.
45470
45471 This is the same as valueOf, but more explicitly named.
45472
45473 Returns:
45474
45475 > parseInt(this.toString(), 10)
45476
45477 See Also:
45478
45479 <toString>, <valueOf>
45480 */
45481 BigInteger.prototype.toJSValue = function() {
45482 return parseInt(this.toString(), 10);
45483 };
45484
45485 var MAX_EXP = BigInteger(0x7FFFFFFF);
45486 // Constant: MAX_EXP
45487 // The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
45488 BigInteger.MAX_EXP = MAX_EXP;
45489
45490 (function() {
45491 function makeUnary(fn) {
45492 return function(a) {
45493 return fn.call(BigInteger(a));
45494 };
45495 }
45496
45497 function makeBinary(fn) {
45498 return function(a, b) {
45499 return fn.call(BigInteger(a), BigInteger(b));
45500 };
45501 }
45502
45503 function makeTrinary(fn) {
45504 return function(a, b, c) {
45505 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
45506 };
45507 }
45508
45509 (function() {
45510 var i, fn;
45511 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
45512 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
45513 var trinary = ["modPow"];
45514
45515 for (i = 0; i < unary.length; i++) {
45516 fn = unary[i];
45517 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
45518 }
45519
45520 for (i = 0; i < binary.length; i++) {
45521 fn = binary[i];
45522 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
45523 }
45524
45525 for (i = 0; i < trinary.length; i++) {
45526 fn = trinary[i];
45527 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
45528 }
45529
45530 BigInteger.exp10 = function(x, n) {
45531 return BigInteger(x).exp10(n);
45532 };
45533 })();
45534 })();
45535
45536 exports.BigInteger = BigInteger;
45537 })(typeof exports !== 'undefined' ? exports : this);
45538 </script>
45539 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.zxcvbn = f()}})(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);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.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(require,module,exports){
45540 var adjacency_graphs;adjacency_graphs={qwerty:{"!":["`~",null,null,"2@","qQ",null],'"':[";:","[{","]}",null,null,"/?"],"#":["2@",null,null,"4$","eE","wW"],$:["3#",null,null,"5%","rR","eE"],"%":["4$",null,null,"6^","tT","rR"],"&":["6^",null,null,"8*","uU","yY"],"'":[";:","[{","]}",null,null,"/?"],"(":["8*",null,null,"0)","oO","iI"],")":["9(",null,null,"-_","pP","oO"],"*":["7&",null,null,"9(","iI","uU"],"+":["-_",null,null,null,"]}","[{"],",":["mM","kK","lL",".>",null,null],"-":["0)",null,null,"=+","[{","pP"],".":[",<","lL",";:","/?",null,null],"/":[".>",";:","'\"",null,null,null],0:["9(",null,null,"-_","pP","oO"],1:["`~",null,null,"2@","qQ",null],2:["1!",null,null,"3#","wW","qQ"],3:["2@",null,null,"4$","eE","wW"],4:["3#",null,null,"5%","rR","eE"],5:["4$",null,null,"6^","tT","rR"],6:["5%",null,null,"7&","yY","tT"],7:["6^",null,null,"8*","uU","yY"],8:["7&",null,null,"9(","iI","uU"],9:["8*",null,null,"0)","oO","iI"],":":["lL","pP","[{","'\"","/?",".>"],";":["lL","pP","[{","'\"","/?",".>"],"<":["mM","kK","lL",".>",null,null],"=":["-_",null,null,null,"]}","[{"],">":[",<","lL",";:","/?",null,null],"?":[".>",";:","'\"",null,null,null],"@":["1!",null,null,"3#","wW","qQ"],A:[null,"qQ","wW","sS","zZ",null],B:["vV","gG","hH","nN",null,null],C:["xX","dD","fF","vV",null,null],D:["sS","eE","rR","fF","cC","xX"],E:["wW","3#","4$","rR","dD","sS"],F:["dD","rR","tT","gG","vV","cC"],G:["fF","tT","yY","hH","bB","vV"],H:["gG","yY","uU","jJ","nN","bB"],I:["uU","8*","9(","oO","kK","jJ"],J:["hH","uU","iI","kK","mM","nN"],K:["jJ","iI","oO","lL",",<","mM"],L:["kK","oO","pP",";:",".>",",<"],M:["nN","jJ","kK",",<",null,null],N:["bB","hH","jJ","mM",null,null],O:["iI","9(","0)","pP","lL","kK"],P:["oO","0)","-_","[{",";:","lL"],Q:[null,"1!","2@","wW","aA",null],R:["eE","4$","5%","tT","fF","dD"],S:["aA","wW","eE","dD","xX","zZ"],T:["rR","5%","6^","yY","gG","fF"],U:["yY","7&","8*","iI","jJ","hH"],V:["cC","fF","gG","bB",null,null],W:["qQ","2@","3#","eE","sS","aA"],X:["zZ","sS","dD","cC",null,null],Y:["tT","6^","7&","uU","hH","gG"],Z:[null,"aA","sS","xX",null,null],"[":["pP","-_","=+","]}","'\"",";:"],"\\":["]}",null,null,null,null,null],"]":["[{","=+",null,"\\|",null,"'\""],"^":["5%",null,null,"7&","yY","tT"],_:["0)",null,null,"=+","[{","pP"],"`":[null,null,null,"1!",null,null],a:[null,"qQ","wW","sS","zZ",null],b:["vV","gG","hH","nN",null,null],c:["xX","dD","fF","vV",null,null],d:["sS","eE","rR","fF","cC","xX"],e:["wW","3#","4$","rR","dD","sS"],f:["dD","rR","tT","gG","vV","cC"],g:["fF","tT","yY","hH","bB","vV"],h:["gG","yY","uU","jJ","nN","bB"],i:["uU","8*","9(","oO","kK","jJ"],j:["hH","uU","iI","kK","mM","nN"],k:["jJ","iI","oO","lL",",<","mM"],l:["kK","oO","pP",";:",".>",",<"],m:["nN","jJ","kK",",<",null,null],n:["bB","hH","jJ","mM",null,null],o:["iI","9(","0)","pP","lL","kK"],p:["oO","0)","-_","[{",";:","lL"],q:[null,"1!","2@","wW","aA",null],r:["eE","4$","5%","tT","fF","dD"],s:["aA","wW","eE","dD","xX","zZ"],t:["rR","5%","6^","yY","gG","fF"],u:["yY","7&","8*","iI","jJ","hH"],v:["cC","fF","gG","bB",null,null],w:["qQ","2@","3#","eE","sS","aA"],x:["zZ","sS","dD","cC",null,null],y:["tT","6^","7&","uU","hH","gG"],z:[null,"aA","sS","xX",null,null],"{":["pP","-_","=+","]}","'\"",";:"],"|":["]}",null,null,null,null,null],"}":["[{","=+",null,"\\|",null,"'\""],"~":[null,null,null,"1!",null,null]},dvorak:{"!":["`~",null,null,"2@","'\"",null],'"':[null,"1!","2@",",<","aA",null],"#":["2@",null,null,"4$",".>",",<"],$:["3#",null,null,"5%","pP",".>"],"%":["4$",null,null,"6^","yY","pP"],"&":["6^",null,null,"8*","gG","fF"],"'":[null,"1!","2@",",<","aA",null],"(":["8*",null,null,"0)","rR","cC"],")":["9(",null,null,"[{","lL","rR"],"*":["7&",null,null,"9(","cC","gG"],"+":["/?","]}",null,"\\|",null,"-_"],",":["'\"","2@","3#",".>","oO","aA"],"-":["sS","/?","=+",null,null,"zZ"],".":[",<","3#","4$","pP","eE","oO"],"/":["lL","[{","]}","=+","-_","sS"],0:["9(",null,null,"[{","lL","rR"],1:["`~",null,null,"2@","'\"",null],2:["1!",null,null,"3#",",<","'\""],3:["2@",null,null,"4$",".>",",<"],4:["3#",null,null,"5%","pP",".>"],5:["4$",null,null,"6^","yY","pP"],6:["5%",null,null,"7&","fF","yY"],7:["6^",null,null,"8*","gG","fF"],8:["7&",null,null,"9(","cC","gG"],9:["8*",null,null,"0)","rR","cC"],":":[null,"aA","oO","qQ",null,null],";":[null,"aA","oO","qQ",null,null],"<":["'\"","2@","3#",".>","oO","aA"],"=":["/?","]}",null,"\\|",null,"-_"],">":[",<","3#","4$","pP","eE","oO"],"?":["lL","[{","]}","=+","-_","sS"],"@":["1!",null,null,"3#",",<","'\""],A:[null,"'\"",",<","oO",";:",null],B:["xX","dD","hH","mM",null,null],C:["gG","8*","9(","rR","tT","hH"],D:["iI","fF","gG","hH","bB","xX"],E:["oO",".>","pP","uU","jJ","qQ"],F:["yY","6^","7&","gG","dD","iI"],G:["fF","7&","8*","cC","hH","dD"],H:["dD","gG","cC","tT","mM","bB"],I:["uU","yY","fF","dD","xX","kK"],J:["qQ","eE","uU","kK",null,null],K:["jJ","uU","iI","xX",null,null],L:["rR","0)","[{","/?","sS","nN"],M:["bB","hH","tT","wW",null,null],N:["tT","rR","lL","sS","vV","wW"],O:["aA",",<",".>","eE","qQ",";:"],P:[".>","4$","5%","yY","uU","eE"],Q:[";:","oO","eE","jJ",null,null],R:["cC","9(","0)","lL","nN","tT"],S:["nN","lL","/?","-_","zZ","vV"],T:["hH","cC","rR","nN","wW","mM"],U:["eE","pP","yY","iI","kK","jJ"],V:["wW","nN","sS","zZ",null,null],W:["mM","tT","nN","vV",null,null],X:["kK","iI","dD","bB",null,null],Y:["pP","5%","6^","fF","iI","uU"],Z:["vV","sS","-_",null,null,null],"[":["0)",null,null,"]}","/?","lL"],"\\":["=+",null,null,null,null,null],"]":["[{",null,null,null,"=+","/?"],"^":["5%",null,null,"7&","fF","yY"],_:["sS","/?","=+",null,null,"zZ"],"`":[null,null,null,"1!",null,null],a:[null,"'\"",",<","oO",";:",null],b:["xX","dD","hH","mM",null,null],c:["gG","8*","9(","rR","tT","hH"],d:["iI","fF","gG","hH","bB","xX"],e:["oO",".>","pP","uU","jJ","qQ"],f:["yY","6^","7&","gG","dD","iI"],g:["fF","7&","8*","cC","hH","dD"],h:["dD","gG","cC","tT","mM","bB"],i:["uU","yY","fF","dD","xX","kK"],j:["qQ","eE","uU","kK",null,null],k:["jJ","uU","iI","xX",null,null],l:["rR","0)","[{","/?","sS","nN"],m:["bB","hH","tT","wW",null,null],n:["tT","rR","lL","sS","vV","wW"],o:["aA",",<",".>","eE","qQ",";:"],p:[".>","4$","5%","yY","uU","eE"],q:[";:","oO","eE","jJ",null,null],r:["cC","9(","0)","lL","nN","tT"],s:["nN","lL","/?","-_","zZ","vV"],t:["hH","cC","rR","nN","wW","mM"],u:["eE","pP","yY","iI","kK","jJ"],v:["wW","nN","sS","zZ",null,null],w:["mM","tT","nN","vV",null,null],x:["kK","iI","dD","bB",null,null],y:["pP","5%","6^","fF","iI","uU"],z:["vV","sS","-_",null,null,null],"{":["0)",null,null,"]}","/?","lL"],"|":["=+",null,null,null,null,null],"}":["[{",null,null,null,"=+","/?"],"~":[null,null,null,"1!",null,null]},keypad:{"*":["/",null,null,null,"-","+","9","8"],"+":["9","*","-",null,null,null,null,"6"],"-":["*",null,null,null,null,null,"+","9"],".":["0","2","3",null,null,null,null,null],"/":[null,null,null,null,"*","9","8","7"],0:[null,"1","2","3",".",null,null,null],1:[null,null,"4","5","2","0",null,null],2:["1","4","5","6","3",".","0",null],3:["2","5","6",null,null,null,".","0"],4:[null,null,"7","8","5","2","1",null],5:["4","7","8","9","6","3","2","1"],6:["5","8","9","+",null,null,"3","2"],7:[null,null,null,"/","8","5","4",null],8:["7",null,"/","*","9","6","5","4"],9:["8","/","*","-","+",null,"6","5"]},mac_keypad:{"*":["/",null,null,null,null,null,"-","9"],"+":["6","9","-",null,null,null,null,"3"],"-":["9","/","*",null,null,null,"+","6"],".":["0","2","3",null,null,null,null,null],"/":["=",null,null,null,"*","-","9","8"],0:[null,"1","2","3",".",null,null,null],1:[null,null,"4","5","2","0",null,null],2:["1","4","5","6","3",".","0",null],3:["2","5","6","+",null,null,".","0"],4:[null,null,"7","8","5","2","1",null],5:["4","7","8","9","6","3","2","1"],6:["5","8","9","-","+",null,"3","2"],7:[null,null,null,"=","8","5","4",null],8:["7",null,"=","/","9","6","5","4"],9:["8","=","/","*","-","+","6","5"],"=":[null,null,null,null,"/","9","8","7"]}},module.exports=adjacency_graphs;
45541
45542 },{}],2:[function(require,module,exports){
45543 var feedback,scoring;scoring=require("./scoring"),feedback={default_feedback:{warning:"",suggestions:["Use a few words, avoid common phrases","No need for symbols, digits, or uppercase letters"]},get_feedback:function(e,s){var a,t,r,n,o,i;if(0===s.length)return this.default_feedback;if(e>2)return{warning:"",suggestions:[]};for(n=s[0],i=s.slice(1),t=0,r=i.length;t<r;t++)o=i[t],o.token.length>n.token.length&&(n=o);return feedback=this.get_match_feedback(n,1===s.length),a="Add another word or two. Uncommon words are better.",null!=feedback?(feedback.suggestions.unshift(a),null==feedback.warning&&(feedback.warning="")):feedback={warning:"",suggestions:[a]},feedback},get_match_feedback:function(e,s){var a,t;switch(e.pattern){case"dictionary":return this.get_dictionary_match_feedback(e,s);case"spatial":return a=e.graph.toUpperCase(),t=1===e.turns?"Straight rows of keys are easy to guess":"Short keyboard patterns are easy to guess",{warning:t,suggestions:["Use a longer keyboard pattern with more turns"]};case"repeat":return t=1===e.base_token.length?'Repeats like "aaa" are easy to guess':'Repeats like "abcabcabc" are only slightly harder to guess than "abc"',{warning:t,suggestions:["Avoid repeated words and characters"]};case"sequence":return{warning:"Sequences like abc or 6543 are easy to guess",suggestions:["Avoid sequences"]};case"regex":if("recent_year"===e.regex_name)return{warning:"Recent years are easy to guess",suggestions:["Avoid recent years","Avoid years that are associated with you"]};break;case"date":return{warning:"Dates are often easy to guess",suggestions:["Avoid dates and years that are associated with you"]}}},get_dictionary_match_feedback:function(e,s){var a,t,r,n,o;return n="passwords"===e.dictionary_name?!s||e.l33t||e.reversed?e.guesses_log10<=4?"This is similar to a commonly used password":void 0:e.rank<=10?"This is a top-10 common password":e.rank<=100?"This is a top-100 common password":"This is a very common password":"english"===e.dictionary_name?s?"A word by itself is easy to guess":void 0:"surnames"===(a=e.dictionary_name)||"male_names"===a||"female_names"===a?s?"Names and surnames by themselves are easy to guess":"Common names and surnames are easy to guess":"",r=[],o=e.token,o.match(scoring.START_UPPER)?r.push("Capitalization doesn't help very much"):o.match(scoring.ALL_UPPER)&&o.toLowerCase()!==o&&r.push("All-uppercase is almost as easy to guess as all-lowercase"),e.reversed&&e.token.length>=4&&r.push("Reversed words aren't much harder to guess"),e.l33t&&r.push("Predictable substitutions like '@' instead of 'a' don't help very much"),t={warning:n,suggestions:r}}},module.exports=feedback;
45544
45545 },{"./scoring":6}],3:[function(require,module,exports){
45546 var frequency_lists;frequency_lists={passwords:"123456,password,12345678,qwerty,123456789,12345,1234,111111,1234567,dragon,123123,baseball,abc123,football,monkey,letmein,shadow,master,696969,mustang,666666,qwertyuiop,123321,1234567890,pussy,superman,654321,1qaz2wsx,7777777,fuckyou,qazwsx,jordan,123qwe,000000,killer,trustno1,hunter,harley,zxcvbnm,asdfgh,buster,batman,soccer,tigger,charlie,sunshine,iloveyou,fuckme,ranger,hockey,computer,starwars,asshole,pepper,klaster,112233,zxcvbn,freedom,princess,maggie,pass,ginger,11111111,131313,fuck,love,cheese,159753,summer,chelsea,dallas,biteme,matrix,yankees,6969,corvette,austin,access,thunder,merlin,secret,diamond,hello,hammer,fucker,1234qwer,silver,gfhjkm,internet,samantha,golfer,scooter,test,orange,cookie,q1w2e3r4t5,maverick,sparky,phoenix,mickey,bigdog,snoopy,guitar,whatever,chicken,camaro,mercedes,peanut,ferrari,falcon,cowboy,welcome,sexy,samsung,steelers,smokey,dakota,arsenal,boomer,eagles,tigers,marina,nascar,booboo,gateway,yellow,porsche,monster,spider,diablo,hannah,bulldog,junior,london,purple,compaq,lakers,iceman,qwer1234,hardcore,cowboys,money,banana,ncc1701,boston,tennis,q1w2e3r4,coffee,scooby,123654,nikita,yamaha,mother,barney,brandy,chester,fuckoff,oliver,player,forever,rangers,midnight,chicago,bigdaddy,redsox,angel,badboy,fender,jasper,slayer,rabbit,natasha,marine,bigdick,wizard,marlboro,raiders,prince,casper,fishing,flower,jasmine,iwantu,panties,adidas,winter,winner,gandalf,password1,enter,ghbdtn,1q2w3e4r,golden,cocacola,jordan23,winston,madison,angels,panther,blowme,sexsex,bigtits,spanky,bitch,sophie,asdfasdf,horny,thx1138,toyota,tiger,dick,canada,12344321,blowjob,8675309,muffin,liverpoo,apples,qwerty123,passw0rd,abcd1234,pokemon,123abc,slipknot,qazxsw,123456a,scorpion,qwaszx,butter,startrek,rainbow,asdfghjkl,razz,newyork,redskins,gemini,cameron,qazwsxedc,florida,liverpool,turtle,sierra,viking,booger,butthead,doctor,rocket,159357,dolphins,captain,bandit,jaguar,packers,pookie,peaches,789456,asdf,dolphin,helpme,blue,theman,maxwell,qwertyui,shithead,lovers,maddog,giants,nirvana,metallic,hotdog,rosebud,mountain,warrior,stupid,elephant,suckit,success,bond007,jackass,alexis,porn,lucky,scorpio,samson,q1w2e3,azerty,rush2112,driver,freddy,1q2w3e4r5t,sydney,gators,dexter,red123,123456q,12345a,bubba,creative,voodoo,golf,trouble,america,nissan,gunner,garfield,bullshit,asdfghjk,5150,fucking,apollo,1qazxsw2,2112,eminem,legend,airborne,bear,beavis,apple,brooklyn,godzilla,skippy,4815162342,buddy,qwert,kitten,magic,shelby,beaver,phantom,asdasd,xavier,braves,darkness,blink182,copper,platinum,qweqwe,tomcat,01012011,girls,bigboy,102030,animal,police,online,11223344,voyager,lifehack,12qwaszx,fish,sniper,315475,trinity,blazer,heaven,lover,snowball,playboy,loveme,bubbles,hooters,cricket,willow,donkey,topgun,nintendo,saturn,destiny,pakistan,pumpkin,digital,sergey,redwings,explorer,tits,private,runner,therock,guinness,lasvegas,beatles,789456123,fire,cassie,christin,qwerty1,celtic,asdf1234,andrey,broncos,007007,babygirl,eclipse,fluffy,cartman,michigan,carolina,testing,alexande,birdie,pantera,cherry,vampire,mexico,dickhead,buffalo,genius,montana,beer,minecraft,maximus,flyers,lovely,stalker,metallica,doggie,snickers,speedy,bronco,lol123,paradise,yankee,horses,magnum,dreams,147258369,lacrosse,ou812,goober,enigma,qwertyu,scotty,pimpin,bollocks,surfer,cock,poohbear,genesis,star,asd123,qweasdzxc,racing,hello1,hawaii,eagle1,viper,poopoo,einstein,boobies,12345q,bitches,drowssap,simple,badger,alaska,action,jester,drummer,111222,spitfire,forest,maryjane,champion,diesel,svetlana,friday,hotrod,147258,chevy,lucky1,westside,security,google,badass,tester,shorty,thumper,hitman,mozart,zaq12wsx,boobs,reddog,010203,lizard,a123456,123456789a,ruslan,eagle,1232323q,scarface,qwerty12,147852,a12345,buddha,porno,420420,spirit,money1,stargate,qwe123,naruto,mercury,liberty,12345qwert,semperfi,suzuki,popcorn,spooky,marley,scotland,kitty,cherokee,vikings,simpsons,rascal,qweasd,hummer,loveyou,michael1,patches,russia,jupiter,penguin,passion,cumshot,vfhbyf,honda,vladimir,sandman,passport,raider,bastard,123789,infinity,assman,bulldogs,fantasy,sucker,1234554321,horney,domino,budlight,disney,ironman,usuckballz1,softball,brutus,redrum,bigred,mnbvcxz,fktrcfylh,karina,marines,digger,kawasaki,cougar,fireman,oksana,monday,cunt,justice,nigger,super,wildcats,tinker,logitech,dancer,swordfis,avalon,everton,alexandr,motorola,patriots,hentai,madonna,pussy1,ducati,colorado,connor,juventus,galore,smooth,freeuser,warcraft,boogie,titanic,wolverin,elizabet,arizona,valentin,saints,asdfg,accord,test123,password123,christ,yfnfif,stinky,slut,spiderma,naughty,chopper,hello123,ncc1701d,extreme,skyline,poop,zombie,pearljam,123qweasd,froggy,awesome,vision,pirate,fylhtq,dreamer,bullet,predator,empire,123123a,kirill,charlie1,panthers,penis,skipper,nemesis,rasdzv3,peekaboo,rolltide,cardinal,psycho,danger,mookie,happy1,wanker,chevelle,manutd,goblue,9379992,hobbes,vegeta,fyfcnfcbz,852456,picard,159951,windows,loverboy,victory,vfrcbv,bambam,serega,123654789,turkey,tweety,galina,hiphop,rooster,changeme,berlin,taurus,suckme,polina,electric,avatar,134679,maksim,raptor,alpha1,hendrix,newport,bigcock,brazil,spring,a1b2c3,madmax,alpha,britney,sublime,darkside,bigman,wolfpack,classic,hercules,ronaldo,letmein1,1q2w3e,741852963,spiderman,blizzard,123456789q,cheyenne,cjkysirj,tiger1,wombat,bubba1,pandora,zxc123,holiday,wildcat,devils,horse,alabama,147852369,caesar,12312,buddy1,bondage,pussycat,pickle,shaggy,catch22,leather,chronic,a1b2c3d4,admin,qqq111,qaz123,airplane,kodiak,freepass,billybob,sunset,katana,phpbb,chocolat,snowman,angel1,stingray,firebird,wolves,zeppelin,detroit,pontiac,gundam,panzer,vagina,outlaw,redhead,tarheels,greenday,nastya,01011980,hardon,engineer,dragon1,hellfire,serenity,cobra,fireball,lickme,darkstar,1029384756,01011,mustang1,flash,124578,strike,beauty,pavilion,01012000,bobafett,dbrnjhbz,bigmac,bowling,chris1,ytrewq,natali,pyramid,rulez,welcome1,dodgers,apache,swimming,whynot,teens,trooper,fuckit,defender,precious,135790,packard,weasel,popeye,lucifer,cancer,icecream,142536,raven,swordfish,presario,viktor,rockstar,blonde,james1,wutang,spike,pimp,atlanta,airforce,thailand,casino,lennon,mouse,741852,hacker,bluebird,hawkeye,456123,theone,catfish,sailor,goldfish,nfnmzyf,tattoo,pervert,barbie,maxima,nipples,machine,trucks,wrangler,rocks,tornado,lights,cadillac,bubble,pegasus,madman,longhorn,browns,target,666999,eatme,qazwsx123,microsoft,dilbert,christia,baller,lesbian,shooter,xfiles,seattle,qazqaz,cthutq,amateur,prelude,corona,freaky,malibu,123qweasdzxc,assassin,246810,atlantis,integra,pussies,iloveu,lonewolf,dragons,monkey1,unicorn,software,bobcat,stealth,peewee,openup,753951,srinivas,zaqwsx,valentina,shotgun,trigger,veronika,bruins,coyote,babydoll,joker,dollar,lestat,rocky1,hottie,random,butterfly,wordpass,smiley,sweety,snake,chipper,woody,samurai,devildog,gizmo,maddie,soso123aljg,mistress,freedom1,flipper,express,hjvfirf,moose,cessna,piglet,polaris,teacher,montreal,cookies,wolfgang,scully,fatboy,wicked,balls,tickle,bunny,dfvgbh,foobar,transam,pepsi,fetish,oicu812,basketba,toshiba,hotstuff,sunday,booty,gambit,31415926,impala,stephani,jessica1,hooker,lancer,knicks,shamrock,fuckyou2,stinger,314159,redneck,deftones,squirt,siemens,blaster,trucker,subaru,renegade,ibanez,manson,swinger,reaper,blondie,mylove,galaxy,blahblah,enterpri,travel,1234abcd,babylon5,indiana,skeeter,master1,sugar,ficken,smoke,bigone,sweetpea,fucked,trfnthbyf,marino,escort,smitty,bigfoot,babes,larisa,trumpet,spartan,valera,babylon,asdfghj,yankees1,bigboobs,stormy,mister,hamlet,aardvark,butterfl,marathon,paladin,cavalier,manchester,skater,indigo,hornet,buckeyes,01011990,indians,karate,hesoyam,toronto,diamonds,chiefs,buckeye,1qaz2wsx3edc,highland,hotsex,charger,redman,passwor,maiden,drpepper,storm,pornstar,garden,12345678910,pencil,sherlock,timber,thuglife,insane,pizza,jungle,jesus1,aragorn,1a2b3c,hamster,david1,triumph,techno,lollol,pioneer,catdog,321654,fktrctq,morpheus,141627,pascal,shadow1,hobbit,wetpussy,erotic,consumer,blabla,justme,stones,chrissy,spartak,goforit,burger,pitbull,adgjmptw,italia,barcelona,hunting,colors,kissme,virgin,overlord,pebbles,sundance,emerald,doggy,racecar,irina,element,1478963,zipper,alpine,basket,goddess,poison,nipple,sakura,chichi,huskers,13579,pussys,q12345,ultimate,ncc1701e,blackie,nicola,rommel,matthew1,caserta,omega,geronimo,sammy1,trojan,123qwe123,philips,nugget,tarzan,chicks,aleksandr,bassman,trixie,portugal,anakin,dodger,bomber,superfly,madness,q1w2e3r4t5y6,loser,123asd,fatcat,ybrbnf,soldier,warlock,wrinkle1,desire,sexual,babe,seminole,alejandr,951753,11235813,westham,andrei,concrete,access14,weed,letmein2,ladybug,naked,christop,trombone,tintin,bluesky,rhbcnbyf,qazxswedc,onelove,cdtnkfyf,whore,vfvjxrf,titans,stallion,truck,hansolo,blue22,smiles,beagle,panama,kingkong,flatron,inferno,mongoose,connect,poiuyt,snatch,qawsed,juice,blessed,rocker,snakes,turbo,bluemoon,sex4me,finger,jamaica,a1234567,mulder,beetle,fuckyou1,passat,immortal,plastic,123454321,anthony1,whiskey,dietcoke,suck,spunky,magic1,monitor,cactus,exigen,planet,ripper,teen,spyder,apple1,nolimit,hollywoo,sluts,sticky,trunks,1234321,14789632,pickles,sailing,bonehead,ghbdtnbr,delta,charlott,rubber,911911,112358,molly1,yomama,hongkong,jumper,william1,ilovesex,faster,unreal,cumming,memphis,1123581321,nylons,legion,sebastia,shalom,pentium,geheim,werewolf,funtime,ferret,orion,curious,555666,niners,cantona,sprite,philly,pirates,abgrtyu,lollipop,eternity,boeing,super123,sweets,cooldude,tottenha,green1,jackoff,stocking,7895123,moomoo,martini,biscuit,drizzt,colt45,fossil,makaveli,snapper,satan666,maniac,salmon,patriot,verbatim,nasty,shasta,asdzxc,shaved,blackcat,raistlin,qwerty12345,punkrock,cjkywt,01012010,4128,waterloo,crimson,twister,oxford,musicman,seinfeld,biggie,condor,ravens,megadeth,wolfman,cosmos,sharks,banshee,keeper,foxtrot,gn56gn56,skywalke,velvet,black1,sesame,dogs,squirrel,privet,sunrise,wolverine,sucks,legolas,grendel,ghost,cats,carrot,frosty,lvbnhbq,blades,stardust,frog,qazwsxed,121314,coolio,brownie,groovy,twilight,daytona,vanhalen,pikachu,peanuts,licker,hershey,jericho,intrepid,ninja,1234567a,zaq123,lobster,goblin,punisher,strider,shogun,kansas,amadeus,seven7,jason1,neptune,showtime,muscle,oldman,ekaterina,rfrfirf,getsome,showme,111222333,obiwan,skittles,danni,tanker,maestro,tarheel,anubis,hannibal,anal,newlife,gothic,shark,fighter,blue123,blues,123456z,princes,slick,chaos,thunder1,sabine,1q2w3e4r5t6y,python,test1,mirage,devil,clover,tequila,chelsea1,surfing,delete,potato,chubby,panasonic,sandiego,portland,baggins,fusion,sooners,blackdog,buttons,californ,moscow,playtime,mature,1a2b3c4d,dagger,dima,stimpy,asdf123,gangster,warriors,iverson,chargers,byteme,swallow,liquid,lucky7,dingdong,nymets,cracker,mushroom,456852,crusader,bigguy,miami,dkflbvbh,bugger,nimrod,tazman,stranger,newpass,doodle,powder,gotcha,guardian,dublin,slapshot,septembe,147896325,pepsi1,milano,grizzly,woody1,knights,photos,2468,nookie,charly,rammstein,brasil,123321123,scruffy,munchkin,poopie,123098,kittycat,latino,walnut,1701,thegame,viper1,1passwor,kolobok,picasso,robert1,barcelon,bananas,trance,auburn,coltrane,eatshit,goodluck,starcraft,wheels,parrot,postal,blade,wisdom,pink,gorilla,katerina,pass123,andrew1,shaney14,dumbass,osiris,fuck_inside,oakland,discover,ranger1,spanking,lonestar,bingo,meridian,ping,heather1,dookie,stonecol,megaman,192837465,rjntyjr,ledzep,lowrider,25802580,richard1,firefly,griffey,racerx,paradox,ghjcnj,gangsta,zaq1xsw2,tacobell,weezer,sirius,halflife,buffett,shiloh,123698745,vertigo,sergei,aliens,sobaka,keyboard,kangaroo,sinner,soccer1,0.0.000,bonjour,socrates,chucky,hotboy,sprint,0007,sarah1,scarlet,celica,shazam,formula1,sommer,trebor,qwerasdf,jeep,mailcreated5240,bollox,asshole1,fuckface,honda1,rebels,vacation,lexmark,penguins,12369874,ragnarok,formula,258456,tempest,vfhecz,tacoma,qwertz,colombia,flames,rockon,duck,prodigy,wookie,dodgeram,mustangs,123qaz,sithlord,smoker,server,bang,incubus,scoobydo,oblivion,molson,kitkat,titleist,rescue,zxcv1234,carpet,1122,bigballs,tardis,jimbob,xanadu,blueeyes,shaman,mersedes,pooper,pussy69,golfing,hearts,mallard,12312312,kenwood,patrick1,dogg,cowboys1,oracle,123zxc,nuttertools,102938,topper,1122334455,shemale,sleepy,gremlin,yourmom,123987,gateway1,printer,monkeys,peterpan,mikey,kingston,cooler,analsex,jimbo,pa55word,asterix,freckles,birdman,frank1,defiant,aussie,stud,blondes,tatyana,445566,aspirine,mariners,jackal,deadhead,katrin,anime,rootbeer,frogger,polo,scooter1,hallo,noodles,thomas1,parola,shaolin,celine,11112222,plymouth,creampie,justdoit,ohyeah,fatass,assfuck,amazon,1234567q,kisses,magnus,camel,nopass,bosco,987456,6751520,harley1,putter,champs,massive,spidey,lightnin,camelot,letsgo,gizmodo,aezakmi,bones,caliente,12121,goodtime,thankyou,raiders1,brucelee,redalert,aquarius,456654,catherin,smokin,pooh,mypass,astros,roller,porkchop,sapphire,qwert123,kevin1,a1s2d3f4,beckham,atomic,rusty1,vanilla,qazwsxedcrfv,hunter1,kaktus,cxfcnmt,blacky,753159,elvis1,aggies,blackjac,bangkok,scream,123321q,iforgot,power1,kasper,abc12,buster1,slappy,shitty,veritas,chevrole,amber1,01012001,vader,amsterdam,jammer,primus,spectrum,eduard,granny,horny1,sasha1,clancy,usa123,satan,diamond1,hitler,avenger,1221,spankme,123456qwerty,simba,smudge,scrappy,labrador,john316,syracuse,front242,falcons,husker,candyman,commando,gator,pacman,delta1,pancho,krishna,fatman,clitoris,pineappl,lesbians,8j4ye3uz,barkley,vulcan,punkin,boner,celtics,monopoly,flyboy,romashka,hamburg,123456aa,lick,gangbang,223344,area51,spartans,aaa111,tricky,snuggles,drago,homerun,vectra,homer1,hermes,topcat,cuddles,infiniti,1234567890q,cosworth,goose,phoenix1,killer1,ivanov,bossman,qawsedrf,peugeot,exigent,doberman,durango,brandon1,plumber,telefon,horndog,laguna,rbhbkk,dawg,webmaster,breeze,beast,porsche9,beefcake,leopard,redbull,oscar1,topdog,godsmack,theking,pics,omega1,speaker,viktoria,fuckers,bowler,starbuck,gjkbyf,valhalla,anarchy,blacks,herbie,kingpin,starfish,nokia,loveit,achilles,906090,labtec,ncc1701a,fitness,jordan1,brando,arsenal1,bull,kicker,napass,desert,sailboat,bohica,tractor,hidden,muppet,jackson1,jimmy1,terminator,phillies,pa55w0rd,terror,farside,swingers,legacy,frontier,butthole,doughboy,jrcfyf,tuesday,sabbath,daniel1,nebraska,homers,qwertyuio,azamat,fallen,agent007,striker,camels,iguana,looker,pinkfloy,moloko,qwerty123456,dannyboy,luckydog,789654,pistol,whocares,charmed,skiing,select,franky,puppy,daniil,vladik,vette,vfrcbvrf,ihateyou,nevada,moneys,vkontakte,mandingo,puppies,666777,mystic,zidane,kotenok,dilligaf,budman,bunghole,zvezda,123457,triton,golfball,technics,trojans,panda,laptop,rookie,01011991,15426378,aberdeen,gustav,jethro,enterprise,igor,stripper,filter,hurrican,rfnthbyf,lespaul,gizmo1,butch,132435,dthjybrf,1366613,excalibu,963852,nofear,momoney,possum,cutter,oilers,moocow,cupcake,gbpltw,batman1,splash,svetik,super1,soleil,bogdan,melissa1,vipers,babyboy,tdutybq,lancelot,ccbill,keystone,passwort,flamingo,firefox,dogman,vortex,rebel,noodle,raven1,zaphod,killme,pokemon1,coolman,danila,designer,skinny,kamikaze,deadman,gopher,doobie,warhammer,deeznuts,freaks,engage,chevy1,steve1,apollo13,poncho,hammers,azsxdc,dracula,000007,sassy,bitch1,boots,deskjet,12332,macdaddy,mighty,rangers1,manchest,sterlin,casey1,meatball,mailman,sinatra,cthulhu,summer1,bubbas,cartoon,bicycle,eatpussy,truelove,sentinel,tolkien,breast,capone,lickit,summit,123456k,peter1,daisy1,kitty1,123456789z,crazy1,jamesbon,texas1,sexygirl,362436,sonic,billyboy,redhot,microsof,microlab,daddy1,rockets,iloveyo,fernand,gordon24,danie,cutlass,polska,star69,titties,pantyhos,01011985,thekid,aikido,gofish,mayday,1234qwe,coke,anfield,sony,lansing,smut,scotch,sexx,catman,73501505,hustler,saun,dfkthbz,passwor1,jenny1,azsxdcfv,cheers,irish1,gabrie,tinman,orioles,1225,charlton,fortuna,01011970,airbus,rustam,xtreme,bigmoney,zxcasd,retard,grumpy,huskies,boxing,4runner,kelly1,ultima,warlord,fordf150,oranges,rotten,asdfjkl,superstar,denali,sultan,bikini,saratoga,thor,figaro,sixers,wildfire,vladislav,128500,sparta,mayhem,greenbay,chewie,music1,number1,cancun,fabie,mellon,poiuytrewq,cloud9,crunch,bigtime,chicken1,piccolo,bigbird,321654987,billy1,mojo,01011981,maradona,sandro,chester1,bizkit,rjirfrgbde,789123,rightnow,jasmine1,hyperion,treasure,meatloaf,armani,rovers,jarhead,01011986,cruise,coconut,dragoon,utopia,davids,cosmo,rfhbyf,reebok,1066,charli,giorgi,sticks,sayang,pass1234,exodus,anaconda,zaqxsw,illini,woofwoof,emily1,sandy1,packer,poontang,govols,jedi,tomato,beaner,cooter,creamy,lionking,happy123,albatros,poodle,kenworth,dinosaur,greens,goku,happyday,eeyore,tsunami,cabbage,holyshit,turkey50,memorex,chaser,bogart,orgasm,tommy1,volley,whisper,knopka,ericsson,walleye,321123,pepper1,katie1,chickens,tyler1,corrado,twisted,100000,zorro,clemson,zxcasdqwe,tootsie,milana,zenith,fktrcfylhf,shania,frisco,polniypizdec0211,crazybab,junebug,fugazi,rereirf,vfvekz,1001,sausage,vfczyz,koshka,clapton,justin1,anhyeuem,condom,fubar,hardrock,skywalker,tundra,cocks,gringo,150781,canon,vitalik,aspire,stocks,samsung1,applepie,abc12345,arjay,gandalf1,boob,pillow,sparkle,gmoney,rockhard,lucky13,samiam,everest,hellyeah,bigsexy,skorpion,rfrnec,hedgehog,australi,candle,slacker,dicks,voyeur,jazzman,america1,bobby1,br0d3r,wolfie,vfksirf,1qa2ws3ed,13243546,fright,yosemite,temp,karolina,fart,barsik,surf,cheetah,baddog,deniska,starship,bootie,milena,hithere,kume,greatone,dildo,50cent,0.0.0.000,albion,amanda1,midget,lion,maxell,football1,cyclone,freeporn,nikola,bonsai,kenshin,slider,balloon,roadkill,killbill,222333,jerkoff,78945612,dinamo,tekken,rambler,goliath,cinnamon,malaka,backdoor,fiesta,packers1,rastaman,fletch,sojdlg123aljg,stefano,artemis,calico,nyjets,damnit,robotech,duchess,rctybz,hooter,keywest,18436572,hal9000,mechanic,pingpong,operator,presto,sword,rasputin,spank,bristol,faggot,shado,963852741,amsterda,321456,wibble,carrera,alibaba,majestic,ramses,duster,route66,trident,clipper,steeler,wrestlin,divine,kipper,gotohell,kingfish,snake1,passwords,buttman,pompey,viagra,zxcvbnm1,spurs,332211,slutty,lineage2,oleg,macross,pooter,brian1,qwert1,charles1,slave,jokers,yzerman,swimmer,ne1469,nwo4life,solnce,seamus,lolipop,pupsik,moose1,ivanova,secret1,matador,love69,420247,ktyjxrf,subway,cinder,vermont,pussie,chico,florian,magick,guiness,allsop,ghetto,flash1,a123456789,typhoon,dfkthf,depeche,skydive,dammit,seeker,fuckthis,crysis,kcj9wx5n,umbrella,r2d2c3po,123123q,snoopdog,critter,theboss,ding,162534,splinter,kinky,cyclops,jayhawk,456321,caramel,qwer123,underdog,caveman,onlyme,grapes,feather,hotshot,fuckher,renault,george1,sex123,pippen,000001,789987,floppy,cunts,megapass,1000,pornos,usmc,kickass,great1,quattro,135246,wassup,helloo,p0015123,nicole1,chivas,shannon1,bullseye,java,fishes,blackhaw,jamesbond,tunafish,juggalo,dkflbckfd,123789456,dallas1,translator,122333,beanie,alucard,gfhjkm123,supersta,magicman,ashley1,cohiba,xbox360,caligula,12131415,facial,7753191,dfktynbyf,cobra1,cigars,fang,klingon,bob123,safari,looser,10203,deepthroat,malina,200000,tazmania,gonzo,goalie,jacob1,monaco,cruiser,misfit,vh5150,tommyboy,marino13,yousuck,sharky,vfhufhbnf,horizon,absolut,brighton,123456r,death1,kungfu,maxx,forfun,mamapapa,enter1,budweise,banker,getmoney,kostya,qazwsx12,bigbear,vector,fallout,nudist,gunners,royals,chainsaw,scania,trader,blueboy,walrus,eastside,kahuna,qwerty1234,love123,steph,01011989,cypress,champ,undertaker,ybrjkfq,europa,snowboar,sabres,moneyman,chrisbln,minime,nipper,groucho,whitey,viewsonic,penthous,wolf359,fabric,flounder,coolguy,whitesox,passme,smegma,skidoo,thanatos,fucku2,snapple,dalejr,mondeo,thesims,mybaby,panasoni,sinbad,thecat,topher,frodo,sneakers,q123456,z1x2c3,alfa,chicago1,taylor1,ghjcnjnfr,cat123,olivier,cyber,titanium,0420,madison1,jabroni,dang,hambone,intruder,holly1,gargoyle,sadie1,static,poseidon,studly,newcastl,sexxxx,poppy,johannes,danzig,beastie,musica,buckshot,sunnyday,adonis,bluedog,bonkers,2128506,chrono,compute,spawn,01011988,turbo1,smelly,wapbbs,goldstar,ferrari1,778899,quantum,pisces,boomboom,gunnar,1024,test1234,florida1,nike,superman1,multiplelo,custom,motherlode,1qwerty,westwood,usnavy,apple123,daewoo,korn,stereo,sasuke,sunflowe,watcher,dharma,555777,mouse1,assholes,babyblue,123qwerty,marius,walmart,snoop,starfire,tigger1,paintbal,knickers,aaliyah,lokomotiv,theend,winston1,sapper,rover,erotica,scanner,racer,zeus,sexy69,doogie,bayern,joshua1,newbie,scott1,losers,droopy,outkast,martin1,dodge1,wasser,ufkbyf,rjycnfynby,thirteen,12345z,112211,hotred,deejay,hotpussy,192837,jessic,philippe,scout,panther1,cubbies,havefun,magpie,fghtkm,avalanch,newyork1,pudding,leonid,harry1,cbr600,audia4,bimmer,fucku,01011984,idontknow,vfvfgfgf,1357,aleksey,builder,01011987,zerocool,godfather,mylife,donuts,allmine,redfish,777888,sascha,nitram,bounce,333666,smokes,1x2zkg8w,rodman,stunner,zxasqw12,hoosier,hairy,beretta,insert,123456s,rtyuehe,francesc,tights,cheese1,micron,quartz,hockey1,gegcbr,searay,jewels,bogey,paintball,celeron,padres,bing,syncmaster,ziggy,simon1,beaches,prissy,diehard,orange1,mittens,aleksandra,queens,02071986,biggles,thongs,southpark,artur,twinkle,gretzky,rabota,cambiami,monalisa,gollum,chuckles,spike1,gladiator,whisky,spongebob,sexy1,03082006,mazafaka,meathead,4121,ou8122,barefoot,12345678q,cfitymrf,bigass,a1s2d3,kosmos,blessing,titty,clevelan,terrapin,ginger1,johnboy,maggot,clarinet,deeznutz,336699,stumpy,stoney,footbal,traveler,volvo,bucket,snapon,pianoman,hawkeyes,futbol,casanova,tango,goodboy,scuba,honey1,sexyman,warthog,mustard,abc1234,nickel,10203040,meowmeow,1012,boricua,prophet,sauron,12qwas,reefer,andromeda,crystal1,joker1,90210,goofy,loco,lovesex,triangle,whatsup,mellow,bengals,monster1,maste,01011910,lover1,love1,123aaa,sunshin,smeghead,hokies,sting,welder,rambo,cerberus,bunny1,rockford,monke,1q2w3e4r5,goldwing,gabriell,buzzard,crjhgbjy,james007,rainman,groove,tiberius,purdue,nokia6300,hayabusa,shou,jagger,diver,zigzag,poochie,usarmy,phish,redwood,redwing,12345679,salamander,silver1,abcd123,sputnik,boobie,ripple,eternal,12qw34er,thegreat,allstar,slinky,gesperrt,mishka,whiskers,pinhead,overkill,sweet1,rhfcjnrf,montgom240,sersolution,jamie1,starman,proxy,swords,nikolay,bacardi,rasta,badgirl,rebecca1,wildman,penny1,spaceman,1007,10101,logan1,hacked,bulldog1,helmet,windsor,buffy1,runescape,trapper,123451,banane,dbrnjh,ripken,12345qwe,frisky,shun,fester,oasis,lightning,ib6ub9,cicero,kool,pony,thedog,784512,01011992,megatron,illusion,edward1,napster,11223,squash,roadking,woohoo,19411945,hoosiers,01091989,tracker,bagira,midway,leavemealone,br549,14725836,235689,menace,rachel1,feng,laser,stoned,realmadrid,787898,balloons,tinkerbell,5551212,maria1,pobeda,heineken,sonics,moonlight,optimus,comet,orchid,02071982,jaybird,kashmir,12345678a,chuang,chunky,peach,mortgage,rulezzz,saleen,chuckie,zippy,fishing1,gsxr750,doghouse,maxim,reader,shai,buddah,benfica,chou,salomon,meister,eraser,blackbir,bigmike,starter,pissing,angus,deluxe,eagles1,hardcock,135792468,mian,seahawks,godfathe,bookworm,gregor,intel,talisman,blackjack,babyface,hawaiian,dogfood,zhong,01011975,sancho,ludmila,medusa,mortimer,123456654321,roadrunn,just4me,stalin,01011993,handyman,alphabet,pizzas,calgary,clouds,password2,cgfhnfr,f**k,cubswin,gong,lexus,max123,xxx123,digital1,gfhjkm1,7779311,missy1,michae,beautifu,gator1,1005,pacers,buddie,chinook,heckfy,dutchess,sally1,breasts,beowulf,darkman,jenn,tiffany1,zhei,quan,qazwsx1,satana,shang,idontkno,smiths,puddin,nasty1,teddybea,valkyrie,passwd,chao,boxster,killers,yoda,cheater,inuyasha,beast1,wareagle,foryou,dragonball,mermaid,bhbirf,teddy1,dolphin1,misty1,delphi,gromit,sponge,qazzaq,fytxrf,gameover,diao,sergi,beamer,beemer,kittykat,rancid,manowar,adam12,diggler,assword,austin1,wishbone,gonavy,sparky1,fisting,thedude,sinister,1213,venera,novell,salsero,jayden,fuckoff1,linda1,vedder,02021987,1pussy,redline,lust,jktymrf,02011985,dfcbkbq,dragon12,chrome,gamecube,titten,cong,bella1,leng,02081988,eureka,bitchass,147369,banner,lakota,123321a,mustafa,preacher,hotbox,02041986,z1x2c3v4,playstation,01011977,claymore,electra,checkers,zheng,qing,armagedon,02051986,wrestle,svoboda,bulls,nimbus,alenka,madina,newpass6,onetime,aa123456,bartman,02091987,silverad,electron,12345t,devil666,oliver1,skylar,rhtdtlrj,gobucks,johann,12011987,milkman,02101985,camper,thunderb,bigbutt,jammin,davide,cheeks,goaway,lighter,claudi,thumbs,pissoff,ghostrider,cocaine,teng,squall,lotus,hootie,blackout,doitnow,subzero,02031986,marine1,02021988,pothead,123456qw,skate,1369,peng,antoni,neng,miao,bcfields,1492,marika,794613,musashi,tulips,nong,piao,chai,ruan,southpar,02061985,nude,mandarin,654123,ninjas,cannabis,jetski,xerxes,zhuang,kleopatra,dickie,bilbo,pinky,morgan1,1020,1017,dieter,baseball1,tottenham,quest,yfnfkmz,dirtbike,1234567890a,mango,jackson5,ipswich,iamgod,02011987,tdutybz,modena,qiao,slippery,qweasd123,bluefish,samtron,toon,111333,iscool,02091986,petrov,fuzzy,zhou,1357924680,mollydog,deng,02021986,1236987,pheonix,zhun,ghblehjr,othello,starcraf,000111,sanfran,a11111,cameltoe,badman,vasilisa,jiang,1qaz2ws,luan,sveta,12qw12,akira,chuai,369963,cheech,beatle,pickup,paloma,01011983,caravan,elizaveta,gawker,banzai,pussey,mullet,seng,bingo1,bearcat,flexible,farscape,borussia,zhuai,templar,guitar1,toolman,yfcntymrf,chloe1,xiang,slave1,guai,nuggets,02081984,mantis,slim,scorpio1,fyutkbyf,thedoors,02081987,02061986,123qq123,zappa,fergie,7ugd5hip2j,huai,asdfzxcv,sunflower,pussyman,deadpool,bigtit,01011982,love12,lassie,skyler,gatorade,carpedie,jockey,mancity,spectre,02021984,cameron1,artemka,reng,02031984,iomega,jing,moritz,spice,rhino,spinner,heater,zhai,hover,talon,grease,qiong,corleone,ltybcrf,tian,cowboy1,hippie,chimera,ting,alex123,02021985,mickey1,corsair,sonoma,aaron1,xxxpass,bacchus,webmaste,chuo,xyz123,chrysler,spurs1,artem,shei,cosmic,01020304,deutsch,gabriel1,123455,oceans,987456321,binladen,latinas,a12345678,speedo,buttercu,02081989,21031988,merlot,millwall,ceng,kotaku,jiong,dragonba,2580,stonecold,snuffy,01011999,02011986,hellos,blaze,maggie1,slapper,istanbul,bonjovi,babylove,mazda,bullfrog,phoeni,meng,porsche1,nomore,02061989,bobdylan,capslock,orion1,zaraza,teddybear,ntktajy,myname,rong,wraith,mets,niao,02041984,smokie,chevrolet,dialog,gfhjkmgfhjkm,dotcom,vadim,monarch,athlon,mikey1,hamish,pian,liang,coolness,chui,thoma,ramones,ciccio,chippy,eddie1,house1,ning,marker,cougars,jackpot,barbados,reds,pdtplf,knockers,cobalt,amateurs,dipshit,napoli,kilroy,pulsar,jayhawks,daemon,alexey,weng,shuang,9293709b13,shiner,eldorado,soulmate,mclaren,golfer1,andromed,duan,50spanks,sexyboy,dogshit,02021983,shuo,kakashka,syzygy,111111a,yeahbaby,qiang,netscape,fulham,120676,gooner,zhui,rainbow6,laurent,dog123,halifax,freeway,carlitos,147963,eastwood,microphone,monkey12,1123,persik,coldbeer,geng,nuan,danny1,fgtkmcby,entropy,gadget,just4fun,sophi,baggio,carlito,1234567891,02021989,02041983,specialk,piramida,suan,bigblue,salasana,hopeful,mephisto,bailey1,hack,annie1,generic,violetta,spencer1,arcadia,02051983,hondas,9562876,trainer,jones1,smashing,liao,159632,iceberg,rebel1,snooker,temp123,zang,matteo,fastball,q2w3e4r5,bamboo,fuckyo,shutup,astro,buddyboy,nikitos,redbird,maxxxx,shitface,02031987,kuai,kissmyass,sahara,radiohea,1234asdf,wildcard,maxwell1,patric,plasma,heynow,bruno1,shao,bigfish,misfits,sassy1,sheng,02011988,02081986,testpass,nanook,cygnus,licking,slavik,pringles,xing,1022,ninja1,submit,dundee,tiburon,pinkfloyd,yummy,shuai,guang,chopin,obelix,insomnia,stroker,1a2s3d4f,1223,playboy1,lazarus,jorda,spider1,homerj,sleeper,02041982,darklord,cang,02041988,02041987,tripod,magician,jelly,telephon,15975,vsjasnel12,pasword,iverson3,pavlov,homeboy,gamecock,amigo,brodie,budapest,yjdsqgfhjkm,reckless,02011980,pang,tiger123,2469,mason1,orient,01011979,zong,cdtnbr,maksimka,1011,bushido,taxman,giorgio,sphinx,kazantip,02101984,concorde,verizon,lovebug,georg,sam123,seadoo,qazwsxedc123,jiao,jezebel,pharmacy,abnormal,jellybea,maxime,puffy,islander,bunnies,jiggaman,drakon,010180,pluto,zhjckfd,12365,classics,crusher,mordor,hooligan,strawberry,02081985,scrabble,hawaii50,1224,wg8e3wjf,cthtuf,premium,arrow,123456qwe,mazda626,ramrod,tootie,rhjrjlbk,ghost1,1211,bounty,niang,02071984,goat,killer12,sweetnes,porno1,masamune,426hemi,corolla,mariposa,hjccbz,doomsday,bummer,blue12,zhao,bird33,excalibur,samsun,kirsty,buttfuck,kfhbcf,zhuo,marcello,ozzy,02021982,dynamite,655321,master12,123465,lollypop,stepan,1qa2ws,spiker,goirish,callum,michael2,moonbeam,attila,henry1,lindros,andrea1,sporty,lantern,12365478,nextel,violin,volcom,998877,water1,imation,inspiron,dynamo,citadel,placebo,clowns,tiao,02061988,tripper,dabears,haggis,merlin1,02031985,anthrax,amerika,iloveme,vsegda,burrito,bombers,snowboard,forsaken,katarina,a1a2a3,woofer,tigger2,fullmoon,tiger2,spock,hannah1,snoopy1,sexxxy,sausages,stanislav,cobain,robotics,exotic,green123,mobydick,senators,pumpkins,fergus,asddsa,147741,258852,windsurf,reddevil,vfitymrf,nevermind,nang,woodland,4417,mick,shui,q1q2q3,wingman,69696,superb,zuan,ganesh,pecker,zephyr,anastasiya,icu812,larry1,02081982,broker,zalupa,mihail,vfibyf,dogger,7007,paddle,varvara,schalke,1z2x3c,presiden,yankees2,tuning,poopy,02051982,concord,vanguard,stiffy,rjhjktdf,felix1,wrench,firewall,boxer,bubba69,popper,02011984,temppass,gobears,cuan,tipper,fuckme1,kamila,thong,puss,bigcat,drummer1,02031982,sowhat,digimon,tigers1,rang,jingle,bian,uranus,soprano,mandy1,dusty1,fandango,aloha,pumpkin1,postman,02061980,dogcat,bombay,pussy123,onetwo,highheel,pippo,julie1,laura1,pepito,beng,smokey1,stylus,stratus,reload,duckie,karen1,jimbo1,225588,369258,krusty,snappy,asdf12,electro,111qqq,kuang,fishin,clit,abstr,christma,qqqqq1,1234560,carnage,guyver,boxers,kittens,zeng,1000000,qwerty11,toaster,cramps,yugioh,02061987,icehouse,zxcvbnm123,pineapple,namaste,harrypotter,mygirl,falcon1,earnhard,fender1,spikes,nutmeg,01081989,dogboy,02091983,369852,softail,mypassword,prowler,bigboss,1112,harvest,heng,jubilee,killjoy,basset,keng,zaqxswcde,redsox1,biao,titan,misfit99,robot,wifey,kidrock,02101987,gameboy,enrico,1z2x3c4v,broncos1,arrows,havana,banger,cookie1,chriss,123qw,platypus,cindy1,lumber,pinball,foxy,london1,1023,05051987,02041985,password12,superma,longbow,radiohead,nigga,12051988,spongebo,qwert12345,abrakadabra,dodgers1,02101989,chillin,niceguy,pistons,hookup,santafe,bigben,jets,1013,vikings1,mankind,viktoriya,beardog,hammer1,02071980,reddwarf,magelan,longjohn,jennife,gilles,carmex2,02071987,stasik,bumper,doofus,slamdunk,pixies,garion,steffi,alessandro,beerman,niceass,warrior1,honolulu,134679852,visa,johndeer,mother1,windmill,boozer,oatmeal,aptiva,busty,delight,tasty,slick1,bergkamp,badgers,guitars,puffin,02091981,nikki1,irishman,miller1,zildjian,123000,airwolf,magnet,anai,install,02041981,02061983,astra,romans,megan1,mudvayne,freebird,muscles,dogbert,02091980,02091984,snowflak,01011900,mang,joseph1,nygiants,playstat,junior1,vjcrdf,qwer12,webhompas,giraffe,pelican,jefferso,comanche,bruiser,monkeybo,kjkszpj,123456l,micro,albany,02051987,angel123,epsilon,aladin,death666,hounddog,josephin,altima,chilly,02071988,78945,ultra,02041979,gasman,thisisit,pavel,idunno,kimmie,05051985,paulie,ballin,medion,moondog,manolo,pallmall,climber,fishbone,genesis1,153624,toffee,tbone,clippers,krypton,jerry1,picturs,compass,111111q,02051988,1121,02081977,sairam,getout,333777,cobras,22041987,bigblock,severin,booster,norwich,whiteout,ctrhtn,123456m,02061984,hewlett,shocker,fuckinside,02031981,chase1,white1,versace,123456789s,basebal,iloveyou2,bluebell,08031986,anthon,stubby,foreve,undertak,werder,saiyan,mama123,medic,chipmunk,mike123,mazdarx7,qwe123qwe,bowwow,kjrjvjnbd,celeb,choochoo,demo,lovelife,02051984,colnago,lithium,02051989,15051981,zzzxxx,welcom,anastasi,fidelio,franc,26061987,roadster,stone55,drifter,hookem,hellboy,1234qw,cbr900rr,sinned,good123654,storm1,gypsy,zebra,zachary1,toejam,buceta,02021979,testing1,redfox,lineage,mike1,highbury,koroleva,nathan1,washingt,02061982,02091985,vintage,redbaron,dalshe,mykids,11051987,macbeth,julien,james123,krasotka,111000,10011986,987123,pipeline,tatarin,sensei,codered,komodo,frogman,7894561230,nascar24,juicy,01031988,redrose,mydick,pigeon,tkbpfdtnf,smirnoff,1215,spam,winner1,flyfish,moskva,81fukkc,21031987,olesya,starligh,summer99,13041988,fishhead,freesex,super12,06061986,azazel,scoobydoo,02021981,cabron,yogibear,sheba1,konstantin,tranny,chilli,terminat,ghbywtccf,slowhand,soccer12,cricket1,fuckhead,1002,seagull,achtung,blam,bigbob,bdsm,nostromo,survivor,cnfybckfd,lemonade,boomer1,rainbow1,rober,irinka,cocksuck,peaches1,itsme,sugar1,zodiac,upyours,dinara,135791,sunny1,chiara,johnson1,02041989,solitude,habibi,sushi,markiz,smoke1,rockies,catwoman,johnny1,qwerty7,bearcats,username,01011978,wanderer,ohshit,02101986,sigma,stephen1,paradigm,02011989,flanker,sanity,jsbach,spotty,bologna,fantasia,chevys,borabora,cocker,74108520,123ewq,12021988,01061990,gtnhjdbx,02071981,01011960,sundevil,3000gt,mustang6,gagging,maggi,armstron,yfnfkb,13041987,revolver,02021976,trouble1,madcat,jeremy1,jackass1,volkswag,30051985,corndog,pool6123,marines1,03041991,pizza1,piggy,sissy,02031979,sunfire,angelus,undead,24061986,14061991,wildbill,shinobi,45m2do5bs,123qwer,21011989,cleopatr,lasvega,hornets,amorcit,11081989,coventry,nirvana1,destin,sidekick,20061988,02081983,gbhfvblf,sneaky,bmw325,22021989,nfytxrf,sekret,kalina,zanzibar,hotone,qazws,wasabi,heidi1,highlander,blues1,hitachi,paolo,23041987,slayer1,simba1,02011981,tinkerbe,kieran,01121986,172839,boiler,1125,bluesman,waffle,asdfgh01,threesom,conan,1102,reflex,18011987,nautilus,everlast,fatty,vader1,01071986,cyborg,ghbdtn123,birddog,rubble,02071983,suckers,02021973,skyhawk,12qw12qw,dakota1,joebob,nokia6233,woodie,longdong,lamer,troll,ghjcnjgfhjkm,420000,boating,nitro,armada,messiah,1031,penguin1,02091989,americ,02071989,redeye,asdqwe123,07071987,monty1,goten,spikey,sonata,635241,tokiohotel,sonyericsson,citroen,compaq1,1812,umpire,belmont,jonny,pantera1,nudes,palmtree,14111986,fenway,bighead,razor,gryphon,andyod22,aaaaa1,taco,10031988,enterme,malachi,dogface,reptile,01041985,dindom,handball,marseille,candy1,19101987,torino,tigge,matthias,viewsoni,13031987,stinker,evangelion,24011985,123456123,rampage,sandrine,02081980,thecrow,astral,28041987,sprinter,private1,seabee,shibby,02101988,25081988,fearless,junkie,01091987,aramis,antelope,draven,fuck1,mazda6,eggman,02021990,barselona,buddy123,19061987,fyfnjkbq,nancy1,12121990,10071987,sluggo,kille,hotties,irishka,zxcasdqwe123,shamus,fairlane,honeybee,soccer10,13061986,fantomas,17051988,10051987,20111986,gladiato,karachi,gambler,gordo,01011995,biatch,matthe,25800852,papito,excite,buffalo1,bobdole,cheshire,player1,28021992,thewho,10101986,pinky1,mentor,tomahawk,brown1,03041986,bismillah,bigpoppa,ijrjkfl,01121988,runaway,08121986,skibum,studman,helper,squeak,holycow,manfred,harlem,glock,gideon,987321,14021985,yellow1,wizard1,margarit,success1,medved,sf49ers,lambda,pasadena,johngalt,quasar,1776,02031980,coldplay,amand,playa,bigpimp,04041991,capricorn,elefant,sweetness,bruce1,luca,dominik,10011990,biker,09051945,datsun,elcamino,trinitro,malice,audi,voyager1,02101983,joe123,carpente,spartan1,mario1,glamour,diaper,12121985,22011988,winter1,asimov,callisto,nikolai,pebble,02101981,vendetta,david123,boytoy,11061985,02031989,iloveyou1,stupid1,cayman,casper1,zippo,yamahar1,wildwood,foxylady,calibra,02041980,27061988,dungeon,leedsutd,30041986,11051990,bestbuy,antares,dominion,24680,01061986,skillet,enforcer,derparol,01041988,196969,29071983,f00tball,purple1,mingus,25031987,21031990,remingto,giggles,klaste,3x7pxr,01011994,coolcat,29051989,megane,20031987,02051980,04041988,synergy,0000007,macman,iforget,adgjmp,vjqgfhjkm,28011987,rfvfcenhf,16051989,25121987,16051987,rogue,mamamia,08051990,20091991,1210,carnival,bolitas,paris1,dmitriy,dimas,05051989,papillon,knuckles,29011985,hola,tophat,28021990,100500,cutiepie,devo,415263,ducks,ghjuhfvvf,asdqwe,22021986,freefall,parol,02011983,zarina,buste,vitamin,warez,bigones,17061988,baritone,jamess,twiggy,mischief,bitchy,hetfield,1003,dontknow,grinch,sasha_007,18061990,12031985,12031987,calimero,224466,letmei,15011987,acmilan,alexandre,02031977,08081988,whiteboy,21051991,barney1,02071978,money123,18091985,bigdawg,02031988,cygnusx1,zoloto,31011987,firefigh,blowfish,screamer,lfybbk,20051988,chelse,11121986,01031989,harddick,sexylady,30031988,02041974,auditt,pizdec,kojak,kfgjxrf,20091988,123456ru,wp2003wp,1204,15051990,slugger,kordell1,03031986,swinging,01011974,02071979,rockie,dimples,1234123,1dragon,trucking,rusty2,roger1,marijuana,kerouac,02051978,08031985,paco,thecure,keepout,kernel,noname123,13121985,francisc,bozo,02011982,22071986,02101979,obsidian,12345qw,spud,tabasco,02051985,jaguars,dfktynby,kokomo,popova,notused,sevens,4200,magneto,02051976,roswell,15101986,21101986,lakeside,bigbang,aspen,little1,14021986,loki,suckmydick,strawber,carlos1,nokian73,dirty1,joshu,25091987,16121987,02041975,advent,17011987,slimshady,whistler,10101990,stryker,22031984,15021985,01031985,blueball,26031988,ksusha,bahamut,robocop,w_pass,chris123,impreza,prozac,bookie,bricks,13021990,alice1,cassandr,11111q,john123,4ever,korova,02051973,142857,25041988,paramedi,eclipse1,salope,07091990,1124,darkangel,23021986,999666,nomad,02051981,smackdow,01021990,yoyoma,argentin,moonligh,57chevy,bootys,hardone,capricor,galant,spanker,dkflbr,24111989,magpies,krolik,21051988,cevthrb,cheddar,22041988,bigbooty,scuba1,qwedsa,duffman,bukkake,acura,johncena,sexxy,p@ssw0rd,258369,cherries,12345s,asgard,leopold,fuck123,mopar,lalakers,dogpound,matrix1,crusty,spanner,kestrel,fenris,universa,peachy,assasin,lemmein,eggplant,hejsan,canucks,wendy1,doggy1,aikman,tupac,turnip,godlike,fussball,golden1,19283746,april1,django,petrova,captain1,vincent1,ratman,taekwondo,chocha,serpent,perfect1,capetown,vampir,amore,gymnast,timeout,nbvjatq,blue32,ksenia,k.lvbkf,nazgul,budweiser,clutch,mariya,sylveste,02051972,beaker,cartman1,q11111,sexxx,forever1,loser1,marseill,magellan,vehpbr,sexgod,jktxrf,hallo123,132456,liverpool1,southpaw,seneca,camden,357159,camero,tenchi,johndoe,145236,roofer,741963,vlad,02041978,fktyrf,zxcv123,wingnut,wolfpac,notebook,pufunga7782,brandy1,biteme1,goodgirl,redhat,02031978,challeng,millenium,hoops,maveric,noname,angus1,gaell,onion,olympus,sabrina1,ricard,sixpack,gratis,gagged,camaross,hotgirls,flasher,02051977,bubba123,goldfing,moonshin,gerrard,volkov,sonyfuck,mandrake,258963,tracer,lakers1,asians,susan1,money12,helmut,boater,diablo2,1234zxcv,dogwood,bubbles1,happy2,randy1,aries,beach1,marcius2,navigator,goodie,hellokitty,fkbyjxrf,earthlink,lookout,jumbo,opendoor,stanley1,marie1,12345m,07071977,ashle,wormix,murzik,02081976,lakewood,bluejays,loveya,commande,gateway2,peppe,01011976,7896321,goth,oreo,slammer,rasmus,faith1,knight1,stone1,redskin,ironmaiden,gotmilk,destiny1,dejavu,1master,midnite,timosha,espresso,delfin,toriamos,oberon,ceasar,markie,1a2s3d,ghhh47hj7649,vjkjrj,daddyo,dougie,disco,auggie,lekker,therock1,ou8123,start1,noway,p4ssw0rd,shadow12,333444,saigon,2fast4u,capecod,23skidoo,qazxcv,beater,bremen,aaasss,roadrunner,peace1,12345qwer,02071975,platon,bordeaux,vbkfirf,135798642,test12,supernov,beatles1,qwert40,optimist,vanessa1,prince1,ilovegod,nightwish,natasha1,alchemy,bimbo,blue99,patches1,gsxr1000,richar,hattrick,hott,solaris,proton,nevets,enternow,beavis1,amigos,159357a,ambers,lenochka,147896,suckdick,shag,intercourse,blue1234,spiral,02061977,tosser,ilove,02031975,cowgirl,canuck,q2w3e4,munch,spoons,waterboy,123567,evgeniy,savior,zasada,redcar,mamacita,terefon,globus,doggies,htubcnhfwbz,1008,cuervo,suslik,azertyui,limewire,houston1,stratfor,steaua,coors,tennis1,12345qwerty,stigmata,derf,klondike,patrici,marijuan,hardball,odyssey,nineinch,boston1,pass1,beezer,sandr,charon,power123,a1234,vauxhall,875421,awesome1,reggae,boulder,funstuff,iriska,krokodil,rfntymrf,sterva,champ1,bball,peeper,m123456,toolbox,cabernet,sheepdog,magic32,pigpen,02041977,holein1,lhfrjy,banan,dabomb,natalie1,jennaj,montana1,joecool,funky,steven1,ringo,junio,sammy123,qqqwww,baltimor,footjob,geezer,357951,mash4077,cashmone,pancake,monic,grandam,bongo,yessir,gocubs,nastia,vancouve,barley,dragon69,watford,ilikepie,02071976,laddie,123456789m,hairball,toonarmy,pimpdadd,cvthnm,hunte,davinci,lback,sophie1,firenze,q1234567,admin1,bonanza,elway7,daman,strap,azert,wxcvbn,afrika,theforce,123456t,idefix,wolfen,houdini,scheisse,default,beech,maserati,02061976,sigmachi,dylan1,bigdicks,eskimo,mizzou,02101976,riccardo,egghead,111777,kronos,ghbrjk,chaos1,jomama,rfhnjirf,rodeo,dolemite,cafc91,nittany,pathfind,mikael,password9,vqsablpzla,purpl,gabber,modelsne,myxworld,hellsing,punker,rocknrol,fishon,fuck69,02041976,lolol,twinkie,tripleh,cirrus,redbone,killer123,biggun,allegro,gthcbr,smith1,wanking,bootsy,barry1,mohawk,koolaid,5329,futurama,samoht,klizma,996633,lobo,honeys,peanut1,556677,zxasqw,joemama,javelin,samm,223322,sandra1,flicks,montag,nataly,3006,tasha1,1235789,dogbone,poker1,p0o9i8u7,goodday,smoothie,toocool,max333,metroid,archange,vagabond,billabon,22061941,tyson1,02031973,darkange,skateboard,evolutio,morrowind,wizards,frodo1,rockin,cumslut,plastics,zaqwsxcde,5201314,doit,outback,bumble,dominiqu,persona,nevermore,alinka,02021971,forgetit,sexo,all4one,c2h5oh,petunia,sheeba,kenny1,elisabet,aolsucks,woodstoc,pumper,02011975,fabio,granada,scrapper,123459,minimoni,q123456789,breaker,1004,02091976,ncc74656,slimshad,friendster,austin31,wiseguy,donner,dilbert1,132465,blackbird,buffet,jellybean,barfly,behappy,01011971,carebear,fireblad,02051975,boxcar,cheeky,kiteboy,hello12,panda1,elvisp,opennow,doktor,alex12,02101977,pornking,flamengo,02091975,snowbird,lonesome,robin1,11111a,weed420,baracuda,bleach,12345abc,nokia1,metall,singapor,mariner,herewego,dingo,tycoon,cubs,blunts,proview,123456789d,kamasutra,lagnaf,vipergts,navyseal,starwar,masterbate,wildone,peterbil,cucumber,butkus,123qwert,climax,deniro,gotribe,cement,scooby1,summer69,harrier,shodan,newyear,02091977,starwars1,romeo1,sedona,harald,doubled,sasha123,bigguns,salami,awnyce,kiwi,homemade,pimping,azzer,bradley1,warhamme,linkin,dudeman,qwe321,pinnacle,maxdog,flipflop,lfitymrf,fucker1,acidburn,esquire,sperma,fellatio,jeepster,thedon,sexybitch,pookey,spliff,widget,vfntvfnbrf,trinity1,mutant,samuel1,meliss,gohome,1q2q3q,mercede,comein,grin,cartoons,paragon,henrik,rainyday,pacino,senna,bigdog1,alleycat,12345qaz,narnia,mustang2,tanya1,gianni,apollo11,wetter,clovis,escalade,rainbows,freddy1,smart1,daisydog,s123456,cocksucker,pushkin,lefty,sambo,fyutkjxtr,hiziad,boyz,whiplash,orchard,newark,adrenalin,1598753,bootsie,chelle,trustme,chewy,golfgti,tuscl,ambrosia,5wr2i7h8,penetration,shonuf,jughead,payday,stickman,gotham,kolokol,johnny5,kolbasa,stang,puppydog,charisma,gators1,mone,jakarta,draco,nightmar,01011973,inlove,laetitia,02091973,tarpon,nautica,meadow,0192837465,luckyone,14881488,chessie,goldeney,tarakan,69camaro,bungle,wordup,interne,fuckme2,515000,dragonfl,sprout,02081974,gerbil,bandit1,02071971,melanie1,phialpha,camber,kathy1,adriano,gonzo1,10293847,bigjohn,bismarck,7777777a,scamper,12348765,rabbits,222777,bynthytn,dima123,alexander1,mallorca,dragster,favorite6,beethove,burner,cooper1,fosters,hello2,normandy,777999,sebring,1michael,lauren1,blake1,killa,02091971,nounours,trumpet1,thumper1,playball,xantia,rugby1,rocknroll,guillaum,angela1,strelok,prosper,buttercup,masterp,dbnfkbr,cambridg,venom,treefrog,lumina,1234566,supra,sexybabe,freee,shen,frogs,driller,pavement,grace1,dicky,checker,smackdown,pandas,cannibal,asdffdsa,blue42,zyjxrf,nthvbyfnjh,melrose,neon,jabber,gamma,369258147,aprilia,atticus,benessere,catcher,skipper1,azertyuiop,sixty9,thierry,treetop,jello,melons,123456789qwe,tantra,buzzer,catnip,bouncer,computer1,sexyone,ananas,young1,olenka,sexman,mooses,kittys,sephiroth,contra,hallowee,skylark,sparkles,777333,1qazxsw23edc,lucas1,q1w2e3r,gofast,hannes,amethyst,ploppy,flower2,hotass,amatory,volleyba,dixie1,bettyboo,ticklish,02061974,frenchy,phish1,murphy1,trustno,02061972,leinad,mynameis,spooge,jupiter1,hyundai,frosch,junkmail,abacab,marbles,32167,casio,sunshine1,wayne1,longhair,caster,snicker,02101973,gannibal,skinhead,hansol,gatsby,segblue2,montecar,plato,gumby,kaboom,matty,bosco1,888999,jazzy,panter,jesus123,charlie2,giulia,candyass,sex69,travis1,farmboy,special1,02041973,letsdoit,password01,allison1,abcdefg1,notredam,ilikeit,789654123,liberty1,rugger,uptown,alcatraz,123456w,airman,007bond,navajo,kenobi,terrier,stayout,grisha,frankie1,fluff,1qazzaq1,1234561,virginie,1234568,tango1,werdna,octopus,fitter,dfcbkbcf,blacklab,115599,montrose,allen1,supernova,frederik,ilovepussy,justice1,radeon,playboy2,blubber,sliver,swoosh,motocros,lockdown,pearls,thebear,istheman,pinetree,biit,1234rewq,rustydog,tampabay,titts,babycake,jehovah,vampire1,streaming,collie,camil,fidelity,calvin1,stitch,gatit,restart,puppy1,budgie,grunt,capitals,hiking,dreamcas,zorro1,321678,riffraff,makaka,playmate,napalm,rollin,amstel,zxcvb123,samanth,rumble,fuckme69,jimmys,951357,pizzaman,1234567899,tralala,delpiero,alexi,yamato,itisme,1million,vfndtq,kahlua,londo,wonderboy,carrots,tazz,ratboy,rfgecnf,02081973,nico,fujitsu,tujhrf,sergbest,blobby,02051970,sonic1,1357911,smirnov,video1,panhead,bucky,02031974,44332211,duffer,cashmoney,left4dead,bagpuss,salman,01011972,titfuck,66613666,england1,malish,dresden,lemans,darina,zapper,123456as,123456qqq,met2002,02041972,redstar,blue23,1234509876,pajero,booyah,please1,tetsuo,semper,finder,hanuman,sunlight,123456n,02061971,treble,cupoi,password99,dimitri,3ip76k2,popcorn1,lol12345,stellar,nympho,shark1,keith1,saskia,bigtruck,revoluti,rambo1,asd222,feelgood,phat,gogators,bismark,cola,puck,furball,burnout,slonik,bowtie,mommy1,icecube,fabienn,mouser,papamama,rolex,giants1,blue11,trooper1,momdad,iklo,morten,rhubarb,gareth,123456d,blitz,canada1,r2d2,brest,tigercat,usmarine,lilbit,benny1,azrael,lebowski,12345r,madagaskar,begemot,loverman,dragonballz,italiano,mazda3,naughty1,onions,diver1,cyrano,capcom,asdfg123,forlife,fisherman,weare138,requiem,mufasa,alpha123,piercing,hellas,abracadabra,duckman,caracas,macintos,02011971,jordan2,crescent,fduecn,hogtied,eatmenow,ramjet,18121812,kicksass,whatthe,discus,rfhfvtkmrf,rufus1,sqdwfe,mantle,vegitto,trek,dan123,paladin1,rudeboy,liliya,lunchbox,riversid,acapulco,libero,dnsadm,maison,toomuch,boobear,hemlock,sextoy,pugsley,misiek,athome,migue,altoids,marcin,123450,rhfcfdbwf,jeter2,rhinos,rjhjkm,mercury1,ronaldinho,shampoo,makayla,kamilla,masterbating,tennesse,holger,john1,matchbox,hores,poptart,parlament,goodyear,asdfgh1,02081970,hardwood,alain,erection,hfytnrb,highlife,implants,benjami,dipper,jeeper,bendover,supersonic,babybear,laserjet,gotenks,bama,natedogg,aol123,pokemo,rabbit1,raduga,sopranos,cashflow,menthol,pharao,hacking,334455,ghjcnbnenrf,lizzy,muffin1,pooky,penis1,flyer,gramma,dipset,becca,ireland1,diana1,donjuan,pong,ziggy1,alterego,simple1,cbr900,logger,111555,claudia1,cantona7,matisse,ljxtymrf,victori,harle,mamas,encore,mangos,iceman1,diamon,alexxx,tiamat,5000,desktop,mafia,smurf,princesa,shojou,blueberr,welkom,maximka,123890,123q123,tammy1,bobmarley,clips,demon666,ismail,termite,laser1,missie,altair,donna1,bauhaus,trinitron,mogwai,flyers88,juniper,nokia5800,boroda,jingles,qwerasdfzxcv,shakur,777666,legos,mallrats,1qazxsw,goldeneye,tamerlan,julia1,backbone,spleen,49ers,shady,darkone,medic1,justi,giggle,cloudy,aisan,douche,parkour,bluejay,huskers1,redwine,1qw23er4,satchmo,1231234,nineball,stewart1,ballsack,probes,kappa,amiga,flipper1,dortmund,963258,trigun,1237895,homepage,blinky,screwy,gizzmo,belkin,chemist,coolhand,chachi,braves1,thebest,greedisgood,pro100,banana1,101091m,123456g,wonderfu,barefeet,8inches,1111qqqq,kcchiefs,qweasdzxc123,metal1,jennifer1,xian,asdasd123,pollux,cheerleaers,fruity,mustang5,turbos,shopper,photon,espana,hillbill,oyster,macaroni,gigabyte,jesper,motown,tuxedo,buster12,triplex,cyclones,estrell,mortis,holla,456987,fiddle,sapphic,jurassic,thebeast,ghjcnjq,baura,spock1,metallica1,karaoke,nemrac58,love1234,02031970,flvbybcnhfnjh,frisbee,diva,ajax,feathers,flower1,soccer11,allday,mierda,pearl1,amature,marauder,333555,redheads,womans,egorka,godbless,159263,nimitz,aaaa1111,sashka,madcow,socce,greywolf,baboon,pimpdaddy,123456789r,reloaded,lancia,rfhfylfi,dicker,placid,grimace,22446688,olemiss,whores,culinary,wannabe,maxi,1234567aa,amelie,riley1,trample,phantom1,baberuth,bramble,asdfqwer,vides,4you,abc123456,taichi,aztnm,smother,outsider,hakr,blackhawk,bigblack,girlie,spook,valeriya,gianluca,freedo,1q2q3q4q,handbag,lavalamp,cumm,pertinant,whatup,nokia123,redlight,patrik,111aaa,poppy1,dfytxrf,aviator,sweeps,kristin1,cypher,elway,yinyang,access1,poophead,tucson,noles1,monterey,waterfal,dank,dougal,918273,suede,minnesot,legman,bukowski,ganja,mammoth,riverrat,asswipe,daredevi,lian,arizona1,kamikadze,alex1234,smile1,angel2,55bgates,bellagio,0001,wanrltw,stiletto,lipton,arsena,biohazard,bbking,chappy,tetris,as123456,darthvad,lilwayne,nopassword,7412369,123456789987654321,natchez,glitter,14785236,mytime,rubicon,moto,pyon,wazzup,tbird,shane1,nightowl,getoff,beckham7,trueblue,hotgirl,nevermin,deathnote,13131,taffy,bigal,copenhag,apricot,gallaries,dtkjcbgtl,totoro,onlyone,civicsi,jesse1,baby123,sierra1,festus,abacus,sickboy,fishtank,fungus,charle,golfpro,teensex,mario66,seaside,aleksei,rosewood,blackberry,1020304050,bedlam,schumi,deerhunt,contour,darkelf,surveyor,deltas,pitchers,741258963,dipstick,funny1,lizzard,112233445566,jupiter2,softtail,titman,greenman,z1x2c3v4b5,smartass,12345677,notnow,myworld,nascar1,chewbacc,nosferatu,downhill,dallas22,kuan,blazers,whales,soldat,craving,powerman,yfcntyf,hotrats,cfvceyu,qweasdzx,princess1,feline,qqwwee,chitown,1234qaz,mastermind,114477,dingbat,care1839,standby,kismet,atreides,dogmeat,icarus,monkeyboy,alex1,mouses,nicetits,sealteam,chopper1,crispy,winter99,rrpass1,myporn,myspace1,corazo,topolino,ass123,lawman,muffy,orgy,1love,passord,hooyah,ekmzyf,pretzel,amonra,nestle,01011950,jimbeam,happyman,z12345,stonewal,helios,manunited,harcore,dick1,gaymen,2hot4u,light1,qwerty13,kakashi,pjkjnj,alcatel,taylo,allah,buddydog,ltkmaby,mongo,blonds,start123,audia6,123456v,civilwar,bellaco,turtles,mustan,deadspin,aaa123,fynjirf,lucky123,tortoise,amor,summe,waterski,zulu,drag0n,dtxyjcnm,gizmos,strife,interacial,pusyy,goose1,bear1,equinox,matri,jaguar1,tobydog,sammys,nachos,traktor,bryan1,morgoth,444555,dasani,miami1,mashka,xxxxxx1,ownage,nightwin,hotlips,passmast,cool123,skolko,eldiablo,manu,1357908642,screwyou,badabing,foreplay,hydro,kubrick,seductive,demon1,comeon,galileo,aladdin,metoo,happines,902100,mizuno,caddy,bizzare,girls1,redone,ohmygod,sable,bonovox,girlies,hamper,opus,gizmodo1,aaabbb,pizzahut,999888,rocky2,anton1,kikimora,peavey,ocelot,a1a2a3a4,2wsx3edc,jackie1,solace,sprocket,galary,chuck1,volvo1,shurik,poop123,locutus,virago,wdtnjxtr,tequier,bisexual,doodles,makeitso,fishy,789632145,nothing1,fishcake,sentry,libertad,oaktree,fivestar,adidas1,vegitta,mississi,spiffy,carme,neutron,vantage,agassi,boners,123456789v,hilltop,taipan,barrage,kenneth1,fister,martian,willem,lfybkf,bluestar,moonman,ntktdbpjh,paperino,bikers,daffy,benji,quake,dragonfly,suckcock,danilka,lapochka,belinea,calypso,asshol,camero1,abraxas,mike1234,womam,q1q2q3q4q5,youknow,maxpower,pic's,audi80,sonora,raymond1,tickler,tadpole,belair,crazyman,finalfantasy,999000,jonatha,paisley,kissmyas,morgana,monste,mantra,spunk,magic123,jonesy,mark1,alessand,741258,baddest,ghbdtnrfrltkf,zxccxz,tictac,augustin,racers,7grout,foxfire,99762000,openit,nathanie,1z2x3c4v5b,seadog,gangbanged,lovehate,hondacbr,harpoon,mamochka,fisherma,bismilla,locust,wally1,spiderman1,saffron,utjhubq,123456987,20spanks,safeway,pisser,bdfyjd,kristen1,bigdick1,magenta,vfhujif,anfisa,friday13,qaz123wsx,0987654321q,tyrant,guan,meggie,kontol,nurlan,ayanami,rocket1,yaroslav,websol76,mutley,hugoboss,websolutions,elpaso,gagarin,badboys,sephirot,918273645,newuser,qian,edcrfv,booger1,852258,lockout,timoxa94,mazda323,firedog,sokolova,skydiver,jesus777,1234567890z,soulfly,canary,malinka,guillerm,hookers,dogfart,surfer1,osprey,india123,rhjkbr,stoppedby,nokia5530,123456789o,blue1,werter,divers,3000,123456f,alpina,cali,whoknows,godspeed,986532,foreskin,fuzzy1,heyyou,didier,slapnuts,fresno,rosebud1,sandman1,bears1,blade1,honeybun,queen1,baronn,pakista,philipp,9111961,topsecret,sniper1,214365,slipper,letsfuck,pippen33,godawgs,mousey,qw123456,scrotum,loveis,lighthou,bp2002,nancy123,jeffrey1,susieq,buddy2,ralphie,trout1,willi,antonov,sluttey,rehbwf,marty1,darian,losangeles,letme1n,12345d,pusssy,godiva,ender,golfnut,leonidas,a1b2c3d4e5,puffer,general1,wizzard,lehjxrf,racer1,bigbucks,cool12,buddys,zinger,esprit,vbienrf,josep,tickling,froggie,987654321a,895623,daddys,crumbs,gucci,mikkel,opiate,tracy1,christophe,came11,777555,petrovich,humbug,dirtydog,allstate,horatio,wachtwoord,creepers,squirts,rotary,bigd,georgia1,fujifilm,2sweet,dasha,yorkie,slimjim,wiccan,kenzie,system1,skunk,b12345,getit,pommes,daredevil,sugars,bucker,piston,lionheart,1bitch,515051,catfight,recon,icecold,fantom,vodafone,kontakt,boris1,vfcnth,canine,01011961,valleywa,faraon,chickenwing101,qq123456,livewire,livelife,roosters,jeepers,ilya1234,coochie,pavlik,dewalt,dfhdfhf,architec,blackops,1qaz2wsx3edc4rfv,rhfcjnf,wsxedc,teaser,sebora,25252,rhino1,ankara,swifty,decimal,redleg,shanno,nermal,candies,smirnova,dragon01,photo1,ranetki,a1s2d3f4g5,axio,wertzu,maurizio,6uldv8,zxcvasdf,punkass,flowe,graywolf,peddler,3rjs1la7qe,mpegs,seawolf,ladyboy,pianos,piggies,vixen,alexus,orpheus,gdtrfb,z123456,macgyver,hugetits,ralph1,flathead,maurici,mailru,goofball,nissan1,nikon,stopit,odin,big1,smooch,reboot,famil,bullit,anthony7,gerhard,methos,124038,morena,eagle2,jessica2,zebras,getlost,gfynthf,123581321,sarajevo,indon,comets,tatjana,rfgbnjirf,joystick,batman12,123456c,sabre,beerme,victory1,kitties,1475369,badboy1,booboo1,comcast,slava,squid,saxophon,lionhear,qaywsx,bustle,nastena,roadway,loader,hillside,starlight,24681012,niggers,access99,bazooka,molly123,blackice,bandi,cocacol,nfhfrfy,timur,muschi,horse1,quant4307s,squerting,oscars,mygirls,flashman,tangerin,goofy1,p0o9i8,housewifes,newness,monkey69,escorpio,password11,hippo,warcraft3,qazxsw123,qpalzm,ribbit,ghbdtndctv,bogota,star123,258000,lincoln1,bigjim,lacoste,firestorm,legenda,indain,ludacris,milamber,1009,evangeli,letmesee,a111111,hooters1,bigred1,shaker,husky,a4tech,cnfkrth,argyle,rjhjdf,nataha,0o9i8u7y,gibson1,sooners1,glendale,archery,hoochie,stooge,aaaaaa1,scorpions,school1,vegas1,rapier,mike23,bassoon,groupd2013,macaco,baker1,labia,freewill,santiag,silverado,butch1,vflfufcrfh,monica1,rugrat,cornhole,aerosmit,bionicle,gfgfvfvf,daniel12,virgo,fmale,favorite2,detroit1,pokey,shredder,baggies,wednesda,cosmo1,mimosa,sparhawk,firehawk,romario,911turbo,funtimes,fhntvrf,nexus6,159753456,timothy1,bajingan,terry1,frenchie,raiden,1mustang,babemagnet,74123698,nadejda,truffles,rapture,douglas1,lamborghini,motocross,rjcvjc,748596,skeeter1,dante1,angel666,telecom,carsten,pietro,bmw318,astro1,carpediem,samir,orang,helium,scirocco,fuzzball,rushmore,rebelz,hotspur,lacrimosa,chevys10,madonna1,domenico,yfnfirf,jachin,shelby1,bloke,dawgs,dunhill,atlanta1,service1,mikado,devilman,angelit,reznor,euphoria,lesbain,checkmat,browndog,phreak,blaze1,crash1,farida,mutter,luckyme,horsemen,vgirl,jediknig,asdas,cesare,allnight,rockey,starlite,truck1,passfan,close-up,samue,cazzo,wrinkles,homely,eatme1,sexpot,snapshot,dima1995,asthma,thetruth,ducky,blender,priyanka,gaucho,dutchman,sizzle,kakarot,651550,passcode,justinbieber,666333,elodie,sanjay,110442,alex01,lotus1,2300mj,lakshmi,zoomer,quake3,12349876,teapot,12345687,ramada,pennywis,striper,pilot1,chingon,optima,nudity,ethan1,euclid,beeline,loyola,biguns,zaq12345,bravo1,disney1,buffa,assmunch,vivid,6661313,wellingt,aqwzsx,madala11,9874123,sigmar,pictere,tiptop,bettyboop,dinero,tahiti,gregory1,bionic,speed1,fubar1,lexus1,denis1,hawthorn,saxman,suntzu,bernhard,dominika,camaro1,hunter12,balboa,bmw2002,seville,diablo1,vfhbyjxrf,1234abc,carling,lockerroom,punani,darth,baron1,vaness,1password,libido,picher,232425,karamba,futyn007,daydream,11001001,dragon123,friends1,bopper,rocky123,chooch,asslover,shimmer,riddler,openme,tugboat,sexy123,midori,gulnara,christo,swatch,laker,offroad,puddles,hackers,mannheim,manager1,horseman,roman1,dancer1,komputer,pictuers,nokia5130,ejaculation,lioness,123456y,evilone,nastenka,pushok,javie,lilman,3141592,mjolnir,toulouse,pussy2,bigworm,smoke420,fullback,extensa,dreamcast,belize,delboy,willie1,casablanca,csyjxtr,ricky1,bonghit,salvator,basher,pussylover,rosie1,963258741,vivitron,cobra427,meonly,armageddon,myfriend,zardoz,qwedsazxc,kraken,fzappa,starfox,333999,illmatic,capoeira,weenie,ramzes,freedom2,toasty,pupkin,shinigami,fhvfutljy,nocturne,churchil,thumbnils,tailgate,neworder,sexymama,goarmy,cerebus,michelle1,vbifyz,surfsup,earthlin,dabulls,basketbal,aligator,mojojojo,saibaba,welcome2,wifes,wdtnjr,12345w,slasher,papabear,terran,footman,hocke,153759,texans,tom123,sfgiants,billabong,aassdd,monolith,xxx777,l3tm31n,ticktock,newone,hellno,japanees,contortionist,admin123,scout1,alabama1,divx1,rochard,privat,radar1,bigdad,fhctybq,tortuga,citrus,avanti,fantasy1,woodstock,s12345,fireman1,embalmer,woodwork,bonzai,konyor,newstart,jigga,panorama,goats,smithy,rugrats,hotmama,daedalus,nonstop,fruitbat,lisenok,quaker,violator,12345123,my3sons,cajun,fraggle,gayboy,oldfart,vulva,knickerless,orgasms,undertow,binky,litle,kfcnjxrf,masturbation,bunnie,alexis1,planner,transexual,sparty,leeloo,monies,fozzie,stinger1,landrove,anakonda,scoobie,yamaha1,henti,star12,rfhlbyfk,beyonce,catfood,cjytxrf,zealots,strat,fordtruc,archangel,silvi,sativa,boogers,miles1,bigjoe,tulip,petite,greentea,shitter,jonboy,voltron,morticia,evanescence,3edc4rfv,longshot,windows1,serge,aabbcc,starbucks,sinful,drywall,prelude1,www123,camel1,homebrew,marlins,123412,letmeinn,domini,swampy,plokij,fordf350,webcam,michele1,bolivi,27731828,wingzero,qawsedrftg,shinji,sverige,jasper1,piper1,cummer,iiyama,gocats,amour,alfarome,jumanji,mike69,fantasti,1monkey,w00t88,shawn1,lorien,1a2s3d4f5g,koleso,murph,natascha,sunkist,kennwort,emine,grinder,m12345,q1q2q3q4,cheeba,money2,qazwsxedc1,diamante,prosto,pdiddy,stinky1,gabby1,luckys,franci,pornographic,moochie,gfhjdjp,samdog,empire1,comicbookdb,emili,motdepasse,iphone,braveheart,reeses,nebula,sanjose,bubba2,kickflip,arcangel,superbow,porsche911,xyzzy,nigger1,dagobert,devil1,alatam,monkey2,barbara1,12345v,vfpfafrf,alessio,babemagn,aceman,arrakis,kavkaz,987789,jasons,berserk,sublime1,rogue1,myspace,buckwhea,csyekz,pussy4me,vette1,boots1,boingo,arnaud,budlite,redstorm,paramore,becky1,imtheman,chango,marley1,milkyway,666555,giveme,mahalo,lux2000,lucian,paddy,praxis,shimano,bigpenis,creeper,newproject2004,rammstei,j3qq4h7h2v,hfljcnm,lambchop,anthony2,bugman,gfhjkm12,dreamer1,stooges,cybersex,diamant,cowboyup,maximus1,sentra,615243,goethe,manhatta,fastcar,selmer,1213141516,yfnfitymrf,denni,chewey,yankee1,elektra,123456789p,trousers,fishface,topspin,orwell,vorona,sodapop,motherfu,ibilltes,forall,kookie,ronald1,balrog,maximilian,mypasswo,sonny1,zzxxcc,tkfkdg,magoo,mdogg,heeled,gitara,lesbos,marajade,tippy,morozova,enter123,lesbean,pounded,asd456,fialka,scarab,sharpie,spanky1,gstring,sachin,12345asd,princeto,hellohel,ursitesux,billows,1234kekc,kombat,cashew,duracell,kseniya,sevenof9,kostik,arthur1,corvet07,rdfhnbhf,songoku,tiberian,needforspeed,1qwert,dropkick,kevin123,panache,libra,a123456a,kjiflm,vfhnsirf,cntgfy,iamcool,narut,buffer,sk8ordie,urlaub,fireblade,blanked,marishka,gemini1,altec,gorillaz,chief1,revival47,ironman1,space1,ramstein,doorknob,devilmaycry,nemesis1,sosiska,pennstat,monday1,pioner,shevchenko,detectiv,evildead,blessed1,aggie,coffees,tical,scotts,bullwink,marsel,krypto,adrock,rjitxrf,asmodeus,rapunzel,theboys,hotdogs,deepthro,maxpayne,veronic,fyyeirf,otter,cheste,abbey1,thanos,bedrock,bartok,google1,xxxzzz,rodent,montecarlo,hernande,mikayla,123456789l,bravehea,12locked,ltymub,pegasus1,ameteur,saltydog,faisal,milfnew,momsuck,everques,ytngfhjkz,m0nkey,businessbabe,cooki,custard,123456ab,lbvjxrf,outlaws,753357,qwerty78,udacha,insider,chees,fuckmehard,shotokan,katya,seahorse,vtldtlm,turtle1,mike12,beebop,heathe,everton1,darknes,barnie,rbcekz,alisher,toohot,theduke,555222,reddog1,breezy,bulldawg,monkeyman,baylee,losangel,mastermi,apollo1,aurelie,zxcvb12345,cayenne,bastet,wsxzaq,geibcnbr,yello,fucmy69,redwall,ladybird,bitchs,cccccc1,rktjgfnhf,ghjdthrf,quest1,oedipus,linus,impalass,fartman,12345k,fokker,159753a,optiplex,bbbbbb1,realtor,slipkno,santacru,rowdy,jelena,smeller,3984240,ddddd1,sexyme,janet1,3698741,eatme69,cazzone,today1,poobear,ignatius,master123,newpass1,heather2,snoopdogg,blondinka,pass12,honeydew,fuckthat,890098890,lovem,goldrush,gecko,biker1,llama,pendejo,avalanche,fremont,snowman1,gandolf,chowder,1a2b3c4d5e,flyguy,magadan,1fuck,pingvin,nokia5230,ab1234,lothar,lasers,bignuts,renee1,royboy,skynet,12340987,1122334,dragrace,lovely1,22334455,booter,12345612,corvett,123456qq,capital1,videoes,funtik,wyvern,flange,sammydog,hulkster,13245768,not4you,vorlon,omegared,l58jkdjp!,filippo,123mudar,samadams,petrus,chris12,charlie123,123456789123,icetea,sunderla,adrian1,123qweas,kazanova,aslan,monkey123,fktyeirf,goodsex,123ab,lbtest,banaan,bluenose,837519,asd12345,waffenss,whateve,1a2a3a4a,trailers,vfhbirf,bhbcrf,klaatu,turk182,monsoon,beachbum,sunbeam,succes,clyde1,viking1,rawhide,bubblegum,princ,mackenzi,hershey1,222555,dima55,niggaz,manatee,aquila,anechka,pamel,bugsbunn,lovel,sestra,newport1,althor,hornyman,wakeup,zzz111,phishy,cerber,torrent,thething,solnishko,babel,buckeye1,peanu,ethernet,uncencored,baraka,665544,chris2,rb26dett,willy1,choppers,texaco,biggirl,123456b,anna2614,sukebe,caralho,callofduty,rt6ytere,jesus7,angel12,1money,timelord,allblack,pavlova,romanov,tequiero,yitbos,lookup,bulls23,snowflake,dickweed,barks,lever,irisha,firestar,fred1234,ghjnjnbg,danman,gatito,betty1,milhouse,kbctyjr,masterbaiting,delsol,papit,doggys,123698741,bdfyjdf,invictus,bloods,kayla1,yourmama,apple2,angelok,bigboy1,pontiac1,verygood,yeshua,twins2,porn4me,141516,rasta69,james2,bosshog,candys,adventur,stripe,djkjlz,dokken,austin316,skins,hogwarts,vbhevbh,navigato,desperado,xxx666,cneltyn,vasiliy,hazmat,daytek,eightbal,fred1,four20,74227422,fabia,aerosmith,manue,wingchun,boohoo,hombre,sanity72,goatboy,fuckm,partizan,avrora,utahjazz,submarin,pussyeat,heinlein,control1,costaric,smarty,chuan,triplets,snowy,snafu,teacher1,vangogh,vandal,evergree,cochise,qwerty99,pyramid1,saab900,sniffer,qaz741,lebron23,mark123,wolvie,blackbelt,yoshi,feeder,janeway,nutella,fuking,asscock,deepak,poppie,bigshow,housewife,grils,tonto,cynthia1,temptress,irakli,belle1,russell1,manders,frank123,seabass,gforce,songbird,zippy1,naught,brenda1,chewy1,hotshit,topaz,43046721,girfriend,marinka,jakester,thatsme,planeta,falstaff,patrizia,reborn,riptide,cherry1,shuan,nogard,chino,oasis1,qwaszx12,goodlife,davis1,1911a1,harrys,shitfuck,12345678900,russian7,007700,bulls1,porshe,danil,dolphi,river1,sabaka,gobigred,deborah1,volkswagen,miamo,alkaline,muffdive,1letmein,fkbyrf,goodguy,hallo1,nirvan,ozzie,cannonda,cvbhyjdf,marmite,germany1,joeblow,radio1,love11,raindrop,159852,jacko,newday,fathead,elvis123,caspe,citibank,sports1,deuce,boxter,fakepass,golfman,snowdog,birthday4,nonmembe,niklas,parsifal,krasota,theshit,1235813,maganda,nikita1,omicron,cassie1,columbo,buick,sigma1,thistle,bassin,rickster,apteka,sienna,skulls,miamor,coolgirl,gravis,1qazxc,virgini,hunter2,akasha,batma,motorcyc,bambino,tenerife,fordf250,zhuan,iloveporn,markiza,hotbabes,becool,fynjybyf,wapapapa,forme,mamont,pizda,dragonz,sharon1,scrooge,mrbill,pfloyd,leeroy,natedog,ishmael,777111,tecumseh,carajo,nfy.irf,0000000000o,blackcock,fedorov,antigone,feanor,novikova,bobert,peregrin,spartan117,pumkin,rayman,manuals,tooltime,555333,bonethug,marina1,bonnie1,tonyhawk,laracroft,mahalkita,18273645,terriers,gamer,hoser,littlema,molotok,glennwei,lemon1,caboose,tater,12345654321,brians,fritz1,mistral,jigsaw,fuckshit,hornyguy,southside,edthom,antonio1,bobmarle,pitures,ilikesex,crafty,nexus,boarder,fulcrum,astonvil,yanks1,yngwie,account1,zooropa,hotlegs,sammi,gumbo,rover1,perkele,maurolarastefy,lampard,357753,barracud,dmband,abcxyz,pathfinder,335577,yuliya,micky,jayman,asdfg12345,1596321,halcyon,rerfhtre,feniks,zaxscd,gotyoass,jaycee,samson1,jamesb,vibrate,grandpri,camino,colossus,davidb,mamo4ka,nicky1,homer123,pinguin,watermelon,shadow01,lasttime,glider,823762,helen1,pyramids,tulane,osama,rostov,john12,scoote,bhbyrf,gohan,galeries,joyful,bigpussy,tonka,mowgli,astalavista,zzz123,leafs,dalejr8,unicorn1,777000,primal,bigmama,okmijn,killzone,qaz12345,snookie,zxcvvcxz,davidc,epson,rockman,ceaser,beanbag,katten,3151020,duckhunt,segreto,matros,ragnar,699669,sexsexse,123123z,fuckyeah,bigbutts,gbcmrf,element1,marketin,saratov,elbereth,blaster1,yamahar6,grime,masha,juneau,1230123,pappy,lindsay1,mooner,seattle1,katzen,lucent,polly1,lagwagon,pixie,misiaczek,666666a,smokedog,lakers24,eyeball,ironhors,ametuer,volkodav,vepsrf,kimmy,gumby1,poi098,ovation,1q2w3,drinker,penetrating,summertime,1dallas,prima,modles,takamine,hardwork,macintosh,tahoe,passthie,chiks,sundown,flowers1,boromir,music123,phaedrus,albert1,joung,malakas,gulliver,parker1,balder,sonne,jessie1,domainlock2005,express1,vfkbyf,youandme,raketa,koala,dhjnvytyjub,nhfrnjh,testibil,ybrbnjc,987654321q,axeman,pintail,pokemon123,dogggg,shandy,thesaint,11122233,x72jhhu3z,theclash,raptors,zappa1,djdjxrf,hell666,friday1,vivaldi,pluto1,lance1,guesswho,jeadmi,corgan,skillz,skippy1,mango1,gymnastic,satori,362514,theedge,cxfcnkbdfz,sparkey,deicide,bagels,lololol,lemmings,r4e3w2q1,silve,staind,schnuffi,dazzle,basebal1,leroy1,bilbo1,luckie,qwerty2,goodfell,hermione,peaceout,davidoff,yesterda,killah,flippy,chrisb,zelda1,headless,muttley,fuckof,tittys,catdaddy,photog,beeker,reaver,ram1500,yorktown,bolero,tryagain,arman,chicco,learjet,alexei,jenna1,go2hell,12s3t4p55,momsanaladventure,mustang9,protoss,rooter,ginola,dingo1,mojave,erica1,1qazse4,marvin1,redwolf,sunbird,dangerou,maciek,girsl,hawks1,packard1,excellen,dashka,soleda,toonces,acetate,nacked,jbond007,alligator,debbie1,wellhung,monkeyma,supers,rigger,larsson,vaseline,rjnzhf,maripos,123456asd,cbr600rr,doggydog,cronic,jason123,trekker,flipmode,druid,sonyvaio,dodges,mayfair,mystuff,fun4me,samanta,sofiya,magics,1ranger,arcane,sixtynin,222444,omerta,luscious,gbyudby,bobcats,envision,chance1,seaweed,holdem,tomate,mensch,slicer,acura1,goochi,qweewq,punter,repoman,tomboy,never1,cortina,gomets,147896321,369852147,dogma,bhjxrf,loglatin,eragon,strato,gazelle,growler,885522,klaudia,payton34,fuckem,butchie,scorpi,lugano,123456789k,nichola,chipper1,spide,uhbujhbq,rsalinas,vfylfhby,longhorns,bugatti,everquest,!qaz2wsx,blackass,999111,snakeman,p455w0rd,fanatic,family1,pfqxbr,777vlad,mysecret,marat,phoenix2,october1,genghis,panties1,cooker,citron,ace123,1234569,gramps,blackcoc,kodiak1,hickory,ivanhoe,blackboy,escher,sincity,beaks,meandyou,spaniel,canon1,timmy1,lancaste,polaroid,edinburg,fuckedup,hotman,cueball,golfclub,gopack,bookcase,worldcup,dkflbvbhjdbx,twostep,17171717aa,letsplay,zolushka,stella1,pfkegf,kingtut,67camaro,barracuda,wiggles,gjhjkm,prancer,patata,kjifhf,theman1,romanova,sexyass,copper1,dobber,sokolov,pomidor,algernon,cadman,amoremio,william2,silly1,bobbys,hercule,hd764nw5d7e1vb1,defcon,deutschland,robinhood,alfalfa,machoman,lesbens,pandora1,easypay,tomservo,nadezhda,goonies,saab9000,jordyn,f15eagle,dbrecz,12qwerty,greatsex,thrawn,blunted,baywatch,doggystyle,loloxx,chevy2,january1,kodak,bushel,78963214,ub6ib9,zz8807zpl,briefs,hawker,224488,first1,bonzo,brent1,erasure,69213124,sidewind,soccer13,622521,mentos,kolibri,onepiece,united1,ponyboy,keksa12,wayer,mypussy,andrej,mischa,mille,bruno123,garter,bigpun,talgat,familia,jazzy1,mustang8,newjob,747400,bobber,blackbel,hatteras,ginge,asdfjkl;,camelot1,blue44,rebbyt34,ebony1,vegas123,myboys,aleksander,ijrjkflrf,lopata,pilsner,lotus123,m0nk3y,andreev,freiheit,balls1,drjynfrnt,mazda1,waterpolo,shibumi,852963,123bbb,cezer121,blondie1,volkova,rattler,kleenex,ben123,sanane,happydog,satellit,qazplm,qazwsxedcrfvtgb,meowmix,badguy,facefuck,spice1,blondy,major1,25000,anna123,654321a,sober1,deathrow,patterso,china1,naruto1,hawkeye1,waldo1,butchy,crayon,5tgb6yhn,klopik,crocodil,mothra,imhorny,pookie1,splatter,slippy,lizard1,router,buratino,yahweh,123698,dragon11,123qwe456,peepers,trucker1,ganjaman,1hxboqg2,cheyanne,storys,sebastie,zztop,maddison,4rfv3edc,darthvader,jeffro,iloveit,victor1,hotty,delphin,lifeisgood,gooseman,shifty,insertions,dude123,abrupt,123masha,boogaloo,chronos,stamford,pimpster,kthjxrf,getmein,amidala,flubber,fettish,grapeape,dantes,oralsex,jack1,foxcg33,winchest,francis1,getin,archon,cliffy,blueman,1basebal,sport1,emmitt22,porn123,bignasty,morga,123hfjdk147,ferrar,juanito,fabiol,caseydog,steveo,peternorth,paroll,kimchi,bootleg,gaijin,secre,acacia,eatme2,amarillo,monkey11,rfhfgep,tylers,a1a2a3a4a5,sweetass,blower,rodina,babushka,camilo,cimbom,tiffan,vfnbkmlf,ohbaby,gotigers,lindsey1,dragon13,romulus,qazxsw12,zxcvbn1,dropdead,hitman47,snuggle,eleven11,bloopers,357mag,avangard,bmw320,ginscoot,dshade,masterkey,voodoo1,rootedit,caramba,leahcim,hannover,8phrowz622,tim123,cassius,000000a,angelito,zzzzz1,badkarma,star1,malaga,glenwood,footlove,golf1,summer12,helpme1,fastcars,titan1,police1,polinka,k.jdm,marusya,augusto,shiraz,pantyhose,donald1,blaise,arabella,brigada,c3por2d2,peter01,marco1,hellow,dillweed,uzumymw,geraldin,loveyou2,toyota1,088011,gophers,indy500,slainte,5hsu75kpot,teejay,renat,racoon,sabrin,angie1,shiznit,harpua,sexyred,latex,tucker1,alexandru,wahoo,teamwork,deepblue,goodison,rundmc,r2d2c3p0,puppys,samba,ayrton,boobed,999777,topsecre,blowme1,123321z,loudog,random1,pantie,drevil,mandolin,121212q,hottub,brother1,failsafe,spade1,matvey,open1234,carmen1,priscill,schatzi,kajak,gooddog,trojans1,gordon1,kayak,calamity,argent,ufhvjybz,seviyi,penfold,assface,dildos,hawkwind,crowbar,yanks,ruffles,rastus,luv2epus,open123,aquafina,dawns,jared1,teufel,12345c,vwgolf,pepsi123,amores,passwerd,01478520,boliva,smutty,headshot,password3,davidd,zydfhm,gbgbcmrf,pornpass,insertion,ceckbr,test2,car123,checkit,dbnfkbq,niggas,nyyankee,muskrat,nbuhtyjr,gunner1,ocean1,fabienne,chrissy1,wendys,loveme89,batgirl,cerveza,igorek,steel1,ragman,boris123,novifarm,sexy12,qwerty777,mike01,giveitup,123456abc,fuckall,crevice,hackerz,gspot,eight8,assassins,texass,swallows,123458,baldur,moonshine,labatt,modem,sydney1,voland,dbnfkz,hotchick,jacker,princessa,dawgs1,holiday1,booper,reliant,miranda1,jamaica1,andre1,badnaamhere,barnaby,tiger7,david12,margaux,corsica,085tzzqi,universi,thewall,nevermor,martin6,qwerty77,cipher,apples1,0102030405,seraphim,black123,imzadi,gandon,ducati99,1shadow,dkflbvbhjdyf,44magnum,bigbad,feedme,samantha1,ultraman,redneck1,jackdog,usmc0311,fresh1,monique1,tigre,alphaman,cool1,greyhoun,indycar,crunchy,55chevy,carefree,willow1,063dyjuy,xrated,assclown,federica,hilfiger,trivia,bronco1,mamita,100200300,simcity,lexingky,akatsuki,retsam,johndeere,abudfv,raster,elgato,businka,satanas,mattingl,redwing1,shamil,patate,mannn,moonstar,evil666,b123456,bowl300,tanechka,34523452,carthage,babygir,santino,bondarenko,jesuss,chico1,numlock,shyguy,sound1,kirby1,needit,mostwanted,427900,funky1,steve123,passions,anduril,kermit1,prospero,lusty,barakuda,dream1,broodwar,porky,christy1,mahal,yyyyyy1,allan1,1sexy,flintsto,capri,cumeater,heretic,robert2,hippos,blindax,marykay,collecti,kasumi,1qaz!qaz,112233q,123258,chemistr,coolboy,0o9i8u,kabuki,righton,tigress,nessie,sergej,andrew12,yfafyz,ytrhjvfyn,angel7,victo,mobbdeep,lemming,transfor,1725782,myhouse,aeynbr,muskie,leno4ka,westham1,cvbhyjd,daffodil,pussylicker,pamela1,stuffer,warehous,tinker1,2w3e4r,pluton,louise1,polarbea,253634,prime1,anatoliy,januar,wysiwyg,cobraya,ralphy,whaler,xterra,cableguy,112233a,porn69,jamesd,aqualung,jimmy123,lumpy,luckyman,kingsize,golfing1,alpha7,leeds1,marigold,lol1234,teabag,alex11,10sne1,saopaulo,shanny,roland1,basser,3216732167,carol1,year2005,morozov,saturn1,joseluis,bushed,redrock,memnoch,lalaland,indiana1,lovegod,gulnaz,buffalos,loveyou1,anteater,pattaya,jaydee,redshift,bartek,summerti,coffee1,ricochet,incest,schastie,rakkaus,h2opolo,suikoden,perro,dance1,loveme1,whoopass,vladvlad,boober,flyers1,alessia,gfcgjhn,pipers,papaya,gunsling,coolone,blackie1,gonads,gfhjkzytn,foxhound,qwert12,gangrel,ghjvtntq,bluedevi,mywife,summer01,hangman,licorice,patter,vfr750,thorsten,515253,ninguna,dakine,strange1,mexic,vergeten,12345432,8phrowz624,stampede,floyd1,sailfish,raziel,ananda,giacomo,freeme,crfprf,74185296,allstars,master01,solrac,gfnhbjn,bayliner,bmw525,3465xxx,catter,single1,michael3,pentium4,nitrox,mapet123456,halibut,killroy,xxxxx1,phillip1,poopsie,arsenalfc,buffys,kosova,all4me,32165498,arslan,opensesame,brutis,charles2,pochta,nadegda,backspac,mustang0,invis,gogeta,654321q,adam25,niceday,truckin,gfdkbr,biceps,sceptre,bigdave,lauras,user345,sandys,shabba,ratdog,cristiano,natha,march13,gumball,getsdown,wasdwasd,redhead1,dddddd1,longlegs,13572468,starsky,ducksoup,bunnys,omsairam,whoami,fred123,danmark,flapper,swanky,lakings,yfhenj,asterios,rainier,searcher,dapper,ltdjxrf,horsey,seahawk,shroom,tkfkdgo,aquaman,tashkent,number9,messi10,1asshole,milenium,illumina,vegita,jodeci,buster01,bareback,goldfinger,fire1,33rjhjds,sabian,thinkpad,smooth1,sully,bonghits,sushi1,magnavox,colombi,voiture,limpone,oldone,aruba,rooster1,zhenya,nomar5,touchdow,limpbizkit,rhfcfdxbr,baphomet,afrodita,bball1,madiso,ladles,lovefeet,matthew2,theworld,thunderbird,dolly1,123rrr,forklift,alfons,berkut,speedy1,saphire,oilman,creatine,pussylov,bastard1,456258,wicked1,filimon,skyline1,fucing,yfnfkbz,hot123,abdulla,nippon,nolimits,billiard,booty1,buttplug,westlife,coolbean,aloha1,lopas,asasin,1212121,october2,whodat,good4u,d12345,kostas,ilya1992,regal,pioneer1,volodya,focus1,bastos,nbvjif,fenix,anita1,vadimka,nickle,jesusc,123321456,teste,christ1,essendon,evgenii,celticfc,adam1,forumwp,lovesme,26exkp,chillout,burly,thelast1,marcus1,metalgear,test11,ronaldo7,socrate,world1,franki,mommie,vicecity,postov1000,charlie3,oldschool,333221,legoland,antoshka,counterstrike,buggy,mustang3,123454,qwertzui,toons,chesty,bigtoe,tigger12,limpopo,rerehepf,diddle,nokia3250,solidsnake,conan1,rockroll,963369,titanic1,qwezxc,cloggy,prashant,katharin,maxfli,takashi,cumonme,michael9,mymother,pennstate,khalid,48151623,fightclub,showboat,mateusz,elrond,teenie,arrow1,mammamia,dustydog,dominator,erasmus,zxcvb1,1a2a3a,bones1,dennis1,galaxie,pleaseme,whatever1,junkyard,galadriel,charlies,2wsxzaq1,crimson1,behemoth,teres,master11,fairway,shady1,pass99,1batman,joshua12,baraban,apelsin,mousepad,melon,twodogs,123321qwe,metalica,ryjgrf,pipiska,rerfhfxf,lugnut,cretin,iloveu2,powerade,aaaaaaa1,omanko,kovalenko,isabe,chobits,151nxjmt,shadow11,zcxfcnkbdf,gy3yt2rgls,vfhbyrf,159753123,bladerunner,goodone,wonton,doodie,333666999,fuckyou123,kitty123,chisox,orlando1,skateboa,red12345,destroye,snoogans,satan1,juancarlo,goheels,jetson,scottt,fuckup,aleksa,gfhfljrc,passfind,oscar123,derrick1,hateme,viper123,pieman,audi100,tuffy,andover,shooter1,10000,makarov,grant1,nighthaw,13576479,browneye,batigol,nfvfhf,chocolate1,7hrdnw23,petter,bantam,morlii,jediknight,brenden,argonaut,goodstuf,wisconsi,315920,abigail1,dirtbag,splurge,k123456,lucky777,valdepen,gsxr600,322223,ghjnjrjk,zaq1xsw2cde3,schwanz,walter1,letmein22,nomads,124356,codeblue,nokian70,fucke,footbal1,agyvorc,aztecs,passw0r,smuggles,femmes,ballgag,krasnodar,tamuna,schule,sixtynine,empires,erfolg,dvader,ladygaga,elite1,venezuel,nitrous,kochamcie,olivia1,trustn01,arioch,sting1,131415,tristar,555000,maroon,135799,marsik,555556,fomoco,natalka,cwoui,tartan,davecole,nosferat,hotsauce,dmitry,horus,dimasik,skazka,boss302,bluebear,vesper,ultras,tarantul,asd123asd,azteca,theflash,8ball,1footbal,titlover,lucas123,number6,sampson1,789852,party1,dragon99,adonai,carwash,metropol,psychnau,vthctltc,hounds,firework,blink18,145632,wildcat1,satchel,rice80,ghtktcnm,sailor1,cubano,anderso,rocks1,mike11,famili,dfghjc,besiktas,roygbiv,nikko,bethan,minotaur,rakesh,orange12,hfleuf,jackel,myangel,favorite7,1478520,asssss,agnieszka,haley1,raisin,htubyf,1buster,cfiekz,derevo,1a2a3a4a5a,baltika,raffles,scruffy1,clitlick,louis1,buddha1,fy.nrf,walker1,makoto,shadow2,redbeard,vfvfvskfhfve,mycock,sandydog,lineman,network1,favorite8,longdick,mustangg,mavericks,indica,1killer,cisco1,angelofwar,blue69,brianna1,bubbaa,slayer666,level42,baldrick,brutus1,lowdown,haribo,lovesexy,500000,thissuck,picker,stephy,1fuckme,characte,telecast,1bigdog,repytwjdf,thematrix,hammerhe,chucha,ganesha,gunsmoke,georgi,sheltie,1harley,knulla,sallas,westie,dragon7,conker,crappie,margosha,lisboa,3e2w1q,shrike,grifter,ghjcnjghjcnj,asdfg1,mnbvcxz1,myszka,posture,boggie,rocketman,flhtyfkby,twiztid,vostok,pi314159,force1,televizor,gtkmvtym,samhain,imcool,jadzia,dreamers,strannik,k2trix,steelhea,nikitin,commodor,brian123,chocobo,whopper,ibilljpf,megafon,ararat,thomas12,ghbrjkbcn,q1234567890,hibernia,kings1,jim123,redfive,68camaro,iawgk2,xavier1,1234567u,d123456,ndirish,airborn,halfmoon,fluffy1,ranchero,sneaker,soccer2,passion1,cowman,birthday1,johnn,razzle,glock17,wsxqaz,nubian,lucky2,jelly1,henderso,eric1,123123e,boscoe01,fuck0ff,simpson1,sassie,rjyjgkz,nascar3,watashi,loredana,janus,wilso,conman,david2,mothe,iloveher,snikers,davidj,fkmnthyfnbdf,mettss,ratfink,123456h,lostsoul,sweet16,brabus,wobble,petra1,fuckfest,otters,sable1,svetka,spartacu,bigstick,milashka,1lover,pasport,champagn,papichul,hrvatska,hondacivic,kevins,tacit,moneybag,gohogs,rasta1,246813579,ytyfdbcnm,gubber,darkmoon,vitaliy,233223,playboys,tristan1,joyce1,oriflame,mugwump,access2,autocad,thematri,qweqwe123,lolwut,ibill01,multisyn,1233211,pelikan,rob123,chacal,1234432,griffon,pooch,dagestan,geisha,satriani,anjali,rocketma,gixxer,pendrago,vincen,hellokit,killyou,ruger,doodah,bumblebe,badlands,galactic,emachines,foghorn,jackso,jerem,avgust,frontera,123369,daisymae,hornyboy,welcome123,tigger01,diabl,angel13,interex,iwantsex,rockydog,kukolka,sawdust,online1,3234412,bigpapa,jewboy,3263827,dave123,riches,333222,tony1,toggle,farter,124816,tities,balle,brasilia,southsid,micke,ghbdtn12,patit,ctdfcnjgjkm,olds442,zzzzzz1,nelso,gremlins,gypsy1,carter1,slut69,farcry,7415963,michael8,birdie1,charl,123456789abc,100001,aztec,sinjin,bigpimpi,closeup,atlas1,nvidia,doggone,classic1,manana,malcolm1,rfkbyf,hotbabe,rajesh,dimebag,ganjubas,rodion,jagr68,seren,syrinx,funnyman,karapuz,123456789n,bloomin,admin18533362,biggdogg,ocarina,poopy1,hellome,internet1,booties,blowjobs,matt1,donkey1,swede,1jennife,evgeniya,lfhbyf,coach1,444777,green12,patryk,pinewood,justin12,271828,89600506779,notredame,tuborg,lemond,sk8ter,million1,wowser,pablo1,st0n3,jeeves,funhouse,hiroshi,gobucs,angeleye,bereza,winter12,catalin,qazedc,andros,ramazan,vampyre,sweethea,imperium,murat,jamest,flossy,sandeep,morgen,salamandra,bigdogg,stroller,njdevils,nutsack,vittorio,%%passwo,playful,rjyatnrf,tookie,ubnfhf,michi,777444,shadow13,devils1,radiance,toshiba1,beluga,amormi,dandfa,trust1,killemall,smallville,polgara,billyb,landscap,steves,exploite,zamboni,damage11,dzxtckfd,trader12,pokey1,kobe08,damager,egorov,dragon88,ckfdbr,lisa69,blade2,audis4,nelson1,nibbles,23176djivanfros,mutabor,artofwar,matvei,metal666,hrfzlz,schwinn,poohbea,seven77,thinker,123456789qwerty,sobriety,jakers,karamelka,vbkfyf,volodin,iddqd,dale03,roberto1,lizaveta,qqqqqq1,cathy1,08154711,davidm,quixote,bluenote,tazdevil,katrina1,bigfoot1,bublik,marma,olechka,fatpussy,marduk,arina,nonrev67,qqqq1111,camill,wtpfhm,truffle,fairview,mashina,voltaire,qazxswedcvfr,dickface,grassy,lapdance,bosstone,crazy8,yackwin,mobil,danielit,mounta1n,player69,bluegill,mewtwo,reverb,cnthdf,pablito,a123321,elena1,warcraft1,orland,ilovemyself,rfntyjr,joyride,schoo,dthjxrf,thetachi,goodtimes,blacksun,humpty,chewbacca,guyute,123xyz,lexicon,blue45,qwe789,galatasaray,centrino,hendrix1,deimos,saturn5,craig1,vlad1996,sarah123,tupelo,ljrnjh,hotwife,bingos,1231231,nicholas1,flamer,pusher,1233210,heart1,hun999,jiggy,giddyup,oktober,123456zxc,budda,galahad,glamur,samwise,oneton,bugsbunny,dominic1,scooby2,freetime,internat,159753852,sc00ter,wantit,mazinger,inflames,laracrof,greedo,014789,godofwar,repytwjd,water123,fishnet,venus1,wallace1,tenpin,paula1,1475963,mania,novikov,qwertyasdfgh,goldmine,homies,777888999,8balls,holeinon,paper1,samael,013579,mansur,nikit,ak1234,blueline,polska1,hotcock,laredo,windstar,vbkbwbz,raider1,newworld,lfybkrf,catfish1,shorty1,piranha,treacle,royale,2234562,smurfs,minion,cadence,flapjack,123456p,sydne,135531,robinhoo,nasdaq,decatur,cyberonline,newage,gemstone,jabba,touchme,hooch,pigdog,indahous,fonzie,zebra1,juggle,patrick2,nihongo,hitomi,oldnavy,qwerfdsa,ukraina,shakti,allure,kingrich,diane1,canad,piramide,hottie1,clarion,college1,5641110,connect1,therion,clubber,velcro,dave1,astra1,13579-,astroboy,skittle,isgreat,photoes,cvzefh1gkc,001100,2cool4u,7555545,ginger12,2wsxcde3,camaro69,invader,domenow,asd1234,colgate,qwertasdfg,jack123,pass01,maxman,bronte,whkzyc,peter123,bogie,yecgaa,abc321,1qay2wsx,enfield,camaroz2,trashman,bonefish,system32,azsxdcfvgb,peterose,iwantyou,dick69,temp1234,blastoff,capa200,connie1,blazin,12233445,sexybaby,123456j,brentfor,pheasant,hommer,jerryg,thunders,august1,lager,kapusta,boobs1,nokia5300,rocco1,xytfu7,stars1,tugger,123sas,blingbling,1bubba,0wnsyo0,1george,baile,richard2,habana,1diamond,sensatio,1golfer,maverick1,1chris,clinton1,michael7,dragons1,sunrise1,pissant,fatim,mopar1,levani,rostik,pizzapie,987412365,oceans11,748159263,cum4me,palmetto,4r3e2w1q,paige1,muncher,arsehole,kratos,gaffer,banderas,billys,prakash,crabby,bungie,silver12,caddis,spawn1,xboxlive,sylvania,littlebi,524645,futura,valdemar,isacs155,prettygirl,big123,555444,slimer,chicke,newstyle,skypilot,sailormoon,fatluvr69,jetaime,sitruc,jesuschrist,sameer,bear12,hellion,yendor,country1,etnies,conejo,jedimast,darkknight,toobad,yxcvbn,snooks,porn4life,calvary,alfaromeo,ghostman,yannick,fnkfynblf,vatoloco,homebase,5550666,barret,1111111111zz,odysseus,edwardss,favre4,jerrys,crybaby,xsw21qaz,firestor,spanks,indians1,squish,kingair,babycakes,haters,sarahs,212223,teddyb,xfactor,cumload,rhapsody,death123,three3,raccoon,thomas2,slayer66,1q2q3q4q5q,thebes,mysterio,thirdeye,orkiox.,nodoubt,bugsy,schweiz,dima1996,angels1,darkwing,jeronimo,moonpie,ronaldo9,peaches2,mack10,manish,denise1,fellowes,carioca,taylor12,epaulson,makemoney,oc247ngucz,kochanie,3edcvfr4,vulture,1qw23e,1234567z,munchie,picard1,xthtgfirf,sportste,psycho1,tahoe1,creativ,perils,slurred,hermit,scoob,diesel1,cards1,wipeout,weeble,integra1,out3xf,powerpc,chrism,kalle,ariadne,kailua,phatty,dexter1,fordman,bungalow,paul123,compa,train1,thejoker,jys6wz,pussyeater,eatmee,sludge,dominus,denisa,tagheuer,yxcvbnm,bill1,ghfdlf,300zx,nikita123,carcass,semaj,ramone,muenchen,animal1,greeny,annemari,dbrf134,jeepcj7,mollys,garten,sashok,ironmaid,coyotes,astoria,george12,westcoast,primetim,123456o,panchito,rafae,japan1,framer,auralo,tooshort,egorova,qwerty22,callme,medicina,warhawk,w1w2w3w4,cristia,merli,alex22,kawaii,chatte,wargames,utvols,muaddib,trinket,andreas1,jjjjj1,cleric,scooters,cuntlick,gggggg1,slipknot1,235711,handcuff,stussy,guess1,leiceste,ppppp1,passe,lovegun,chevyman,hugecock,driver1,buttsex,psychnaut1,cyber1,black2,alpha12,melbourn,man123,metalman,yjdsqujl,blondi,bungee,freak1,stomper,caitlin1,nikitina,flyaway,prikol,begood,desperad,aurelius,john1234,whosyourdaddy,slimed123,bretagne,den123,hotwheel,king123,roodypoo,izzicam,save13tx,warpten,nokia3310,samolet,ready1,coopers,scott123,bonito,1aaaaa,yomomma,dawg1,rache,itworks,asecret,fencer,451236,polka,olivetti,sysadmin,zepplin,sanjuan,479373,lickem,hondacrx,pulamea,future1,naked1,sexyguy,w4g8at,lollol1,declan,runner1,rumple,daddy123,4snz9g,grandprix,calcio,whatthefuck,nagrom,asslick,pennst,negrit,squiggy,1223334444,police22,giovann,toronto1,tweet,yardbird,seagate,truckers,554455,scimitar,pescator,slydog,gaysex,dogfish,fuck777,12332112,qazxswed,morkovka,daniela1,imback,horny69,789123456,123456789w,jimmy2,bagger,ilove69,nikolaus,atdhfkm,rebirth,1111aaaa,pervasive,gjgeufq,dte4uw,gfhnbpfy,skeletor,whitney1,walkman,delorean,disco1,555888,as1234,ishikawa,fuck12,reaper1,dmitrii,bigshot,morrisse,purgen,qwer4321,itachi,willys,123123qwe,kisska,roma123,trafford,sk84life,326159487,pedros,idiom,plover,bebop,159875321,jailbird,arrowhea,qwaszx123,zaxscdvf,catlover,bakers,13579246,bones69,vermont1,helloyou,simeon,chevyz71,funguy,stargaze,parolparol,steph1,bubby,apathy,poppet,laxman,kelly123,goodnews,741236,boner1,gaetano,astonvilla,virtua,luckyboy,rocheste,hello2u,elohim,trigger1,cstrike,pepsicola,miroslav,96385274,fistfuck,cheval,magyar,svetlanka,lbfyjxrf,mamedov,123123123q,ronaldo1,scotty1,1nicole,pittbull,fredd,bbbbb1,dagwood,gfhkfvtyn,ghblehrb,logan5,1jordan,sexbomb,omega2,montauk,258741,dtythf,gibbon,winamp,thebomb,millerli,852654,gemin,baldy,halflife2,dragon22,mulberry,morrigan,hotel6,zorglub,surfin,951159,excell,arhangel,emachine,moses1,968574,reklama,bulldog2,cuties,barca,twingo,saber,elite11,redtruck,casablan,ashish,moneyy,pepper12,cnhtktw,rjcnbr,arschloch,phenix,cachorro,sunita,madoka,joselui,adams1,mymoney,hemicuda,fyutkjr,jake12,chicas,eeeee1,sonnyboy,smarties,birdy,kitten1,cnfcbr,island1,kurosaki,taekwond,konfetka,bennett1,omega3,jackson2,fresca,minako,octavian,kban667,feyenoord,muaythai,jakedog,fktrcfylhjdyf,1357911q,phuket,sexslave,fktrcfylhjdbx,asdfjk,89015173454,qwerty00,kindbud,eltoro,sex6969,nyknicks,12344321q,caballo,evenflow,hoddle,love22,metro1,mahalko,lawdog,tightass,manitou,buckie,whiskey1,anton123,335533,password4,primo,ramair,timbo,brayden,stewie,pedro1,yorkshir,ganster,hellothe,tippy1,direwolf,genesi,rodrig,enkeli,vaz21099,sorcerer,winky,oneshot,boggle,serebro,badger1,japanes,comicbook,kamehame,alcat,denis123,echo45,sexboy,gr8ful,hondo,voetbal,blue33,2112rush,geneviev,danni1,moosey,polkmn,matthew7,ironhead,hot2trot,ashley12,sweeper,imogen,blue21,retep,stealth1,guitarra,bernard1,tatian,frankfur,vfnhbwf,slacking,haha123,963741,asdasdas,katenok,airforce1,123456789qaz,shotgun1,12qwasz,reggie1,sharo,976431,pacifica,dhip6a,neptun,kardon,spooky1,beaut,555555a,toosweet,tiedup,11121314,startac,lover69,rediska,pirata,vfhrbp,1234qwerty,energize,hansolo1,playbo,larry123,oemdlg,cnjvfnjkju,a123123,alexan,gohawks,antonius,fcbayern,mambo,yummy1,kremlin,ellen1,tremere,vfiekz,bellevue,charlie9,izabella,malishka,fermat,rotterda,dawggy,becket,chasey,kramer1,21125150,lolit,cabrio,schlong,arisha,verity,3some,favorit,maricon,travelle,hotpants,red1234,garrett1,home123,knarf,seven777,figment,asdewq,canseco,good2go,warhol,thomas01,pionee,al9agd,panacea,chevy454,brazzers,oriole,azerty123,finalfan,patricio,northsta,rebelde,bulldo,stallone,boogie1,7uftyx,cfhfnjd,compusa,cornholi,config,deere,hoopster,sepultura,grasshop,babygurl,lesbo,diceman,proverbs,reddragon,nurbek,tigerwoo,superdup,buzzsaw,kakaroto,golgo13,edwar,123qaz123,butter1,sssss1,texas2,respekt,ou812ic,123456qaz,55555a,doctor1,mcgwire,maria123,aol999,cinders,aa1234,joness,ghbrjkmyj,makemone,sammyboy,567765,380zliki,theraven,testme,mylene,elvira26,indiglo,tiramisu,shannara,baby1,123666,gfhreh,papercut,johnmish,orange8,bogey1,mustang7,bagpipes,dimarik,vsijyjr,4637324,ravage,cogito,seven11,natashka,warzone,hr3ytm,4free,bigdee,000006,243462536,bigboi,123333,trouts,sandy123,szevasz,monica2,guderian,newlife1,ratchet,r12345,razorbac,12345i,piazza31,oddjob,beauty1,fffff1,anklet,nodrog,pepit,olivi,puravida,robert12,transam1,portman,bubbadog,steelers1,wilson1,eightball,mexico1,superboy,4rfv5tgb,mzepab,samurai1,fuckslut,colleen1,girdle,vfrcbvec,q1w2e3r4t,soldier1,19844891,alyssa1,a12345a,fidelis,skelter,nolove,mickeymouse,frehley,password69,watermel,aliska,soccer15,12345e,ladybug1,abulafia,adagio,tigerlil,takehana,hecate,bootneck,junfan,arigato,wonkette,bobby123,trustnoone,phantasm,132465798,brianjo,w12345,t34vfrc1991,deadeye,1robert,1daddy,adida,check1,grimlock,muffi,airwalk,prizrak,onclick,longbeac,ernie1,eadgbe,moore1,geniu,shadow123,bugaga,jonathan1,cjrjkjdf,orlova,buldog,talon1,westport,aenima,541233432442,barsuk,chicago2,kellys,hellbent,toughguy,iskander,skoal,whatisit,jake123,scooter2,fgjrfkbgcbc,ghandi,love13,adelphia,vjhrjdrf,adrenali,niunia,jemoeder,rainbo,all4u8,anime1,freedom7,seraph,789321,tommys,antman,firetruc,neogeo,natas,bmwm3,froggy1,paul1,mamit,bayview,gateways,kusanagi,ihateu,frederi,rock1,centurion,grizli,biggin,fish1,stalker1,3girls,ilovepor,klootzak,lollo,redsox04,kirill123,jake1,pampers,vasya,hammers1,teacup,towing,celtic1,ishtar,yingyang,4904s677075,dahc1,patriot1,patrick9,redbirds,doremi,rebecc,yoohoo,makarova,epiphone,rfgbnfy,milesd,blister,chelseafc,katana1,blackrose,1james,primrose,shock5,hard1,scooby12,c6h12o6,dustoff,boing,chisel,kamil,1william,defiant1,tyvugq,mp8o6d,aaa340,nafets,sonnet,flyhigh,242526,crewcom,love23,strike1,stairway,katusha,salamand,cupcake1,password0,007james,sunnie,multisync,harley01,tequila1,fred12,driver8,q8zo8wzq,hunter01,mozzer,temporar,eatmeraw,mrbrownxx,kailey,sycamore,flogger,tincup,rahasia,ganymede,bandera,slinger,1111122222,vander,woodys,1cowboy,khaled,jamies,london12,babyboo,tzpvaw,diogenes,budice,mavrick,135797531,cheeta,macros,squonk,blackber,topfuel,apache1,falcon16,darkjedi,cheeze,vfhvtkfl,sparco,change1,gfhfif,freestyl,kukuruza,loveme2,12345f,kozlov,sherpa,marbella,44445555,bocephus,1winner,alvar,hollydog,gonefish,iwantin,barman,godislove,amanda18,rfpfynbg,eugen,abcdef1,redhawk,thelema,spoonman,baller1,harry123,475869,tigerman,cdtnjxrf,marillio,scribble,elnino,carguy,hardhead,l2g7k3,troopers,selen,dragon76,antigua,ewtosi,ulysse,astana,paroli,cristo,carmex,marjan,bassfish,letitbe,kasparov,jay123,19933991,blue13,eyecandy,scribe,mylord,ukflbjkec,ellie1,beaver1,destro,neuken,halfpint,ameli,lilly1,satanic,xngwoj,12345trewq,asdf1,bulldogg,asakura,jesucrist,flipside,packers4,biggy,kadett,biteme69,bobdog,silverfo,saint1,bobbo,packman,knowledg,foolio,fussbal,12345g,kozerog,westcoas,minidisc,nbvcxw,martini1,alastair,rasengan,superbee,memento,porker,lena123,florenc,kakadu,bmw123,getalife,bigsky,monkee,people1,schlampe,red321,memyself,0147896325,12345678900987654321,soccer14,realdeal,gfgjxrf,bella123,juggs,doritos,celtics1,peterbilt,ghbdtnbrb,gnusmas,xcountry,ghbdtn1,batman99,deusex,gtnhjdf,blablabl,juster,marimba,love2,rerjkrf,alhambra,micros,siemens1,assmaste,moonie,dashadasha,atybrc,eeeeee1,wildrose,blue55,davidl,xrp23q,skyblue,leo123,ggggg1,bestfriend,franny,1234rmvb,fun123,rules1,sebastien,chester2,hakeem,winston2,fartripper,atlant,07831505,iluvsex,q1a2z3,larrys,009900,ghjkju,capitan,rider1,qazxsw21,belochka,andy123,hellya,chicca,maximal,juergen,password1234,howard1,quetzal,daniel123,qpwoeiruty,123555,bharat,ferrari3,numbnuts,savant,ladydog,phipsi,lovepussy,etoile,power2,mitten,britneys,chilidog,08522580,2fchbg,kinky1,bluerose,loulo,ricardo1,doqvq3,kswbdu,013cpfza,timoha,ghbdtnghbdtn,3stooges,gearhead,browns1,g00ber,super7,greenbud,kitty2,pootie,toolshed,gamers,coffe,ibill123,freelove,anasazi,sister1,jigger,natash,stacy1,weronika,luzern,soccer7,hoopla,dmoney,valerie1,canes,razdvatri,washere,greenwoo,rfhjkbyf,anselm,pkxe62,maribe,daniel2,maxim1,faceoff,carbine,xtkjdtr,buddy12,stratos,jumpman,buttocks,aqswdefr,pepsis,sonechka,steeler1,lanman,nietzsch,ballz,biscuit1,wrxsti,goodfood,juventu,federic,mattman,vika123,strelec,jledfyxbr,sideshow,4life,fredderf,bigwilly,12347890,12345671,sharik,bmw325i,fylhtqrf,dannon4,marky,mrhappy,drdoom,maddog1,pompier,cerbera,goobers,howler,jenny69,evely,letitrid,cthuttdyf,felip,shizzle,golf12,t123456,yamah,bluearmy,squishy,roxan,10inches,dollface,babygirl1,blacksta,kaneda,lexingto,canadien,222888,kukushka,sistema,224422,shadow69,ppspankp,mellons,barbie1,free4all,alfa156,lostone,2w3e4r5t,painkiller,robbie1,binger,8dihc6,jaspe,rellik,quark,sogood,hoopstar,number2,snowy1,dad2ownu,cresta,qwe123asd,hjvfyjdf,gibsonsg,qbg26i,dockers,grunge,duckling,lfiekz,cuntsoup,kasia1,1tigger,woaini,reksio,tmoney,firefighter,neuron,audia3,woogie,powerboo,powermac,fatcock,12345666,upnfmc,lustful,porn1,gotlove,amylee,kbytqrf,11924704,25251325,sarasota,sexme,ozzie1,berliner,nigga1,guatemal,seagulls,iloveyou!,chicken2,qwerty21,010203040506,1pillow,libby1,vodoley,backlash,piglets,teiubesc,019283,vonnegut,perico,thunde,buckey,gtxtymrf,manunite,iiiii1,lost4815162342,madonn,270873_,britney1,kevlar,piano1,boondock,colt1911,salamat,doma77ns,anuradha,cnhjqrf,rottweil,newmoon,topgun1,mauser,fightclu,birthday21,reviewpa,herons,aassddff,lakers32,melissa2,vredina,jiujitsu,mgoblue,shakey,moss84,12345zxcvb,funsex,benji1,garci,113322,chipie,windex,nokia5310,pwxd5x,bluemax,cosita,chalupa,trotsky,new123,g3ujwg,newguy,canabis,gnaget,happydays,felixx,1patrick,cumface,sparkie,kozlova,123234,newports,broncos7,golf18,recycle,hahah,harrypot,cachondo,open4me,miria,guessit,pepsione,knocker,usmc1775,countach,playe,wiking,landrover,cracksevi,drumline,a7777777,smile123,manzana,panty,liberta,pimp69,dolfan,quality1,schnee,superson,elaine22,webhompass,mrbrownx,deepsea,4wheel,mamasita,rockport,rollie,myhome,jordan12,kfvgjxrf,hockey12,seagrave,ford1,chelsea2,samsara,marissa1,lamesa,mobil1,piotrek,tommygun,yyyyy1,wesley1,billy123,homersim,julies,amanda12,shaka,maldini,suzenet,springst,iiiiii1,yakuza,111111aa,westwind,helpdesk,annamari,bringit,hopefull,hhhhhhh1,saywhat,mazdarx8,bulova,jennife1,baikal,gfhjkmxbr,victoria1,gizmo123,alex99,defjam,2girls,sandrock,positivo,shingo,syncmast,opensesa,silicone,fuckina,senna1,karlos,duffbeer,montagne,gehrig,thetick,pepino,hamburge,paramedic,scamp,smokeweed,fabregas,phantoms,venom121293,2583458,badone,porno69,manwhore,vfvf123,notagain,vbktyf,rfnthbyrf,wildblue,kelly001,dragon66,camell,curtis1,frolova,1212123,dothedew,tyler123,reddrago,planetx,promethe,gigolo,1001001,thisone,eugeni,blackshe,cruzazul,incognito,puller,joonas,quick1,spirit1,gazza,zealot,gordito,hotrod1,mitch1,pollito,hellcat,mythos,duluth,383pdjvl,easy123,hermos,binkie,its420,lovecraf,darien,romina,doraemon,19877891,syclone,hadoken,transpor,ichiro,intell,gargamel,dragon2,wavpzt,557744,rjw7x4,jennys,kickit,rjynfrn,likeit,555111,corvus,nec3520,133113,mookie1,bochum,samsung2,locoman0,154ugeiu,vfvfbgfgf,135792,[start],tenni,20001,vestax,hufmqw,neveragain,wizkid,kjgfnf,nokia6303,tristen,saltanat,louie1,gandalf2,sinfonia,alpha3,tolstoy,ford150,f00bar,1hello,alici,lol12,riker1,hellou,333888,1hunter,qw1234,vibrator,mets86,43211234,gonzale,cookies1,sissy1,john11,bubber,blue01,cup2006,gtkmvtyb,nazareth,heybaby,suresh,teddie,mozilla,rodeo1,madhouse,gamera,123123321,naresh,dominos,foxtrot1,taras,powerup,kipling,jasonb,fidget,galena,meatman,alpacino,bookmark,farting,humper,titsnass,gorgon,castaway,dianka,anutka,gecko1,fucklove,connery,wings1,erika1,peoria,moneymaker,ichabod,heaven1,paperboy,phaser,breakers,nurse1,westbrom,alex13,brendan1,123asd123,almera,grubber,clarkie,thisisme,welkom01,51051051051,crypto,freenet,pflybwf,black12,testme2,changeit,autobahn,attica,chaoss,denver1,tercel,gnasher23,master2,vasilii,sherman1,gomer,bigbuck,derek1,qwerzxcv,jumble,dragon23,art131313,numark,beasty,cxfcnmttcnm,updown,starion,glist,sxhq65,ranger99,monkey7,shifter,wolves1,4r5t6y,phone1,favorite5,skytommy,abracada,1martin,102030405060,gatech,giulio,blacktop,cheer1,africa1,grizzly1,inkjet,shemales,durango1,booner,11223344q,supergirl,vanyarespekt,dickless,srilanka,weaponx,6string,nashvill,spicey,boxer1,fabien,2sexy2ho,bowhunt,jerrylee,acrobat,tawnee,ulisse,nolimit8,l8g3bkde,pershing,gordo1,allover,gobrowns,123432,123444,321456987,spoon1,hhhhh1,sailing1,gardenia,teache,sexmachine,tratata,pirate1,niceone,jimbos,314159265,qsdfgh,bobbyy,ccccc1,carla1,vjkjltw,savana,biotech,frigid,123456789g,dragon10,yesiam,alpha06,oakwood,tooter,winsto,radioman,vavilon,asnaeb,google123,nariman,kellyb,dthyjcnm,password6,parol1,golf72,skate1,lthtdj,1234567890s,kennet,rossia,lindas,nataliya,perfecto,eminem1,kitana,aragorn1,rexona,arsenalf,planot,coope,testing123,timex,blackbox,bullhead,barbarian,dreamon,polaris1,cfvjktn,frdfhbev,gametime,slipknot666,nomad1,hfgcjlbz,happy69,fiddler,brazil1,joeboy,indianali,113355,obelisk,telemark,ghostrid,preston1,anonim,wellcome,verizon1,sayangku,censor,timeport,dummies,adult1,nbnfybr,donger,thales,iamgay,sexy1234,deadlift,pidaras,doroga,123qwe321,portuga,asdfgh12,happys,cadr14nu,pi3141,maksik,dribble,cortland,darken,stepanova,bommel,tropic,sochi2014,bluegras,shahid,merhaba,nacho,2580456,orange44,kongen,3cudjz,78girl,my3kids,marcopol,deadmeat,gabbie,saruman,jeepman,freddie1,katie123,master99,ronal,ballbag,centauri,killer7,xqgann,pinecone,jdeere,geirby,aceshigh,55832811,pepsimax,rayden,razor1,tallyho,ewelina,coldfire,florid,glotest,999333,sevenup,bluefin,limaperu,apostol,bobbins,charmed1,michelin,sundin,centaur,alphaone,christof,trial1,lions1,45645,just4you,starflee,vicki1,cougar1,green2,jellyfis,batman69,games1,hihje863,crazyzil,w0rm1,oklick,dogbite,yssup,sunstar,paprika,postov10,124578963,x24ik3,kanada,buckster,iloveamy,bear123,smiler,nx74205,ohiostat,spacey,bigbill,doudo,nikolaeva,hcleeb,sex666,mindy1,buster11,deacons,boness,njkcnsq,candy2,cracker1,turkey1,qwertyu1,gogreen,tazzzz,edgewise,ranger01,qwerty6,blazer1,arian,letmeinnow,cigar1,jjjjjj1,grigio,frien,tenchu,f9lmwd,imissyou,filipp,heathers,coolie,salem1,woodduck,scubadiv,123kat,raffaele,nikolaev,dapzu455,skooter,9inches,lthgfhjkm,gr8one,ffffff1,zujlrf,amanda69,gldmeo,m5wkqf,rfrltkf,televisi,bonjou,paleale,stuff1,cumalot,fuckmenow,climb7,mark1234,t26gn4,oneeye,george2,utyyflbq,hunting1,tracy71,ready2go,hotguy,accessno,charger1,rudedog,kmfdm,goober1,sweetie1,wtpmjgda,dimensio,ollie1,pickles1,hellraiser,mustdie,123zzz,99887766,stepanov,verdun,tokenbad,anatol,bartende,cidkid86,onkelz,timmie,mooseman,patch1,12345678c,marta1,dummy1,bethany1,myfamily,history1,178500,lsutiger,phydeaux,moren,dbrnjhjdbx,gnbxrf,uniden,drummers,abpbrf,godboy,daisy123,hogan1,ratpack,irland,tangerine,greddy,flore,sqrunch,billyjoe,q55555,clemson1,98745632,marios,ishot,angelin,access12,naruto12,lolly,scxakv,austin12,sallad,cool99,rockit,mongo1,mark22,ghbynth,ariadna,senha,docto,tyler2,mobius,hammarby,192168,anna12,claire1,pxx3eftp,secreto,greeneye,stjabn,baguvix,satana666,rhbcnbyjxrf,dallastx,garfiel,michaelj,1summer,montan,1234ab,filbert,squids,fastback,lyudmila,chucho,eagleone,kimberle,ar3yuk3,jake01,nokids,soccer22,1066ad,ballon,cheeto,review69,madeira,taylor2,sunny123,chubbs,lakeland,striker1,porche,qwertyu8,digiview,go1234,ferari,lovetits,aditya,minnow,green3,matman,cellphon,fortytwo,minni,pucara,69a20a,roman123,fuente,12e3e456,paul12,jacky,demian,littleman,jadakiss,vlad1997,franca,282860,midian,nunzio,xaccess2,colibri,jessica0,revilo,654456,harvey1,wolf1,macarena,corey1,husky1,arsen,milleniu,852147,crowes,redcat,combat123654,hugger,psalms,quixtar,ilovemom,toyot,ballss,ilovekim,serdar,james23,avenger1,serendip,malamute,nalgas,teflon,shagger,letmein6,vyjujnjxbt,assa1234,student1,dixiedog,gznybwf13,fuckass,aq1sw2de3,robroy,hosehead,sosa21,123345,ias100,teddy123,poppin,dgl70460,zanoza,farhan,quicksilver,1701d,tajmahal,depechemode,paulchen,angler,tommy2,recoil,megamanx,scarecro,nicole2,152535,rfvtgb,skunky,fatty1,saturno,wormwood,milwauke,udbwsk,sexlover,stefa,7bgiqk,gfnhbr,omar10,bratan,lbyfvj,slyfox,forest1,jambo,william3,tempus,solitari,lucydog,murzilka,qweasdzxc1,vehpbkrf,12312345,fixit,woobie,andre123,123456789x,lifter,zinaida,soccer17,andone,foxbat,torsten,apple12,teleport,123456i,leglover,bigcocks,vologda,dodger1,martyn,d6o8pm,naciona,eagleeye,maria6,rimshot,bentley1,octagon,barbos,masaki,gremio,siemen,s1107d,mujeres,bigtits1,cherr,saints1,mrpink,simran,ghzybr,ferrari2,secret12,tornado1,kocham,picolo,deneme,onelove1,rolan,fenster,1fuckyou,cabbie,pegaso,nastyboy,password5,aidana,mine2306,mike13,wetone,tigger69,ytreza,bondage1,myass,golova,tolik,happyboy,poilkj,nimda2k,rammer,rubies,hardcore1,jetset,hoops1,jlaudio,misskitt,1charlie,google12,theone1,phred,porsch,aalborg,luft4,charlie5,password7,gnosis,djgabbab,1daniel,vinny,borris,cumulus,member1,trogdor,darthmau,andrew2,ktjybl,relisys,kriste,rasta220,chgobndg,weener,qwerty66,fritter,followme,freeman1,ballen,blood1,peache,mariso,trevor1,biotch,gtfullam,chamonix,friendste,alligato,misha1,1soccer,18821221,venkat,superd,molotov,bongos,mpower,acun3t1x,dfcmrf,h4x3d,rfhfufylf,tigran,booyaa,plastic1,monstr,rfnhby,lookatme,anabolic,tiesto,simon123,soulman,canes1,skyking,tomcat1,madona,bassline,dasha123,tarheel1,dutch1,xsw23edc,qwerty123456789,imperator,slaveboy,bateau,paypal,house123,pentax,wolf666,drgonzo,perros,digger1,juninho,hellomoto,bladerun,zzzzzzz1,keebler,take8422,fffffff1,ginuwine,israe,caesar1,crack1,precious1,garand,magda1,zigazaga,321ewq,johnpaul,mama1234,iceman69,sanjeev,treeman,elric,rebell,1thunder,cochon,deamon,zoltan,straycat,uhbyuj,luvfur,mugsy,primer,wonder1,teetime,candycan,pfchfytw,fromage,gitler,salvatio,piggy1,23049307,zafira,chicky,sergeev,katze,bangers,andriy,jailbait,vaz2107,ghbhjlf,dbjktnnf,aqswde,zaratustra,asroma,1pepper,alyss,kkkkk1,ryan1,radish,cozumel,waterpol,pentium1,rosebowl,farmall,steinway,dbrekz,baranov,jkmuf,another1,chinacat,qqqqqqq1,hadrian,devilmaycry4,ratbag,teddy2,love21,pullings,packrat,robyn1,boobo,qw12er34,tribe1,rosey,celestia,nikkie,fortune12,olga123,danthema,gameon,vfrfhjys,dilshod,henry14,jenova,redblue,chimaera,pennywise,sokrates,danimal,qqaazz,fuaqz4,killer2,198200,tbone1,kolyan,wabbit,lewis1,maxtor,egoist,asdfas,spyglass,omegas,jack12,nikitka,esperanz,doozer,matematika,wwwww1,ssssss1,poiu0987,suchka,courtney1,gungho,alpha2,fktyjxrf,summer06,bud420,devildriver,heavyd,saracen,foucault,choclate,rjdfktyrj,goblue1,monaro,jmoney,dcpugh,efbcapa201,qqh92r,pepsicol,bbb747,ch5nmk,honeyb,beszoptad,tweeter,intheass,iseedeadpeople,123dan,89231243658s,farside1,findme,smiley1,55556666,sartre,ytcnjh,kacper,costarica,134679258,mikeys,nolimit9,vova123,withyou,5rxypn,love143,freebie,rescue1,203040,michael6,12monkey,redgreen,steff,itstime,naveen,good12345,acidrain,1dawg,miramar,playas,daddio,orion2,852741,studmuff,kobe24,senha123,stephe,mehmet,allalone,scarface1,helloworld,smith123,blueyes,vitali,memphis1,mybitch,colin1,159874,1dick,podaria,d6wnro,brahms,f3gh65,dfcbkmtd,xxxman,corran,ugejvp,qcfmtz,marusia,totem,arachnid,matrix2,antonell,fgntrf,zemfira,christos,surfing1,naruto123,plato1,56qhxs,madzia,vanille,043aaa,asq321,mutton,ohiostate,golde,cdznjckfd,rhfcysq,green5,elephan,superdog,jacqueli,bollock,lolitas,nick12,1orange,maplelea,july23,argento,waldorf,wolfer,pokemon12,zxcvbnmm,flicka,drexel,outlawz,harrie,atrain,juice2,falcons1,charlie6,19391945,tower1,dragon21,hotdamn,dirtyboy,love4ever,1ginger,thunder2,virgo1,alien1,bubblegu,4wwvte,123456789qqq,realtime,studio54,passss,vasilek,awsome,giorgia,bigbass,2002tii,sunghile,mosdef,simbas,count0,uwrl7c,summer05,lhepmz,ranger21,sugarbea,principe,5550123,tatanka,9638v,cheerios,majere,nomercy,jamesbond007,bh90210,7550055,jobber,karaganda,pongo,trickle,defamer,6chid8,1q2a3z,tuscan,nick123,.adgjm,loveyo,hobbes1,note1234,shootme,171819,loveporn,9788960,monty123,fabrice,macduff,monkey13,shadowfa,tweeker,hanna1,madball,telnet,loveu2,qwedcxzas,thatsit,vfhcbr,ptfe3xxp,gblfhfcs,ddddddd1,hakkinen,liverune,deathsta,misty123,suka123,recon1,inferno1,232629,polecat,sanibel,grouch,hitech,hamradio,rkfdbfnehf,vandam,nadin,fastlane,shlong,iddqdidkfa,ledzeppelin,sexyfeet,098123,stacey1,negras,roofing,lucifer1,ikarus,tgbyhn,melnik,barbaria,montego,twisted1,bigal1,jiggle,darkwolf,acerview,silvio,treetops,bishop1,iwanna,pornsite,happyme,gfccdjhl,114411,veritech,batterse,casey123,yhntgb,mailto,milli,guster,q12345678,coronet,sleuth,fuckmeha,armadill,kroshka,geordie,lastochka,pynchon,killall,tommy123,sasha1996,godslove,hikaru,clticic,cornbrea,vfkmdbyf,passmaster,123123123a,souris,nailer,diabolo,skipjack,martin12,hinata,mof6681,brookie,dogfight,johnso,karpov,326598,rfvbrflpt,travesti,caballer,galaxy1,wotan,antoha,art123,xakep1234,ricflair,pervert1,p00kie,ambulanc,santosh,berserker,larry33,bitch123,a987654321,dogstar,angel22,cjcbcrf,redhouse,toodles,gold123,hotspot,kennedy1,glock21,chosen1,schneide,mainman,taffy1,3ki42x,4zqauf,ranger2,4meonly,year2000,121212a,kfylsi,netzwerk,diese,picasso1,rerecz,225522,dastan,swimmer1,brooke1,blackbea,oneway,ruslana,dont4get,phidelt,chrisp,gjyxbr,xwing,kickme,shimmy,kimmy1,4815162342lost,qwerty5,fcporto,jazzbo,mierd,252627,basses,sr20det,00133,florin,howdy1,kryten,goshen,koufax,cichlid,imhotep,andyman,wrest666,saveme,dutchy,anonymou,semprini,siempre,mocha1,forest11,wildroid,aspen1,sesam,kfgekz,cbhbec,a55555,sigmanu,slash1,giggs11,vatech,marias,candy123,jericho1,kingme,123a123,drakula,cdjkjxm,mercur,oneman,hoseman,plumper,ilovehim,lancers,sergey1,takeshi,goodtogo,cranberr,ghjcnj123,harvick,qazxs,1972chev,horsesho,freedom3,letmein7,saitek,anguss,vfvfgfgfz,300000,elektro,toonporn,999111999q,mamuka,q9umoz,edelweis,subwoofer,bayside,disturbe,volition,lucky3,12345678z,3mpz4r,march1,atlantida,strekoza,seagrams,090909t,yy5rbfsc,jack1234,sammy12,sampras,mark12,eintrach,chaucer,lllll1,nochance,whitepower,197000,lbvekz,passer,torana,12345as,pallas,koolio,12qw34,nokia8800,findout,1thomas,mmmmm1,654987,mihaela,chinaman,superduper,donnas,ringo1,jeroen,gfdkjdf,professo,cdtnrf,tranmere,tanstaaf,himera,ukflbfnjh,667788,alex32,joschi,w123456,okidoki,flatline,papercli,super8,doris1,2good4u,4z34l0ts,pedigree,freeride,gsxr1100,wulfgar,benjie,ferdinan,king1,charlie7,djdxbr,fhntvbq,ripcurl,2wsx1qaz,kingsx,desade,sn00py,loveboat,rottie,evgesha,4money,dolittle,adgjmpt,buzzers,brett1,makita,123123qweqwe,rusalka,sluts1,123456e,jameson1,bigbaby,1z2z3z,ckjybr,love4u,fucker69,erhfbyf,jeanluc,farhad,fishfood,merkin,giant1,golf69,rfnfcnhjaf,camera1,stromb,smoothy,774411,nylon,juice1,rfn.irf,newyor,123456789t,marmot,star11,jennyff,jester1,hisashi,kumquat,alex777,helicopt,merkur,dehpye,cummin,zsmj2v,kristjan,april12,englan,honeypot,badgirls,uzumaki,keines,p12345,guita,quake1,duncan1,juicer,milkbone,hurtme,123456789b,qq123456789,schwein,p3wqaw,54132442,qwertyytrewq,andreeva,ruffryde,punkie,abfkrf,kristinka,anna1987,ooooo1,335533aa,umberto,amber123,456123789,456789123,beelch,manta,peeker,1112131415,3141592654,gipper,wrinkle5,katies,asd123456,james11,78n3s5af,michael0,daboss,jimmyb,hotdog1,david69,852123,blazed,sickan,eljefe,2n6wvq,gobills,rfhfcm,squeaker,cabowabo,luebri,karups,test01,melkor,angel777,smallvil,modano,olorin,4rkpkt,leslie1,koffie,shadows1,littleon,amiga1,topeka,summer20,asterix1,pitstop,aloysius,k12345,magazin,joker69,panocha,pass1word,1233214,ironpony,368ejhih,88keys,pizza123,sonali,57np39,quake2,1234567890qw,1020304,sword1,fynjif,abcde123,dfktyjr,rockys,grendel1,harley12,kokakola,super2,azathoth,lisa123,shelley1,girlss,ibragim,seven1,jeff24,1bigdick,dragan,autobot,t4nvp7,omega123,900000,hecnfv,889988,nitro1,doggie1,fatjoe,811pahc,tommyt,savage1,pallino,smitty1,jg3h4hfn,jamielee,1qazwsx,zx123456,machine1,asdfgh123,guinnes,789520,sharkman,jochen,legend1,sonic2,extreme1,dima12,photoman,123459876,nokian95,775533,vaz2109,april10,becks,repmvf,pooker,qwer12345,themaster,nabeel,monkey10,gogetit,hockey99,bbbbbbb1,zinedine,dolphin2,anelka,1superma,winter01,muggsy,horny2,669966,kuleshov,jesusis,calavera,bullet1,87t5hdf,sleepers,winkie,vespa,lightsab,carine,magister,1spider,shitbird,salavat,becca1,wc18c2,shirak,galactus,zaskar,barkley1,reshma,dogbreat,fullsail,asasa,boeder,12345ta,zxcvbnm12,lepton,elfquest,tony123,vkaxcs,savatage,sevilia1,badkitty,munkey,pebbles1,diciembr,qapmoc,gabriel2,1qa2ws3e,cbcmrb,welldone,nfyufh,kaizen,jack11,manisha,grommit,g12345,maverik,chessman,heythere,mixail,jjjjjjj1,sylvia1,fairmont,harve,skully,global1,youwish,pikachu1,badcat,zombie1,49527843,ultra1,redrider,offsprin,lovebird,153426,stymie,aq1sw2,sorrento,0000001,r3ady41t,webster1,95175,adam123,coonass,159487,slut1,gerasim,monkey99,slutwife,159963,1pass1page,hobiecat,bigtymer,all4you,maggie2,olamide,comcast1,infinit,bailee,vasileva,.ktxrf,asdfghjkl1,12345678912,setter,fuckyou7,nnagqx,lifesuck,draken,austi,feb2000,cable1,1234qwerasdf,hax0red,zxcv12,vlad7788,nosaj,lenovo,underpar,huskies1,lovegirl,feynman,suerte,babaloo,alskdjfhg,oldsmobi,bomber1,redrover,pupuce,methodman,phenom,cutegirl,countyli,gretsch,godisgood,bysunsu,hardhat,mironova,123qwe456rty,rusty123,salut,187211,555666777,11111z,mahesh,rjntyjxtr,br00klyn,dunce1,timebomb,bovine,makelove,littlee,shaven,rizwan,patrick7,42042042,bobbijo,rustem,buttmunc,dongle,tiger69,bluecat,blackhol,shirin,peaces,cherub,cubase,longwood,lotus7,gwju3g,bruin,pzaiu8,green11,uyxnyd,seventee,dragon5,tinkerbel,bluess,bomba,fedorova,joshua2,bodyshop,peluche,gbpacker,shelly1,d1i2m3a4,ghtpbltyn,talons,sergeevna,misato,chrisc,sexmeup,brend,olddog,davros,hazelnut,bridget1,hzze929b,readme,brethart,wild1,ghbdtnbr1,nortel,kinger,royal1,bucky1,allah1,drakkar,emyeuanh,gallaghe,hardtime,jocker,tanman,flavio,abcdef123,leviatha,squid1,skeet,sexse,123456x,mom4u4mm,lilred,djljktq,ocean11,cadaver,baxter1,808state,fighton,primavera,1andrew,moogle,limabean,goddess1,vitalya,blue56,258025,bullride,cicci,1234567d,connor1,gsxr11,oliveoil,leonard1,legsex,gavrik,rjnjgtc,mexicano,2bad4u,goodfellas,ornw6d,mancheste,hawkmoon,zlzfrh,schorsch,g9zns4,bashful,rossi46,stephie,rfhfntkm,sellout,123fuck,stewar1,solnze,00007,thor5200,compaq12,didit,bigdeal,hjlbyf,zebulon,wpf8eu,kamran,emanuele,197500,carvin,ozlq6qwm,3syqo15hil,pennys,epvjb6,asdfghjkl123,198000,nfbcbz,jazzer,asfnhg66,zoloft,albundy,aeiou,getlaid,planet1,gjkbyjxrf,alex2000,brianb,moveon,maggie11,eieio,vcradq,shaggy1,novartis,cocoloco,dunamis,554uzpad,sundrop,1qwertyu,alfie,feliks,briand,123www,red456,addams,fhntv1998,goodhead,theway,javaman,angel01,stratoca,lonsdale,15987532,bigpimpin,skater1,issue43,muffie,yasmina,slowride,crm114,sanity729,himmel,carolcox,bustanut,parabola,masterlo,computador,crackhea,dynastar,rockbott,doggysty,wantsome,bigten,gaelle,juicy1,alaska1,etower,sixnine,suntan,froggies,nokia7610,hunter11,njnets,alicante,buttons1,diosesamo,elizabeth1,chiron,trustnoo,amatuers,tinytim,mechta,sammy2,cthulu,trs8f7,poonam,m6cjy69u35,cookie12,blue25,jordans,santa1,kalinka,mikey123,lebedeva,12345689,kissss,queenbee,vjybnjh,ghostdog,cuckold,bearshare,rjcntyrj,alinochka,ghjcnjrdfibyj,aggie1,teens1,3qvqod,dauren,tonino,hpk2qc,iqzzt580,bears85,nascar88,theboy,njqcw4,masyanya,pn5jvw,intranet,lollone,shadow99,00096462,techie,cvtifhbrb,redeemed,gocanes,62717315,topman,intj3a,cobrajet,antivirus,whyme,berserke,ikilz083,airedale,brandon2,hopkig,johanna1,danil8098,gojira,arthu,vision1,pendragon,milen,chrissie,vampiro,mudder,chris22,blowme69,omega7,surfers,goterps,italy1,baseba11,diego1,gnatsum,birdies,semenov,joker123,zenit2011,wojtek,cab4ma99,watchmen,damia,forgotte,fdm7ed,strummer,freelanc,cingular,orange77,mcdonalds,vjhjpjdf,kariya,tombston,starlet,hawaii1,dantheman,megabyte,nbvjirf,anjing,ybrjkftdbx,hotmom,kazbek,pacific1,sashimi,asd12,coorslig,yvtte545,kitte,elysium,klimenko,cobblers,kamehameha,only4me,redriver,triforce,sidorov,vittoria,fredi,dank420,m1234567,fallout2,989244342a,crazy123,crapola,servus,volvos,1scooter,griffin1,autopass,ownzyou,deviant,george01,2kgwai,boeing74,simhrq,hermosa,hardcor,griffy,rolex1,hackme,cuddles1,master3,bujhtr,aaron123,popolo,blader,1sexyred,gerry1,cronos,ffvdj474,yeehaw,bob1234,carlos2,mike77,buckwheat,ramesh,acls2h,monster2,montess,11qq22ww,lazer,zx123456789,chimpy,masterch,sargon,lochness,archana,1234qwert,hbxfhl,sarahb,altoid,zxcvbn12,dakot,caterham,dolomite,chazz,r29hqq,longone,pericles,grand1,sherbert,eagle3,pudge,irontree,synapse,boome,nogood,summer2,pooki,gangsta1,mahalkit,elenka,lbhtrnjh,dukedog,19922991,hopkins1,evgenia,domino1,x123456,manny1,tabbycat,drake1,jerico,drahcir,kelly2,708090a,facesit,11c645df,mac123,boodog,kalani,hiphop1,critters,hellothere,tbirds,valerka,551scasi,love777,paloalto,mrbrown,duke3d,killa1,arcturus,spider12,dizzy1,smudger,goddog,75395,spammy,1357997531,78678,datalife,zxcvbn123,1122112211,london22,23dp4x,rxmtkp,biggirls,ownsu,lzbs2twz,sharps,geryfe,237081a,golakers,nemesi,sasha1995,pretty1,mittens1,d1lakiss,speedrac,gfhjkmm,sabbat,hellrais,159753258,qwertyuiop123,playgirl,crippler,salma,strat1,celest,hello5,omega5,cheese12,ndeyl5,edward12,soccer3,cheerio,davido,vfrcbr,gjhjctyjr,boscoe,inessa,shithole,ibill,qwepoi,201jedlz,asdlkj,davidk,spawn2,ariel1,michael4,jamie123,romantik,micro1,pittsbur,canibus,katja,muhtar,thomas123,studboy,masahiro,rebrov,patrick8,hotboys,sarge1,1hammer,nnnnn1,eistee,datalore,jackdani,sasha2010,mwq6qlzo,cmfnpu,klausi,cnhjbntkm,andrzej,ilovejen,lindaa,hunter123,vvvvv1,novembe,hamster1,x35v8l,lacey1,1silver,iluvporn,valter,herson,alexsandr,cojones,backhoe,womens,777angel,beatit,klingon1,ta8g4w,luisito,benedikt,maxwel,inspecto,zaq12ws,wladimir,bobbyd,peterj,asdfg12,hellspawn,bitch69,nick1234,golfer23,sony123,jello1,killie,chubby1,kodaira52,yanochka,buckfast,morris1,roaddogg,snakeeye,sex1234,mike22,mmouse,fucker11,dantist,brittan,vfrfhjdf,doc123,plokijuh,emerald1,batman01,serafim,elementa,soccer9,footlong,cthuttdbx,hapkido,eagle123,getsmart,getiton,batman2,masons,mastiff,098890,cfvfhf,james7,azalea,sherif,saun24865709,123red,cnhtrjpf,martina1,pupper,michael5,alan12,shakir,devin1,ha8fyp,palom,mamulya,trippy,deerhunter,happyone,monkey77,3mta3,123456789f,crownvic,teodor,natusik,0137485,vovchik,strutter,triumph1,cvetok,moremone,sonnen,screwbal,akira1,sexnow,pernille,independ,poopies,samapi,kbcbxrf,master22,swetlana,urchin,viper2,magica,slurpee,postit,gilgames,kissarmy,clubpenguin,limpbizk,timber1,celin,lilkim,fuckhard,lonely1,mom123,goodwood,extasy,sdsadee23,foxglove,malibog,clark1,casey2,shell1,odense,balefire,dcunited,cubbie,pierr,solei,161718,bowling1,areyukesc,batboy,r123456,1pionee,marmelad,maynard1,cn42qj,cfvehfq,heathrow,qazxcvbn,connecti,secret123,newfie,xzsawq21,tubitzen,nikusha,enigma1,yfcnz123,1austin,michaelc,splunge,wanger,phantom2,jason2,pain4me,primetime21,babes1,liberte,sugarray,undergro,zonker,labatts,djhjyf,watch1,eagle5,madison2,cntgfirf,sasha2,masterca,fiction7,slick50,bruins1,sagitari,12481632,peniss,insuranc,2b8riedt,12346789,mrclean,ssptx452,tissot,q1w2e3r4t5y6u7,avatar1,comet1,spacer,vbrjkf,pass11,wanker1,14vbqk9p,noshit,money4me,sayana,fish1234,seaways,pipper,romeo123,karens,wardog,ab123456,gorilla1,andrey123,lifesucks,jamesr,4wcqjn,bearman,glock22,matt11,dflbvrf,barbi,maine1,dima1997,sunnyboy,6bjvpe,bangkok1,666666q,rafiki,letmein0,0raziel0,dalla,london99,wildthin,patrycja,skydog,qcactw,tmjxn151,yqlgr667,jimmyd,stripclub,deadwood,863abgsg,horses1,qn632o,scatman,sonia1,subrosa,woland,kolya,charlie4,moleman,j12345,summer11,angel11,blasen,sandal,mynewpas,retlaw,cambria,mustang4,nohack04,kimber45,fatdog,maiden1,bigload,necron,dupont24,ghost123,turbo2,.ktymrf,radagast,balzac,vsevolod,pankaj,argentum,2bigtits,mamabear,bumblebee,mercury7,maddie1,chomper,jq24nc,snooky,pussylic,1lovers,taltos,warchild,diablo66,jojo12,sumerki,aventura,gagger,annelies,drumset,cumshots,azimut,123580,clambake,bmw540,birthday54,psswrd,paganini,wildwest,filibert,teaseme,1test,scampi,thunder5,antosha,purple12,supersex,hhhhhh1,brujah,111222333a,13579a,bvgthfnjh,4506802a,killians,choco,qqqwwweee,raygun,1grand,koetsu13,sharp1,mimi92139,fastfood,idontcare,bluered,chochoz,4z3al0ts,target1,sheffiel,labrat,stalingrad,147123,cubfan,corvett1,holden1,snapper1,4071505,amadeo,pollo,desperados,lovestory,marcopolo,mumbles,familyguy,kimchee,marcio,support1,tekila,shygirl1,trekkie,submissi,ilaria,salam,loveu,wildstar,master69,sales1,netware,homer2,arseniy,gerrity1,raspberr,atreyu,stick1,aldric,tennis12,matahari,alohomora,dicanio,michae1,michaeld,666111,luvbug,boyscout,esmerald,mjordan,admiral1,steamboa,616913,ybhdfyf,557711,555999,sunray,apokalipsis,theroc,bmw330,buzzy,chicos,lenusik,shadowma,eagles05,444222,peartree,qqq123,sandmann,spring1,430799,phatass,andi03,binky1,arsch,bamba,kenny123,fabolous,loser123,poop12,maman,phobos,tecate,myxworld4,metros,cocorico,nokia6120,johnny69,hater,spanked,313233,markos,love2011,mozart1,viktoriy,reccos,331234,hornyone,vitesse,1um83z,55555q,proline,v12345,skaven,alizee,bimini,fenerbahce,543216,zaqqaz,poi123,stabilo,brownie1,1qwerty1,dinesh,baggins1,1234567t,davidkin,friend1,lietuva,octopuss,spooks,12345qq,myshit,buttface,paradoxx,pop123,golfin,sweet69,rfghbp,sambuca,kayak1,bogus1,girlz,dallas12,millers,123456zx,operatio,pravda,eternal1,chase123,moroni,proust,blueduck,harris1,redbarch,996699,1010101,mouche,millenni,1123456,score1,1234565,1234576,eae21157,dave12,pussyy,gfif1991,1598741,hoppy,darrian,snoogins,fartface,ichbins,vfkbyrf,rusrap,2741001,fyfrjylf,aprils,favre,thisis,bannana,serval,wiggum,satsuma,matt123,ivan123,gulmira,123zxc123,oscar2,acces,annie2,dragon0,emiliano,allthat,pajaro,amandine,rawiswar,sinead,tassie,karma1,piggys,nokias,orions,origami,type40,mondo,ferrets,monker,biteme2,gauntlet,arkham,ascona,ingram01,klem1,quicksil,bingo123,blue66,plazma,onfire,shortie,spjfet,123963,thered,fire777,lobito,vball,1chicken,moosehea,elefante,babe23,jesus12,parallax,elfstone,number5,shrooms,freya,hacker1,roxette,snoops,number7,fellini,dtlmvf,chigger,mission1,mitsubis,kannan,whitedog,james01,ghjgecr,rfnfgekmnf,everythi,getnaked,prettybo,sylvan,chiller,carrera4,cowbo,biochem,azbuka,qwertyuiop1,midnight1,informat,audio1,alfred1,0range,sucker1,scott2,russland,1eagle,torben,djkrjlfd,rocky6,maddy1,bonobo,portos,chrissi,xjznq5,dexte,vdlxuc,teardrop,pktmxr,iamtheone,danijela,eyphed,suzuki1,etvww4,redtail,ranger11,mowerman,asshole2,coolkid,adriana1,bootcamp,longcut,evets,npyxr5,bighurt,bassman1,stryder,giblet,nastja,blackadd,topflite,wizar,cumnow,technolo,bassboat,bullitt,kugm7b,maksimus,wankers,mine12,sunfish,pimpin1,shearer9,user1,vjzgjxnf,tycobb,80070633pc,stanly,vitaly,shirley1,cinzia,carolyn1,angeliqu,teamo,qdarcv,aa123321,ragdoll,bonit,ladyluck,wiggly,vitara,jetbalance,12345600,ozzman,dima12345,mybuddy,shilo,satan66,erebus,warrio,090808qwe,stupi,bigdan,paul1234,chiapet,brooks1,philly1,dually,gowest,farmer1,1qa2ws3ed4rf,alberto1,beachboy,barne,aa12345,aliyah,radman,benson1,dfkthbq,highball,bonou2,i81u812,workit,darter,redhook,csfbr5yy,buttlove,episode1,ewyuza,porthos,lalal,abcd12,papero,toosexy,keeper1,silver7,jujitsu,corset,pilot123,simonsay,pinggolf,katerinka,kender,drunk1,fylhjvtlf,rashmi,nighthawk,maggy,juggernaut,larryb,cabibble,fyabcf,247365,gangstar,jaybee,verycool,123456789qw,forbidde,prufrock,12345zxc,malaika,blackbur,docker,filipe,koshechka,gemma1,djamaal,dfcbkmtdf,gangst,9988aa,ducks1,pthrfkj,puertorico,muppets,griffins,whippet,sauber,timofey,larinso,123456789zxc,quicken,qsefth,liteon,headcase,bigdadd,zxc321,maniak,jamesc,bassmast,bigdogs,1girls,123xxx,trajan,lerochka,noggin,mtndew,04975756,domin,wer123,fumanchu,lambada,thankgod,june22,kayaking,patchy,summer10,timepass,poiu1234,kondor,kakka,lament,zidane10,686xqxfg,l8v53x,caveman1,nfvthkfy,holymoly,pepita,alex1996,mifune,fighter1,asslicker,jack22,abc123abc,zaxxon,midnigh,winni,psalm23,punky,monkey22,password13,mymusic,justyna,annushka,lucky5,briann,495rus19,withlove,almaz,supergir,miata,bingbong,bradpitt,kamasutr,yfgjktjy,vanman,pegleg,amsterdam1,123a321,letmein9,shivan,korona,bmw520,annette1,scotsman,gandal,welcome12,sc00by,qpwoei,fred69,m1sf1t,hamburg1,1access,dfkmrbhbz,excalibe,boobies1,fuckhole,karamel,starfuck,star99,breakfas,georgiy,ywvxpz,smasher,fatcat1,allanon,12345n,coondog,whacko,avalon1,scythe,saab93,timon,khorne,atlast,nemisis,brady12,blenheim,52678677,mick7278,9skw5g,fleetwoo,ruger1,kissass,pussy7,scruff,12345l,bigfun,vpmfsz,yxkck878,evgeny,55667788,lickher,foothill,alesis,poppies,77777778,californi,mannie,bartjek,qhxbij,thehulk,xirt2k,angelo4ek,rfkmrekznjh,tinhorse,1david,sparky12,night1,luojianhua,bobble,nederland,rosemari,travi,minou,ciscokid,beehive,565hlgqo,alpine1,samsung123,trainman,xpress,logistic,vw198m2n,hanter,zaqwsx123,qwasz,mariachi,paska,kmg365,kaulitz,sasha12,north1,polarbear,mighty1,makeksa11,123456781,one4all,gladston,notoriou,polniypizdec110211,gosia,grandad,xholes,timofei,invalidp,speaker1,zaharov,maggiema,loislane,gonoles,br5499,discgolf,kaskad,snooper,newman1,belial,demigod,vicky1,pridurok,alex1990,tardis1,cruzer,hornie,sacramen,babycat,burunduk,mark69,oakland1,me1234,gmctruck,extacy,sexdog,putang,poppen,billyd,1qaz2w,loveable,gimlet,azwebitalia,ragtop,198500,qweas,mirela,rock123,11bravo,sprewell,tigrenok,jaredleto,vfhbif,blue2,rimjob,catwalk,sigsauer,loqse,doromich,jack01,lasombra,jonny5,newpassword,profesor,garcia1,123as123,croucher,demeter,4_life,rfhfvtkm,superman2,rogues,assword1,russia1,jeff1,mydream,z123456789,rascal1,darre,kimberl,pickle1,ztmfcq,ponchik,lovesporn,hikari,gsgba368,pornoman,chbjun,choppy,diggity,nightwolf,viktori,camar,vfhecmrf,alisa1,minstrel,wishmaster,mulder1,aleks,gogirl,gracelan,8womys,highwind,solstice,dbrnjhjdyf,nightman,pimmel,beertje,ms6nud,wwfwcw,fx3tuo,poopface,asshat,dirtyd,jiminy,luv2fuck,ptybnxtvgbjy,dragnet,pornogra,10inch,scarlet1,guido1,raintree,v123456,1aaaaaaa,maxim1935,hotwater,gadzooks,playaz,harri,brando1,defcon1,ivanna,123654a,arsenal2,candela,nt5d27,jaime1,duke1,burton1,allstar1,dragos,newpoint,albacore,1236987z,verygoodbot,1wildcat,fishy1,ptktysq,chris11,puschel,itdxtyrj,7kbe9d,serpico,jazzie,1zzzzz,kindbuds,wenef45313,1compute,tatung,sardor,gfyfcjybr,test99,toucan,meteora,lysander,asscrack,jowgnx,hevnm4,suckthis,masha123,karinka,marit,oqglh565,dragon00,vvvbbb,cheburashka,vfrfrf,downlow,unforgiven,p3e85tr,kim123,sillyboy,gold1,golfvr6,quicksan,irochka,froglegs,shortsto,caleb1,tishka,bigtitts,smurfy,bosto,dropzone,nocode,jazzbass,digdug,green7,saltlake,therat,dmitriev,lunita,deaddog,summer0,1212qq,bobbyg,mty3rh,isaac1,gusher,helloman,sugarbear,corvair,extrem,teatime,tujazopi,titanik,efyreg,jo9k2jw2,counchac,tivoli,utjvtnhbz,bebit,jacob6,clayton1,incubus1,flash123,squirter,dima2010,cock1,rawks,komatsu,forty2,98741236,cajun1,madelein,mudhoney,magomed,q111111,qaswed,consense,12345b,bakayaro,silencer,zoinks,bigdic,werwolf,pinkpuss,96321478,alfie1,ali123,sarit,minette,musics,chato,iaapptfcor,cobaka,strumpf,datnigga,sonic123,yfnecbr,vjzctvmz,pasta1,tribbles,crasher,htlbcrf,1tiger,shock123,bearshar,syphon,a654321,cubbies1,jlhanes,eyespy,fucktheworld,carrie1,bmw325is,suzuk,mander,dorina,mithril,hondo1,vfhnbyb,sachem,newton1,12345x,7777755102q,230857z,xxxsex,scubapro,hayastan,spankit,delasoul,searock6,fallout3,nilrem,24681357,pashka,voluntee,pharoh,willo,india1,badboy69,roflmao,gunslinger,lovergir,mama12,melange,640xwfkv,chaton,darkknig,bigman1,aabbccdd,harleyd,birdhouse,giggsy,hiawatha,tiberium,joker7,hello1234,sloopy,tm371855,greendog,solar1,bignose,djohn11,espanol,oswego,iridium,kavitha,pavell,mirjam,cyjdsvujljv,alpha5,deluge,hamme,luntik,turismo,stasya,kjkbnf,caeser,schnecke,tweety1,tralfaz,lambrett,prodigy1,trstno1,pimpshit,werty1,karman,bigboob,pastel,blackmen,matthew8,moomin,q1w2e,gilly,primaver,jimmyg,house2,elviss,15975321,1jessica,monaliza,salt55,vfylfhbyrf,harley11,tickleme,murder1,nurgle,kickass1,theresa1,fordtruck,pargolf,managua,inkognito,sherry1,gotit,friedric,metro2033,slk230,freeport,cigarett,492529,vfhctkm,thebeach,twocats,bakugan,yzerman1,charlieb,motoko,skiman,1234567w,pussy3,love77,asenna,buffie,260zntpc,kinkos,access20,mallard1,fuckyou69,monami,rrrrr1,bigdog69,mikola,1boomer,godzila,ginger2,dima2000,skorpion39,dima1234,hawkdog79,warrior2,ltleirf,supra1,jerusale,monkey01,333z333,666888,kelsey1,w8gkz2x1,fdfnfh,msnxbi,qwe123rty,mach1,monkey3,123456789qq,c123456,nezabudka,barclays,nisse,dasha1,12345678987654321,dima1993,oldspice,frank2,rabbitt,prettyboy,ov3ajy,iamthema,kawasak,banjo1,gtivr6,collants,gondor,hibees,cowboys2,codfish,buster2,purzel,rubyred,kayaker,bikerboy,qguvyt,masher,sseexx,kenshiro,moonglow,semenova,rosari,eduard1,deltaforce,grouper,bongo1,tempgod,1taylor,goldsink,qazxsw1,1jesus,m69fg2w,maximili,marysia,husker1,kokanee,sideout,googl,south1,plumber1,trillian,00001,1357900,farkle,1xxxxx,pascha,emanuela,bagheera,hound1,mylov,newjersey,swampfox,sakic19,torey,geforce,wu4etd,conrail,pigman,martin2,ber02,nascar2,angel69,barty,kitsune,cornet,yes90125,goomba,daking,anthea,sivart,weather1,ndaswf,scoubidou,masterchief,rectum,3364068,oranges1,copter,1samanth,eddies,mimoza,ahfywbz,celtic88,86mets,applemac,amanda11,taliesin,1angel,imhere,london11,bandit12,killer666,beer1,06225930,psylocke,james69,schumach,24pnz6kc,endymion,wookie1,poiu123,birdland,smoochie,lastone,rclaki,olive1,pirat,thunder7,chris69,rocko,151617,djg4bb4b,lapper,ajcuivd289,colole57,shadow7,dallas21,ajtdmw,executiv,dickies,omegaman,jason12,newhaven,aaaaaas,pmdmscts,s456123789,beatri,applesauce,levelone,strapon,benladen,creaven,ttttt1,saab95,f123456,pitbul,54321a,sex12345,robert3,atilla,mevefalkcakk,1johnny,veedub,lilleke,nitsuj,5t6y7u8i,teddys,bluefox,nascar20,vwjetta,buffy123,playstation3,loverr,qweasd12,lover2,telekom,benjamin1,alemania,neutrino,rockz,valjean,testicle,trinity3,realty,firestarter,794613852,ardvark,guadalup,philmont,arnold1,holas,zw6syj,birthday299,dover1,sexxy1,gojets,741236985,cance,blue77,xzibit,qwerty88,komarova,qweszxc,footer,rainger,silverst,ghjcnb,catmando,tatooine,31217221027711,amalgam,69dude,qwerty321,roscoe1,74185,cubby,alfa147,perry1,darock,katmandu,darknight,knicks1,freestuff,45454,kidman,4tlved,axlrose,cutie1,quantum1,joseph10,ichigo,pentium3,rfhectkm,rowdy1,woodsink,justforfun,sveta123,pornografia,mrbean,bigpig,tujheirf,delta9,portsmou,hotbod,kartal,10111213,fkbyf001,pavel1,pistons1,necromancer,verga,c7lrwu,doober,thegame1,hatesyou,sexisfun,1melissa,tuczno18,bowhunte,gobama,scorch,campeon,bruce2,fudge1,herpderp,bacon1,redsky,blackeye,19966991,19992000,ripken8,masturba,34524815,primax,paulina1,vp6y38,427cobra,4dwvjj,dracon,fkg7h4f3v6,longview,arakis,panama1,honda2,lkjhgfdsaz,razors,steels,fqkw5m,dionysus,mariajos,soroka,enriqu,nissa,barolo,king1234,hshfd4n279,holland1,flyer1,tbones,343104ky,modems,tk421,ybrbnrf,pikapp,sureshot,wooddoor,florida2,mrbungle,vecmrf,catsdogs,axolotl,nowayout,francoi,chris21,toenail,hartland,asdjkl,nikkii,onlyyou,buckskin,fnord,flutie,holen1,rincewind,lefty1,ducky1,199000,fvthbrf,redskin1,ryno23,lostlove,19mtpgam19,abercrom,benhur,jordan11,roflcopter,ranma,phillesh,avondale,igromania,p4ssword,jenny123,tttttt1,spycams,cardigan,2112yyz,sleepy1,paris123,mopars,lakers34,hustler1,james99,matrix3,popimp,12pack,eggbert,medvedev,testit,performa,logitec,marija,sexybeast,supermanboy,iwantit,rjktcj,jeffer,svarog,halo123,whdbtp,nokia3230,heyjoe,marilyn1,speeder,ibxnsm,prostock,bennyboy,charmin,codydog,parol999,ford9402,jimmer,crayola,159357258,alex77,joey1,cayuga,phish420,poligon,specops,tarasova,caramelo,draconis,dimon,cyzkhw,june29,getbent,1guitar,jimjam,dictiona,shammy,flotsam,0okm9ijn,crapper,technic,fwsadn,rhfdxtyrj,zaq11qaz,anfield1,159753q,curious1,hip-hop,1iiiii,gfhjkm2,cocteau,liveevil,friskie,crackhead,b1afra,elektrik,lancer1,b0ll0cks,jasond,z1234567,tempest1,alakazam,asdfasd,duffy1,oneday,dinkle,qazedctgb,kasimir,happy7,salama,hondaciv,nadezda,andretti,cannondale,sparticu,znbvjd,blueice,money01,finster,eldar,moosie,pappa,delta123,neruda,bmw330ci,jeanpaul,malibu1,alevtina,sobeit,travolta,fullmetal,enamorad,mausi,boston12,greggy,smurf1,ratrace,ichiban,ilovepus,davidg,wolf69,villa1,cocopuff,football12,starfury,zxc12345,forfree,fairfiel,dreams1,tayson,mike2,dogday,hej123,oldtimer,sanpedro,clicker,mollycat,roadstar,golfe,lvbnhbq1,topdevice,a1b2c,sevastopol,calli,milosc,fire911,pink123,team3x,nolimit5,snickers1,annies,09877890,jewel1,steve69,justin11,autechre,killerbe,browncow,slava1,christer,fantomen,redcloud,elenberg,beautiful1,passw0rd1,nazira,advantag,cockring,chaka,rjpzdrf,99941,az123456,biohazar,energie,bubble1,bmw323,tellme,printer1,glavine,1starwar,coolbeans,april17,carly1,quagmire,admin2,djkujuhfl,pontoon,texmex,carlos12,thermo,vaz2106,nougat,bob666,1hockey,1john,cricke,qwerty10,twinz,totalwar,underwoo,tijger,lildevil,123q321,germania,freddd,1scott,beefy,5t4r3e2w1q,fishbait,nobby,hogger,dnstuff,jimmyc,redknapp,flame1,tinfloor,balla,nfnfhby,yukon1,vixens,batata,danny123,1zxcvbnm,gaetan,homewood,greats,tester1,green99,1fucker,sc0tland,starss,glori,arnhem,goatman,1234asd,supertra,bill123,elguapo,sexylegs,jackryan,usmc69,innow,roaddog,alukard,winter11,crawler,gogiants,rvd420,alessandr,homegrow,gobbler,esteba,valeriy,happy12,1joshua,hawking,sicnarf,waynes,iamhappy,bayadera,august2,sashas,gotti,dragonfire,pencil1,halogen,borisov,bassingw,15975346,zachar,sweetp,soccer99,sky123,flipyou,spots3,xakepy,cyclops1,dragon77,rattolo58,motorhea,piligrim,helloween,dmb2010,supermen,shad0w,eatcum,sandokan,pinga,ufkfrnbrf,roksana,amista,pusser,sony1234,azerty1,1qasw2,ghbdt,q1w2e3r4t5y6u7i8,ktutylf,brehznev,zaebali,shitass,creosote,gjrtvjy,14938685,naughtyboy,pedro123,21crack,maurice1,joesakic,nicolas1,matthew9,lbyfhf,elocin,hfcgbplzq,pepper123,tiktak,mycroft,ryan11,firefly1,arriva,cyecvevhbr,loreal,peedee,jessica8,lisa01,anamari,pionex,ipanema,airbag,frfltvbz,123456789aa,epwr49,casper12,sweethear,sanandreas,wuschel,cocodog,france1,119911,redroses,erevan,xtvgbjy,bigfella,geneve,volvo850,evermore,amy123,moxie,celebs,geeman,underwor,haslo1,joy123,hallow,chelsea0,12435687,abarth,12332145,tazman1,roshan,yummie,genius1,chrisd,ilovelife,seventy7,qaz1wsx2,rocket88,gaurav,bobbyboy,tauchen,roberts1,locksmit,masterof,www111,d9ungl,volvos40,asdasd1,golfers,jillian1,7xm5rq,arwpls4u,gbhcf2,elloco,football2,muerte,bob101,sabbath1,strider1,killer66,notyou,lawnboy,de7mdf,johnnyb,voodoo2,sashaa,homedepo,bravos,nihao123,braindea,weedhead,rajeev,artem1,camille1,rockss,bobbyb,aniston,frnhbcf,oakridge,biscayne,cxfcnm,dressage,jesus3,kellyann,king69,juillet,holliste,h00ters,ripoff,123645,1999ar,eric12,123777,tommi,dick12,bilder,chris99,rulezz,getpaid,chicubs,ender1,byajhvfnbrf,milkshak,sk8board,freakshow,antonella,monolit,shelb,hannah01,masters1,pitbull1,1matthew,luvpussy,agbdlcid,panther2,alphas,euskadi,8318131,ronnie1,7558795,sweetgirl,cookie59,sequoia,5552555,ktyxbr,4500455,money7,severus,shinobu,dbityrf,phisig,rogue2,fractal,redfred,sebastian1,nelli,b00mer,cyberman,zqjphsyf6ctifgu,oldsmobile,redeemer,pimpi,lovehurts,1slayer,black13,rtynfdh,airmax,g00gle,1panther,artemon,nopasswo,fuck1234,luke1,trinit,666000,ziadma,oscardog,davex,hazel1,isgood,demond,james5,construc,555551,january2,m1911a1,flameboy,merda,nathan12,nicklaus,dukester,hello99,scorpio7,leviathan,dfcbktr,pourquoi,vfrcbv123,shlomo,rfcgth,rocky3,ignatz,ajhneyf,roger123,squeek,4815162342a,biskit,mossimo,soccer21,gridlock,lunker,popstar,ghhh47hj764,chutney,nitehawk,vortec,gamma1,codeman,dragula,kappasig,rainbow2,milehigh,blueballs,ou8124me,rulesyou,collingw,mystere,aster,astrovan,firetruck,fische,crawfish,hornydog,morebeer,tigerpaw,radost,144000,1chance,1234567890qwe,gracie1,myopia,oxnard,seminoles,evgeni,edvard,partytim,domani,tuffy1,jaimatadi,blackmag,kzueirf,peternor,mathew1,maggie12,henrys,k1234567,fasted,pozitiv,cfdtkbq,jessica7,goleafs,bandito,girl78,sharingan,skyhigh,bigrob,zorros,poopers,oldschoo,pentium2,gripper,norcal,kimba,artiller,moneymak,00197400,272829,shadow1212,thebull,handbags,all4u2c,bigman2,civics,godisgoo,section8,bandaid,suzanne1,zorba,159123,racecars,i62gbq,rambo123,ironroad,johnson2,knobby,twinboys,sausage1,kelly69,enter2,rhjirf,yessss,james12,anguilla,boutit,iggypop,vovochka,06060,budwiser,romuald,meditate,good1,sandrin,herkules,lakers8,honeybea,11111111a,miche,rangers9,lobster1,seiko,belova,midcon,mackdadd,bigdaddy1,daddie,sepultur,freddy12,damon1,stormy1,hockey2,bailey12,hedimaptfcor,dcowboys,sadiedog,thuggin,horny123,josie1,nikki2,beaver69,peewee1,mateus,viktorija,barrys,cubswin1,matt1234,timoxa,rileydog,sicilia,luckycat,candybar,julian1,abc456,pussylip,phase1,acadia,catty,246800,evertonf,bojangle,qzwxec,nikolaj,fabrizi,kagome,noncapa0,marle,popol,hahaha1,cossie,carla10,diggers,spankey,sangeeta,cucciolo,breezer,starwar1,cornholio,rastafari,spring99,yyyyyyy1,webstar,72d5tn,sasha1234,inhouse,gobuffs,civic1,redstone,234523,minnie1,rivaldo,angel5,sti2000,xenocide,11qq11,1phoenix,herman1,holly123,tallguy,sharks1,madri,superbad,ronin,jalal123,hardbody,1234567r,assman1,vivahate,buddylee,38972091,bonds25,40028922,qrhmis,wp2005,ceejay,pepper01,51842543,redrum1,renton,varadero,tvxtjk7r,vetteman,djhvbrc,curly1,fruitcak,jessicas,maduro,popmart,acuari,dirkpitt,buick1,bergerac,golfcart,pdtpljxrf,hooch1,dudelove,d9ebk7,123452000,afdjhbn,greener,123455432,parachut,mookie12,123456780,jeepcj5,potatoe,sanya,qwerty2010,waqw3p,gotika,freaky1,chihuahu,buccanee,ecstacy,crazyboy,slickric,blue88,fktdnbyf,2004rj,delta4,333222111,calient,ptbdhw,1bailey,blitz1,sheila1,master23,hoagie,pyf8ah,orbita,daveyboy,prono1,delta2,heman,1horny,tyrik123,ostrov,md2020,herve,rockfish,el546218,rfhbyjxrf,chessmaster,redmoon,lenny1,215487,tomat,guppy,amekpass,amoeba,my3girls,nottingh,kavita,natalia1,puccini,fabiana,8letters,romeos,netgear,casper2,taters,gowings,iforgot1,pokesmot,pollit,lawrun,petey1,rosebuds,007jr,gthtcnhjqrf,k9dls02a,neener,azertyu,duke11,manyak,tiger01,petros,supermar,mangas,twisty,spotter,takagi,dlanod,qcmfd454,tusymo,zz123456,chach,navyblue,gilbert1,2kash6zq,avemaria,1hxboqg2s,viviane,lhbjkjubz2957704,nowwowtg,1a2b3c4,m0rn3,kqigb7,superpuper,juehtw,gethigh,theclown,makeme,pradeep,sergik,deion21,nurik,devo2706,nbvibt,roman222,kalima,nevaeh,martin7,anathema,florian1,tamwsn3sja,dinmamma,133159,123654q,slicks,pnp0c08,yojimbo,skipp,kiran,pussyfuck,teengirl,apples12,myballs,angeli,1234a,125678,opelastra,blind1,armagedd,fish123,pitufo,chelseaf,thedevil,nugget1,cunt69,beetle1,carter15,apolon,collant,password00,fishboy,djkrjdf,deftone,celti,three11,cyrus1,lefthand,skoal1,ferndale,aries1,fred01,roberta1,chucks,cornbread,lloyd1,icecrea,cisco123,newjerse,vfhrbpf,passio,volcom1,rikimaru,yeah11,djembe,facile,a1l2e3x4,batman7,nurbol,lorenzo1,monica69,blowjob1,998899,spank1,233391,n123456,1bear,bellsout,999998,celtic67,sabre1,putas,y9enkj,alfabeta,heatwave,honey123,hard4u,insane1,xthysq,magnum1,lightsaber,123qweqwe,fisher1,pixie1,precios,benfic,thegirls,bootsman,4321rewq,nabokov,hightime,djghjc,1chelsea,junglist,august16,t3fkvkmj,1232123,lsdlsd12,chuckie1,pescado,granit,toogood,cathouse,natedawg,bmw530,123kid,hajime,198400,engine1,wessonnn,kingdom1,novembre,1rocks,kingfisher,qwerty89,jordan22,zasranec,megat,sucess,installutil,fetish01,yanshi1982,1313666,1314520,clemence,wargod,time1,newzealand,snaker,13324124,cfrehf,hepcat,mazahaka,bigjay,denisov,eastwest,1yellow,mistydog,cheetos,1596357,ginger11,mavrik,bubby1,bhbyf,pyramide,giusepp,luthien,honda250,andrewjackie,kentavr,lampoon,zaq123wsx,sonicx,davidh,1ccccc,gorodok,windsong,programm,blunt420,vlad1995,zxcvfdsa,tarasov,mrskin,sachas,mercedes1,koteczek,rawdog,honeybear,stuart1,kaktys,richard7,55555n,azalia,hockey10,scouter,francy,1xxxxxx,julie456,tequilla,penis123,schmoe,tigerwoods,1ferrari,popov,snowdrop,matthieu,smolensk,cornflak,jordan01,love2000,23wesdxc,kswiss,anna2000,geniusnet,baby2000,33ds5x,waverly,onlyone4,networkingpe,raven123,blesse,gocards,wow123,pjflkork,juicey,poorboy,freeee,billybo,shaheen,zxcvbnm.,berlit,truth1,gepard,ludovic,gunther1,bobby2,bob12345,sunmoon,septembr,bigmac1,bcnjhbz,seaking,all4u,12qw34er56ty,bassie,nokia5228,7355608,sylwia,charvel,billgate,davion,chablis,catsmeow,kjiflrf,amylynn,rfvbkkf,mizredhe,handjob,jasper12,erbol,solara,bagpipe,biffer,notime,erlan,8543852,sugaree,oshkosh,fedora,bangbus,5lyedn,longball,teresa1,bootyman,aleksand,qazwsxedc12,nujbhc,tifosi,zpxvwy,lights1,slowpoke,tiger12,kstate,password10,alex69,collins1,9632147,doglover,baseball2,security1,grunts,orange2,godloves,213qwe879,julieb,1qazxsw23edcvfr4,noidea,8uiazp,betsy1,junior2,parol123,123456zz,piehonkii,kanker,bunky,hingis,reese1,qaz123456,sidewinder,tonedup,footsie,blackpoo,jalapeno,mummy1,always1,josh1,rockyboy,plucky,chicag,nadroj,blarney,blood123,wheaties,packer1,ravens1,mrjones,gfhjkm007,anna2010,awatar,guitar12,hashish,scale1,tomwaits,amrita,fantasma,rfpfym,pass2,tigris,bigair,slicker,sylvi,shilpa,cindylou,archie1,bitches1,poppys,ontime,horney1,camaroz28,alladin,bujhm,cq2kph,alina1,wvj5np,1211123a,tetons,scorelan,concordi,morgan2,awacs,shanty,tomcat14,andrew123,bear69,vitae,fred99,chingy,octane,belgario,fatdaddy,rhodan,password23,sexxes,boomtown,joshua01,war3demo,my2kids,buck1,hot4you,monamour,12345aa,yumiko,parool,carlton1,neverland,rose12,right1,sociald,grouse,brandon0,cat222,alex00,civicex,bintang,malkav,arschloc,dodgeviper,qwerty666,goduke,dante123,boss1,ontheroc,corpsman,love14,uiegu451,hardtail,irondoor,ghjrehfnehf,36460341,konijn,h2slca,kondom25,123456ss,cfytxrf,btnjey,nando,freemail,comander,natas666,siouxsie,hummer1,biomed,dimsum,yankees0,diablo666,lesbian1,pot420,jasonm,glock23,jennyb,itsmine,lena2010,whattheh,beandip,abaddon,kishore,signup,apogee,biteme12,suzieq,vgfun4,iseeyou,rifleman,qwerta,4pussy,hawkman,guest1,june17,dicksuck,bootay,cash12,bassale,ktybyuhfl,leetch,nescafe,7ovtgimc,clapton1,auror,boonie,tracker1,john69,bellas,cabinboy,yonkers,silky1,ladyffesta,drache,kamil1,davidp,bad123,snoopy12,sanche,werthvfy,achille,nefertiti,gerald1,slage33,warszawa,macsan26,mason123,kotopes,welcome8,nascar99,kiril,77778888,hairy1,monito,comicsans,81726354,killabee,arclight,yuo67,feelme,86753099,nnssnn,monday12,88351132,88889999,websters,subito,asdf12345,vaz2108,zvbxrpl,159753456852,rezeda,multimed,noaccess,henrique,tascam,captiva,zadrot,hateyou,sophie12,123123456,snoop1,charlie8,birmingh,hardline,libert,azsxdcf,89172735872,rjpthju,bondar,philips1,olegnaruto,myword,yakman,stardog,banana12,1234567890w,farout,annick,duke01,rfj422,billard,glock19,shaolin1,master10,cinderel,deltaone,manning1,biggreen,sidney1,patty1,goforit1,766rglqy,sevendus,aristotl,armagedo,blumen,gfhfyjz,kazakov,lekbyxxx,accord1,idiota,soccer16,texas123,victoire,ololo,chris01,bobbbb,299792458,eeeeeee1,confiden,07070,clarks,techno1,kayley,stang1,wwwwww1,uuuuu1,neverdie,jasonr,cavscout,481516234,mylove1,shaitan,1qazxcvb,barbaros,123456782000,123wer,thissucks,7seven,227722,faerie,hayduke,dbacks,snorkel,zmxncbv,tiger99,unknown1,melmac,polo1234,sssssss1,1fire,369147,bandung,bluejean,nivram,stanle,ctcnhf,soccer20,blingbli,dirtball,alex2112,183461,skylin,boobman,geronto,brittany1,yyz2112,gizmo69,ktrcec,dakota12,chiken,sexy11,vg08k714,bernadet,1bulldog,beachs,hollyb,maryjoy,margo1,danielle1,chakra,alexand,hullcity,matrix12,sarenna,pablos,antler,supercar,chomsky,german1,airjordan,545ettvy,camaron,flight1,netvideo,tootall,valheru,481516,1234as,skimmer,redcross,inuyash,uthvfy,1012nw,edoardo,bjhgfi,golf11,9379992a,lagarto,socball,boopie,krazy,.adgjmptw,gaydar,kovalev,geddylee,firstone,turbodog,loveee,135711,badbo,trapdoor,opopop11,danny2,max2000,526452,kerry1,leapfrog,daisy2,134kzbip,1andrea,playa1,peekab00,heskey,pirrello,gsewfmck,dimon4ik,puppie,chelios,554433,hypnodanny,fantik,yhwnqc,ghbdtngjrf,anchorag,buffett1,fanta,sappho,024680,vialli,chiva,lucylu,hashem,exbntkm,thema,23jordan,jake11,wildside,smartie,emerica,2wj2k9oj,ventrue,timoth,lamers,baerchen,suspende,boobis,denman85,1adam12,otello,king12,dzakuni,qsawbbs,isgay,porno123,jam123,daytona1,tazzie,bunny123,amaterasu,jeffre,crocus,mastercard,bitchedup,chicago7,aynrand,intel1,tamila,alianza,mulch,merlin12,rose123,alcapone,mircea,loveher,joseph12,chelsea6,dorothy1,wolfgar,unlimite,arturik,qwerty3,paddy1,piramid,linda123,cooool,millie1,warlock1,forgotit,tort02,ilikeyou,avensis,loveislife,dumbass1,clint1,2110se,drlove,olesia,kalinina,sergey123,123423,alicia1,markova,tri5a3,media1,willia1,xxxxxxx1,beercan,smk7366,jesusislord,motherfuck,smacker,birthday5,jbaby,harley2,hyper1,a9387670a,honey2,corvet,gjmptw,rjhjkmbien,apollon,madhuri,3a5irt,cessna17,saluki,digweed,tamia1,yja3vo,cfvlehfr,1111111q,martyna,stimpy1,anjana,yankeemp,jupiler,idkfa,1blue,fromv,afric,3xbobobo,liverp00l,nikon1,amadeus1,acer123,napoleo,david7,vbhjckfdf,mojo69,percy1,pirates1,grunt1,alenushka,finbar,zsxdcf,mandy123,1fred,timewarp,747bbb,druids,julia123,123321qq,spacebar,dreads,fcbarcelona,angela12,anima,christopher1,stargazer,123123s,hockey11,brewski,marlbor,blinker,motorhead,damngood,werthrf,letmein3,moremoney,killer99,anneke,eatit,pilatus,andrew01,fiona1,maitai,blucher,zxgdqn,e5pftu,nagual,panic1,andron,openwide,alphabeta,alison1,chelsea8,fende,mmm666,1shot2,a19l1980,123456@,1black,m1chael,vagner,realgood,maxxx,vekmnbr,stifler,2509mmh,tarkan,sherzod,1234567b,gunners1,artem2010,shooby,sammie1,p123456,piggie,abcde12345,nokia6230,moldir,piter,1qaz3edc,frequenc,acuransx,1star,nikeair,alex21,dapimp,ranjan,ilovegirls,anastasiy,berbatov,manso,21436587,leafs1,106666,angelochek,ingodwetrust,123456aaa,deano,korsar,pipetka,thunder9,minka,himura,installdevic,1qqqqq,digitalprodu,suckmeoff,plonker,headers,vlasov,ktr1996,windsor1,mishanya,garfield1,korvin,littlebit,azaz09,vandamme,scripto,s4114d,passward,britt1,r1chard,ferrari5,running1,7xswzaq,falcon2,pepper76,trademan,ea53g5,graham1,volvos80,reanimator,micasa,1234554321q,kairat,escorpion,sanek94,karolina1,kolovrat,karen2,1qaz@wsx,racing1,splooge,sarah2,deadman1,creed1,nooner,minicoop,oceane,room112,charme,12345ab,summer00,wetcunt,drewman,nastyman,redfire,appels,merlin69,dolfin,bornfree,diskette,ohwell,12345678qwe,jasont,madcap,cobra2,dolemit1,whatthehell,juanit,voldemar,rocke,bianc,elendil,vtufgjkbc,hotwheels,spanis,sukram,pokerface,k1ller,freakout,dontae,realmadri,drumss,gorams,258789,snakey,jasonn,whitewolf,befree,johnny99,pooka,theghost,kennys,vfvektxrf,toby1,jumpman23,deadlock,barbwire,stellina,alexa1,dalamar,mustanggt,northwes,tesoro,chameleo,sigtau,satoshi,george11,hotcum,cornell1,golfer12,geek01d,trololo,kellym,megapolis,pepsi2,hea666,monkfish,blue52,sarajane,bowler1,skeets,ddgirls,hfccbz,bailey01,isabella1,dreday,moose123,baobab,crushme,000009,veryhot,roadie,meanone,mike18,henriett,dohcvtec,moulin,gulnur,adastra,angel9,western1,natura,sweetpe,dtnfkm,marsbar,daisys,frogger1,virus1,redwood1,streetball,fridolin,d78unhxq,midas,michelob,cantik,sk2000,kikker,macanudo,rambone,fizzle,20000,peanuts1,cowpie,stone32,astaroth,dakota01,redso,mustard1,sexylove,giantess,teaparty,bobbin,beerbong,monet1,charles3,anniedog,anna1988,cameleon,longbeach,tamere,qpful542,mesquite,waldemar,12345zx,iamhere,lowboy,canard,granp,daisymay,love33,moosejaw,nivek,ninjaman,shrike01,aaa777,88002000600,vodolei,bambush,falcor,harley69,alphaomega,severine,grappler,bosox,twogirls,gatorman,vettes,buttmunch,chyna,excelsio,crayfish,birillo,megumi,lsia9dnb9y,littlebo,stevek,hiroyuki,firehous,master5,briley2,gangste,chrisk,camaleon,bulle,troyboy,froinlaven,mybutt,sandhya,rapala,jagged,crazycat,lucky12,jetman,wavmanuk,1heather,beegee,negril,mario123,funtime1,conehead,abigai,mhorgan,patagoni,travel1,backspace,frenchfr,mudcat,dashenka,baseball3,rustys,741852kk,dickme,baller23,griffey1,suckmycock,fuhrfzgc,jenny2,spuds,berlin1,justfun,icewind,bumerang,pavlusha,minecraft123,shasta1,ranger12,123400,twisters,buthead,miked,finance1,dignity7,hello9,lvjdp383,jgthfnjh,dalmatio,paparoach,miller31,2bornot2b,fathe,monterre,theblues,satans,schaap,jasmine2,sibelius,manon,heslo,jcnhjd,shane123,natasha2,pierrot,bluecar,iloveass,harriso,red12,london20,job314,beholder,reddawg,fuckyou!,pussylick,bologna1,austintx,ole4ka,blotto,onering,jearly,balbes,lightbul,bighorn,crossfir,lee123,prapor,1ashley,gfhjkm22,wwe123,09090,sexsite,marina123,jagua,witch1,schmoo,parkview,dragon3,chilango,ultimo,abramova,nautique,2bornot2,duende,1arthur,nightwing,surfboar,quant4307,15s9pu03,karina1,shitball,walleye1,wildman1,whytesha,1morgan,my2girls,polic,baranova,berezuckiy,kkkkkk1,forzima,fornow,qwerty02,gokart,suckit69,davidlee,whatnow,edgard,tits1,bayshore,36987412,ghbphfr,daddyy,explore1,zoidberg,5qnzjx,morgane,danilov,blacksex,mickey12,balsam,83y6pv,sarahc,slaye,all4u2,slayer69,nadia1,rlzwp503,4cranker,kaylie,numberon,teremok,wolf12,deeppurple,goodbeer,aaa555,66669999,whatif,harmony1,ue8fpw,3tmnej,254xtpss,dusty197,wcksdypk,zerkalo,dfnheirf,motorol,digita,whoareyou,darksoul,manics,rounders,killer11,d2000lb,cegthgfhjkm,catdog1,beograd,pepsico,julius1,123654987,softbal,killer23,weasel1,lifeson,q123456q,444555666,bunches,andy1,darby1,service01,bear11,jordan123,amega,duncan21,yensid,lerxst,rassvet,bronco2,fortis,pornlove,paiste,198900,asdflkjh,1236547890,futur,eugene1,winnipeg261,fk8bhydb,seanjohn,brimston,matthe1,bitchedu,crisco,302731,roxydog,woodlawn,volgograd,ace1210,boy4u2ownnyc,laura123,pronger,parker12,z123456z,andrew13,longlife,sarang,drogba,gobruins,soccer4,holida,espace,almira,murmansk,green22,safina,wm00022,1chevy,schlumpf,doroth,ulises,golf99,hellyes,detlef,mydog,erkina,bastardo,mashenka,sucram,wehttam,generic1,195000,spaceboy,lopas123,scammer,skynyrd,daddy2,titani,ficker,cr250r,kbnthfnehf,takedown,sticky1,davidruiz,desant,nremtp,painter1,bogies,agamemno,kansas1,smallfry,archi,2b4dnvsx,1player,saddie,peapod,6458zn7a,qvw6n2,gfxqx686,twice2,sh4d0w3d,mayfly,375125,phitau,yqmbevgk,89211375759,kumar1,pfhfpf,toyboy,way2go,7pvn4t,pass69,chipster,spoony,buddycat,diamond3,rincewin,hobie,david01,billbo,hxp4life,matild,pokemon2,dimochka,clown1,148888,jenmt3,cuxldv,cqnwhy,cde34rfv,simone1,verynice,toobig,pasha123,mike00,maria2,lolpop,firewire,dragon9,martesana,a1234567890,birthday3,providen,kiska,pitbulls,556655,misawa,damned69,martin11,goldorak,gunship,glory1,winxclub,sixgun,splodge,agent1,splitter,dome69,ifghjb,eliza1,snaiper,wutang36,phoenix7,666425,arshavin,paulaner,namron,m69fg1w,qwert1234,terrys,zesyrmvu,joeman,scoots,dwml9f,625vrobg,sally123,gostoso,symow8,pelota,c43qpul5rz,majinbuu,lithium1,bigstuff,horndog1,kipelov,kringle,1beavis,loshara,octobe,jmzacf,12342000,qw12qw,runescape1,chargers1,krokus,piknik,jessy,778811,gjvbljh,474jdvff,pleaser,misskitty,breaker1,7f4df451,dayan,twinky,yakumo,chippers,matia,tanith,len2ski1,manni,nichol1,f00b4r,nokia3110,standart,123456789i,shami,steffie,larrywn,chucker,john99,chamois,jjjkkk,penmouse,ktnj2010,gooners,hemmelig,rodney1,merlin01,bearcat1,1yyyyy,159753z,1fffff,1ddddd,thomas11,gjkbyrf,ivanka,f1f2f3,petrovna,phunky,conair,brian2,creative1,klipsch,vbitymrf,freek,breitlin,cecili,westwing,gohabsgo,tippmann,1steve,quattro6,fatbob,sp00ky,rastas,1123581,redsea,rfnmrf,jerky1,1aaaaaa,spk666,simba123,qwert54321,123abcd,beavis69,fyfyfc,starr1,1236547,peanutbutter,sintra,12345abcde,1357246,abcde1,climbon,755dfx,mermaids,monte1,serkan,geilesau,777win,jasonc,parkside,imagine1,rockhead,producti,playhard,principa,spammer,gagher,escada,tsv1860,dbyjuhfl,cruiser1,kennyg,montgome,2481632,pompano,cum123,angel6,sooty,bear01,april6,bodyhamm,pugsly,getrich,mikes,pelusa,fosgate,jasonp,rostislav,kimberly1,128mo,dallas11,gooner1,manuel1,cocacola1,imesh,5782790,password8,daboys,1jones,intheend,e3w2q1,whisper1,madone,pjcgujrat,1p2o3i,jamesp,felicida,nemrac,phikap,firecat,jrcfyjxrf,matt12,bigfan,doedel,005500,jasonx,1234567k,badfish,goosey,utjuhfabz,wilco,artem123,igor123,spike123,jor23dan,dga9la,v2jmsz,morgan12,avery1,dogstyle,natasa,221195ws,twopac,oktober7,karthik,poop1,mightymo,davidr,zermatt,jehova,aezakmi1,dimwit,monkey5,serega123,qwerty111,blabl,casey22,boy123,1clutch,asdfjkl1,hariom,bruce10,jeep95,1smith,sm9934,karishma,bazzzz,aristo,669e53e1,nesterov,kill666,fihdfv,1abc2,anna1,silver11,mojoman,telefono,goeagles,sd3lpgdr,rfhfynby,melinda1,llcoolj,idteul,bigchief,rocky13,timberwo,ballers,gatekeep,kashif,hardass,anastasija,max777,vfuyjkbz,riesling,agent99,kappas,dalglish,tincan,orange3,turtoise,abkbvjy,mike24,hugedick,alabala,geolog,aziza,devilboy,habanero,waheguru,funboy,freedom5,natwest,seashore,impaler,qwaszx1,pastas,bmw535,tecktonik,mika00,jobsearc,pinche,puntang,aw96b6,1corvett,skorpio,foundati,zzr1100,gembird,vfnhjcrby,soccer18,vaz2110,peterp,archer1,cross1,samedi,dima1992,hunter99,lipper,hotbody,zhjckfdf,ducati1,trailer1,04325956,cheryl1,benetton,kononenko,sloneczko,rfgtkmrf,nashua,balalaika,ampere,eliston,dorsai,digge,flyrod,oxymoron,minolta,ironmike,majortom,karimov,fortun,putaria,an83546921an13,blade123,franchis,mxaigtg5,dynxyu,devlt4,brasi,terces,wqmfuh,nqdgxz,dale88,minchia,seeyou,housepen,1apple,1buddy,mariusz,bighouse,tango2,flimflam,nicola1,qwertyasd,tomek1,shumaher,kartoshka,bassss,canaries,redman1,123456789as,preciosa,allblacks,navidad,tommaso,beaudog,forrest1,green23,ryjgjxrf,go4it,ironman2,badnews,butterba,1grizzly,isaeva,rembrand,toront,1richard,bigjon,yfltymrf,1kitty,4ng62t,littlejo,wolfdog,ctvtyjd,spain1,megryan,tatertot,raven69,4809594q,tapout,stuntman,a131313,lagers,hotstuf,lfdbl11,stanley2,advokat,boloto,7894561,dooker,adxel187,cleodog,4play,0p9o8i,masterb,bimota,charlee,toystory,6820055,6666667,crevette,6031769,corsa,bingoo,dima1990,tennis11,samuri,avocado,melissa6,unicor,habari,metart,needsex,cockman,hernan,3891576,3334444,amigo1,gobuffs2,mike21,allianz,2835493,179355,midgard,joey123,oneluv,ellis1,towncar,shonuff,scouse,tool69,thomas19,chorizo,jblaze,lisa1,dima1999,sophia1,anna1989,vfvekbxrf,krasavica,redlegs,jason25,tbontb,katrine,eumesmo,vfhufhbnrf,1654321,asdfghj1,motdepas,booga,doogle,1453145,byron1,158272,kardinal,tanne,fallen1,abcd12345,ufyljy,n12345,kucing,burberry,bodger,1234578,februar,1234512,nekkid,prober,harrison1,idlewild,rfnz90,foiegras,pussy21,bigstud,denzel,tiffany2,bigwill,1234567890zzz,hello69,compute1,viper9,hellspaw,trythis,gococks,dogballs,delfi,lupine,millenia,newdelhi,charlest,basspro,1mike,joeblack,975310,1rosebud,batman11,misterio,fucknut,charlie0,august11,juancho,ilonka,jigei743ks,adam1234,889900,goonie,alicat,ggggggg1,1zzzzzzz,sexywife,northstar,chris23,888111,containe,trojan1,jason5,graikos,1ggggg,1eeeee,tigers01,indigo1,hotmale,jacob123,mishima,richard3,cjxb2014,coco123,meagain,thaman,wallst,edgewood,bundas,1power,matilda1,maradon,hookedup,jemima,r3vi3wpass,2004-10-,mudman,taz123,xswzaq,emerson1,anna21,warlord1,toering,pelle,tgwdvu,masterb8,wallstre,moppel,priora,ghjcnjrdfif,yoland,12332100,1j9e7f6f,jazzzz,yesman,brianm,42qwerty42,12345698,darkmanx,nirmal,john31,bb123456,neuspeed,billgates,moguls,fj1200,hbhlair,shaun1,ghbdfn,305pwzlr,nbu3cd,susanb,pimpdad,mangust6403,joedog,dawidek,gigante,708090,703751,700007,ikalcr,tbivbn,697769,marvi,iyaayas,karen123,jimmyboy,dozer1,e6z8jh,bigtime1,getdown,kevin12,brookly,zjduc3,nolan1,cobber,yr8wdxcq,liebe,m1garand,blah123,616879,action1,600000,sumitomo,albcaz,asian1,557799,dave69,556699,sasa123,streaker,michel1,karate1,buddy7,daulet,koks888,roadtrip,wapiti,oldguy,illini1,1234qq,mrspock,kwiatek,buterfly,august31,jibxhq,jackin,taxicab,tristram,talisker,446655,444666,chrisa,freespace,vfhbfyyf,chevell,444333,notyours,442244,christian1,seemore,sniper12,marlin1,joker666,multik,devilish,crf450,cdfoli,eastern1,asshead,duhast,voyager2,cyberia,1wizard,cybernet,iloveme1,veterok,karandash,392781,looksee,diddy,diabolic,foofight,missey,herbert1,bmw318i,premier1,zsfmpv,eric1234,dun6sm,fuck11,345543,spudman,lurker,bitem,lizzy1,ironsink,minami,339311,s7fhs127,sterne,332233,plankton,galax,azuywe,changepa,august25,mouse123,sikici,killer69,xswqaz,quovadis,gnomik,033028pw,777777a,barrakuda,spawn666,goodgod,slurp,morbius,yelnats,cujo31,norman1,fastone,earwig,aureli,wordlife,bnfkbz,yasmi,austin123,timberla,missy2,legalize,netcom,liljon,takeit,georgin,987654321z,warbird,vitalina,all4u3,mmmmmm1,bichon,ellobo,wahoos,fcazmj,aksarben,lodoss,satnam,vasili,197800,maarten,sam138989,0u812,ankita,walte,prince12,anvils,bestia,hoschi,198300,univer,jack10,ktyecbr,gr00vy,hokie,wolfman1,fuckwit,geyser,emmanue,ybrjkftd,qwerty33,karat,dblock,avocat,bobbym,womersle,1please,nostra,dayana,billyray,alternat,iloveu1,qwerty69,rammstein1,mystikal,winne,drawde,executor,craxxxs,ghjcnjnf,999888777,welshman,access123,963214785,951753852,babe69,fvcnthlfv,****me,666999666,testing2,199200,nintendo64,oscarr,guido8,zhanna,gumshoe,jbird,159357456,pasca,123452345,satan6,mithrand,fhbirf,aa1111aa,viggen,ficktjuv,radial9,davids1,rainbow7,futuro,hipho,platin,poppy123,rhenjq,fulle,rosit,chicano,scrumpy,lumpy1,seifer,uvmrysez,autumn1,xenon,susie1,7u8i9o0p,gamer1,sirene,muffy1,monkeys1,kalinin,olcrackmaster,hotmove,uconn,gshock,merson,lthtdyz,pizzaboy,peggy1,pistache,pinto1,fishka,ladydi,pandor,baileys,hungwell,redboy,rookie1,amanda01,passwrd,clean1,matty1,tarkus,jabba1,bobster,beer30,solomon1,moneymon,sesamo,fred11,sunnysid,jasmine5,thebears,putamadre,workhard,flashbac,counter1,liefde,magnat,corky1,green6,abramov,lordik,univers,shortys,david3,vip123,gnarly,1234567s,billy2,honkey,deathstar,grimmy,govinda,direktor,12345678s,linus1,shoppin,rekbrjdf,santeria,prett,berty75,mohican,daftpunk,uekmyfhf,chupa,strats,ironbird,giants56,salisbur,koldun,summer04,pondscum,jimmyj,miata1,george3,redshoes,weezie,bartman1,0p9o8i7u,s1lver,dorkus,125478,omega9,sexisgood,mancow,patric1,jetta1,074401,ghjuhtcc,gfhjk,bibble,terry2,123213,medicin,rebel2,hen3ry,4freedom,aldrin,lovesyou,browny,renwod,winnie1,belladon,1house,tyghbn,blessme,rfhfrfnbwf,haylee,deepdive,booya,phantasy,gansta,cock69,4mnveh,gazza1,redapple,structur,anakin1,manolito,steve01,poolman,chloe123,vlad1998,qazwsxe,pushit,random123,ontherocks,o236nq,brain1,dimedrol,agape,rovnogod,1balls,knigh,alliso,love01,wolf01,flintstone,beernuts,tuffguy,isengard,highfive,alex23,casper99,rubina,getreal,chinita,italian1,airsoft,qwerty23,muffdiver,willi1,grace123,orioles1,redbull1,chino1,ziggy123,breadman,estefan,ljcneg,gotoit,logan123,wideglid,mancity1,treess,qwe123456,kazumi,qweasdqwe,oddworld,naveed,protos,towson,a801016,godislov,at_asp,bambam1,soccer5,dark123,67vette,carlos123,hoser1,scouser,wesdxc,pelus,dragon25,pflhjn,abdula,1freedom,policema,tarkin,eduardo1,mackdad,gfhjkm11,lfplhfgthvf,adilet,zzzzxxxx,childre,samarkand,cegthgegth,shama,fresher,silvestr,greaser,allout,plmokn,sexdrive,nintendo1,fantasy7,oleander,fe126fd,crumpet,pingzing,dionis,hipster,yfcnz,requin,calliope,jerome1,housecat,abc123456789,doghot,snake123,augus,brillig,chronic1,gfhjkbot,expediti,noisette,master7,caliban,whitetai,favorite3,lisamari,educatio,ghjhjr,saber1,zcegth,1958proman,vtkrbq,milkdud,imajica,thehip,bailey10,hockey19,dkflbdjcnjr,j123456,bernar,aeiouy,gamlet,deltachi,endzone,conni,bcgfybz,brandi1,auckland2010,7653ajl1,mardigra,testuser,bunko18,camaro67,36936,greenie,454dfmcq,6xe8j2z4,mrgreen,ranger5,headhunt,banshee1,moonunit,zyltrc,hello3,pussyboy,stoopid,tigger11,yellow12,drums1,blue02,kils123,junkman,banyan,jimmyjam,tbbucs,sportster,badass1,joshie,braves10,lajolla,1amanda,antani,78787,antero,19216801,chich,rhett32,sarahm,beloit,sucker69,corkey,nicosnn,rccola,caracol,daffyduc,bunny2,mantas,monkies,hedonist,cacapipi,ashton1,sid123,19899891,patche,greekgod,cbr1000,leader1,19977991,ettore,chongo,113311,picass,cfif123,rhtfnbd,frances1,andy12,minnette,bigboy12,green69,alices,babcia,partyboy,javabean,freehand,qawsed123,xxx111,harold1,passwo,jonny1,kappa1,w2dlww3v5p,1merlin,222999,tomjones,jakeman,franken,markhegarty,john01,carole1,daveman,caseys,apeman,mookey,moon123,claret,titans1,residentevil,campari,curitiba,dovetail,aerostar,jackdaniels,basenji,zaq12w,glencoe,biglove,goober12,ncc170,far7766,monkey21,eclipse9,1234567v,vanechka,aristote,grumble,belgorod,abhishek,neworleans,pazzword,dummie,sashadog,diablo11,mst3000,koala1,maureen1,jake99,isaiah1,funkster,gillian1,ekaterina20,chibears,astra123,4me2no,winte,skippe,necro,windows9,vinograd,demolay,vika2010,quiksilver,19371ayj,dollar1,shecky,qzwxecrv,butterfly1,merrill1,scoreland,1crazy,megastar,mandragora,track1,dedhed,jacob2,newhope,qawsedrftgyh,shack1,samvel,gatita,shyster,clara1,telstar,office1,crickett,truls,nirmala,joselito,chrisl,lesnik,aaaabbbb,austin01,leto2010,bubbie,aaa12345,widder,234432,salinger,mrsmith,qazsedcft,newshoes,skunks,yt1300,bmw316,arbeit,smoove,123321qweewq,123qazwsx,22221111,seesaw,0987654321a,peach1,1029384756q,sereda,gerrard8,shit123,batcave,energy1,peterb,mytruck,peter12,alesya,tomato1,spirou,laputaxx,magoo1,omgkremidia,knight12,norton1,vladislava,shaddy,austin11,jlbyjxrf,kbdthgekm,punheta,fetish69,exploiter,roger2,manstein,gtnhjd,32615948worms,dogbreath,ujkjdjkjvrf,vodka1,ripcord,fatrat,kotek1,tiziana,larrybir,thunder3,nbvfnb,9kyq6fge,remembe,likemike,gavin1,shinigam,yfcnfcmz,13245678,jabbar,vampyr,ane4ka,lollipo,ashwin,scuderia,limpdick,deagle,3247562,vishenka,fdhjhf,alex02,volvov70,mandys,bioshock,caraca,tombraider,matrix69,jeff123,13579135,parazit,black3,noway1,diablos,hitmen,garden1,aminor,decembe,august12,b00ger,006900,452073t,schach,hitman1,mariner1,vbnmrf,paint1,742617000027,bitchboy,pfqxjyjr,5681392,marryher,sinnet,malik1,muffin12,aninha,piolin,lady12,traffic1,cbvjyf,6345789,june21,ivan2010,ryan123,honda99,gunny,coorslight,asd321,hunter69,7224763,sonofgod,dolphins1,1dolphin,pavlenko,woodwind,lovelov,pinkpant,gblfhfcbyf,hotel1,justinbiebe,vinter,jeff1234,mydogs,1pizza,boats1,parrothe,shawshan,brooklyn1,cbrown,1rocky,hemi426,dragon64,redwings1,porsches,ghostly,hubbahub,buttnut,b929ezzh,sorokina,flashg,fritos,b7mguk,metatron,treehous,vorpal,8902792,marcu,free123,labamba,chiefs1,zxc123zxc,keli_14,hotti,1steeler,money4,rakker,foxwoods,free1,ahjkjd,sidorova,snowwhit,neptune1,mrlover,trader1,nudelamb,baloo,power7,deltasig,bills1,trevo,7gorwell,nokia6630,nokia5320,madhatte,1cowboys,manga1,namtab,sanjar,fanny1,birdman1,adv12775,carlo1,dude1998,babyhuey,nicole11,madmike,ubvyfpbz,qawsedr,lifetec,skyhook,stalker123,toolong,robertso,ripazha,zippy123,1111111a,manol,dirtyman,analslut,jason3,dutches,minhasenha,cerise,fenrir,jayjay1,flatbush,franka,bhbyjxrf,26429vadim,lawntrax,198700,fritzy,nikhil,ripper1,harami,truckman,nemvxyheqdd5oqxyxyzi,gkfytnf,bugaboo,cableman,hairpie,xplorer,movado,hotsex69,mordred,ohyeah1,patrick3,frolov,katieh,4311111q,mochaj,presari,bigdo,753951852,freedom4,kapitan,tomas1,135795,sweet123,pokers,shagme,tane4ka,sentinal,ufgyndmv,jonnyb,skate123,123456798,123456788,very1,gerrit,damocles,dollarbi,caroline1,lloyds,pizdets,flatland,92702689,dave13,meoff,ajnjuhfabz,achmed,madison9,744744z,amonte,avrillavigne,elaine1,norma1,asseater,everlong,buddy23,cmgang1,trash1,mitsu,flyman,ulugbek,june27,magistr,fittan,sebora64,dingos,sleipnir,caterpil,cindys,212121qaz,partys,dialer,gjytltkmybr,qweqaz,janvier,rocawear,lostboy,aileron,sweety1,everest1,pornman,boombox,potter1,blackdic,44448888,eric123,112233aa,2502557i,novass,nanotech,yourname,x12345,indian1,15975300,1234567l,carla51,chicago0,coleta,cxzdsaewq,qqwweerr,marwan,deltic,hollys,qwerasd,pon32029,rainmake,nathan0,matveeva,legioner,kevink,riven,tombraid,blitzen,a54321,jackyl,chinese1,shalimar,oleg1995,beaches1,tommylee,eknock,berli,monkey23,badbob,pugwash,likewhoa,jesus2,yujyd360,belmar,shadow22,utfp5e,angelo1,minimax,pooder,cocoa1,moresex,tortue,lesbia,panthe,snoopy2,drumnbass,alway,gmcz71,6jhwmqku,leppard,dinsdale,blair1,boriqua,money111,virtuagirl,267605,rattlesn,1sunshin,monica12,veritas1,newmexic,millertime,turandot,rfvxfnrf,jaydog,kakawka,bowhunter,booboo12,deerpark,erreway,taylorma,rfkbybyf,wooglin,weegee,rexdog,iamhorny,cazzo1,vhou812,bacardi1,dctktyyfz,godpasi,peanut12,bertha1,fuckyoubitch,ghosty,altavista,jertoot,smokeit,ghjcnbvtyz,fhnehxbr,rolsen,qazxcdews,maddmaxx,redrocke,qazokm,spencer2,thekiller,asdf11,123sex,tupac1,p1234567,dbrown,1biteme,tgo4466,316769,sunghi,shakespe,frosty1,gucci1,arcana,bandit01,lyubov,poochy,dartmout,magpies1,sunnyd,mouseman,summer07,chester7,shalini,danbury,pigboy,dave99,deniss,harryb,ashley11,pppppp1,01081988m,balloon1,tkachenko,bucks1,master77,pussyca,tricky1,zzxxccvv,zoulou,doomer,mukesh,iluv69,supermax,todays,thefox,don123,dontask,diplom,piglett,shiney,fahbrf,qaz12wsx,temitope,reggin,project1,buffy2,inside1,lbpfqyth,vanilla1,lovecock,u4slpwra,fylh.irf,123211,7ertu3ds,necroman,chalky,artist1,simpso,4x7wjr,chaos666,lazyacres,harley99,ch33s3,marusa,eagle7,dilligas,computadora,lucky69,denwer,nissan350z,unforgiv,oddball,schalke0,aztec1,borisova,branden1,parkave,marie123,germa,lafayett,878kckxy,405060,cheeseca,bigwave,fred22,andreea,poulet,mercutio,psycholo,andrew88,o4izdmxu,sanctuar,newhome,milion,suckmydi,rjvgm.nth,warior,goodgame,1qwertyuiop,6339cndh,scorpio2,macker,southbay,crabcake,toadie,paperclip,fatkid,maddo,cliff1,rastafar,maries,twins1,geujdrf,anjela,wc4fun,dolina,mpetroff,rollout,zydeco,shadow3,pumpki,steeda,volvo240,terras,blowjo,blue2000,incognit,badmojo,gambit1,zhukov,station1,aaronb,graci,duke123,clipper1,qazxsw2,ledzeppe,kukareku,sexkitte,cinco,007008,lakers12,a1234b,acmilan1,afhfjy,starrr,slutty3,phoneman,kostyan,bonzo1,sintesi07,ersatz,cloud1,nephilim,nascar03,rey619,kairos,123456789e,hardon1,boeing1,juliya,hfccdtn,vgfun8,polizei,456838,keithb,minouche,ariston,savag,213141,clarkken,microwav,london2,santacla,campeo,qr5mx7,464811,mynuts,bombo,1mickey,lucky8,danger1,ironside,carter12,wyatt1,borntorun,iloveyou123,jose1,pancake1,tadmichaels,monsta,jugger,hunnie,triste,heat7777,ilovejesus,queeny,luckycharm,lieben,gordolee85,jtkirk,forever21,jetlag,skylane,taucher,neworlea,holera,000005,anhnhoem,melissa7,mumdad,massimiliano,dima1994,nigel1,madison3,slicky,shokolad,serenit,jmh1978,soccer123,chris3,drwho,rfpzdrf,1qasw23ed,free4me,wonka,sasquatc,sanan,maytag,verochka,bankone,molly12,monopoli,xfqybr,lamborgini,gondolin,candycane,needsome,jb007,scottie1,brigit,0147258369,kalamazo,lololyo123,bill1234,ilovejes,lol123123,popkorn,april13,567rntvm,downunde,charle1,angelbab,guildwars,homeworld,qazxcvbnm,superma1,dupa123,kryptoni,happyy,artyom,stormie,cool11,calvin69,saphir,konovalov,jansport,october8,liebling,druuna,susans,megans,tujhjdf,wmegrfux,jumbo1,ljb4dt7n,012345678910,kolesnik,speculum,at4gftlw,kurgan,93pn75,cahek0980,dallas01,godswill,fhifdby,chelsea4,jump23,barsoom,catinhat,urlacher,angel99,vidadi1,678910,lickme69,topaz1,westend,loveone,c12345,gold12,alex1959,mamon,barney12,1maggie,alex12345,lp2568cskt,s1234567,gjikbdctyf,anthony0,browns99,chips1,sunking,widespre,lalala1,tdutif,fucklife,master00,alino4ka,stakan,blonde1,phoebus,tenore,bvgthbz,brunos,suzjv8,uvdwgt,revenant,1banana,veroniqu,sexfun,sp1der,4g3izhox,isakov,shiva1,scooba,bluefire,wizard12,dimitris,funbags,perseus,hoodoo,keving,malboro,157953,a32tv8ls,latics,animate,mossad,yejntb,karting,qmpq39zr,busdrive,jtuac3my,jkne9y,sr20dett,4gxrzemq,keylargo,741147,rfktylfhm,toast1,skins1,xcalibur,gattone,seether,kameron,glock9mm,julio1,delenn,gameday,tommyd,str8edge,bulls123,66699,carlsberg,woodbird,adnama,45auto,codyman,truck2,1w2w3w4w,pvjegu,method1,luetdi,41d8cd98f00b,bankai,5432112345,94rwpe,reneee,chrisx,melvins,775577,sam2000,scrappy1,rachid,grizzley,margare,morgan01,winstons,gevorg,gonzal,crawdad,gfhfdjp,babilon,noneya,pussy11,barbell,easyride,c00li0,777771,311music,karla1,golions,19866891,peejay,leadfoot,hfvbkm,kr9z40sy,cobra123,isotwe,grizz,sallys,****you,aaa123a,dembel,foxs14,hillcres,webman,mudshark,alfredo1,weeded,lester1,hovepark,ratface,000777fffa,huskie,wildthing,elbarto,waikiki,masami,call911,goose2,regin,dovajb,agricola,cjytxrj,andy11,penny123,family01,a121212,1braves,upupa68,happy100,824655,cjlove,firsttim,kalel,redhair,dfhtymt,sliders,bananna,loverbo,fifa2008,crouton,chevy350,panties2,kolya1,alyona,hagrid,spagetti,q2w3e4r,867530,narkoman,nhfdvfnjkju123,1ccccccc,napolean,0072563,allay,w8sted,wigwam,jamesk,state1,parovoz,beach69,kevinb,rossella,logitech1,celula,gnocca,canucks1,loginova,marlboro1,aaaa1,kalleanka,mester,mishutka,milenko,alibek,jersey1,peterc,1mouse,nedved,blackone,ghfplybr,682regkh,beejay,newburgh,ruffian,clarets,noreaga,xenophon,hummerh2,tenshi,smeagol,soloyo,vfhnby,ereiamjh,ewq321,goomie,sportin,cellphone,sonnie,jetblack,saudan,gblfhfc,matheus,uhfvjnf,alicja,jayman1,devon1,hexagon,bailey2,vtufajy,yankees7,salty1,908070,killemal,gammas,eurocard,sydney12,tuesday1,antietam,wayfarer,beast666,19952009sa,aq12ws,eveli,hockey21,haloreach,dontcare,xxxx1,andrea11,karlmarx,jelszo,tylerb,protools,timberwolf,ruffneck,pololo,1bbbbb,waleed,sasami,twinss,fairlady,illuminati,alex007,sucks1,homerjay,scooter7,tarbaby,barmaley,amistad,vanes,randers,tigers12,dreamer2,goleafsg,googie,bernie1,as12345,godeep,james3,phanto,gwbush,cumlover,2196dc,studioworks,995511,golf56,titova,kaleka,itali,socks1,kurwamac,daisuke,hevonen,woody123,daisie,wouter,henry123,gostosa,guppie,porpoise,iamsexy,276115,paula123,1020315,38gjgeuftd,rjrfrjkf,knotty,idiot1,sasha12345,matrix13,securit,radical1,ag764ks,jsmith,coolguy1,secretar,juanas,sasha1988,itout,00000001,tiger11,1butthea,putain,cavalo,basia1,kobebryant,1232323,12345asdfg,sunsh1ne,cyfqgth,tomkat,dorota,dashit,pelmen,5t6y7u,whipit,smokeone,helloall,bonjour1,snowshoe,nilknarf,x1x2x3,lammas,1234599,lol123456,atombomb,ironchef,noclue,alekseev,gwbush1,silver2,12345678m,yesican,fahjlbnf,chapstic,alex95,open1,tiger200,lisichka,pogiako,cbr929,searchin,tanya123,alex1973,phil413,alex1991,dominati,geckos,freddi,silenthill,egroeg,vorobey,antoxa,dark666,shkola,apple22,rebellio,shamanking,7f8srt,cumsucker,partagas,bill99,22223333,arnster55,fucknuts,proxima,silversi,goblues,parcells,vfrcbvjdf,piloto,avocet,emily2,1597530,miniskir,himitsu,pepper2,juiceman,venom1,bogdana,jujube,quatro,botafogo,mama2010,junior12,derrickh,asdfrewq,miller2,chitarra,silverfox,napol,prestigio,devil123,mm111qm,ara123,max33484,sex2000,primo1,sephan,anyuta,alena2010,viborg,verysexy,hibiscus,terps,josefin,oxcart,spooker,speciali,raffaello,partyon,vfhvtkflrf,strela,a123456z,worksuck,glasss,lomonosov,dusty123,dukeblue,1winter,sergeeva,lala123,john22,cmc09,sobolev,bettylou,dannyb,gjkrjdybr,hagakure,iecnhbr,awsedr,pmdmsctsk,costco,alekseeva,fktrcttd,bazuka,flyingv,garuda,buffy16,gutierre,beer12,stomatolog,ernies,palmeiras,golf123,love269,n.kmgfy,gjkysqgbpltw,youare,joeboo,baksik,lifeguar,111a111,nascar8,mindgame,dude1,neopets,frdfkfyu,june24,phoenix8,penelopa,merlin99,mercenar,badluck,mishel,bookert,deadsexy,power9,chinchil,1234567m,alex10,skunk1,rfhkcjy,sammycat,wright1,randy2,marakesh,temppassword,elmer251,mooki,patrick0,bonoedge,1tits,chiar,kylie1,graffix,milkman1,cornel,mrkitty,nicole12,ticketmaster,beatles4,number20,ffff1,terps1,superfre,yfdbufnjh,jake1234,flblfc,1111qq,zanuda,jmol01,wpoolejr,polopol,nicolett,omega13,cannonba,123456789.,sandy69,ribeye,bo243ns,marilena,bogdan123,milla,redskins1,19733791,alias1,movie1,ducat,marzena,shadowru,56565,coolman1,pornlover,teepee,spiff,nafanya,gateway3,fuckyou0,hasher,34778,booboo69,staticx,hang10,qq12345,garnier,bosco123,1234567qw,carson1,samso,1xrg4kcq,cbr929rr,allan123,motorbik,andrew22,pussy101,miroslava,cytujdbr,camp0017,cobweb,snusmumrik,salmon1,cindy2,aliya,serendipity,co437at,tincouch,timmy123,hunter22,st1100,vvvvvv1,blanka,krondor,sweeti,nenit,kuzmich,gustavo1,bmw320i,alex2010,trees1,kyliem,essayons,april26,kumari,sprin,fajita,appletre,fghbjhb,1green,katieb,steven2,corrado1,satelite,1michell,123456789c,cfkfvfylhf,acurarsx,slut543,inhere,bob2000,pouncer,k123456789,fishie,aliso,audia8,bluetick,soccer69,jordan99,fromhell,mammoth1,fighting54,mike25,pepper11,extra1,worldwid,chaise,vfr800,sordfish,almat,nofate,listopad,hellgate,dctvghbdf,jeremia,qantas,lokiju,honker,sprint1,maral,triniti,compaq3,sixsix6,married1,loveman,juggalo1,repvtyrj,zxcasdqw,123445,whore1,123678,monkey6,west123,warcraf,pwnage,mystery1,creamyou,ant123,rehjgfnrf,corona1,coleman1,steve121,alderaan,barnaul,celeste1,junebug1,bombshel,gretzky9,tankist,targa,cachou,vaz2101,playgolf,boneyard,strateg,romawka,iforgotit,pullup,garbage1,irock,archmage,shaft1,oceano,sadies,alvin1,135135ab,psalm69,lmfao,ranger02,zaharova,33334444,perkman,realman,salguod,cmoney,astonmartin,glock1,greyfox,viper99,helpm,blackdick,46775575,family5,shazbot,dewey1,qwertyas,shivani,black22,mailman1,greenday1,57392632,red007,stanky,sanchez1,tysons,daruma,altosax,krayzie,85852008,1forever,98798798,irock.,123456654,142536789,ford22,brick1,michela,preciou,crazy4u,01telemike01,nolife,concac,safety1,annie123,brunswic,destini,123456qwer,madison0,snowball1,137946,1133557799,jarule,scout2,songohan,thedead,00009999,murphy01,spycam,hirsute,aurinko,associat,1miller,baklan,hermes1,2183rm,martie,kangoo,shweta,yvonne1,westsid,jackpot1,rotciv,maratik,fabrika,claude1,nursultan,noentry,ytnhjufnm,electra1,ghjcnjnfr1,puneet,smokey01,integrit,bugeye,trouble2,14071789,paul01,omgwtf,dmh415,ekilpool,yourmom1,moimeme,sparky11,boludo,ruslan123,kissme1,demetrio,appelsin,asshole3,raiders2,bunns,fynjybj,billygoa,p030710p$e4o,macdonal,248ujnfk,acorns,schmidt1,sparrow1,vinbylrj,weasle,jerom,ycwvrxxh,skywalk,gerlinde,solidus,postal1,poochie1,1charles,rhianna,terorist,rehnrf,omgwtfbbq,assfucke,deadend,zidan,jimboy,vengence,maroon5,7452tr,dalejr88,sombra,anatole,elodi,amazonas,147789,q12345q,gawker1,juanma,kassidy,greek1,bruces,bilbob,mike44,0o9i8u7y6t,kaligula,agentx,familie,anders1,pimpjuice,0128um,birthday10,lawncare,hownow,grandorgue,juggerna,scarfac,kensai,swatteam,123four,motorbike,repytxbr,other1,celicagt,pleomax,gen0303,godisgreat,icepick,lucifer666,heavy1,tea4two,forsure,02020,shortdog,webhead,chris13,palenque,3techsrl,knights1,orenburg,prong,nomarg,wutang1,80637852730,laika,iamfree,12345670,pillow1,12343412,bigears,peterg,stunna,rocky5,12123434,damir,feuerwehr,7418529630,danone,yanina,valenci,andy69,111222q,silvia1,1jjjjj,loveforever,passwo1,stratocaster,8928190a,motorolla,lateralu,ujujkm,chubba,ujkjdf,signon,123456789zx,serdce,stevo,wifey200,ololo123,popeye1,1pass,central1,melena,luxor,nemezida,poker123,ilovemusic,qaz1234,noodles1,lakeshow,amarill,ginseng,billiam,trento,321cba,fatback,soccer33,master13,marie2,newcar,bigtop,dark1,camron,nosgoth,155555,biglou,redbud,jordan7,159789,diversio,actros,dazed,drizzit,hjcnjd,wiktoria,justic,gooses,luzifer,darren1,chynna,tanuki,11335577,icculus,boobss,biggi,firstson,ceisi123,gatewa,hrothgar,jarhead1,happyjoy,felipe1,bebop1,medman,athena1,boneman,keiths,djljgfl,dicklick,russ120,mylady,zxcdsa,rock12,bluesea,kayaks,provista,luckies,smile4me,bootycal,enduro,123123f,heartbre,ern3sto,apple13,bigpappa,fy.njxrf,bigtom,cool69,perrito,quiet1,puszek,cious,cruella,temp1,david26,alemap,aa123123,teddies,tricolor,smokey12,kikiriki,mickey01,robert01,super5,ranman,stevenso,deliciou,money777,degauss,mozar,susanne1,asdasd12,shitbag,mommy123,wrestle1,imfree,fuckyou12,barbaris,florent,ujhijr,f8yruxoj,tefjps,anemone,toltec,2gether,left4dead2,ximen,gfkmvf,dunca,emilys,diana123,16473a,mark01,bigbro,annarbor,nikita2000,11aa11,tigres,llllll1,loser2,fbi11213,jupite,qwaszxqw,macabre,123ert,rev2000,mooooo,klapaucius,bagel1,chiquit,iyaoyas,bear101,irocz28,vfktymrfz,smokey2,love99,rfhnbyf,dracul,keith123,slicko,peacock1,orgasmic,thesnake,solder,wetass,doofer,david5,rhfcyjlfh,swanny,tammys,turkiye,tubaman,estefani,firehose,funnyguy,servo,grace17,pippa1,arbiter,jimmy69,nfymrf,asdf67nm,rjcnzy,demon123,thicknes,sexysex,kristall,michail,encarta,banderos,minty,marchenko,de1987ma,mo5kva,aircav,naomi1,bonni,tatoo,cronaldo,49ers1,mama1963,1truck,telecaster,punksnotdead,erotik,1eagles,1fender,luv269,acdeehan,tanner1,freema,1q3e5t7u,linksys,tiger6,megaman1,neophyte,australia1,mydaddy,1jeffrey,fgdfgdfg,gfgekz,1986irachka,keyman,m0b1l3,dfcz123,mikeyg,playstation2,abc125,slacker1,110491g,lordsoth,bhavani,ssecca,dctvghbdtn,niblick,hondacar,baby01,worldcom,4034407,51094didi,3657549,3630000,3578951,sweetpussy,majick,supercoo,robert11,abacabb,panda123,gfhjkm13,ford4x4,zippo1,lapin,1726354,lovesong,dude11,moebius,paravoz,1357642,matkhau,solnyshko,daniel4,multiplelog,starik,martusia,iamtheman,greentre,jetblue,motorrad,vfrcbvev,redoak,dogma1,gnorman,komlos,tonka1,1010220,666satan,losenord,lateralus,absinthe,command1,jigga1,iiiiiii1,pants1,jungfrau,926337,ufhhbgjnnth,yamakasi,888555,sunny7,gemini69,alone1,zxcvbnmz,cabezon,skyblues,zxc1234,456123a,zero00,caseih,azzurra,legolas1,menudo,murcielago,785612,779977,benidorm,viperman,dima1985,piglet1,hemligt,hotfeet,7elephants,hardup,gamess,a000000,267ksyjf,kaitlynn,sharkie,sisyphus,yellow22,667766,redvette,666420,mets69,ac2zxdty,hxxrvwcy,cdavis,alan1,noddy,579300,druss,eatshit1,555123,appleseed,simpleplan,kazak,526282,fynfyfyfhbde,birthday6,dragon6,1pookie,bluedevils,omg123,hj8z6e,x5dxwp,455445,batman23,termin,chrisbrown,animals1,lucky9,443322,kzktxrf,takayuki,fermer,assembler,zomu9q,sissyboy,sergant,felina,nokia6230i,eminem12,croco,hunt4red,festina,darknigh,cptnz062,ndshnx4s,twizzler,wnmaz7sd,aamaax,gfhfcjkmrf,alabama123,barrynov,happy5,punt0it,durandal,8xuuobe4,cmu9ggzh,bruno12,316497,crazyfrog,vfvfktyf,apple3,kasey1,mackdaddy,anthon1,sunnys,angel3,cribbage,moon1,donal,bryce1,pandabear,mwss474,whitesta,freaker,197100,bitche,p2ssw0rd,turnb,tiktonik,moonlite,ferret1,jackas,ferrum,bearclaw,liberty2,1diablo,caribe,snakeeyes,janbam,azonic,rainmaker,vetalik,bigeasy,baby1234,sureno13,blink1,kluivert,calbears,lavanda,198600,dhtlbyf,medvedeva,fox123,whirling,bonscott,freedom9,october3,manoman,segredo,cerulean,robinso,bsmith,flatus,dannon,password21,rrrrrr1,callista,romai,rainman1,trantor,mickeymo,bulldog7,g123456,pavlin,pass22,snowie,hookah,7ofnine,bubba22,cabible,nicerack,moomoo1,summer98,yoyo123,milan1,lieve27,mustang69,jackster,exocet,nadege,qaz12,bahama,watson1,libras,eclipse2,bahram,bapezm,up9x8rww,ghjcnjz,themaste,deflep27,ghost16,gattaca,fotograf,junior123,gilber,gbjyth,8vjzus,rosco1,begonia,aldebara,flower12,novastar,buzzman,manchild,lopez1,mama11,william7,yfcnz1,blackstar,spurs123,moom4242,1amber,iownyou,tightend,07931505,paquito,1johnson,smokepot,pi31415,snowmass,ayacdc,jessicam,giuliana,5tgbnhy6,harlee,giuli,bigwig,tentacle,scoubidou2,benelli,vasilina,nimda,284655,jaihind,lero4ka,1tommy,reggi,ididit,jlbyjxtcndj,mike26,qbert,wweraw,lukasz,loosee123,palantir,flint1,mapper,baldie,saturne,virgin1,meeeee,elkcit,iloveme2,blue15,themoon,radmir,number3,shyanne,missle,hannelor,jasmina,karin1,lewie622,ghjcnjqgfhjkm,blasters,oiseau,sheela,grinders,panget,rapido,positiv,twink,fltkbyf,kzsfj874,daniel01,enjoyit,nofags,doodad,rustler,squealer,fortunat,peace123,khushi,devils2,7inches,candlebo,topdawg,armen,soundman,zxcqweasd,april7,gazeta,netman,hoppers,bear99,ghbjhbntn,mantle7,bigbo,harpo,jgordon,bullshi,vinny1,krishn,star22,thunderc,galinka,phish123,tintable,nightcrawler,tigerboy,rbhgbx,messi,basilisk,masha1998,nina123,yomamma,kayla123,geemoney,0000000000d,motoman,a3jtni,ser123,owen10,italien,vintelok,12345rewq,nightime,jeepin,ch1tt1ck,mxyzptlk,bandido,ohboy,doctorj,hussar,superted,parfilev,grundle,1jack,livestrong,chrisj,matthew3,access22,moikka,fatone,miguelit,trivium,glenn1,smooches,heiko,dezember,spaghett,stason,molokai,bossdog,guitarma,waderh,boriska,photosho,path13,hfrtnf,audre,junior24,monkey24,silke,vaz21093,bigblue1,trident1,candide,arcanum,klinker,orange99,bengals1,rosebu,mjujuj,nallepuh,mtwapa1a,ranger69,level1,bissjop,leica,1tiffany,rutabega,elvis77,kellie1,sameas,barada,karabas,frank12,queenb,toutoune,surfcity,samanth1,monitor1,littledo,kazakova,fodase,mistral1,april22,carlit,shakal,batman123,fuckoff2,alpha01,5544332211,buddy3,towtruck,kenwood1,vfiekmrf,jkl123,pypsik,ranger75,sitges,toyman,bartek1,ladygirl,booman,boeing77,installsqlst,222666,gosling,bigmack,223311,bogos,kevin2,gomez1,xohzi3g4,kfnju842,klubnika,cubalibr,123456789101,kenpo,0147852369,raptor1,tallulah,boobys,jjones,1q2s3c,moogie,vid2600,almas,wombat1,extra300,xfiles1,green77,sexsex1,heyjude,sammyy,missy123,maiyeuem,nccpl25282,thicluv,sissie,raven3,fldjrfn,buster22,broncos2,laurab,letmein4,harrydog,solovey,fishlips,asdf4321,ford123,superjet,norwegen,movieman,psw333333,intoit,postbank,deepwate,ola123,geolog323,murphys,eshort,a3eilm2s2y,kimota,belous,saurus,123321qaz,i81b4u,aaa12,monkey20,buckwild,byabybnb,mapleleafs,yfcnzyfcnz,baby69,summer03,twista,246890,246824,ltcnhjth,z1z2z3,monika1,sad123,uto29321,bathory,villan,funkey,poptarts,spam967888,705499fh,sebast,porn1234,earn381,1porsche,whatthef,123456789y,polo12,brillo,soreilly,waters1,eudora,allochka,is_a_bot,winter00,bassplay,531879fiz,onemore,bjarne,red911,kot123,artur1,qazxdr,c0rvette,diamond7,matematica,klesko,beaver12,2enter,seashell,panam,chaching,edward2,browni,xenogear,cornfed,aniram,chicco22,darwin1,ancella2,sophie2,vika1998,anneli,shawn41,babie,resolute,pandora2,william8,twoone,coors1,jesusis1,teh012,cheerlea,renfield,tessa1,anna1986,madness1,bkmlfh,19719870,liebherr,ck6znp42,gary123,123654z,alsscan,eyedoc,matrix7,metalgea,chinito,4iter,falcon11,7jokx7b9du,bigfeet,tassadar,retnuh,muscle1,klimova,darion,batistuta,bigsur,1herbier,noonie,ghjrehjh,karimova,faustus,snowwhite,1manager,dasboot,michael12,analfuck,inbed,dwdrums,jaysoncj,maranell,bsheep75,164379,rolodex,166666,rrrrrrr1,almaz666,167943,russel1,negrito,alianz,goodpussy,veronik,1w2q3r4e,efremov,emb377,sdpass,william6,alanfahy,nastya1995,panther5,automag,123qwe12,vfvf2011,fishe,1peanut,speedie,qazwsx1234,pass999,171204j,ketamine,sheena1,energizer,usethis1,123abc123,buster21,thechamp,flvbhfk,frank69,chane,hopeful1,claybird,pander,anusha,bigmaxxx,faktor,housebed,dimidrol,bigball,shashi,derby1,fredy,dervish,bootycall,80988218126,killerb,cheese2,pariss,mymail,dell123,catbert,christa1,chevytru,gjgjdf,00998877,overdriv,ratten,golf01,nyyanks,dinamite,bloembol,gismo,magnus1,march2,twinkles,ryan22,duckey,118a105b,kitcat,brielle,poussin,lanzarot,youngone,ssvegeta,hero63,battle1,kiler,fktrcfylh1,newera,vika1996,dynomite,oooppp,beer4me,foodie,ljhjuf,sonshine,godess,doug1,constanc,thinkbig,steve2,damnyou,autogod,www333,kyle1,ranger7,roller1,harry2,dustin1,hopalong,tkachuk,b00bies,bill2,deep111,stuffit,fire69,redfish1,andrei123,graphix,1fishing,kimbo1,mlesp31,ifufkbyf,gurkan,44556,emily123,busman,and123,8546404,paladine,1world,bulgakov,4294967296,bball23,1wwwww,mycats,elain,delta6,36363,emilyb,color1,6060842,cdtnkfyrf,hedonism,gfgfrfhkj,5551298,scubad,gostate,sillyme,hdbiker,beardown,fishers,sektor,00000007,newbaby,rapid1,braves95,gator2,nigge,anthony3,sammmy,oou812,heffer,phishin,roxanne1,yourass,hornet1,albator,2521659,underwat,tanusha,dianas,3f3fpht7op,dragon20,bilbobag,cheroke,radiatio,dwarf1,majik,33st33,dochka,garibald,robinh,sham69,temp01,wakeboar,violet1,1w2w3w,registr,tonite,maranello,1593570,parolamea,galatasara,loranthos,1472583,asmodean,1362840,scylla,doneit,jokerr,porkypig,kungen,mercator,koolhaas,come2me,debbie69,calbear,liverpoolfc,yankees4,12344321a,kennyb,madma,85200258,dustin23,thomas13,tooling,mikasa,mistic,crfnbyf,112233445,sofia1,heinz57,colts1,price1,snowey,joakim,mark11,963147,cnhfcnm,kzinti,1bbbbbbb,rubberdu,donthate,rupert1,sasha1992,regis1,nbuhbwf,fanboy,sundial,sooner1,wayout,vjnjhjkf,deskpro,arkangel,willie12,mikeyb,celtic1888,luis1,buddy01,duane1,grandma1,aolcom,weeman,172839456,basshead,hornball,magnu,pagedown,molly2,131517,rfvtgbyhn,astonmar,mistery,madalina,cash1,1happy,shenlong,matrix01,nazarova,369874125,800500,webguy,rse2540,ashley2,briank,789551,786110,chunli,j0nathan,greshnik,courtne,suckmyco,mjollnir,789632147,asdfg1234,754321,odelay,ranma12,zebedee,artem777,bmw318is,butt1,rambler1,yankees9,alabam,5w76rnqp,rosies,mafioso,studio1,babyruth,tranzit,magical123,gfhjkm135,12345$,soboleva,709394,ubique,drizzt1,elmers,teamster,pokemons,1472583690,1597532486,shockers,merckx,melanie2,ttocs,clarisse,earth1,dennys,slobber,flagman,farfalla,troika,4fa82hyx,hakan,x4ww5qdr,cumsuck,leather1,forum1,july20,barbel,zodiak,samuel12,ford01,rushfan,bugsy1,invest1,tumadre,screwme,a666666,money5,henry8,tiddles,sailaway,starburs,100years,killer01,comando,hiromi,ranetka,thordog,blackhole,palmeira,verboten,solidsna,q1w1e1,humme,kevinc,gbrfxe,gevaudan,hannah11,peter2,vangar,sharky7,talktome,jesse123,chuchi,pammy,!qazxsw2,siesta,twenty1,wetwilly,477041,natural1,sun123,daniel3,intersta,shithead1,hellyea,bonethugs,solitair,bubbles2,father1,nick01,444000,adidas12,dripik,cameron2,442200,a7nz8546,respublika,fkojn6gb,428054,snoppy,rulez1,haslo,rachael1,purple01,zldej102,ab12cd34,cytuehjxrf,madhu,astroman,preteen,handsoff,mrblonde,biggio,testin,vfdhif,twolves,unclesam,asmara,kpydskcw,lg2wmgvr,grolsch,biarritz,feather1,williamm,s62i93,bone1,penske,337733,336633,taurus1,334433,billet,diamondd,333000,nukem,fishhook,godogs,thehun,lena1982,blue00,smelly1,unb4g9ty,65pjv22,applegat,mikehunt,giancarlo,krillin,felix123,december1,soapy,46doris,nicole23,bigsexy1,justin10,pingu,bambou,falcon12,dgthtl,1surfer,qwerty01,estrellit,nfqcjy,easygo,konica,qazqwe,1234567890m,stingers,nonrev,3e4r5t,champio,bbbbbb99,196400,allen123,seppel,simba2,rockme,zebra3,tekken3,endgame,sandy2,197300,fitte,monkey00,eldritch,littleone,rfyfgkz,1member,66chevy,oohrah,cormac,hpmrbm41,197600,grayfox,elvis69,celebrit,maxwell7,rodders,krist,1camaro,broken1,kendall1,silkcut,katenka,angrick,maruni,17071994a,tktyf,kruemel,snuffles,iro4ka,baby12,alexis01,marryme,vlad1994,forward1,culero,badaboom,malvin,hardtoon,hatelove,molley,knopo4ka,duchess1,mensuck,cba321,kickbutt,zastava,wayner,fuckyou6,eddie123,cjkysir,john33,dragonfi,cody1,jabell,cjhjrf,badseed,sweden1,marihuana,brownlov,elland,nike1234,kwiettie,jonnyboy,togepi,billyk,robert123,bb334,florenci,ssgoku,198910,bristol1,bob007,allister,yjdujhjl,gauloise,198920,bellaboo,9lives,aguilas,wltfg4ta,foxyroxy,rocket69,fifty50,babalu,master21,malinois,kaluga,gogosox,obsessio,yeahrigh,panthers1,capstan,liza2000,leigh1,paintball1,blueskie,cbr600f3,bagdad,jose98,mandreki,shark01,wonderbo,muledeer,xsvnd4b2,hangten,200001,grenden,anaell,apa195,model1,245lufpq,zip100,ghjcgtrn,wert1234,misty2,charro,juanjose,fkbcrf,frostbit,badminto,buddyy,1doctor,vanya,archibal,parviz,spunky1,footboy,dm6tzsgp,legola,samadhi,poopee,ytdxz2ca,hallowboy,dposton,gautie,theworm,guilherme,dopehead,iluvtits,bobbob1,ranger6,worldwar,lowkey,chewbaca,oooooo99,ducttape,dedalus,celular,8i9o0p,borisenko,taylor01,111111z,arlingto,p3nnywiz,rdgpl3ds,boobless,kcmfwesg,blacksab,mother2,markus1,leachim,secret2,s123456789,1derful,espero,russell2,tazzer,marykate,freakme,mollyb,lindros8,james00,gofaster,stokrotka,kilbosik,aquamann,pawel1,shedevil,mousie,slot2009,october6,146969,mm259up,brewcrew,choucho,uliana,sexfiend,fktirf,pantss,vladimi,starz,sheeps,12341234q,bigun,tiggers,crjhjcnm,libtech,pudge1,home12,zircon,klaus1,jerry2,pink1,lingus,monkey66,dumass,polopolo09,feuerweh,rjyatnf,chessy,beefer,shamen,poohbear1,4jjcho,bennevis,fatgirls,ujnbrf,cdexswzaq,9noize9,rich123,nomoney,racecar1,hacke,clahay,acuario,getsum,hondacrv,william0,cheyenn,techdeck,atljhjdf,wtcacq,suger,fallenangel,bammer,tranquil,carla123,relayer,lespaul1,portvale,idontno,bycnbnen,trooper2,gennadiy,pompon,billbob,amazonka,akitas,chinatow,atkbrc,busters,fitness1,cateye,selfok2013,1murphy,fullhous,mucker,bajskorv,nectarin,littlebitch,love24,feyenoor,bigal37,lambo1,pussybitch,icecube1,biged,kyocera,ltybcjdf,boodle,theking1,gotrice,sunset1,abm1224,fromme,sexsells,inheat,kenya1,swinger1,aphrodit,kurtcobain,rhind101,poidog,poiulkjh,kuzmina,beantown,tony88,stuttgar,drumer,joaqui,messenge,motorman,amber2,nicegirl,rachel69,andreia,faith123,studmuffin,jaiden,red111,vtkmybr,gamecocks,gumper,bosshogg,4me2know,tokyo1,kleaner,roadhog,fuckmeno,phoenix3,seeme,buttnutt,boner69,andreyka,myheart,katerin,rugburn,jvtuepip,dc3ubn,chile1,ashley69,happy99,swissair,balls2,fylhttdf,jimboo,55555d,mickey11,voronin,m7hsqstm,stufff,merete,weihnachte,dowjones,baloo1,freeones,bears34,auburn1,beverl,timberland,1elvis,guinness1,bombadil,flatron1,logging7,telefoon,merl1n,masha1,andrei1,cowabung,yousuck1,1matrix,peopl,asd123qwe,sweett,mirror1,torrente,joker12,diamond6,jackaroo,00000a,millerlite,ironhorse,2twins,stryke,gggg1,zzzxxxccc,roosevel,8363eddy,angel21,depeche1,d0ct0r,blue14,areyou,veloce,grendal,frederiksberg,cbcntvf,cb207sl,sasha2000,was.here,fritzz,rosedale,spinoza,cokeisit,gandalf3,skidmark,ashley01,12345j,1234567890qaz,sexxxxxx,beagles,lennart,12345789,pass10,politic,max007,gcheckou,12345611,tiffy,lightman,mushin,velosiped,brucewayne,gauthie,elena123,greenegg,h2oski,clocker,nitemare,123321s,megiddo,cassidy1,david13,boywonde,flori,peggy12,pgszt6md,batterie,redlands,scooter6,bckhere,trueno,bailey11,maxwell2,bandana,timoth1,startnow,ducati74,tiern,maxine1,blackmetal,suzyq,balla007,phatfarm,kirsten1,titmouse,benhogan,culito,forbin,chess1,warren1,panman,mickey7,24lover,dascha,speed2,redlion,andrew10,johnwayn,nike23,chacha1,bendog,bullyboy,goldtree,spookie,tigger99,1cookie,poutine,cyclone1,woodpony,camaleun,bluesky1,dfadan,eagles20,lovergirl,peepshow,mine1,dima1989,rjdfkmxer,11111aaaaa,machina,august17,1hhhhh,0773417k,1monster,freaksho,jazzmin,davidw,kurupt,chumly,huggies,sashenka,ccccccc1,bridge1,giggalo,cincinna,pistol1,hello22,david77,lightfoo,lucky6,jimmy12,261397,lisa12,tabaluga,mysite,belo4ka,greenn,eagle99,punkrawk,salvado,slick123,wichsen,knight99,dummys,fefolico,contrera,kalle1,anna1984,delray,robert99,garena,pretende,racefan,alons,serenada,ludmilla,cnhtkjr,l0swf9gx,hankster,dfktynbyrf,sheep1,john23,cv141ab,kalyani,944turbo,crystal2,blackfly,zrjdktdf,eus1sue1,mario5,riverplate,harddriv,melissa3,elliott1,sexybitc,cnhfyybr,jimdavis,bollix,beta1,amberlee,skywalk1,natala,1blood,brattax,shitty1,gb15kv99,ronjon,rothmans,thedoc,joey21,hotboi,firedawg,bimbo38,jibber,aftermat,nomar,01478963,phishing,domodo,anna13,materia,martha1,budman1,gunblade,exclusiv,sasha1997,anastas,rebecca2,fackyou,kallisti,fuckmyass,norseman,ipswich1,151500,1edward,intelinside,darcy1,bcrich,yjdjcnbf,failte,buzzzz,cream1,tatiana1,7eleven,green8,153351,1a2s3d4f5g6h,154263,milano1,bambi1,bruins77,rugby2,jamal1,bolita,sundaypunch,bubba12,realmadr,vfyxtcnth,iwojima,notlob,black666,valkiria,nexus1,millerti,birthday100,swiss1,appollo,gefest,greeneyes,celebrat,tigerr,slava123,izumrud,bubbabub,legoman,joesmith,katya123,sweetdream,john44,wwwwwww1,oooooo1,socal,lovespor,s5r8ed67s,258147,heidis,cowboy22,wachovia,michaelb,qwe1234567,i12345,255225,goldie1,alfa155,45colt,safeu851,antonova,longtong,1sparky,gfvznm,busen,hjlbjy,whateva,rocky4,cokeman,joshua3,kekskek1,sirocco,jagman,123456qwert,phinupi,thomas10,loller,sakur,vika2011,fullred,mariska,azucar,ncstate,glenn74,halima,aleshka,ilovemylife,verlaat,baggie,scoubidou6,phatboy,jbruton,scoop1,barney11,blindman,def456,maximus2,master55,nestea,11223355,diego123,sexpistols,sniffy,philip1,f12345,prisonbreak,nokia2700,ajnjuhfa,yankees3,colfax,ak470000,mtnman,bdfyeirf,fotball,ichbin,trebla,ilusha,riobravo,beaner1,thoradin,polkaudi,kurosawa,honda123,ladybu,valerik,poltava,saviola,fuckyouguys,754740g0,anallove,microlab1,juris01,ncc1864,garfild,shania1,qagsud,makarenko,cindy69,lebedev,andrew11,johnnybo,groovy1,booster1,sanders1,tommyb,johnson4,kd189nlcih,hondaman,vlasova,chick1,sokada,sevisgur,bear2327,chacho,sexmania,roma1993,hjcnbckfd,valley1,howdie,tuppence,jimandanne,strike3,y4kuz4,nhfnfnf,tsubasa,19955991,scabby,quincunx,dima1998,uuuuuu1,logica,skinner1,pinguino,lisa1234,xpressmusic,getfucked,qqqq1,bbbb1,matulino,ulyana,upsman,johnsmith,123579,co2000,spanner1,todiefor,mangoes,isabel1,123852,negra,snowdon,nikki123,bronx1,booom,ram2500,chuck123,fireboy,creek1,batman13,princesse,az12345,maksat,1knight,28infern,241455,r7112s,muselman,mets1986,katydid,vlad777,playme,kmfdm1,asssex,1prince,iop890,bigbroth,mollymoo,waitron,lizottes,125412,juggler,quinta,0sister0,zanardi,nata123,heckfyxbr,22q04w90e,engine2,nikita95,zamira,hammer22,lutscher,carolina1,zz6319,sanman,vfuflfy,buster99,rossco,kourniko,aggarwal,tattoo1,janice1,finger1,125521,19911992,shdwlnds,rudenko,vfvfgfgf123,galatea,monkeybu,juhani,premiumcash,classact,devilmay,helpme2,knuddel,hardpack,ramil,perrit,basil1,zombie13,stockcar,tos8217,honeypie,nowayman,alphadog,melon1,talula,125689,tiribon12,tornike,haribol,telefone,tiger22,sucka,lfytxrf,chicken123,muggins,a23456,b1234567,lytdybr,otter1,pippa,vasilisk,cooking1,helter,78978,bestboy,viper7,ahmed1,whitewol,mommys,apple5,shazam1,chelsea7,kumiko,masterma,rallye,bushmast,jkz123,entrar,andrew6,nathan01,alaric,tavasz,heimdall,gravy1,jimmy99,cthlwt,powerr,gthtrhtcnjr,canesfan,sasha11,ybrbnf_25,august9,brucie,artichok,arnie1,superdude,tarelka,mickey22,dooper,luners,holeshot,good123,gettysbu,bicho,hammer99,divine5,1zxcvbn,stronzo,q22222,disne,bmw750il,godhead,hallodu,aerith,nastik,differen,cestmoi,amber69,5string,pornosta,dirtygirl,ginger123,formel1,scott12,honda200,hotspurs,johnatha,firstone123,lexmark1,msconfig,karlmasc,l123456,123qweasdzx,baldman,sungod,furka,retsub,9811020,ryder1,tcglyued,astron,lbvfcbr,minddoc,dirt49,baseball12,tbear,simpl,schuey,artimus,bikman,plat1num,quantex,gotyou,hailey1,justin01,ellada,8481068,000002,manimal,dthjybxrf,buck123,dick123,6969696,nospam,strong1,kodeord,bama12,123321w,superman123,gladiolus,nintend,5792076,dreamgirl,spankme1,gautam,arianna1,titti,tetas,cool1234,belladog,importan,4206969,87e5nclizry,teufelo7,doller,yfl.irf,quaresma,3440172,melis,bradle,nnmaster,fast1,iverso,blargh,lucas12,chrisg,iamsam,123321az,tomjerry,kawika,2597174,standrew,billyg,muskan,gizmodo2,rz93qpmq,870621345,sathya,qmezrxg4,januari,marthe,moom4261,cum2me,hkger286,lou1988,suckit1,croaker,klaudia1,753951456,aidan1,fsunoles,romanenko,abbydog,isthebes,akshay,corgi,fuck666,walkman555,ranger98,scorpian,hardwareid,bluedragon,fastman,2305822q,iddqdiddqd,1597532,gopokes,zvfrfcb,w1234567,sputnik1,tr1993,pa$$w0rd,2i5fdruv,havvoc,1357913,1313131,bnm123,cowd00d,flexscan,thesims2,boogiema,bigsexxy,powerstr,ngc4565,joshman,babyboy1,123jlb,funfunfu,qwe456,honor1,puttana,bobbyj,daniel21,pussy12,shmuck,1232580,123578951,maxthedo,hithere1,bond0007,gehenna,nomames,blueone,r1234567,bwana,gatinho,1011111,torrents,cinta,123451234,tiger25,money69,edibey,pointman,mmcm19,wales1,caffreys,phaedra,bloodlus,321ret32,rufuss,tarbit,joanna1,102030405,stickboy,lotrfotr34,jamshid,mclarenf1,ataman,99ford,yarrak,logan2,ironlung,pushistik,dragoon1,unclebob,tigereye,pinokio,tylerj,mermaid1,stevie1,jaylen,888777,ramana,roman777,brandon7,17711771s,thiago,luigi1,edgar1,brucey,videogam,classi,birder,faramir,twiddle,cubalibre,grizzy,fucky,jjvwd4,august15,idinahui,ranita,nikita1998,123342,w1w2w3,78621323,4cancel,789963,(null,vassago,jaydog472,123452,timt42,canada99,123589,rebenok,htyfnf,785001,osipov,maks123,neverwinter,love2010,777222,67390436,eleanor1,bykemo,aquemini,frogg,roboto,thorny,shipmate,logcabin,66005918,nokian,gonzos,louisian,1abcdefg,triathlo,ilovemar,couger,letmeino,supera,runvs,fibonacci,muttly,58565254,5thgbqi,vfnehsv,electr,jose12,artemis1,newlove,thd1shr,hawkey,grigoryan,saisha,tosca,redder,lifesux,temple1,bunnyman,thekids,sabbeth,tarzan1,182838,158uefas,dell50,1super,666222,47ds8x,jackhamm,mineonly,rfnfhbyf,048ro,665259,kristina1,bombero,52545856,secure1,bigloser,peterk,alex2,51525354,anarchy1,superx,teenslut,money23,sigmapi,sanfrancisco,acme34,private5,eclips,qwerttrewq,axelle,kokain,hardguy,peter69,jesuschr,dyanna,dude69,sarah69,toyota91,amberr,45645645,bugmenot,bigted,44556677,556644,wwr8x9pu,alphaome,harley13,kolia123,wejrpfpu,revelati,nairda,sodoff,cityboy,pinkpussy,dkalis,miami305,wow12345,triplet,tannenbau,asdfasdf1,darkhors,527952,retired1,soxfan,nfyz123,37583867,goddes,515069,gxlmxbewym,1warrior,36925814,dmb2011,topten,karpova,89876065093rax,naturals,gateway9,cepseoun,turbot,493949,cock22,italia1,sasafras,gopnik,stalke,1qazxdr5,wm2006,ace1062,alieva,blue28,aracel,sandia,motoguzz,terri1,emmajane,conej,recoba,alex1995,jerkyboy,cowboy12,arenrone,precisio,31415927,scsa316,panzer1,studly1,powerhou,bensam,mashoutq,billee,eeyore1,reape,thebeatl,rul3z,montesa,doodle1,cvzefh1gk,424365,a159753,zimmerma,gumdrop,ashaman,grimreap,icandoit,borodina,branca,dima2009,keywest1,vaders,bubluk,diavolo,assss,goleta,eatass,napster1,382436,369741,5411pimo,lenchik,pikach,gilgamesh,kalimera,singer1,gordon2,rjycnbnewbz,maulwurf,joker13,2much4u,bond00,alice123,robotec,fuckgirl,zgjybz,redhorse,margaret1,brady1,pumpkin2,chinky,fourplay,1booger,roisin,1brandon,sandan,blackheart,cheez,blackfin,cntgfyjdf,mymoney1,09080706,goodboss,sebring1,rose1,kensingt,bigboner,marcus12,ym3cautj,struppi,thestone,lovebugs,stater,silver99,forest99,qazwsx12345,vasile,longboar,mkonji,huligan,rhfcbdfz,airmail,porn11,1ooooo,sofun,snake2,msouthwa,dougla,1iceman,shahrukh,sharona,dragon666,france98,196800,196820,ps253535,zjses9evpa,sniper01,design1,konfeta,jack99,drum66,good4you,station2,brucew,regedit,school12,mvtnr765,pub113,fantas,tiburon1,king99,ghjcnjgbpltw,checkito,308win,1ladybug,corneliu,svetasveta,197430,icicle,imaccess,ou81269,jjjdsl,brandon6,bimbo1,smokee,piccolo1,3611jcmg,children2,cookie2,conor1,darth1,margera,aoi856,paully,ou812345,sklave,eklhigcz,30624700,amazing1,wahooo,seau55,1beer,apples2,chulo,dolphin9,heather6,198206,198207,hergood,miracle1,njhyflj,4real,milka,silverfi,fabfive,spring12,ermine,mammy,jumpjet,adilbek,toscana,caustic,hotlove,sammy69,lolita1,byoung,whipme,barney01,mistys,tree1,buster3,kaylin,gfccgjhn,132333,aishiteru,pangaea,fathead1,smurph,198701,ryslan,gasto,xexeylhf,anisimov,chevyss,saskatoo,brandy12,tweaker,irish123,music2,denny1,palpatin,outlaw1,lovesuck,woman1,mrpibb,diadora,hfnfneq,poulette,harlock,mclaren1,cooper12,newpass3,bobby12,rfgecnfcerf,alskdjfh,mini14,dukers,raffael,199103,cleo123,1234567qwertyu,mossberg,scoopy,dctulf,starline,hjvjxrf,misfits1,rangers2,bilbos,blackhea,pappnase,atwork,purple2,daywalker,summoner,1jjjjjjj,swansong,chris10,laluna,12345qqq,charly1,lionsden,money99,silver33,hoghead,bdaddy,199430,saisg002,nosaints,tirpitz,1gggggg,jason13,kingss,ernest1,0cdh0v99ue,pkunzip,arowana,spiri,deskjet1,armine,lances,magic2,thetaxi,14159265,cacique,14142135,orange10,richard0,backdraf,255ooo,humtum,kohsamui,c43dae874d,wrestling1,cbhtym,sorento,megha,pepsiman,qweqwe12,bliss7,mario64,korolev,balls123,schlange,gordit,optiquest,fatdick,fish99,richy,nottoday,dianne1,armyof1,1234qwerasdfzxcv,bbonds,aekara,lidiya,baddog1,yellow5,funkie,ryan01,greentree,gcheckout,marshal1,liliput,000000z,rfhbyrf,gtogto43,rumpole,tarado,marcelit,aqwzsxedc,kenshin1,sassydog,system12,belly1,zilla,kissfan,tools1,desember,donsdad,nick11,scorpio6,poopoo1,toto99,steph123,dogfuck,rocket21,thx113,dude12,sanek,sommar,smacky,pimpsta,letmego,k1200rs,lytghjgtnhjdcr,abigale,buddog,deles,baseball9,roofus,carlsbad,hamzah,hereiam,genial,schoolgirlie,yfz450,breads,piesek,washear,chimay,apocalyp,nicole18,gfgf1234,gobulls,dnevnik,wonderwall,beer1234,1moose,beer69,maryann1,adpass,mike34,birdcage,hottuna,gigant,penquin,praveen,donna123,123lol123,thesame,fregat,adidas11,selrahc,pandoras,test3,chasmo,111222333000,pecos,daniel11,ingersol,shana1,mama12345,cessna15,myhero,1simpson,nazarenko,cognit,seattle2,irina1,azfpc310,rfycthdf,hardy1,jazmyn,sl1200,hotlanta,jason22,kumar123,sujatha,fsd9shtyu,highjump,changer,entertai,kolding,mrbig,sayuri,eagle21,qwertzu,jorge1,0101dd,bigdong,ou812a,sinatra1,htcnjhfy,oleg123,videoman,pbyfblf,tv612se,bigbird1,kenaidog,gunite,silverma,ardmore,123123qq,hotbot,cascada,cbr600f4,harakiri,chico123,boscos,aaron12,glasgow1,kmn5hc,lanfear,1light,liveoak,fizika,ybrjkftdyf,surfside,intermilan,multipas,redcard,72chevy,balata,coolio1,schroede,kanat,testerer,camion,kierra,hejmeddig,antonio2,tornados,isidor,pinkey,n8skfswa,ginny1,houndog,1bill,chris25,hastur,1marine,greatdan,french1,hatman,123qqq,z1z2z3z4,kicker1,katiedog,usopen,smith22,mrmagoo,1234512i,assa123,7seven7,monster7,june12,bpvtyf,149521,guenter,alex1985,voronina,mbkugegs,zaqwsxcderfv,rusty5,mystic1,master0,abcdef12,jndfkb,r4zpm3,cheesey,skripka,blackwhite,sharon69,dro8smwq,lektor,techman,boognish,deidara,heckfyf,quietkey,authcode,monkey4,jayboy,pinkerto,merengue,chulita,bushwick,turambar,kittykit,joseph2,dad123,kristo,pepote,scheiss,hambone1,bigballa,restaura,tequil,111luzer,euro2000,motox,denhaag,chelsi,flaco1,preeti,lillo,1001sin,passw,august24,beatoff,555555d,willis1,kissthis,qwertyz,rvgmw2gl,iloveboobies,timati,kimbo,msinfo,dewdrop,sdbaker,fcc5nky2,messiah1,catboy,small1,chode,beastie1,star77,hvidovre,short1,xavie,dagobah,alex1987,papageno,dakota2,toonami,fuerte,jesus33,lawina,souppp,dirtybir,chrish,naturist,channel1,peyote,flibble,gutentag,lactate,killem,zucchero,robinho,ditka,grumpy1,avr7000,boxxer,topcop,berry1,mypass1,beverly1,deuce1,9638527410,cthuttdf,kzkmrf,lovethem,band1t,cantona1,purple11,apples123,wonderwo,123a456,fuzzie,lucky99,dancer2,hoddling,rockcity,winner12,spooty,mansfiel,aimee1,287hf71h,rudiger,culebra,god123,agent86,daniel0,bunky1,notmine,9ball,goofus,puffy1,xyh28af4,kulikov,bankshot,vurdf5i2,kevinm,ercole,sexygirls,razvan,october7,goater,lollie,raissa,thefrog,mdmaiwa3,mascha,jesussaves,union1,anthony9,crossroa,brother2,areyuke,rodman91,toonsex,dopeman,gericom,vaz2115,cockgobbler,12356789,12345699,signatur,alexandra1,coolwhip,erwin1,awdrgyjilp,pens66,ghjrjgtyrj,linkinpark,emergenc,psych0,blood666,bootmort,wetworks,piroca,johnd,iamthe1,supermario,homer69,flameon,image1,bebert,fylhtq1,annapoli,apple11,hockey22,10048,indahouse,mykiss,1penguin,markp,misha123,foghat,march11,hank1,santorin,defcon4,tampico,vbnhjafy,robert22,bunkie,athlon64,sex777,nextdoor,koskesh,lolnoob,seemnemaailm,black23,march15,yeehaa,chiqui,teagan,siegheil,monday2,cornhusk,mamusia,chilis,sthgrtst,feldspar,scottm,pugdog,rfghjy,micmac,gtnhjdyf,terminato,1jackson,kakosja,bogomol,123321aa,rkbvtyrj,tresor,tigertig,fuckitall,vbkkbjy,caramon,zxc12,balin,dildo1,soccer09,avata,abby123,cheetah1,marquise,jennyc,hondavfr,tinti,anna1985,dennis2,jorel,mayflowe,icema,hal2000,nikkis,bigmouth,greenery,nurjan,leonov,liberty7,fafnir,larionov,sat321321,byteme1,nausicaa,hjvfynbrf,everto,zebra123,sergio1,titone,wisdom1,kahala,104328q,marcin1,salima,pcitra,1nnnnn,nalini,galvesto,neeraj,rick1,squeeky,agnes1,jitterbu,agshar,maria12,0112358,traxxas,stivone,prophet1,bananza,sommer1,canoneos,hotfun,redsox11,1bigmac,dctdjkjl,legion1,everclea,valenok,black9,danny001,roxie1,1theman,mudslide,july16,lechef,chula,glamis,emilka,canbeef,ioanna,cactus1,rockshox,im2cool,ninja9,thvfrjdf,june28,milo17,missyou,micky1,nbibyf,nokiaa,goldi,mattias,fuckthem,asdzxc123,ironfist,junior01,nesta,crazzy,killswit,hygge,zantac,kazama,melvin1,allston,maandag,hiccup,prototyp,specboot,dwl610,hello6,159456,baldhead,redwhite,calpoly,whitetail,agile1,cousteau,matt01,aust1n,malcolmx,gjlfhjr,semperf1,ferarri,a1b2c3d,vangelis,mkvdari,bettis36,andzia,comand,tazzman,morgaine,pepluv,anna1990,inandout,anetka,anna1997,wallpape,moonrake,huntress,hogtie,cameron7,sammy7,singe11,clownboy,newzeala,wilmar,safrane,rebeld,poopi,granat,hammertime,nermin,11251422,xyzzy1,bogeys,jkmxbr,fktrcfyl,11223311,nfyrbcn,11223300,powerpla,zoedog,ybrbnbyf,zaphod42,tarawa,jxfhjdfirf,dude1234,g5wks9,goobe,czekolada,blackros,amaranth,medical1,thereds,julija,nhecsyfujkjdt,promopas,buddy4,marmalad,weihnachten,tronic,letici,passthief,67mustan,ds7zamnw,morri,w8woord,cheops,pinarell,sonofsam,av473dv,sf161pn,5c92v5h6,purple13,tango123,plant1,1baby,xufrgemw,fitta,1rangers,spawns,kenned,taratata,19944991,11111118,coronas,4ebouux8,roadrash,corvette1,dfyjdf846,marley12,qwaszxerdfcv,68stang,67stang,racin,ellehcim,sofiko,nicetry,seabass1,jazzman1,zaqwsx1,laz2937,uuuuuuu1,vlad123,rafale,j1234567,223366,nnnnnn1,226622,junkfood,asilas,cer980,daddymac,persepho,neelam,00700,shithappens,255555,qwertyy,xbox36,19755791,qweasd1,bearcub,jerryb,a1b1c1,polkaudio,basketball1,456rty,1loveyou,marcus2,mama1961,palace1,transcend,shuriken,sudhakar,teenlove,anabelle,matrix99,pogoda,notme,bartend,jordana,nihaoma,ataris,littlegi,ferraris,redarmy,giallo,fastdraw,accountbloc,peludo,pornostar,pinoyako,cindee,glassjaw,dameon,johnnyd,finnland,saudade,losbravo,slonko,toplay,smalltit,nicksfun,stockhol,penpal,caraj,divedeep,cannibus,poppydog,pass88,viktory,walhalla,arisia,lucozade,goldenbo,tigers11,caball,ownage123,tonna,handy1,johny,capital5,faith2,stillher,brandan,pooky1,antananarivu,hotdick,1justin,lacrimos,goathead,bobrik,cgtwbfkbcn,maywood,kamilek,gbplf123,gulnar,beanhead,vfvjyn,shash,viper69,ttttttt1,hondacr,kanako,muffer,dukies,justin123,agapov58,mushka,bad11bad,muleman,jojo123,andreika,makeit,vanill,boomers,bigals,merlin11,quacker,aurelien,spartak1922,ligeti,diana2,lawnmowe,fortune1,awesom,rockyy,anna1994,oinker,love88,eastbay,ab55484,poker0,ozzy666,papasmurf,antihero,photogra,ktm250,painkill,jegr2d2,p3orion,canman,dextur,qwest123,samboy,yomismo,sierra01,herber,vfrcbvvfrcbv,gloria1,llama1,pie123,bobbyjoe,buzzkill,skidrow,grabber,phili,javier1,9379992q,geroin,oleg1994,sovereig,rollover,zaq12qaz,battery1,killer13,alina123,groucho1,mario12,peter22,butterbean,elise1,lucycat,neo123,ferdi,golfer01,randie,gfhfyjbr,ventura1,chelsea3,pinoy,mtgox,yrrim7,shoeman,mirko,ffggyyo,65mustan,ufdibyjd,john55,suckfuck,greatgoo,fvfnjhb,mmmnnn,love20,1bullshi,sucesso,easy1234,robin123,rockets1,diamondb,wolfee,nothing0,joker777,glasnost,richar1,guille,sayan,koresh,goshawk,alexx,batman21,a123456b,hball,243122,rockandr,coolfool,isaia,mary1,yjdbrjdf,lolopc,cleocat,cimbo,lovehina,8vfhnf,passking,bonapart,diamond2,bigboys,kreator,ctvtyjdf,sassy123,shellac,table54781,nedkelly,philbert,sux2bu,nomis,sparky99,python1,littlebear,numpty,silmaril,sweeet,jamesw,cbufhtnf,peggysue,wodahs,luvsex,wizardry,venom123,love4you,bama1,samat,reviewpass,ned467,cjkjdtq,mamula,gijoe,amersham,devochka,redhill,gisel,preggo,polock,cando,rewster,greenlantern,panasonik,dave1234,mikeee,1carlos,miledi,darkness1,p0o9i8u7y6,kathryn1,happyguy,dcp500,assmaster,sambuka,sailormo,antonio3,logans,18254288,nokiax2,qwertzuiop,zavilov,totti,xenon1,edward11,targa1,something1,tony_t,q1w2e3r4t5y6u7i8o9p0,02551670,vladimir1,monkeybutt,greenda,neel21,craiger,saveliy,dei008,honda450,fylhtq95,spike2,fjnq8915,passwordstandard,vova12345,talonesi,richi,gigemags,pierre1,westin,trevoga,dorothee,bastogne,25563o,brandon3,truegrit,krimml,iamgreat,servis,a112233,paulinka,azimuth,corperfmonsy,358hkyp,homerun1,dogbert1,eatmyass,cottage1,savina,baseball7,bigtex,gimmesum,asdcxz,lennon1,a159357,1bastard,413276191q,pngfilt,pchealth,netsnip,bodiroga,1matt,webtvs,ravers,adapters,siddis,mashamasha,coffee2,myhoney,anna1982,marcia1,fairchil,maniek,iloveluc,batmonh,wildon,bowie1,netnwlnk,fancy1,tom204,olga1976,vfif123,queens1,ajax01,lovess,mockba,icam4usb,triada,odinthor,rstlne,exciter,sundog,anchorat,girls69,nfnmzyrf,soloma,gti16v,shadowman,ottom,rataros,tonchin,vishal,chicken0,pornlo,christiaan,volante,likesit,mariupol,runfast,gbpltw123,missys,villevalo,kbpjxrf,ghibli,calla,cessna172,kinglear,dell11,swift1,walera,1cricket,pussy5,turbo911,tucke,maprchem56458,rosehill,thekiwi1,ygfxbkgt,mandarinka,98xa29,magnit,cjfrf,paswoord,grandam1,shenmue,leedsuni,hatrick,zagadka,angeldog,michaell,dance123,koichi,bballs,29palms,xanth,228822,ppppppp1,1kkkkk,1lllll,mynewbots,spurss,madmax1,224455,city1,mmmmmmm1,nnnnnnn1,biedronka,thebeatles,elessar,f14tomcat,jordan18,bobo123,ayi000,tedbear,86chevyx,user123,bobolink,maktub,elmer1,flyfishi,franco1,gandalf0,traxdata,david21,enlighte,dmitrij,beckys,1giants,flippe,12345678w,jossie,rugbyman,snowcat,rapeme,peanut11,gemeni,udders,techn9ne,armani1,chappie,war123,vakantie,maddawg,sewanee,jake5253,tautt1,anthony5,letterma,jimbo2,kmdtyjr,hextall,jessica6,amiga500,hotcunt,phoenix9,veronda,saqartvelo,scubas,sixer3,williamj,nightfal,shihan,melnikova,kosssss,handily,killer77,jhrl0821,march17,rushman,6gcf636i,metoyou,irina123,mine11,primus1,formatters,matthew5,infotech,gangster1,jordan45,moose69,kompas,motoxxx,greatwhi,cobra12,kirpich,weezer1,hello23,montse,tracy123,connecte,cjymrf,hemingwa,azreal,gundam00,mobila,boxman,slayers1,ravshan,june26,fktrcfylhjd,bermuda1,tylerd,maersk,qazwsx11,eybdthcbntn,ash123,camelo,kat123,backd00r,cheyenne1,1king,jerkin,tnt123,trabant,warhammer40k,rambos,punto,home77,pedrito,1frank,brille,guitarman,george13,rakas,tgbxtcrbq,flute1,bananas1,lovezp1314,thespot,postie,buster69,sexytime,twistys,zacharia,sportage,toccata,denver7,terry123,bogdanova,devil69,higgins1,whatluck,pele10,kkk666,jeffery1,1qayxsw2,riptide1,chevy11,munchy,lazer1,hooker1,ghfgjh,vergesse,playgrou,4077mash,gusev,humpin,oneputt,hydepark,monster9,tiger8,tangsoo,guy123,hesoyam1,uhtqneyu,thanku,lomond,ortezza,kronik,geetha,rabbit66,killas,qazxswe,alabaste,1234567890qwerty,capone1,andrea12,geral,beatbox,slutfuck,booyaka,jasmine7,ostsee,maestro1,beatme,tracey1,buster123,donaldduck,ironfish,happy6,konnichi,gintonic,momoney1,dugan1,today2,enkidu,destiny2,trim7gun,katuha,fractals,morganstanley,polkadot,gotime,prince11,204060,fifa2010,bobbyt,seemee,amanda10,airbrush,bigtitty,heidie,layla1,cotton1,5speed,fyfnjkmtdyf,flynavy,joxury8f,meeko,akuma,dudley1,flyboy1,moondog1,trotters,mariami,signin,chinna,legs11,pussy4,1s1h1e1f1,felici,optimus1,iluvu,marlins1,gavaec,balance1,glock40,london01,kokot,southwes,comfort1,sammy11,rockbottom,brianc,litebeer,homero,chopsuey,greenlan,charit,freecell,hampster,smalldog,viper12,blofeld,1234567890987654321,realsex,romann,cartman2,cjdthitycndj,nelly1,bmw528,zwezda,masterba,jeep99,turtl,america2,sunburst,sanyco,auntjudy,125wm,blue10,qwsazx,cartma,toby12,robbob,red222,ilovecock,losfix16,1explore,helge,vaz2114,whynotme,baba123,mugen,1qazwsxedc,albertjr,0101198,sextime,supras,nicolas2,wantsex,pussy6,checkm8,winam,24gordon,misterme,curlew,gbljhfcs,medtech,franzi,butthea,voivod,blackhat,egoiste,pjkeirf,maddog69,pakalolo,hockey4,igor1234,rouges,snowhite,homefree,sexfreak,acer12,dsmith,blessyou,199410,vfrcbvjd,falco02,belinda1,yaglasph,april21,groundho,jasmin1,nevergiveup,elvir,gborv526,c00kie,emma01,awesome2,larina,mike12345,maximu,anupam,bltynbabrfwbz,tanushka,sukkel,raptor22,josh12,schalke04,cosmodog,fuckyou8,busybee,198800,bijoux,frame1,blackmor,giveit,issmall,bear13,123-123,bladez,littlegirl,ultra123,fletch1,flashnet,loploprock,rkelly,12step,lukas1,littlewhore,cuntfinger,stinkyfinger,laurenc,198020,n7td4bjl,jackie69,camel123,ben1234,1gateway,adelheid,fatmike,thuglove,zzaaqq,chivas1,4815162342q,mamadou,nadano,james22,benwin,andrea99,rjirf,michou,abkbgg,d50gnn,aaazzz,a123654,blankman,booboo11,medicus,bigbone,197200,justine1,bendix,morphius,njhvjp,44mag,zsecyus56,goodbye1,nokiadermo,a333444,waratsea,4rzp8ab7,fevral,brillian,kirbys,minim,erathia,grazia,zxcvb1234,dukey,snaggle,poppi,hymen,1video,dune2000,jpthjdf,cvbn123,zcxfcnkbdfz,astonv,ginnie,316271,engine3,pr1ncess,64chevy,glass1,laotzu,hollyy,comicbooks,assasins,nuaddn9561,scottsda,hfcnfvfy,accobra,7777777z,werty123,metalhead,romanson,redsand,365214,shalo,arsenii,1989cc,sissi,duramax,382563,petera,414243,mamapap,jollymon,field1,fatgirl,janets,trompete,matchbox20,rambo2,nepenthe,441232,qwertyuiop10,bozo123,phezc419hv,romantika,lifestyl,pengui,decembre,demon6,panther6,444888,scanman,ghjcnjabkz,pachanga,buzzword,indianer,spiderman3,tony12,startre,frog1,fyutk,483422,tupacshakur,albert12,1drummer,bmw328i,green17,aerdna,invisibl,summer13,calimer,mustaine,lgnu9d,morefun,hesoyam123,escort1,scrapland,stargat,barabbas,dead13,545645,mexicali,sierr,gfhfpbn,gonchar,moonstafa,searock,counte,foster1,jayhawk1,floren,maremma,nastya2010,softball1,adaptec,halloo,barrabas,zxcasd123,hunny,mariana1,kafedra,freedom0,green420,vlad1234,method7,665566,tooting,hallo12,davinchi,conducto,medias,666444,invernes,madhatter,456asd,12345678i,687887,le33px,spring00,help123,bellybut,billy5,vitalik1,river123,gorila,bendis,power666,747200,footslav,acehigh,qazxswedc123,q1a1z1,richard9,peterburg,tabletop,gavrilov,123qwe1,kolosov,fredrau,run4fun,789056,jkbvgbflf,chitra,87654321q,steve22,wideopen,access88,surfe,tdfyutkbjy,impossib,kevin69,880888,cantina,887766,wxcvb,dontforg,qwer1209,asslicke,mamma123,indig,arkasha,scrapp,morelia,vehxbr,jones2,scratch1,cody11,cassie12,gerbera,dontgotm,underhil,maks2010,hollywood1,hanibal,elena2010,jason11,1010321,stewar,elaman,fireplug,goodby,sacrific,babyphat,bobcat12,bruce123,1233215,tony45,tiburo,love15,bmw750,wallstreet,2h0t4me,1346795,lamerz,munkee,134679q,granvill,1512198,armastus,aiden1,pipeutvj,g1234567,angeleyes,usmc1,102030q,putangina,brandnew,shadowfax,eagles12,1falcon,brianw,lokomoti,2022958,scooper,pegas,jabroni1,2121212,buffal,siffredi,wewiz,twotone,rosebudd,nightwis,carpet1,mickey2,2525252,sleddog,red333,jamesm,2797349,jeff12,onizuka,felixxxx,rf6666,fine1,ohlala,forplay,chicago5,muncho,scooby11,ptichka,johnnn,19851985p,dogphil3650,totenkopf,monitor2,macross7,3816778,dudder,semaj1,bounder,racerx1,5556633,7085506,ofclr278,brody1,7506751,nantucke,hedj2n4q,drew1,aessedai,trekbike,pussykat,samatron,imani,9124852,wiley1,dukenukem,iampurehaha2,9556035,obvious1,mccool24,apache64,kravchenko,justforf,basura,jamese,s0ccer,safado,darksta,surfer69,damian1,gjpbnbd,gunny1,wolley,sananton,zxcvbn123456,odt4p6sv8,sergei1,modem1,mansikka,zzzz1,rifraf,dima777,mary69,looking4,donttell,red100,ninjutsu,uaeuaeman,bigbri,brasco,queenas8151,demetri,angel007,bubbl,kolort,conny,antonia1,avtoritet,kaka22,kailayu,sassy2,wrongway,chevy3,1nascar,patriots1,chrisrey,mike99,sexy22,chkdsk,sd3utre7,padawan,a6pihd,doming,mesohorny,tamada,donatello,emma22,eather,susan69,pinky123,stud69,fatbitch,pilsbury,thc420,lovepuss,1creativ,golf1234,hurryup,1honda,huskerdu,marino1,gowron,girl1,fucktoy,gtnhjpfdjlcr,dkjfghdk,pinkfl,loreli,7777777s,donkeykong,rockytop,staples1,sone4ka,xxxjay,flywheel,toppdogg,bigbubba,aaa123456,2letmein,shavkat,paule,dlanor,adamas,0147852,aassaa,dixon1,bmw328,mother12,ilikepussy,holly2,tsmith,excaliber,fhutynbyf,nicole3,tulipan,emanue,flyvholm,currahee,godsgift,antonioj,torito,dinky1,sanna,yfcnzvjz,june14,anime123,123321456654,hanswurst,bandman,hello101,xxxyyy,chevy69,technica,tagada,arnol,v00d00,lilone,filles,drumandbass,dinamit,a1234a,eatmeat,elway07,inout,james6,dawid1,thewolf,diapason,yodaddy,qscwdv,fuckit1,liljoe,sloeber,simbacat,sascha1,qwe1234,1badger,prisca,angel17,gravedig,jakeyboy,longboard,truskawka,golfer11,pyramid7,highspee,pistola,theriver,hammer69,1packers,dannyd,alfonse,qwertgfdsa,11119999,basket1,ghjtrn,saralee,12inches,paolo1,zse4xdr5,taproot,sophieh6,grizzlie,hockey69,danang,biggums,hotbitch,5alive,beloved1,bluewave,dimon95,koketka,multiscan,littleb,leghorn,poker2,delite,skyfir,bigjake,persona1,amberdog,hannah12,derren,ziffle,1sarah,1assword,sparky01,seymur,tomtom1,123321qw,goskins,soccer19,luvbekki,bumhole,2balls,1muffin,borodin,monkey9,yfeiybrb,1alex,betmen,freder,nigger123,azizbek,gjkzrjdf,lilmike,1bigdadd,1rock,taganrog,snappy1,andrey1,kolonka,bunyan,gomango,vivia,clarkkent,satur,gaudeamus,mantaray,1month,whitehea,fargus,andrew99,ray123,redhawks,liza2009,qw12345,den12345,vfhnsyjdf,147258369a,mazepa,newyorke,1arsenal,hondas2000,demona,fordgt,steve12,birthday2,12457896,dickster,edcwsxqaz,sahalin,pantyman,skinny1,hubertus,cumshot1,chiro,kappaman,mark3434,canada12,lichking,bonkers1,ivan1985,sybase,valmet,doors1,deedlit,kyjelly,bdfysx,ford11,throatfuck,backwood,fylhsq,lalit,boss429,kotova,bricky,steveh,joshua19,kissa,imladris,star1234,lubimka,partyman,crazyd,tobias1,ilike69,imhome,whome,fourstar,scanner1,ujhjl312,anatoli,85bears,jimbo69,5678ytr,potapova,nokia7070,sunday1,kalleank,1996gta,refinnej,july1,molodec,nothanks,enigm,12play,sugardog,nhfkbdfkb,larousse,cannon1,144444,qazxcdew,stimorol,jhereg,spawn7,143000,fearme,hambur,merlin21,dobie,is3yeusc,partner1,dekal,varsha,478jfszk,flavi,hippo1,9hmlpyjd,july21,7imjfstw,lexxus,truelov,nokia5200,carlos6,anais,mudbone,anahit,taylorc,tashas,larkspur,animal2000,nibiru,jan123,miyvarxar,deflep,dolore,communit,ifoptfcor,laura2,anadrol,mamaliga,mitzi1,blue92,april15,matveev,kajlas,wowlook1,1flowers,shadow14,alucard1,1golf,bantha,scotlan,singapur,mark13,manchester1,telus01,superdav,jackoff1,madnes,bullnuts,world123,clitty,palmer1,david10,spider10,sargsyan,rattlers,david4,windows2,sony12,visigoth,qqqaaa,penfloor,cabledog,camilla1,natasha123,eagleman,softcore,bobrov,dietmar,divad,sss123,d1234567,tlbyjhju,1q1q1q1,paraiso,dav123,lfiekmrf,drachen,lzhan16889,tplate,gfghbrf,casio1,123boots1,123test,sys64738,heavymetal,andiamo,meduza,soarer,coco12,negrita,amigas,heavymet,bespin,1asdfghj,wharfrat,wetsex,tight1,janus1,sword123,ladeda,dragon98,austin2,atep1,jungle1,12345abcd,lexus300,pheonix1,alex1974,123qw123,137955,bigtim,shadow88,igor1994,goodjob,arzen,champ123,121ebay,changeme1,brooksie,frogman1,buldozer,morrowin,achim,trish1,lasse,festiva,bubbaman,scottb,kramit,august22,tyson123,passsword,oompah,al123456,fucking1,green45,noodle1,looking1,ashlynn,al1716,stang50,coco11,greese,bob111,brennan1,jasonj,1cherry,1q2345,1xxxxxxx,fifa2011,brondby,zachar1,satyam,easy1,magic7,1rainbow,cheezit,1eeeeeee,ashley123,assass1,amanda123,jerbear,1bbbbbb,azerty12,15975391,654321z,twinturb,onlyone1,denis1988,6846kg3r,jumbos,pennydog,dandelion,haileris,epervier,snoopy69,afrodite,oldpussy,green55,poopypan,verymuch,katyusha,recon7,mine69,tangos,contro,blowme2,jade1,skydive1,fiveiron,dimo4ka,bokser,stargirl,fordfocus,tigers2,platina,baseball11,raque,pimper,jawbreak,buster88,walter34,chucko,penchair,horizon1,thecure1,scc1975,adrianna1,kareta,duke12,krille,dumbfuck,cunt1,aldebaran,laverda,harumi,knopfler,pongo1,pfhbyf,dogman1,rossigno,1hardon,scarlets,nuggets1,ibelieve,akinfeev,xfhkbr,athene,falcon69,happie,billly,nitsua,fiocco,qwerty09,gizmo2,slava2,125690,doggy123,craigs,vader123,silkeborg,124365,peterm,123978,krakatoa,123699,123592,kgvebmqy,pensacol,d1d2d3,snowstor,goldenboy,gfg65h7,ev700,church1,orange11,g0dz1ll4,chester3,acheron,cynthi,hotshot1,jesuschris,motdepass,zymurgy,one2one,fietsbel,harryp,wisper,pookster,nn527hp,dolla,milkmaid,rustyboy,terrell1,epsilon1,lillian1,dale3,crhbgrf,maxsim,selecta,mamada,fatman1,ufkjxrf,shinchan,fuckuall,women1,000008,bossss,greta1,rbhjxrf,mamasboy,purple69,felicidade,sexy21,cathay,hunglow,splatt,kahless,shopping1,1gandalf,themis,delta7,moon69,blue24,parliame,mamma1,miyuki,2500hd,jackmeof,razer,rocker1,juvis123,noremac,boing747,9z5ve9rrcz,icewater,titania,alley1,moparman,christo1,oliver2,vinicius,tigerfan,chevyy,joshua99,doda99,matrixx,ekbnrf,jackfrost,viper01,kasia,cnfhsq,triton1,ssbt8ae2,rugby8,ramman,1lucky,barabash,ghtlfntkm,junaid,apeshit,enfant,kenpo1,shit12,007000,marge1,shadow10,qwerty789,richard8,vbitkm,lostboys,jesus4me,richard4,hifive,kolawole,damilola,prisma,paranoya,prince2,lisaann,happyness,cardss,methodma,supercop,a8kd47v5,gamgee,polly123,irene1,number8,hoyasaxa,1digital,matthew0,dclxvi,lisica,roy123,2468013579,sparda,queball,vaffanculo,pass1wor,repmvbx,999666333,freedom8,botanik,777555333,marcos1,lubimaya,flash2,einstei,08080,123456789j,159951159,159357123,carrot1,alina1995,sanjos,dilara,mustang67,wisteria,jhnjgtl12,98766789,darksun,arxangel,87062134,creativ1,malyshka,fuckthemall,barsic,rocksta,2big4u,5nizza,genesis2,romance1,ofcourse,1horse,latenite,cubana,sactown,789456123a,milliona,61808861,57699434,imperia,bubba11,yellow3,change12,55495746,flappy,jimbo123,19372846,19380018,cutlass1,craig123,klepto,beagle1,solus,51502112,pasha1,19822891,46466452,19855891,petshop,nikolaevna,119966,nokia6131,evenpar,hoosier1,contrasena,jawa350,gonzo123,mouse2,115511,eetfuk,gfhfvgfvgfv,1crystal,sofaking,coyote1,kwiatuszek,fhrflbq,valeria1,anthro,0123654789,alltheway,zoltar,maasikas,wildchil,fredonia,earlgrey,gtnhjczy,matrix123,solid1,slavko,12monkeys,fjdksl,inter1,nokia6500,59382113kevinp,spuddy,cachero,coorslit,password!,kiba1z,karizma,vova1994,chicony,english1,bondra12,1rocket,hunden,jimbob1,zpflhjn1,th0mas,deuce22,meatwad,fatfree,congas,sambora,cooper2,janne,clancy1,stonie,busta,kamaz,speedy2,jasmine3,fahayek,arsenal0,beerss,trixie1,boobs69,luansantana,toadman,control2,ewing33,maxcat,mama1964,diamond4,tabaco,joshua0,piper2,music101,guybrush,reynald,pincher,katiebug,starrs,pimphard,frontosa,alex97,cootie,clockwor,belluno,skyeseth,booty69,chaparra,boochie,green4,bobcat1,havok,saraann,pipeman,aekdb,jumpshot,wintermu,chaika,1chester,rjnjatq,emokid,reset1,regal1,j0shua,134679a,asmodey,sarahh,zapidoo,ciccione,sosexy,beckham23,hornets1,alex1971,delerium,manageme,connor11,1rabbit,sane4ek,caseyboy,cbljhjdf,redsox20,tttttt99,haustool,ander,pantera6,passwd1,journey1,9988776655,blue135,writerspace,xiaoyua123,justice2,niagra,cassis,scorpius,bpgjldsgjldthnf,gamemaster,bloody1,retrac,stabbin,toybox,fight1,ytpyf.,glasha,va2001,taylor11,shameles,ladylove,10078,karmann,rodeos,eintritt,lanesra,tobasco,jnrhjqcz,navyman,pablit,leshka,jessica3,123vika,alena1,platinu,ilford,storm7,undernet,sasha777,1legend,anna2002,kanmax1994,porkpie,thunder0,gundog,pallina,easypass,duck1,supermom,roach1,twincam,14028,tiziano,qwerty32,123654789a,evropa,shampoo1,yfxfkmybr,cubby1,tsunami1,fktrcttdf,yasacrac,17098,happyhap,bullrun,rodder,oaktown,holde,isbest,taylor9,reeper,hammer11,julias,rolltide1,compaq123,fourx4,subzero1,hockey9,7mary3,busines,ybrbnjcbr,wagoneer,danniash,portishead,digitex,alex1981,david11,infidel,1snoopy,free30,jaden,tonto1,redcar27,footie,moskwa,thomas21,hammer12,burzum,cosmo123,50000,burltree,54343,54354,vwpassat,jack5225,cougars1,burlpony,blackhorse,alegna,petert,katemoss,ram123,nels0n,ferrina,angel77,cstock,1christi,dave55,abc123a,alex1975,av626ss,flipoff,folgore,max1998,science1,si711ne,yams7,wifey1,sveiks,cabin1,volodia,ox3ford,cartagen,platini,picture1,sparkle1,tiedomi,service321,wooody,christi1,gnasher,brunob,hammie,iraffert,bot2010,dtcyeirf,1234567890p,cooper11,alcoholi,savchenko,adam01,chelsea5,niewiem,icebear,lllooottt,ilovedick,sweetpus,money8,cookie13,rfnthbyf1988,booboo2,angus123,blockbus,david9,chica1,nazaret,samsung9,smile4u,daystar,skinnass,john10,thegirl,sexybeas,wasdwasd1,sigge1,1qa2ws3ed4rf5tg,czarny,ripley1,chris5,ashley19,anitha,pokerman,prevert,trfnthby,tony69,georgia2,stoppedb,qwertyuiop12345,miniclip,franky1,durdom,cabbages,1234567890o,delta5,liudmila,nhfycajhvths,court1,josiew,abcd1,doghead,diman,masiania,songline,boogle,triston,deepika,sexy4me,grapple,spacebal,ebonee,winter0,smokewee,nargiza,dragonla,sassys,andy2000,menards,yoshio,massive1,suckmy1k,passat99,sexybo,nastya1996,isdead,stratcat,hokuto,infix,pidoras,daffyduck,cumhard,baldeagl,kerberos,yardman,shibainu,guitare,cqub6553,tommyy,bk.irf,bigfoo,hecto,july27,james4,biggus,esbjerg,isgod,1irish,phenmarr,jamaic,roma1990,diamond0,yjdbrjd,girls4me,tampa1,kabuto,vaduz,hanse,spieng,dianochka,csm101,lorna1,ogoshi,plhy6hql,2wsx4rfv,cameron0,adebayo,oleg1996,sharipov,bouboule,hollister1,frogss,yeababy,kablam,adelante,memem,howies,thering,cecilia1,onetwo12,ojp123456,jordan9,msorcloledbr,neveraga,evh5150,redwin,1august,canno,1mercede,moody1,mudbug,chessmas,tiikeri,stickdaddy77,alex15,kvartira,7654321a,lollol123,qwaszxedc,algore,solana,vfhbyfvfhbyf,blue72,misha1111,smoke20,junior13,mogli,threee,shannon2,fuckmylife,kevinh,saransk,karenw,isolde,sekirarr,orion123,thomas0,debra1,laketaho,alondra,curiva,jazz1234,1tigers,jambos,lickme2,suomi,gandalf7,028526,zygote,brett123,br1ttany,supafly,159000,kingrat,luton1,cool-ca,bocman,thomasd,skiller,katter,mama777,chanc,tomass,1rachel,oldno7,rfpfyjdf,bigkev,yelrah,primas,osito,kipper1,msvcr71,bigboy11,thesun,noskcaj,chicc,sonja1,lozinka,mobile1,1vader,ummagumma,waves1,punter12,tubgtn,server1,irina1991,magic69,dak001,pandemonium,dead1,berlingo,cherrypi,1montana,lohotron,chicklet,asdfgh123456,stepside,ikmvw103,icebaby,trillium,1sucks,ukrnet,glock9,ab12345,thepower,robert8,thugstools,hockey13,buffon,livefree,sexpics,dessar,ja0000,rosenrot,james10,1fish,svoloch,mykitty,muffin11,evbukb,shwing,artem1992,andrey1992,sheldon1,passpage,nikita99,fubar123,vannasx,eight888,marial,max2010,express2,violentj,2ykn5ccf,spartan11,brenda69,jackiech,abagail,robin2,grass1,andy76,bell1,taison,superme,vika1995,xtr451,fred20,89032073168,denis1984,2000jeep,weetabix,199020,daxter,tevion,panther8,h9iymxmc,bigrig,kalambur,tsalagi,12213443,racecar02,jeffrey4,nataxa,bigsam,purgator,acuracl,troutbum,potsmoke,jimmyz,manutd1,nytimes,pureevil,bearss,cool22,dragonage,nodnarb,dbrbyu,4seasons,freude,elric1,werule,hockey14,12758698,corkie,yeahright,blademan,tafkap,clave,liziko,hofner,jeffhardy,nurich,runne,stanisla,lucy1,monk3y,forzaroma,eric99,bonaire,blackwoo,fengshui,1qaz0okm,newmoney,pimpin69,07078,anonymer,laptop1,cherry12,ace111,salsa1,wilbur1,doom12,diablo23,jgtxzbhr,under1,honda01,breadfan,megan2,juancarlos,stratus1,ackbar,love5683,happytim,lambert1,cbljhtyrj,komarov,spam69,nfhtkrf,brownn,sarmat,ifiksr,spike69,hoangen,angelz,economia,tanzen,avogadro,1vampire,spanners,mazdarx,queequeg,oriana,hershil,sulaco,joseph11,8seconds,aquariu,cumberla,heather9,anthony8,burton12,crystal0,maria3,qazwsxc,snow123,notgood,198520,raindog,heehaw,consulta,dasein,miller01,cthulhu1,dukenuke,iubire,baytown,hatebree,198505,sistem,lena12,welcome01,maraca,middleto,sindhu,mitsou,phoenix5,vovan,donaldo,dylandog,domovoy,lauren12,byrjuybnj,123llll,stillers,sanchin,tulpan,smallvill,1mmmmm,patti1,folgers,mike31,colts18,123456rrr,njkmrjz,phoenix0,biene,ironcity,kasperok,password22,fitnes,matthew6,spotligh,bujhm123,tommycat,hazel5,guitar11,145678,vfcmrf,compass1,willee,1barney,jack2000,littleminge,shemp,derrek,xxx12345,littlefuck,spuds1,karolinka,camneely,qwertyu123,142500,brandon00,munson15,falcon3,passssap,z3cn2erv,goahead,baggio10,141592,denali1,37kazoo,copernic,123456789asd,orange88,bravada,rush211,197700,pablo123,uptheass,samsam1,demoman,mattylad10,heydude,mister2,werken,13467985,marantz,a22222,f1f2f3f4,fm12mn12,gerasimova,burrito1,sony1,glenny,baldeagle,rmfidd,fenomen,verbati,forgetme,5element,wer138,chanel1,ooicu812,10293847qp,minicooper,chispa,myturn,deisel,vthrehbq,boredboi4u,filatova,anabe,poiuyt1,barmalei,yyyy1,fourkids,naumenko,bangbros,pornclub,okaykk,euclid90,warrior3,kornet,palevo,patatina,gocart,antanta,jed1054,clock1,111111w,dewars,mankind1,peugeot406,liten,tahira,howlin,naumov,rmracing,corone,cunthole,passit,rock69,jaguarxj,bumsen,197101,sweet2,197010,whitecat,sawadee,money100,yfhrjnbrb,andyboy,9085603566,trace1,fagget,robot1,angel20,6yhn7ujm,specialinsta,kareena,newblood,chingada,boobies2,bugger1,squad51,133andre,call06,ashes1,ilovelucy,success2,kotton,cavalla,philou,deebee,theband,nine09,artefact,196100,kkkkkkk1,nikolay9,onelov,basia,emilyann,sadman,fkrjujkbr,teamomuch,david777,padrino,money21,firdaus,orion3,chevy01,albatro,erdfcv,2legit,sarah7,torock,kevinn,holio,soloy,enron714,starfleet,qwer11,neverman,doctorwh,lucy11,dino12,trinity7,seatleon,o123456,pimpman,1asdfgh,snakebit,chancho,prorok,bleacher,ramire,darkseed,warhorse,michael123,1spanky,1hotdog,34erdfcv,n0th1ng,dimanche,repmvbyf,michaeljackson,login1,icequeen,toshiro,sperme,racer2,veget,birthday26,daniel9,lbvekmrf,charlus,bryan123,wspanic,schreibe,1andonly,dgoins,kewell,apollo12,egypt1,fernie,tiger21,aa123456789,blowj,spandau,bisquit,12345678d,deadmau5,fredie,311420,happyface,samant,gruppa,filmstar,andrew17,bakesale,sexy01,justlook,cbarkley,paul11,bloodred,rideme,birdbath,nfkbcvfy,jaxson,sirius1,kristof,virgos,nimrod1,hardc0re,killerbee,1abcdef,pitcher1,justonce,vlada,dakota99,vespucci,wpass,outside1,puertori,rfvbkf,teamlosi,vgfun2,porol777,empire11,20091989q,jasong,webuivalidat,escrima,lakers08,trigger2,addpass,342500,mongini,dfhtybr,horndogg,palermo1,136900,babyblu,alla98,dasha2010,jkelly,kernow,yfnecz,rockhopper,toeman,tlaloc,silver77,dave01,kevinr,1234567887654321,135642,me2you,8096468644q,remmus,spider7,jamesa,jilly,samba1,drongo,770129ji,supercat,juntas,tema1234,esthe,1234567892000,drew11,qazqaz123,beegees,blome,rattrace,howhigh,tallboy,rufus2,sunny2,sou812,miller12,indiana7,irnbru,patch123,letmeon,welcome5,nabisco,9hotpoin,hpvteb,lovinit,stormin,assmonke,trill,atlanti,money1234,cubsfan,mello1,stars2,ueptkm,agate,dannym88,lover123,wordz,worldnet,julemand,chaser1,s12345678,pissword,cinemax,woodchuc,point1,hotchkis,packers2,bananana,kalender,420666,penguin8,awo8rx3wa8t,hoppie,metlife,ilovemyfamily,weihnachtsbau,pudding1,luckystr,scully1,fatboy1,amizade,dedham,jahbless,blaat,surrende,****er,1panties,bigasses,ghjuhfvbcn,asshole123,dfktyrb,likeme,nickers,plastik,hektor,deeman,muchacha,cerebro,santana5,testdrive,dracula1,canalc,l1750sq,savannah1,murena,1inside,pokemon00,1iiiiiii,jordan20,sexual1,mailliw,calipso,014702580369,1zzzzzz,1jjjjjj,break1,15253545,yomama1,katinka,kevin11,1ffffff,martijn,sslazio,daniel5,porno2,nosmas,leolion,jscript,15975312,pundai,kelli1,kkkddd,obafgkm,marmaris,lilmama,london123,rfhfnt,elgordo,talk87,daniel7,thesims3,444111,bishkek,afrika2002,toby22,1speedy,daishi,2children,afroman,qqqqwwww,oldskool,hawai,v55555,syndicat,pukimak,fanatik,tiger5,parker01,bri5kev6,timexx,wartburg,love55,ecosse,yelena03,madinina,highway1,uhfdbwfgf,karuna,buhjvfybz,wallie,46and2,khalif,europ,qaz123wsx456,bobbybob,wolfone,falloutboy,manning18,scuba10,schnuff,ihateyou1,lindam,sara123,popcor,fallengun,divine1,montblanc,qwerty8,rooney10,roadrage,bertie1,latinus,lexusis,rhfvfnjhcr,opelgt,hitme,agatka,1yamaha,dmfxhkju,imaloser,michell1,sb211st,silver22,lockedup,andrew9,monica01,sassycat,dsobwick,tinroof,ctrhtnyj,bultaco,rhfcyjzhcr,aaaassss,14ss88,joanne1,momanddad,ahjkjdf,yelhsa,zipdrive,telescop,500600,1sexsex,facial1,motaro,511647,stoner1,temujin,elephant1,greatman,honey69,kociak,ukqmwhj6,altezza,cumquat,zippos,kontiki,123max,altec1,bibigon,tontos,qazsew,nopasaran,militar,supratt,oglala,kobayash,agathe,yawetag,dogs1,cfiekmrf,megan123,jamesdea,porosenok,tiger23,berger1,hello11,seemann,stunner1,walker2,imissu,jabari,minfd,lollol12,hjvfy,1-oct,stjohns,2278124q,123456789qwer,alex1983,glowworm,chicho,mallards,bluedevil,explorer1,543211,casita,1time,lachesis,alex1982,airborn1,dubesor,changa,lizzie1,captaink,socool,bidule,march23,1861brr,k.ljxrf,watchout,fotze,1brian,keksa2,aaaa1122,matrim,providian,privado,dreame,merry1,aregdone,davidt,nounour,twenty2,play2win,artcast2,zontik,552255,shit1,sluggy,552861,dr8350,brooze,alpha69,thunder6,kamelia2011,caleb123,mmxxmm,jamesh,lfybkjd,125267,125000,124536,bliss1,dddsss,indonesi,bob69,123888,tgkbxfgy,gerar,themack,hijodeputa,good4now,ddd123,clk430,kalash,tolkien1,132forever,blackb,whatis,s1s2s3s4,lolkin09,yamahar,48n25rcc,djtiesto,111222333444555,bigbull,blade55,coolbree,kelse,ichwill,yamaha12,sakic,bebeto,katoom,donke,sahar,wahine,645202,god666,berni,starwood,june15,sonoio,time123,llbean,deadsoul,lazarev,cdtnf,ksyusha,madarchod,technik,jamesy,4speed,tenorsax,legshow,yoshi1,chrisbl,44e3ebda,trafalga,heather7,serafima,favorite4,havefun1,wolve,55555r,james13,nosredna,bodean,jlettier,borracho,mickael,marinus,brutu,sweet666,kiborg,rollrock,jackson6,macross1,ousooner,9085084232,takeme,123qwaszx,firedept,vfrfhjd,jackfros,123456789000,briane,cookie11,baby22,bobby18,gromova,systemofadown,martin01,silver01,pimaou,darthmaul,hijinx,commo,chech,skyman,sunse,2vrd6,vladimirovna,uthvfybz,nicole01,kreker,bobo1,v123456789,erxtgb,meetoo,drakcap,vfvf12,misiek1,butane,network2,flyers99,riogrand,jennyk,e12345,spinne,avalon11,lovejone,studen,maint,porsche2,qwerty100,chamberl,bluedog1,sungam,just4u,andrew23,summer22,ludic,musiclover,aguil,beardog1,libertin,pippo1,joselit,patito,bigberth,digler,sydnee,jockstra,poopo,jas4an,nastya123,profil,fuesse,default1,titan2,mendoz,kpcofgs,anamika,brillo021,bomberman,guitar69,latching,69pussy,blues2,phelge,ninja123,m7n56xo,qwertasd,alex1976,cunningh,estrela,gladbach,marillion,mike2000,258046,bypop,muffinman,kd5396b,zeratul,djkxbwf,john77,sigma2,1linda,selur,reppep,quartz1,teen1,freeclus,spook1,kudos4ever,clitring,sexiness,blumpkin,macbook,tileman,centra,escaflowne,pentable,shant,grappa,zverev,1albert,lommerse,coffee11,777123,polkilo,muppet1,alex74,lkjhgfdsazx,olesica,april14,ba25547,souths,jasmi,arashi,smile2,2401pedro,mybabe,alex111,quintain,pimp1,tdeir8b2,makenna,122333444455555,%e2%82%ac,tootsie1,pass111,zaqxsw123,gkfdfybt,cnfnbcnbrf,usermane,iloveyou12,hard69,osasuna,firegod,arvind,babochka,kiss123,cookie123,julie123,kamakazi,dylan2,223355,tanguy,nbhtqa,tigger13,tubby1,makavel,asdflkj,sambo1,mononoke,mickeys,gayguy,win123,green33,wcrfxtvgbjy,bigsmall,1newlife,clove,babyfac,bigwaves,mama1970,shockwav,1friday,bassey,yarddog,codered1,victory7,bigrick,kracker,gulfstre,chris200,sunbanna,bertuzzi,begemotik,kuolema,pondus,destinee,123456789zz,abiodun,flopsy,amadeusptfcor,geronim,yggdrasi,contex,daniel6,suck1,adonis1,moorea,el345612,f22raptor,moviebuf,raunchy,6043dkf,zxcvbnm123456789,eric11,deadmoin,ratiug,nosliw,fannies,danno,888889,blank1,mikey2,gullit,thor99,mamiya,ollieb,thoth,dagger1,websolutionssu,bonker,prive,1346798520,03038,q1234q,mommy2,contax,zhipo,gwendoli,gothic1,1234562000,lovedick,gibso,digital2,space199,b26354,987654123,golive,serious1,pivkoo,better1,824358553,794613258,nata1980,logout,fishpond,buttss,squidly,good4me,redsox19,jhonny,zse45rdx,matrixxx,honey12,ramina,213546879,motzart,fall99,newspape,killit,gimpy,photowiz,olesja,thebus,marco123,147852963,bedbug,147369258,hellbound,gjgjxrf,123987456,lovehurt,five55,hammer01,1234554321a,alina2011,peppino,ang238,questor,112358132,alina1994,alina1998,money77,bobjones,aigerim,cressida,madalena,420smoke,tinchair,raven13,mooser,mauric,lovebu,adidas69,krypton1,1111112,loveline,divin,voshod,michaelm,cocotte,gbkbuhbv,76689295,kellyj,rhonda1,sweetu70,steamforums,geeque,nothere,124c41,quixotic,steam181,1169900,rfcgthcrbq,rfvbkm,sexstuff,1231230,djctvm,rockstar1,fulhamfc,bhecbr,rfntyf,quiksilv,56836803,jedimaster,pangit,gfhjkm777,tocool,1237654,stella12,55378008,19216811,potte,fender12,mortalkombat,ball1,nudegirl,palace22,rattrap,debeers,lickpussy,jimmy6,not4u2c,wert12,bigjuggs,sadomaso,1357924,312mas,laser123,arminia,branford,coastie,mrmojo,19801982,scott11,banaan123,ingres,300zxtt,hooters6,sweeties,19821983,19831985,19833891,sinnfein,welcome4,winner69,killerman,tachyon,tigre1,nymets1,kangol,martinet,sooty1,19921993,789qwe,harsingh,1597535,thecount,phantom3,36985214,lukas123,117711,pakistan1,madmax11,willow01,19932916,fucker12,flhrci,opelagila,theword,ashley24,tigger3,crazyj,rapide,deadfish,allana,31359092,sasha1993,sanders2,discman,zaq!2wsx,boilerma,mickey69,jamesg,babybo,jackson9,orion7,alina2010,indien,breeze1,atease,warspite,bazongaz,1celtic,asguard,mygal,fitzgera,1secret,duke33,cyklone,dipascuc,potapov,1escobar2,c0l0rad0,kki177hk,1little,macondo,victoriya,peter7,red666,winston6,kl?benhavn,muneca,jackme,jennan,happylife,am4h39d8nh,bodybuil,201980,dutchie,biggame,lapo4ka,rauchen,black10,flaquit,water12,31021364,command2,lainth88,mazdamx5,typhon,colin123,rcfhlfc,qwaszx11,g0away,ramir,diesirae,hacked1,cessna1,woodfish,enigma2,pqnr67w5,odgez8j3,grisou,hiheels,5gtgiaxm,2580258,ohotnik,transits,quackers,serjik,makenzie,mdmgatew,bryana,superman12,melly,lokit,thegod,slickone,fun4all,netpass,penhorse,1cooper,nsync,asdasd22,otherside,honeydog,herbie1,chiphi,proghouse,l0nd0n,shagg,select1,frost1996,casper123,countr,magichat,greatzyo,jyothi,3bears,thefly,nikkita,fgjcnjk,nitros,hornys,san123,lightspe,maslova,kimber1,newyork2,spammm,mikejone,pumpk1n,bruiser1,bacons,prelude9,boodie,dragon4,kenneth2,love98,power5,yodude,pumba,thinline,blue30,sexxybj,2dumb2live,matt21,forsale,1carolin,innova,ilikeporn,rbgtkjd,a1s2d3f,wu9942,ruffus,blackboo,qwerty999,draco1,marcelin,hideki,gendalf,trevon,saraha,cartmen,yjhbkmcr,time2go,fanclub,ladder1,chinni,6942987,united99,lindac,quadra,paolit,mainstre,beano002,lincoln7,bellend,anomie,8520456,bangalor,goodstuff,chernov,stepashka,gulla,mike007,frasse,harley03,omnislash,8538622,maryjan,sasha2011,gineok,8807031,hornier,gopinath,princesit,bdr529,godown,bosslady,hakaone,1qwe2,madman1,joshua11,lovegame,bayamon,jedi01,stupid12,sport123,aaa666,tony44,collect1,charliem,chimaira,cx18ka,trrim777,chuckd,thedream,redsox99,goodmorning,delta88,iloveyou11,newlife2,figvam,chicago3,jasonk,12qwer,9875321,lestat1,satcom,conditio,capri50,sayaka,9933162,trunks1,chinga,snooch,alexand1,findus,poekie,cfdbyf,kevind,mike1969,fire13,leftie,bigtuna,chinnu,silence1,celos1,blackdra,alex24,gfgfif,2boobs,happy8,enolagay,sataniv1993,turner1,dylans,peugeo,sasha1994,hoppel,conno,moonshot,santa234,meister1,008800,hanako,tree123,qweras,gfitymrf,reggie31,august29,supert,joshua10,akademia,gbljhfc,zorro123,nathalia,redsox12,hfpdjl,mishmash,nokiae51,nyyankees,tu190022,strongbo,none1,not4u2no,katie2,popart,harlequi,santan,michal1,1therock,screwu,csyekmrf,olemiss1,tyrese,hoople,sunshin1,cucina,starbase,topshelf,fostex,california1,castle1,symantec,pippolo,babare,turntabl,1angela,moo123,ipvteb,gogolf,alex88,cycle1,maxie1,phase2,selhurst,furnitur,samfox,fromvermine,shaq34,gators96,captain2,delonge,tomatoe,bisous,zxcvbnma,glacius,pineapple1,cannelle,ganibal,mko09ijn,paraklast1974,hobbes12,petty43,artema,junior8,mylover,1234567890d,fatal1ty,prostreet,peruan,10020,nadya,caution1,marocas,chanel5,summer08,metal123,111lox,scrapy,thatguy,eddie666,washingto,yannis,minnesota_hp,lucky4,playboy6,naumova,azzurro,patat,dale33,pa55wd,speedster,zemanova,saraht,newto,tony22,qscesz,arkady,1oliver,death6,vkfwx046,antiflag,stangs,jzf7qf2e,brianp,fozzy,cody123,startrek1,yoda123,murciela,trabajo,lvbnhbtdf,canario,fliper,adroit,henry5,goducks,papirus,alskdj,soccer6,88mike,gogetter,tanelorn,donking,marky1,leedsu,badmofo,al1916,wetdog,akmaral,pallet,april24,killer00,nesterova,rugby123,coffee12,browseui,ralliart,paigow,calgary1,armyman,vtldtltd,frodo2,frxtgb,iambigal,benno,jaytee,2hot4you,askar,bigtee,brentwoo,palladin,eddie2,al1916w,horosho,entrada,ilovetits,venture1,dragon19,jayde,chuvak,jamesl,fzr600,brandon8,vjqvbh,snowbal,snatch1,bg6njokf,pudder,karolin,candoo,pfuflrf,satchel1,manteca,khongbiet,critter1,partridg,skyclad,bigdon,ginger69,brave1,anthony4,spinnake,chinadol,passout,cochino,nipples1,15058,lopesk,sixflags,lloo999,parkhead,breakdance,cia123,fidodido,yuitre12,fooey,artem1995,gayathri,medin,nondriversig,l12345,bravo7,happy13,kazuya,camster,alex1998,luckyy,zipcode,dizzle,boating1,opusone,newpassw,movies23,kamikazi,zapato,bart316,cowboys0,corsair1,kingshit,hotdog12,rolyat,h200svrm,qwerty4,boofer,rhtyltkm,chris999,vaz21074,simferopol,pitboss,love3,britania,tanyshka,brause,123qwerty123,abeille,moscow1,ilkaev,manut,process1,inetcfg,dragon05,fortknox,castill,rynner,mrmike,koalas,jeebus,stockpor,longman,juanpabl,caiman,roleplay,jeremi,26058,prodojo,002200,magical1,black5,bvlgari,doogie1,cbhtqa,mahina,a1s2d3f4g5h6,jblpro,usmc01,bismilah,guitar01,april9,santana1,1234aa,monkey14,sorokin,evan1,doohan,animalsex,pfqxtyjr,dimitry,catchme,chello,silverch,glock45,dogleg,litespee,nirvana9,peyton18,alydar,warhamer,iluvme,sig229,minotavr,lobzik,jack23,bushwack,onlin,football123,joshua5,federov,winter2,bigmax,fufnfrhbcnb,hfpldfnhb,1dakota,f56307,chipmonk,4nick8,praline,vbhjh123,king11,22tango,gemini12,street1,77879,doodlebu,homyak,165432,chuluthu,trixi,karlito,salom,reisen,cdtnkzxjr,pookie11,tremendo,shazaam,welcome0,00000ty,peewee51,pizzle,gilead,bydand,sarvar,upskirt,legends1,freeway1,teenfuck,ranger9,darkfire,dfymrf,hunt0802,justme1,buffy1ma,1harry,671fsa75yt,burrfoot,budster,pa437tu,jimmyp,alina2006,malacon,charlize,elway1,free12,summer02,gadina,manara,gomer1,1cassie,sanja,kisulya,money3,pujols,ford50,midiland,turga,orange6,demetriu,freakboy,orosie1,radio123,open12,vfufpby,mustek,chris33,animes,meiling,nthtvjr,jasmine9,gfdkjd,oligarh,marimar,chicago9,.kzirf,bugssgub,samuraix,jackie01,pimpjuic,macdad,cagiva,vernost,willyboy,fynjyjdf,tabby1,privet123,torres9,retype,blueroom,raven11,q12we3,alex1989,bringiton,ridered,kareltje,ow8jtcs8t,ciccia,goniners,countryb,24688642,covingto,24861793,beyblade,vikin,badboyz,wlafiga,walstib,mirand,needajob,chloes,balaton,kbpfdtnf,freyja,bond9007,gabriel12,stormbri,hollage,love4eve,fenomeno,darknite,dragstar,kyle123,milfhunter,ma123123123,samia,ghislain,enrique1,ferien12,xjy6721,natalie2,reglisse,wilson2,wesker,rosebud7,amazon1,robertr,roykeane,xtcnth,mamatata,crazyc,mikie,savanah,blowjob69,jackie2,forty1,1coffee,fhbyjxrf,bubbah,goteam,hackedit,risky1,logoff,h397pnvr,buck13,robert23,bronc,st123st,godflesh,pornog,iamking,cisco69,septiembr,dale38,zhongguo,tibbar,panther9,buffa1,bigjohn1,mypuppy,vehvfycr,april16,shippo,fire1234,green15,q123123,gungadin,steveg,olivier1,chinaski,magnoli,faithy,storm12,toadfrog,paul99,78791,august20,automati,squirtle,cheezy,positano,burbon,nunya,llebpmac,kimmi,turtle2,alan123,prokuror,violin1,durex,pussygal,visionar,trick1,chicken6,29024,plowboy,rfybreks,imbue,sasha13,wagner1,vitalogy,cfymrf,thepro,26028,gorbunov,dvdcom,letmein5,duder,fastfun,pronin,libra1,conner1,harley20,stinker1,20068,20038,amitech,syoung,dugway,18068,welcome7,jimmypag,anastaci,kafka1,pfhfnecnhf,catsss,campus100,shamal,nacho1,fire12,vikings2,brasil1,rangerover,mohamma,peresvet,14058,cocomo,aliona,14038,qwaser,vikes,cbkmdf,skyblue1,ou81234,goodlove,dfkmltvfh,108888,roamer,pinky2,static1,zxcv4321,barmen,rock22,shelby2,morgans,1junior,pasword1,logjam,fifty5,nhfrnjhbcn,chaddy,philli,nemesis2,ingenier,djkrjd,ranger3,aikman8,knothead,daddy69,love007,vsythb,ford350,tiger00,renrut,owen11,energy12,march14,alena123,robert19,carisma,orange22,murphy11,podarok,prozak,kfgeirf,wolf13,lydia1,shazza,parasha,akimov,tobbie,pilote,heather4,baster,leones,gznfxjr,megama,987654321g,bullgod,boxster1,minkey,wombats,vergil,colegiata,lincol,smoothe,pride1,carwash1,latrell,bowling3,fylhtq123,pickwick,eider,bubblebox,bunnies1,loquit,slipper1,nutsac,purina,xtutdfhf,plokiju,1qazxs,uhjpysq,zxcvbasdfg,enjoy1,1pumpkin,phantom7,mama22,swordsma,wonderbr,dogdays,milker,u23456,silvan,dfkthbr,slagelse,yeahman,twothree,boston11,wolf100,dannyg,troll1,fynjy123,ghbcnfd,bftest,ballsdeep,bobbyorr,alphasig,cccdemo,fire123,norwest,claire2,august10,lth1108,problemas,sapito,alex06,1rusty,maccom,goirish1,ohyes,bxdumb,nabila,boobear1,rabbit69,princip,alexsander,travail,chantal1,dogggy,greenpea,diablo69,alex2009,bergen09,petticoa,classe,ceilidh,vlad2011,kamakiri,lucidity,qaz321,chileno,cexfhf,99ranger,mcitra,estoppel,volvos60,carter80,webpass,temp12,touareg,fcgbhby,bubba8,sunitha,200190ru,bitch2,shadow23,iluvit,nicole0,ruben1,nikki69,butttt,shocker1,souschef,lopotok01,kantot,corsano,cfnfyf,riverat,makalu,swapna,all4u9,cdtnkfy,ntktgepbr,ronaldo99,thomasj,bmw540i,chrisw,boomba,open321,z1x2c3v4b5n6m7,gaviota,iceman44,frosya,chris100,chris24,cosette,clearwat,micael,boogyman,pussy9,camus1,chumpy,heccrbq,konoplya,chester8,scooter5,ghjgfufylf,giotto,koolkat,zero000,bonita1,ckflrbq,j1964,mandog,18n28n24a,renob,head1,shergar,ringo123,tanita,sex4free,johnny12,halberd,reddevils,biolog,dillinge,fatb0y,c00per,hyperlit,wallace2,spears1,vitamine,buheirf,sloboda,alkash,mooman,marion1,arsenal7,sunder,nokia5610,edifier,pippone,fyfnjkmtdbx,fujimo,pepsi12,kulikova,bolat,duetto,daimon,maddog01,timoshka,ezmoney,desdemon,chesters,aiden,hugues,patrick5,aikman08,robert4,roenick,nyranger,writer1,36169544,foxmulder,118801,kutter,shashank,jamjar,118811,119955,aspirina,dinkus,1sailor,nalgene,19891959,snarf,allie1,cracky,resipsa,45678912,kemerovo,19841989,netware1,alhimik,19801984,nicole123,19761977,51501984,malaka1,montella,peachfuz,jethro1,cypress1,henkie,holdon,esmith,55443322,1friend,quique,bandicoot,statistika,great123,death13,ucht36,master4,67899876,bobsmith,nikko1,jr1234,hillary1,78978978,rsturbo,lzlzdfcz,bloodlust,shadow00,skagen,bambina,yummies,88887777,91328378,matthew4,itdoes,98256518,102938475,alina2002,123123789,fubared,dannys,123456321,nikifor,suck69,newmexico,scubaman,rhbcnb,fifnfy,puffdadd,159357852,dtheyxbr,theman22,212009164,prohor,shirle,nji90okm,newmedia,goose5,roma1995,letssee,iceman11,aksana,wirenut,pimpdady,1212312121,tamplier,pelican1,domodedovo,1928374655,fiction6,duckpond,ybrecz,thwack,onetwo34,gunsmith,murphydo,fallout1,spectre1,jabberwo,jgjesq,turbo6,bobo12,redryder,blackpus,elena1971,danilova,antoin,bobo1234,bobob,bobbobbo,dean1,222222a,jesusgod,matt23,musical1,darkmage,loppol,werrew,josepha,rebel12,toshka,gadfly,hawkwood,alina12,dnomyar,sexaddict,dangit,cool23,yocrack,archimed,farouk,nhfkzkz,lindalou,111zzzzz,ghjatccjh,wethepeople,m123456789,wowsers,kbkbxrf,bulldog5,m_roesel,sissinit,yamoon6,123ewqasd,dangel,miruvor79,kaytee,falcon7,bandit11,dotnet,dannii,arsenal9,miatamx5,1trouble,strip4me,dogpile,sexyred1,rjdfktdf,google10,shortman,crystal7,awesome123,cowdog,haruka,birthday28,jitter,diabolik,boomer12,dknight,bluewate,hockey123,crm0624,blueboys,willy123,jumpup,google2,cobra777,llabesab,vicelord,hopper1,gerryber,remmah,j10e5d4,qqqqqqw,agusti,fre_ak8yj,nahlik,redrobin,scott3,epson1,dumpy,bundao,aniolek,hola123,jergens,itsasecret,maxsam,bluelight,mountai1,bongwater,1london,pepper14,freeuse,dereks,qweqw,fordgt40,rfhfdfy,raider12,hunnybun,compac,splicer,megamon,tuffgong,gymnast1,butter11,modaddy,wapbbs_1,dandelio,soccer77,ghjnbdjcnjzybt,123xyi2,fishead,x002tp00,whodaman,555aaa,oussama,brunodog,technici,pmtgjnbl,qcxdw8ry,schweden,redsox3,throbber,collecto,japan10,dbm123dm,hellhoun,tech1,deadzone,kahlan,wolf123,dethklok,xzsawq,bigguy1,cybrthc,chandle,buck01,qq123123,secreta,williams1,c32649135,delta12,flash33,123joker,spacejam,polopo,holycrap,daman1,tummybed,financia,nusrat,euroline,magicone,jimkirk,ameritec,daniel26,sevenn,topazz,kingpins,dima1991,macdog,spencer5,oi812,geoffre,music11,baffle,123569,usagi,cassiope,polla,lilcrowe,thecakeisalie,vbhjndjhtw,vthokies,oldmans,sophie01,ghoster,penny2,129834,locutus1,meesha,magik,jerry69,daddysgirl,irondesk,andrey12,jasmine123,vepsrfyn,likesdick,1accord,jetboat,grafix,tomuch,showit,protozoa,mosias98,taburetka,blaze420,esenin,anal69,zhv84kv,puissant,charles0,aishwarya,babylon6,bitter1,lenina,raleigh1,lechat,access01,kamilka,fynjy,sparkplu,daisy3112,choppe,zootsuit,1234567j,rubyrose,gorilla9,nightshade,alternativa,cghfdjxybr,snuggles1,10121v,vova1992,leonardo1,dave2,matthewd,vfhfnbr,1986mets,nobull,bacall,mexican1,juanjo,mafia1,boomer22,soylent,edwards1,jordan10,blackwid,alex86,gemini13,lunar2,dctvcjcfnm,malaki,plugger,eagles11,snafu2,1shelly,cintaku,hannah22,tbird1,maks5843,irish88,homer22,amarok,fktrcfylhjdf,lincoln2,acess,gre69kik,need4speed,hightech,core2duo,blunt1,ublhjgjybrf,dragon33,1autopas,autopas1,wwww1,15935746,daniel20,2500aa,massim,1ggggggg,96ford,hardcor1,cobra5,blackdragon,vovan_lt,orochimaru,hjlbntkb,qwertyuiop12,tallen,paradoks,frozenfish,ghjuhfvvbcn,gerri1,nuggett,camilit,doright,trans1,serena1,catch2,bkmyeh,fireston,afhvfwtdn,purple3,figure8,fuckya,scamp1,laranja,ontheoutside,louis123,yellow7,moonwalk,mercury2,tolkein,raide,amenra,a13579,dranreb,5150vh,harish,tracksta,sexking,ozzmosis,katiee,alomar,matrix19,headroom,jahlove,ringding,apollo8,132546,132613,12345672000,saretta,135798,136666,thomas7,136913,onetwothree,hockey33,calida,nefertit,bitwise,tailhook,boop4,kfgecbr,bujhmbujhm,metal69,thedark,meteoro,felicia1,house12,tinuviel,istina,vaz2105,pimp13,toolfan,nina1,tuesday2,maxmotives,lgkp500,locksley,treech,darling1,kurama,aminka,ramin,redhed,dazzler,jager1,stpiliot,cardman,rfvtym,cheeser,14314314,paramoun,samcat,plumpy,stiffie,vsajyjr,panatha,qqq777,car12345,098poi,asdzx,keegan1,furelise,kalifornia,vbhjckfd,beast123,zcfvfzkexifz,harry5,1birdie,96328i,escola,extra330,henry12,gfhfyjqz,14u2nv,max1234,templar1,1dave,02588520,catrin,pangolin,marhaba,latin1,amorcito,dave22,escape1,advance1,yasuhiro,grepw,meetme,orange01,ernes,erdna,zsergn,nautica1,justinb,soundwav,miasma,greg78,nadine1,sexmad,lovebaby,promo1,excel1,babys,dragonma,camry1,sonnenschein,farooq,wazzkaprivet,magal,katinas,elvis99,redsox24,rooney1,chiefy,peggys,aliev,pilsung,mudhen,dontdoit,dennis12,supercal,energia,ballsout,funone,claudiu,brown2,amoco,dabl1125,philos,gjdtkbntkm,servette,13571113,whizzer,nollie,13467982,upiter,12string,bluejay1,silkie,william4,kosta1,143333,connor12,sustanon,06068,corporat,ssnake,laurita,king10,tahoes,arsenal123,sapato,charless,jeanmarc,levent,algerie,marine21,jettas,winsome,dctvgbplf,1701ab,xxxp455w0rd5,lllllll1,ooooooo1,monalis,koufax32,anastasya,debugger,sarita2,jason69,ufkxjyjr,gjlcnfdf,1jerry,daniel10,balinor,sexkitten,death2,qwertasdfgzxcvb,s9te949f,vegeta1,sysman,maxxam,dimabilan,mooose,ilovetit,june23,illest,doesit,mamou,abby12,longjump,transalp,moderato,littleguy,magritte,dilnoza,hawaiiguy,winbig,nemiroff,kokaine,admira,myemail,dream2,browneyes,destiny7,dragonss,suckme1,asa123,andranik,suckem,fleshbot,dandie,timmys,scitra,timdog,hasbeen,guesss,smellyfe,arachne,deutschl,harley88,birthday27,nobody1,papasmur,home1,jonass,bunia3,epatb1,embalm,vfvekmrf,apacer,12345656,estreet,weihnachtsbaum,mrwhite,admin12,kristie1,kelebek,yoda69,socken,tima123,bayern1,fktrcfylth,tamiya,99strenght,andy01,denis2011,19delta,stokecit,aotearoa,stalker2,nicnac,conrad1,popey,agusta,bowl36,1bigfish,mossyoak,1stunner,getinnow,jessejames,gkfnjy,drako,1nissan,egor123,hotness,1hawaii,zxc123456,cantstop,1peaches,madlen,west1234,jeter1,markis,judit,attack1,artemi,silver69,153246,crazy2,green9,yoshimi,1vette,chief123,jasper2,1sierra,twentyon,drstrang,aspirant,yannic,jenna123,bongtoke,slurpy,1sugar,civic97,rusty21,shineon,james19,anna12345,wonderwoman,1kevin,karol1,kanabis,wert21,fktif6115,evil1,kakaha,54gv768,826248s,tyrone1,1winston,sugar2,falcon01,adelya,mopar440,zasxcd,leecher,kinkysex,mercede1,travka,11234567,rebon,geekboy".split(","),
45547 english_wikipedia:"the,of,and,in,was,is,for,as,on,with,by,he,at,from,his,an,were,are,which,doc,https,also,or,has,had,first,one,their,its,after,new,who,they,two,her,she,been,other,when,time,during,there,into,school,more,may,years,over,only,year,most,would,world,city,some,where,between,later,three,state,such,then,national,used,made,known,under,many,university,united,while,part,season,team,these,american,than,film,second,born,south,became,states,war,through,being,including,both,before,north,high,however,people,family,early,history,album,area,them,series,against,until,since,district,county,name,work,life,group,music,following,number,company,several,four,called,played,released,career,league,game,government,house,each,based,day,same,won,use,station,club,international,town,located,population,general,college,east,found,age,march,end,september,began,home,public,church,line,june,river,member,system,place,century,band,july,york,january,october,song,august,best,former,british,party,named,held,village,show,local,november,took,service,december,built,another,major,within,along,members,five,single,due,although,small,old,left,final,large,include,building,served,president,received,games,death,february,main,third,set,children,own,order,species,park,law,air,published,road,died,book,men,women,army,often,according,education,central,country,division,english,top,included,development,french,community,among,water,play,side,list,times,near,late,form,original,different,center,power,led,students,german,moved,court,six,land,council,island,u.s.,record,million,research,art,established,award,street,military,television,given,region,support,western,production,non,political,point,cup,period,business,title,started,various,election,using,england,role,produced,become,program,works,field,total,office,class,written,association,radio,union,level,championship,director,few,force,created,department,founded,services,married,though,per,n't,site,open,act,short,society,version,royal,present,northern,worked,professional,full,returned,joined,story,france,european,currently,language,social,california,india,days,design,st.,further,round,australia,wrote,san,project,control,southern,railway,board,popular,continued,free,battle,considered,video,common,position,living,half,playing,recorded,red,post,described,average,records,special,modern,appeared,announced,areas,rock,release,elected,others,example,term,opened,similar,formed,route,census,current,schools,originally,lake,developed,race,himself,forces,addition,information,upon,province,match,event,songs,result,events,win,eastern,track,lead,teams,science,human,construction,minister,germany,awards,available,throughout,training,style,body,museum,australian,health,seven,signed,chief,eventually,appointed,sea,centre,debut,tour,points,media,light,range,character,across,features,families,largest,indian,network,less,performance,players,refer,europe,sold,festival,usually,taken,despite,designed,committee,process,return,official,episode,institute,stage,followed,performed,japanese,personal,thus,arts,space,low,months,includes,china,study,middle,magazine,leading,japan,groups,aircraft,featured,federal,civil,rights,model,coach,canadian,books,remained,eight,type,independent,completed,capital,academy,instead,kingdom,organization,countries,studies,competition,sports,size,above,section,finished,gold,involved,reported,management,systems,industry,directed,market,fourth,movement,technology,bank,ground,campaign,base,lower,sent,rather,added,provided,coast,grand,historic,valley,conference,bridge,winning,approximately,films,chinese,awarded,degree,russian,shows,native,female,replaced,municipality,square,studio,medical,data,african,successful,mid,bay,attack,previous,operations,spanish,theatre,student,republic,beginning,provide,ship,primary,owned,writing,tournament,culture,introduced,texas,related,natural,parts,governor,reached,ireland,units,senior,decided,italian,whose,higher,africa,standard,income,professor,placed,regional,los,buildings,championships,active,novel,energy,generally,interest,via,economic,previously,stated,itself,channel,below,operation,leader,traditional,trade,structure,limited,runs,prior,regular,famous,saint,navy,foreign,listed,artist,catholic,airport,results,parliament,collection,unit,officer,goal,attended,command,staff,commission,lived,location,plays,commercial,places,foundation,significant,older,medal,self,scored,companies,highway,activities,programs,wide,musical,notable,library,numerous,paris,towards,individual,allowed,plant,property,annual,contract,whom,highest,initially,required,earlier,assembly,artists,rural,seat,practice,defeated,ended,soviet,length,spent,manager,press,associated,author,issues,additional,characters,lord,zealand,policy,engine,township,noted,historical,complete,financial,religious,mission,contains,nine,recent,represented,pennsylvania,administration,opening,secretary,lines,report,executive,youth,closed,theory,writer,italy,angeles,appearance,feature,queen,launched,legal,terms,entered,issue,edition,singer,greek,majority,background,source,anti,cultural,complex,changes,recording,stadium,islands,operated,particularly,basketball,month,uses,port,castle,mostly,names,fort,selected,increased,status,earth,subsequently,pacific,cover,variety,certain,goals,remains,upper,congress,becoming,studied,irish,nature,particular,loss,caused,chart,dr.,forced,create,era,retired,material,review,rate,singles,referred,larger,individuals,shown,provides,products,speed,democratic,poland,parish,olympics,cities,themselves,temple,wing,genus,households,serving,cost,wales,stations,passed,supported,view,cases,forms,actor,male,matches,males,stars,tracks,females,administrative,median,effect,biography,train,engineering,camp,offered,chairman,houses,mainly,19th,surface,therefore,nearly,score,ancient,subject,prime,seasons,claimed,experience,specific,jewish,failed,overall,believed,plot,troops,greater,spain,consists,broadcast,heavy,increase,raised,separate,campus,1980s,appears,presented,lies,composed,recently,influence,fifth,nations,creek,references,elections,britain,double,cast,meaning,earned,carried,producer,latter,housing,brothers,attempt,article,response,border,remaining,nearby,direct,ships,value,workers,politician,academic,label,1970s,commander,rule,fellow,residents,authority,editor,transport,dutch,projects,responsible,covered,territory,flight,races,defense,tower,emperor,albums,facilities,daily,stories,assistant,managed,primarily,quality,function,proposed,distribution,conditions,prize,journal,code,vice,newspaper,corps,highly,constructed,mayor,critical,secondary,corporation,rugby,regiment,ohio,appearances,serve,allow,nation,multiple,discovered,directly,scene,levels,growth,elements,acquired,1990s,officers,physical,20th,latin,host,jersey,graduated,arrived,issued,literature,metal,estate,vote,immediately,quickly,asian,competed,extended,produce,urban,1960s,promoted,contemporary,global,formerly,appear,industrial,types,opera,ministry,soldiers,commonly,mass,formation,smaller,typically,drama,shortly,density,senate,effects,iran,polish,prominent,naval,settlement,divided,basis,republican,languages,distance,treatment,continue,product,mile,sources,footballer,format,clubs,leadership,initial,offers,operating,avenue,officially,columbia,grade,squadron,fleet,percent,farm,leaders,agreement,likely,equipment,website,mount,grew,method,transferred,intended,renamed,iron,asia,reserve,capacity,politics,widely,activity,advanced,relations,scottish,dedicated,crew,founder,episodes,lack,amount,build,efforts,concept,follows,ordered,leaves,positive,economy,entertainment,affairs,memorial,ability,illinois,communities,color,text,railroad,scientific,focus,comedy,serves,exchange,environment,cars,direction,organized,firm,description,agency,analysis,purpose,destroyed,reception,planned,revealed,infantry,architecture,growing,featuring,household,candidate,removed,situated,models,knowledge,solo,technical,organizations,assigned,conducted,participated,largely,purchased,register,gained,combined,headquarters,adopted,potential,protection,scale,approach,spread,independence,mountains,titled,geography,applied,safety,mixed,accepted,continues,captured,rail,defeat,principal,recognized,lieutenant,mentioned,semi,owner,joint,liberal,actress,traffic,creation,basic,notes,unique,supreme,declared,simply,plants,sales,massachusetts,designated,parties,jazz,compared,becomes,resources,titles,concert,learning,remain,teaching,versions,content,alongside,revolution,sons,block,premier,impact,champions,districts,generation,estimated,volume,image,sites,account,roles,sport,quarter,providing,zone,yard,scoring,classes,presence,performances,representatives,hosted,split,taught,origin,olympic,claims,critics,facility,occurred,suffered,municipal,damage,defined,resulted,respectively,expanded,platform,draft,opposition,expected,educational,ontario,climate,reports,atlantic,surrounding,performing,reduced,ranked,allows,birth,nominated,younger,newly,kong,positions,theater,philadelphia,heritage,finals,disease,sixth,laws,reviews,constitution,tradition,swedish,theme,fiction,rome,medicine,trains,resulting,existing,deputy,environmental,labour,classical,develop,fans,granted,receive,alternative,begins,nuclear,fame,buried,connected,identified,palace,falls,letters,combat,sciences,effort,villages,inspired,regions,towns,conservative,chosen,animals,labor,attacks,materials,yards,steel,representative,orchestra,peak,entitled,officials,returning,reference,northwest,imperial,convention,examples,ocean,publication,painting,subsequent,frequently,religion,brigade,fully,sides,acts,cemetery,relatively,oldest,suggested,succeeded,achieved,application,programme,cells,votes,promotion,graduate,armed,supply,flying,communist,figures,literary,netherlands,korea,worldwide,citizens,1950s,faculty,draw,stock,seats,occupied,methods,unknown,articles,claim,holds,authorities,audience,sweden,interview,obtained,covers,settled,transfer,marked,allowing,funding,challenge,southeast,unlike,crown,rise,portion,transportation,sector,phase,properties,edge,tropical,standards,institutions,philosophy,legislative,hills,brand,fund,conflict,unable,founding,refused,attempts,metres,permanent,starring,applications,creating,effective,aired,extensive,employed,enemy,expansion,billboard,rank,battalion,multi,vehicle,fought,alliance,category,perform,federation,poetry,bronze,bands,entry,vehicles,bureau,maximum,billion,trees,intelligence,greatest,screen,refers,commissioned,gallery,injury,confirmed,setting,treaty,adult,americans,broadcasting,supporting,pilot,mobile,writers,programming,existence,squad,minnesota,copies,korean,provincial,sets,defence,offices,agricultural,internal,core,northeast,retirement,factory,actions,prevent,communications,ending,weekly,containing,functions,attempted,interior,weight,bowl,recognition,incorporated,increasing,ultimately,documentary,derived,attacked,lyrics,mexican,external,churches,centuries,metropolitan,selling,opposed,personnel,mill,visited,presidential,roads,pieces,norwegian,controlled,18th,rear,influenced,wrestling,weapons,launch,composer,locations,developing,circuit,specifically,studios,shared,canal,wisconsin,publishing,approved,domestic,consisted,determined,comic,establishment,exhibition,southwest,fuel,electronic,cape,converted,educated,melbourne,hits,wins,producing,norway,slightly,occur,surname,identity,represent,constituency,funds,proved,links,structures,athletic,birds,contest,users,poet,institution,display,receiving,rare,contained,guns,motion,piano,temperature,publications,passenger,contributed,toward,cathedral,inhabitants,architect,exist,athletics,muslim,courses,abandoned,signal,successfully,disambiguation,tennessee,dynasty,heavily,maryland,jews,representing,budget,weather,missouri,introduction,faced,pair,chapel,reform,height,vietnam,occurs,motor,cambridge,lands,focused,sought,patients,shape,invasion,chemical,importance,communication,selection,regarding,homes,voivodeship,maintained,borough,failure,aged,passing,agriculture,oregon,teachers,flow,philippines,trail,seventh,portuguese,resistance,reaching,negative,fashion,scheduled,downtown,universities,trained,skills,scenes,views,notably,typical,incident,candidates,engines,decades,composition,commune,chain,inc.,austria,sale,values,employees,chamber,regarded,winners,registered,task,investment,colonial,swiss,user,entirely,flag,stores,closely,entrance,laid,journalist,coal,equal,causes,turkish,quebec,techniques,promote,junction,easily,dates,kentucky,singapore,residence,violence,advance,survey,humans,expressed,passes,streets,distinguished,qualified,folk,establish,egypt,artillery,visual,improved,actual,finishing,medium,protein,switzerland,productions,operate,poverty,neighborhood,organisation,consisting,consecutive,sections,partnership,extension,reaction,factor,costs,bodies,device,ethnic,racial,flat,objects,chapter,improve,musicians,courts,controversy,membership,merged,wars,expedition,interests,arab,comics,gain,describes,mining,bachelor,crisis,joining,decade,1930s,distributed,habitat,routes,arena,cycle,divisions,briefly,vocals,directors,degrees,object,recordings,installed,adjacent,demand,voted,causing,businesses,ruled,grounds,starred,drawn,opposite,stands,formal,operates,persons,counties,compete,wave,israeli,ncaa,resigned,brief,greece,combination,demographics,historian,contain,commonwealth,musician,collected,argued,louisiana,session,cabinet,parliamentary,electoral,loan,profit,regularly,conservation,islamic,purchase,17th,charts,residential,earliest,designs,paintings,survived,moth,items,goods,grey,anniversary,criticism,images,discovery,observed,underground,progress,additionally,participate,thousands,reduce,elementary,owners,stating,iraq,resolution,capture,tank,rooms,hollywood,finance,queensland,reign,maintain,iowa,landing,broad,outstanding,circle,path,manufacturing,assistance,sequence,gmina,crossing,leads,universal,shaped,kings,attached,medieval,ages,metro,colony,affected,scholars,oklahoma,coastal,soundtrack,painted,attend,definition,meanwhile,purposes,trophy,require,marketing,popularity,cable,mathematics,mississippi,represents,scheme,appeal,distinct,factors,acid,subjects,roughly,terminal,economics,senator,diocese,prix,contrast,argentina,czech,wings,relief,stages,duties,16th,novels,accused,whilst,equivalent,charged,measure,documents,couples,request,danish,defensive,guide,devices,statistics,credited,tries,passengers,allied,frame,puerto,peninsula,concluded,instruments,wounded,differences,associate,forests,afterwards,replace,requirements,aviation,solution,offensive,ownership,inner,legislation,hungarian,contributions,actors,translated,denmark,steam,depending,aspects,assumed,injured,severe,admitted,determine,shore,technique,arrival,measures,translation,debuted,delivered,returns,rejected,separated,visitors,damaged,storage,accompanied,markets,industries,losses,gulf,charter,strategy,corporate,socialist,somewhat,significantly,physics,mounted,satellite,experienced,constant,relative,pattern,restored,belgium,connecticut,partners,harvard,retained,networks,protected,mode,artistic,parallel,collaboration,debate,involving,journey,linked,salt,authors,components,context,occupation,requires,occasionally,policies,tamil,ottoman,revolutionary,hungary,poem,versus,gardens,amongst,audio,makeup,frequency,meters,orthodox,continuing,suggests,legislature,coalition,guitarist,eighth,classification,practices,soil,tokyo,instance,limit,coverage,considerable,ranking,colleges,cavalry,centers,daughters,twin,equipped,broadway,narrow,hosts,rates,domain,boundary,arranged,12th,whereas,brazilian,forming,rating,strategic,competitions,trading,covering,baltimore,commissioner,infrastructure,origins,replacement,praised,disc,collections,expression,ukraine,driven,edited,austrian,solar,ensure,premiered,successor,wooden,operational,hispanic,concerns,rapid,prisoners,childhood,meets,influential,tunnel,employment,tribe,qualifying,adapted,temporary,celebrated,appearing,increasingly,depression,adults,cinema,entering,laboratory,script,flows,romania,accounts,fictional,pittsburgh,achieve,monastery,franchise,formally,tools,newspapers,revival,sponsored,processes,vienna,springs,missions,classified,13th,annually,branches,lakes,gender,manner,advertising,normally,maintenance,adding,characteristics,integrated,decline,modified,strongly,critic,victims,malaysia,arkansas,nazi,restoration,powered,monument,hundreds,depth,15th,controversial,admiral,criticized,brick,honorary,initiative,output,visiting,birmingham,progressive,existed,carbon,1920s,credits,colour,rising,hence,defeating,superior,filmed,listing,column,surrounded,orleans,principles,territories,struck,participation,indonesia,movements,index,commerce,conduct,constitutional,spiritual,ambassador,vocal,completion,edinburgh,residing,tourism,finland,bears,medals,resident,themes,visible,indigenous,involvement,basin,electrical,ukrainian,concerts,boats,styles,processing,rival,drawing,vessels,experimental,declined,touring,supporters,compilation,coaching,cited,dated,roots,string,explained,transit,traditionally,poems,minimum,representation,14th,releases,effectively,architectural,triple,indicated,greatly,elevation,clinical,printed,10th,proposal,peaked,producers,romanized,rapidly,stream,innings,meetings,counter,householder,honour,lasted,agencies,document,exists,surviving,experiences,honors,landscape,hurricane,harbor,panel,competing,profile,vessel,farmers,lists,revenue,exception,customers,11th,participants,wildlife,utah,bible,gradually,preserved,replacing,symphony,begun,longest,siege,provinces,mechanical,genre,transmission,agents,executed,videos,benefits,funded,rated,instrumental,ninth,similarly,dominated,destruction,passage,technologies,thereafter,outer,facing,affiliated,opportunities,instrument,governments,scholar,evolution,channels,shares,sessions,widespread,occasions,engineers,scientists,signing,battery,competitive,alleged,eliminated,supplies,judges,hampshire,regime,portrayed,penalty,taiwan,denied,submarine,scholarship,substantial,transition,victorian,http,nevertheless,filed,supports,continental,tribes,ratio,doubles,useful,honours,blocks,principle,retail,departure,ranks,patrol,yorkshire,vancouver,inter,extent,afghanistan,strip,railways,component,organ,symbol,categories,encouraged,abroad,civilian,periods,traveled,writes,struggle,immediate,recommended,adaptation,egyptian,graduating,assault,drums,nomination,historically,voting,allies,detailed,achievement,percentage,arabic,assist,frequent,toured,apply,and/or,intersection,maine,touchdown,throne,produces,contribution,emerged,obtain,archbishop,seek,researchers,remainder,populations,clan,finnish,overseas,fifa,licensed,chemistry,festivals,mediterranean,injuries,animated,seeking,publisher,volumes,limits,venue,jerusalem,generated,trials,islam,youngest,ruling,glasgow,germans,songwriter,persian,municipalities,donated,viewed,belgian,cooperation,posted,tech,dual,volunteer,settlers,commanded,claiming,approval,delhi,usage,terminus,partly,electricity,locally,editions,premiere,absence,belief,traditions,statue,indicate,manor,stable,attributed,possession,managing,viewers,chile,overview,seed,regulations,essential,minority,cargo,segment,endemic,forum,deaths,monthly,playoffs,erected,practical,machines,suburb,relation,mrs.,descent,indoor,continuous,characterized,solutions,caribbean,rebuilt,serbian,summary,contested,psychology,pitch,attending,muhammad,tenure,drivers,diameter,assets,venture,punk,airlines,concentration,athletes,volunteers,pages,mines,influences,sculpture,protest,ferry,behalf,drafted,apparent,furthermore,ranging,romanian,democracy,lanka,significance,linear,d.c.,certified,voters,recovered,tours,demolished,boundaries,assisted,identify,grades,elsewhere,mechanism,1940s,reportedly,aimed,conversion,suspended,photography,departments,beijing,locomotives,publicly,dispute,magazines,resort,conventional,platforms,internationally,capita,settlements,dramatic,derby,establishing,involves,statistical,implementation,immigrants,exposed,diverse,layer,vast,ceased,connections,belonged,interstate,uefa,organised,abuse,deployed,cattle,partially,filming,mainstream,reduction,automatic,rarely,subsidiary,decides,merger,comprehensive,displayed,amendment,guinea,exclusively,manhattan,concerning,commons,radical,serbia,baptist,buses,initiated,portrait,harbour,choir,citizen,sole,unsuccessful,manufactured,enforcement,connecting,increases,patterns,sacred,muslims,clothing,hindu,unincorporated,sentenced,advisory,tanks,campaigns,fled,repeated,remote,rebellion,implemented,texts,fitted,tribute,writings,sufficient,ministers,21st,devoted,jurisdiction,coaches,interpretation,pole,businessman,peru,sporting,prices,cuba,relocated,opponent,arrangement,elite,manufacturer,responded,suitable,distinction,calendar,dominant,tourist,earning,prefecture,ties,preparation,anglo,pursue,worship,archaeological,chancellor,bangladesh,scores,traded,lowest,horror,outdoor,biology,commented,specialized,loop,arriving,farming,housed,historians,'the,patent,pupils,christianity,opponents,athens,northwestern,maps,promoting,reveals,flights,exclusive,lions,norfolk,hebrew,extensively,eldest,shops,acquisition,virtual,renowned,margin,ongoing,essentially,iranian,alternate,sailed,reporting,conclusion,originated,temperatures,exposure,secured,landed,rifle,framework,identical,martial,focuses,topics,ballet,fighters,belonging,wealthy,negotiations,evolved,bases,oriented,acres,democrat,heights,restricted,vary,graduation,aftermath,chess,illness,participating,vertical,collective,immigration,demonstrated,leaf,completing,organic,missile,leeds,eligible,grammar,confederate,improvement,congressional,wealth,cincinnati,spaces,indicates,corresponding,reaches,repair,isolated,taxes,congregation,ratings,leagues,diplomatic,submitted,winds,awareness,photographs,maritime,nigeria,accessible,animation,restaurants,philippine,inaugural,dismissed,armenian,illustrated,reservoir,speakers,programmes,resource,genetic,interviews,camps,regulation,computers,preferred,travelled,comparison,distinctive,recreation,requested,southeastern,dependent,brisbane,breeding,playoff,expand,bonus,gauge,departed,qualification,inspiration,shipping,slaves,variations,shield,theories,munich,recognised,emphasis,favour,variable,seeds,undergraduate,territorial,intellectual,qualify,mini,banned,pointed,democrats,assessment,judicial,examination,attempting,objective,partial,characteristic,hardware,pradesh,execution,ottawa,metre,drum,exhibitions,withdrew,attendance,phrase,journalism,logo,measured,error,christians,trio,protestant,theology,respective,atmosphere,buddhist,substitute,curriculum,fundamental,outbreak,rabbi,intermediate,designation,globe,liberation,simultaneously,diseases,experiments,locomotive,difficulties,mainland,nepal,relegated,contributing,database,developments,veteran,carries,ranges,instruction,lodge,protests,obama,newcastle,experiment,physician,describing,challenges,corruption,delaware,adventures,ensemble,succession,renaissance,tenth,altitude,receives,approached,crosses,syria,croatia,warsaw,professionals,improvements,worn,airline,compound,permitted,preservation,reducing,printing,scientist,activist,comprises,sized,societies,enters,ruler,gospel,earthquake,extend,autonomous,croatian,serial,decorated,relevant,ideal,grows,grass,tier,towers,wider,welfare,columns,alumni,descendants,interface,reserves,banking,colonies,manufacturers,magnetic,closure,pitched,vocalist,preserve,enrolled,cancelled,equation,2000s,nickname,bulgaria,heroes,exile,mathematical,demands,input,structural,tube,stem,approaches,argentine,axis,manuscript,inherited,depicted,targets,visits,veterans,regard,removal,efficiency,organisations,concepts,lebanon,manga,petersburg,rally,supplied,amounts,yale,tournaments,broadcasts,signals,pilots,azerbaijan,architects,enzyme,literacy,declaration,placing,batting,incumbent,bulgarian,consistent,poll,defended,landmark,southwestern,raid,resignation,travels,casualties,prestigious,namely,aims,recipient,warfare,readers,collapse,coached,controls,volleyball,coup,lesser,verse,pairs,exhibited,proteins,molecular,abilities,integration,consist,aspect,advocate,administered,governing,hospitals,commenced,coins,lords,variation,resumed,canton,artificial,elevated,palm,difficulty,civic,efficient,northeastern,inducted,radiation,affiliate,boards,stakes,byzantine,consumption,freight,interaction,oblast,numbered,seminary,contracts,extinct,predecessor,bearing,cultures,functional,neighboring,revised,cylinder,grants,narrative,reforms,athlete,tales,reflect,presidency,compositions,specialist,cricketer,founders,sequel,widow,disbanded,associations,backed,thereby,pitcher,commanding,boulevard,singers,crops,militia,reviewed,centres,waves,consequently,fortress,tributary,portions,bombing,excellence,nest,payment,mars,plaza,unity,victories,scotia,farms,nominations,variant,attacking,suspension,installation,graphics,estates,comments,acoustic,destination,venues,surrender,retreat,libraries,quarterback,customs,berkeley,collaborated,gathered,syndrome,dialogue,recruited,shanghai,neighbouring,psychological,saudi,moderate,exhibit,innovation,depot,binding,brunswick,situations,certificate,actively,shakespeare,editorial,presentation,ports,relay,nationalist,methodist,archives,experts,maintains,collegiate,bishops,maintaining,temporarily,embassy,essex,wellington,connects,reformed,bengal,recalled,inches,doctrine,deemed,legendary,reconstruction,statements,palestinian,meter,achievements,riders,interchange,spots,auto,accurate,chorus,dissolved,missionary,thai,operators,e.g.,generations,failing,delayed,cork,nashville,perceived,venezuela,cult,emerging,tomb,abolished,documented,gaining,canyon,episcopal,stored,assists,compiled,kerala,kilometers,mosque,grammy,theorem,unions,segments,glacier,arrives,theatrical,circulation,conferences,chapters,displays,circular,authored,conductor,fewer,dimensional,nationwide,liga,yugoslavia,peer,vietnamese,fellowship,armies,regardless,relating,dynamic,politicians,mixture,serie,somerset,imprisoned,posts,beliefs,beta,layout,independently,electronics,provisions,fastest,logic,headquartered,creates,challenged,beaten,appeals,plains,protocol,graphic,accommodate,iraqi,midfielder,span,commentary,freestyle,reflected,palestine,lighting,burial,virtually,backing,prague,tribal,heir,identification,prototype,criteria,dame,arch,tissue,footage,extending,procedures,predominantly,updated,rhythm,preliminary,cafe,disorder,prevented,suburbs,discontinued,retiring,oral,followers,extends,massacre,journalists,conquest,larvae,pronounced,behaviour,diversity,sustained,addressed,geographic,restrictions,voiced,milwaukee,dialect,quoted,grid,nationally,nearest,roster,twentieth,separation,indies,manages,citing,intervention,guidance,severely,migration,artwork,focusing,rivals,trustees,varied,enabled,committees,centered,skating,slavery,cardinals,forcing,tasks,auckland,youtube,argues,colored,advisor,mumbai,requiring,theological,registration,refugees,nineteenth,survivors,runners,colleagues,priests,contribute,variants,workshop,concentrated,creator,lectures,temples,exploration,requirement,interactive,navigation,companion,perth,allegedly,releasing,citizenship,observation,stationed,ph.d.,sheep,breed,discovers,encourage,kilometres,journals,performers,isle,saskatchewan,hybrid,hotels,lancashire,dubbed,airfield,anchor,suburban,theoretical,sussex,anglican,stockholm,permanently,upcoming,privately,receiver,optical,highways,congo,colours,aggregate,authorized,repeatedly,varies,fluid,innovative,transformed,praise,convoy,demanded,discography,attraction,export,audiences,ordained,enlisted,occasional,westminster,syrian,heavyweight,bosnia,consultant,eventual,improving,aires,wickets,epic,reactions,scandal,i.e.,discrimination,buenos,patron,investors,conjunction,testament,construct,encountered,celebrity,expanding,georgian,brands,retain,underwent,algorithm,foods,provision,orbit,transformation,associates,tactical,compact,varieties,stability,refuge,gathering,moreover,manila,configuration,gameplay,discipline,entity,comprising,composers,skill,monitoring,ruins,museums,sustainable,aerial,altered,codes,voyage,friedrich,conflicts,storyline,travelling,conducting,merit,indicating,referendum,currency,encounter,particles,automobile,workshops,acclaimed,inhabited,doctorate,cuban,phenomenon,dome,enrollment,tobacco,governance,trend,equally,manufacture,hydrogen,grande,compensation,download,pianist,grain,shifted,neutral,evaluation,define,cycling,seized,array,relatives,motors,firms,varying,automatically,restore,nicknamed,findings,governed,investigate,manitoba,administrator,vital,integral,indonesian,confusion,publishers,enable,geographical,inland,naming,civilians,reconnaissance,indianapolis,lecturer,deer,tourists,exterior,rhode,bassist,symbols,scope,ammunition,yuan,poets,punjab,nursing,cent,developers,estimates,presbyterian,nasa,holdings,generate,renewed,computing,cyprus,arabia,duration,compounds,gastropod,permit,valid,touchdowns,facade,interactions,mineral,practiced,allegations,consequence,goalkeeper,baronet,copyright,uprising,carved,targeted,competitors,mentions,sanctuary,fees,pursued,tampa,chronicle,capabilities,specified,specimens,toll,accounting,limestone,staged,upgraded,philosophical,streams,guild,revolt,rainfall,supporter,princeton,terrain,hometown,probability,assembled,paulo,surrey,voltage,developer,destroyer,floors,lineup,curve,prevention,potentially,onwards,trips,imposed,hosting,striking,strict,admission,apartments,solely,utility,proceeded,observations,euro,incidents,vinyl,profession,haven,distant,expelled,rivalry,runway,torpedo,zones,shrine,dimensions,investigations,lithuania,idaho,pursuit,copenhagen,considerably,locality,wireless,decrease,genes,thermal,deposits,hindi,habitats,withdrawn,biblical,monuments,casting,plateau,thesis,managers,flooding,assassination,acknowledged,interim,inscription,guided,pastor,finale,insects,transported,activists,marshal,intensity,airing,cardiff,proposals,lifestyle,prey,herald,capitol,aboriginal,measuring,lasting,interpreted,occurring,desired,drawings,healthcare,panels,elimination,oslo,ghana,blog,sabha,intent,superintendent,governors,bankruptcy,p.m.,equity,disk,layers,slovenia,prussia,quartet,mechanics,graduates,politically,monks,screenplay,nato,absorbed,topped,petition,bold,morocco,exhibits,canterbury,publish,rankings,crater,dominican,enhanced,planes,lutheran,governmental,joins,collecting,brussels,unified,streak,strategies,flagship,surfaces,oval,archive,etymology,imprisonment,instructor,noting,remix,opposing,servant,rotation,width,trans,maker,synthesis,excess,tactics,snail,ltd.,lighthouse,sequences,cornwall,plantation,mythology,performs,foundations,populated,horizontal,speedway,activated,performer,diving,conceived,edmonton,subtropical,environments,prompted,semifinals,caps,bulk,treasury,recreational,telegraph,continent,portraits,relegation,catholics,graph,velocity,rulers,endangered,secular,observer,learns,inquiry,idol,dictionary,certification,estimate,cluster,armenia,observatory,revived,nadu,consumers,hypothesis,manuscripts,contents,arguments,editing,trails,arctic,essays,belfast,acquire,promotional,undertaken,corridor,proceedings,antarctic,millennium,labels,delegates,vegetation,acclaim,directing,substance,outcome,diploma,philosopher,malta,albanian,vicinity,degc,legends,regiments,consent,terrorist,scattered,presidents,gravity,orientation,deployment,duchy,refuses,estonia,crowned,separately,renovation,rises,wilderness,objectives,agreements,empress,slopes,inclusion,equality,decree,ballot,criticised,rochester,recurring,struggled,disabled,henri,poles,prussian,convert,bacteria,poorly,sudan,geological,wyoming,consistently,minimal,withdrawal,interviewed,proximity,repairs,initiatives,pakistani,republicans,propaganda,viii,abstract,commercially,availability,mechanisms,naples,discussions,underlying,lens,proclaimed,advised,spelling,auxiliary,attract,lithuanian,editors,o'brien,accordance,measurement,novelist,ussr,formats,councils,contestants,indie,facebook,parishes,barrier,battalions,sponsor,consulting,terrorism,implement,uganda,crucial,unclear,notion,distinguish,collector,attractions,filipino,ecology,investments,capability,renovated,iceland,albania,accredited,scouts,armor,sculptor,cognitive,errors,gaming,condemned,successive,consolidated,baroque,entries,regulatory,reserved,treasurer,variables,arose,technological,rounded,provider,rhine,agrees,accuracy,genera,decreased,frankfurt,ecuador,edges,particle,rendered,calculated,careers,faction,rifles,americas,gaelic,portsmouth,resides,merchants,fiscal,premises,coin,draws,presenter,acceptance,ceremonies,pollution,consensus,membrane,brigadier,nonetheless,genres,supervision,predicted,magnitude,finite,differ,ancestry,vale,delegation,removing,proceeds,placement,emigrated,siblings,molecules,payments,considers,demonstration,proportion,newer,valve,achieving,confederation,continuously,luxury,notre,introducing,coordinates,charitable,squadrons,disorders,geometry,winnipeg,ulster,loans,longtime,receptor,preceding,belgrade,mandate,wrestler,neighbourhood,factories,buddhism,imported,sectors,protagonist,steep,elaborate,prohibited,artifacts,prizes,pupil,cooperative,sovereign,subspecies,carriers,allmusic,nationals,settings,autobiography,neighborhoods,analog,facilitate,voluntary,jointly,newfoundland,organizing,raids,exercises,nobel,machinery,baltic,crop,granite,dense,websites,mandatory,seeks,surrendered,anthology,comedian,bombs,slot,synopsis,critically,arcade,marking,equations,halls,indo,inaugurated,embarked,speeds,clause,invention,premiership,likewise,presenting,demonstrate,designers,organize,examined,km/h,bavaria,troop,referee,detection,zurich,prairie,rapper,wingspan,eurovision,luxembourg,slovakia,inception,disputed,mammals,entrepreneur,makers,evangelical,yield,clergy,trademark,defunct,allocated,depicting,volcanic,batted,conquered,sculptures,providers,reflects,armoured,locals,walt,herzegovina,contracted,entities,sponsorship,prominence,flowing,ethiopia,marketed,corporations,withdraw,carnegie,induced,investigated,portfolio,flowering,opinions,viewing,classroom,donations,bounded,perception,leicester,fruits,charleston,academics,statute,complaints,smallest,deceased,petroleum,resolved,commanders,algebra,southampton,modes,cultivation,transmitter,spelled,obtaining,sizes,acre,pageant,bats,abbreviated,correspondence,barracks,feast,tackles,raja,derives,geology,disputes,translations,counted,constantinople,seating,macedonia,preventing,accommodation,homeland,explored,invaded,provisional,transform,sphere,unsuccessfully,missionaries,conservatives,highlights,traces,organisms,openly,dancers,fossils,absent,monarchy,combining,lanes,stint,dynamics,chains,missiles,screening,module,tribune,generating,miners,nottingham,seoul,unofficial,owing,linking,rehabilitation,citation,louisville,mollusk,depicts,differential,zimbabwe,kosovo,recommendations,responses,pottery,scorer,aided,exceptions,dialects,telecommunications,defines,elderly,lunar,coupled,flown,25th,espn,formula_1,bordered,fragments,guidelines,gymnasium,valued,complexity,papal,presumably,maternal,challenging,reunited,advancing,comprised,uncertain,favorable,twelfth,correspondent,nobility,livestock,expressway,chilean,tide,researcher,emissions,profits,lengths,accompanying,witnessed,itunes,drainage,slope,reinforced,feminist,sanskrit,develops,physicians,outlets,isbn,coordinator,averaged,termed,occupy,diagnosed,yearly,humanitarian,prospect,spacecraft,stems,enacted,linux,ancestors,karnataka,constitute,immigrant,thriller,ecclesiastical,generals,celebrations,enhance,heating,advocated,evident,advances,bombardment,watershed,shuttle,wicket,twitter,adds,branded,teaches,schemes,pension,advocacy,conservatory,cairo,varsity,freshwater,providence,seemingly,shells,cuisine,specially,peaks,intensive,publishes,trilogy,skilled,nacional,unemployment,destinations,parameters,verses,trafficking,determination,infinite,savings,alignment,linguistic,countryside,dissolution,measurements,advantages,licence,subfamily,highlands,modest,regent,algeria,crest,teachings,knockout,brewery,combine,conventions,descended,chassis,primitive,fiji,explicitly,cumberland,uruguay,laboratories,bypass,elect,informal,preceded,holocaust,tackle,minneapolis,quantity,securities,console,doctoral,religions,commissioners,expertise,unveiled,precise,diplomat,standings,infant,disciplines,sicily,endorsed,systematic,charted,armored,mild,lateral,townships,hurling,prolific,invested,wartime,compatible,galleries,moist,battlefield,decoration,convent,tubes,terrestrial,nominee,requests,delegate,leased,dubai,polar,applying,addresses,munster,sings,commercials,teamed,dances,eleventh,midland,cedar,flee,sandstone,snails,inspection,divide,asset,themed,comparable,paramount,dairy,archaeology,intact,institutes,rectangular,instances,phases,reflecting,substantially,applies,vacant,lacked,copa,coloured,encounters,sponsors,encoded,possess,revenues,ucla,chaired,a.m.,enabling,playwright,stoke,sociology,tibetan,frames,motto,financing,illustrations,gibraltar,chateau,bolivia,transmitted,enclosed,persuaded,urged,folded,suffolk,regulated,bros.,submarines,myth,oriental,malaysian,effectiveness,narrowly,acute,sunk,replied,utilized,tasmania,consortium,quantities,gains,parkway,enlarged,sided,employers,adequate,accordingly,assumption,ballad,mascot,distances,peaking,saxony,projected,affiliation,limitations,metals,guatemala,scots,theaters,kindergarten,verb,employer,differs,discharge,controller,seasonal,marching,guru,campuses,avoided,vatican,maori,excessive,chartered,modifications,caves,monetary,sacramento,mixing,institutional,celebrities,irrigation,shapes,broadcaster,anthem,attributes,demolition,offshore,specification,surveys,yugoslav,contributor,auditorium,lebanese,capturing,airports,classrooms,chennai,paths,tendency,determining,lacking,upgrade,sailors,detected,kingdoms,sovereignty,freely,decorative,momentum,scholarly,georges,gandhi,speculation,transactions,undertook,interact,similarities,cove,teammate,constituted,painters,tends,madagascar,partnerships,afghan,personalities,attained,rebounds,masses,synagogue,reopened,asylum,embedded,imaging,catalogue,defenders,taxonomy,fiber,afterward,appealed,communists,lisbon,rica,judaism,adviser,batsman,ecological,commands,lgbt,cooling,accessed,wards,shiva,employs,thirds,scenic,worcester,tallest,contestant,humanities,economist,textile,constituencies,motorway,tram,percussion,cloth,leisure,1880s,baden,flags,resemble,riots,coined,sitcom,composite,implies,daytime,tanzania,penalties,optional,competitor,excluded,steering,reversed,autonomy,reviewer,breakthrough,professionally,damages,pomeranian,deputies,valleys,ventures,highlighted,electorate,mapping,shortened,executives,tertiary,specimen,launching,bibliography,sank,pursuing,binary,descendant,marched,natives,ideology,turks,adolf,archdiocese,tribunal,exceptional,nigerian,preference,fails,loading,comeback,vacuum,favored,alter,remnants,consecrated,spectators,trends,patriarch,feedback,paved,sentences,councillor,astronomy,advocates,broader,commentator,commissions,identifying,revealing,theatres,incomplete,enables,constituent,reformation,tract,haiti,atmospheric,screened,explosive,czechoslovakia,acids,symbolic,subdivision,liberals,incorporate,challenger,erie,filmmaker,laps,kazakhstan,organizational,evolutionary,chemicals,dedication,riverside,fauna,moths,maharashtra,annexed,gen.,resembles,underwater,garnered,timeline,remake,suited,educator,hectares,automotive,feared,latvia,finalist,narrator,portable,airways,plaque,designing,villagers,licensing,flank,statues,struggles,deutsche,migrated,cellular,jacksonville,wimbledon,defining,highlight,preparatory,planets,cologne,employ,frequencies,detachment,readily,libya,resign,halt,helicopters,reef,landmarks,collaborative,irregular,retaining,helsinki,folklore,weakened,viscount,interred,professors,memorable,mega,repertoire,rowing,dorsal,albeit,progressed,operative,coronation,liner,telugu,domains,philharmonic,detect,bengali,synthetic,tensions,atlas,dramatically,paralympics,xbox,shire,kiev,lengthy,sued,notorious,seas,screenwriter,transfers,aquatic,pioneers,unesco,radius,abundant,tunnels,syndicated,inventor,accreditation,janeiro,exeter,ceremonial,omaha,cadet,predators,resided,prose,slavic,precision,abbot,deity,engaging,cambodia,estonian,compliance,demonstrations,protesters,reactor,commodore,successes,chronicles,mare,extant,listings,minerals,tonnes,parody,cultivated,traders,pioneering,supplement,slovak,preparations,collision,partnered,vocational,atoms,malayalam,welcomed,documentation,curved,functioning,presently,formations,incorporates,nazis,botanical,nucleus,ethical,greeks,metric,automated,whereby,stance,europeans,duet,disability,purchasing,email,telescope,displaced,sodium,comparative,processor,inning,precipitation,aesthetic,import,coordination,feud,alternatively,mobility,tibet,regained,succeeding,hierarchy,apostolic,catalog,reproduction,inscriptions,vicar,clusters,posthumously,rican,loosely,additions,photographic,nowadays,selective,derivative,keyboards,guides,collectively,affecting,combines,operas,networking,decisive,terminated,continuity,finishes,ancestor,consul,heated,simulation,leipzig,incorporating,georgetown,formula_2,circa,forestry,portrayal,councillors,advancement,complained,forewings,confined,transaction,definitions,reduces,televised,1890s,rapids,phenomena,belarus,alps,landscapes,quarterly,specifications,commemorate,continuation,isolation,antenna,downstream,patents,ensuing,tended,saga,lifelong,columnist,labeled,gymnastics,papua,anticipated,demise,encompasses,madras,antarctica,interval,icon,rams,midlands,ingredients,priory,strengthen,rouge,explicit,gaza,aging,securing,anthropology,listeners,adaptations,underway,vista,malay,fortified,lightweight,violations,concerto,financed,jesuit,observers,trustee,descriptions,nordic,resistant,opted,accepts,prohibition,andhra,inflation,negro,wholly,imagery,spur,instructed,gloucester,cycles,middlesex,destroyers,statewide,evacuated,hyderabad,peasants,mice,shipyard,coordinate,pitching,colombian,exploring,numbering,compression,countess,hiatus,exceed,raced,archipelago,traits,soils,o'connor,vowel,android,facto,angola,amino,holders,logistics,circuits,emergence,kuwait,partition,emeritus,outcomes,submission,promotes,barack,negotiated,loaned,stripped,50th,excavations,treatments,fierce,participant,exports,decommissioned,cameo,remarked,residences,fuselage,mound,undergo,quarry,node,midwest,specializing,occupies,etc.,showcase,molecule,offs,modules,salon,exposition,revision,peers,positioned,hunters,competes,algorithms,reside,zagreb,calcium,uranium,silicon,airs,counterpart,outlet,collectors,sufficiently,canberra,inmates,anatomy,ensuring,curves,aviv,firearms,basque,volcano,thrust,sheikh,extensions,installations,aluminum,darker,sacked,emphasized,aligned,asserted,pseudonym,spanning,decorations,eighteenth,orbital,spatial,subdivided,notation,decay,macedonian,amended,declining,cyclist,feat,unusually,commuter,birthplace,latitude,activation,overhead,30th,finalists,whites,encyclopedia,tenor,qatar,survives,complement,concentrations,uncommon,astronomical,bangalore,pius,genome,memoir,recruit,prosecutor,modification,paired,container,basilica,arlington,displacement,germanic,mongolia,proportional,debates,matched,calcutta,rows,tehran,aerospace,prevalent,arise,lowland,24th,spokesman,supervised,advertisements,clash,tunes,revelation,wanderers,quarterfinals,fisheries,steadily,memoirs,pastoral,renewable,confluence,acquiring,strips,slogan,upstream,scouting,analyst,practitioners,turbine,strengthened,heavier,prehistoric,plural,excluding,isles,persecution,turin,rotating,villain,hemisphere,unaware,arabs,corpus,relied,singular,unanimous,schooling,passive,angles,dominance,instituted,aria,outskirts,balanced,beginnings,financially,structured,parachute,viewer,attitudes,subjected,escapes,derbyshire,erosion,addressing,styled,declaring,originating,colts,adjusted,stained,occurrence,fortifications,baghdad,nitrogen,localities,yemen,galway,debris,lodz,victorious,pharmaceutical,substances,unnamed,dwelling,atop,developmental,activism,voter,refugee,forested,relates,overlooking,genocide,kannada,insufficient,oversaw,partisan,dioxide,recipients,factions,mortality,capped,expeditions,receptors,reorganized,prominently,atom,flooded,flute,orchestral,scripts,mathematician,airplay,detached,rebuilding,dwarf,brotherhood,salvation,expressions,arabian,cameroon,poetic,recruiting,bundesliga,inserted,scrapped,disabilities,evacuation,pasha,undefeated,crafts,rituals,aluminium,norm,pools,submerged,occupying,pathway,exams,prosperity,wrestlers,promotions,basal,permits,nationalism,trim,merge,gazette,tributaries,transcription,caste,porto,emerge,modeled,adjoining,counterparts,paraguay,redevelopment,renewal,unreleased,equilibrium,similarity,minorities,soviets,comprise,nodes,tasked,unrelated,expired,johan,precursor,examinations,electrons,socialism,exiled,admiralty,floods,wigan,nonprofit,lacks,brigades,screens,repaired,hanover,fascist,labs,osaka,delays,judged,statutory,colt,col.,offspring,solving,bred,assisting,retains,somalia,grouped,corresponds,tunisia,chaplain,eminent,chord,22nd,spans,viral,innovations,possessions,mikhail,kolkata,icelandic,implications,introduces,racism,workforce,alto,compulsory,admits,censorship,onset,reluctant,inferior,iconic,progression,liability,turnout,satellites,behavioral,coordinated,exploitation,posterior,averaging,fringe,krakow,mountainous,greenwich,para,plantations,reinforcements,offerings,famed,intervals,constraints,individually,nutrition,1870s,taxation,threshold,tomatoes,fungi,contractor,ethiopian,apprentice,diabetes,wool,gujarat,honduras,norse,bucharest,23rd,arguably,accompany,prone,teammates,perennial,vacancy,polytechnic,deficit,okinawa,functionality,reminiscent,tolerance,transferring,myanmar,concludes,neighbours,hydraulic,economically,slower,plots,charities,synod,investor,catholicism,identifies,bronx,interpretations,adverse,judiciary,hereditary,nominal,sensor,symmetry,cubic,triangular,tenants,divisional,outreach,representations,passages,undergoing,cartridge,testified,exceeded,impacts,limiting,railroads,defeats,regain,rendering,humid,retreated,reliability,governorate,antwerp,infamous,implied,packaging,lahore,trades,billed,extinction,ecole,rejoined,recognizes,projection,qualifications,stripes,forts,socially,lexington,accurately,sexuality,westward,wikipedia,pilgrimage,abolition,choral,stuttgart,nests,expressing,strikeouts,assessed,monasteries,reconstructed,humorous,marxist,fertile,consort,urdu,patronage,peruvian,devised,lyric,baba,nassau,communism,extraction,popularly,markings,inability,litigation,accounted,processed,emirates,tempo,cadets,eponymous,contests,broadly,oxide,courtyard,frigate,directory,apex,outline,regency,chiefly,patrols,secretariat,cliffs,residency,privy,armament,australians,dorset,geometric,genetics,scholarships,fundraising,flats,demographic,multimedia,captained,documentaries,updates,canvas,blockade,guerrilla,songwriting,administrators,intake,drought,implementing,fraction,cannes,refusal,inscribed,meditation,announcing,exported,ballots,formula_3,curator,basel,arches,flour,subordinate,confrontation,gravel,simplified,berkshire,patriotic,tuition,employing,servers,castile,posting,combinations,discharged,miniature,mutations,constellation,incarnation,ideals,necessity,granting,ancestral,crowds,pioneered,mormon,methodology,rama,indirect,complexes,bavarian,patrons,uttar,skeleton,bollywood,flemish,viable,bloc,breeds,triggered,sustainability,tailed,referenced,comply,takeover,latvian,homestead,platoon,communal,nationality,excavated,targeting,sundays,posed,physicist,turret,endowment,marginal,dispatched,commentators,renovations,attachment,collaborations,ridges,barriers,obligations,shareholders,prof.,defenses,presided,rite,backgrounds,arbitrary,affordable,gloucestershire,thirteenth,inlet,miniseries,possesses,detained,pressures,subscription,realism,solidarity,proto,postgraduate,noun,burmese,abundance,homage,reasoning,anterior,robust,fencing,shifting,vowels,garde,profitable,loch,anchored,coastline,samoa,terminology,prostitution,magistrate,venezuelan,speculated,regulate,fixture,colonists,digit,induction,manned,expeditionary,computational,centennial,principally,vein,preserving,engineered,numerical,cancellation,conferred,continually,borne,seeded,advertisement,unanimously,treaties,infections,ions,sensors,lowered,amphibious,lava,fourteenth,bahrain,niagara,nicaragua,squares,congregations,26th,periodic,proprietary,1860s,contributors,seller,overs,emission,procession,presumed,illustrator,zinc,gases,tens,applicable,stretches,reproductive,sixteenth,apparatus,accomplishments,canoe,guam,oppose,recruitment,accumulated,limerick,namibia,staging,remixes,ordnance,uncertainty,pedestrian,temperate,treason,deposited,registry,cerambycidae,attracting,lankan,reprinted,shipbuilding,homosexuality,neurons,eliminating,1900s,resume,ministries,beneficial,blackpool,surplus,northampton,licenses,constructing,announcer,standardized,alternatives,taipei,inadequate,failures,yields,medalist,titular,obsolete,torah,burlington,predecessors,lublin,retailers,castles,depiction,issuing,gubernatorial,propulsion,tiles,damascus,discs,alternating,pomerania,peasant,tavern,redesignated,27th,illustration,focal,mans,codex,specialists,productivity,antiquity,controversies,promoter,pits,companions,behaviors,lyrical,prestige,creativity,swansea,dramas,approximate,feudal,tissues,crude,campaigned,unprecedented,chancel,amendments,surroundings,allegiance,exchanges,align,firmly,optimal,commenting,reigning,landings,obscure,1850s,contemporaries,paternal,devi,endurance,communes,incorporation,denominations,exchanged,routing,resorts,amnesty,slender,explores,suppression,heats,pronunciation,centred,coupe,stirling,freelance,treatise,linguistics,laos,informs,discovering,pillars,encourages,halted,robots,definitive,maturity,tuberculosis,venetian,silesian,unchanged,originates,mali,lincolnshire,quotes,seniors,premise,contingent,distribute,danube,gorge,logging,dams,curling,seventeenth,specializes,wetlands,deities,assess,thickness,rigid,culminated,utilities,substrate,insignia,nile,assam,shri,currents,suffrage,canadians,mortar,asteroid,bosnian,discoveries,enzymes,sanctioned,replica,hymn,investigators,tidal,dominate,derivatives,converting,leinster,verbs,honoured,criticisms,dismissal,discrete,masculine,reorganization,unlimited,wurttemberg,sacks,allocation,bahn,jurisdictions,participates,lagoon,famine,communion,culminating,surveyed,shortage,cables,intersects,cassette,foremost,adopting,solicitor,outright,bihar,reissued,farmland,dissertation,turnpike,baton,photographed,christchurch,kyoto,finances,rails,histories,linebacker,kilkenny,accelerated,dispersed,handicap,absorption,rancho,ceramic,captivity,cites,font,weighed,mater,utilize,bravery,extract,validity,slovenian,seminars,discourse,ranged,duel,ironically,warships,sega,temporal,surpassed,prolonged,recruits,northumberland,greenland,contributes,patented,eligibility,unification,discusses,reply,translates,beirut,relies,torque,northward,reviewers,monastic,accession,neural,tramway,heirs,sikh,subscribers,amenities,taliban,audit,rotterdam,wagons,kurdish,favoured,combustion,meanings,persia,browser,diagnostic,niger,formula_4,denomination,dividing,parameter,branding,badminton,leningrad,sparked,hurricanes,beetles,propeller,mozambique,refined,diagram,exhaust,vacated,readings,markers,reconciliation,determines,concurrent,imprint,primera,organism,demonstrating,filmmakers,vanderbilt,affiliates,traction,evaluated,defendants,megachile,investigative,zambia,assassinated,rewarded,probable,staffordshire,foreigners,directorate,nominees,consolidation,commandant,reddish,differing,unrest,drilling,bohemia,resembling,instrumentation,considerations,haute,promptly,variously,dwellings,clans,tablet,enforced,cockpit,semifinal,hussein,prisons,ceylon,emblem,monumental,phrases,correspond,crossover,outlined,characterised,acceleration,caucus,crusade,protested,composing,rajasthan,habsburg,rhythmic,interception,inherent,cooled,ponds,spokesperson,gradual,consultation,kuala,globally,suppressed,builders,avengers,suffix,integer,enforce,fibers,unionist,proclamation,uncovered,infrared,adapt,eisenhower,utilizing,captains,stretched,observing,assumes,prevents,analyses,saxophone,caucasus,notices,villains,dartmouth,mongol,hostilities,stretching,veterinary,lenses,texture,prompting,overthrow,excavation,islanders,masovian,battleship,biographer,replay,degradation,departing,luftwaffe,fleeing,oversight,immigrated,serbs,fishermen,strengthening,respiratory,italians,denotes,radial,escorted,motif,wiltshire,expresses,accessories,reverted,establishments,inequality,protocols,charting,famously,satirical,entirety,trench,friction,atletico,sampling,subset,weekday,upheld,sharply,correlation,incorrect,mughal,travelers,hasan,earnings,offset,evaluate,specialised,recognizing,flexibility,nagar,postseason,algebraic,capitalism,crystals,melodies,polynomial,racecourse,defences,austro,wembley,attracts,anarchist,resurrection,reviewing,decreasing,prefix,ratified,mutation,displaying,separating,restoring,assemblies,ordinance,priesthood,cruisers,appoint,moldova,imports,directive,epidemic,militant,senegal,signaling,restriction,critique,retrospective,nationalists,undertake,sioux,canals,algerian,redesigned,philanthropist,depict,conceptual,turbines,intellectuals,eastward,applicants,contractors,vendors,undergone,namesake,ensured,tones,substituted,hindwings,arrests,tombs,transitional,principality,reelection,taiwanese,cavity,manifesto,broadcasters,spawned,thoroughbred,identities,generators,proposes,hydroelectric,johannesburg,cortex,scandinavian,killings,aggression,boycott,catalyst,physiology,fifteenth,waterfront,chromosome,organist,costly,calculation,cemeteries,flourished,recognise,juniors,merging,disciples,ashore,workplace,enlightenment,diminished,debated,hailed,podium,educate,mandated,distributor,litre,electromagnetic,flotilla,estuary,peterborough,staircase,selections,melodic,confronts,wholesale,integrate,intercepted,catalonia,unite,immense,palatinate,switches,earthquakes,occupational,successors,praising,concluding,faculties,firstly,overhaul,empirical,metacritic,inauguration,evergreen,laden,winged,philosophers,amalgamated,geoff,centimeters,napoleonic,upright,planting,brewing,fined,sensory,migrants,wherein,inactive,headmaster,warwickshire,siberia,terminals,denounced,academia,divinity,bilateral,clive,omitted,peerage,relics,apartheid,syndicate,fearing,fixtures,desirable,dismantled,ethnicity,valves,biodiversity,aquarium,ideological,visibility,creators,analyzed,tenant,balkan,postwar,supplier,smithsonian,risen,morphology,digits,bohemian,wilmington,vishnu,demonstrates,aforementioned,biographical,mapped,khorasan,phosphate,presentations,ecosystem,processors,calculations,mosaic,clashes,penned,recalls,coding,angular,lattice,macau,accountability,extracted,pollen,therapeutic,overlap,violinist,deposed,candidacy,infants,covenant,bacterial,restructuring,dungeons,ordination,conducts,builds,invasive,customary,concurrently,relocation,cello,statutes,borneo,entrepreneurs,sanctions,packet,rockefeller,piedmont,comparisons,waterfall,receptions,glacial,surge,signatures,alterations,advertised,enduring,somali,botanist,100th,canonical,motifs,longitude,circulated,alloy,indirectly,margins,preserves,internally,besieged,shale,peripheral,drained,baseman,reassigned,tobago,soloist,socio,grazing,contexts,roofs,portraying,ottomans,shrewsbury,noteworthy,lamps,supplying,beams,qualifier,portray,greenhouse,stronghold,hitter,rites,cretaceous,urging,derive,nautical,aiming,fortunes,verde,donors,reliance,exceeding,exclusion,exercised,simultaneous,continents,guiding,pillar,gradient,poznan,eruption,clinics,moroccan,indicator,trams,piers,parallels,fragment,teatro,potassium,satire,compressed,businessmen,influx,seine,perspectives,shelters,decreases,mounting,formula_5,confederacy,equestrian,expulsion,mayors,liberia,resisted,affinity,shrub,unexpectedly,stimulus,amtrak,deported,perpendicular,statesman,wharf,storylines,romanesque,weights,surfaced,interceptions,dhaka,crambidae,orchestras,rwanda,conclude,constitutes,subsidiaries,admissions,prospective,shear,bilingual,campaigning,presiding,domination,commemorative,trailing,confiscated,petrol,acquisitions,polymer,onlyinclude,chloride,elevations,resolutions,hurdles,pledged,likelihood,objected,erect,encoding,databases,aristotle,hindus,marshes,bowled,ministerial,grange,acronym,annexation,squads,ambient,pilgrims,botany,sofla,astronomer,planetary,descending,bestowed,ceramics,diplomacy,metabolism,colonization,potomac,africans,engraved,recycling,commitments,resonance,disciplinary,jamaican,narrated,spectral,tipperary,waterford,stationary,arbitration,transparency,threatens,crossroads,slalom,oversee,centenary,incidence,economies,livery,moisture,newsletter,autobiographical,bhutan,propelled,dependence,moderately,adobe,barrels,subdivisions,outlook,labelled,stratford,arising,diaspora,barony,automobiles,ornamental,slated,norms,primetime,generalized,analysts,vectors,libyan,yielded,certificates,rooted,vernacular,belarusian,marketplace,prediction,fairfax,malawi,viruses,wooded,demos,mauritius,prosperous,coincided,liberties,huddersfield,ascent,warnings,hinduism,glucose,pulitzer,unused,filters,illegitimate,acquitted,protestants,canopy,staple,psychedelic,winding,abbas,pathways,cheltenham,lagos,niche,invaders,proponents,barred,conversely,doncaster,recession,embraced,rematch,concession,emigration,upgrades,bowls,tablets,remixed,loops,kensington,shootout,monarchs,organizers,harmful,punjabi,broadband,exempt,neolithic,profiles,portrays,parma,cyrillic,quasi,attested,regimental,revive,torpedoes,heidelberg,rhythms,spherical,denote,hymns,icons,theologian,qaeda,exceptionally,reinstated,comune,playhouse,lobbying,grossing,viceroy,delivers,visually,armistice,utrecht,syllable,vertices,analogous,annex,refurbished,entrants,knighted,disciple,rhetoric,detailing,inactivated,ballads,algae,intensified,favourable,sanitation,receivers,pornography,commemorated,cannons,entrusted,manifold,photographers,pueblo,textiles,steamer,myths,marquess,onward,liturgical,romney,uzbekistan,consistency,denoted,hertfordshire,convex,hearings,sulfur,universidad,podcast,selecting,emperors,arises,justices,1840s,mongolian,exploited,termination,digitally,infectious,sedan,symmetric,penal,illustrate,formulation,attribute,problematic,modular,inverse,berth,searches,rutgers,leicestershire,enthusiasts,lockheed,upwards,transverse,accolades,backward,archaeologists,crusaders,nuremberg,defects,ferries,vogue,containers,openings,transporting,separates,lumpur,purchases,attain,wichita,topology,woodlands,deleted,periodically,syntax,overturned,musicals,corp.,strasbourg,instability,nationale,prevailing,cache,marathi,versailles,unmarried,grains,straits,antagonist,segregation,assistants,d'etat,contention,dictatorship,unpopular,motorcycles,criterion,analytical,salzburg,militants,hanged,worcestershire,emphasize,paralympic,erupted,convinces,offences,oxidation,nouns,populace,atari,spanned,hazardous,educators,playable,births,baha'i,preseason,generates,invites,meteorological,handbook,foothills,enclosure,diffusion,mirza,convergence,geelong,coefficient,connector,formula_6,cylindrical,disasters,pleaded,knoxville,contamination,compose,libertarian,arrondissement,franciscan,intercontinental,susceptible,initiation,malaria,unbeaten,consonants,waived,saloon,popularized,estadio,pseudo,interdisciplinary,transports,transformers,carriages,bombings,revolves,ceded,collaborator,celestial,exemption,colchester,maltese,oceanic,ligue,crete,shareholder,routed,depictions,ridden,advisors,calculate,lending,guangzhou,simplicity,newscast,scheduling,snout,eliot,undertaking,armenians,nottinghamshire,whitish,consulted,deficiency,salle,cinemas,superseded,rigorous,kerman,convened,landowners,modernization,evenings,pitches,conditional,scandinavia,differed,formulated,cyclists,swami,guyana,dunes,electrified,appalachian,abdomen,scenarios,prototypes,sindh,consonant,adaptive,boroughs,wolverhampton,modelling,cylinders,amounted,minimize,ambassadors,lenin,settler,coincide,approximation,grouping,murals,bullying,registers,rumours,engagements,energetic,vertex,annals,bordering,geologic,yellowish,runoff,converts,allegheny,facilitated,saturdays,colliery,monitored,rainforest,interfaces,geographically,impaired,prevalence,joachim,paperback,slowed,shankar,distinguishing,seminal,categorized,authorised,auspices,bandwidth,asserts,rebranded,balkans,supplemented,seldom,weaving,capsule,apostles,populous,monmouth,payload,symphonic,densely,shoreline,managerial,masonry,antioch,averages,textbooks,royalist,coliseum,tandem,brewers,diocesan,posthumous,walled,incorrectly,distributions,ensued,reasonably,graffiti,propagation,automation,harmonic,augmented,middleweight,limbs,elongated,landfall,comparatively,literal,grossed,koppen,wavelength,1830s,cerebral,boasts,congestion,physiological,practitioner,coasts,cartoonist,undisclosed,frontal,launches,burgundy,qualifiers,imposing,stade,flanked,assyrian,raided,multiplayer,montane,chesapeake,pathology,drains,vineyards,intercollegiate,semiconductor,grassland,convey,citations,predominant,rejects,benefited,yahoo,graphs,busiest,encompassing,hamlets,explorers,suppress,minors,graphical,calculus,sediment,intends,diverted,mainline,unopposed,cottages,initiate,alumnus,towed,autism,forums,darlington,modernist,oxfordshire,lectured,capitalist,suppliers,panchayat,actresses,foundry,southbound,commodity,wesleyan,divides,palestinians,luton,caretaker,nobleman,mutiny,organizer,preferences,nomenclature,splits,unwilling,offenders,timor,relying,halftime,semitic,arithmetic,milestone,jesuits,arctiidae,retrieved,consuming,contender,edged,plagued,inclusive,transforming,khmer,federally,insurgents,distributing,amherst,rendition,prosecutors,viaduct,disqualified,kabul,liturgy,prevailed,reelected,instructors,swimmers,aperture,churchyard,interventions,totals,darts,metropolis,fuels,fluent,northbound,correctional,inflicted,barrister,realms,culturally,aristocratic,collaborating,emphasizes,choreographer,inputs,ensembles,humboldt,practised,endowed,strains,infringement,archaeologist,congregational,magna,relativity,efficiently,proliferation,mixtape,abruptly,regeneration,commissioning,yukon,archaic,reluctantly,retailer,northamptonshire,universally,crossings,boilers,nickelodeon,revue,abbreviation,retaliation,scripture,routinely,medicinal,benedictine,kenyan,retention,deteriorated,glaciers,apprenticeship,coupling,researched,topography,entrances,anaheim,pivotal,compensate,arched,modify,reinforce,dusseldorf,journeys,motorsport,conceded,sumatra,spaniards,quantitative,loire,cinematography,discarded,botswana,morale,engined,zionist,philanthropy,sainte,fatalities,cypriot,motorsports,indicators,pricing,institut,bethlehem,implicated,gravitational,differentiation,rotor,thriving,precedent,ambiguous,concessions,forecast,conserved,fremantle,asphalt,landslide,middlesbrough,formula_7,humidity,overseeing,chronological,diaries,multinational,crimean,turnover,improvised,youths,declares,tasmanian,canadiens,fumble,refinery,weekdays,unconstitutional,upward,guardians,brownish,imminent,hamas,endorsement,naturalist,martyrs,caledonia,chords,yeshiva,reptiles,severity,mitsubishi,fairs,installment,substitution,repertory,keyboardist,interpreter,silesia,noticeable,rhineland,transmit,inconsistent,booklet,academies,epithet,pertaining,progressively,aquatics,scrutiny,prefect,toxicity,rugged,consume,o'donnell,evolve,uniquely,cabaret,mediated,landowner,transgender,palazzo,compilations,albuquerque,induce,sinai,remastered,efficacy,underside,analogue,specify,possessing,advocating,compatibility,liberated,greenville,mecklenburg,header,memorials,sewage,rhodesia,1800s,salaries,atoll,coordinating,partisans,repealed,amidst,subjective,optimization,nectar,evolving,exploits,madhya,styling,accumulation,raion,postage,responds,buccaneers,frontman,brunei,choreography,coated,kinetic,sampled,inflammatory,complementary,eclectic,norte,vijay,a.k.a,mainz,casualty,connectivity,laureate,franchises,yiddish,reputed,unpublished,economical,periodicals,vertically,bicycles,brethren,capacities,unitary,archeological,tehsil,domesday,wehrmacht,justification,angered,mysore,fielded,abuses,nutrients,ambitions,taluk,battleships,symbolism,superiority,neglect,attendees,commentaries,collaborators,predictions,yorker,breeders,investing,libretto,informally,coefficients,memorandum,pounder,collingwood,tightly,envisioned,arbor,mistakenly,captures,nesting,conflicting,enhancing,streetcar,manufactures,buckinghamshire,rewards,commemorating,stony,expenditure,tornadoes,semantic,relocate,weimar,iberian,sighted,intending,ensign,beverages,expectation,differentiate,centro,utilizes,saxophonist,catchment,transylvania,ecosystems,shortest,sediments,socialists,ineffective,kapoor,formidable,heroine,guantanamo,prepares,scattering,pamphlet,verified,elector,barons,totaling,shrubs,pyrenees,amalgamation,mutually,longitudinal,comte,negatively,masonic,envoy,sexes,akbar,mythical,tonga,bishopric,assessments,malaya,warns,interiors,reefs,reflections,neutrality,musically,nomadic,waterways,provence,collaborate,scaled,adulthood,emerges,euros,optics,incentives,overland,periodical,liege,awarding,realization,slang,affirmed,schooner,hokkaido,czechoslovak,protectorate,undrafted,disagreed,commencement,electors,spruce,swindon,fueled,equatorial,inventions,suites,slovene,backdrop,adjunct,energies,remnant,inhabit,alliances,simulcast,reactors,mosques,travellers,outfielder,plumage,migratory,benin,experimented,fibre,projecting,drafting,laude,evidenced,northernmost,indicted,directional,replication,croydon,comedies,jailed,organizes,devotees,reservoirs,turrets,originate,economists,songwriters,junta,trenches,mounds,proportions,comedic,apostle,azerbaijani,farmhouse,resembled,disrupted,playback,mixes,diagonal,relevance,govern,programmer,gdansk,maize,soundtracks,tendencies,mastered,impacted,believers,kilometre,intervene,chairperson,aerodrome,sails,subsidies,ensures,aesthetics,congresses,ratios,sardinia,southernmost,functioned,controllers,downward,randomly,distortion,regents,palatine,disruption,spirituality,vidhan,tracts,compiler,ventilation,anchorage,symposium,assert,pistols,excelled,avenues,convoys,moniker,constructions,proponent,phased,spines,organising,schleswig,policing,campeonato,mined,hourly,croix,lucrative,authenticity,haitian,stimulation,burkina,espionage,midfield,manually,staffed,awakening,metabolic,biographies,entrepreneurship,conspicuous,guangdong,preface,subgroup,mythological,adjutant,feminism,vilnius,oversees,honourable,tripoli,stylized,kinase,societe,notoriety,altitudes,configurations,outward,transmissions,announces,auditor,ethanol,clube,nanjing,mecca,haifa,blogs,postmaster,paramilitary,depart,positioning,potent,recognizable,spire,brackets,remembrance,overlapping,turkic,articulated,scientology,operatic,deploy,readiness,biotechnology,restrict,cinematographer,inverted,synonymous,administratively,westphalia,commodities,replaces,downloads,centralized,munitions,preached,sichuan,fashionable,implementations,matrices,hiv/aids,loyalist,luzon,celebrates,hazards,heiress,mercenaries,synonym,creole,ljubljana,technician,auditioned,technicians,viewpoint,wetland,mongols,princely,sharif,coating,dynasties,southward,doubling,formula_8,mayoral,harvesting,conjecture,goaltender,oceania,spokane,welterweight,bracket,gatherings,weighted,newscasts,mussolini,affiliations,disadvantage,vibrant,spheres,sultanate,distributors,disliked,establishes,marches,drastically,yielding,jewellery,yokohama,vascular,airlift,canons,subcommittee,repression,strengths,graded,outspoken,fused,pembroke,filmography,redundant,fatigue,repeal,threads,reissue,pennant,edible,vapor,corrections,stimuli,commemoration,dictator,anand,secession,amassed,orchards,pontifical,experimentation,greeted,bangor,forwards,decomposition,quran,trolley,chesterfield,traverse,sermons,burials,skier,climbs,consultants,petitioned,reproduce,parted,illuminated,kurdistan,reigned,occupants,packaged,geometridae,woven,regulating,protagonists,crafted,affluent,clergyman,consoles,migrant,supremacy,attackers,caliph,defect,convection,rallies,huron,resin,segunda,quota,warship,overseen,criticizing,shrines,glamorgan,lowering,beaux,hampered,invasions,conductors,collects,bluegrass,surrounds,substrates,perpetual,chronology,pulmonary,executions,crimea,compiling,noctuidae,battled,tumors,minsk,novgorod,serviced,yeast,computation,swamps,theodor,baronetcy,salford,uruguayan,shortages,odisha,siberian,novelty,cinematic,invitational,decks,dowager,oppression,bandits,appellate,state-of-the-art,clade,palaces,signalling,galaxies,industrialist,tensor,learnt,incurred,magistrates,binds,orbits,ciudad,willingness,peninsular,basins,biomedical,shafts,marlborough,bournemouth,withstand,fitzroy,dunedin,variance,steamship,integrating,muscular,fines,akron,bulbophyllum,malmo,disclosed,cornerstone,runways,medicines,twenty20,gettysburg,progresses,frigates,bodied,transformations,transforms,helens,modelled,versatile,regulator,pursuits,legitimacy,amplifier,scriptures,voyages,examines,presenters,octagonal,poultry,formula_9,anatolia,computed,migrate,directorial,hybrids,localized,preferring,guggenheim,persisted,grassroots,inflammation,fishery,otago,vigorous,professions,instructional,inexpensive,insurgency,legislators,sequels,surnames,agrarian,stainless,nairobi,minas,forerunner,aristocracy,transitions,sicilian,showcased,doses,hiroshima,summarized,gearbox,emancipation,limitation,nuclei,seismic,abandonment,dominating,appropriations,occupations,electrification,hilly,contracting,exaggerated,entertainer,kazan,oricon,cartridges,characterization,parcel,maharaja,exceeds,aspiring,obituary,flattened,contrasted,narration,replies,oblique,outpost,fronts,arranger,talmud,keynes,doctrines,endured,confesses,fortification,supervisors,kilometer,academie,jammu,bathurst,piracy,prostitutes,navarre,cumulative,cruises,lifeboat,twinned,radicals,interacting,expenditures,wexford,libre,futsal,curated,clockwise,colloquially,procurement,immaculate,lyricist,enhancement,porcelain,alzheimer,highlighting,judah,disagreements,storytelling,sheltered,wroclaw,vaudeville,contrasts,neoclassical,compares,contrasting,deciduous,francaise,descriptive,cyclic,reactive,antiquities,meiji,repeats,creditors,forcibly,newmarket,picturesque,impending,uneven,bison,raceway,solvent,ecumenical,optic,professorship,harvested,waterway,banjo,pharaoh,geologist,scanning,dissent,recycled,unmanned,retreating,gospels,aqueduct,branched,tallinn,groundbreaking,syllables,hangar,designations,procedural,craters,cabins,encryption,anthropologist,montevideo,outgoing,inverness,chattanooga,fascism,calais,chapels,groundwater,downfall,misleading,robotic,tortricidae,pixel,handel,prohibit,crewe,renaming,reprised,kickoff,leftist,spaced,integers,causeway,pines,authorship,organise,ptolemy,accessibility,virtues,lesions,iroquois,qur'an,atheist,synthesized,biennial,confederates,dietary,skaters,stresses,tariff,koreans,intercity,republics,quintet,baroness,naive,amplitude,insistence,tbilisi,residues,grammatical,diversified,egyptians,accompaniment,vibration,repository,mandal,topological,distinctions,coherent,invariant,batters,nuevo,internationals,implements,follower,bahia,widened,independents,cantonese,totaled,guadalajara,wolverines,befriended,muzzle,surveying,hungarians,medici,deportation,rayon,approx,recounts,attends,clerical,hellenic,furnished,alleging,soluble,systemic,gallantry,bolshevik,intervened,hostel,gunpowder,specialising,stimulate,leiden,removes,thematic,floral,bafta,printers,conglomerate,eroded,analytic,successively,lehigh,thessaloniki,kilda,clauses,ascended,nehru,scripted,tokugawa,competence,diplomats,exclude,consecration,freedoms,assaults,revisions,blacksmith,textual,sparse,concacaf,slain,uploaded,enraged,whaling,guise,stadiums,debuting,dormitory,cardiovascular,yunnan,dioceses,consultancy,notions,lordship,archdeacon,collided,medial,airfields,garment,wrestled,adriatic,reversal,refueling,verification,jakob,horseshoe,intricate,veracruz,sarawak,syndication,synthesizer,anthologies,stature,feasibility,guillaume,narratives,publicized,antrim,intermittent,constituents,grimsby,filmmaking,doping,unlawful,nominally,transmitting,documenting,seater,internationale,ejected,steamboat,alsace,boise,ineligible,geared,vassal,mustered,ville,inline,pairing,eurasian,kyrgyzstan,barnsley,reprise,stereotypes,rushes,conform,firefighters,deportivo,revolutionaries,rabbis,concurrency,charters,sustaining,aspirations,algiers,chichester,falkland,morphological,systematically,volcanoes,designate,artworks,reclaimed,jurist,anglia,resurrected,chaotic,feasible,circulating,simulated,environmentally,confinement,adventist,harrisburg,laborers,ostensibly,universiade,pensions,influenza,bratislava,octave,refurbishment,gothenburg,putin,barangay,annapolis,breaststroke,illustrates,distorted,choreographed,promo,emphasizing,stakeholders,descends,exhibiting,intrinsic,invertebrates,evenly,roundabout,salts,formula_10,strata,inhibition,branching,stylistic,rumored,realises,mitochondrial,commuted,adherents,logos,bloomberg,telenovela,guineas,charcoal,engages,winery,reflective,siena,cambridgeshire,ventral,flashback,installing,engraving,grasses,traveller,rotated,proprietor,nationalities,precedence,sourced,trainers,cambodian,reductions,depleted,saharan,classifications,biochemistry,plaintiffs,arboretum,humanist,fictitious,aleppo,climates,bazaar,his/her,homogeneous,multiplication,moines,indexed,linguist,skeletal,foliage,societal,differentiated,informing,mammal,infancy,archival,cafes,malls,graeme,musee,schizophrenia,fargo,pronouns,derivation,descend,ascending,terminating,deviation,recaptured,confessions,weakening,tajikistan,bahadur,pasture,b/hip,donegal,supervising,sikhs,thinkers,euclidean,reinforcement,friars,portage,fuscous,lucknow,synchronized,assertion,choirs,privatization,corrosion,multitude,skyscraper,royalties,ligament,usable,spores,directs,clashed,stockport,fronted,dependency,contiguous,biologist,backstroke,powerhouse,frescoes,phylogenetic,welding,kildare,gabon,conveyed,augsburg,severn,continuum,sahib,lille,injuring,passeriformesfamily,succeeds,translating,unitarian,startup,turbulent,outlying,philanthropic,stanislaw,idols,claremont,conical,haryana,armagh,blended,implicit,conditioned,modulation,rochdale,labourers,coinage,shortstop,potsdam,gears,obesity,bestseller,advisers,bouts,comedians,jozef,lausanne,taxonomic,correlated,columbian,marne,indications,psychologists,libel,edict,beaufort,disadvantages,renal,finalized,racehorse,unconventional,disturbances,falsely,zoology,adorned,redesign,executing,narrower,commended,appliances,stalls,resurgence,saskatoon,miscellaneous,permitting,epoch,formula_11,cumbria,forefront,vedic,eastenders,disposed,supermarkets,rower,inhibitor,magnesium,colourful,yusuf,harrow,formulas,centrally,balancing,ionic,nocturnal,consolidate,ornate,raiding,charismatic,accelerate,nominate,residual,dhabi,commemorates,attribution,uninhabited,mindanao,atrocities,genealogical,romani,applicant,enactment,abstraction,trough,pulpit,minuscule,misconduct,grenades,timely,supplements,messaging,curvature,ceasefire,telangana,susquehanna,braking,redistribution,shreveport,neighbourhoods,gregorian,widowed,khuzestan,empowerment,scholastic,evangelist,peptide,topical,theorist,historia,thence,sudanese,museo,jurisprudence,masurian,frankish,headlined,recounted,netball,petitions,tolerant,hectare,truncated,southend,methane,captives,reigns,massif,subunit,acidic,weightlifting,footballers,sabah,britannia,tunisian,segregated,sawmill,withdrawing,unpaid,weaponry,somme,perceptions,unicode,alcoholism,durban,wrought,waterfalls,jihad,auschwitz,upland,eastbound,adjective,anhalt,evaluating,regimes,guildford,reproduced,pamphlets,hierarchical,maneuvers,hanoi,fabricated,repetition,enriched,arterial,replacements,tides,globalization,adequately,westbound,satisfactory,fleets,phosphorus,lastly,neuroscience,anchors,xinjiang,membranes,improvisation,shipments,orthodoxy,submissions,bolivian,mahmud,ramps,leyte,pastures,outlines,flees,transmitters,fares,sequential,stimulated,novice,alternately,symmetrical,breakaway,layered,baronets,lizards,blackish,edouard,horsepower,penang,principals,mercantile,maldives,overwhelmingly,hawke,rallied,prostate,conscription,juveniles,maccabi,carvings,strikers,sudbury,spurred,improves,lombardy,macquarie,parisian,elastic,distillery,shetland,humane,brentford,wrexham,warehouses,routines,encompassed,introductory,isfahan,instituto,palais,revolutions,sporadic,impoverished,portico,fellowships,speculative,enroll,dormant,adhere,fundamentally,sculpted,meritorious,template,upgrading,reformer,rectory,uncredited,indicative,creeks,galveston,radically,hezbollah,firearm,educating,prohibits,trondheim,locus,refit,headwaters,screenings,lowlands,wasps,coarse,attaining,sedimentary,perished,pitchfork,interned,cerro,stagecoach,aeronautical,liter,transitioned,haydn,inaccurate,legislatures,bromwich,knesset,spectroscopy,butte,asiatic,degraded,concordia,catastrophic,lobes,wellness,pensacola,periphery,hapoel,theta,horizontally,freiburg,liberalism,pleas,durable,warmian,offenses,mesopotamia,shandong,unsuitable,hospitalized,appropriately,phonetic,encompass,conversions,observes,illnesses,breakout,assigns,crowns,inhibitors,nightly,manifestation,fountains,maximize,alphabetical,sloop,expands,newtown,widening,gaddafi,commencing,camouflage,footprint,tyrol,barangays,universite,highlanders,budgets,query,lobbied,westchester,equator,stipulated,pointe,distinguishes,allotted,embankment,advises,storing,loyalists,fourier,rehearsals,starvation,gland,rihanna,tubular,expressive,baccalaureate,intersections,revered,carbonate,eritrea,craftsmen,cosmopolitan,sequencing,corridors,shortlisted,bangladeshi,persians,mimic,parades,repetitive,recommends,flanks,promoters,incompatible,teaming,ammonia,greyhound,solos,improper,legislator,newsweek,recurrent,vitro,cavendish,eireann,crises,prophets,mandir,strategically,guerrillas,formula_12,ghent,contenders,equivalence,drone,sociological,hamid,castes,statehood,aland,clinched,relaunched,tariffs,simulations,williamsburg,rotate,mediation,smallpox,harmonica,lodges,lavish,restrictive,o'sullivan,detainees,polynomials,echoes,intersecting,learners,elects,charlemagne,defiance,epsom,liszt,facilitating,absorbing,revelations,padua,pieter,pious,penultimate,mammalian,montenegrin,supplementary,widows,aromatic,croats,roanoke,trieste,legions,subdistrict,babylonian,grasslands,volga,violently,sparsely,oldies,telecommunication,respondents,quarries,downloadable,commandos,taxpayer,catalytic,malabar,afforded,copying,declines,nawab,junctions,assessing,filtering,classed,disused,compliant,christoph,gottingen,civilizations,hermitage,caledonian,whereupon,ethnically,springsteen,mobilization,terraces,indus,excel,zoological,enrichment,simulate,guitarists,registrar,cappella,invoked,reused,manchu,configured,uppsala,genealogy,mergers,casts,curricular,rebelled,subcontinent,horticultural,parramatta,orchestrated,dockyard,claudius,decca,prohibiting,turkmenistan,brahmin,clandestine,obligatory,elaborated,parasitic,helix,constraint,spearheaded,rotherham,eviction,adapting,albans,rescues,sociologist,guiana,convicts,occurrences,kamen,antennas,asturias,wheeled,sanitary,deterioration,trier,theorists,baseline,announcements,valea,planners,factual,serialized,serials,bilbao,demoted,fission,jamestown,cholera,alleviate,alteration,indefinite,sulfate,paced,climatic,valuation,artisans,proficiency,aegean,regulators,fledgling,sealing,influencing,servicemen,frequented,cancers,tambon,narayan,bankers,clarified,embodied,engraver,reorganisation,dissatisfied,dictated,supplemental,temperance,ratification,puget,nutrient,pretoria,papyrus,uniting,ascribed,cores,coptic,schoolhouse,barrio,1910s,armory,defected,transatlantic,regulates,ported,artefacts,specifies,boasted,scorers,mollusks,emitted,navigable,quakers,projective,dialogues,reunification,exponential,vastly,banners,unsigned,dissipated,halves,coincidentally,leasing,purported,escorting,estimation,foxes,lifespan,inflorescence,assimilation,showdown,staunch,prologue,ligand,superliga,telescopes,northwards,keynote,heaviest,taunton,redeveloped,vocalists,podlaskie,soyuz,rodents,azores,moravian,outset,parentheses,apparel,domestically,authoritative,polymers,monterrey,inhibit,launcher,jordanian,folds,taxis,mandates,singled,liechtenstein,subsistence,marxism,ousted,governorship,servicing,offseason,modernism,prism,devout,translators,islamist,chromosomes,pitted,bedfordshire,fabrication,authoritarian,javanese,leaflets,transient,substantive,predatory,sigismund,assassinate,diagrams,arrays,rediscovered,reclamation,spawning,fjord,peacekeeping,strands,fabrics,highs,regulars,tirana,ultraviolet,athenian,filly,barnet,naacp,nueva,favourites,terminates,showcases,clones,inherently,interpreting,bjorn,finely,lauded,unspecified,chola,pleistocene,insulation,antilles,donetsk,funnel,nutritional,biennale,reactivated,southport,primate,cavaliers,austrians,interspersed,restarted,suriname,amplifiers,wladyslaw,blockbuster,sportsman,minogue,brightness,benches,bridgeport,initiating,israelis,orbiting,newcomers,externally,scaling,transcribed,impairment,luxurious,longevity,impetus,temperament,ceilings,tchaikovsky,spreads,pantheon,bureaucracy,1820s,heraldic,villas,formula_13,galician,meath,avoidance,corresponded,headlining,connacht,seekers,rappers,solids,monograph,scoreless,opole,isotopes,himalayas,parodies,garments,microscopic,republished,havilland,orkney,demonstrators,pathogen,saturated,hellenistic,facilitates,aerodynamic,relocating,indochina,laval,astronomers,bequeathed,administrations,extracts,nagoya,torquay,demography,medicare,ambiguity,renumbered,pursuant,concave,syriac,electrode,dispersal,henan,bialystok,walsall,crystalline,puebla,janata,illumination,tianjin,enslaved,coloration,championed,defamation,grille,johor,rejoin,caspian,fatally,planck,workings,appointing,institutionalized,wessex,modernized,exemplified,regatta,jacobite,parochial,programmers,blending,eruptions,insurrection,regression,indices,sited,dentistry,mobilized,furnishings,levant,primaries,ardent,nagasaki,conqueror,dorchester,opined,heartland,amman,mortally,wellesley,bowlers,outputs,coveted,orthography,immersion,disrepair,disadvantaged,curate,childless,condensed,codice_1,remodeled,resultant,bolsheviks,superfamily,saxons,2010s,contractual,rivalries,malacca,oaxaca,magnate,vertebrae,quezon,olympiad,yucatan,tyres,macro,specialization,commendation,caliphate,gunnery,exiles,excerpts,fraudulent,adjustable,aramaic,interceptor,drumming,standardization,reciprocal,adolescents,federalist,aeronautics,favorably,enforcing,reintroduced,zhejiang,refining,biplane,banknotes,accordion,intersect,illustrating,summits,classmate,militias,biomass,massacres,epidemiology,reworked,wrestlemania,nantes,auditory,taxon,elliptical,chemotherapy,asserting,avoids,proficient,airmen,yellowstone,multicultural,alloys,utilization,seniority,kuyavian,huntsville,orthogonal,bloomington,cultivars,casimir,internment,repulsed,impedance,revolving,fermentation,parana,shutout,partnering,empowered,islamabad,polled,classify,amphibians,greyish,obedience,4x100,projectile,khyber,halfback,relational,d'ivoire,synonyms,endeavour,padma,customized,mastery,defenceman,berber,purge,interestingly,covent,promulgated,restricting,condemnation,hillsborough,walkers,privateer,intra,captaincy,naturalized,huffington,detecting,hinted,migrating,bayou,counterattack,anatomical,foraging,unsafe,swiftly,outdated,paraguayan,attire,masjid,endeavors,jerseys,triassic,quechua,growers,axial,accumulate,wastewater,cognition,fungal,animator,pagoda,kochi,uniformly,antibody,yerevan,hypotheses,combatants,italianate,draining,fragmentation,snowfall,formative,inversion,kitchener,identifier,additive,lucha,selects,ashland,cambrian,racetrack,trapping,congenital,primates,wavelengths,expansions,yeomanry,harcourt,wealthiest,awaited,punta,intervening,aggressively,vichy,piloted,midtown,tailored,heyday,metadata,guadalcanal,inorganic,hadith,pulses,francais,tangent,scandals,erroneously,tractors,pigment,constabulary,jiangsu,landfill,merton,basalt,astor,forbade,debuts,collisions,exchequer,stadion,roofed,flavour,sculptors,conservancy,dissemination,electrically,undeveloped,existent,surpassing,pentecostal,manifested,amend,formula_14,superhuman,barges,tunis,analytics,argyll,liquids,mechanized,domes,mansions,himalayan,indexing,reuters,nonlinear,purification,exiting,timbers,triangles,decommissioning,departmental,causal,fonts,americana,sept.,seasonally,incomes,razavi,sheds,memorabilia,rotational,terre,sutra,protege,yarmouth,grandmaster,annum,looted,imperialism,variability,liquidation,baptised,isotope,showcasing,milling,rationale,hammersmith,austen,streamlined,acknowledging,contentious,qaleh,breadth,turing,referees,feral,toulon,unofficially,identifiable,standout,labeling,dissatisfaction,jurgen,angrily,featherweight,cantons,constrained,dominates,standalone,relinquished,theologians,markedly,italics,downed,nitrate,likened,gules,craftsman,singaporean,pixels,mandela,moray,parity,departement,antigen,academically,burgh,brahma,arranges,wounding,triathlon,nouveau,vanuatu,banded,acknowledges,unearthed,stemming,authentication,byzantines,converge,nepali,commonplace,deteriorating,recalling,palette,mathematicians,greenish,pictorial,ahmedabad,rouen,validation,u.s.a.,'best,malvern,archers,converter,undergoes,fluorescent,logistical,notification,transvaal,illicit,symphonies,stabilization,worsened,fukuoka,decrees,enthusiast,seychelles,blogger,louvre,dignitaries,burundi,wreckage,signage,pinyin,bursts,federer,polarization,urbana,lazio,schism,nietzsche,venerable,administers,seton,kilograms,invariably,kathmandu,farmed,disqualification,earldom,appropriated,fluctuations,kermanshah,deployments,deformation,wheelbase,maratha,psalm,bytes,methyl,engravings,skirmish,fayette,vaccines,ideally,astrology,breweries,botanic,opposes,harmonies,irregularities,contended,gaulle,prowess,constants,aground,filipinos,fresco,ochreous,jaipur,willamette,quercus,eastwards,mortars,champaign,braille,reforming,horned,hunan,spacious,agitation,draught,specialties,flourishing,greensboro,necessitated,swedes,elemental,whorls,hugely,structurally,plurality,synthesizers,embassies,assad,contradictory,inference,discontent,recreated,inspectors,unicef,commuters,embryo,modifying,stints,numerals,communicated,boosted,trumpeter,brightly,adherence,remade,leases,restrained,eucalyptus,dwellers,planar,grooves,gainesville,daimler,anzac,szczecin,cornerback,prized,peking,mauritania,khalifa,motorized,lodging,instrumentalist,fortresses,cervical,formula_15,passerine,sectarian,researches,apprenticed,reliefs,disclose,gliding,repairing,queue,kyushu,literate,canoeing,sacrament,separatist,calabria,parkland,flowed,investigates,statistically,visionary,commits,dragoons,scrolls,premieres,revisited,subdued,censored,patterned,elective,outlawed,orphaned,leyland,richly,fujian,miniatures,heresy,plaques,countered,nonfiction,exponent,moravia,dispersion,marylebone,midwestern,enclave,ithaca,federated,electronically,handheld,microscopy,tolls,arrivals,climbers,continual,cossacks,moselle,deserts,ubiquitous,gables,forecasts,deforestation,vertebrates,flanking,drilled,superstructure,inspected,consultative,bypassed,ballast,subsidy,socioeconomic,relic,grenada,journalistic,administering,accommodated,collapses,appropriation,reclassified,foreword,porte,assimilated,observance,fragmented,arundel,thuringia,gonzaga,shenzhen,shipyards,sectional,ayrshire,sloping,dependencies,promenade,ecuadorian,mangrove,constructs,goalscorer,heroism,iteration,transistor,omnibus,hampstead,cochin,overshadowed,chieftain,scalar,finishers,ghanaian,abnormalities,monoplane,encyclopaedia,characterize,travancore,baronetage,bearers,biking,distributes,paving,christened,inspections,banco,humber,corinth,quadratic,albanians,lineages,majored,roadside,inaccessible,inclination,darmstadt,fianna,epilepsy,propellers,papacy,montagu,bhutto,sugarcane,optimized,pilasters,contend,batsmen,brabant,housemates,sligo,ascot,aquinas,supervisory,accorded,gerais,echoed,nunavut,conservatoire,carniola,quartermaster,gminas,impeachment,aquitaine,reformers,quarterfinal,karlsruhe,accelerator,coeducational,archduke,gelechiidae,seaplane,dissident,frenchman,palau,depots,hardcover,aachen,darreh,denominational,groningen,parcels,reluctance,drafts,elliptic,counters,decreed,airship,devotional,contradiction,formula_16,undergraduates,qualitative,guatemalan,slavs,southland,blackhawks,detrimental,abolish,chechen,manifestations,arthritis,perch,fated,hebei,peshawar,palin,immensely,havre,totalling,rampant,ferns,concourse,triples,elites,olympian,larva,herds,lipid,karabakh,distal,monotypic,vojvodina,batavia,multiplied,spacing,spellings,pedestrians,parchment,glossy,industrialization,dehydrogenase,patriotism,abolitionist,mentoring,elizabethan,figurative,dysfunction,abyss,constantin,middletown,stigma,mondays,gambia,gaius,israelites,renounced,nepalese,overcoming,buren,sulphur,divergence,predation,looting,iberia,futuristic,shelved,anthropological,innsbruck,escalated,clermont,entrepreneurial,benchmark,mechanically,detachments,populist,apocalyptic,exited,embryonic,stanza,readership,chiba,landlords,expansive,boniface,therapies,perpetrators,whitehall,kassel,masts,carriageway,clinch,pathogens,mazandaran,undesirable,teutonic,miocene,nagpur,juris,cantata,compile,diffuse,dynastic,reopening,comptroller,o'neal,flourish,electing,scientifically,departs,welded,modal,cosmology,fukushima,libertadores,chang'an,asean,generalization,localization,afrikaans,cricketers,accompanies,emigrants,esoteric,southwards,shutdown,prequel,fittings,innate,wrongly,equitable,dictionaries,senatorial,bipolar,flashbacks,semitism,walkway,lyrically,legality,sorbonne,vigorously,durga,samoan,karel,interchanges,patna,decider,registering,electrodes,anarchists,excursion,overthrown,gilan,recited,michelangelo,advertiser,kinship,taboo,cessation,formula_17,premiers,traversed,madurai,poorest,torneo,exerted,replicate,spelt,sporadically,horde,landscaping,razed,hindered,esperanto,manchuria,propellant,jalan,baha'is,sikkim,linguists,pandit,racially,ligands,dowry,francophone,escarpment,behest,magdeburg,mainstay,villiers,yangtze,grupo,conspirators,martyrdom,noticeably,lexical,kazakh,unrestricted,utilised,sired,inhabits,proofs,joseon,pliny,minted,buddhists,cultivate,interconnected,reuse,viability,australasian,derelict,resolving,overlooks,menon,stewardship,playwrights,thwarted,filmfare,disarmament,protections,bundles,sidelined,hypothesized,singer/songwriter,forage,netted,chancery,townshend,restructured,quotation,hyperbolic,succumbed,parliaments,shenandoah,apical,kibbutz,storeys,pastors,lettering,ukrainians,hardships,chihuahua,avail,aisles,taluka,antisemitism,assent,ventured,banksia,seamen,hospice,faroe,fearful,woreda,outfield,chlorine,transformer,tatar,panoramic,pendulum,haarlem,styria,cornice,importing,catalyzes,subunits,enamel,bakersfield,realignment,sorties,subordinates,deanery,townland,gunmen,tutelage,evaluations,allahabad,thrace,veneto,mennonite,sharia,subgenus,satisfies,puritan,unequal,gastrointestinal,ordinances,bacterium,horticulture,argonauts,adjectives,arable,duets,visualization,woolwich,revamped,euroleague,thorax,completes,originality,vasco,freighter,sardar,oratory,sects,extremes,signatories,exporting,arisen,exacerbated,departures,saipan,furlongs,d'italia,goring,dakar,conquests,docked,offshoot,okrug,referencing,disperse,netting,summed,rewritten,articulation,humanoid,spindle,competitiveness,preventive,facades,westinghouse,wycombe,synthase,emulate,fostering,abdel,hexagonal,myriad,caters,arjun,dismay,axiom,psychotherapy,colloquial,complemented,martinique,fractures,culmination,erstwhile,atrium,electronica,anarchism,nadal,montpellier,algebras,submitting,adopts,stemmed,overcame,internacional,asymmetric,gallipoli,gliders,flushing,extermination,hartlepool,tesla,interwar,patriarchal,hitherto,ganges,combatant,marred,philology,glastonbury,reversible,isthmus,undermined,southwark,gateshead,andalusia,remedies,hastily,optimum,smartphone,evade,patrolled,beheaded,dopamine,waivers,ugandan,gujarati,densities,predicting,intestinal,tentative,interstellar,kolonia,soloists,penetrated,rebellions,qeshlaq,prospered,colegio,deficits,konigsberg,deficient,accessing,relays,kurds,politburo,codified,incarnations,occupancy,cossack,metaphysical,deprivation,chopra,piccadilly,formula_18,makeshift,protestantism,alaskan,frontiers,faiths,tendon,dunkirk,durability,autobots,bonuses,coinciding,emails,gunboat,stucco,magma,neutrons,vizier,subscriptions,visuals,envisaged,carpets,smoky,schema,parliamentarian,immersed,domesticated,parishioners,flinders,diminutive,mahabharata,ballarat,falmouth,vacancies,gilded,twigs,mastering,clerics,dalmatia,islington,slogans,compressor,iconography,congolese,sanction,blends,bulgarians,moderator,outflow,textures,safeguard,trafalgar,tramways,skopje,colonialism,chimneys,jazeera,organisers,denoting,motivations,ganga,longstanding,deficiencies,gwynedd,palladium,holistic,fascia,preachers,embargo,sidings,busan,ignited,artificially,clearwater,cemented,northerly,salim,equivalents,crustaceans,oberliga,quadrangle,historiography,romanians,vaults,fiercely,incidental,peacetime,tonal,bhopal,oskar,radha,pesticides,timeslot,westerly,cathedrals,roadways,aldershot,connectors,brahmins,paler,aqueous,gustave,chromatic,linkage,lothian,specialises,aggregation,tributes,insurgent,enact,hampden,ghulam,federations,instigated,lyceum,fredrik,chairmanship,floated,consequent,antagonists,intimidation,patriarchate,warbler,heraldry,entrenched,expectancy,habitation,partitions,widest,launchers,nascent,ethos,wurzburg,lycee,chittagong,mahatma,merseyside,asteroids,yokosuka,cooperatives,quorum,redistricting,bureaucratic,yachts,deploying,rustic,phonology,chorale,cellist,stochastic,crucifixion,surmounted,confucian,portfolios,geothermal,crested,calibre,tropics,deferred,nasir,iqbal,persistence,essayist,chengdu,aborigines,fayetteville,bastion,interchangeable,burlesque,kilmarnock,specificity,tankers,colonels,fijian,quotations,enquiry,quito,palmerston,delle,multidisciplinary,polynesian,iodine,antennae,emphasised,manganese,baptists,galilee,jutland,latent,excursions,skepticism,tectonic,precursors,negligible,musique,misuse,vitoria,expressly,veneration,sulawesi,footed,mubarak,chongqing,chemically,midday,ravaged,facets,varma,yeovil,ethnographic,discounted,physicists,attache,disbanding,essen,shogunate,cooperated,waikato,realising,motherwell,pharmacology,sulfide,inward,expatriate,devoid,cultivar,monde,andean,groupings,goran,unaffected,moldovan,postdoctoral,coleophora,delegated,pronoun,conductivity,coleridge,disapproval,reappeared,microbial,campground,olsztyn,fostered,vaccination,rabbinical,champlain,milestones,viewership,caterpillar,effected,eupithecia,financier,inferred,uzbek,bundled,bandar,balochistan,mysticism,biosphere,holotype,symbolizes,lovecraft,photons,abkhazia,swaziland,subgroups,measurable,falkirk,valparaiso,ashok,discriminatory,rarity,tabernacle,flyweight,jalisco,westernmost,antiquarian,extracellular,margrave,colspan=9,midsummer,digestive,reversing,burgeoning,substitutes,medallist,khrushchev,guerre,folio,detonated,partido,plentiful,aggregator,medallion,infiltration,shaded,santander,fared,auctioned,permian,ramakrishna,andorra,mentors,diffraction,bukit,potentials,translucent,feminists,tiers,protracted,coburg,wreath,guelph,adventurer,he/she,vertebrate,pipelines,celsius,outbreaks,australasia,deccan,garibaldi,unionists,buildup,biochemical,reconstruct,boulders,stringent,barbed,wording,furnaces,pests,befriends,organises,popes,rizal,tentacles,cadre,tallahassee,punishments,occidental,formatted,mitigation,rulings,rubens,cascades,inducing,choctaw,volta,synagogues,movable,altarpiece,mitigate,practise,intermittently,encountering,memberships,earns,signify,retractable,amounting,pragmatic,wilfrid,dissenting,divergent,kanji,reconstituted,devonian,constitutions,levied,hendrik,starch,costal,honduran,ditches,polygon,eindhoven,superstars,salient,argus,punitive,purana,alluvial,flaps,inefficient,retracted,advantageous,quang,andersson,danville,binghamton,symbolize,conclave,shaanxi,silica,interpersonal,adept,frans,pavilions,lubbock,equip,sunken,limburg,activates,prosecutions,corinthian,venerated,shootings,retreats,parapet,orissa,riviere,animations,parodied,offline,metaphysics,bluffs,plume,piety,fruition,subsidized,steeplechase,shanxi,eurasia,angled,forecasting,suffragan,ashram,larval,labyrinth,chronicler,summaries,trailed,merges,thunderstorms,filtered,formula_19,advertisers,alpes,informatics,parti,constituting,undisputed,certifications,javascript,molten,sclerosis,rumoured,boulogne,hmong,lewes,breslau,notts,bantu,ducal,messengers,radars,nightclubs,bantamweight,carnatic,kaunas,fraternal,triggering,controversially,londonderry,visas,scarcity,offaly,uprisings,repelled,corinthians,pretext,kuomintang,kielce,empties,matriculated,pneumatic,expos,agile,treatises,midpoint,prehistory,oncology,subsets,hydra,hypertension,axioms,wabash,reiterated,swapped,achieves,premio,ageing,overture,curricula,challengers,subic,selangor,liners,frontline,shutter,validated,normalized,entertainers,molluscs,maharaj,allegation,youngstown,synth,thoroughfare,regionally,pillai,transcontinental,pedagogical,riemann,colonia,easternmost,tentatively,profiled,herefordshire,nativity,meuse,nucleotide,inhibits,huntingdon,throughput,recorders,conceding,domed,homeowners,centric,gabled,canoes,fringes,breeder,subtitled,fluoride,haplogroup,zionism,izmir,phylogeny,kharkiv,romanticism,adhesion,usaaf,delegations,lorestan,whalers,biathlon,vaulted,mathematically,pesos,skirmishes,heisman,kalamazoo,gesellschaft,launceston,interacts,quadruple,kowloon,psychoanalysis,toothed,ideologies,navigational,valence,induces,lesotho,frieze,rigging,undercarriage,explorations,spoof,eucharist,profitability,virtuoso,recitals,subterranean,sizeable,herodotus,subscriber,huxley,pivot,forewing,warring,boleslaw,bharatiya,suffixes,trois,percussionist,downturn,garrisons,philosophies,chants,mersin,mentored,dramatist,guilds,frameworks,thermodynamic,venomous,mehmed,assembling,rabbinic,hegemony,replicas,enlargement,claimant,retitled,utica,dumfries,metis,deter,assortment,tubing,afflicted,weavers,rupture,ornamentation,transept,salvaged,upkeep,callsign,rajput,stevenage,trimmed,intracellular,synchronization,consular,unfavorable,royalists,goldwyn,fasting,hussars,doppler,obscurity,currencies,amiens,acorn,tagore,townsville,gaussian,migrations,porta,anjou,graphite,seaport,monographs,gladiators,metrics,calligraphy,sculptural,swietokrzyskie,tolombeh,eredivisie,shoals,queries,carts,exempted,fiberglass,mirrored,bazar,progeny,formalized,mukherjee,professed,amazon.com,cathode,moreton,removable,mountaineers,nagano,transplantation,augustinian,steeply,epilogue,adapter,decisively,accelerating,mediaeval,substituting,tasman,devonshire,litres,enhancements,himmler,nephews,bypassing,imperfect,argentinian,reims,integrates,sochi,ascii,licences,niches,surgeries,fables,versatility,indra,footpath,afonso,crore,evaporation,encodes,shelling,conformity,simplify,updating,quotient,overt,firmware,umpires,architectures,eocene,conservatism,secretion,embroidery,f.c..,tuvalu,mosaics,shipwreck,prefectural,cohort,grievances,garnering,centerpiece,apoptosis,djibouti,bethesda,formula_20,shonen,richland,justinian,dormitories,meteorite,reliably,obtains,pedagogy,hardness,cupola,manifolds,amplification,steamers,familial,dumbarton,jerzy,genital,maidstone,salinity,grumman,signifies,presbytery,meteorology,procured,aegis,streamed,deletion,nuestra,mountaineering,accords,neuronal,khanate,grenoble,axles,dispatches,tokens,turku,auctions,propositions,planters,proclaiming,recommissioned,stravinsky,obverse,bombarded,waged,saviour,massacred,reformist,purportedly,resettlement,ravenna,embroiled,minden,revitalization,hikers,bridging,torpedoed,depletion,nizam,affectionately,latitudes,lubeck,spore,polymerase,aarhus,nazism,101st,buyout,galerie,diets,overflow,motivational,renown,brevet,deriving,melee,goddesses,demolish,amplified,tamworth,retake,brokerage,beneficiaries,henceforth,reorganised,silhouette,browsers,pollutants,peron,lichfield,encircled,defends,bulge,dubbing,flamenco,coimbatore,refinement,enshrined,grizzlies,capacitor,usefulness,evansville,interscholastic,rhodesian,bulletins,diamondbacks,rockers,platted,medalists,formosa,transporter,slabs,guadeloupe,disparate,concertos,violins,regaining,mandible,untitled,agnostic,issuance,hamiltonian,brampton,srpska,homology,downgraded,florentine,epitaph,kanye,rallying,analysed,grandstand,infinitely,antitrust,plundered,modernity,colspan=3|total,amphitheatre,doric,motorists,yemeni,carnivorous,probabilities,prelate,struts,scrapping,bydgoszcz,pancreatic,signings,predicts,compendium,ombudsman,apertura,appoints,rebbe,stereotypical,valladolid,clustered,touted,plywood,inertial,kettering,curving,d'honneur,housewives,grenadier,vandals,barbarossa,necked,waltham,reputedly,jharkhand,cistercian,pursues,viscosity,organiser,cloister,islet,stardom,moorish,himachal,strives,scripps,staggered,blasts,westwards,millimeters,angolan,hubei,agility,admirals,mordellistena,coincides,platte,vehicular,cordillera,riffs,schoolteacher,canaan,acoustics,tinged,reinforcing,concentrates,daleks,monza,selectively,musik,polynesia,exporter,reviving,macclesfield,bunkers,ballets,manors,caudal,microbiology,primes,unbroken,outcry,flocks,pakhtunkhwa,abelian,toowoomba,luminous,mould,appraisal,leuven,experimentally,interoperability,hideout,perak,specifying,knighthood,vasily,excerpt,computerized,niels,networked,byzantium,reaffirmed,geographer,obscured,fraternities,mixtures,allusion,accra,lengthened,inquest,panhandle,pigments,revolts,bluetooth,conjugate,overtaken,foray,coils,breech,streaks,impressionist,mendelssohn,intermediary,panned,suggestive,nevis,upazila,rotunda,mersey,linnaeus,anecdotes,gorbachev,viennese,exhaustive,moldavia,arcades,irrespective,orator,diminishing,predictive,cohesion,polarized,montage,avian,alienation,conus,jaffna,urbanization,seawater,extremity,editorials,scrolling,dreyfus,traverses,topographic,gunboats,extratropical,normans,correspondents,recognises,millennia,filtration,ammonium,voicing,complied,prefixes,diplomas,figurines,weakly,gated,oscillator,lucerne,embroidered,outpatient,airframe,fractional,disobedience,quarterbacks,formula_21,shinto,chiapas,epistle,leakage,pacifist,avignon,penrith,renders,mantua,screenplays,gustaf,tesco,alphabetically,rations,discharges,headland,tapestry,manipur,boolean,mediator,ebenezer,subchannel,fable,bestselling,ateneo,trademarks,recurrence,dwarfs,britannica,signifying,vikram,mediate,condensation,censuses,verbandsgemeinde,cartesian,sprang,surat,britons,chelmsford,courtenay,statistic,retina,abortions,liabilities,closures,mississauga,skyscrapers,saginaw,compounded,aristocrat,msnbc,stavanger,septa,interpretive,hinder,visibly,seeding,shutouts,irregularly,quebecois,footbridge,hydroxide,implicitly,lieutenants,simplex,persuades,midshipman,heterogeneous,officiated,crackdown,lends,tartu,altars,fractions,dissidents,tapered,modernisation,scripting,blazon,aquaculture,thermodynamics,sistan,hasidic,bellator,pavia,propagated,theorized,bedouin,transnational,mekong,chronicled,declarations,kickstarter,quotas,runtime,duquesne,broadened,clarendon,brownsville,saturation,tatars,electorates,malayan,replicated,observable,amphitheater,endorsements,referral,allentown,mormons,pantomime,eliminates,typeface,allegorical,varna,conduction,evoke,interviewer,subordinated,uyghur,landscaped,conventionally,ascend,edifice,postulated,hanja,whitewater,embarking,musicologist,tagalog,frontage,paratroopers,hydrocarbons,transliterated,nicolae,viewpoints,surrealist,asheville,falklands,hacienda,glide,opting,zimbabwean,discal,mortgages,nicaraguan,yadav,ghosh,abstracted,castilian,compositional,cartilage,intergovernmental,forfeited,importation,rapping,artes,republika,narayana,condominium,frisian,bradman,duality,marche,extremist,phosphorylation,genomes,allusions,valencian,habeas,ironworks,multiplex,harpsichord,emigrate,alternated,breda,waffen,smartphones,familiarity,regionalliga,herbaceous,piping,dilapidated,carboniferous,xviii,critiques,carcinoma,sagar,chippewa,postmodern,neapolitan,excludes,notoriously,distillation,tungsten,richness,installments,monoxide,chand,privatisation,molded,maths,projectiles,luoyang,epirus,lemma,concentric,incline,erroneous,sideline,gazetted,leopards,fibres,renovate,corrugated,unilateral,repatriation,orchestration,saeed,rockingham,loughborough,formula_22,bandleader,appellation,openness,nanotechnology,massively,tonnage,dunfermline,exposes,moored,ridership,motte,eurobasket,majoring,feats,silla,laterally,playlist,downwards,methodologies,eastbourne,daimyo,cellulose,leyton,norwalk,oblong,hibernian,opaque,insular,allegory,camogie,inactivation,favoring,masterpieces,rinpoche,serotonin,portrayals,waverley,airliner,longford,minimalist,outsourcing,excise,meyrick,qasim,organisational,synaptic,farmington,gorges,scunthorpe,zoned,tohoku,librarians,davao,decor,theatrically,brentwood,pomona,acquires,planter,capacitors,synchronous,skateboarding,coatings,turbocharged,ephraim,capitulation,scoreboard,hebrides,ensues,cereals,ailing,counterpoint,duplication,antisemitic,clique,aichi,oppressive,transcendental,incursions,rename,renumbering,powys,vestry,bitterly,neurology,supplanted,affine,susceptibility,orbiter,activating,overlaps,ecoregion,raman,canoer,darfur,microorganisms,precipitated,protruding,torun,anthropologists,rennes,kangaroos,parliamentarians,edits,littoral,archived,begum,rensselaer,microphones,ypres,empower,etruscan,wisden,montfort,calibration,isomorphic,rioting,kingship,verbally,smyrna,cohesive,canyons,fredericksburg,rahul,relativistic,micropolitan,maroons,industrialized,henchmen,uplift,earthworks,mahdi,disparity,cultured,transliteration,spiny,fragmentary,extinguished,atypical,inventors,biosynthesis,heralded,curacao,anomalies,aeroplane,surya,mangalore,maastricht,ashkenazi,fusiliers,hangzhou,emitting,monmouthshire,schwarzenegger,ramayana,peptides,thiruvananthapuram,alkali,coimbra,budding,reasoned,epithelial,harbors,rudimentary,classically,parque,ealing,crusades,rotations,riparian,pygmy,inertia,revolted,microprocessor,calendars,solvents,kriegsmarine,accademia,cheshmeh,yoruba,ardabil,mitra,genomic,notables,propagate,narrates,univision,outposts,polio,birkenhead,urinary,crocodiles,pectoral,barrymore,deadliest,rupees,chaim,protons,comical,astrophysics,unifying,formula_23,vassals,cortical,audubon,pedals,tenders,resorted,geophysical,lenders,recognising,tackling,lanarkshire,doctrinal,annan,combating,guangxi,estimating,selectors,tribunals,chambered,inhabiting,exemptions,curtailed,abbasid,kandahar,boron,bissau,150th,codenamed,wearer,whorl,adhered,subversive,famer,smelting,inserting,mogadishu,zoologist,mosul,stumps,almanac,olympiacos,stamens,participatory,cults,honeycomb,geologists,dividend,recursive,skiers,reprint,pandemic,liber,percentages,adversely,stoppage,chieftains,tubingen,southerly,overcrowding,unorganized,hangars,fulfil,hails,cantilever,woodbridge,pinus,wiesbaden,fertilization,fluorescence,enhances,plenary,troublesome,episodic,thrissur,kickboxing,allele,staffing,garda,televisions,philatelic,spacetime,bullpen,oxides,leninist,enrolling,inventive,truro,compatriot,ruskin,normative,assay,gotha,murad,illawarra,gendarmerie,strasse,mazraeh,rebounded,fanfare,liaoning,rembrandt,iranians,emirate,governs,latency,waterfowl,chairmen,katowice,aristocrats,eclipsed,sentient,sonatas,interplay,sacking,decepticons,dynamical,arbitrarily,resonant,petar,velocities,alludes,wastes,prefectures,belleville,sensibility,salvadoran,consolidating,medicaid,trainees,vivekananda,molar,porous,upload,youngster,infused,doctorates,wuhan,annihilation,enthusiastically,gamespot,kanpur,accumulating,monorail,operetta,tiling,sapporo,finns,calvinist,hydrocarbon,sparrows,orienteering,cornelis,minster,vuelta,plebiscite,embraces,panchayats,focussed,remediation,brahman,olfactory,reestablished,uniqueness,northumbria,rwandan,predominately,abode,ghats,balances,californian,uptake,bruges,inert,westerns,reprints,cairn,yarra,resurfaced,audible,rossini,regensburg,italiana,fleshy,irrigated,alerts,yahya,varanasi,marginalized,expatriates,cantonment,normandie,sahitya,directives,rounder,hulls,fictionalized,constables,inserts,hipped,potosi,navies,biologists,canteen,husbandry,augment,fortnight,assamese,kampala,o'keefe,paleolithic,bluish,promontory,consecutively,striving,niall,reuniting,dipole,friendlies,disapproved,thrived,netflix,liberian,dielectric,medway,strategist,sankt,pickups,hitters,encode,rerouted,claimants,anglesey,partitioned,cavan,flutes,reared,repainted,armaments,bowed,thoracic,balliol,piero,chaplains,dehestan,sender,junkers,sindhi,sickle,dividends,metallurgy,honorific,berths,namco,springboard,resettled,gansu,copyrighted,criticizes,utopian,bendigo,ovarian,binomial,spaceflight,oratorio,proprietors,supergroup,duplicated,foreground,strongholds,revolved,optimize,layouts,westland,hurler,anthropomorphic,excelsior,merchandising,reeds,vetoed,cryptography,hollyoaks,monash,flooring,ionian,resilience,johnstown,resolves,lawmakers,alegre,wildcards,intolerance,subculture,selector,slums,formulate,bayonet,istvan,restitution,interchangeably,awakens,rostock,serpentine,oscillation,reichstag,phenotype,recessed,piotr,annotated,preparedness,consultations,clausura,preferential,euthanasia,genoese,outcrops,freemasonry,geometrical,genesee,islets,prometheus,panamanian,thunderbolt,terraced,stara,shipwrecks,futebol,faroese,sharqi,aldermen,zeitung,unify,formula_24,humanism,syntactic,earthen,blyth,taxed,rescinded,suleiman,cymru,dwindled,vitality,superieure,resupply,adolphe,ardennes,rajiv,profiling,olympique,gestation,interfaith,milosevic,tagline,funerary,druze,silvery,plough,shrubland,relaunch,disband,nunatak,minimizing,excessively,waned,attaching,luminosity,bugle,encampment,electrostatic,minesweeper,dubrovnik,rufous,greenock,hochschule,assyrians,extracting,malnutrition,priya,attainment,anhui,connotations,predicate,seabirds,deduced,pseudonyms,gopal,plovdiv,refineries,imitated,kwazulu,terracotta,tenets,discourses,brandeis,whigs,dominions,pulmonate,landslides,tutors,determinant,richelieu,farmstead,tubercles,technicolor,hegel,redundancy,greenpeace,shortening,mules,distilled,xxiii,fundamentalist,acrylic,outbuildings,lighted,corals,signaled,transistors,cavite,austerity,76ers,exposures,dionysius,outlining,commutative,permissible,knowledgeable,howrah,assemblage,inhibited,crewmen,mbit/s,pyramidal,aberdeenshire,bering,rotates,atheism,howitzer,saone,lancet,fermented,contradicted,materiel,ofsted,numeric,uniformity,josephus,nazarene,kuwaiti,noblemen,pediment,emergent,campaigner,akademi,murcia,perugia,gallen,allsvenskan,finned,cavities,matriculation,rosters,twickenham,signatory,propel,readable,contends,artisan,flamboyant,reggio,italo,fumbles,widescreen,rectangle,centimetres,collaborates,envoys,rijeka,phonological,thinly,refractive,civilisation,reductase,cognate,dalhousie,monticello,lighthouses,jitsu,luneburg,socialite,fermi,collectible,optioned,marquee,jokingly,architecturally,kabir,concubine,nationalisation,watercolor,wicklow,acharya,pooja,leibniz,rajendra,nationalized,stalemate,bloggers,glutamate,uplands,shivaji,carolingian,bucuresti,dasht,reappears,muscat,functionally,formulations,hinged,hainan,catechism,autosomal,incremental,asahi,coeur,diversification,multilateral,fewest,recombination,finisher,harrogate,hangul,feasts,photovoltaic,paget,liquidity,alluded,incubation,applauded,choruses,malagasy,hispanics,bequest,underparts,cassava,kazimierz,gastric,eradication,mowtowr,tyrosine,archbishopric,e9e9e9,unproductive,uxbridge,hydrolysis,harbours,officio,deterministic,devonport,kanagawa,breaches,freetown,rhinoceros,chandigarh,janos,sanatorium,liberator,inequalities,agonist,hydrophobic,constructors,nagorno,snowboarding,welcomes,subscribed,iloilo,resuming,catalysts,stallions,jawaharlal,harriers,definitively,roughriders,hertford,inhibiting,elgar,randomized,incumbents,episcopate,rainforests,yangon,improperly,kemal,interpreters,diverged,uttarakhand,umayyad,phnom,panathinaikos,shabbat,diode,jiangxi,forbidding,nozzle,artistry,licensee,processions,staffs,decimated,expressionism,shingle,palsy,ontology,mahayana,maribor,sunil,hostels,edwardian,jetty,freehold,overthrew,eukaryotic,schuylkill,rawalpindi,sheath,recessive,ferenc,mandibles,berlusconi,confessor,convergent,ababa,slugging,rentals,sephardic,equivalently,collagen,markov,dynamically,hailing,depressions,sprawling,fairgrounds,indistinguishable,plutarch,pressurized,banff,coldest,braunschweig,mackintosh,sociedad,wittgenstein,tromso,airbase,lecturers,subtitle,attaches,purified,contemplated,dreamworks,telephony,prophetic,rockland,aylesbury,biscay,coherence,aleksandar,judoka,pageants,theses,homelessness,luthor,sitcoms,hinterland,fifths,derwent,privateers,enigmatic,nationalistic,instructs,superimposed,conformation,tricycle,dusan,attributable,unbeknownst,laptops,etching,archbishops,ayatollah,cranial,gharbi,interprets,lackawanna,abingdon,saltwater,tories,lender,minaj,ancillary,ranching,pembrokeshire,topographical,plagiarism,murong,marque,chameleon,assertions,infiltrated,guildhall,reverence,schenectady,formula_25,kollam,notary,mexicana,initiates,abdication,basra,theorems,ionization,dismantling,eared,censors,budgetary,numeral,verlag,excommunicated,distinguishable,quarried,cagliari,hindustan,symbolizing,watertown,descartes,relayed,enclosures,militarily,sault,devolved,dalian,djokovic,filaments,staunton,tumour,curia,villainous,decentralized,galapagos,moncton,quartets,onscreen,necropolis,brasileiro,multipurpose,alamos,comarca,jorgen,concise,mercia,saitama,billiards,entomologist,montserrat,lindbergh,commuting,lethbridge,phoenician,deviations,anaerobic,denouncing,redoubt,fachhochschule,principalities,negros,announcers,seconded,parrots,konami,revivals,approving,devotee,riyadh,overtook,morecambe,lichen,expressionist,waterline,silverstone,geffen,sternites,aspiration,behavioural,grenville,tripura,mediums,genders,pyotr,charlottesville,sacraments,programmable,ps100,shackleton,garonne,sumerian,surpass,authorizing,interlocking,lagoons,voiceless,advert,steeple,boycotted,alouettes,yosef,oxidative,sassanid,benefiting,sayyid,nauru,predetermined,idealism,maxillary,polymerization,semesters,munchen,conor,outfitted,clapham,progenitor,gheorghe,observational,recognitions,numerically,colonized,hazrat,indore,contaminants,fatality,eradicate,assyria,convocation,cameos,skillful,skoda,corfu,confucius,overtly,ramadan,wollongong,placements,d.c..,permutation,contemporaneous,voltages,elegans,universitat,samar,plunder,dwindling,neuter,antonin,sinhala,campania,solidified,stanzas,fibrous,marburg,modernize,sorcery,deutscher,florets,thakur,disruptive,infielder,disintegration,internazionale,vicariate,effigy,tripartite,corrective,klamath,environs,leavenworth,sandhurst,workmen,compagnie,hoseynabad,strabo,palisades,ordovician,sigurd,grandsons,defection,viacom,sinhalese,innovator,uncontrolled,slavonic,indexes,refrigeration,aircrew,superbike,resumption,neustadt,confrontations,arras,hindenburg,ripon,embedding,isomorphism,dwarves,matchup,unison,lofty,argos,louth,constitutionally,transitive,newington,facelift,degeneration,perceptual,aviators,enclosing,igneous,symbolically,academician,constitutionality,iso/iec,sacrificial,maturation,apprentices,enzymology,naturalistic,hajji,arthropods,abbess,vistula,scuttled,gradients,pentathlon,etudes,freedmen,melaleuca,thrice,conductive,sackville,franciscans,stricter,golds,kites,worshiped,monsignor,trios,orally,tiered,primacy,bodywork,castleford,epidemics,alveolar,chapelle,chemists,hillsboro,soulful,warlords,ngati,huguenot,diurnal,remarking,luger,motorways,gauss,jahan,cutoff,proximal,bandai,catchphrase,jonubi,ossetia,codename,codice_2,throated,itinerant,chechnya,riverfront,leela,evoked,entailed,zamboanga,rejoining,circuitry,haymarket,khartoum,feuds,braced,miyazaki,mirren,lubusz,caricature,buttresses,attrition,characterizes,widnes,evanston,materialism,contradictions,marist,midrash,gainsborough,ulithi,turkmen,vidya,escuela,patrician,inspirations,reagent,premierships,humanistic,euphrates,transitioning,belfry,zedong,adaption,kaliningrad,lobos,epics,waiver,coniferous,polydor,inductee,refitted,moraine,unsatisfactory,worsening,polygamy,rajya,nested,subgenre,broadside,stampeders,lingua,incheon,pretender,peloton,persuading,excitation,multan,predates,tonne,brackish,autoimmune,insulated,podcasts,iraqis,bodybuilding,condominiums,midlothian,delft,debtor,asymmetrical,lycaenidae,forcefully,pathogenic,tamaulipas,andaman,intravenous,advancements,senegalese,chronologically,realigned,inquirer,eusebius,dekalb,additives,shortlist,goldwater,hindustani,auditing,caterpillars,pesticide,nakhon,ingestion,lansdowne,traditionalist,northland,thunderbirds,josip,nominating,locale,ventricular,animators,verandah,epistles,surveyors,anthems,dredd,upheaval,passaic,anatolian,svalbard,associative,floodplain,taranaki,estuaries,irreducible,beginners,hammerstein,allocate,coursework,secreted,counteract,handwritten,foundational,passover,discoverer,decoding,wares,bourgeoisie,playgrounds,nazionale,abbreviations,seanad,golan,mishra,godavari,rebranding,attendances,backstory,interrupts,lettered,hasbro,ultralight,hormozgan,armee,moderne,subdue,disuse,improvisational,enrolment,persists,moderated,carinthia,hatchback,inhibitory,capitalized,anatoly,abstracts,albemarle,bergamo,insolvency,sentai,cellars,walloon,joked,kashmiri,dirac,materialized,renomination,homologous,gusts,eighteens,centrifugal,storied,baluchestan,formula_26,poincare,vettel,infuriated,gauges,streetcars,vedanta,stately,liquidated,goguryeo,swifts,accountancy,levee,acadian,hydropower,eustace,comintern,allotment,designating,torsion,molding,irritation,aerobic,halen,concerted,plantings,garrisoned,gramophone,cytoplasm,onslaught,requisitioned,relieving,genitive,centrist,jeong,espanola,dissolving,chatterjee,sparking,connaught,varese,arjuna,carpathian,empowering,meteorologist,decathlon,opioid,hohenzollern,fenced,ibiza,avionics,footscray,scrum,discounts,filament,directories,a.f.c,stiffness,quaternary,adventurers,transmits,harmonious,taizong,radiating,germantown,ejection,projectors,gaseous,nahuatl,vidyalaya,nightlife,redefined,refuted,destitute,arista,potters,disseminated,distanced,jamboree,kaohsiung,tilted,lakeshore,grained,inflicting,kreis,novelists,descendents,mezzanine,recast,fatah,deregulation,ac/dc,australis,kohgiluyeh,boreal,goths,authoring,intoxicated,nonpartisan,theodosius,pyongyang,shree,boyhood,sanfl,plenipotentiary,photosynthesis,presidium,sinaloa,honshu,texan,avenida,transmembrane,malays,acropolis,catalunya,vases,inconsistencies,methodists,quell,suisse,banat,simcoe,cercle,zealanders,discredited,equine,sages,parthian,fascists,interpolation,classifying,spinoff,yehuda,cruised,gypsum,foaled,wallachia,saraswati,imperialist,seabed,footnotes,nakajima,locales,schoolmaster,drosophila,bridgehead,immanuel,courtier,bookseller,niccolo,stylistically,portmanteau,superleague,konkani,millimetres,arboreal,thanjavur,emulation,sounders,decompression,commoners,infusion,methodological,osage,rococo,anchoring,bayreuth,formula_27,abstracting,symbolized,bayonne,electrolyte,rowed,corvettes,traversing,editorship,sampler,presidio,curzon,adirondack,swahili,rearing,bladed,lemur,pashtun,behaviours,bottling,zaire,recognisable,systematics,leeward,formulae,subdistricts,smithfield,vijaya,buoyancy,boosting,cantonal,rishi,airflow,kamakura,adana,emblems,aquifer,clustering,husayn,woolly,wineries,montessori,turntable,exponentially,caverns,espoused,pianists,vorpommern,vicenza,latterly,o'rourke,williamstown,generale,kosice,duisburg,poirot,marshy,mismanagement,mandalay,dagenham,universes,chiral,radiated,stewards,vegan,crankshaft,kyrgyz,amphibian,cymbals,infrequently,offenbach,environmentalist,repatriated,permutations,midshipmen,loudoun,refereed,bamberg,ornamented,nitric,selim,translational,dorsum,annunciation,gippsland,reflector,informational,regia,reactionary,ahmet,weathering,erlewine,legalized,berne,occupant,divas,manifests,analyzes,disproportionate,mitochondria,totalitarian,paulista,interscope,anarcho,correlate,brookfield,elongate,brunel,ordinal,precincts,volatility,equaliser,hittite,somaliland,ticketing,monochrome,ubuntu,chhattisgarh,titleholder,ranches,referendums,blooms,accommodates,merthyr,religiously,ryukyu,tumultuous,checkpoints,anode,mi'kmaq,cannonball,punctuation,remodelled,assassinations,criminology,alternates,yonge,pixar,namibian,piraeus,trondelag,hautes,lifeboats,shoal,atelier,vehemently,sadat,postcode,jainism,lycoming,undisturbed,lutherans,genomics,popmatters,tabriz,isthmian,notched,autistic,horsham,mites,conseil,bloomsbury,seung,cybertron,idris,overhauled,disbandment,idealized,goldfields,worshippers,lobbyist,ailments,paganism,herbarium,athenians,messerschmitt,faraday,entangled,'olya,untreated,criticising,howitzers,parvati,lobed,debussy,atonement,tadeusz,permeability,mueang,sepals,degli,optionally,fuelled,follies,asterisk,pristina,lewiston,congested,overpass,affixed,pleads,telecasts,stanislaus,cryptographic,friesland,hamstring,selkirk,antisubmarine,inundated,overlay,aggregates,fleur,trolleybus,sagan,ibsen,inductees,beltway,tiled,ladders,cadbury,laplace,ascetic,micronesia,conveying,bellingham,cleft,batches,usaid,conjugation,macedon,assisi,reappointed,brine,jinnah,prairies,screenwriting,oxidized,despatches,linearly,fertilizers,brazilians,absorbs,wagga,modernised,scorsese,ashraf,charlestown,esque,habitable,nizhny,lettres,tuscaloosa,esplanade,coalitions,carbohydrates,legate,vermilion,standardised,galleria,psychoanalytic,rearrangement,substation,competency,nationalised,reshuffle,reconstructions,mehdi,bougainville,receivership,contraception,enlistment,conducive,aberystwyth,solicitors,dismisses,fibrosis,montclair,homeowner,surrealism,s.h.i.e.l.d,peregrine,compilers,1790s,parentage,palmas,rzeszow,worldview,eased,svenska,housemate,bundestag,originator,enlisting,outwards,reciprocity,formula_28,carbohydrate,democratically,firefighting,romagna,acknowledgement,khomeini,carbide,quests,vedas,characteristically,guwahati,brixton,unintended,brothels,parietal,namur,sherbrooke,moldavian,baruch,milieu,undulating,laurier,entre,dijon,ethylene,abilene,heracles,paralleling,ceres,dundalk,falun,auspicious,chisinau,polarity,foreclosure,templates,ojibwe,punic,eriksson,biden,bachchan,glaciation,spitfires,norsk,nonviolent,heidegger,algonquin,capacitance,cassettes,balconies,alleles,airdate,conveys,replays,classifies,infrequent,amine,cuttings,rarer,woking,olomouc,amritsar,rockabilly,illyrian,maoist,poignant,tempore,stalinist,segmented,bandmate,mollusc,muhammed,totalled,byrds,tendered,endogenous,kottayam,aisne,oxidase,overhears,illustrators,verve,commercialization,purplish,directv,moulded,lyttelton,baptismal,captors,saracens,georgios,shorten,polity,grids,fitzwilliam,sculls,impurities,confederations,akhtar,intangible,oscillations,parabolic,harlequin,maulana,ovate,tanzanian,singularity,confiscation,qazvin,speyer,phonemes,overgrown,vicarage,gurion,undocumented,niigata,thrones,preamble,stave,interment,liiga,ataturk,aphrodite,groupe,indentured,habsburgs,caption,utilitarian,ozark,slovenes,reproductions,plasticity,serbo,dulwich,castel,barbuda,salons,feuding,lenape,wikileaks,swamy,breuning,shedding,afield,superficially,operationally,lamented,okanagan,hamadan,accolade,furthering,adolphus,fyodor,abridged,cartoonists,pinkish,suharto,cytochrome,methylation,debit,colspan=9|,refine,taoist,signalled,herding,leaved,bayan,fatherland,rampart,sequenced,negation,storyteller,occupiers,barnabas,pelicans,nadir,conscripted,railcars,prerequisite,furthered,columba,carolinas,markup,gwalior,franche,chaco,eglinton,ramparts,rangoon,metabolites,pollination,croat,televisa,holyoke,testimonial,setlist,safavid,sendai,georgians,shakespearean,galleys,regenerative,krzysztof,overtones,estado,barbary,cherbourg,obispo,sayings,composites,sainsbury,deliberation,cosmological,mahalleh,embellished,ascap,biala,pancras,calumet,grands,canvases,antigens,marianas,defenseman,approximated,seedlings,soren,stele,nuncio,immunology,testimonies,glossary,recollections,suitability,tampere,venous,cohomology,methanol,echoing,ivanovich,warmly,sterilization,imran,multiplying,whitechapel,undersea,xuanzong,tacitus,bayesian,roundhouse,correlations,rioters,molds,fiorentina,bandmates,mezzo,thani,guerilla,200th,premiums,tamils,deepwater,chimpanzees,tribesmen,selwyn,globo,turnovers,punctuated,erode,nouvelle,banbury,exponents,abolishing,helical,maimonides,endothelial,goteborg,infield,encroachment,cottonwood,mazowiecki,parable,saarbrucken,reliever,epistemology,artistes,enrich,rationing,formula_29,palmyra,subfamilies,kauai,zoran,fieldwork,arousal,creditor,friuli,celts,comoros,equated,escalation,negev,tallied,inductive,anion,netanyahu,mesoamerican,lepidoptera,aspirated,remit,westmorland,italic,crosse,vaclav,fuego,owain,balmain,venetians,ethnicities,deflected,ticino,apulia,austere,flycatcher,reprising,repressive,hauptbahnhof,subtype,ophthalmology,summarizes,eniwetok,colonisation,subspace,nymphalidae,earmarked,tempe,burnet,crests,abbots,norwegians,enlarge,ashoka,frankfort,livorno,malware,renters,singly,iliad,moresby,rookies,gustavus,affirming,alleges,legume,chekhov,studded,abdicated,suzhou,isidore,townsite,repayment,quintus,yankovic,amorphous,constructor,narrowing,industrialists,tanganyika,capitalization,connective,mughals,rarities,aerodynamics,worthing,antalya,diagnostics,shaftesbury,thracian,obstetrics,benghazi,multiplier,orbitals,livonia,roscommon,intensify,ravel,oaths,overseer,locomotion,necessities,chickasaw,strathclyde,treviso,erfurt,aortic,contemplation,accrington,markazi,predeceased,hippocampus,whitecaps,assemblyman,incursion,ethnography,extraliga,reproducing,directorship,benzene,byway,stupa,taxable,scottsdale,onondaga,favourably,countermeasures,lithuanians,thatched,deflection,tarsus,consuls,annuity,paralleled,contextual,anglian,klang,hoisted,multilingual,enacting,samaj,taoiseach,carthaginian,apologised,hydrology,entrant,seamless,inflorescences,mugabe,westerners,seminaries,wintering,penzance,mitre,sergeants,unoccupied,delimitation,discriminate,upriver,abortive,nihon,bessarabia,calcareous,buffaloes,patil,daegu,streamline,berks,chaparral,laity,conceptions,typified,kiribati,threaded,mattel,eccentricity,signified,patagonia,slavonia,certifying,adnan,astley,sedition,minimally,enumerated,nikos,goalless,walid,narendra,causa,missoula,coolant,dalek,outcrop,hybridization,schoolchildren,peasantry,afghans,confucianism,shahr,gallic,tajik,kierkegaard,sauvignon,commissar,patriarchs,tuskegee,prussians,laois,ricans,talmudic,officiating,aesthetically,baloch,antiochus,separatists,suzerainty,arafat,shading,u.s.c,chancellors,inc..,toolkit,nepenthes,erebidae,solicited,pratap,kabbalah,alchemist,caltech,darjeeling,biopic,spillway,kaiserslautern,nijmegen,bolstered,neath,pahlavi,eugenics,bureaus,retook,northfield,instantaneous,deerfield,humankind,selectivity,putative,boarders,cornhuskers,marathas,raikkonen,aliabad,mangroves,garages,gulch,karzai,poitiers,chernobyl,thane,alexios,belgrano,scion,solubility,urbanized,executable,guizhou,nucleic,tripled,equalled,harare,houseguests,potency,ghazi,repeater,overarching,regrouped,broward,ragtime,d'art,nandi,regalia,campsites,mamluk,plating,wirral,presumption,zenit,archivist,emmerdale,decepticon,carabidae,kagoshima,franconia,guarani,formalism,diagonally,submarginal,denys,walkways,punts,metrolink,hydrographic,droplets,upperside,martyred,hummingbird,antebellum,curiously,mufti,friary,chabad,czechs,shaykh,reactivity,berklee,turbonilla,tongan,sultans,woodville,unlicensed,enmity,dominicans,operculum,quarrying,watercolour,catalyzed,gatwick,'what,mesozoic,auditors,shizuoka,footballing,haldane,telemundo,appended,deducted,disseminate,o'shea,pskov,abrasive,entente,gauteng,calicut,lemurs,elasticity,suffused,scopula,staining,upholding,excesses,shostakovich,loanwords,naidu,championnat,chromatography,boasting,goaltenders,engulfed,salah,kilogram,morristown,shingles,shi'a,labourer,renditions,frantisek,jekyll,zonal,nanda,sheriffs,eigenvalues,divisione,endorsing,ushered,auvergne,cadres,repentance,freemasons,utilising,laureates,diocletian,semiconductors,o'grady,vladivostok,sarkozy,trackage,masculinity,hydroxyl,mervyn,muskets,speculations,gridiron,opportunistic,mascots,aleutian,fillies,sewerage,excommunication,borrowers,capillary,trending,sydenham,synthpop,rajah,cagayan,deportes,kedah,faure,extremism,michoacan,levski,culminates,occitan,bioinformatics,unknowingly,inciting,emulated,footpaths,piacenza,dreadnought,viceroyalty,oceanographic,scouted,combinatorial,ornithologist,cannibalism,mujahideen,independiente,cilicia,hindwing,minimized,odeon,gyorgy,rubles,purchaser,collieries,kickers,interurban,coiled,lynchburg,respondent,plzen,detractors,etchings,centering,intensification,tomography,ranjit,warblers,retelling,reinstatement,cauchy,modulus,redirected,evaluates,beginner,kalateh,perforated,manoeuvre,scrimmage,internships,megawatts,mottled,haakon,tunbridge,kalyan,summarised,sukarno,quetta,canonized,henryk,agglomeration,coahuila,diluted,chiropractic,yogyakarta,talladega,sheik,cation,halting,reprisals,sulfuric,musharraf,sympathizers,publicised,arles,lectionary,fracturing,startups,sangha,latrobe,rideau,ligaments,blockading,cremona,lichens,fabaceae,modulated,evocative,embodies,battersea,indistinct,altai,subsystem,acidity,somatic,formula_30,tariq,rationality,sortie,ashlar,pokal,cytoplasmic,valour,bangla,displacing,hijacking,spectrometry,westmeath,weill,charing,goias,revolvers,individualized,tenured,nawaz,piquet,chanted,discard,bernd,phalanx,reworking,unilaterally,subclass,yitzhak,piloting,circumvent,disregarded,semicircular,viscous,tibetans,endeavours,retaliated,cretan,vienne,workhouse,sufficiency,aurangzeb,legalization,lipids,expanse,eintracht,sanjak,megas,125th,bahraini,yakima,eukaryotes,thwart,affirmation,peloponnese,retailing,carbonyl,chairwoman,macedonians,dentate,rockaway,correctness,wealthier,metamorphic,aragonese,fermanagh,pituitary,schrodinger,evokes,spoiler,chariots,akita,genitalia,combe,confectionery,desegregation,experiential,commodores,persepolis,viejo,restorations,virtualization,hispania,printmaking,stipend,yisrael,theravada,expended,radium,tweeted,polygonal,lippe,charente,leveraged,cutaneous,fallacy,fragrant,bypasses,elaborately,rigidity,majid,majorca,kongo,plasmodium,skits,audiovisual,eerste,staircases,prompts,coulthard,northwestward,riverdale,beatrix,copyrights,prudential,communicates,mated,obscenity,asynchronous,analyse,hansa,searchlight,farnborough,patras,asquith,qarah,contours,fumbled,pasteur,redistributed,almeria,sanctuaries,jewry,israelite,clinicians,koblenz,bookshop,affective,goulburn,panelist,sikorsky,cobham,mimics,ringed,portraiture,probabilistic,girolamo,intelligible,andalusian,jalal,athenaeum,eritrean,auxiliaries,pittsburg,devolution,sangam,isolating,anglers,cronulla,annihilated,kidderminster,synthesize,popularised,theophilus,bandstand,innumerable,chagrin,retroactively,weser,multiples,birdlife,goryeo,pawnee,grosser,grappling,tactile,ahmadinejad,turboprop,erdogan,matchday,proletarian,adhering,complements,austronesian,adverts,luminaries,archeology,impressionism,conifer,sodomy,interracial,platoons,lessen,postings,pejorative,registrations,cookery,persecutions,microbes,audits,idiosyncratic,subsp,suspensions,restricts,colouring,ratify,instrumentals,nucleotides,sulla,posits,bibliotheque,diameters,oceanography,instigation,subsumed,submachine,acceptor,legation,borrows,sedge,discriminated,loaves,insurers,highgate,detectable,abandons,kilns,sportscaster,harwich,iterations,preakness,arduous,tensile,prabhu,shortwave,philologist,shareholding,vegetative,complexities,councilors,distinctively,revitalize,automaton,amassing,montreux,khanh,surabaya,nurnberg,pernambuco,cuisines,charterhouse,firsts,tercera,inhabitant,homophobia,naturalism,einar,powerplant,coruna,entertainments,whedon,rajputs,raton,democracies,arunachal,oeuvre,wallonia,jeddah,trolleybuses,evangelism,vosges,kiowa,minimise,encirclement,undertakes,emigrant,beacons,deepened,grammars,publius,preeminent,seyyed,repechage,crafting,headingley,osteopathic,lithography,hotly,bligh,inshore,betrothed,olympians,formula_31,dissociation,trivandrum,arran,petrovic,stettin,disembarked,simplification,bronzes,philo,acrobatic,jonsson,conjectured,supercharged,kanto,detects,cheeses,correlates,harmonics,lifecycle,sudamericana,reservists,decayed,elitserien,parametric,113th,dusky,hogarth,modulo,symbiotic,monopolies,discontinuation,converges,southerners,tucuman,eclipses,enclaves,emits,famicom,caricatures,artistically,levelled,mussels,erecting,mouthparts,cunard,octaves,crucible,guardia,unusable,lagrangian,droughts,ephemeral,pashto,canis,tapering,sasebo,silurian,metallurgical,outscored,evolves,reissues,sedentary,homotopy,greyhawk,reagents,inheriting,onshore,tilting,rebuffed,reusable,naturalists,basingstoke,insofar,offensives,dravidian,curators,planks,rajan,isoforms,flagstaff,preside,globular,egalitarian,linkages,biographers,goalscorers,molybdenum,centralised,nordland,jurists,ellesmere,rosberg,hideyoshi,restructure,biases,borrower,scathing,redress,tunnelling,workflow,magnates,mahendra,dissenters,plethora,transcriptions,handicrafts,keyword,xi'an,petrograd,unser,prokofiev,90deg,madan,bataan,maronite,kearny,carmarthen,termini,consulates,disallowed,rockville,bowery,fanzine,docklands,bests,prohibitions,yeltsin,selassie,naturalization,realisation,dispensary,tribeca,abdulaziz,pocahontas,stagnation,pamplona,cuneiform,propagating,subsurface,christgau,epithelium,schwerin,lynching,routledge,hanseatic,upanishad,glebe,yugoslavian,complicity,endowments,girona,mynetworktv,entomology,plinth,ba'ath,supercup,torus,akkadian,salted,englewood,commandery,belgaum,prefixed,colorless,dartford,enthroned,caesarea,nominative,sandown,safeguards,hulled,formula_32,leamington,dieppe,spearhead,generalizations,demarcation,llanelli,masque,brickwork,recounting,sufism,strikingly,petrochemical,onslow,monologues,emigrating,anderlecht,sturt,hossein,sakhalin,subduction,novices,deptford,zanjan,airstrikes,coalfield,reintroduction,timbaland,hornby,messianic,stinging,universalist,situational,radiocarbon,strongman,rowling,saloons,traffickers,overran,fribourg,cambrai,gravesend,discretionary,finitely,archetype,assessor,pilipinas,exhumed,invocation,interacted,digitized,timisoara,smelter,teton,sexism,precepts,srinagar,pilsudski,carmelite,hanau,scoreline,hernando,trekking,blogging,fanbase,wielded,vesicles,nationalization,banja,rafts,motoring,luang,takeda,girder,stimulates,histone,sunda,nanoparticles,attains,jumpers,catalogued,alluding,pontus,ancients,examiners,shinkansen,ribbentrop,reimbursement,pharmacological,ramat,stringed,imposes,cheaply,transplanted,taiping,mizoram,looms,wallabies,sideman,kootenay,encased,sportsnet,revolutionized,tangier,benthic,runic,pakistanis,heatseekers,shyam,mishnah,presbyterians,stadt,sutras,straddles,zoroastrian,infer,fueling,gymnasts,ofcom,gunfight,journeyman,tracklist,oshawa,ps500,pa'in,mackinac,xiongnu,mississippian,breckinridge,freemason,bight,autoroute,liberalization,distantly,thrillers,solomons,presumptive,romanization,anecdotal,bohemians,unpaved,milder,concurred,spinners,alphabets,strenuous,rivieres,kerrang,mistreatment,dismounted,intensively,carlist,dancehall,shunting,pluralism,trafficked,brokered,bonaventure,bromide,neckar,designates,malian,reverses,sotheby,sorghum,serine,environmentalists,languedoc,consulship,metering,bankstown,handlers,militiamen,conforming,regularity,pondicherry,armin,capsized,consejo,capitalists,drogheda,granular,purged,acadians,endocrine,intramural,elicit,terns,orientations,miklos,omitting,apocryphal,slapstick,brecon,pliocene,affords,typography,emigre,tsarist,tomasz,beset,nishi,necessitating,encyclical,roleplaying,journeyed,inflow,sprints,progressives,novosibirsk,cameroonian,ephesus,speckled,kinshasa,freiherr,burnaby,dalmatian,torrential,rigor,renegades,bhakti,nurburgring,cosimo,convincingly,reverting,visayas,lewisham,charlottetown,charadriiformesfamily,transferable,jodhpur,converters,deepening,camshaft,underdeveloped,protease,polonia,uterine,quantify,tobruk,dealerships,narasimha,fortran,inactivity,1780s,victors,categorised,naxos,workstation,skink,sardinian,chalice,precede,dammed,sondheim,phineas,tutored,sourcing,uncompromising,placer,tyneside,courtiers,proclaims,pharmacies,hyogo,booksellers,sengoku,kursk,spectrometer,countywide,wielkopolski,bobsleigh,shetty,llywelyn,consistory,heretics,guinean,cliches,individualism,monolithic,imams,usability,bursa,deliberations,railings,torchwood,inconsistency,balearic,stabilizer,demonstrator,facet,radioactivity,outboard,educates,d'oyly,heretical,handover,jurisdictional,shockwave,hispaniola,conceptually,routers,unaffiliated,trentino,formula_33,cypriots,intervenes,neuchatel,formulating,maggiore,delisted,alcohols,thessaly,potable,estimator,suborder,fluency,mimicry,clergymen,infrastructures,rivals.com,baroda,subplot,majlis,plano,clinching,connotation,carinae,savile,intercultural,transcriptional,sandstones,ailerons,annotations,impresario,heinkel,scriptural,intermodal,astrological,ribbed,northeastward,posited,boers,utilise,kalmar,phylum,breakwater,skype,textured,guideline,azeri,rimini,massed,subsidence,anomalous,wolfsburg,polyphonic,accrediting,vodacom,kirov,captaining,kelantan,logie,fervent,eamon,taper,bundeswehr,disproportionately,divination,slobodan,pundits,hispano,kinetics,reunites,makati,ceasing,statistician,amending,chiltern,eparchy,riverine,melanoma,narragansett,pagans,raged,toppled,breaching,zadar,holby,dacian,ochre,velodrome,disparities,amphoe,sedans,webpage,williamsport,lachlan,groton,baring,swastika,heliport,unwillingness,razorbacks,exhibitors,foodstuffs,impacting,tithe,appendages,dermot,subtypes,nurseries,balinese,simulating,stary,remakes,mundi,chautauqua,geologically,stockade,hakka,dilute,kalimantan,pahang,overlapped,fredericton,baha'u'llah,jahangir,damping,benefactors,shomali,triumphal,cieszyn,paradigms,shielded,reggaeton,maharishi,zambian,shearing,golestan,mirroring,partitioning,flyover,songbook,incandescent,merrimack,huguenots,sangeet,vulnerabilities,trademarked,drydock,tantric,honoris,queenstown,labelling,iterative,enlists,statesmen,anglicans,herge,qinghai,burgundian,islami,delineated,zhuge,aggregated,banknote,qatari,suitably,tapestries,asymptotic,charleroi,majorities,pyramidellidae,leanings,climactic,tahir,ramsar,suppressor,revisionist,trawler,ernakulam,penicillium,categorization,slits,entitlement,collegium,earths,benefice,pinochet,puritans,loudspeaker,stockhausen,eurocup,roskilde,alois,jaroslav,rhondda,boutiques,vigor,neurotransmitter,ansar,malden,ferdinando,sported,relented,intercession,camberwell,wettest,thunderbolts,positional,oriel,cloverleaf,penalized,shoshone,rajkumar,completeness,sharjah,chromosomal,belgians,woolen,ultrasonic,sequentially,boleyn,mordella,microsystems,initiator,elachista,mineralogy,rhododendron,integrals,compostela,hamza,sawmills,stadio,berlioz,maidens,stonework,yachting,tappeh,myocardial,laborer,workstations,costumed,nicaea,lanark,roundtable,mashhad,nablus,algonquian,stuyvesant,sarkar,heroines,diwan,laments,intonation,intrigues,almaty,feuded,grandes,algarve,rehabilitate,macrophages,cruciate,dismayed,heuristic,eliezer,kozhikode,covalent,finalised,dimorphism,yaroslavl,overtaking,leverkusen,middlebury,feeders,brookings,speculates,insoluble,lodgings,jozsef,cysteine,shenyang,habilitation,spurious,brainchild,mtdna,comique,albedo,recife,partick,broadening,shahi,orientated,himalaya,swabia,palme,mennonites,spokeswoman,conscripts,sepulchre,chartres,eurozone,scaffold,invertebrate,parishad,bagan,heian,watercolors,basse,supercomputer,commences,tarragona,plainfield,arthurian,functor,identically,murex,chronicling,pressings,burrowing,histoire,guayaquil,goalkeeping,differentiable,warburg,machining,aeneas,kanawha,holocene,ramesses,reprisal,qingdao,avatars,turkestan,cantatas,besieging,repudiated,teamsters,equipping,hydride,ahmadiyya,euston,bottleneck,computations,terengganu,kalinga,stela,rediscovery,'this,azhar,stylised,karelia,polyethylene,kansai,motorised,lounges,normalization,calculators,1700s,goalkeepers,unfolded,commissary,cubism,vignettes,multiverse,heaters,briton,sparingly,childcare,thorium,plock,riksdag,eunuchs,catalysis,limassol,perce,uncensored,whitlam,ulmus,unites,mesopotamian,refraction,biodiesel,forza,fulda,unseated,mountbatten,shahrak,selenium,osijek,mimicking,antimicrobial,axons,simulcasting,donizetti,swabian,sportsmen,hafiz,neared,heraclius,locates,evaded,subcarpathian,bhubaneswar,negeri,jagannath,thaksin,aydin,oromo,lateran,goldsmiths,multiculturalism,cilia,mihai,evangelists,lorient,qajar,polygons,vinod,mechanised,anglophone,prefabricated,mosses,supervillain,airliners,biofuels,iodide,innovators,valais,wilberforce,logarithm,intelligentsia,dissipation,sanctioning,duchies,aymara,porches,simulators,mostar,telepathic,coaxial,caithness,burghs,fourths,stratification,joaquim,scribes,meteorites,monarchist,germination,vries,desiring,replenishment,istria,winemaking,tammany,troupes,hetman,lanceolate,pelagic,triptych,primeira,scant,outbound,hyphae,denser,bentham,basie,normale,executes,ladislaus,kontinental,herat,cruiserweight,activision,customization,manoeuvres,inglewood,northwood,waveform,investiture,inpatient,alignments,kiryat,rabat,archimedes,ustad,monsanto,archetypal,kirkby,sikhism,correspondingly,catskill,overlaid,petrels,widowers,unicameral,federalists,metalcore,gamerankings,mussel,formula_34,lymphocytes,cystic,southgate,vestiges,immortals,kalam,strove,amazons,pocono,sociologists,sopwith,adheres,laurens,caregivers,inspecting,transylvanian,rebroadcast,rhenish,miserables,pyrams,blois,newtonian,carapace,redshirt,gotland,nazir,unilever,distortions,linebackers,federalism,mombasa,lumen,bernoulli,favouring,aligarh,denounce,steamboats,dnieper,stratigraphic,synths,bernese,umass,icebreaker,guanajuato,heisenberg,boldly,diodes,ladakh,dogmatic,scriptwriter,maritimes,battlestar,symposia,adaptable,toluca,bhavan,nanking,ieyasu,picardy,soybean,adalbert,brompton,deutsches,brezhnev,glandular,laotian,hispanicized,ibadan,personification,dalit,yamuna,regio,dispensed,yamagata,zweibrucken,revising,fandom,stances,participle,flavours,khitan,vertebral,crores,mayaguez,dispensation,guntur,undefined,harpercollins,unionism,meena,leveling,philippa,refractory,telstra,judea,attenuation,pylons,elaboration,elegy,edging,gracillariidae,residencies,absentia,reflexive,deportations,dichotomy,stoves,sanremo,shimon,menachem,corneal,conifers,mordellidae,facsimile,diagnoses,cowper,citta,viticulture,divisive,riverview,foals,mystics,polyhedron,plazas,airspeed,redgrave,motherland,impede,multiplicity,barrichello,airships,pharmacists,harvester,clays,payloads,differentiating,popularize,caesars,tunneling,stagnant,circadian,indemnity,sensibilities,musicology,prefects,serfs,metra,lillehammer,carmarthenshire,kiosks,welland,barbican,alkyl,tillandsia,gatherers,asociacion,showings,bharati,brandywine,subversion,scalable,pfizer,dawla,barium,dardanelles,nsdap,konig,ayutthaya,hodgkin,sedimentation,completions,purchasers,sponsorships,maximizing,banked,taoism,minot,enrolls,fructose,aspired,capuchin,outages,artois,carrollton,totality,osceola,pawtucket,fontainebleau,converged,queretaro,competencies,botha,allotments,sheaf,shastri,obliquely,banding,catharines,outwardly,monchengladbach,driest,contemplative,cassini,ranga,pundit,kenilworth,tiananmen,disulfide,formula_35,townlands,codice_3,looping,caravans,rachmaninoff,segmentation,fluorine,anglicised,gnostic,dessau,discern,reconfigured,altrincham,rebounding,battlecruiser,ramblers,1770s,convective,triomphe,miyagi,mourners,instagram,aloft,breastfeeding,courtyards,folkestone,changsha,kumamoto,saarland,grayish,provisionally,appomattox,uncial,classicism,mahindra,elapsed,supremes,monophyletic,cautioned,formula_36,noblewoman,kernels,sucre,swaps,bengaluru,grenfell,epicenter,rockhampton,worshipful,licentiate,metaphorical,malankara,amputated,wattle,palawan,tankobon,nobunaga,polyhedra,transduction,jilin,syrians,affinities,fluently,emanating,anglicized,sportscar,botanists,altona,dravida,chorley,allocations,kunming,luanda,premiering,outlived,mesoamerica,lingual,dissipating,impairments,attenborough,balustrade,emulator,bakhsh,cladding,increments,ascents,workington,qal'eh,winless,categorical,petrel,emphasise,dormer,toros,hijackers,telescopic,solidly,jankovic,cession,gurus,madoff,newry,subsystems,northside,talib,englishmen,farnese,holographic,electives,argonne,scrivener,predated,brugge,nauvoo,catalyses,soared,siddeley,graphically,powerlifting,funicular,sungai,coercive,fusing,uncertainties,locos,acetic,diverge,wedgwood,dressings,tiebreaker,didactic,vyacheslav,acreage,interplanetary,battlecruisers,sunbury,alkaloids,hairpin,automata,wielkie,interdiction,plugins,monkees,nudibranch,esporte,approximations,disabling,powering,characterisation,ecologically,martinsville,termen,perpetuated,lufthansa,ascendancy,motherboard,bolshoi,athanasius,prunus,dilution,invests,nonzero,mendocino,charan,banque,shaheed,counterculture,unita,voivode,hospitalization,vapour,supermarine,resistor,steppes,osnabruck,intermediates,benzodiazepines,sunnyside,privatized,geopolitical,ponta,beersheba,kievan,embody,theoretic,sangh,cartographer,blige,rotors,thruway,battlefields,discernible,demobilized,broodmare,colouration,sagas,policymakers,serialization,augmentation,hoare,frankfurter,transnistria,kinases,detachable,generational,converging,antiaircraft,khaki,bimonthly,coadjutor,arkhangelsk,kannur,buffers,livonian,northwich,enveloped,cysts,yokozuna,herne,beeching,enron,virginian,woollen,excepting,competitively,outtakes,recombinant,hillcrest,clearances,pathe,cumbersome,brasov,u.s.a,likud,christiania,cruciform,hierarchies,wandsworth,lupin,resins,voiceover,sitar,electrochemical,mediacorp,typhus,grenadiers,hepatic,pompeii,weightlifter,bosniak,oxidoreductase,undersecretary,rescuers,ranji,seleucid,analysing,exegesis,tenancy,toure,kristiansand,110th,carillon,minesweepers,poitou,acceded,palladian,redevelop,naismith,rifled,proletariat,shojo,hackensack,harvests,endpoint,kuban,rosenborg,stonehenge,authorisation,jacobean,revocation,compatriots,colliding,undetermined,okayama,acknowledgment,angelou,fresnel,chahar,ethereal,mg/kg,emmet,mobilised,unfavourable,cultura,characterizing,parsonage,skeptics,expressways,rabaul,medea,guardsmen,visakhapatnam,caddo,homophobic,elmwood,encircling,coexistence,contending,seljuk,mycologist,infertility,moliere,insolvent,covenants,underpass,holme,landesliga,workplaces,delinquency,methamphetamine,contrived,tableau,tithes,overlying,usurped,contingents,spares,oligocene,molde,beatification,mordechai,balloting,pampanga,navigators,flowered,debutant,codec,orogeny,newsletters,solon,ambivalent,ubisoft,archdeaconry,harpers,kirkus,jabal,castings,kazhagam,sylhet,yuwen,barnstaple,amidships,causative,isuzu,watchtower,granules,canaveral,remuneration,insurer,payout,horizonte,integrative,attributing,kiwis,skanderbeg,asymmetry,gannett,urbanism,disassembled,unaltered,precluded,melodifestivalen,ascends,plugin,gurkha,bisons,stakeholder,industrialisation,abbotsford,sextet,bustling,uptempo,slavia,choreographers,midwives,haram,javed,gazetteer,subsection,natively,weighting,lysine,meera,redbridge,muchmusic,abruzzo,adjoins,unsustainable,foresters,kbit/s,cosmopterigidae,secularism,poetics,causality,phonograph,estudiantes,ceausescu,universitario,adjoint,applicability,gastropods,nagaland,kentish,mechelen,atalanta,woodpeckers,lombards,gatineau,romansh,avraham,acetylcholine,perturbation,galois,wenceslaus,fuzhou,meandering,dendritic,sacristy,accented,katha,therapeutics,perceives,unskilled,greenhouses,analogues,chaldean,timbre,sloped,volodymyr,sadiq,maghreb,monogram,rearguard,caucuses,mures,metabolite,uyezd,determinism,theosophical,corbet,gaels,disruptions,bicameral,ribosomal,wolseley,clarksville,watersheds,tarsi,radon,milanese,discontinuous,aristotelian,whistleblower,representational,hashim,modestly,localised,atrial,hazara,ravana,troyes,appointees,rubus,morningside,amity,aberdare,ganglia,wests,zbigniew,aerobatic,depopulated,corsican,introspective,twinning,hardtop,shallower,cataract,mesolithic,emblematic,graced,lubrication,republicanism,voronezh,bastions,meissen,irkutsk,oboes,hokkien,sprites,tenet,individualist,capitulated,oakville,dysentery,orientalist,hillsides,keywords,elicited,incised,lagging,apoel,lengthening,attractiveness,marauders,sportswriter,decentralization,boltzmann,contradicts,draftsman,precipitate,solihull,norske,consorts,hauptmann,riflemen,adventists,syndromes,demolishing,customize,continuo,peripherals,seamlessly,linguistically,bhushan,orphanages,paraul,lessened,devanagari,quarto,responders,patronymic,riemannian,altoona,canonization,honouring,geodetic,exemplifies,republica,enzymatic,porters,fairmount,pampa,sufferers,kamchatka,conjugated,coachella,uthman,repositories,copious,headteacher,awami,phoneme,homomorphism,franconian,moorland,davos,quantified,kamloops,quarks,mayoralty,weald,peacekeepers,valerian,particulate,insiders,perthshire,caches,guimaraes,piped,grenadines,kosciuszko,trombonist,artemisia,covariance,intertidal,soybeans,beatified,ellipse,fruiting,deafness,dnipropetrovsk,accrued,zealous,mandala,causation,junius,kilowatt,bakeries,montpelier,airdrie,rectified,bungalows,toleration,debian,pylon,trotskyist,posteriorly,two-and-a-half,herbivorous,islamists,poetical,donne,wodehouse,frome,allium,assimilate,phonemic,minaret,unprofitable,darpa,untenable,leaflet,bitcoin,zahir,thresholds,argentino,jacopo,bespoke,stratified,wellbeing,shiite,basaltic,timberwolves,secrete,taunts,marathons,isomers,carre,consecrators,penobscot,pitcairn,sakha,crosstown,inclusions,impassable,fenders,indre,uscgc,jordi,retinue,logarithmic,pilgrimages,railcar,cashel,blackrock,macroscopic,aligning,tabla,trestle,certify,ronson,palps,dissolves,thickened,silicate,taman,walsingham,hausa,lowestoft,rondo,oleksandr,cuyahoga,retardation,countering,cricketing,holborn,identifiers,hells,geophysics,infighting,sculpting,balaji,webbed,irradiation,runestone,trusses,oriya,sojourn,forfeiture,colonize,exclaimed,eucharistic,lackluster,glazing,northridge,gutenberg,stipulates,macroeconomic,priori,outermost,annular,udinese,insulating,headliner,godel,polytope,megalithic,salix,sharapova,derided,muskegon,braintree,plateaus,confers,autocratic,isomer,interstitial,stamping,omits,kirtland,hatchery,evidences,intifada,111th,podgorica,capua,motivating,nuneaton,jakub,korsakov,amitabh,mundial,monrovia,gluten,predictor,marshalling,d'orleans,levers,touchscreen,brantford,fricative,banishment,descendent,antagonism,ludovico,loudspeakers,formula_37,livelihoods,manassas,steamships,dewsbury,uppermost,humayun,lures,pinnacles,dependents,lecce,clumps,observatories,paleozoic,dedicating,samiti,draughtsman,gauls,incite,infringing,nepean,pythagorean,convents,triumvirate,seigneur,gaiman,vagrant,fossa,byproduct,serrated,renfrewshire,sheltering,achaemenid,dukedom,catchers,sampdoria,platelet,bielefeld,fluctuating,phenomenology,strikeout,ethnology,prospectors,woodworking,tatra,wildfires,meditations,agrippa,fortescue,qureshi,wojciech,methyltransferase,accusative,saatchi,amerindian,volcanism,zeeland,toyama,vladimirovich,allege,polygram,redox,budgeted,advisories,nematode,chipset,starscream,tonbridge,hardening,shales,accompanist,paraded,phonographic,whitefish,sportive,audiobook,kalisz,hibernation,latif,duels,ps200,coxeter,nayak,safeguarding,cantabria,minesweeping,zeiss,dunams,catholicos,sawtooth,ontological,nicobar,bridgend,unclassified,intrinsically,hanoverian,rabbitohs,kenseth,alcalde,northumbrian,raritan,septuagint,presse,sevres,origen,dandenong,peachtree,intersected,impeded,usages,hippodrome,novara,trajectories,customarily,yardage,inflected,yanow,kalan,taverns,liguria,librettist,intermarriage,1760s,courant,gambier,infanta,ptolemaic,ukulele,haganah,sceptical,manchukuo,plexus,implantation,hilal,intersex,efficiencies,arbroath,hagerstown,adelphi,diario,marais,matti,lifes,coining,modalities,divya,bletchley,conserving,ivorian,mithridates,generative,strikeforce,laymen,toponymy,pogrom,satya,meticulously,agios,dufferin,yaakov,fortnightly,cargoes,deterrence,prefrontal,przemysl,mitterrand,commemorations,chatsworth,gurdwara,abuja,chakraborty,badajoz,geometries,artiste,diatonic,ganglion,presides,marymount,nanak,cytokines,feudalism,storks,rowers,widens,politico,evangelicals,assailants,pittsfield,allowable,bijapur,telenovelas,dichomeris,glenelg,herbivores,keita,inked,radom,fundraisers,constantius,boheme,portability,komnenos,crystallography,derrida,moderates,tavistock,fateh,spacex,disjoint,bristles,commercialized,interwoven,empirically,regius,bulacan,newsday,showa,radicalism,yarrow,pleura,sayed,structuring,cotes,reminiscences,acetyl,edicts,escalators,aomori,encapsulated,legacies,bunbury,placings,fearsome,postscript,powerfully,keighley,hildesheim,amicus,crevices,deserters,benelux,aurangabad,freeware,ioannis,carpathians,chirac,seceded,prepaid,landlocked,naturalised,yanukovych,soundscan,blotch,phenotypic,determinants,twente,dictatorial,giessen,composes,recherche,pathophysiology,inventories,ayurveda,elevating,gravestone,degeneres,vilayet,popularizing,spartanburg,bloemfontein,previewed,renunciation,genotype,ogilvy,tracery,blacklisted,emissaries,diploid,disclosures,tupolev,shinjuku,antecedents,pennine,braganza,bhattacharya,countable,spectroscopic,ingolstadt,theseus,corroborated,compounding,thrombosis,extremadura,medallions,hasanabad,lambton,perpetuity,glycol,besancon,palaiologos,pandey,caicos,antecedent,stratum,laserdisc,novitiate,crowdfunding,palatal,sorceress,dassault,toughness,celle,cezanne,vientiane,tioga,hander,crossbar,gisborne,cursor,inspectorate,serif,praia,sphingidae,nameplate,psalter,ivanovic,sitka,equalised,mutineers,sergius,outgrowth,creationism,haredi,rhizomes,predominate,undertakings,vulgate,hydrothermal,abbeville,geodesic,kampung,physiotherapy,unauthorised,asteraceae,conservationist,minoan,supersport,mohammadabad,cranbrook,mentorship,legitimately,marshland,datuk,louvain,potawatomi,carnivores,levies,lyell,hymnal,regionals,tinto,shikoku,conformal,wanganui,beira,lleida,standstill,deloitte,formula_40,corbusier,chancellery,mixtapes,airtime,muhlenberg,formula_39,bracts,thrashers,prodigious,gironde,chickamauga,uyghurs,substitutions,pescara,batangas,gregarious,gijon,paleo,mathura,pumas,proportionally,hawkesbury,yucca,kristiania,funimation,fluted,eloquence,mohun,aftermarket,chroniclers,futurist,nonconformist,branko,mannerisms,lesnar,opengl,altos,retainers,ashfield,shelbourne,sulaiman,divisie,gwent,locarno,lieder,minkowski,bivalve,redeployed,cartography,seaway,bookings,decays,ostend,antiquaries,pathogenesis,formula_38,chrysalis,esperance,valli,motogp,homelands,bridged,bloor,ghazal,vulgaris,baekje,prospector,calculates,debtors,hesperiidae,titian,returner,landgrave,frontenac,kelowna,pregame,castelo,caius,canoeist,watercolours,winterthur,superintendents,dissonance,dubstep,adorn,matic,salih,hillel,swordsman,flavoured,emitter,assays,monongahela,deeded,brazzaville,sufferings,babylonia,fecal,umbria,astrologer,gentrification,frescos,phasing,zielona,ecozone,candido,manoj,quadrilateral,gyula,falsetto,prewar,puntland,infinitive,contraceptive,bakhtiari,ohrid,socialization,tailplane,evoking,havelock,macapagal,plundering,104th,keynesian,templars,phrasing,morphologically,czestochowa,humorously,catawba,burgas,chiswick,ellipsoid,kodansha,inwards,gautama,katanga,orthopaedic,heilongjiang,sieges,outsourced,subterminal,vijayawada,hares,oration,leitrim,ravines,manawatu,cryogenic,tracklisting,about.com,ambedkar,degenerated,hastened,venturing,lobbyists,shekhar,typefaces,northcote,rugen,'good,ornithology,asexual,hemispheres,unsupported,glyphs,spoleto,epigenetic,musicianship,donington,diogo,kangxi,bisected,polymorphism,megawatt,salta,embossed,cheetahs,cruzeiro,unhcr,aristide,rayleigh,maturing,indonesians,noire,llano,ffffff,camus,purges,annales,convair,apostasy,algol,phage,apaches,marketers,aldehyde,pompidou,kharkov,forgeries,praetorian,divested,retrospectively,gornji,scutellum,bitumen,pausanias,magnification,imitations,nyasaland,geographers,floodlights,athlone,hippolyte,expositions,clarinetist,razak,neutrinos,rotax,sheykh,plush,interconnect,andalus,cladogram,rudyard,resonator,granby,blackfriars,placido,windscreen,sahel,minamoto,haida,cations,emden,blackheath,thematically,blacklist,pawel,disseminating,academical,undamaged,raytheon,harsher,powhatan,ramachandran,saddles,paderborn,capping,zahra,prospecting,glycine,chromatin,profane,banska,helmand,okinawan,dislocation,oscillators,insectivorous,foyle,gilgit,autonomic,tuareg,sluice,pollinated,multiplexed,granary,narcissus,ranchi,staines,nitra,goalscoring,midwifery,pensioners,algorithmic,meetinghouse,biblioteca,besar,narva,angkor,predate,lohan,cyclical,detainee,occipital,eventing,faisalabad,dartmoor,kublai,courtly,resigns,radii,megachilidae,cartels,shortfall,xhosa,unregistered,benchmarks,dystopian,bulkhead,ponsonby,jovanovic,accumulates,papuan,bhutanese,intuitively,gotaland,headliners,recursion,dejan,novellas,diphthongs,imbued,withstood,analgesic,amplify,powertrain,programing,maidan,alstom,affirms,eradicated,summerslam,videogame,molla,severing,foundered,gallium,atmospheres,desalination,shmuel,howmeh,catolica,bossier,reconstructing,isolates,lyase,tweets,unconnected,tidewater,divisible,cohorts,orebro,presov,furnishing,folklorist,simplifying,centrale,notations,factorization,monarchies,deepen,macomb,facilitation,hennepin,declassified,redrawn,microprocessors,preliminaries,enlarging,timeframe,deutschen,shipbuilders,patiala,ferrous,aquariums,genealogies,vieux,unrecognized,bridgwater,tetrahedral,thule,resignations,gondwana,registries,agder,dataset,felled,parva,analyzer,worsen,coleraine,columella,blockaded,polytechnique,reassembled,reentry,narvik,greys,nigra,knockouts,bofors,gniezno,slotted,hamasaki,ferrers,conferring,thirdly,domestication,photojournalist,universality,preclude,ponting,halved,thereupon,photosynthetic,ostrava,mismatch,pangasinan,intermediaries,abolitionists,transited,headings,ustase,radiological,interconnection,dabrowa,invariants,honorius,preferentially,chantilly,marysville,dialectical,antioquia,abstained,gogol,dirichlet,muricidae,symmetries,reproduces,brazos,fatwa,bacillus,ketone,paribas,chowk,multiplicative,dermatitis,mamluks,devotes,adenosine,newbery,meditative,minefields,inflection,oxfam,conwy,bystrica,imprints,pandavas,infinitesimal,conurbation,amphetamine,reestablish,furth,edessa,injustices,frankston,serjeant,4x200,khazar,sihanouk,longchamp,stags,pogroms,coups,upperparts,endpoints,infringed,nuanced,summing,humorist,pacification,ciaran,jamaat,anteriorly,roddick,springboks,faceted,hypoxia,rigorously,cleves,fatimid,ayurvedic,tabled,ratna,senhora,maricopa,seibu,gauguin,holomorphic,campgrounds,amboy,coordinators,ponderosa,casemates,ouachita,nanaimo,mindoro,zealander,rimsky,cluny,tomaszow,meghalaya,caetano,tilak,roussillon,landtag,gravitation,dystrophy,cephalopods,trombones,glens,killarney,denominated,anthropogenic,pssas,roubaix,carcasses,montmorency,neotropical,communicative,rabindranath,ordinated,separable,overriding,surged,sagebrush,conciliation,codice_4,durrani,phosphatase,qadir,votive,revitalized,taiyuan,tyrannosaurus,graze,slovaks,nematodes,environmentalism,blockhouse,illiteracy,schengen,ecotourism,alternation,conic,wields,hounslow,blackfoot,kwame,ambulatory,volhynia,hordaland,croton,piedras,rohit,drava,conceptualized,birla,illustrative,gurgaon,barisal,tutsi,dezong,nasional,polje,chanson,clarinets,krasnoyarsk,aleksandrovich,cosmonaut,d'este,palliative,midseason,silencing,wardens,durer,girders,salamanders,torrington,supersonics,lauda,farid,circumnavigation,embankments,funnels,bajnoksag,lorries,cappadocia,jains,warringah,retirees,burgesses,equalization,cusco,ganesan,algal,amazonian,lineups,allocating,conquerors,usurper,mnemonic,predating,brahmaputra,ahmadabad,maidenhead,numismatic,subregion,encamped,reciprocating,freebsd,irgun,tortoises,governorates,zionists,airfoil,collated,ajmer,fiennes,etymological,polemic,chadian,clerestory,nordiques,fluctuated,calvados,oxidizing,trailhead,massena,quarrels,dordogne,tirunelveli,pyruvate,pulsed,athabasca,sylar,appointee,serer,japonica,andronikos,conferencing,nicolaus,chemin,ascertained,incited,woodbine,helices,hospitalised,emplacements,to/from,orchestre,tyrannical,pannonia,methodism,pop/rock,shibuya,berbers,despot,seaward,westpac,separator,perpignan,alamein,judeo,publicize,quantization,ethniki,gracilis,menlo,offside,oscillating,unregulated,succumbing,finnmark,metrical,suleyman,raith,sovereigns,bundesstrasse,kartli,fiduciary,darshan,foramen,curler,concubines,calvinism,larouche,bukhara,sophomores,mohanlal,lutheranism,monomer,eamonn,'black,uncontested,immersive,tutorials,beachhead,bindings,permeable,postulates,comite,transformative,indiscriminate,hofstra,associacao,amarna,dermatology,lapland,aosta,babur,unambiguous,formatting,schoolboys,gwangju,superconducting,replayed,adherent,aureus,compressors,forcible,spitsbergen,boulevards,budgeting,nossa,annandale,perumal,interregnum,sassoon,kwajalein,greenbrier,caldas,triangulation,flavius,increment,shakhtar,nullified,pinfall,nomen,microfinance,depreciation,cubist,steeper,splendour,gruppe,everyman,chasers,campaigners,bridle,modality,percussive,darkly,capes,velar,picton,triennial,factional,padang,toponym,betterment,norepinephrine,112th,estuarine,diemen,warehousing,morphism,ideologically,pairings,immunization,crassus,exporters,sefer,flocked,bulbous,deseret,booms,calcite,bohol,elven,groot,pulau,citigroup,wyeth,modernizing,layering,pastiche,complies,printmaker,condenser,theropod,cassino,oxyrhynchus,akademie,trainings,lowercase,coxae,parte,chetniks,pentagonal,keselowski,monocoque,morsi,reticulum,meiosis,clapboard,recoveries,tinge,an/fps,revista,sidon,livre,epidermis,conglomerates,kampong,congruent,harlequins,tergum,simplifies,epidemiological,underwriting,tcp/ip,exclusivity,multidimensional,mysql,columbine,ecologist,hayat,sicilies,levees,handset,aesop,usenet,pacquiao,archiving,alexandrian,compensatory,broadsheet,annotation,bahamian,d'affaires,interludes,phraya,shamans,marmara,customizable,immortalized,ambushes,chlorophyll,diesels,emulsion,rheumatoid,voluminous,screenwriters,tailoring,sedis,runcorn,democratization,bushehr,anacostia,constanta,antiquary,sixtus,radiate,advaita,antimony,acumen,barristers,reichsbahn,ronstadt,symbolist,pasig,cursive,secessionist,afrikaner,munnetra,inversely,adsorption,syllabic,moltke,idioms,midline,olimpico,diphosphate,cautions,radziwill,mobilisation,copelatus,trawlers,unicron,bhaskar,financiers,minimalism,derailment,marxists,oireachtas,abdicate,eigenvalue,zafar,vytautas,ganguly,chelyabinsk,telluride,subordination,ferried,dived,vendee,pictish,dimitrov,expiry,carnation,cayley,magnitudes,lismore,gretna,sandwiched,unmasked,sandomierz,swarthmore,tetra,nanyang,pevsner,dehradun,mormonism,rashi,complying,seaplanes,ningbo,cooperates,strathcona,mornington,mestizo,yulia,edgbaston,palisade,ethno,polytopes,espirito,tymoshenko,pronunciations,paradoxical,taichung,chipmunks,erhard,maximise,accretion,kanda,`abdu'l,narrowest,umpiring,mycenaean,divisor,geneticist,ceredigion,barque,hobbyists,equates,auxerre,spinose,cheil,sweetwater,guano,carboxylic,archiv,tannery,cormorant,agonists,fundacion,anbar,tunku,hindrance,meerut,concordat,secunderabad,kachin,achievable,murfreesboro,comprehensively,forges,broadest,synchronised,speciation,scapa,aliyev,conmebol,tirelessly,subjugated,pillaged,udaipur,defensively,lakhs,stateless,haasan,headlamps,patterning,podiums,polyphony,mcmurdo,mujer,vocally,storeyed,mucosa,multivariate,scopus,minimizes,formalised,certiorari,bourges,populate,overhanging,gaiety,unreserved,borromeo,woolworths,isotopic,bashar,purify,vertebra,medan,juxtaposition,earthwork,elongation,chaudhary,schematic,piast,steeped,nanotubes,fouls,achaea,legionnaires,abdur,qmjhl,embraer,hardback,centerville,ilocos,slovan,whitehorse,mauritian,moulding,mapuche,donned,provisioning,gazprom,jonesboro,audley,lightest,calyx,coldwater,trigonometric,petroglyphs,psychoanalyst,congregate,zambezi,fissure,supervises,bexley,etobicoke,wairarapa,tectonics,emphasises,formula_41,debugging,linfield,spatially,ionizing,ungulates,orinoco,clades,erlangen,news/talk,vols.,ceara,yakovlev,finsbury,entanglement,fieldhouse,graphene,intensifying,grigory,keyong,zacatecas,ninian,allgemeine,keswick,societa,snorri,femininity,najib,monoclonal,guyanese,postulate,huntly,abbeys,machinist,yunus,emphasising,ishaq,urmia,bremerton,pretenders,lumiere,thoroughfares,chikara,dramatized,metathorax,taiko,transcendence,wycliffe,retrieves,umpired,steuben,racehorses,taylors,kuznetsov,montezuma,precambrian,canopies,gaozong,propodeum,disestablished,retroactive,shoreham,rhizome,doubleheader,clinician,diwali,quartzite,shabaab,agassiz,despatched,stormwater,luxemburg,callao,universidade,courland,skane,glyph,dormers,witwatersrand,curacy,qualcomm,nansen,entablature,lauper,hausdorff,lusaka,ruthenian,360deg,cityscape,douai,vaishnava,spars,vaulting,rationalist,gygax,sequestration,typology,pollinates,accelerators,leben,colonials,cenotaph,imparted,carthaginians,equaled,rostrum,gobind,bodhisattva,oberst,bicycling,arabi,sangre,biophysics,hainaut,vernal,lunenburg,apportioned,finches,lajos,nenad,repackaged,zayed,nikephoros,r.e.m,swaminarayan,gestalt,unplaced,crags,grohl,sialkot,unsaturated,gwinnett,linemen,forays,palakkad,writs,instrumentalists,aircrews,badged,terrapins,180deg,oneness,commissariat,changi,pupation,circumscribed,contador,isotropic,administrated,fiefs,nimes,intrusions,minoru,geschichte,nadph,tainan,changchun,carbondale,frisia,swapo,evesham,hawai'i,encyclopedic,transporters,dysplasia,formula_42,onsite,jindal,guetta,judgements,narbonne,permissions,paleogene,rationalism,vilna,isometric,subtracted,chattahoochee,lamina,missa,greville,pervez,lattices,persistently,crystallization,timbered,hawaiians,fouling,interrelated,masood,ripening,stasi,gamal,visigothic,warlike,cybernetics,tanjung,forfar,cybernetic,karelian,brooklands,belfort,greifswald,campeche,inexplicably,refereeing,understory,uninterested,prius,collegiately,sefid,sarsfield,categorize,biannual,elsevier,eisteddfod,declension,autonoma,procuring,misrepresentation,novelization,bibliographic,shamanism,vestments,potash,eastleigh,ionized,turan,lavishly,scilly,balanchine,importers,parlance,'that,kanyakumari,synods,mieszko,crossovers,serfdom,conformational,legislated,exclave,heathland,sadar,differentiates,propositional,konstantinos,photoshop,manche,vellore,appalachia,orestes,taiga,exchanger,grozny,invalidated,baffin,spezia,staunchly,eisenach,robustness,virtuosity,ciphers,inlets,bolagh,understandings,bosniaks,parser,typhoons,sinan,luzerne,webcomic,subtraction,jhelum,businessweek,ceske,refrained,firebox,mitigated,helmholtz,dilip,eslamabad,metalwork,lucan,apportionment,provident,gdynia,schooners,casement,danse,hajjiabad,benazir,buttress,anthracite,newsreel,wollaston,dispatching,cadastral,riverboat,provincetown,nantwich,missal,irreverent,juxtaposed,darya,ennobled,electropop,stereoscopic,maneuverability,laban,luhansk,udine,collectibles,haulage,holyrood,materially,supercharger,gorizia,shkoder,townhouses,pilate,layoffs,folkloric,dialectic,exuberant,matures,malla,ceuta,citizenry,crewed,couplet,stopover,transposition,tradesmen,antioxidant,amines,utterance,grahame,landless,isere,diction,appellant,satirist,urbino,intertoto,subiaco,antonescu,nehemiah,ubiquitin,emcee,stourbridge,fencers,103rd,wranglers,monteverdi,watertight,expounded,xiamen,manmohan,pirie,threefold,antidepressant,sheboygan,grieg,cancerous,diverging,bernini,polychrome,fundamentalism,bihari,critiqued,cholas,villers,tendulkar,dafydd,vastra,fringed,evangelization,episcopalian,maliki,sana'a,ashburton,trianon,allegany,heptathlon,insufficiently,panelists,pharrell,hexham,amharic,fertilized,plumes,cistern,stratigraphy,akershus,catalans,karoo,rupee,minuteman,quantification,wigmore,leutnant,metanotum,weeknights,iridescent,extrasolar,brechin,deuterium,kuching,lyricism,astrakhan,brookhaven,euphorbia,hradec,bhagat,vardar,aylmer,positron,amygdala,speculators,unaccompanied,debrecen,slurry,windhoek,disaffected,rapporteur,mellitus,blockers,fronds,yatra,sportsperson,precession,physiologist,weeknight,pidgin,pharma,condemns,standardize,zetian,tibor,glycoprotein,emporia,cormorants,amalie,accesses,leonhard,denbighshire,roald,116th,will.i.am,symbiosis,privatised,meanders,chemnitz,jabalpur,shing,secede,ludvig,krajina,homegrown,snippets,sasanian,euripides,peder,cimarron,streaked,graubunden,kilimanjaro,mbeki,middleware,flensburg,bukovina,lindwall,marsalis,profited,abkhaz,polis,camouflaged,amyloid,morgantown,ovoid,bodleian,morte,quashed,gamelan,juventud,natchitoches,storyboard,freeview,enumeration,cielo,preludes,bulawayo,1600s,olympiads,multicast,faunal,asura,reinforces,puranas,ziegfeld,handicraft,seamount,kheil,noche,hallmarks,dermal,colorectal,encircle,hessen,umbilicus,sunnis,leste,unwin,disclosing,superfund,montmartre,refuelling,subprime,kolhapur,etiology,bismuth,laissez,vibrational,mazar,alcoa,rumsfeld,recurve,ticonderoga,lionsgate,onlookers,homesteads,filesystem,barometric,kingswood,biofuel,belleza,moshav,occidentalis,asymptomatic,northeasterly,leveson,huygens,numan,kingsway,primogeniture,toyotomi,yazoo,limpets,greenbelt,booed,concurrence,dihedral,ventrites,raipur,sibiu,plotters,kitab,109th,trackbed,skilful,berthed,effendi,fairing,sephardi,mikhailovich,lockyer,wadham,invertible,paperbacks,alphabetic,deuteronomy,constitutive,leathery,greyhounds,estoril,beechcraft,poblacion,cossidae,excreted,flamingos,singha,olmec,neurotransmitters,ascoli,nkrumah,forerunners,dualism,disenchanted,benefitted,centrum,undesignated,noida,o'donoghue,collages,egrets,egmont,wuppertal,cleave,montgomerie,pseudomonas,srinivasa,lymphatic,stadia,resold,minima,evacuees,consumerism,ronde,biochemist,automorphism,hollows,smuts,improvisations,vespasian,bream,pimlico,eglin,colne,melancholic,berhad,ousting,saale,notaulices,ouest,hunslet,tiberias,abdomina,ramsgate,stanislas,donbass,pontefract,sucrose,halts,drammen,chelm,l'arc,taming,trolleys,konin,incertae,licensees,scythian,giorgos,dative,tanglewood,farmlands,o'keeffe,caesium,romsdal,amstrad,corte,oglethorpe,huntingdonshire,magnetization,adapts,zamosc,shooto,cuttack,centrepiece,storehouse,winehouse,morbidity,woodcuts,ryazan,buddleja,buoyant,bodmin,estero,austral,verifiable,periyar,christendom,curtail,shura,kaifeng,cotswold,invariance,seafaring,gorica,androgen,usman,seabird,forecourt,pekka,juridical,audacious,yasser,cacti,qianlong,polemical,d'amore,espanyol,distrito,cartographers,pacifism,serpents,backa,nucleophilic,overturning,duplicates,marksman,oriente,vuitton,oberleutnant,gielgud,gesta,swinburne,transfiguration,1750s,retaken,celje,fredrikstad,asuka,cropping,mansard,donates,blacksmiths,vijayanagara,anuradhapura,germinate,betis,foreshore,jalandhar,bayonets,devaluation,frazione,ablaze,abidjan,approvals,homeostasis,corollary,auden,superfast,redcliffe,luxembourgish,datum,geraldton,printings,ludhiana,honoree,synchrotron,invercargill,hurriedly,108th,three-and-a-half,colonist,bexar,limousin,bessemer,ossetian,nunataks,buddhas,rebuked,thais,tilburg,verdicts,interleukin,unproven,dordrecht,solent,acclamation,muammar,dahomey,operettas,4x400,arrears,negotiators,whitehaven,apparitions,armoury,psychoactive,worshipers,sculptured,elphinstone,airshow,kjell,o'callaghan,shrank,professorships,predominance,subhash,coulomb,sekolah,retrofitted,samos,overthrowing,vibrato,resistors,palearctic,datasets,doordarshan,subcutaneous,compiles,immorality,patchwork,trinidadian,glycogen,pronged,zohar,visigoths,freres,akram,justo,agora,intakes,craiova,playwriting,bukhari,militarism,iwate,petitioners,harun,wisla,inefficiency,vendome,ledges,schopenhauer,kashi,entombed,assesses,tenn.,noumea,baguio,carex,o'donovan,filings,hillsdale,conjectures,blotches,annuals,lindisfarne,negated,vivek,angouleme,trincomalee,cofactor,verkhovna,backfield,twofold,automaker,rudra,freighters,darul,gharana,busway,formula_43,plattsburgh,portuguesa,showrunner,roadmap,valenciennes,erdos,biafra,spiritualism,transactional,modifies,carne,107th,cocos,gcses,tiverton,radiotherapy,meadowlands,gunma,srebrenica,foxtel,authenticated,enslavement,classicist,klaipeda,minstrels,searchable,infantrymen,incitement,shiga,nadp+,urals,guilders,banquets,exteriors,counterattacks,visualized,diacritics,patrimony,svensson,transepts,prizren,telegraphy,najaf,emblazoned,coupes,effluent,ragam,omani,greensburg,taino,flintshire,cd/dvd,lobbies,narrating,cacao,seafarers,bicolor,collaboratively,suraj,floodlit,sacral,puppetry,tlingit,malwa,login,motionless,thien,overseers,vihar,golem,specializations,bathhouse,priming,overdubs,winningest,archetypes,uniao,acland,creamery,slovakian,lithographs,maryborough,confidently,excavating,stillborn,ramallah,audiencia,alava,ternary,hermits,rostam,bauxite,gawain,lothair,captions,gulfstream,timelines,receded,mediating,petain,bastia,rudbar,bidders,disclaimer,shrews,tailings,trilobites,yuriy,jamil,demotion,gynecology,rajinikanth,madrigals,ghazni,flycatchers,vitebsk,bizet,computationally,kashgar,refinements,frankford,heralds,europe/africa,levante,disordered,sandringham,queues,ransacked,trebizond,verdes,comedie,primitives,figurine,organists,culminate,gosport,coagulation,ferrying,hoyas,polyurethane,prohibitive,midfielders,ligase,progesterone,defectors,sweetened,backcountry,diodorus,waterside,nieuport,khwaja,jurong,decried,gorkha,ismaili,300th,octahedral,kindergartens,paseo,codification,notifications,disregarding,risque,reconquista,shortland,atolls,texarkana,perceval,d'etudes,kanal,herbicides,tikva,nuova,gatherer,dissented,soweto,dexterity,enver,bacharach,placekicker,carnivals,automate,maynooth,symplectic,chetnik,militaire,upanishads,distributive,strafing,championing,moiety,miliband,blackadder,enforceable,maung,dimer,stadtbahn,diverges,obstructions,coleophoridae,disposals,shamrocks,aural,banca,bahru,coxed,grierson,vanadium,watermill,radiative,ecoregions,berets,hariri,bicarbonate,evacuations,mallee,nairn,rushden,loggia,slupsk,satisfactorily,milliseconds,cariboo,reine,cyclo,pigmentation,postmodernism,aqueducts,vasari,bourgogne,dilemmas,liquefied,fluminense,alloa,ibaraki,tenements,kumasi,humerus,raghu,labours,putsch,soundcloud,bodybuilder,rakyat,domitian,pesaro,translocation,sembilan,homeric,enforcers,tombstones,lectureship,rotorua,salamis,nikolaos,inferences,superfortress,lithgow,surmised,undercard,tarnow,barisan,stingrays,federacion,coldstream,haverford,ornithological,heerenveen,eleazar,jyoti,murali,bamako,riverbed,subsidised,theban,conspicuously,vistas,conservatorium,madrasa,kingfishers,arnulf,credential,syndicalist,sheathed,discontinuity,prisms,tsushima,coastlines,escapees,vitis,optimizing,megapixel,overground,embattled,halide,sprinters,buoys,mpumalanga,peculiarities,106th,roamed,menezes,macao,prelates,papyri,freemen,dissertations,irishmen,pooled,sverre,reconquest,conveyance,subjectivity,asturian,circassian,formula_45,comdr,thickets,unstressed,monro,passively,harmonium,moveable,dinar,carlsson,elysees,chairing,b'nai,confusingly,kaoru,convolution,godolphin,facilitator,saxophones,eelam,jebel,copulation,anions,livres,licensure,pontypridd,arakan,controllable,alessandria,propelling,stellenbosch,tiber,wolka,liberators,yarns,d'azur,tsinghua,semnan,amhara,ablation,melies,tonality,historique,beeston,kahne,intricately,sonoran,robespierre,gyrus,boycotts,defaulted,infill,maranhao,emigres,framingham,paraiba,wilhelmshaven,tritium,skyway,labial,supplementation,possessor,underserved,motets,maldivian,marrakech,quays,wikimedia,turbojet,demobilization,petrarch,encroaching,sloops,masted,karbala,corvallis,agribusiness,seaford,stenosis,hieronymus,irani,superdraft,baronies,cortisol,notability,veena,pontic,cyclin,archeologists,newham,culled,concurring,aeolian,manorial,shouldered,fords,philanthropists,105th,siddharth,gotthard,halim,rajshahi,jurchen,detritus,practicable,earthenware,discarding,travelogue,neuromuscular,elkhart,raeder,zygmunt,metastasis,internees,102nd,vigour,upmarket,summarizing,subjunctive,offsets,elizabethtown,udupi,pardubice,repeaters,instituting,archaea,substandard,technische,linga,anatomist,flourishes,velika,tenochtitlan,evangelistic,fitchburg,springbok,cascading,hydrostatic,avars,occasioned,filipina,perceiving,shimbun,africanus,consternation,tsing,optically,beitar,45deg,abutments,roseville,monomers,huelva,lotteries,hypothalamus,internationalist,electromechanical,hummingbirds,fibreglass,salaried,dramatists,uncovers,invokes,earners,excretion,gelding,ancien,aeronautica,haverhill,stour,ittihad,abramoff,yakov,ayodhya,accelerates,industrially,aeroplanes,deleterious,dwelt,belvoir,harpalus,atpase,maluku,alasdair,proportionality,taran,epistemological,interferometer,polypeptide,adjudged,villager,metastatic,marshalls,madhavan,archduchess,weizmann,kalgoorlie,balan,predefined,sessile,sagaing,brevity,insecticide,psychosocial,africana,steelworks,aether,aquifers,belem,mineiro,almagro,radiators,cenozoic,solute,turbocharger,invicta,guested,buccaneer,idolatry,unmatched,paducah,sinestro,dispossessed,conforms,responsiveness,cyanobacteria,flautist,procurator,complementing,semifinalist,rechargeable,permafrost,cytokine,refuges,boomed,gelderland,franchised,jinan,burnie,doubtless,randomness,colspan=12,angra,ginebra,famers,nuestro,declarative,roughness,lauenburg,motile,rekha,issuer,piney,interceptors,napoca,gipsy,formulaic,formula_44,viswanathan,ebrahim,thessalonica,galeria,muskogee,unsold,html5,taito,mobutu,icann,carnarvon,fairtrade,morphisms,upsilon,nozzles,fabius,meander,murugan,strontium,episcopacy,sandinista,parasol,attenuated,bhima,primeval,panay,ordinator,negara,osteoporosis,glossop,ebook,paradoxically,grevillea,modoc,equating,phonetically,legumes,covariant,dorje,quatre,bruxelles,pyroclastic,shipbuilder,zhaozong,obscuring,sveriges,tremolo,extensible,barrack,multnomah,hakon,chaharmahal,parsing,volumetric,astrophysical,glottal,combinatorics,freestanding,encoder,paralysed,cavalrymen,taboos,heilbronn,orientalis,lockport,marvels,ozawa,dispositions,waders,incurring,saltire,modulate,papilio,phenol,intermedia,rappahannock,plasmid,fortify,phenotypes,transiting,correspondences,leaguer,larnaca,incompatibility,mcenroe,deeming,endeavoured,aboriginals,helmed,salar,arginine,werke,ferrand,expropriated,delimited,couplets,phoenicians,petioles,ouster,anschluss,protectionist,plessis,urchins,orquesta,castleton,juniata,bittorrent,fulani,donji,mykola,rosemont,chandos,scepticism,signer,chalukya,wicketkeeper,coquitlam,programmatic,o'brian,carteret,urology,steelhead,paleocene,konkan,bettered,venkatesh,surfacing,longitudinally,centurions,popularization,yazid,douro,widths,premios,leonards,gristmill,fallujah,arezzo,leftists,ecliptic,glycerol,inaction,disenfranchised,acrimonious,depositing,parashah,cockatoo,marechal,bolzano,chios,cablevision,impartiality,pouches,thickly,equities,bentinck,emotive,boson,ashdown,conquistadors,parsi,conservationists,reductive,newlands,centerline,ornithologists,waveguide,nicene,philological,hemel,setanta,masala,aphids,convening,casco,matrilineal,chalcedon,orthographic,hythe,replete,damming,bolivarian,admixture,embarks,borderlands,conformed,nagarjuna,blenny,chaitanya,suwon,shigeru,tatarstan,lingayen,rejoins,grodno,merovingian,hardwicke,puducherry,prototyping,laxmi,upheavals,headquarter,pollinators,bromine,transom,plantagenet,arbuthnot,chidambaram,woburn,osamu,panelling,coauthored,zhongshu,hyaline,omissions,aspergillus,offensively,electrolytic,woodcut,sodom,intensities,clydebank,piotrkow,supplementing,quipped,focke,harbinger,positivism,parklands,wolfenbuttel,cauca,tryptophan,taunus,curragh,tsonga,remand,obscura,ashikaga,eltham,forelimbs,analogs,trnava,observances,kailash,antithesis,ayumi,abyssinia,dorsally,tralee,pursuers,misadventures,padova,perot,mahadev,tarim,granth,licenced,compania,patuxent,baronial,korda,cochabamba,codices,karna,memorialized,semaphore,playlists,mandibular,halal,sivaji,scherzinger,stralsund,foundries,ribosome,mindfulness,nikolayevich,paraphyletic,newsreader,catalyze,ioannina,thalamus,gbit/s,paymaster,sarab,500th,replenished,gamepro,cracow,formula_46,gascony,reburied,lessing,easement,transposed,meurthe,satires,proviso,balthasar,unbound,cuckoos,durbar,louisbourg,cowes,wholesalers,manet,narita,xiaoping,mohamad,illusory,cathal,reuptake,alkaloid,tahrir,mmorpg,underlies,anglicanism,repton,aharon,exogenous,buchenwald,indigent,odostomia,milled,santorum,toungoo,nevsky,steyr,urbanisation,darkseid,subsonic,canaanite,akiva,eglise,dentition,mediators,cirencester,peloponnesian,malmesbury,durres,oerlikon,tabulated,saens,canaria,ischemic,esterhazy,ringling,centralization,walthamstow,nalanda,lignite,takht,leninism,expiring,circe,phytoplankton,promulgation,integrable,breeches,aalto,menominee,borgo,scythians,skrull,galleon,reinvestment,raglan,reachable,liberec,airframes,electrolysis,geospatial,rubiaceae,interdependence,symmetrically,simulcasts,keenly,mauna,adipose,zaidi,fairport,vestibular,actuators,monochromatic,literatures,congestive,sacramental,atholl,skytrain,tycho,tunings,jamia,catharina,modifier,methuen,tapings,infiltrating,colima,grafting,tauranga,halides,pontificate,phonetics,koper,hafez,grooved,kintetsu,extrajudicial,linkoping,cyberpunk,repetitions,laurentian,parnu,bretton,darko,sverdlovsk,foreshadowed,akhenaten,rehnquist,gosford,coverts,pragmatism,broadleaf,ethiopians,instated,mediates,sodra,opulent,descriptor,enugu,shimla,leesburg,officership,giffard,refectory,lusitania,cybermen,fiume,corus,tydfil,lawrenceville,ocala,leviticus,burghers,ataxia,richthofen,amicably,acoustical,watling,inquired,tiempo,multiracial,parallelism,trenchard,tokyopop,germanium,usisl,philharmonia,shapur,jacobites,latinized,sophocles,remittances,o'farrell,adder,dimitrios,peshwa,dimitar,orlov,outstretched,musume,satish,dimensionless,serialised,baptisms,pagasa,antiviral,1740s,quine,arapaho,bombardments,stratosphere,ophthalmic,injunctions,carbonated,nonviolence,asante,creoles,sybra,boilermakers,abington,bipartite,permissive,cardinality,anheuser,carcinogenic,hohenlohe,surinam,szeged,infanticide,generically,floorball,'white,automakers,cerebellar,homozygous,remoteness,effortlessly,allude,'great,headmasters,minting,manchurian,kinabalu,wemyss,seditious,widgets,marbled,almshouses,bards,subgenres,tetsuya,faulting,kickboxer,gaulish,hoseyn,malton,fluvial,questionnaires,mondale,downplayed,traditionalists,vercelli,sumatran,landfills,gamesradar,exerts,franciszek,unlawfully,huesca,diderot,libertarians,professorial,laane,piecemeal,conidae,taiji,curatorial,perturbations,abstractions,szlachta,watercraft,mullah,zoroastrianism,segmental,khabarovsk,rectors,affordability,scuola,diffused,stena,cyclonic,workpiece,romford,'little,jhansi,stalag,zhongshan,skipton,maracaibo,bernadotte,thanet,groening,waterville,encloses,sahrawi,nuffield,moorings,chantry,annenberg,islay,marchers,tenses,wahid,siegen,furstenberg,basques,resuscitation,seminarians,tympanum,gentiles,vegetarianism,tufted,venkata,fantastical,pterophoridae,machined,superposition,glabrous,kaveri,chicane,executors,phyllonorycter,bidirectional,jasta,undertones,touristic,majapahit,navratilova,unpopularity,barbadian,tinian,webcast,hurdler,rigidly,jarrah,staphylococcus,igniting,irrawaddy,stabilised,airstrike,ragas,wakayama,energetically,ekstraklasa,minibus,largemouth,cultivators,leveraging,waitangi,carnaval,weaves,turntables,heydrich,sextus,excavate,govind,ignaz,pedagogue,uriah,borrowings,gemstones,infractions,mycobacterium,batavian,massing,praetor,subalpine,massoud,passers,geostationary,jalil,trainsets,barbus,impair,budejovice,denbigh,pertain,historicity,fortaleza,nederlandse,lamenting,masterchef,doubs,gemara,conductance,ploiesti,cetaceans,courthouses,bhagavad,mihailovic,occlusion,bremerhaven,bulwark,morava,kaine,drapery,maputo,conquistador,kaduna,famagusta,first-past-the-post,erudite,galton,undated,tangential,filho,dismembered,dashes,criterium,darwen,metabolized,blurring,everard,randwick,mohave,impurity,acuity,ansbach,chievo,surcharge,plantain,algoma,porosity,zirconium,selva,sevenoaks,venizelos,gwynne,golgi,imparting,separatism,courtesan,idiopathic,gravestones,hydroelectricity,babar,orford,purposeful,acutely,shard,ridgewood,viterbo,manohar,expropriation,placenames,brevis,cosine,unranked,richfield,newnham,recoverable,flightless,dispersing,clearfield,abu'l,stranraer,kempe,streamlining,goswami,epidermal,pieta,conciliatory,distilleries,electrophoresis,bonne,tiago,curiosities,candidature,picnicking,perihelion,lintel,povoa,gullies,configure,excision,facies,signers,1730s,insufficiency,semiotics,streatham,deactivation,entomological,skippers,albacete,parodying,escherichia,honorees,singaporeans,counterterrorism,tiruchirappalli,omnivorous,metropole,globalisation,athol,unbounded,codice_5,landforms,classifier,farmhouses,reaffirming,reparation,yomiuri,technologists,mitte,medica,viewable,steampunk,konya,kshatriya,repelling,edgewater,lamiinae,devas,potteries,llandaff,engendered,submits,virulence,uplifted,educationist,metropolitans,frontrunner,dunstable,forecastle,frets,methodius,exmouth,linnean,bouchet,repulsion,computable,equalling,liceo,tephritidae,agave,hydrological,azarenka,fairground,l'homme,enforces,xinhua,cinematographers,cooperstown,sa'id,paiute,christianization,tempos,chippenham,insulator,kotor,stereotyped,dello,cours,hisham,d'souza,eliminations,supercars,passau,rebrand,natures,coote,persephone,rededicated,cleaved,plenum,blistering,indiscriminately,cleese,safed,recursively,compacted,revues,hydration,shillong,echelons,garhwal,pedimented,grower,zwolle,wildflower,annexing,methionine,petah,valens,famitsu,petiole,specialities,nestorian,shahin,tokaido,shearwater,barberini,kinsmen,experimenter,alumnae,cloisters,alumina,pritzker,hardiness,soundgarden,julich,ps300,watercourse,cementing,wordplay,olivet,demesne,chasseurs,amide,zapotec,gaozu,porphyry,absorbers,indium,analogies,devotions,engravers,limestones,catapulted,surry,brickworks,gotra,rodham,landline,paleontologists,shankara,islip,raucous,trollope,arpad,embarkation,morphemes,recites,picardie,nakhchivan,tolerances,formula_47,khorramabad,nichiren,adrianople,kirkuk,assemblages,collider,bikaner,bushfires,roofline,coverings,reredos,bibliotheca,mantras,accentuated,commedia,rashtriya,fluctuation,serhiy,referential,fittipaldi,vesicle,geeta,iraklis,immediacy,chulalongkorn,hunsruck,bingen,dreadnoughts,stonemason,meenakshi,lebesgue,undergrowth,baltistan,paradoxes,parlement,articled,tiflis,dixieland,meriden,tejano,underdogs,barnstable,exemplify,venter,tropes,wielka,kankakee,iskandar,zilina,pharyngeal,spotify,materialised,picts,atlantique,theodoric,prepositions,paramilitaries,pinellas,attlee,actuated,piedmontese,grayling,thucydides,multifaceted,unedited,autonomously,universelle,utricularia,mooted,preto,incubated,underlie,brasenose,nootka,bushland,sensu,benzodiazepine,esteghlal,seagoing,amenhotep,azusa,sappers,culpeper,smokeless,thoroughbreds,dargah,gorda,alumna,mankato,zdroj,deleting,culvert,formula_49,punting,wushu,hindering,immunoglobulin,standardisation,birger,oilfield,quadrangular,ulama,recruiters,netanya,1630s,communaute,istituto,maciej,pathan,meher,vikas,characterizations,playmaker,interagency,intercepts,assembles,horthy,introspection,narada,matra,testes,radnicki,estonians,csiro,instar,mitford,adrenergic,crewmembers,haaretz,wasatch,lisburn,rangefinder,ordre,condensate,reforestation,corregidor,spvgg,modulator,mannerist,faulted,aspires,maktoum,squarepants,aethelred,piezoelectric,mulatto,dacre,progressions,jagiellonian,norge,samaria,sukhoi,effingham,coxless,hermetic,humanists,centrality,litters,stirlingshire,beaconsfield,sundanese,geometrically,caretakers,habitually,bandra,pashtuns,bradenton,arequipa,laminar,brickyard,hitchin,sustains,shipboard,ploughing,trechus,wheelers,bracketed,ilyushin,subotica,d'hondt,reappearance,bridgestone,intermarried,fulfilment,aphasia,birkbeck,transformational,strathmore,hornbill,millstone,lacan,voids,solothurn,gymnasiums,laconia,viaducts,peduncle,teachta,edgware,shinty,supernovae,wilfried,exclaim,parthia,mithun,flashpoint,moksha,cumbia,metternich,avalanches,militancy,motorist,rivadavia,chancellorsville,federals,gendered,bounding,footy,gauri,caliphs,lingam,watchmaker,unrecorded,riverina,unmodified,seafloor,droit,pfalz,chrysostom,gigabit,overlordship,besiege,espn2,oswestry,anachronistic,ballymena,reactivation,duchovny,ghani,abacetus,duller,legio,watercourses,nord-pas-de-calais,leiber,optometry,swarms,installer,sancti,adverbs,iheartmedia,meiningen,zeljko,kakheti,notional,circuses,patrilineal,acrobatics,infrastructural,sheva,oregonian,adjudication,aamir,wloclawek,overfishing,obstructive,subtracting,aurobindo,archeologist,newgate,'cause,secularization,tehsils,abscess,fingal,janacek,elkhorn,trims,kraftwerk,mandating,irregulars,faintly,congregationalist,sveti,kasai,mishaps,kennebec,provincially,durkheim,scotties,aicte,rapperswil,imphal,surrenders,morphs,nineveh,hoxha,cotabato,thuringian,metalworking,retold,shogakukan,anthers,proteasome,tippeligaen,disengagement,mockumentary,palatial,erupts,flume,corrientes,masthead,jaroslaw,rereleased,bharti,labors,distilling,tusks,varzim,refounded,enniskillen,melkite,semifinalists,vadodara,bermudian,capstone,grasse,origination,populus,alesi,arrondissements,semigroup,verein,opossum,messrs.,portadown,bulbul,tirupati,mulhouse,tetrahedron,roethlisberger,nonverbal,connexion,warangal,deprecated,gneiss,octet,vukovar,hesketh,chambre,despatch,claes,kargil,hideo,gravelly,tyndale,aquileia,tuners,defensible,tutte,theotokos,constructivist,ouvrage,dukla,polisario,monasticism,proscribed,commutation,testers,nipissing,codon,mesto,olivine,concomitant,exoskeleton,purports,coromandel,eyalet,dissension,hippocrates,purebred,yaounde,composting,oecophoridae,procopius,o'day,angiogenesis,sheerness,intelligencer,articular,felixstowe,aegon,endocrinology,trabzon,licinius,pagodas,zooplankton,hooghly,satie,drifters,sarthe,mercian,neuilly,tumours,canal+,scheldt,inclinations,counteroffensive,roadrunners,tuzla,shoreditch,surigao,predicates,carnot,algeciras,militaries,generalize,bulkheads,gawler,pollutant,celta,rundgren,microrna,gewog,olimpija,placental,lubelski,roxburgh,discerned,verano,kikuchi,musicale,l'enfant,ferocity,dimorphic,antigonus,erzurum,prebendary,recitative,discworld,cyrenaica,stigmella,totnes,sutta,pachuca,ulsan,downton,landshut,castellan,pleural,siedlce,siecle,catamaran,cottbus,utilises,trophic,freeholders,holyhead,u.s.s,chansons,responder,waziristan,suzuka,birding,shogi,asker,acetone,beautification,cytotoxic,dixit,hunterdon,cobblestone,formula_48,kossuth,devizes,sokoto,interlaced,shuttered,kilowatts,assiniboine,isaak,salto,alderney,sugarloaf,franchising,aggressiveness,toponyms,plaintext,antimatter,henin,equidistant,salivary,bilingualism,mountings,obligate,extirpated,irenaeus,misused,pastoralists,aftab,immigrating,warping,tyrolean,seaforth,teesside,soundwave,oligarchy,stelae,pairwise,iupac,tezuka,posht,orchestrations,landmass,ironstone,gallia,hjalmar,carmelites,strafford,elmhurst,palladio,fragility,teleplay,gruffudd,karoly,yerba,potok,espoo,inductance,macaque,nonprofits,pareto,rock'n'roll,spiritualist,shadowed,skateboarder,utterances,generality,congruence,prostrate,deterred,yellowknife,albarn,maldon,battlements,mohsen,insecticides,khulna,avellino,menstruation,glutathione,springdale,parlophone,confraternity,korps,countrywide,bosphorus,preexisting,damodar,astride,alexandrovich,sprinting,crystallized,botev,leaching,interstates,veers,angevin,undaunted,yevgeni,nishapur,northerners,alkmaar,bethnal,grocers,sepia,tornus,exemplar,trobe,charcot,gyeonggi,larne,tournai,lorain,voided,genji,enactments,maxilla,adiabatic,eifel,nazim,transducer,thelonious,pyrite,deportiva,dialectal,bengt,rosettes,labem,sergeyevich,synoptic,conservator,statuette,biweekly,adhesives,bifurcation,rajapaksa,mammootty,republique,yusef,waseda,marshfield,yekaterinburg,minnelli,fundy,fenian,matchups,dungannon,supremacist,panelled,drenthe,iyengar,fibula,narmada,homeport,oceanside,precept,antibacterial,altarpieces,swath,ospreys,lillooet,legnica,lossless,formula_50,galvatron,iorga,stormont,rsfsr,loggers,kutno,phenomenological,medallists,cuatro,soissons,homeopathy,bituminous,injures,syndicates,typesetting,displacements,dethroned,makassar,lucchese,abergavenny,targu,alborz,akb48,boldface,gastronomy,sacra,amenity,accumulator,myrtaceae,cornices,mourinho,denunciation,oxbow,diddley,aargau,arbitrage,bedchamber,gruffydd,zamindar,klagenfurt,caernarfon,slowdown,stansted,abrasion,tamaki,suetonius,dukakis,individualistic,ventrally,hotham,perestroika,ketones,fertilisation,sobriquet,couplings,renderings,misidentified,rundfunk,sarcastically,braniff,concours,dismissals,elegantly,modifiers,crediting,combos,crucially,seafront,lieut,ischemia,manchus,derivations,proteases,aristophanes,adenauer,porting,hezekiah,sante,trulli,hornblower,foreshadowing,ypsilanti,dharwad,khani,hohenstaufen,distillers,cosmodrome,intracranial,turki,salesian,gorzow,jihlava,yushchenko,leichhardt,venables,cassia,eurogamer,airtel,curative,bestsellers,timeform,sortied,grandview,massillon,ceding,pilbara,chillicothe,heredity,elblag,rogaland,ronne,millennial,batley,overuse,bharata,fille,campbelltown,abeyance,counterclockwise,250cc,neurodegenerative,consigned,electromagnetism,sunnah,saheb,exons,coxswain,gleaned,bassoons,worksop,prismatic,immigrate,pickets,takeo,bobsledder,stosur,fujimori,merchantmen,stiftung,forli,endorses,taskforce,thermally,atman,gurps,floodplains,enthalpy,extrinsic,setubal,kennesaw,grandis,scalability,durations,showrooms,prithvi,outro,overruns,andalucia,amanita,abitur,hipper,mozambican,sustainment,arsene,chesham,palaeolithic,reportage,criminality,knowsley,haploid,atacama,shueisha,ridgefield,astern,getafe,lineal,timorese,restyled,hollies,agincourt,unter,justly,tannins,mataram,industrialised,tarnovo,mumtaz,mustapha,stretton,synthetase,condita,allround,putra,stjepan,troughs,aechmea,specialisation,wearable,kadokawa,uralic,aeros,messiaen,existentialism,jeweller,effigies,gametes,fjordane,cochlear,interdependent,demonstrative,unstructured,emplacement,famines,spindles,amplitudes,actuator,tantalum,psilocybe,apnea,monogatari,expulsions,seleucus,tsuen,hospitaller,kronstadt,eclipsing,olympiakos,clann,canadensis,inverter,helio,egyptologist,squamous,resonate,munir,histology,torbay,khans,jcpenney,veterinarians,aintree,microscopes,colonised,reflectors,phosphorylated,pristimantis,tulare,corvinus,multiplexing,midweek,demosthenes,transjordan,ecija,tengku,vlachs,anamorphic,counterweight,radnor,trinitarian,armidale,maugham,njsiaa,futurism,stairways,avicenna,montebello,bridgetown,wenatchee,lyonnais,amass,surinamese,streptococcus,m*a*s*h,hydrogenation,frazioni,proscenium,kalat,pennsylvanian,huracan,tallying,kralove,nucleolar,phrygian,seaports,hyacinthe,ignace,donning,instalment,regnal,fonds,prawn,carell,folktales,goaltending,bracknell,vmware,patriarchy,mitsui,kragujevac,pythagoras,soult,thapa,disproved,suwalki,secures,somoza,l'ecole,divizia,chroma,herders,technologist,deduces,maasai,rampur,paraphrase,raimi,imaged,magsaysay,ivano,turmeric,formula_51,subcommittees,axillary,ionosphere,organically,indented,refurbishing,pequot,violinists,bearn,colle,contralto,silverton,mechanization,etruscans,wittelsbach,pasir,redshirted,marrakesh,scarp,plein,wafers,qareh,teotihuacan,frobenius,sinensis,rehoboth,bundaberg,newbridge,hydrodynamic,traore,abubakar,adjusts,storytellers,dynamos,verbandsliga,concertmaster,exxonmobil,appreciable,sieradz,marchioness,chaplaincy,rechristened,cunxu,overpopulation,apolitical,sequencer,beaked,nemanja,binaries,intendant,absorber,filamentous,indebtedness,nusra,nashik,reprises,psychedelia,abwehr,ligurian,isoform,resistive,pillaging,mahathir,reformatory,lusatia,allerton,ajaccio,tepals,maturin,njcaa,abyssinian,objector,fissures,sinuous,ecclesiastic,dalits,caching,deckers,phosphates,wurlitzer,navigated,trofeo,berea,purefoods,solway,unlockable,grammys,kostroma,vocalizations,basilan,rebuke,abbasi,douala,helsingborg,ambon,bakar,runestones,cenel,tomislav,pigmented,northgate,excised,seconda,kirke,determinations,dedicates,vilas,pueblos,reversion,unexploded,overprinted,ekiti,deauville,masato,anaesthesia,endoplasmic,transponders,aguascalientes,hindley,celluloid,affording,bayeux,piaget,rickshaws,eishockey,camarines,zamalek,undersides,hardwoods,hermitian,mutinied,monotone,blackmails,affixes,jpmorgan,habermas,mitrovica,paleontological,polystyrene,thana,manas,conformist,turbofan,decomposes,logano,castration,metamorphoses,patroness,herbicide,mikolaj,rapprochement,macroeconomics,barranquilla,matsudaira,lintels,femina,hijab,spotsylvania,morpheme,bitola,baluchistan,kurukshetra,otway,extrusion,waukesha,menswear,helder,trung,bingley,protester,boars,overhang,differentials,exarchate,hejaz,kumara,unjustified,timings,sharpness,nuovo,taisho,sundar,etc..,jehan,unquestionably,muscovy,daltrey,canute,paneled,amedeo,metroplex,elaborates,telus,tetrapods,dragonflies,epithets,saffir,parthenon,lucrezia,refitting,pentateuch,hanshin,montparnasse,lumberjacks,sanhedrin,erectile,odors,greenstone,resurgent,leszek,amory,substituents,prototypical,viewfinder,monck,universiteit,joffre,revives,chatillon,seedling,scherzo,manukau,ashdod,gympie,homolog,stalwarts,ruinous,weibo,tochigi,wallenberg,gayatri,munda,satyagraha,storefronts,heterogeneity,tollway,sportswriters,binocular,gendarmes,ladysmith,tikal,ortsgemeinde,ja'far,osmotic,linlithgow,bramley,telecoms,pugin,repose,rupaul,sieur,meniscus,garmisch,reintroduce,400th,shoten,poniatowski,drome,kazakhstani,changeover,astronautics,husserl,herzl,hypertext,katakana,polybius,antananarivo,seong,breguet,reliquary,utada,aggregating,liangshan,sivan,tonawanda,audiobooks,shankill,coulee,phenolic,brockton,bookmakers,handsets,boaters,wylde,commonality,mappings,silhouettes,pennines,maurya,pratchett,singularities,eschewed,pretensions,vitreous,ibero,totalitarianism,poulenc,lingered,directx,seasoning,deputation,interdict,illyria,feedstock,counterbalance,muzik,buganda,parachuted,violist,homogeneity,comix,fjords,corsairs,punted,verandahs,equilateral,laoghaire,magyars,117th,alesund,televoting,mayotte,eateries,refurbish,nswrl,yukio,caragiale,zetas,dispel,codecs,inoperable,outperformed,rejuvenation,elstree,modernise,contributory,pictou,tewkesbury,chechens,ashina,psionic,refutation,medico,overdubbed,nebulae,sandefjord,personages,eccellenza,businessperson,placename,abenaki,perryville,threshing,reshaped,arecibo,burslem,colspan=3|turnout,rebadged,lumia,erinsborough,interactivity,bitmap,indefatigable,theosophy,excitatory,gleizes,edsel,bermondsey,korce,saarinen,wazir,diyarbakir,cofounder,liberalisation,onsen,nighthawks,siting,retirements,semyon,d'histoire,114th,redditch,venetia,praha,'round,valdosta,hieroglyphic,postmedial,edirne,miscellany,savona,cockpits,minimization,coupler,jacksonian,appeasement,argentines,saurashtra,arkwright,hesiod,folios,fitzalan,publica,rivaled,civitas,beermen,constructivism,ribeira,zeitschrift,solanum,todos,deformities,chilliwack,verdean,meagre,bishoprics,gujrat,yangzhou,reentered,inboard,mythologies,virtus,unsurprisingly,rusticated,museu,symbolise,proportionate,thesaban,symbian,aeneid,mitotic,veliki,compressive,cisterns,abies,winemaker,massenet,bertolt,ahmednagar,triplemania,armorial,administracion,tenures,smokehouse,hashtag,fuerza,regattas,gennady,kanazawa,mahmudabad,crustal,asaph,valentinian,ilaiyaraaja,honeyeater,trapezoidal,cooperatively,unambiguously,mastodon,inhospitable,harnesses,riverton,renewables,djurgardens,haitians,airings,humanoids,boatswain,shijiazhuang,faints,veera,punjabis,steepest,narain,karlovy,serre,sulcus,collectives,1500m,arion,subarctic,liberally,apollonius,ostia,droplet,headstones,norra,robusta,maquis,veronese,imola,primers,luminance,escadrille,mizuki,irreconcilable,stalybridge,temur,paraffin,stuccoed,parthians,counsels,fundamentalists,vivendi,polymath,sugababes,mikko,yonne,fermions,vestfold,pastoralist,kigali,unseeded,glarus,cusps,amasya,northwesterly,minorca,astragalus,verney,trevelyan,antipathy,wollstonecraft,bivalves,boulez,royle,divisao,quranic,bareilly,coronal,deviates,lulea,erectus,petronas,chandan,proxies,aeroflot,postsynaptic,memoriam,moyne,gounod,kuznetsova,pallava,ordinating,reigate,'first,lewisburg,exploitative,danby,academica,bailiwick,brahe,injective,stipulations,aeschylus,computes,gulden,hydroxylase,liveries,somalis,underpinnings,muscovite,kongsberg,domus,overlain,shareware,variegated,jalalabad,agence,ciphertext,insectivores,dengeki,menuhin,cladistic,baerum,betrothal,tokushima,wavelet,expansionist,pottsville,siyuan,prerequisites,carpi,nemzeti,nazar,trialled,eliminator,irrorated,homeward,redwoods,undeterred,strayed,lutyens,multicellular,aurelian,notated,lordships,alsatian,idents,foggia,garros,chalukyas,lillestrom,podlaski,pessimism,hsien,demilitarized,whitewashed,willesden,kirkcaldy,sanctorum,lamia,relaying,escondido,paediatric,contemplates,demarcated,bluestone,betula,penarol,capitalise,kreuznach,kenora,115th,hold'em,reichswehr,vaucluse,m.i.a,windings,boys/girls,cajon,hisar,predictably,flemington,ysgol,mimicked,clivina,grahamstown,ionia,glyndebourne,patrese,aquaria,sleaford,dayal,sportscenter,malappuram,m.b.a.,manoa,carbines,solvable,designator,ramanujan,linearity,academicians,sayid,lancastrian,factorial,strindberg,vashem,delos,comyn,condensing,superdome,merited,kabaddi,intransitive,bideford,neuroimaging,duopoly,scorecards,ziggler,heriot,boyars,virology,marblehead,microtubules,westphalian,anticipates,hingham,searchers,harpist,rapides,morricone,convalescent,mises,nitride,metrorail,matterhorn,bicol,drivetrain,marketer,snippet,winemakers,muban,scavengers,halberstadt,herkimer,peten,laborious,stora,montgomeryshire,booklist,shamir,herault,eurostar,anhydrous,spacewalk,ecclesia,calliostoma,highschool,d'oro,suffusion,imparts,overlords,tagus,rectifier,counterinsurgency,ministered,eilean,milecastle,contre,micromollusk,okhotsk,bartoli,matroid,hasidim,thirunal,terme,tarlac,lashkar,presque,thameslink,flyby,troopship,renouncing,fatih,messrs,vexillum,bagration,magnetite,bornholm,androgynous,vehement,tourette,philosophic,gianfranco,tuileries,codice_6,radially,flexion,hants,reprocessing,setae,burne,palaeographically,infantryman,shorebirds,tamarind,moderna,threading,militaristic,crohn,norrkoping,125cc,stadtholder,troms,klezmer,alphanumeric,brome,emmanuelle,tiwari,alchemical,formula_52,onassis,bleriot,bipedal,colourless,hermeneutics,hosni,precipitating,turnstiles,hallucinogenic,panhellenic,wyandotte,elucidated,chita,ehime,generalised,hydrophilic,biota,niobium,rnzaf,gandhara,longueuil,logics,sheeting,bielsko,cuvier,kagyu,trefoil,docent,pancrase,stalinism,postures,encephalopathy,monckton,imbalances,epochs,leaguers,anzio,diminishes,pataki,nitrite,amuro,nabil,maybach,l'aquila,babbler,bacolod,thutmose,evora,gaudi,breakage,recur,preservative,60deg,mendip,functionaries,columnar,maccabiah,chert,verden,bromsgrove,clijsters,dengue,pastorate,phuoc,principia,viareggio,kharagpur,scharnhorst,anyang,bosons,l'art,criticises,ennio,semarang,brownian,mirabilis,asperger,calibers,typographical,cartooning,minos,disembark,supranational,undescribed,etymologically,alappuzha,vilhelm,lanao,pakenham,bhagavata,rakoczi,clearings,astrologers,manitowoc,bunuel,acetylene,scheduler,defamatory,trabzonspor,leaded,scioto,pentathlete,abrahamic,minigames,aldehydes,peerages,legionary,1640s,masterworks,loudness,bryansk,likeable,genocidal,vegetated,towpath,declination,pyrrhus,divinely,vocations,rosebery,associazione,loaders,biswas,oeste,tilings,xianzong,bhojpuri,annuities,relatedness,idolator,psers,constriction,chuvash,choristers,hanafi,fielders,grammarian,orpheum,asylums,millbrook,gyatso,geldof,stabilise,tableaux,diarist,kalahari,panini,cowdenbeath,melanin,4x100m,resonances,pinar,atherosclerosis,sheringham,castlereagh,aoyama,larks,pantograph,protrude,natak,gustafsson,moribund,cerevisiae,cleanly,polymeric,holkar,cosmonauts,underpinning,lithosphere,firuzabad,languished,mingled,citrate,spadina,lavas,daejeon,fibrillation,porgy,pineville,ps1000,cobbled,emamzadeh,mukhtar,dampers,indelible,salonika,nanoscale,treblinka,eilat,purporting,fluctuate,mesic,hagiography,cutscenes,fondation,barrens,comically,accrue,ibrox,makerere,defections,'there,hollandia,skene,grosseto,reddit,objectors,inoculation,rowdies,playfair,calligrapher,namor,sibenik,abbottabad,propellants,hydraulically,chloroplasts,tablelands,tecnico,schist,klasse,shirvan,bashkortostan,bullfighting,north/south,polski,hanns,woodblock,kilmore,ejecta,ignacy,nanchang,danubian,commendations,snohomish,samaritans,argumentation,vasconcelos,hedgehogs,vajrayana,barents,kulkarni,kumbakonam,identifications,hillingdon,weirs,nayanar,beauvoir,messe,divisors,atlantiques,broods,affluence,tegucigalpa,unsuited,autodesk,akash,princeps,culprits,kingstown,unassuming,goole,visayan,asceticism,blagojevich,irises,paphos,unsound,maurier,pontchartrain,desertification,sinfonietta,latins,especial,limpet,valerenga,glial,brainstem,mitral,parables,sauropod,judean,iskcon,sarcoma,venlo,justifications,zhuhai,blavatsky,alleviated,usafe,steppenwolf,inversions,janko,chagall,secretory,basildon,saguenay,pergamon,hemispherical,harmonized,reloading,franjo,domaine,extravagance,relativism,metamorphosed,labuan,baloncesto,gmail,byproducts,calvinists,counterattacked,vitus,bubonic,120th,strachey,ritually,brookwood,selectable,savinja,incontinence,meltwater,jinja,1720s,brahmi,morgenthau,sheaves,sleeved,stratovolcano,wielki,utilisation,avoca,fluxus,panzergrenadier,philately,deflation,podlaska,prerogatives,kuroda,theophile,zhongzong,gascoyne,magus,takao,arundell,fylde,merdeka,prithviraj,venkateswara,liepaja,daigo,dreamland,reflux,sunnyvale,coalfields,seacrest,soldering,flexor,structuralism,alnwick,outweighed,unaired,mangeshkar,batons,glaad,banshees,irradiated,organelles,biathlete,cabling,chairlift,lollapalooza,newsnight,capacitive,succumbs,flatly,miramichi,burwood,comedienne,charteris,biotic,workspace,aficionados,sokolka,chatelet,o'shaughnessy,prosthesis,neoliberal,refloated,oppland,hatchlings,econometrics,loess,thieu,androids,appalachians,jenin,pterostichinae,downsized,foils,chipsets,stencil,danza,narrate,maginot,yemenite,bisects,crustacean,prescriptive,melodious,alleviation,empowers,hansson,autodromo,obasanjo,osmosis,daugava,rheumatism,moraes,leucine,etymologies,chepstow,delaunay,bramall,bajaj,flavoring,approximates,marsupials,incisive,microcomputer,tactically,waals,wilno,fisichella,ursus,hindmarsh,mazarin,lomza,xenophobia,lawlessness,annecy,wingers,gornja,gnaeus,superieur,tlaxcala,clasps,symbolises,slats,rightist,effector,blighted,permanence,divan,progenitors,kunsthalle,anointing,excelling,coenzyme,indoctrination,dnipro,landholdings,adriaan,liturgies,cartan,ethmia,attributions,sanctus,trichy,chronicon,tancred,affinis,kampuchea,gantry,pontypool,membered,distrusted,fissile,dairies,hyposmocoma,craigie,adarsh,martinsburg,taxiway,30deg,geraint,vellum,bencher,khatami,formula_53,zemun,teruel,endeavored,palmares,pavements,u.s..,internationalization,satirized,carers,attainable,wraparound,muang,parkersburg,extinctions,birkenfeld,wildstorm,payers,cohabitation,unitas,culloden,capitalizing,clwyd,daoist,campinas,emmylou,orchidaceae,halakha,orientales,fealty,domnall,chiefdom,nigerians,ladislav,dniester,avowed,ergonomics,newsmagazine,kitsch,cantilevered,benchmarking,remarriage,alekhine,coldfield,taupo,almirante,substations,apprenticeships,seljuq,levelling,eponym,symbolising,salyut,opioids,underscore,ethnologue,mohegan,marikina,libro,bassano,parse,semantically,disjointed,dugdale,padraig,tulsi,modulating,xfinity,headlands,mstislav,earthworms,bourchier,lgbtq,embellishments,pennants,rowntree,betel,motet,mulla,catenary,washoe,mordaunt,dorking,colmar,girardeau,glentoran,grammatically,samad,recreations,technion,staccato,mikoyan,spoilers,lyndhurst,victimization,chertsey,belafonte,tondo,tonsberg,narrators,subcultures,malformations,edina,augmenting,attests,euphemia,cabriolet,disguising,1650s,navarrese,demoralized,cardiomyopathy,welwyn,wallachian,smoothness,planktonic,voles,issuers,sardasht,survivability,cuauhtemoc,thetis,extruded,signet,raghavan,lombok,eliyahu,crankcase,dissonant,stolberg,trencin,desktops,bursary,collectivization,charlottenburg,triathlete,curvilinear,involuntarily,mired,wausau,invades,sundaram,deletions,bootstrap,abellio,axiomatic,noguchi,setups,malawian,visalia,materialist,kartuzy,wenzong,plotline,yeshivas,parganas,tunica,citric,conspecific,idlib,superlative,reoccupied,blagoevgrad,masterton,immunological,hatta,courbet,vortices,swallowtail,delves,haridwar,diptera,boneh,bahawalpur,angering,mardin,equipments,deployable,guanine,normality,rimmed,artisanal,boxset,chandrasekhar,jools,chenar,tanakh,carcassonne,belatedly,millville,anorthosis,reintegration,velde,surfactant,kanaan,busoni,glyphipterix,personas,fullness,rheims,tisza,stabilizers,bharathi,joost,spinola,mouldings,perching,esztergom,afzal,apostate,lustre,s.league,motorboat,monotheistic,armature,barat,asistencia,bloomsburg,hippocampal,fictionalised,defaults,broch,hexadecimal,lusignan,ryanair,boccaccio,breisgau,southbank,bskyb,adjoined,neurobiology,aforesaid,sadhu,langue,headship,wozniacki,hangings,regulus,prioritized,dynamism,allier,hannity,shimin,antoninus,gymnopilus,caledon,preponderance,melayu,electrodynamics,syncopated,ibises,krosno,mechanistic,morpeth,harbored,albini,monotheism,'real,hyperactivity,haveli,writer/director,minato,nimoy,caerphilly,chitral,amirabad,fanshawe,l'oreal,lorde,mukti,authoritarianism,valuing,spyware,hanbury,restarting,stato,embed,suiza,empiricism,stabilisation,stari,castlemaine,orbis,manufactory,mauritanian,shoji,taoyuan,prokaryotes,oromia,ambiguities,embodying,slims,frente,innovate,ojibwa,powdery,gaeltacht,argentinos,quatermass,detergents,fijians,adaptor,tokai,chileans,bulgars,oxidoreductases,bezirksliga,conceicao,myosin,nellore,500cc,supercomputers,approximating,glyndwr,polypropylene,haugesund,cockerell,tudman,ashbourne,hindemith,bloodlines,rigveda,etruria,romanos,steyn,oradea,deceleration,manhunter,laryngeal,fraudulently,janez,wendover,haplotype,janaki,naoki,belizean,mellencamp,cartographic,sadhana,tricolour,pseudoscience,satara,bytow,s.p.a.,jagdgeschwader,arcot,omagh,sverdrup,masterplan,surtees,apocrypha,ahvaz,d'amato,socratic,leumit,unnumbered,nandini,witold,marsupial,coalesced,interpolated,gimnasia,karadzic,keratin,mamoru,aldeburgh,speculator,escapement,irfan,kashyap,satyajit,haddington,solver,rothko,ashkelon,kickapoo,yeomen,superbly,bloodiest,greenlandic,lithic,autofocus,yardbirds,poona,keble,javan,sufis,expandable,tumblr,ursuline,swimwear,winwood,counsellors,aberrations,marginalised,befriending,workouts,predestination,varietal,siddhartha,dunkeld,judaic,esquimalt,shabab,ajith,telefonica,stargard,hoysala,radhakrishnan,sinusoidal,strada,hiragana,cebuano,monoid,independencia,floodwaters,mildura,mudflats,ottokar,translit,radix,wigner,philosophically,tephritid,synthesizing,castletown,installs,stirner,resettle,bushfire,choirmaster,kabbalistic,shirazi,lightship,rebus,colonizers,centrifuge,leonean,kristofferson,thymus,clackamas,ratnam,rothesay,municipally,centralia,thurrock,gulfport,bilinear,desirability,merite,psoriasis,macaw,erigeron,consignment,mudstone,distorting,karlheinz,ramen,tailwheel,vitor,reinsurance,edifices,superannuation,dormancy,contagion,cobden,rendezvoused,prokaryotic,deliberative,patricians,feigned,degrades,starlings,sopot,viticultural,beaverton,overflowed,convener,garlands,michiel,ternopil,naturelle,biplanes,bagot,gamespy,ventspils,disembodied,flattening,profesional,londoners,arusha,scapular,forestall,pyridine,ulema,eurodance,aruna,callus,periodontal,coetzee,immobilized,o'meara,maharani,katipunan,reactants,zainab,microgravity,saintes,britpop,carrefour,constrain,adversarial,firebirds,brahmo,kashima,simca,surety,surpluses,superconductivity,gipuzkoa,cumans,tocantins,obtainable,humberside,roosting,'king,formula_54,minelayer,bessel,sulayman,cycled,biomarkers,annealing,shusha,barda,cassation,djing,polemics,tuple,directorates,indomitable,obsolescence,wilhelmine,pembina,bojan,tambo,dioecious,pensioner,magnificat,1660s,estrellas,southeasterly,immunodeficiency,railhead,surreptitiously,codeine,encores,religiosity,tempera,camberley,efendi,boardings,malleable,hagia,input/output,lucasfilm,ujjain,polymorphisms,creationist,berners,mickiewicz,irvington,linkedin,endures,kinect,munition,apologetics,fairlie,predicated,reprinting,ethnographer,variances,levantine,mariinsky,jadid,jarrow,asia/oceania,trinamool,waveforms,bisexuality,preselection,pupae,buckethead,hieroglyph,lyricists,marionette,dunbartonshire,restorer,monarchical,pazar,kickoffs,cabildo,savannas,gliese,dench,spoonbills,novelette,diliman,hypersensitivity,authorising,montefiore,mladen,qu'appelle,theistic,maruti,laterite,conestoga,saare,californica,proboscis,carrickfergus,imprecise,hadassah,baghdadi,jolgeh,deshmukh,amusements,heliopolis,berle,adaptability,partenkirchen,separations,baikonur,cardamom,southeastward,southfield,muzaffar,adequacy,metropolitana,rajkot,kiyoshi,metrobus,evictions,reconciles,librarianship,upsurge,knightley,badakhshan,proliferated,spirituals,burghley,electroacoustic,professing,featurette,reformists,skylab,descriptors,oddity,greyfriars,injects,salmond,lanzhou,dauntless,subgenera,underpowered,transpose,mahinda,gatos,aerobatics,seaworld,blocs,waratahs,joris,giggs,perfusion,koszalin,mieczyslaw,ayyubid,ecologists,modernists,sant'angelo,quicktime,him/her,staves,sanyo,melaka,acrocercops,qigong,iterated,generalizes,recuperation,vihara,circassians,psychical,chavo,memoires,infiltrates,notaries,pelecaniformesfamily,strident,chivalric,pierrepont,alleviating,broadsides,centipede,b.tech,reinterpreted,sudetenland,hussite,covenanters,radhika,ironclads,gainsbourg,testis,penarth,plantar,azadegan,beano,espn.com,leominster,autobiographies,nbcuniversal,eliade,khamenei,montferrat,undistinguished,ethnological,wenlock,fricatives,polymorphic,biome,joule,sheaths,astrophysicist,salve,neoclassicism,lovat,downwind,belisarius,forma,usurpation,freie,depopulation,backbench,ascenso,'high,aagpbl,gdanski,zalman,mouvement,encapsulation,bolshevism,statny,voyageurs,hywel,vizcaya,mazra'eh,narthex,azerbaijanis,cerebrospinal,mauretania,fantail,clearinghouse,bolingbroke,pequeno,ansett,remixing,microtubule,wrens,jawahar,palembang,gambian,hillsong,fingerboard,repurposed,sundry,incipient,veolia,theologically,ulaanbaatar,atsushi,foundling,resistivity,myeloma,factbook,mazowiecka,diacritic,urumqi,clontarf,provokes,intelsat,professes,materialise,portobello,benedictines,panionios,introverted,reacquired,bridport,mammary,kripke,oratorios,vlore,stoning,woredas,unreported,antti,togolese,fanzines,heuristics,conservatories,carburetors,clitheroe,cofounded,formula_57,erupting,quinnipiac,bootle,ghostface,sittings,aspinall,sealift,transferase,boldklub,siskiyou,predominated,francophonie,ferruginous,castrum,neogene,sakya,madama,precipitous,'love,posix,bithynia,uttara,avestan,thrushes,seiji,memorably,septimius,libri,cibernetico,hyperinflation,dissuaded,cuddalore,peculiarity,vaslui,grojec,albumin,thurles,casks,fasteners,fluidity,buble,casals,terek,gnosticism,cognates,ulnar,radwanska,babylonians,majuro,oxidizer,excavators,rhythmically,liffey,gorakhpur,eurydice,underscored,arborea,lumumba,tuber,catholique,grama,galilei,scrope,centreville,jacobin,bequests,ardeche,polygamous,montauban,terai,weatherboard,readability,attainder,acraea,transversely,rivets,winterbottom,reassures,bacteriology,vriesea,chera,andesite,dedications,homogenous,reconquered,bandon,forrestal,ukiyo,gurdjieff,tethys,sparc,muscogee,grebes,belchatow,mansa,blantyre,palliser,sokolow,fibroblasts,exmoor,misaki,soundscapes,housatonic,middelburg,convenor,leyla,antipope,histidine,okeechobee,alkenes,sombre,alkene,rubik,macaques,calabar,trophee,pinchot,'free,frusciante,chemins,falaise,vasteras,gripped,schwarzenberg,cumann,kanchipuram,acoustically,silverbacks,fangio,inset,plympton,kuril,vaccinations,recep,theropods,axils,stavropol,encroached,apoptotic,papandreou,wailers,moonstone,assizes,micrometers,hornchurch,truncation,annapurna,egyptologists,rheumatic,promiscuity,satiric,fleche,caloptilia,anisotropy,quaternions,gruppo,viscounts,awardees,aftershocks,sigint,concordance,oblasts,gaumont,stent,commissars,kesteven,hydroxy,vijayanagar,belorussian,fabricius,watermark,tearfully,mamet,leukaemia,sorkh,milepost,tattooing,vosta,abbasids,uncompleted,hedong,woodwinds,extinguishing,malus,multiplexes,francoist,pathet,responsa,bassists,'most,postsecondary,ossory,grampian,saakashvili,alito,strasberg,impressionistic,volador,gelatinous,vignette,underwing,campanian,abbasabad,albertville,hopefuls,nieuwe,taxiways,reconvened,recumbent,pathologists,unionized,faversham,asymptotically,romulo,culling,donja,constricted,annesley,duomo,enschede,lovech,sharpshooter,lansky,dhamma,papillae,alanine,mowat,delius,wrest,mcluhan,podkarpackie,imitators,bilaspur,stunting,pommel,casemate,handicaps,nagas,testaments,hemings,necessitate,rearward,locative,cilla,klitschko,lindau,merion,consequential,antic,soong,copula,berthing,chevrons,rostral,sympathizer,budokan,ranulf,beria,stilt,replying,conflated,alcibiades,painstaking,yamanashi,calif.,arvid,ctesiphon,xizong,rajas,caxton,downbeat,resurfacing,rudders,miscegenation,deathmatch,foregoing,arthropod,attestation,karts,reapportionment,harnessing,eastlake,schola,dosing,postcolonial,imtiaz,formula_55,insulators,gunung,accumulations,pampas,llewelyn,bahnhof,cytosol,grosjean,teaneck,briarcliff,arsenio,canara,elaborating,passchendaele,searchlights,holywell,mohandas,preventable,gehry,mestizos,ustinov,cliched,'national,heidfeld,tertullian,jihadist,tourer,miletus,semicircle,outclassed,bouillon,cardinalate,clarifies,dakshina,bilayer,pandyan,unrwa,chandragupta,formula_56,portola,sukumaran,lactation,islamia,heikki,couplers,misappropriation,catshark,montt,ploughs,carib,stator,leaderboard,kenrick,dendrites,scape,tillamook,molesworth,mussorgsky,melanesia,restated,troon,glycoside,truckee,headwater,mashup,sectoral,gangwon,docudrama,skirting,psychopathology,dramatised,ostroleka,infestations,thabo,depolarization,wideroe,eisenbahn,thomond,kumaon,upendra,foreland,acronyms,yaqui,retaking,raphaelite,specie,dupage,villars,lucasarts,chloroplast,werribee,balsa,ascribe,havant,flava,khawaja,tyumen,subtract,interrogators,reshaping,buzzcocks,eesti,campanile,potemkin,apertures,snowboarder,registrars,handbooks,boyar,contaminant,depositors,proximate,jeunesse,zagora,pronouncements,mists,nihilism,deified,margraviate,pietersen,moderators,amalfi,adjectival,copepods,magnetosphere,pallets,clemenceau,castra,perforation,granitic,troilus,grzegorz,luthier,dockyards,antofagasta,ffestiniog,subroutine,afterword,waterwheel,druce,nitin,undifferentiated,emacs,readmitted,barneveld,tapers,hittites,infomercials,infirm,braathens,heligoland,carpark,geomagnetic,musculoskeletal,nigerien,machinima,harmonize,repealing,indecency,muskoka,verite,steubenville,suffixed,cytoskeleton,surpasses,harmonia,imereti,ventricles,heterozygous,envisions,otsego,ecoles,warrnambool,burgenland,seria,rawat,capistrano,welby,kirin,enrollments,caricom,dragonlance,schaffhausen,expanses,photojournalism,brienne,etude,referent,jamtland,schemas,xianbei,cleburne,bicester,maritima,shorelines,diagonals,bjelke,nonpublic,aliasing,m.f.a,ovals,maitreya,skirmishing,grothendieck,sukhothai,angiotensin,bridlington,durgapur,contras,gakuen,skagit,rabbinate,tsunamis,haphazard,tyldesley,microcontroller,discourages,hialeah,compressing,septimus,larvik,condoleezza,psilocybin,protectionism,songbirds,clandestinely,selectmen,wargame,cinemascope,khazars,agronomy,melzer,latifah,cherokees,recesses,assemblymen,basescu,banaras,bioavailability,subchannels,adenine,o'kelly,prabhakar,leonese,dimethyl,testimonials,geoffroy,oxidant,universiti,gheorghiu,bohdan,reversals,zamorin,herbivore,jarre,sebastiao,infanterie,dolmen,teddington,radomsko,spaceships,cuzco,recapitulation,mahoning,bainimarama,myelin,aykroyd,decals,tokelau,nalgonda,rajasthani,121st,quelled,tambov,illyrians,homilies,illuminations,hypertrophy,grodzisk,inundation,incapacity,equilibria,combats,elihu,steinitz,berengar,gowda,canwest,khosrau,maculata,houten,kandinsky,onside,leatherhead,heritable,belvidere,federative,chukchi,serling,eruptive,patan,entitlements,suffragette,evolutions,migrates,demobilisation,athleticism,trope,sarpsborg,kensal,translink,squamish,concertgebouw,energon,timestamp,competences,zalgiris,serviceman,codice_7,spoofing,assange,mahadevan,skien,suceava,augustan,revisionism,unconvincing,hollande,drina,gottlob,lippi,broglie,darkening,tilapia,eagerness,nacht,kolmogorov,photometric,leeuwarden,jrotc,haemorrhage,almanack,cavalli,repudiation,galactose,zwickau,cetinje,houbraken,heavyweights,gabonese,ordinals,noticias,museveni,steric,charaxes,amjad,resection,joinville,leczyca,anastasius,purbeck,subtribe,dalles,leadoff,monoamine,jettisoned,kaori,anthologized,alfreton,indic,bayezid,tottori,colonizing,assassinating,unchanging,eusebian,d'estaing,tsingtao,toshio,transferases,peronist,metrology,equus,mirpur,libertarianism,kovil,indole,'green,abstention,quantitatively,icebreakers,tribals,mainstays,dryandra,eyewear,nilgiri,chrysanthemum,inositol,frenetic,merchantman,hesar,physiotherapist,transceiver,dancefloor,rankine,neisse,marginalization,lengthen,unaided,rework,pageantry,savio,striated,funen,witton,illuminates,frass,hydrolases,akali,bistrita,copywriter,firings,handballer,tachinidae,dmytro,coalesce,neretva,menem,moraines,coatbridge,crossrail,spoofed,drosera,ripen,protour,kikuyu,boleslav,edwardes,troubadours,haplogroups,wrasse,educationalist,sroda,khaneh,dagbladet,apennines,neuroscientist,deplored,terje,maccabees,daventry,spaceport,lessening,ducats,singer/guitarist,chambersburg,yeong,configurable,ceremonially,unrelenting,caffe,graaf,denizens,kingsport,ingush,panhard,synthesised,tumulus,homeschooled,bozorg,idiomatic,thanhouser,queensway,radek,hippolytus,inking,banovina,peacocks,piaui,handsworth,pantomimes,abalone,thera,kurzweil,bandura,augustinians,bocelli,ferrol,jiroft,quadrature,contravention,saussure,rectification,agrippina,angelis,matanzas,nidaros,palestrina,latium,coriolis,clostridium,ordain,uttering,lanchester,proteolytic,ayacucho,merseburg,holbein,sambalpur,algebraically,inchon,ostfold,savoia,calatrava,lahiri,judgeship,ammonite,masaryk,meyerbeer,hemorrhagic,superspeedway,ningxia,panicles,encircles,khmelnytsky,profusion,esher,babol,inflationary,anhydride,gaspe,mossy,periodicity,nacion,meteorologists,mahjong,interventional,sarin,moult,enderby,modell,palgrave,warners,montcalm,siddha,functionalism,rilke,politicized,broadmoor,kunste,orden,brasileira,araneta,eroticism,colquhoun,mamba,blacktown,tubercle,seagrass,manoel,camphor,neoregelia,llandudno,annexe,enplanements,kamien,plovers,statisticians,iturbide,madrasah,nontrivial,publican,landholders,manama,uninhabitable,revivalist,trunkline,friendliness,gurudwara,rocketry,unido,tripos,besant,braque,evolutionarily,abkhazian,staffel,ratzinger,brockville,bohemond,intercut,djurgarden,utilitarianism,deploys,sastri,absolutism,subhas,asghar,fictions,sepinwall,proportionately,titleholders,thereon,foursquare,machinegun,knightsbridge,siauliai,aqaba,gearboxes,castaways,weakens,phallic,strzelce,buoyed,ruthenia,pharynx,intractable,neptunes,koine,leakey,netherlandish,preempted,vinay,terracing,instigating,alluvium,prosthetics,vorarlberg,politiques,joinery,reduplication,nebuchadnezzar,lenticular,banka,seaborne,pattinson,helpline,aleph,beckenham,californians,namgyal,franziska,aphid,branagh,transcribe,appropriateness,surakarta,takings,propagates,juraj,b0d3fb,brera,arrayed,tailback,falsehood,hazleton,prosody,egyptology,pinnate,tableware,ratan,camperdown,ethnologist,tabari,classifiers,biogas,126th,kabila,arbitron,apuestas,membranous,kincardine,oceana,glories,natick,populism,synonymy,ghalib,mobiles,motherboards,stationers,germinal,patronised,formula_58,gaborone,torts,jeezy,interleague,novaya,batticaloa,offshoots,wilbraham,filename,nswrfl,'well,trilobite,pythons,optimally,scientologists,rhesus,pilsen,backdrops,batang,unionville,hermanos,shrikes,fareham,outlawing,discontinuing,boisterous,shamokin,scanty,southwestward,exchangers,unexpired,mewar,h.m.s,saldanha,pawan,condorcet,turbidity,donau,indulgences,coincident,cliques,weeklies,bardhaman,violators,kenai,caspase,xperia,kunal,fistula,epistemic,cammell,nephi,disestablishment,rotator,germaniawerft,pyaar,chequered,jigme,perlis,anisotropic,popstars,kapil,appendices,berat,defecting,shacks,wrangel,panchayath,gorna,suckling,aerosols,sponheim,talal,borehole,encodings,enlai,subduing,agong,nadar,kitsap,syrmia,majumdar,pichilemu,charleville,embryology,booting,literati,abutting,basalts,jussi,repubblica,hertogenbosch,digitization,relents,hillfort,wiesenthal,kirche,bhagwan,bactrian,oases,phyla,neutralizing,helsing,ebooks,spearheading,margarine,'golden,phosphor,picea,stimulants,outliers,timescale,gynaecology,integrator,skyrocketed,bridgnorth,senecio,ramachandra,suffragist,arrowheads,aswan,inadvertent,microelectronics,118th,sofer,kubica,melanesian,tuanku,balkh,vyborg,crystallographic,initiators,metamorphism,ginzburg,looters,unimproved,finistere,newburyport,norges,immunities,franchisees,asterism,kortrijk,camorra,komsomol,fleurs,draughts,patagonian,voracious,artin,collaborationist,revolucion,revitalizing,xaver,purifying,antipsychotic,disjunct,pompeius,dreamwave,juvenal,beinn,adiyaman,antitank,allama,boletus,melanogaster,dumitru,caproni,aligns,athabaskan,stobart,phallus,veikkausliiga,hornsey,buffering,bourbons,dobruja,marga,borax,electrics,gangnam,motorcyclist,whidbey,draconian,lodger,galilean,sanctification,imitates,boldness,underboss,wheatland,cantabrian,terceira,maumee,redefining,uppercase,ostroda,characterise,universalism,equalized,syndicalism,haringey,masovia,deleuze,funkadelic,conceals,thuan,minsky,pluralistic,ludendorff,beekeeping,bonfires,endoscopic,abuts,prebend,jonkoping,amami,tribunes,yup'ik,awadh,gasification,pforzheim,reforma,antiwar,vaishnavism,maryville,inextricably,margrethe,empresa,neutrophils,sanctified,ponca,elachistidae,curiae,quartier,mannar,hyperplasia,wimax,busing,neologism,florins,underrepresented,digitised,nieuw,cooch,howards,frege,hughie,plied,swale,kapellmeister,vajpayee,quadrupled,aeronautique,dushanbe,custos,saltillo,kisan,tigray,manaus,epigrams,shamanic,peppered,frosts,promotion/relegation,concedes,zwingli,charentes,whangarei,hyung,spring/summer,sobre,eretz,initialization,sawai,ephemera,grandfathered,arnaldo,customised,permeated,parapets,growths,visegrad,estudios,altamont,provincia,apologises,stoppard,carburettor,rifts,kinematic,zhengzhou,eschatology,prakrit,folate,yvelines,scapula,stupas,rishon,reconfiguration,flutist,1680s,apostolate,proudhon,lakshman,articulating,stortford,faithfull,bitterns,upwelling,qur'anic,lidar,interferometry,waterlogged,koirala,ditton,wavefunction,fazal,babbage,antioxidants,lemberg,deadlocked,tolled,ramapo,mathematica,leiria,topologies,khali,photonic,balti,1080p,corrects,recommenced,polyglot,friezes,tiebreak,copacabana,cholmondeley,armband,abolishment,sheamus,buttes,glycolysis,cataloged,warrenton,sassari,kishan,foodservice,cryptanalysis,holmenkollen,cosplay,machi,yousuf,mangal,allying,fertiliser,otomi,charlevoix,metallurg,parisians,bottlenose,oakleigh,debug,cidade,accede,ligation,madhava,pillboxes,gatefold,aveyron,sorin,thirsk,immemorial,menelik,mehra,domingos,underpinned,fleshed,harshness,diphthong,crestwood,miskolc,dupri,pyrausta,muskingum,tuoba,prodi,incidences,waynesboro,marquesas,heydar,artesian,calinescu,nucleation,funders,covalently,compaction,derbies,seaters,sodor,tabular,amadou,peckinpah,o'halloran,zechariah,libyans,kartik,daihatsu,chandran,erzhu,heresies,superheated,yarder,dorde,tanjore,abusers,xuanwu,juniperus,moesia,trusteeship,birdwatching,beatz,moorcock,harbhajan,sanga,choreographic,photonics,boylston,amalgamate,prawns,electrifying,sarath,inaccurately,exclaims,powerpoint,chaining,cpusa,adulterous,saccharomyces,glogow,vfl/afl,syncretic,simla,persisting,functors,allosteric,euphorbiaceae,juryo,mlada,moana,gabala,thornycroft,kumanovo,ostrovsky,sitio,tutankhamun,sauropods,kardzhali,reinterpretation,sulpice,rosyth,originators,halesowen,delineation,asesoria,abatement,gardai,elytra,taillights,overlays,monsoons,sandpipers,ingmar,henrico,inaccuracy,irwell,arenabowl,elche,pressburg,signalman,interviewees,sinkhole,pendle,ecommerce,cellos,nebria,organometallic,surrealistic,propagandist,interlaken,canandaigua,aerials,coutinho,pascagoula,tonopah,letterkenny,gropius,carbons,hammocks,childe,polities,hosiery,donitz,suppresses,diaghilev,stroudsburg,bagram,pistoia,regenerating,unitarians,takeaway,offstage,vidin,glorification,bakunin,yavapai,lutzow,sabercats,witney,abrogated,gorlitz,validating,dodecahedron,stubbornly,telenor,glaxosmithkline,solapur,undesired,jellicoe,dramatization,four-and-a-half,seawall,waterpark,artaxerxes,vocalization,typographic,byung,sachsenhausen,shepparton,kissimmee,konnan,belsen,dhawan,khurd,mutagenesis,vejle,perrot,estradiol,formula_60,saros,chiloe,misiones,lamprey,terrains,speke,miasto,eigenvectors,haydock,reservist,corticosteroids,savitri,shinawatra,developmentally,yehudi,berates,janissaries,recapturing,rancheria,subplots,gresley,nikkatsu,oryol,cosmas,boavista,formula_59,playfully,subsections,commentated,kathakali,dorid,vilaine,seepage,hylidae,keiji,kazakhs,triphosphate,1620s,supersede,monarchists,falla,miyako,notching,bhumibol,polarizing,secularized,shingled,bronislaw,lockerbie,soleyman,bundesbahn,latakia,redoubts,boult,inwardly,invents,ondrej,minangkabau,newquay,permanente,alhaji,madhav,malini,ellice,bookmaker,mankiewicz,etihad,o'dea,interrogative,mikawa,wallsend,canisius,bluesy,vitruvius,noord,ratifying,mixtec,gujranwala,subprefecture,keelung,goiania,nyssa,shi'ite,semitone,ch'uan,computerised,pertuan,catapults,nepomuk,shruti,millstones,buskerud,acolytes,tredegar,sarum,armia,dell'arte,devises,custodians,upturned,gallaudet,disembarking,thrashed,sagrada,myeon,undeclared,qumran,gaiden,tepco,janesville,showground,condense,chalon,unstaffed,pasay,undemocratic,hauts,viridis,uninjured,escutcheon,gymkhana,petaling,hammam,dislocations,tallaght,rerum,shias,indios,guaranty,simplicial,benares,benediction,tajiri,prolifically,huawei,onerous,grantee,ferencvaros,otranto,carbonates,conceit,digipak,qadri,masterclasses,swamiji,cradock,plunket,helmsman,119th,salutes,tippecanoe,murshidabad,intelligibility,mittal,diversifying,bidar,asansol,crowdsourcing,rovere,karakoram,grindcore,skylights,tulagi,furrows,ligne,stuka,sumer,subgraph,amata,regionalist,bulkeley,teletext,glorify,readied,lexicographer,sabadell,predictability,quilmes,phenylalanine,bandaranaike,pyrmont,marksmen,quisling,viscountess,sociopolitical,afoul,pediments,swazi,martyrology,nullify,panagiotis,superconductors,veldenz,jujuy,l'isle,hematopoietic,shafi,subsea,hattiesburg,jyvaskyla,kebir,myeloid,landmine,derecho,amerindians,birkenau,scriabin,milhaud,mucosal,nikaya,freikorps,theoretician,proconsul,o'hanlon,clerked,bactria,houma,macular,topologically,shrubby,aryeh,ghazali,afferent,magalhaes,moduli,ashtabula,vidarbha,securitate,ludwigsburg,adoor,varun,shuja,khatun,chengde,bushels,lascelles,professionnelle,elfman,rangpur,unpowered,citytv,chojnice,quaternion,stokowski,aschaffenburg,commutes,subramaniam,methylene,satrap,gharb,namesakes,rathore,helier,gestational,heraklion,colliers,giannis,pastureland,evocation,krefeld,mahadeva,churchmen,egret,yilmaz,galeazzo,pudukkottai,artigas,generalitat,mudslides,frescoed,enfeoffed,aphorisms,melilla,montaigne,gauliga,parkdale,mauboy,linings,prema,sapir,xylophone,kushan,rockne,sequoyah,vasyl,rectilinear,vidyasagar,microcosm,san'a,carcinogen,thicknesses,aleut,farcical,moderating,detested,hegemonic,instalments,vauban,verwaltungsgemeinschaft,picayune,razorback,magellanic,moluccas,pankhurst,exportation,waldegrave,sufferer,bayswater,1up.com,rearmament,orangutans,varazdin,b.o.b,elucidate,harlingen,erudition,brankovic,lapis,slipway,urraca,shinde,unwell,elwes,euboea,colwyn,srivijaya,grandstands,hortons,generalleutnant,fluxes,peterhead,gandhian,reals,alauddin,maximized,fairhaven,endow,ciechanow,perforations,darters,panellist,manmade,litigants,exhibitor,tirol,caracalla,conformance,hotelier,stabaek,hearths,borac,frisians,ident,veliko,emulators,schoharie,uzbeks,samarra,prestwick,wadia,universita,tanah,bucculatrix,predominates,genotypes,denounces,roadsides,ganassi,keokuk,philatelist,tomic,ingots,conduits,samplers,abdus,johar,allegories,timaru,wolfpacks,secunda,smeaton,sportivo,inverting,contraindications,whisperer,moradabad,calamities,bakufu,soundscape,smallholders,nadeem,crossroad,xenophobic,zakir,nationalliga,glazes,retroflex,schwyz,moroder,rubra,quraysh,theodoros,endemol,infidels,km/hr,repositioned,portraitist,lluis,answerable,arges,mindedness,coarser,eyewall,teleported,scolds,uppland,vibraphone,ricoh,isenburg,bricklayer,cuttlefish,abstentions,communicable,cephalopod,stockyards,balto,kinston,armbar,bandini,elphaba,maxims,bedouins,sachsen,friedkin,tractate,pamir,ivanovo,mohini,kovalainen,nambiar,melvyn,orthonormal,matsuyama,cuernavaca,veloso,overstated,streamer,dravid,informers,analyte,sympathized,streetscape,gosta,thomasville,grigore,futuna,depleting,whelks,kiedis,armadale,earner,wynyard,dothan,animating,tridentine,sabri,immovable,rivoli,ariege,parley,clinker,circulates,junagadh,fraunhofer,congregants,180th,buducnost,formula_62,olmert,dedekind,karnak,bayernliga,mazes,sandpiper,ecclestone,yuvan,smallmouth,decolonization,lemmy,adjudicated,retiro,legia,benue,posit,acidification,wahab,taconic,floatplane,perchlorate,atria,wisbech,divestment,dallara,phrygia,palustris,cybersecurity,rebates,facie,mineralogical,substituent,proteges,fowey,mayenne,smoothbore,cherwell,schwarzschild,junin,murrumbidgee,smalltalk,d'orsay,emirati,calaveras,titusville,theremin,vikramaditya,wampanoag,burra,plaines,onegin,emboldened,whampoa,langa,soderbergh,arnaz,sowerby,arendal,godunov,pathanamthitta,damselfly,bestowing,eurosport,iconoclasm,outfitters,acquiesced,badawi,hypotension,ebbsfleet,annulus,sohrab,thenceforth,chagatai,necessitates,aulus,oddities,toynbee,uniontown,innervation,populaire,indivisible,rossellini,minuet,cyrene,gyeongju,chania,cichlids,harrods,1690s,plunges,abdullahi,gurkhas,homebuilt,sortable,bangui,rediff,incrementally,demetrios,medaille,sportif,svend,guttenberg,tubules,carthusian,pleiades,torii,hoppus,phenyl,hanno,conyngham,teschen,cronenberg,wordless,melatonin,distinctiveness,autos,freising,xuanzang,dunwich,satanism,sweyn,predrag,contractually,pavlovic,malaysians,micrometres,expertly,pannonian,abstaining,capensis,southwesterly,catchphrases,commercialize,frankivsk,normanton,hibernate,verso,deportees,dubliners,codice_8,condors,zagros,glosses,leadville,conscript,morrisons,usury,ossian,oulton,vaccinium,civet,ayman,codrington,hadron,nanometers,geochemistry,extractor,grigori,tyrrhenian,neocollyris,drooping,falsification,werft,courtauld,brigantine,orhan,chapultepec,supercopa,federalized,praga,havering,encampments,infallibility,sardis,pawar,undirected,reconstructionist,ardrossan,varuna,pastimes,archdiocesan,fledging,shenhua,molise,secondarily,stagnated,replicates,ciencias,duryodhana,marauding,ruislip,ilyich,intermixed,ravenswood,shimazu,mycorrhizal,icosahedral,consents,dunblane,follicular,pekin,suffield,muromachi,kinsale,gauche,businesspeople,thereto,watauga,exaltation,chelmno,gorse,proliferate,drainages,burdwan,kangra,transducers,inductor,duvalier,maguindanao,moslem,uncaf,givenchy,plantarum,liturgics,telegraphs,lukashenko,chenango,andante,novae,ironwood,faubourg,torme,chinensis,ambala,pietermaritzburg,virginians,landform,bottlenecks,o'driscoll,darbhanga,baptistery,ameer,needlework,naperville,auditoriums,mullingar,starrer,animatronic,topsoil,madura,cannock,vernet,santurce,catocala,ozeki,pontevedra,multichannel,sundsvall,strategists,medio,135th,halil,afridi,trelawny,caloric,ghraib,allendale,hameed,ludwigshafen,spurned,pavlo,palmar,strafed,catamarca,aveiro,harmonization,surah,predictors,solvay,mande,omnipresent,parenthesis,echolocation,equaling,experimenters,acyclic,lithographic,sepoys,katarzyna,sridevi,impoundment,khosrow,caesarean,nacogdoches,rockdale,lawmaker,caucasians,bahman,miyan,rubric,exuberance,bombastic,ductile,snowdonia,inlays,pinyon,anemones,hurries,hospitallers,tayyip,pulleys,treme,photovoltaics,testbed,polonium,ryszard,osgoode,profiting,ironwork,unsurpassed,nepticulidae,makai,lumbini,preclassic,clarksburg,egremont,videography,rehabilitating,ponty,sardonic,geotechnical,khurasan,solzhenitsyn,henna,phoenicia,rhyolite,chateaux,retorted,tomar,deflections,repressions,harborough,renan,brumbies,vandross,storia,vodou,clerkenwell,decking,universo,salon.com,imprisoning,sudwest,ghaziabad,subscribing,pisgah,sukhumi,econometric,clearest,pindar,yildirim,iulia,atlases,cements,remaster,dugouts,collapsible,resurrecting,batik,unreliability,thiers,conjunctions,colophon,marcher,placeholder,flagella,wolds,kibaki,viviparous,twelver,screenshots,aroostook,khadr,iconographic,itasca,jaume,basti,propounded,varro,be'er,jeevan,exacted,shrublands,creditable,brocade,boras,bittern,oneonta,attentional,herzliya,comprehensible,lakeville,discards,caxias,frankland,camerata,satoru,matlab,commutator,interprovincial,yorkville,benefices,nizami,edwardsville,amigaos,cannabinoid,indianola,amateurliga,pernicious,ubiquity,anarchic,novelties,precondition,zardari,symington,sargodha,headphone,thermopylae,mashonaland,zindagi,thalberg,loewe,surfactants,dobro,crocodilians,samhita,diatoms,haileybury,berwickshire,supercritical,sofie,snorna,slatina,intramolecular,agung,osteoarthritis,obstetric,teochew,vakhtang,connemara,deformations,diadem,ferruccio,mainichi,qualitatively,refrigerant,rerecorded,methylated,karmapa,krasinski,restatement,rouvas,cubitt,seacoast,schwarzkopf,homonymous,shipowner,thiamine,approachable,xiahou,160th,ecumenism,polistes,internazionali,fouad,berar,biogeography,texting,inadequately,'when,4kids,hymenoptera,emplaced,cognomen,bellefonte,supplant,michaelmas,uriel,tafsir,morazan,schweinfurt,chorister,ps400,nscaa,petipa,resolutely,ouagadougou,mascarene,supercell,konstanz,bagrat,harmonix,bergson,shrimps,resonators,veneta,camas,mynydd,rumford,generalmajor,khayyam,web.com,pappus,halfdan,tanana,suomen,yutaka,bibliographical,traian,silat,noailles,contrapuntal,agaricus,'special,minibuses,1670s,obadiah,deepa,rorschach,malolos,lymington,valuations,imperials,caballeros,ambroise,judicature,elegiac,sedaka,shewa,checksum,gosforth,legionaries,corneille,microregion,friedrichshafen,antonis,surnamed,mycelium,cantus,educations,topmost,outfitting,ivica,nankai,gouda,anthemic,iosif,supercontinent,antifungal,belarusians,mudaliar,mohawks,caversham,glaciated,basemen,stevan,clonmel,loughton,deventer,positivist,manipuri,tensors,panipat,changeup,impermeable,dubbo,elfsborg,maritimo,regimens,bikram,bromeliad,substratum,norodom,gaultier,queanbeyan,pompeo,redacted,eurocopter,mothballed,centaurs,borno,copra,bemidji,'home,sopron,neuquen,passo,cineplex,alexandrov,wysokie,mammoths,yossi,sarcophagi,congreve,petkovic,extraneous,waterbirds,slurs,indias,phaeton,discontented,prefaced,abhay,prescot,interoperable,nordisk,bicyclists,validly,sejong,litovsk,zanesville,kapitanleutnant,kerch,changeable,mcclatchy,celebi,attesting,maccoll,sepahan,wayans,veined,gaudens,markt,dansk,soane,quantized,petersham,forebears,nayarit,frenzied,queuing,bygone,viggo,ludwik,tanka,hanssen,brythonic,cornhill,primorsky,stockpiles,conceptualization,lampeter,hinsdale,mesoderm,bielsk,rosenheim,ultron,joffrey,stanwyck,khagan,tiraspol,pavelic,ascendant,empoli,metatarsal,descentralizado,masada,ligier,huseyin,ramadi,waratah,tampines,ruthenium,statoil,mladost,liger,grecian,multiparty,digraph,maglev,reconsideration,radiography,cartilaginous,taizu,wintered,anabaptist,peterhouse,shoghi,assessors,numerator,paulet,painstakingly,halakhic,rocroi,motorcycling,gimel,kryptonian,emmeline,cheeked,drawdown,lelouch,dacians,brahmana,reminiscence,disinfection,optimizations,golders,extensor,tsugaru,tolling,liman,gulzar,unconvinced,crataegus,oppositional,dvina,pyrolysis,mandan,alexius,prion,stressors,loomed,moated,dhivehi,recyclable,relict,nestlings,sarandon,kosovar,solvers,czeslaw,kenta,maneuverable,middens,berkhamsted,comilla,folkways,loxton,beziers,batumi,petrochemicals,optimised,sirjan,rabindra,musicality,rationalisation,drillers,subspaces,'live,bbwaa,outfielders,tsung,danske,vandalised,norristown,striae,kanata,gastroenterology,steadfastly,equalising,bootlegging,mannerheim,notodontidae,lagoa,commentating,peninsulas,chishti,seismology,modigliani,preceptor,canonically,awardee,boyaca,hsinchu,stiffened,nacelle,bogor,dryness,unobstructed,yaqub,scindia,peeters,irritant,ammonites,ferromagnetic,speechwriter,oxygenated,walesa,millais,canarian,faience,calvinistic,discriminant,rasht,inker,annexes,howth,allocates,conditionally,roused,regionalism,regionalbahn,functionary,nitrates,bicentenary,recreates,saboteurs,koshi,plasmids,thinned,124th,plainview,kardashian,neuville,victorians,radiates,127th,vieques,schoolmates,petru,tokusatsu,keying,sunaina,flamethrower,'bout,demersal,hosokawa,corelli,omniscient,o'doherty,niksic,reflectivity,transdev,cavour,metronome,temporally,gabba,nsaids,geert,mayport,hematite,boeotia,vaudreuil,torshavn,sailplane,mineralogist,eskisehir,practises,gallifrey,takumi,unease,slipstream,hedmark,paulinus,ailsa,wielkopolska,filmworks,adamantly,vinaya,facelifted,franchisee,augustana,toppling,velvety,crispa,stonington,histological,genealogist,tactician,tebow,betjeman,nyingma,overwinter,oberoi,rampal,overwinters,petaluma,lactarius,stanmore,balikpapan,vasant,inclines,laminate,munshi,sociedade,rabbah,septal,boyband,ingrained,faltering,inhumans,nhtsa,affix,l'ordre,kazuki,rossendale,mysims,latvians,slaveholders,basilicata,neuburg,assize,manzanillo,scrobipalpa,formula_61,belgique,pterosaurs,privateering,vaasa,veria,northport,pressurised,hobbyist,austerlitz,sahih,bhadra,siliguri,bistrica,bursaries,wynton,corot,lepidus,lully,libor,libera,olusegun,choline,mannerism,lymphocyte,chagos,duxbury,parasitism,ecowas,morotai,cancion,coniston,aggrieved,sputnikmusic,parle,ammonian,civilisations,malformation,cattaraugus,skyhawks,d'arc,demerara,bronfman,midwinter,piscataway,jogaila,threonine,matins,kohlberg,hubli,pentatonic,camillus,nigam,potro,unchained,chauvel,orangeville,cistercians,redeployment,xanthi,manju,carabinieri,pakeha,nikolaevich,kantakouzenos,sesquicentennial,gunships,symbolised,teramo,ballo,crusading,l'oeil,bharatpur,lazier,gabrovo,hysteresis,rothbard,chaumont,roundel,ma'mun,sudhir,queried,newts,shimane,presynaptic,playfield,taxonomists,sensitivities,freleng,burkinabe,orfeo,autovia,proselytizing,bhangra,pasok,jujutsu,heung,pivoting,hominid,commending,formula_64,epworth,christianized,oresund,hantuchova,rajputana,hilversum,masoretic,dayak,bakri,assen,magog,macromolecules,waheed,qaida,spassky,rumped,protrudes,preminger,misogyny,glencairn,salafi,lacunae,grilles,racemes,areva,alighieri,inari,epitomized,photoshoot,one-of-a-kind,tring,muralist,tincture,backwaters,weaned,yeasts,analytically,smaland,caltrans,vysocina,jamuna,mauthausen,175th,nouvelles,censoring,reggina,christology,gilad,amplifying,mehmood,johnsons,redirects,eastgate,sacrum,meteoric,riverbanks,guidebooks,ascribes,scoparia,iconoclastic,telegraphic,chine,merah,mistico,lectern,sheung,aethelstan,capablanca,anant,uspto,albatrosses,mymensingh,antiretroviral,clonal,coorg,vaillant,liquidator,gigas,yokai,eradicating,motorcyclists,waitakere,tandon,nears,montenegrins,250th,tatsuya,yassin,atheistic,syncretism,nahum,berisha,transcended,owensboro,lakshmana,abteilung,unadorned,nyack,overflows,harrisonburg,complainant,uematsu,frictional,worsens,sangguniang,abutment,bulwer,sarma,apollinaire,shippers,lycia,alentejo,porpoises,optus,trawling,augustow,blackwall,workbench,westmount,leaped,sikandar,conveniences,stornoway,culverts,zoroastrians,hristo,ansgar,assistive,reassert,fanned,compasses,delgada,maisons,arima,plonsk,verlaine,starstruck,rakhine,befell,spirally,wyclef,expend,colloquium,formula_63,albertus,bellarmine,handedness,holon,introns,movimiento,profitably,lohengrin,discoverers,awash,erste,pharisees,dwarka,oghuz,hashing,heterodox,uloom,vladikavkaz,linesman,rehired,nucleophile,germanicus,gulshan,songz,bayerische,paralympian,crumlin,enjoined,khanum,prahran,penitent,amersfoort,saranac,semisimple,vagrants,compositing,tualatin,oxalate,lavra,ironi,ilkeston,umpqua,calum,stretford,zakat,guelders,hydrazine,birkin,spurring,modularity,aspartate,sodermanland,hopital,bellary,legazpi,clasico,cadfael,hypersonic,volleys,pharmacokinetics,carotene,orientale,pausini,bataille,lunga,retailed,m.phil,mazowieckie,vijayan,rawal,sublimation,promissory,estimators,ploughed,conflagration,penda,segregationist,otley,amputee,coauthor,sopra,pellew,wreckers,tollywood,circumscription,permittivity,strabane,landward,articulates,beaverbrook,rutherglen,coterminous,whistleblowers,colloidal,surbiton,atlante,oswiecim,bhasa,lampooned,chanter,saarc,landkreis,tribulation,tolerates,daiichi,hatun,cowries,dyschirius,abercromby,attock,aldwych,inflows,absolutist,l'histoire,committeeman,vanbrugh,headstock,westbourne,appenzell,hoxton,oculus,westfalen,roundabouts,nickelback,trovatore,quenching,summarises,conservators,transmutation,talleyrand,barzani,unwillingly,axonal,'blue,opining,enveloping,fidesz,rafah,colborne,flickr,lozenge,dulcimer,ndebele,swaraj,oxidize,gonville,resonated,gilani,superiore,endeared,janakpur,shepperton,solidifying,memoranda,sochaux,kurnool,rewari,emirs,kooning,bruford,unavailability,kayseri,judicious,negating,pterosaur,cytosolic,chernihiv,variational,sabretooth,seawolves,devalued,nanded,adverb,volunteerism,sealers,nemours,smederevo,kashubian,bartin,animax,vicomte,polotsk,polder,archiepiscopal,acceptability,quidditch,tussock,seminaire,immolation,belge,coves,wellingborough,khaganate,mckellen,nayaka,brega,kabhi,pontoons,bascule,newsreels,injectors,cobol,weblog,diplo,biggar,wheatbelt,erythrocytes,pedra,showgrounds,bogdanovich,eclecticism,toluene,elegies,formalize,andromedae,airworthiness,springville,mainframes,overexpression,magadha,bijelo,emlyn,glutamine,accenture,uhuru,metairie,arabidopsis,patanjali,peruvians,berezovsky,accion,astrolabe,jayanti,earnestly,sausalito,recurved,1500s,ramla,incineration,galleons,laplacian,shiki,smethwick,isomerase,dordevic,janow,jeffersonville,internationalism,penciled,styrene,ashur,nucleoside,peristome,horsemanship,sedges,bachata,medes,kristallnacht,schneerson,reflectance,invalided,strutt,draupadi,destino,partridges,tejas,quadrennial,aurel,halych,ethnomusicology,autonomist,radyo,rifting,shi'ar,crvena,telefilm,zawahiri,plana,sultanates,theodorus,subcontractors,pavle,seneschal,teleports,chernivtsi,buccal,brattleboro,stankovic,safar,dunhuang,electrocution,chastised,ergonomic,midsomer,130th,zomba,nongovernmental,escapist,localize,xuzhou,kyrie,carinthian,karlovac,nisan,kramnik,pilipino,digitisation,khasi,andronicus,highwayman,maior,misspelling,sebastopol,socon,rhaetian,archimandrite,partway,positivity,otaku,dingoes,tarski,geopolitics,disciplinarian,zulfikar,kenzo,globose,electrophilic,modele,storekeeper,pohang,wheldon,washers,interconnecting,digraphs,intrastate,campy,helvetic,frontispiece,ferrocarril,anambra,petraeus,midrib,endometrial,dwarfism,mauryan,endocytosis,brigs,percussionists,furtherance,synergistic,apocynaceae,krona,berthier,circumvented,casal,siltstone,precast,ethnikos,realists,geodesy,zarzuela,greenback,tripathi,persevered,interments,neutralization,olbermann,departements,supercomputing,demobilised,cassavetes,dunder,ministering,veszprem,barbarism,'world,pieve,apologist,frentzen,sulfides,firewalls,pronotum,staatsoper,hachette,makhachkala,oberland,phonon,yoshihiro,instars,purnima,winslet,mutsu,ergative,sajid,nizamuddin,paraphrased,ardeidae,kodagu,monooxygenase,skirmishers,sportiva,o'byrne,mykolaiv,ophir,prieta,gyllenhaal,kantian,leche,copan,herero,ps250,gelsenkirchen,shalit,sammarinese,chetwynd,wftda,travertine,warta,sigmaringen,concerti,namespace,ostergotland,biomarker,universals,collegio,embarcadero,wimborne,fiddlers,likening,ransomed,stifled,unabated,kalakaua,khanty,gongs,goodrem,countermeasure,publicizing,geomorphology,swedenborg,undefended,catastrophes,diverts,storyboards,amesbury,contactless,placentia,festivity,authorise,terrane,thallium,stradivarius,antonine,consortia,estimations,consecrate,supergiant,belichick,pendants,butyl,groza,univac,afire,kavala,studi,teletoon,paucity,gonbad,koninklijke,128th,stoichiometric,multimodal,facundo,anatomic,melamine,creuse,altan,brigands,mcguinty,blomfield,tsvangirai,protrusion,lurgan,warminster,tenzin,russellville,discursive,definable,scotrail,lignin,reincorporated,o'dell,outperform,redland,multicolored,evaporates,dimitrie,limbic,patapsco,interlingua,surrogacy,cutty,potrero,masud,cahiers,jintao,ardashir,centaurus,plagiarized,minehead,musings,statuettes,logarithms,seaview,prohibitively,downforce,rivington,tomorrowland,microbiologist,ferric,morag,capsid,kucinich,clairvaux,demotic,seamanship,cicada,painterly,cromarty,carbonic,tupou,oconee,tehuantepec,typecast,anstruther,internalized,underwriters,tetrahedra,flagrant,quakes,pathologies,ulrik,nahal,tarquini,dongguan,parnassus,ryoko,senussi,seleucia,airasia,einer,sashes,d'amico,matriculating,arabesque,honved,biophysical,hardinge,kherson,mommsen,diels,icbms,reshape,brasiliensis,palmach,netaji,oblate,functionalities,grigor,blacksburg,recoilless,melanchthon,reales,astrodome,handcrafted,memes,theorizes,isma'il,aarti,pirin,maatschappij,stabilizes,honiara,ashbury,copts,rootes,defensed,queiroz,mantegna,galesburg,coraciiformesfamily,cabrillo,tokio,antipsychotics,kanon,173rd,apollonia,finial,lydian,hadamard,rangi,dowlatabad,monolingual,platformer,subclasses,chiranjeevi,mirabeau,newsgroup,idmanyurdu,kambojas,walkover,zamoyski,generalist,khedive,flanges,knowle,bande,157th,alleyn,reaffirm,pininfarina,zuckerberg,hakodate,131st,aditi,bellinzona,vaulter,planking,boscombe,colombians,lysis,toppers,metered,nahyan,queensryche,minho,nagercoil,firebrand,foundress,bycatch,mendota,freeform,antena,capitalisation,martinus,overijssel,purists,interventionist,zgierz,burgundians,hippolyta,trompe,umatilla,moroccans,dictionnaire,hydrography,changers,chota,rimouski,aniline,bylaw,grandnephew,neamt,lemnos,connoisseurs,tractive,rearrangements,fetishism,finnic,apalachicola,landowning,calligraphic,circumpolar,mansfeld,legible,orientalism,tannhauser,blamey,maximization,noinclude,blackbirds,angara,ostersund,pancreatitis,glabra,acleris,juried,jungian,triumphantly,singlet,plasmas,synesthesia,yellowhead,unleashes,choiseul,quanzhong,brookville,kaskaskia,igcse,skatepark,jatin,jewellers,scaritinae,techcrunch,tellurium,lachaise,azuma,codeshare,dimensionality,unidirectional,scolaire,macdill,camshafts,unassisted,verband,kahlo,eliya,prelature,chiefdoms,saddleback,sockers,iommi,coloratura,llangollen,biosciences,harshest,maithili,k'iche,plical,multifunctional,andreu,tuskers,confounding,sambre,quarterdeck,ascetics,berdych,transversal,tuolumne,sagami,petrobras,brecker,menxia,instilling,stipulating,korra,oscillate,deadpan,v/line,pyrotechnic,stoneware,prelims,intracoastal,retraining,ilija,berwyn,encrypt,achievers,zulfiqar,glycoproteins,khatib,farmsteads,occultist,saman,fionn,derulo,khilji,obrenovic,argosy,toowong,dementieva,sociocultural,iconostasis,craigslist,festschrift,taifa,intercalated,tanjong,penticton,sharad,marxian,extrapolation,guises,wettin,prabang,exclaiming,kosta,famas,conakry,wanderings,'aliabad,macleay,exoplanet,bancorp,besiegers,surmounting,checkerboard,rajab,vliet,tarek,operable,wargaming,haldimand,fukuyama,uesugi,aggregations,erbil,brachiopods,tokyu,anglais,unfavorably,ujpest,escorial,armagnac,nagara,funafuti,ridgeline,cocking,o'gorman,compactness,retardant,krajowa,barua,coking,bestows,thampi,chicagoland,variably,o'loughlin,minnows,schwa,shaukat,polycarbonate,chlorinated,godalming,gramercy,delved,banqueting,enlil,sarada,prasanna,domhnall,decadal,regressive,lipoprotein,collectable,surendra,zaporizhia,cycliste,suchet,offsetting,formula_65,pudong,d'arte,blyton,quonset,osmania,tientsin,manorama,proteomics,bille,jalpaiguri,pertwee,barnegat,inventiveness,gollancz,euthanized,henricus,shortfalls,wuxia,chlorides,cerrado,polyvinyl,folktale,straddled,bioengineering,eschewing,greendale,recharged,olave,ceylonese,autocephalous,peacebuilding,wrights,guyed,rosamund,abitibi,bannockburn,gerontology,scutari,souness,seagram,codice_9,'open,xhtml,taguig,purposed,darbar,orthopedics,unpopulated,kisumu,tarrytown,feodor,polyhedral,monadnock,gottorp,priam,redesigning,gasworks,elfin,urquiza,homologation,filipovic,bohun,manningham,gornik,soundness,shorea,lanus,gelder,darke,sandgate,criticality,paranaense,153rd,vieja,lithograph,trapezoid,tiebreakers,convalescence,yan'an,actuaries,balad,altimeter,thermoelectric,trailblazer,previn,tenryu,ancaster,endoscopy,nicolet,discloses,fracking,plaine,salado,americanism,placards,absurdist,propylene,breccia,jirga,documenta,ismailis,161st,brentano,dallas/fort,embellishment,calipers,subscribes,mahavidyalaya,wednesbury,barnstormers,miwok,schembechler,minigame,unterberger,dopaminergic,inacio,nizamabad,overridden,monotype,cavernous,stichting,sassafras,sotho,argentinean,myrrh,rapidity,flatts,gowrie,dejected,kasaragod,cyprinidae,interlinked,arcseconds,degeneracy,infamously,incubate,substructure,trigeminal,sectarianism,marshlands,hooliganism,hurlers,isolationist,urania,burrard,switchover,lecco,wilts,interrogator,strived,ballooning,volterra,raciborz,relegating,gilding,cybele,dolomites,parachutist,lochaber,orators,raeburn,backend,benaud,rallycross,facings,banga,nuclides,defencemen,futurity,emitters,yadkin,eudonia,zambales,manasseh,sirte,meshes,peculiarly,mcminnville,roundly,boban,decrypt,icelanders,sanam,chelan,jovian,grudgingly,penalised,subscript,gambrinus,poaceae,infringements,maleficent,runciman,148th,supersymmetry,granites,liskeard,eliciting,involution,hallstatt,kitzbuhel,shankly,sandhills,inefficiencies,yishuv,psychotropic,nightjars,wavell,sangamon,vaikundar,choshu,retrospectives,pitesti,gigantea,hashemi,bosna,gakuin,siochana,arrangers,baronetcies,narayani,temecula,creston,koscierzyna,autochthonous,wyandot,anniston,igreja,mobilise,buzau,dunster,musselburgh,wenzhou,khattak,detoxification,decarboxylase,manlius,campbells,coleoptera,copyist,sympathisers,suisun,eminescu,defensor,transshipment,thurgau,somerton,fluctuates,ambika,weierstrass,lukow,giambattista,volcanics,romanticized,innovated,matabeleland,scotiabank,garwolin,purine,d'auvergne,borderland,maozhen,pricewaterhousecoopers,testator,pallium,scout.com,mv/pi,nazca,curacies,upjohn,sarasvati,monegasque,ketrzyn,malory,spikelets,biomechanics,haciendas,rapped,dwarfed,stews,nijinsky,subjection,matsu,perceptible,schwarzburg,midsection,entertains,circuitous,epiphytic,wonsan,alpini,bluefield,sloths,transportable,braunfels,dictum,szczecinek,jukka,wielun,wejherowo,hucknall,grameen,duodenum,ribose,deshpande,shahar,nexstar,injurious,dereham,lithographer,dhoni,structuralist,progreso,deschutes,christus,pulteney,quoins,yitzchak,gyeongsang,breviary,makkah,chiyoda,jutting,vineland,angiosperms,necrotic,novelisation,redistribute,tirumala,140th,featureless,mafic,rivaling,toyline,2/1st,martius,saalfeld,monthan,texian,kathak,melodramas,mithila,regierungsbezirk,509th,fermenting,schoolmate,virtuosic,briain,kokoda,heliocentric,handpicked,kilwinning,sonically,dinars,kasim,parkways,bogdanov,luxembourgian,halland,avesta,bardic,daugavpils,excavator,qwest,frustrate,physiographic,majoris,'ndrangheta,unrestrained,firmness,montalban,abundances,preservationists,adare,executioners,guardsman,bonnaroo,neglects,nazrul,pro12,hoorn,abercorn,refuting,kabud,cationic,parapsychology,troposphere,venezuelans,malignancy,khoja,unhindered,accordionist,medak,visby,ejercito,laparoscopic,dinas,umayyads,valmiki,o'dowd,saplings,stranding,incisions,illusionist,avocets,buccleuch,amazonia,fourfold,turboprops,roosts,priscus,turnstile,areal,certifies,pocklington,spoofs,viseu,commonalities,dabrowka,annam,homesteaders,daredevils,mondrian,negotiates,fiestas,perennials,maximizes,lubavitch,ravindra,scrapers,finials,kintyre,violas,snoqualmie,wilders,openbsd,mlawa,peritoneal,devarajan,congke,leszno,mercurial,fakir,joannes,bognor,overloading,unbuilt,gurung,scuttle,temperaments,bautzen,jardim,tradesman,visitations,barbet,sagamore,graaff,forecasters,wilsons,assis,l'air,shariah,sochaczew,russa,dirge,biliary,neuve,heartbreakers,strathearn,jacobian,overgrazing,edrich,anticline,parathyroid,petula,lepanto,decius,channelled,parvathi,puppeteers,communicators,francorchamps,kahane,longus,panjang,intron,traite,xxvii,matsuri,amrit,katyn,disheartened,cacak,omonia,alexandrine,partaking,wrangling,adjuvant,haskovo,tendrils,greensand,lammermoor,otherworld,volusia,stabling,one-and-a-half,bresson,zapatista,eotvos,ps150,webisodes,stepchildren,microarray,braganca,quanta,dolne,superoxide,bellona,delineate,ratha,lindenwood,bruhl,cingulate,tallies,bickerton,helgi,bevin,takoma,tsukuba,statuses,changeling,alister,bytom,dibrugarh,magnesia,duplicating,outlier,abated,goncalo,strelitz,shikai,mardan,musculature,ascomycota,springhill,tumuli,gabaa,odenwald,reformatted,autocracy,theresienstadt,suplex,chattopadhyay,mencken,congratulatory,weatherfield,systema,solemnity,projekt,quanzhou,kreuzberg,postbellum,nobuo,mediaworks,finisterre,matchplay,bangladeshis,kothen,oocyte,hovered,aromas,afshar,browed,teases,chorlton,arshad,cesaro,backbencher,iquique,vulcans,padmini,unabridged,cyclase,despotic,kirilenko,achaean,queensberry,debre,octahedron,iphigenia,curbing,karimnagar,sagarmatha,smelters,surrealists,sanada,shrestha,turridae,leasehold,jiedushi,eurythmics,appropriating,correze,thimphu,amery,musicomh,cyborgs,sandwell,pushcart,retorts,ameliorate,deteriorates,stojanovic,spline,entrenchments,bourse,chancellorship,pasolini,lendl,personage,reformulated,pubescens,loiret,metalurh,reinvention,nonhuman,eilema,tarsal,complutense,magne,broadview,metrodome,outtake,stouffville,seinen,bataillon,phosphoric,ostensible,opatow,aristides,beefheart,glorifying,banten,romsey,seamounts,fushimi,prophylaxis,sibylla,ranjith,goslar,balustrades,georgiev,caird,lafitte,peano,canso,bankura,halfpenny,segregate,caisson,bizerte,jamshedpur,euromaidan,philosophie,ridged,cheerfully,reclassification,aemilius,visionaries,samoans,wokingham,chemung,wolof,unbranched,cinerea,bhosle,ourense,immortalised,cornerstones,sourcebook,khufu,archimedean,universitatea,intermolecular,fiscally,suffices,metacomet,adjudicator,stablemate,specks,glace,inowroclaw,patristic,muharram,agitating,ashot,neurologic,didcot,gamla,ilves,putouts,siraj,laski,coaling,diarmuid,ratnagiri,rotulorum,liquefaction,morbihan,harel,aftershock,gruiformesfamily,bonnier,falconiformesfamily,adorns,wikis,maastrichtian,stauffenberg,bishopsgate,fakhr,sevenfold,ponders,quantifying,castiel,opacity,depredations,lenten,gravitated,o'mahony,modulates,inuktitut,paston,kayfabe,vagus,legalised,balked,arianism,tendering,sivas,birthdate,awlaki,khvajeh,shahab,samtgemeinde,bridgeton,amalgamations,biogenesis,recharging,tsukasa,mythbusters,chamfered,enthronement,freelancers,maharana,constantia,sutil,messines,monkton,okanogan,reinvigorated,apoplexy,tanahashi,neues,valiants,harappan,russes,carding,volkoff,funchal,statehouse,imitative,intrepidity,mellotron,samaras,turkana,besting,longitudes,exarch,diarrhoea,transcending,zvonareva,darna,ramblin,disconnection,137th,refocused,diarmait,agricole,ba'athist,turenne,contrabass,communis,daviess,fatimids,frosinone,fittingly,polyphyletic,qanat,theocratic,preclinical,abacha,toorak,marketplaces,conidia,seiya,contraindicated,retford,bundesautobahn,rebuilds,climatology,seaworthy,starfighter,qamar,categoria,malai,hellinsia,newstead,airworthy,catenin,avonmouth,arrhythmias,ayyavazhi,downgrade,ashburnham,ejector,kinematics,petworth,rspca,filmation,accipitridae,chhatrapati,g/mol,bacau,agama,ringtone,yudhoyono,orchestrator,arbitrators,138th,powerplants,cumbernauld,alderley,misamis,hawai`i,cuando,meistriliiga,jermyn,alans,pedigrees,ottavio,approbation,omnium,purulia,prioress,rheinland,lymphoid,lutsk,oscilloscope,ballina,iliac,motorbikes,modernising,uffizi,phylloxera,kalevala,bengalis,amravati,syntheses,interviewers,inflectional,outflank,maryhill,unhurt,profiler,nacelles,heseltine,personalised,guarda,herpetologist,airpark,pigot,margaretha,dinos,peleliu,breakbeat,kastamonu,shaivism,delamere,kingsville,epigram,khlong,phospholipids,journeying,lietuvos,congregated,deviance,celebes,subsoil,stroma,kvitova,lubricating,layoff,alagoas,olafur,doron,interuniversity,raycom,agonopterix,uzice,nanna,springvale,raimundo,wrested,pupal,talat,skinheads,vestige,unpainted,handan,odawara,ammar,attendee,lapped,myotis,gusty,ciconiiformesfamily,traversal,subfield,vitaphone,prensa,hasidism,inwood,carstairs,kropotkin,turgenev,dobra,remittance,purim,tannin,adige,tabulation,lethality,pacha,micronesian,dhruva,defensemen,tibeto,siculus,radioisotope,sodertalje,phitsanulok,euphonium,oxytocin,overhangs,skinks,fabrica,reinterred,emulates,bioscience,paragliding,raekwon,perigee,plausibility,frolunda,erroll,aznar,vyasa,albinus,trevally,confederacion,terse,sixtieth,1530s,kendriya,skateboarders,frontieres,muawiyah,easements,shehu,conservatively,keystones,kasem,brutalist,peekskill,cowry,orcas,syllabary,paltz,elisabetta,denticles,hampering,dolni,eidos,aarau,lermontov,yankton,shahbaz,barrages,kongsvinger,reestablishment,acetyltransferase,zulia,mrnas,slingsby,eucalypt,efficacious,weybridge,gradation,cinematheque,malthus,bampton,coexisted,cisse,hamdi,cupertino,saumarez,chionodes,libertine,formers,sakharov,pseudonymous,vol.1,mcduck,gopalakrishnan,amberley,jorhat,grandmasters,rudiments,dwindle,param,bukidnon,menander,americanus,multipliers,pulawy,homoerotic,pillbox,cd+dvd,epigraph,aleksandrow,extrapolated,horseshoes,contemporain,angiography,hasselt,shawinigan,memorization,legitimized,cyclades,outsold,rodolphe,kelis,powerball,dijkstra,analyzers,incompressible,sambar,orangeburg,osten,reauthorization,adamawa,sphagnum,hypermarket,millipedes,zoroaster,madea,ossuary,murrayfield,pronominal,gautham,resellers,ethers,quarrelled,dolna,stragglers,asami,tangut,passos,educacion,sharaf,texel,berio,bethpage,bezalel,marfa,noronha,36ers,genteel,avram,shilton,compensates,sweetener,reinstalled,disables,noether,1590s,balakrishnan,kotaro,northallerton,cataclysm,gholam,cancellara,schiphol,commends,longinus,albinism,gemayel,hamamatsu,volos,islamism,sidereal,pecuniary,diggings,townsquare,neosho,lushan,chittoor,akhil,disputation,desiccation,cambodians,thwarting,deliberated,ellipsis,bahini,susumu,separators,kohneh,plebeians,kultur,ogaden,pissarro,trypeta,latur,liaodong,vetting,datong,sohail,alchemists,lengthwise,unevenly,masterly,microcontrollers,occupier,deviating,farringdon,baccalaureat,theocracy,chebyshev,archivists,jayaram,ineffectiveness,scandinavians,jacobins,encomienda,nambu,g/cm3,catesby,paavo,heeded,rhodium,idealised,10deg,infective,mecyclothorax,halevy,sheared,minbari,audax,lusatian,rebuffs,hitfix,fastener,subjugate,tarun,binet,compuserve,synthesiser,keisuke,amalric,ligatures,tadashi,ignazio,abramovich,groundnut,otomo,maeve,mortlake,ostrogoths,antillean,todor,recto,millimetre,espousing,inaugurate,paracetamol,galvanic,harpalinae,jedrzejow,reassessment,langlands,civita,mikan,stikine,bijar,imamate,istana,kaiserliche,erastus,federale,cytosine,expansionism,hommes,norrland,smriti,snapdragon,gulab,taleb,lossy,khattab,urbanised,sesto,rekord,diffuser,desam,morganatic,silting,pacts,extender,beauharnais,purley,bouches,halfpipe,discontinuities,houthi,farmville,animism,horni,saadi,interpretative,blockades,symeon,biogeographic,transcaucasian,jetties,landrieu,astrocytes,conjunto,stumpings,weevils,geysers,redux,arching,romanus,tazeh,marcellinus,casein,opava,misrata,anare,sattar,declarer,dreux,oporto,venta,vallis,icosahedron,cortona,lachine,mohammedan,sandnes,zynga,clarin,diomedes,tsuyoshi,pribram,gulbarga,chartist,superettan,boscawen,altus,subang,gating,epistolary,vizianagaram,ogdensburg,panna,thyssen,tarkovsky,dzogchen,biograph,seremban,unscientific,nightjar,legco,deism,n.w.a,sudha,siskel,sassou,flintlock,jovial,montbeliard,pallida,formula_66,tranquillity,nisei,adornment,'people,yamhill,hockeyallsvenskan,adopters,appian,lowicz,haplotypes,succinctly,starogard,presidencies,kheyrabad,sobibor,kinesiology,cowichan,militum,cromwellian,leiningen,ps1.5,concourses,dalarna,goldfield,brzeg,faeces,aquarii,matchless,harvesters,181st,numismatics,korfball,sectioned,transpires,facultative,brandishing,kieron,forages,menai,glutinous,debarge,heathfield,1580s,malang,photoelectric,froome,semiotic,alwar,grammophon,chiaroscuro,mentalist,maramures,flacco,liquors,aleutians,marvell,sutlej,patnaik,qassam,flintoff,bayfield,haeckel,sueno,avicii,exoplanets,hoshi,annibale,vojislav,honeycombs,celebrant,rendsburg,veblen,quails,141st,carronades,savar,narrations,jeeva,ontologies,hedonistic,marinette,godot,munna,bessarabian,outrigger,thame,gravels,hoshino,falsifying,stereochemistry,nacionalista,medially,radula,ejecting,conservatorio,odile,ceiba,jaina,essonne,isometry,allophones,recidivism,iveco,ganda,grammarians,jagan,signposted,uncompressed,facilitators,constancy,ditko,propulsive,impaling,interbank,botolph,amlaib,intergroup,sorbus,cheka,debye,praca,adorning,presbyteries,dormition,strategos,qarase,pentecostals,beehives,hashemite,goldust,euronext,egress,arpanet,soames,jurchens,slovenska,copse,kazim,appraisals,marischal,mineola,sharada,caricaturist,sturluson,galba,faizabad,overwintering,grete,uyezds,didsbury,libreville,ablett,microstructure,anadolu,belenenses,elocution,cloaks,timeslots,halden,rashidun,displaces,sympatric,germanus,tuples,ceska,equalize,disassembly,krautrock,babangida,memel,deild,gopala,hematology,underclass,sangli,wawrinka,assur,toshack,refrains,nicotinic,bhagalpur,badami,racetracks,pocatello,walgreens,nazarbayev,occultation,spinnaker,geneon,josias,hydrolyzed,dzong,corregimiento,waistcoat,thermoplastic,soldered,anticancer,lactobacillus,shafi'i,carabus,adjournment,schlumberger,triceratops,despotate,mendicant,krishnamurti,bahasa,earthworm,lavoisier,noetherian,kalki,fervently,bhawan,saanich,coquille,gannet,motagua,kennels,mineralization,fitzherbert,svein,bifurcated,hairdressing,felis,abounded,dimers,fervour,hebdo,bluffton,aetna,corydon,clevedon,carneiro,subjectively,deutz,gastropoda,overshot,concatenation,varman,carolla,maharshi,mujib,inelastic,riverhead,initialized,safavids,rohini,caguas,bulges,fotbollforbund,hefei,spithead,westville,maronites,lytham,americo,gediminas,stephanus,chalcolithic,hijra,gnu/linux,predilection,rulership,sterility,haidar,scarlatti,saprissa,sviatoslav,pointedly,sunroof,guarantor,thevar,airstrips,pultusk,sture,129th,divinities,daizong,dolichoderus,cobourg,maoists,swordsmanship,uprated,bohme,tashi,largs,chandi,bluebeard,householders,richardsonian,drepanidae,antigonish,elbasan,occultism,marca,hypergeometric,oirat,stiglitz,ignites,dzungar,miquelon,pritam,d'automne,ulidiid,niamey,vallecano,fondo,billiton,incumbencies,raceme,chambery,cadell,barenaked,kagame,summerside,haussmann,hatshepsut,apothecaries,criollo,feint,nasals,timurid,feltham,plotinus,oxygenation,marginata,officinalis,salat,participations,ising,downe,izumo,unguided,pretence,coursed,haruna,viscountcy,mainstage,justicia,powiat,takara,capitoline,implacable,farben,stopford,cosmopterix,tuberous,kronecker,galatians,kweli,dogmas,exhorted,trebinje,skanda,newlyn,ablative,basidia,bhiwani,encroachments,stranglers,regrouping,tubal,shoestring,wawel,anionic,mesenchymal,creationists,pyrophosphate,moshi,despotism,powerbook,fatehpur,rupiah,segre,ternate,jessore,b.i.g,shevardnadze,abounds,gliwice,densest,memoria,suborbital,vietcong,ratepayers,karunanidhi,toolbar,descents,rhymney,exhortation,zahedan,carcinomas,hyperbaric,botvinnik,billets,neuropsychological,tigranes,hoards,chater,biennially,thistles,scotus,wataru,flotillas,hungama,monopolistic,payouts,vetch,generalissimo,caries,naumburg,piran,blizzards,escalates,reactant,shinya,theorize,rizzoli,transitway,ecclesiae,streptomyces,cantal,nisibis,superconductor,unworkable,thallus,roehampton,scheckter,viceroys,makuuchi,ilkley,superseding,takuya,klodzko,borbon,raspberries,operand,w.a.k.o,sarabande,factionalism,egalitarianism,temasek,torbat,unscripted,jorma,westerner,perfective,vrije,underlain,goldfrapp,blaenau,jomon,barthes,drivetime,bassa,bannock,umaga,fengxiang,zulus,sreenivasan,farces,codice_10,freeholder,poddebice,imperialists,deregulated,wingtip,o'hagan,pillared,overtone,hofstadter,149th,kitano,saybrook,standardizing,aldgate,staveley,o'flaherty,hundredths,steerable,soltan,empted,cruyff,intramuros,taluks,cotonou,marae,karur,figueres,barwon,lucullus,niobe,zemlya,lathes,homeported,chaux,amyotrophic,opines,exemplars,bhamo,homomorphisms,gauleiter,ladin,mafiosi,airdrieonians,b/soul,decal,transcaucasia,solti,defecation,deaconess,numidia,sampradaya,normalised,wingless,schwaben,alnus,cinerama,yakutsk,ketchikan,orvieto,unearned,monferrato,rotem,aacsb,loong,decoders,skerries,cardiothoracic,repositioning,pimpernel,yohannan,tenebrionoidea,nargis,nouvel,costliest,interdenominational,noize,redirecting,zither,morcha,radiometric,frequenting,irtysh,gbagbo,chakri,litvinenko,infotainment,ravensbruck,harith,corbels,maegashira,jousting,natan,novus,falcao,minis,railed,decile,rauma,ramaswamy,cavitation,paranaque,berchtesgaden,reanimated,schomberg,polysaccharides,exclusionary,cleon,anurag,ravaging,dhanush,mitchells,granule,contemptuous,keisei,rolleston,atlantean,yorkist,daraa,wapping,micrometer,keeneland,comparably,baranja,oranje,schlafli,yogic,dinajpur,unimpressive,masashi,recreativo,alemannic,petersfield,naoko,vasudeva,autosport,rajat,marella,busko,wethersfield,ssris,soulcalibur,kobani,wildland,rookery,hoffenheim,kauri,aliphatic,balaclava,ferrite,publicise,victorias,theism,quimper,chapbook,functionalist,roadbed,ulyanovsk,cupen,purpurea,calthorpe,teofilo,mousavi,cochlea,linotype,detmold,ellerslie,gakkai,telkom,southsea,subcontractor,inguinal,philatelists,zeebrugge,piave,trochidae,dempo,spoilt,saharanpur,mihrab,parasympathetic,barbarous,chartering,antiqua,katsina,bugis,categorizes,altstadt,kandyan,pambansa,overpasses,miters,assimilating,finlandia,uneconomic,am/fm,harpsichordist,dresdner,luminescence,authentically,overpowers,magmatic,cliftonville,oilfields,skirted,berthe,cuman,oakham,frelimo,glockenspiel,confection,saxophonists,piaseczno,multilevel,antipater,levying,maltreatment,velho,opoczno,harburg,pedophilia,unfunded,palettes,plasterwork,breve,dharmendra,auchinleck,nonesuch,blackmun,libretti,rabbani,145th,hasselbeck,kinnock,malate,vanden,cloverdale,ashgabat,nares,radians,steelworkers,sabor,possums,catterick,hemispheric,ostra,outpaced,dungeness,almshouse,penryn,texians,1000m,franchitti,incumbency,texcoco,newar,tramcars,toroidal,meitetsu,spellbound,agronomist,vinifera,riata,bunko,pinas,ba'al,github,vasilyevich,obsolescent,geodesics,ancestries,tujue,capitalised,unassigned,throng,unpaired,psychometric,skegness,exothermic,buffered,kristiansund,tongued,berenger,basho,alitalia,prolongation,archaeologically,fractionation,cyprinid,echinoderms,agriculturally,justiciar,sonam,ilium,baits,danceable,grazer,ardahan,grassed,preemption,glassworks,hasina,ugric,umbra,wahhabi,vannes,tinnitus,capitaine,tikrit,lisieux,scree,hormuz,despenser,jagiellon,maisonneuve,gandaki,santarem,basilicas,lancing,landskrona,weilburg,fireside,elysian,isleworth,krishnamurthy,filton,cynon,tecmo,subcostal,scalars,triglycerides,hyperplane,farmingdale,unione,meydan,pilings,mercosur,reactivate,akiba,fecundity,jatra,natsume,zarqawi,preta,masao,presbyter,oakenfold,rhodri,ferran,ruizong,cloyne,nelvana,epiphanius,borde,scutes,strictures,troughton,whitestone,sholom,toyah,shingon,kutuzov,abelard,passant,lipno,cafeterias,residuals,anabaptists,paratransit,criollos,pleven,radiata,destabilizing,hadiths,bazaars,mannose,taiyo,crookes,welbeck,baoding,archelaus,nguesso,alberni,wingtips,herts,viasat,lankans,evreux,wigram,fassbinder,ryuichi,storting,reducible,olesnica,znojmo,hyannis,theophanes,flatiron,mustering,rajahmundry,kadir,wayang,prome,lethargy,zubin,illegality,conall,dramedy,beerbohm,hipparchus,ziarat,ryuji,shugo,glenorchy,microarchitecture,morne,lewinsky,cauvery,battenberg,hyksos,wayanad,hamilcar,buhari,brazo,bratianu,solms,aksaray,elamite,chilcotin,bloodstock,sagara,dolny,reunified,umlaut,proteaceae,camborne,calabrian,dhanbad,vaxjo,cookware,potez,rediffusion,semitones,lamentations,allgau,guernica,suntory,pleated,stationing,urgell,gannets,bertelsmann,entryway,raphitomidae,acetaldehyde,nephrology,categorizing,beiyang,permeate,tourney,geosciences,khana,masayuki,crucis,universitaria,slaskie,khaimah,finno,advani,astonishingly,tubulin,vampiric,jeolla,sociale,cleethorpes,badri,muridae,suzong,debater,decimation,kenyans,mutualism,pontifex,middlemen,insee,halevi,lamentation,psychopathy,brassey,wenders,kavya,parabellum,prolactin,inescapable,apses,malignancies,rinzai,stigmatized,menahem,comox,ateliers,welshpool,setif,centimetre,truthfulness,downfield,drusus,woden,glycosylation,emanated,agulhas,dalkeith,jazira,nucky,unifil,jobim,operon,oryzomys,heroically,seances,supernumerary,backhouse,hashanah,tatler,imago,invert,hayato,clockmaker,kingsmill,swiecie,analogously,golconda,poste,tacitly,decentralised,ge'ez,diplomatically,fossiliferous,linseed,mahavira,pedestals,archpriest,byelection,domiciled,jeffersonian,bombus,winegrowing,waukegan,uncultivated,haverfordwest,saumur,communally,disbursed,cleeve,zeljeznicar,speciosa,vacationers,sigur,vaishali,zlatko,iftikhar,cropland,transkei,incompleteness,bohra,subantarctic,slieve,physiologic,similis,klerk,replanted,'right,chafee,reproducible,bayburt,regicide,muzaffarpur,plurals,hanyu,orthologs,diouf,assailed,kamui,tarik,dodecanese,gorne,on/off,179th,shimoga,granaries,carlists,valar,tripolitania,sherds,simmern,dissociated,isambard,polytechnical,yuvraj,brabazon,antisense,pubmed,glans,minutely,masaaki,raghavendra,savoury,podcasting,tachi,bienville,gongsun,ridgely,deform,yuichi,binders,canna,carcetti,llobregat,implored,berri,njegos,intermingled,offload,athenry,motherhouse,corpora,kakinada,dannebrog,imperio,prefaces,musicologists,aerospatiale,shirai,nagapattinam,servius,cristoforo,pomfret,reviled,entebbe,stane,east/west,thermometers,matriarchal,siglo,bodil,legionnaire,ze'ev,theorizing,sangeetha,horticulturist,uncountable,lookalike,anoxic,ionospheric,genealogists,chicopee,imprinting,popish,crematoria,diamondback,cyathea,hanzhong,cameramen,halogaland,naklo,waclaw,storehouses,flexed,comuni,frits,glauca,nilgiris,compresses,nainital,continuations,albay,hypoxic,samajwadi,dunkerque,nanticoke,sarwar,interchanged,jubal,corba,jalgaon,derleth,deathstroke,magny,vinnytsia,hyphenated,rimfire,sawan,boehner,disrepute,normalize,aromanian,dualistic,approximant,chama,karimabad,barnacles,sanok,stipends,dyfed,rijksmuseum,reverberation,suncorp,fungicides,reverie,spectrograph,stereophonic,niazi,ordos,alcan,karaite,lautrec,tableland,lamellar,rieti,langmuir,russula,webern,tweaks,hawick,southerner,morphy,naturalisation,enantiomer,michinoku,barbettes,relieves,carburettors,redruth,oblates,vocabularies,mogilev,bagmati,galium,reasserted,extolled,symon,eurosceptic,inflections,tirtha,recompense,oruro,roping,gouverneur,pared,yayoi,watermills,retooled,leukocytes,jubilant,mazhar,nicolau,manheim,touraine,bedser,hambledon,kohat,powerhouses,tlemcen,reuven,sympathetically,afrikaners,interes,handcrafts,etcher,baddeley,wodonga,amaury,155th,vulgarity,pompadour,automorphisms,1540s,oppositions,prekmurje,deryni,fortifying,arcuate,mahila,bocage,uther,nozze,slashes,atlantica,hadid,rhizomatous,azeris,'with,osmena,lewisville,innervated,bandmaster,outcropping,parallelogram,dominicana,twang,ingushetia,extensional,ladino,sastry,zinoviev,relatable,nobilis,cbeebies,hitless,eulima,sporangia,synge,longlisted,criminalized,penitential,weyden,tubule,volyn,priestesses,glenbrook,kibbutzim,windshaft,canadair,falange,zsolt,bonheur,meine,archangels,safeguarded,jamaicans,malarial,teasers,badging,merseyrail,operands,pulsars,gauchos,biotin,bambara,necaxa,egmond,tillage,coppi,anxiolytic,preah,mausoleums,plautus,feroz,debunked,187th,belediyespor,mujibur,wantage,carboxyl,chettiar,murnau,vagueness,racemic,backstretch,courtland,municipio,palpatine,dezful,hyperbola,sreekumar,chalons,altay,arapahoe,tudors,sapieha,quilon,burdensome,kanya,xxviii,recension,generis,siphuncle,repressor,bitrate,mandals,midhurst,dioxin,democratique,upholds,rodez,cinematographic,epoque,jinping,rabelais,zhytomyr,glenview,rebooted,khalidi,reticulata,122nd,monnaie,passersby,ghazals,europaea,lippmann,earthbound,tadic,andorran,artvin,angelicum,banksy,epicentre,resemblances,shuttled,rathaus,bernt,stonemasons,balochi,siang,tynemouth,cygni,biosynthetic,precipitates,sharecroppers,d'annunzio,softbank,shiji,apeldoorn,polycyclic,wenceslas,wuchang,samnites,tamarack,silmarillion,madinah,palaeontology,kirchberg,sculpin,rohtak,aquabats,oviparous,thynne,caney,blimps,minimalistic,whatcom,palatalization,bardstown,direct3d,paramagnetic,kamboja,khash,globemaster,lengua,matej,chernigov,swanage,arsenals,cascadia,cundinamarca,tusculum,leavers,organics,warplanes,'three,exertions,arminius,gandharva,inquires,comercio,kuopio,chabahar,plotlines,mersenne,anquetil,paralytic,buckminster,ambit,acrolophus,quantifiers,clacton,ciliary,ansaldo,fergana,egoism,thracians,chicoutimi,northbrook,analgesia,brotherhoods,hunza,adriaen,fluoridation,snowfalls,soundboard,fangoria,cannibalistic,orthogonius,chukotka,dindigul,manzoni,chainz,macromedia,beltline,muruga,schistura,provable,litex,initio,pneumoniae,infosys,cerium,boonton,cannonballs,d'une,solvency,mandurah,houthis,dolmens,apologists,radioisotopes,blaxploitation,poroshenko,stawell,coosa,maximilien,tempelhof,espouse,declaratory,hambro,xalapa,outmoded,mihiel,benefitting,desirous,archeparchy,repopulated,telescoping,captor,mackaye,disparaged,ramanathan,crowne,tumbled,technetium,silted,chedi,nievre,hyeon,cartoonish,interlock,infocom,rediff.com,dioramas,timekeeping,concertina,kutaisi,cesky,lubomirski,unapologetic,epigraphic,stalactites,sneha,biofilm,falconry,miraflores,catena,'outstanding,prospekt,apotheosis,o'odham,pacemakers,arabica,gandhinagar,reminisces,iroquoian,ornette,tilling,neoliberalism,chameleons,pandava,prefontaine,haiyan,gneisenau,utama,bando,reconstitution,azaria,canola,paratroops,ayckbourn,manistee,stourton,manifestos,lympne,denouement,tractatus,rakim,bellflower,nanometer,sassanids,turlough,presbyterianism,varmland,20deg,phool,nyerere,almohad,manipal,vlaanderen,quickness,removals,makow,circumflex,eatery,morane,fondazione,alkylation,unenforceable,galliano,silkworm,junior/senior,abducts,phlox,konskie,lofoten,buuren,glyphosate,faired,naturae,cobbles,taher,skrulls,dostoevsky,walkout,wagnerian,orbited,methodically,denzil,sarat,extraterritorial,kohima,d'armor,brinsley,rostropovich,fengtian,comitatus,aravind,moche,wrangell,giscard,vantaa,viljandi,hakoah,seabees,muscatine,ballade,camanachd,sothern,mullioned,durad,margraves,maven,arete,chandni,garifuna,142nd,reading/literature,thickest,intensifies,trygve,khaldun,perinatal,asana,powerline,acetylation,nureyev,omiya,montesquieu,riverwalk,marly,correlating,intermountain,bulgar,hammerheads,underscores,wiretapping,quatrain,ruisseau,newsagent,tuticorin,polygyny,hemsworth,partisanship,banna,istrian,evaporator".split(","),
45548 female_names:"mary,patricia,linda,barbara,elizabeth,jennifer,maria,susan,margaret,dorothy,lisa,nancy,karen,betty,helen,sandra,donna,carol,ruth,sharon,michelle,laura,sarah,kimberly,deborah,jessica,shirley,cynthia,angela,melissa,brenda,amy,anna,rebecca,virginia,kathleen,pamela,martha,debra,amanda,stephanie,carolyn,christine,marie,janet,catherine,frances,ann,joyce,diane,alice,julie,heather,teresa,doris,gloria,evelyn,jean,cheryl,mildred,katherine,joan,ashley,judith,rose,janice,kelly,nicole,judy,christina,kathy,theresa,beverly,denise,tammy,irene,jane,lori,rachel,marilyn,andrea,kathryn,louise,sara,anne,jacqueline,wanda,bonnie,julia,ruby,lois,tina,phyllis,norma,paula,diana,annie,lillian,emily,robin,peggy,crystal,gladys,rita,dawn,connie,florence,tracy,edna,tiffany,carmen,rosa,cindy,grace,wendy,victoria,edith,kim,sherry,sylvia,josephine,thelma,shannon,sheila,ethel,ellen,elaine,marjorie,carrie,charlotte,monica,esther,pauline,emma,juanita,anita,rhonda,hazel,amber,eva,debbie,april,leslie,clara,lucille,jamie,joanne,eleanor,valerie,danielle,megan,alicia,suzanne,michele,gail,bertha,darlene,veronica,jill,erin,geraldine,lauren,cathy,joann,lorraine,lynn,sally,regina,erica,beatrice,dolores,bernice,audrey,yvonne,annette,marion,dana,stacy,ana,renee,ida,vivian,roberta,holly,brittany,melanie,loretta,yolanda,jeanette,laurie,katie,kristen,vanessa,alma,sue,elsie,beth,jeanne,vicki,carla,tara,rosemary,eileen,terri,gertrude,lucy,tonya,ella,stacey,wilma,gina,kristin,jessie,natalie,agnes,vera,charlene,bessie,delores,melinda,pearl,arlene,maureen,colleen,allison,tamara,joy,georgia,constance,lillie,claudia,jackie,marcia,tanya,nellie,minnie,marlene,heidi,glenda,lydia,viola,courtney,marian,stella,caroline,dora,vickie,mattie,maxine,irma,mabel,marsha,myrtle,lena,christy,deanna,patsy,hilda,gwendolyn,jennie,nora,margie,nina,cassandra,leah,penny,kay,priscilla,naomi,carole,olga,billie,dianne,tracey,leona,jenny,felicia,sonia,miriam,velma,becky,bobbie,violet,kristina,toni,misty,mae,shelly,daisy,ramona,sherri,erika,katrina,claire,lindsey,lindsay,geneva,guadalupe,belinda,margarita,sheryl,cora,faye,ada,sabrina,isabel,marguerite,hattie,harriet,molly,cecilia,kristi,brandi,blanche,sandy,rosie,joanna,iris,eunice,angie,inez,lynda,madeline,amelia,alberta,genevieve,monique,jodi,janie,kayla,sonya,jan,kristine,candace,fannie,maryann,opal,alison,yvette,melody,luz,susie,olivia,flora,shelley,kristy,mamie,lula,lola,verna,beulah,antoinette,candice,juana,jeannette,pam,kelli,whitney,bridget,karla,celia,latoya,patty,shelia,gayle,della,vicky,lynne,sheri,marianne,kara,jacquelyn,erma,blanca,myra,leticia,pat,krista,roxanne,angelica,robyn,adrienne,rosalie,alexandra,brooke,bethany,sadie,bernadette,traci,jody,kendra,nichole,rachael,mable,ernestine,muriel,marcella,elena,krystal,angelina,nadine,kari,estelle,dianna,paulette,lora,mona,doreen,rosemarie,desiree,antonia,janis,betsy,christie,freda,meredith,lynette,teri,cristina,eula,leigh,meghan,sophia,eloise,rochelle,gretchen,cecelia,raquel,henrietta,alyssa,jana,gwen,jenna,tricia,laverne,olive,tasha,silvia,elvira,delia,kate,patti,lorena,kellie,sonja,lila,lana,darla,mindy,essie,mandy,lorene,elsa,josefina,jeannie,miranda,dixie,lucia,marta,faith,lela,johanna,shari,camille,tami,shawna,elisa,ebony,melba,ora,nettie,tabitha,ollie,winifred,kristie,alisha,aimee,rena,myrna,marla,tammie,latasha,bonita,patrice,ronda,sherrie,addie,francine,deloris,stacie,adriana,cheri,abigail,celeste,jewel,cara,adele,rebekah,lucinda,dorthy,effie,trina,reba,sallie,aurora,lenora,etta,lottie,kerri,trisha,nikki,estella,francisca,josie,tracie,marissa,karin,brittney,janelle,lourdes,laurel,helene,fern,elva,corinne,kelsey,ina,bettie,elisabeth,aida,caitlin,ingrid,iva,eugenia,christa,goldie,maude,jenifer,therese,dena,lorna,janette,latonya,candy,consuelo,tamika,rosetta,debora,cherie,polly,dina,jewell,fay,jillian,dorothea,nell,trudy,esperanza,patrica,kimberley,shanna,helena,cleo,stefanie,rosario,ola,janine,mollie,lupe,alisa,lou,maribel,susanne,bette,susana,elise,cecile,isabelle,lesley,jocelyn,paige,joni,rachelle,leola,daphne,alta,ester,petra,graciela,imogene,jolene,keisha,lacey,glenna,gabriela,keri,ursula,lizzie,kirsten,shana,adeline,mayra,jayne,jaclyn,gracie,sondra,carmela,marisa,rosalind,charity,tonia,beatriz,marisol,clarice,jeanine,sheena,angeline,frieda,lily,shauna,millie,claudette,cathleen,angelia,gabrielle,autumn,katharine,jodie,staci,lea,christi,justine,elma,luella,margret,dominique,socorro,martina,margo,mavis,callie,bobbi,maritza,lucile,leanne,jeannine,deana,aileen,lorie,ladonna,willa,manuela,gale,selma,dolly,sybil,abby,ivy,dee,winnie,marcy,luisa,jeri,magdalena,ofelia,meagan,audra,matilda,leila,cornelia,bianca,simone,bettye,randi,virgie,latisha,barbra,georgina,eliza,leann,bridgette,rhoda,haley,adela,nola,bernadine,flossie,ila,greta,ruthie,nelda,minerva,lilly,terrie,letha,hilary,estela,valarie,brianna,rosalyn,earline,catalina,ava,mia,clarissa,lidia,corrine,alexandria,concepcion,tia,sharron,rae,dona,ericka,jami,elnora,chandra,lenore,neva,marylou,melisa,tabatha,serena,avis,allie,sofia,jeanie,odessa,nannie,harriett,loraine,penelope,milagros,emilia,benita,allyson,ashlee,tania,esmeralda,eve,pearlie,zelma,malinda,noreen,tameka,saundra,hillary,amie,althea,rosalinda,lilia,alana,clare,alejandra,elinor,lorrie,jerri,darcy,earnestine,carmella,noemi,marcie,liza,annabelle,louisa,earlene,mallory,carlene,nita,selena,tanisha,katy,julianne,lakisha,edwina,maricela,margery,kenya,dollie,roxie,roslyn,kathrine,nanette,charmaine,lavonne,ilene,tammi,suzette,corine,kaye,chrystal,lina,deanne,lilian,juliana,aline,luann,kasey,maryanne,evangeline,colette,melva,lawanda,yesenia,nadia,madge,kathie,ophelia,valeria,nona,mitzi,mari,georgette,claudine,fran,alissa,roseann,lakeisha,susanna,reva,deidre,chasity,sheree,elvia,alyce,deirdre,gena,briana,araceli,katelyn,rosanne,wendi,tessa,berta,marva,imelda,marietta,marci,leonor,arline,sasha,madelyn,janna,juliette,deena,aurelia,josefa,augusta,liliana,lessie,amalia,savannah,anastasia,vilma,natalia,rosella,lynnette,corina,alfreda,leanna,amparo,coleen,tamra,aisha,wilda,karyn,maura,mai,evangelina,rosanna,hallie,erna,enid,mariana,lacy,juliet,jacklyn,freida,madeleine,mara,cathryn,lelia,casandra,bridgett,angelita,jannie,dionne,annmarie,katina,beryl,millicent,katheryn,diann,carissa,maryellen,liz,lauri,helga,gilda,rhea,marquita,hollie,tisha,tamera,angelique,francesca,kaitlin,lolita,florine,rowena,reyna,twila,fanny,janell,ines,concetta,bertie,alba,brigitte,alyson,vonda,pansy,elba,noelle,letitia,deann,brandie,louella,leta,felecia,sharlene,lesa,beverley,isabella,herminia,terra,celina,tori,octavia,jade,denice,germaine,michell,cortney,nelly,doretha,deidra,monika,lashonda,judi,chelsey,antionette,margot,adelaide,leeann,elisha,dessie,libby,kathi,gayla,latanya,mina,mellisa,kimberlee,jasmin,renae,zelda,elda,justina,gussie,emilie,camilla,abbie,rocio,kaitlyn,edythe,ashleigh,selina,lakesha,geri,allene,pamala,michaela,dayna,caryn,rosalia,jacquline,rebeca,marybeth,krystle,iola,dottie,belle,griselda,ernestina,elida,adrianne,demetria,delma,jaqueline,arleen,virgina,retha,fatima,tillie,eleanore,cari,treva,wilhelmina,rosalee,maurine,latrice,jena,taryn,elia,debby,maudie,jeanna,delilah,catrina,shonda,hortencia,theodora,teresita,robbin,danette,delphine,brianne,nilda,danna,cindi,bess,iona,winona,vida,rosita,marianna,racheal,guillermina,eloisa,celestine,caren,malissa,lona,chantel,shellie,marisela,leora,agatha,soledad,migdalia,ivette,christen,athena,janel,veda,pattie,tessie,tera,marilynn,lucretia,karrie,dinah,daniela,alecia,adelina,vernice,shiela,portia,merry,lashawn,dara,tawana,verda,alene,zella,sandi,rafaela,maya,kira,candida,alvina,suzan,shayla,lettie,samatha,oralia,matilde,larissa,vesta,renita,delois,shanda,phillis,lorri,erlinda,cathrine,barb,isabell,ione,gisela,roxanna,mayme,kisha,ellie,mellissa,dorris,dalia,bella,annetta,zoila,reta,reina,lauretta,kylie,christal,pilar,charla,elissa,tiffani,tana,paulina,leota,breanna,jayme,carmel,vernell,tomasa,mandi,dominga,santa,melodie,lura,alexa,tamela,mirna,kerrie,venus,felicita,cristy,carmelita,berniece,annemarie,tiara,roseanne,missy,cori,roxana,pricilla,kristal,jung,elyse,haydee,aletha,bettina,marge,gillian,filomena,zenaida,harriette,caridad,vada,aretha,pearline,marjory,marcela,flor,evette,elouise,alina,damaris,catharine,belva,nakia,marlena,luanne,lorine,karon,dorene,danita,brenna,tatiana,louann,julianna,andria,philomena,lucila,leonora,dovie,romona,mimi,jacquelin,gaye,tonja,misti,chastity,stacia,roxann,micaela,velda,marlys,johnna,aura,ivonne,hayley,nicki,majorie,herlinda,yadira,perla,gregoria,antonette,shelli,mozelle,mariah,joelle,cordelia,josette,chiquita,trista,laquita,georgiana,candi,shanon,hildegard,stephany,magda,karol,gabriella,tiana,roma,richelle,oleta,jacque,idella,alaina,suzanna,jovita,tosha,nereida,marlyn,kyla,delfina,tena,stephenie,sabina,nathalie,marcelle,gertie,darleen,thea,sharonda,shantel,belen,venessa,rosalina,genoveva,clementine,rosalba,renate,renata,georgianna,floy,dorcas,ariana,tyra,theda,mariam,juli,jesica,vikki,verla,roselyn,melvina,jannette,ginny,debrah,corrie,violeta,myrtis,latricia,collette,charleen,anissa,viviana,twyla,nedra,latonia,hellen,fabiola,annamarie,adell,sharyn,chantal,niki,maud,lizette,lindy,kesha,jeana,danelle,charline,chanel,valorie,dortha,cristal,sunny,leone,leilani,gerri,debi,andra,keshia,eulalia,easter,dulce,natividad,linnie,kami,georgie,catina,brook,alda,winnifred,sharla,ruthann,meaghan,magdalene,lissette,adelaida,venita,trena,shirlene,shameka,elizebeth,dian,shanta,latosha,carlotta,windy,rosina,mariann,leisa,jonnie,dawna,cathie,astrid,laureen,janeen,holli,fawn,vickey,teressa,shante,rubye,marcelina,chanda,terese,scarlett,marnie,lulu,lisette,jeniffer,elenor,dorinda,donita,carman,bernita,altagracia,aleta,adrianna,zoraida,lyndsey,janina,starla,phylis,phuong,kyra,charisse,blanch,sanjuanita,rona,nanci,marilee,maranda,brigette,sanjuana,marita,kassandra,joycelyn,felipa,chelsie,bonny,mireya,lorenza,kyong,ileana,candelaria,sherie,lucie,leatrice,lakeshia,gerda,edie,bambi,marylin,lavon,hortense,garnet,evie,tressa,shayna,lavina,kyung,jeanetta,sherrill,shara,phyliss,mittie,anabel,alesia,thuy,tawanda,joanie,tiffanie,lashanda,karissa,enriqueta,daria,daniella,corinna,alanna,abbey,roxane,roseanna,magnolia,lida,joellen,coral,carleen,tresa,peggie,novella,nila,maybelle,jenelle,carina,nova,melina,marquerite,margarette,josephina,evonne,cinthia,albina,toya,tawnya,sherita,myriam,lizabeth,lise,keely,jenni,giselle,cheryle,ardith,ardis,alesha,adriane,shaina,linnea,karolyn,felisha,dori,darci,artie,armida,zola,xiomara,vergie,shamika,nena,nannette,maxie,lovie,jeane,jaimie,inge,farrah,elaina,caitlyn,felicitas,cherly,caryl,yolonda,yasmin,teena,prudence,pennie,nydia,mackenzie,orpha,marvel,lizbeth,laurette,jerrie,hermelinda,carolee,tierra,mirian,meta,melony,kori,jennette,jamila,yoshiko,susannah,salina,rhiannon,joleen,cristine,ashton,aracely,tomeka,shalonda,marti,lacie,kala,jada,ilse,hailey,brittani,zona,syble,sherryl,nidia,marlo,kandice,kandi,alycia,ronna,norene,mercy,ingeborg,giovanna,gemma,christel,audry,zora,vita,trish,stephaine,shirlee,shanika,melonie,mazie,jazmin,inga,hettie,geralyn,fonda,estrella,adella,sarita,rina,milissa,maribeth,golda,evon,ethelyn,enedina,cherise,chana,velva,tawanna,sade,mirta,karie,jacinta,elna,davina,cierra,ashlie,albertha,tanesha,nelle,mindi,lorinda,larue,florene,demetra,dedra,ciara,chantelle,ashly,suzy,rosalva,noelia,lyda,leatha,krystyna,kristan,karri,darline,darcie,cinda,cherrie,awilda,almeda,rolanda,lanette,jerilyn,gisele,evalyn,cyndi,cleta,carin,zina,zena,velia,tanika,charissa,talia,margarete,lavonda,kaylee,kathlene,jonna,irena,ilona,idalia,candis,candance,brandee,anitra,alida,sigrid,nicolette,maryjo,linette,hedwig,christiana,alexia,tressie,modesta,lupita,lita,gladis,evelia,davida,cherri,cecily,ashely,annabel,agustina,wanita,shirly,rosaura,hulda,yetta,verona,thomasina,sibyl,shannan,mechelle,leandra,lani,kylee,kandy,jolynn,ferne,eboni,corene,alysia,zula,nada,moira,lyndsay,lorretta,jammie,hortensia,gaynell,adria,vina,vicenta,tangela,stephine,norine,nella,liana,leslee,kimberely,iliana,glory,felica,emogene,elfriede,eden,eartha,carma,ocie,lennie,kiara,jacalyn,carlota,arielle,otilia,kirstin,kacey,johnetta,joetta,jeraldine,jaunita,elana,dorthea,cami,amada,adelia,vernita,tamar,siobhan,renea,rashida,ouida,nilsa,meryl,kristyn,julieta,danica,breanne,aurea,anglea,sherron,odette,malia,lorelei,leesa,kenna,kathlyn,fiona,charlette,suzie,shantell,sabra,racquel,myong,mira,martine,lucienne,lavada,juliann,elvera,delphia,christiane,charolette,carri,asha,angella,paola,ninfa,leda,stefani,shanell,palma,machelle,lissa,kecia,kathryne,karlene,julissa,jettie,jenniffer,corrina,carolann,alena,rosaria,myrtice,marylee,liane,kenyatta,judie,janey,elmira,eldora,denna,cristi,cathi,zaida,vonnie,viva,vernie,rosaline,mariela,luciana,lesli,karan,felice,deneen,adina,wynona,tarsha,sheron,shanita,shani,shandra,randa,pinkie,nelida,marilou,lyla,laurene,laci,janene,dorotha,daniele,dani,carolynn,carlyn,berenice,ayesha,anneliese,alethea,thersa,tamiko,rufina,oliva,mozell,marylyn,kristian,kathyrn,kasandra,kandace,janae,domenica,debbra,dannielle,chun,arcelia,zenobia,sharen,sharee,lavinia,kacie,jackeline,huong,felisa,emelia,eleanora,cythia,cristin,claribel,anastacia,zulma,zandra,yoko,tenisha,susann,sherilyn,shay,shawanda,romana,mathilda,linsey,keiko,joana,isela,gretta,georgetta,eugenie,desirae,delora,corazon,antonina,anika,willene,tracee,tamatha,nichelle,mickie,maegan,luana,lanita,kelsie,edelmira,bree,afton,teodora,tamie,shena,linh,keli,kaci,danyelle,arlette,albertine,adelle,tiffiny,simona,nicolasa,nichol,nakisha,maira,loreen,kizzy,fallon,christene,bobbye,ying,vincenza,tanja,rubie,roni,queenie,margarett,kimberli,irmgard,idell,hilma,evelina,esta,emilee,dennise,dania,carie,risa,rikki,particia,masako,luvenia,loree,loni,lien,gigi,florencia,denita,billye,tomika,sharita,rana,nikole,neoma,margarite,madalyn,lucina,laila,kali,jenette,gabriele,evelyne,elenora,clementina,alejandrina,zulema,violette,vannessa,thresa,retta,patience,noella,nickie,jonell,chaya,camelia,bethel,anya,suzann,mila,lilla,laverna,keesha,kattie,georgene,eveline,estell,elizbeth,vivienne,vallie,trudie,stephane,magaly,madie,kenyetta,karren,janetta,hermine,drucilla,debbi,celestina,candie,britni,beckie,amina,zita,yolande,vivien,vernetta,trudi,pearle,patrina,ossie,nicolle,loyce,letty,katharina,joselyn,jonelle,jenell,iesha,heide,florinda,florentina,elodia,dorine,brunilda,brigid,ashli,ardella,twana,tarah,shavon,serina,rayna,ramonita,margurite,lucrecia,kourtney,kati,jesenia,crista,ayana,alica,alia,vinnie,suellen,romelia,rachell,olympia,michiko,kathaleen,jolie,jessi,janessa,hana,elease,carletta,britany,shona,salome,rosamond,regena,raina,ngoc,nelia,louvenia,lesia,latrina,laticia,larhonda,jina,jacki,emmy,deeann,coretta,arnetta,thalia,shanice,neta,mikki,micki,lonna,leana,lashunda,kiley,joye,jacqulyn,ignacia,hyun,hiroko,henriette,elayne,delinda,dahlia,coreen,consuela,conchita,babette,ayanna,anette,albertina,shawnee,shaneka,quiana,pamelia,merri,merlene,margit,kiesha,kiera,kaylene,jodee,jenise,erlene,emmie,dalila,daisey,casie,belia,babara,versie,vanesa,shelba,shawnda,nikia,naoma,marna,margeret,madaline,lawana,kindra,jutta,jazmine,janett,hannelore,glendora,gertrud,garnett,freeda,frederica,florance,flavia,carline,beverlee,anjanette,valda,tamala,shonna,sarina,oneida,merilyn,marleen,lurline,lenna,katherin,jeni,gracia,glady,farah,enola,dominque,devona,delana,cecila,caprice,alysha,alethia,vena,theresia,tawny,shakira,samara,sachiko,rachele,pamella,marni,mariel,maren,malisa,ligia,lera,latoria,larae,kimber,kathern,karey,jennefer,janeth,halina,fredia,delisa,debroah,ciera,angelika,andree,altha,vivan,terresa,tanna,sudie,signe,salena,ronni,rebbecca,myrtie,malika,maida,leonarda,kayleigh,ethyl,ellyn,dayle,cammie,brittni,birgit,avelina,asuncion,arianna,akiko,venice,tyesha,tonie,tiesha,takisha,steffanie,sindy,meghann,manda,macie,kellye,kellee,joslyn,inger,indira,glinda,glennis,fernanda,faustina,eneida,elicia,digna,dell,arletta,willia,tammara,tabetha,sherrell,sari,rebbeca,pauletta,natosha,nakita,mammie,kenisha,kazuko,kassie,earlean,daphine,corliss,clotilde,carolyne,bernetta,augustina,audrea,annis,annabell,tennille,tamica,selene,rosana,regenia,qiana,markita,macy,leeanne,laurine,jessenia,janita,georgine,genie,emiko,elvie,deandra,dagmar,corie,collen,cherish,romaine,porsha,pearlene,micheline,merna,margorie,margaretta,lore,jenine,hermina,fredericka,elke,drusilla,dorathy,dione,celena,brigida,allegra,tamekia,synthia,sook,slyvia,rosann,reatha,raye,marquetta,margart,ling,layla,kymberly,kiana,kayleen,katlyn,karmen,joella,emelda,eleni,detra,clemmie,cheryll,chantell,cathey,arnita,arla,angle,angelic,alyse,zofia,thomasine,tennie,sherly,sherley,sharyl,remedios,petrina,nickole,myung,myrle,mozella,louanne,lisha,latia,krysta,julienne,jeanene,jacqualine,isaura,gwenda,earleen,cleopatra,carlie,audie,antonietta,alise,verdell,tomoko,thao,talisha,shemika,savanna,santina,rosia,raeann,odilia,nana,minna,magan,lynelle,karma,joeann,ivana,inell,ilana,gudrun,dreama,crissy,chante,carmelina,arvilla,annamae,alvera,aleida,yanira,vanda,tianna,stefania,shira,nicol,nancie,monserrate,melynda,melany,lovella,laure,kacy,jacquelynn,hyon,gertha,eliana,christena,christeen,charise,caterina,carley,candyce,arlena,ammie,willette,vanita,tuyet,syreeta,penney,nyla,maryam,marya,magen,ludie,loma,livia,lanell,kimberlie,julee,donetta,diedra,denisha,deane,dawne,clarine,cherryl,bronwyn,alla,valery,tonda,sueann,soraya,shoshana,shela,sharleen,shanelle,nerissa,meridith,mellie,maye,maple,magaret,lili,leonila,leonie,leeanna,lavonia,lavera,kristel,kathey,kathe,jann,ilda,hildred,hildegarde,genia,fumiko,evelin,ermelinda,elly,dung,doloris,dionna,danae,berneice,annice,alix,verena,verdie,shawnna,shawana,shaunna,rozella,randee,ranae,milagro,lynell,luise,loida,lisbeth,karleen,junita,jona,isis,hyacinth,hedy,gwenn,ethelene,erline,donya,domonique,delicia,dannette,cicely,branda,blythe,bethann,ashlyn,annalee,alline,yuko,vella,trang,towanda,tesha,sherlyn,narcisa,miguelina,meri,maybell,marlana,marguerita,madlyn,lory,loriann,leonore,leighann,laurice,latesha,laronda,katrice,kasie,kaley,jadwiga,glennie,gearldine,francina,epifania,dyan,dorie,diedre,denese,demetrice,delena,cristie,cleora,catarina,carisa,barbera,almeta,trula,tereasa,solange,sheilah,shavonne,sanora,rochell,mathilde,margareta,maia,lynsey,lawanna,launa,kena,keena,katia,glynda,gaylene,elvina,elanor,danuta,danika,cristen,cordie,coletta,clarita,carmon,brynn,azucena,aundrea,angele,verlie,verlene,tamesha,silvana,sebrina,samira,reda,raylene,penni,norah,noma,mireille,melissia,maryalice,laraine,kimbery,karyl,karine,jolanda,johana,jesusa,jaleesa,jacquelyne,iluminada,hilaria,hanh,gennie,francie,floretta,exie,edda,drema,delpha,barbar,assunta,ardell,annalisa,alisia,yukiko,yolando,wonda,waltraud,veta,temeka,tameika,shirleen,shenita,piedad,ozella,mirtha,marilu,kimiko,juliane,jenice,janay,jacquiline,hilde,elois,echo,devorah,chau,brinda,betsey,arminda,aracelis,apryl,annett,alishia,veola,usha,toshiko,theola,tashia,talitha,shery,renetta,reiko,rasheeda,obdulia,mika,melaine,meggan,marlen,marget,marceline,mana,magdalen,librada,lezlie,latashia,lasandra,kelle,isidra,inocencia,gwyn,francoise,erminia,erinn,dimple,devora,criselda,armanda,arie,ariane,angelena,aliza,adriene,adaline,xochitl,twanna,tomiko,tamisha,taisha,susy,rutha,rhona,noriko,natashia,merrie,marinda,mariko,margert,loris,lizzette,leisha,kaila,joannie,jerrica,jene,jannet,janee,jacinda,herta,elenore,doretta,delaine,daniell,claudie,britta,apolonia,amberly,alease,yuri,waneta,tomi,sharri,sandie,roselle,reynalda,raguel,phylicia,patria,olimpia,odelia,mitzie,minda,mignon,mica,mendy,marivel,maile,lynetta,lavette,lauryn,latrisha,lakiesha,kiersten,kary,josphine,jolyn,jetta,janise,jacquie,ivelisse,glynis,gianna,gaynelle,danyell,danille,dacia,coralee,cher,ceola,arianne,aleshia,yung,williemae,trinh,thora,sherika,shemeka,shaunda,roseline,ricki,melda,mallie,lavonna,latina,laquanda,lala,lachelle,klara,kandis,johna,jeanmarie,jaye,grayce,gertude,emerita,ebonie,clorinda,ching,chery,carola,breann,blossom,bernardine,becki,arletha,argelia,alita,yulanda,yessenia,tobi,tasia,sylvie,shirl,shirely,shella,shantelle,sacha,rebecka,providencia,paulene,misha,miki,marline,marica,lorita,latoyia,lasonya,kerstin,kenda,keitha,kathrin,jaymie,gricelda,ginette,eryn,elina,elfrieda,danyel,cheree,chanelle,barrie,aurore,annamaria,alleen,ailene,aide,yasmine,vashti,treasa,tiffaney,sheryll,sharie,shanae,raisa,neda,mitsuko,mirella,milda,maryanna,maragret,mabelle,luetta,lorina,letisha,latarsha,lanelle,lajuana,krissy,karly,karena,jessika,jerica,jeanelle,jalisa,jacelyn,izola,euna,etha,domitila,dominica,daina,creola,carli,camie,brittny,ashanti,anisha,aleen,adah,yasuko,valrie,tona,tinisha,terisa,taneka,simonne,shalanda,serita,ressie,refugia,olene,margherita,mandie,maire,lyndia,luci,lorriane,loreta,leonia,lavona,lashawnda,lakia,kyoko,krystina,krysten,kenia,kelsi,jeanice,isobel,georgiann,genny,felicidad,eilene,deloise,deedee,conception,clora,cherilyn,calandra,armandina,anisa,tiera,theressa,stephania,sima,shyla,shonta,shera,shaquita,shala,rossana,nohemi,nery,moriah,melita,melida,melani,marylynn,marisha,mariette,malorie,madelene,ludivina,loria,lorette,loralee,lianne,lavenia,laurinda,lashon,kimi,keila,katelynn,jone,joane,jayna,janella,hertha,francene,elinore,despina,delsie,deedra,clemencia,carolin,bulah,brittanie,blondell,bibi,beaulah,beata,annita,agripina,virgen,valene,twanda,tommye,tarra,tari,tammera,shakia,sadye,ruthanne,rochel,rivka,pura,nenita,natisha,ming,merrilee,melodee,marvis,lucilla,leena,laveta,larita,lanie,keren,ileen,georgeann,genna,frida,eufemia,emely,edyth,deonna,deadra,darlena,chanell,cathern,cassondra,cassaundra,bernarda,berna,arlinda,anamaria,vertie,valeri,torri,stasia,sherise,sherill,sanda,ruthe,rosy,robbi,ranee,quyen,pearly,palmira,onita,nisha,niesha,nida,merlyn,mayola,marylouise,marth,margene,madelaine,londa,leontine,leoma,leia,lauralee,lanora,lakita,kiyoko,keturah,katelin,kareen,jonie,johnette,jenee,jeanett,izetta,hiedi,heike,hassie,giuseppina,georgann,fidela,fernande,elwanda,ellamae,eliz,dusti,dotty,cyndy,coralie,celesta,alverta,xenia,wava,vanetta,torrie,tashina,tandy,tambra,tama,stepanie,shila,shaunta,sharan,shaniqua,shae,setsuko,serafina,sandee,rosamaria,priscila,olinda,nadene,muoi,michelina,mercedez,maryrose,marcene,magali,mafalda,lannie,kayce,karoline,kamilah,kamala,justa,joline,jennine,jacquetta,iraida,georgeanna,franchesca,emeline,elane,ehtel,earlie,dulcie,dalene,classie,chere,charis,caroyln,carmina,carita,bethanie,ayako,arica,alysa,alessandra,akilah,adrien,zetta,youlanda,yelena,yahaira,xuan,wendolyn,tijuana,terina,teresia,suzi,sherell,shavonda,shaunte,sharda,shakita,sena,ryann,rubi,riva,reginia,rachal,parthenia,pamula,monnie,monet,michaele,melia,malka,maisha,lisandra,lekisha,lean,lakendra,krystin,kortney,kizzie,kittie,kera,kendal,kemberly,kanisha,julene,jule,johanne,jamee,halley,gidget,fredricka,fleta,fatimah,eusebia,elza,eleonore,dorthey,doria,donella,dinorah,delorse,claretha,christinia,charlyn,bong,belkis,azzie,andera,aiko,adena,yajaira,vania,ulrike,toshia,tifany,stefany,shizue,shenika,shawanna,sharolyn,sharilyn,shaquana,shantay,rozanne,roselee,remona,reanna,raelene,phung,petronila,natacha,nancey,myrl,miyoko,miesha,merideth,marvella,marquitta,marhta,marchelle,lizeth,libbie,lahoma,ladawn,kina,katheleen,katharyn,karisa,kaleigh,junie,julieann,johnsie,janean,jaimee,jackqueline,hisako,herma,helaine,gwyneth,gita,eustolia,emelina,elin,edris,donnette,donnetta,dierdre,denae,darcel,clarisa,cinderella,chia,charlesetta,charita,celsa,cassy,cassi,carlee,bruna,brittaney,brande,billi,antonetta,angla,angelyn,analisa,alane,wenona,wendie,veronique,vannesa,tobie,tempie,sumiko,sulema,somer,sheba,sharice,shanel,shalon,rosio,roselia,renay,rema,reena,ozie,oretha,oralee,ngan,nakesha,milly,marybelle,margrett,maragaret,manie,lurlene,lillia,lieselotte,lavelle,lashaunda,lakeesha,kaycee,kalyn,joya,joette,jenae,janiece,illa,grisel,glayds,genevie,gala,fredda,eleonor,debera,deandrea,corrinne,cordia,contessa,colene,cleotilde,chantay,cecille,beatris,azalee,arlean,ardath,anjelica,anja,alfredia,aleisha,zada,yuonne,xiao,willodean,vennie,vanna,tyisha,tova,torie,tonisha,tilda,tien,sirena,sherril,shanti,shan,senaida,samella,robbyn,renda,reita,phebe,paulita,nobuko,nguyet,neomi,mikaela,melania,maximina,marg,maisie,lynna,lilli,lashaun,lakenya,lael,kirstie,kathline,kasha,karlyn,karima,jovan,josefine,jennell,jacqui,jackelyn,hien,grazyna,florrie,floria,eleonora,dwana,dorla,delmy,deja,dede,dann,crysta,clelia,claris,chieko,cherlyn,cherelle,charmain,chara,cammy,arnette,ardelle,annika,amiee,amee,allena,yvone,yuki,yoshie,yevette,yael,willetta,voncile,venetta,tula,tonette,timika,temika,telma,teisha,taren,stacee,shawnta,saturnina,ricarda,pasty,onie,nubia,marielle,mariella,marianela,mardell,luanna,loise,lisabeth,lindsy,lilliana,lilliam,lelah,leigha,leanora,kristeen,khalilah,keeley,kandra,junko,joaquina,jerlene,jani,jamika,hsiu,hermila,genevive,evia,eugena,emmaline,elfreda,elene,donette,delcie,deeanna,darcey,clarinda,cira,chae,celinda,catheryn,casimira,carmelia,camellia,breana,bobette,bernardina,bebe,basilia,arlyne,amal,alayna,zonia,zenia,yuriko,yaeko,wynell,willena,vernia,tora,terrilyn,terica,tenesha,tawna,tajuana,taina,stephnie,sona,sina,shondra,shizuko,sherlene,sherice,sharika,rossie,rosena,rima,rheba,renna,natalya,nancee,melodi,meda,matha,marketta,maricruz,marcelene,malvina,luba,louetta,leida,lecia,lauran,lashawna,laine,khadijah,katerine,kasi,kallie,julietta,jesusita,jestine,jessia,jeffie,janyce,isadora,georgianne,fidelia,evita,eura,eulah,estefana,elsy,eladia,dodie,denisse,deloras,delila,daysi,crystle,concha,claretta,charlsie,charlena,carylon,bettyann,asley,ashlea,amira,agueda,agnus,yuette,vinita,victorina,tynisha,treena,toccara,tish,thomasena,tegan,soila,shenna,sharmaine,shantae,shandi,saran,sarai,sana,rosette,rolande,regine,otelia,olevia,nicholle,necole,naida,myrta,myesha,mitsue,minta,mertie,margy,mahalia,madalene,loura,lorean,lesha,leonida,lenita,lavone,lashell,lashandra,lamonica,kimbra,katherina,karry,kanesha,jong,jeneva,jaquelyn,gilma,ghislaine,gertrudis,fransisca,fermina,ettie,etsuko,ellan,elidia,edra,dorethea,doreatha,denyse,deetta,daine,cyrstal,corrin,cayla,carlita,camila,burma,bula,buena,barabara,avril,alaine,zana,wilhemina,wanetta,verline,vasiliki,tonita,tisa,teofila,tayna,taunya,tandra,takako,sunni,suanne,sixta,sharell,seema,rosenda,robena,raymonde,pamila,ozell,neida,mistie,micha,merissa,maurita,maryln,maryetta,marcell,malena,makeda,lovetta,lourie,lorrine,lorilee,laurena,lashay,larraine,laree,lacresha,kristle,keva,keira,karole,joie,jinny,jeannetta,jama,heidy,gilberte,gema,faviola,evelynn,enda,elli,ellena,divina,dagny,collene,codi,cindie,chassidy,chasidy,catrice,catherina,cassey,caroll,carlena,candra,calista,bryanna,britteny,beula,bari,audrie,audria,ardelia,annelle,angila,alona,allyn".split(","),surnames:"smith,johnson,williams,jones,brown,davis,miller,wilson,moore,taylor,anderson,jackson,white,harris,martin,thompson,garcia,martinez,robinson,clark,rodriguez,lewis,lee,walker,hall,allen,young,hernandez,king,wright,lopez,hill,green,adams,baker,gonzalez,nelson,carter,mitchell,perez,roberts,turner,phillips,campbell,parker,evans,edwards,collins,stewart,sanchez,morris,rogers,reed,cook,morgan,bell,murphy,bailey,rivera,cooper,richardson,cox,howard,ward,torres,peterson,gray,ramirez,watson,brooks,sanders,price,bennett,wood,barnes,ross,henderson,coleman,jenkins,perry,powell,long,patterson,hughes,flores,washington,butler,simmons,foster,gonzales,bryant,alexander,griffin,diaz,hayes,myers,ford,hamilton,graham,sullivan,wallace,woods,cole,west,owens,reynolds,fisher,ellis,harrison,gibson,mcdonald,cruz,marshall,ortiz,gomez,murray,freeman,wells,webb,simpson,stevens,tucker,porter,hicks,crawford,boyd,mason,morales,kennedy,warren,dixon,ramos,reyes,burns,gordon,shaw,holmes,rice,robertson,hunt,black,daniels,palmer,mills,nichols,grant,knight,ferguson,stone,hawkins,dunn,perkins,hudson,spencer,gardner,stephens,payne,pierce,berry,matthews,arnold,wagner,willis,watkins,olson,carroll,duncan,snyder,hart,cunningham,lane,andrews,ruiz,harper,fox,riley,armstrong,carpenter,weaver,greene,elliott,chavez,sims,peters,kelley,franklin,lawson,fields,gutierrez,schmidt,carr,vasquez,castillo,wheeler,chapman,montgomery,richards,williamson,johnston,banks,meyer,bishop,mccoy,howell,alvarez,morrison,hansen,fernandez,garza,harvey,burton,nguyen,jacobs,reid,fuller,lynch,garrett,romero,welch,larson,frazier,burke,hanson,mendoza,moreno,bowman,medina,fowler,brewer,hoffman,carlson,silva,pearson,holland,fleming,jensen,vargas,byrd,davidson,hopkins,herrera,wade,soto,walters,neal,caldwell,lowe,jennings,barnett,graves,jimenez,horton,shelton,barrett,obrien,castro,sutton,mckinney,lucas,miles,rodriquez,chambers,holt,lambert,fletcher,watts,bates,hale,rhodes,pena,beck,newman,haynes,mcdaniel,mendez,bush,vaughn,parks,dawson,santiago,norris,hardy,steele,curry,powers,schultz,barker,guzman,page,munoz,ball,keller,chandler,weber,walsh,lyons,ramsey,wolfe,schneider,mullins,benson,sharp,bowen,barber,cummings,hines,baldwin,griffith,valdez,hubbard,salazar,reeves,warner,stevenson,burgess,santos,tate,cross,garner,mann,mack,moss,thornton,mcgee,farmer,delgado,aguilar,vega,glover,manning,cohen,harmon,rodgers,robbins,newton,blair,higgins,ingram,reese,cannon,strickland,townsend,potter,goodwin,walton,rowe,hampton,ortega,patton,swanson,goodman,maldonado,yates,becker,erickson,hodges,rios,conner,adkins,webster,malone,hammond,flowers,cobb,moody,quinn,pope,osborne,mccarthy,guerrero,estrada,sandoval,gibbs,gross,fitzgerald,stokes,doyle,saunders,wise,colon,gill,alvarado,greer,padilla,waters,nunez,ballard,schwartz,mcbride,houston,christensen,klein,pratt,briggs,parsons,mclaughlin,zimmerman,buchanan,moran,copeland,pittman,brady,mccormick,holloway,brock,poole,logan,bass,marsh,drake,wong,jefferson,morton,abbott,sparks,norton,huff,massey,figueroa,carson,bowers,roberson,barton,tran,lamb,harrington,boone,cortez,clarke,mathis,singleton,wilkins,cain,underwood,hogan,mckenzie,collier,luna,phelps,mcguire,bridges,wilkerson,nash,summers,atkins,wilcox,pitts,conley,marquez,burnett,cochran,chase,davenport,hood,gates,ayala,sawyer,vazquez,dickerson,hodge,acosta,flynn,espinoza,nicholson,monroe,wolf,morrow,whitaker,oconnor,skinner,ware,molina,kirby,huffman,gilmore,dominguez,oneal,lang,combs,kramer,hancock,gallagher,gaines,shaffer,wiggins,mathews,mcclain,fischer,wall,melton,hensley,bond,dyer,grimes,contreras,wyatt,baxter,snow,mosley,shepherd,larsen,hoover,beasley,petersen,whitehead,meyers,garrison,shields,horn,savage,olsen,schroeder,hartman,woodard,mueller,kemp,deleon,booth,patel,calhoun,wiley,eaton,cline,navarro,harrell,humphrey,parrish,duran,hutchinson,hess,dorsey,bullock,robles,beard,dalton,avila,rich,blackwell,johns,blankenship,trevino,salinas,campos,pruitt,callahan,montoya,hardin,guerra,mcdowell,stafford,gallegos,henson,wilkinson,booker,merritt,atkinson,orr,decker,hobbs,tanner,knox,pacheco,stephenson,glass,rojas,serrano,marks,hickman,sweeney,strong,mcclure,conway,roth,maynard,farrell,lowery,hurst,nixon,weiss,trujillo,ellison,sloan,juarez,winters,mclean,boyer,villarreal,mccall,gentry,carrillo,ayers,lara,sexton,pace,hull,leblanc,browning,velasquez,leach,chang,sellers,herring,noble,foley,bartlett,mercado,landry,durham,walls,barr,mckee,bauer,rivers,bradshaw,pugh,velez,rush,estes,dodson,morse,sheppard,weeks,camacho,bean,barron,livingston,middleton,spears,branch,blevins,chen,kerr,mcconnell,hatfield,harding,solis,frost,giles,blackburn,pennington,woodward,finley,mcintosh,koch,mccullough,blanchard,rivas,brennan,mejia,kane,benton,buckley,valentine,maddox,russo,mcknight,buck,moon,mcmillan,crosby,berg,dotson,mays,roach,chan,richmond,meadows,faulkner,oneill,knapp,kline,ochoa,jacobson,gay,hendricks,horne,shepard,hebert,cardenas,mcintyre,waller,holman,donaldson,cantu,morin,gillespie,fuentes,tillman,bentley,peck,key,salas,rollins,gamble,dickson,santana,cabrera,cervantes,howe,hinton,hurley,spence,zamora,yang,mcneil,suarez,petty,gould,mcfarland,sampson,carver,bray,macdonald,stout,hester,melendez,dillon,farley,hopper,galloway,potts,joyner,stein,aguirre,osborn,mercer,bender,franco,rowland,sykes,pickett,sears,mayo,dunlap,hayden,wilder,mckay,coffey,mccarty,ewing,cooley,vaughan,bonner,cotton,holder,stark,ferrell,cantrell,fulton,lott,calderon,pollard,hooper,burch,mullen,fry,riddle,levy,duke,odonnell,britt,daugherty,berger,dillard,alston,frye,riggs,chaney,odom,duffy,fitzpatrick,valenzuela,mayer,alford,mcpherson,acevedo,barrera,cote,reilly,compton,mooney,mcgowan,craft,clemons,wynn,nielsen,baird,stanton,snider,rosales,bright,witt,hays,holden,rutledge,kinney,clements,castaneda,slater,hahn,burks,delaney,pate,lancaster,sharpe,whitfield,talley,macias,burris,ratliff,mccray,madden,kaufman,beach,goff,cash,bolton,mcfadden,levine,byers,kirkland,kidd,workman,carney,mcleod,holcomb,finch,sosa,haney,franks,sargent,nieves,downs,rasmussen,bird,hewitt,foreman,valencia,oneil,delacruz,vinson,dejesus,hyde,forbes,gilliam,guthrie,wooten,huber,barlow,boyle,mcmahon,buckner,rocha,puckett,langley,knowles,cooke,velazquez,whitley,vang,shea,rouse,hartley,mayfield,elder,rankin,hanna,cowan,lucero,arroyo,slaughter,haas,oconnell,minor,boucher,archer,boggs,dougherty,andersen,newell,crowe,wang,friedman,bland,swain,holley,pearce,childs,yarbrough,galvan,proctor,meeks,lozano,mora,rangel,bacon,villanueva,schaefer,rosado,helms,boyce,goss,stinson,ibarra,hutchins,covington,crowley,hatcher,mackey,bunch,womack,polk,dodd,childress,childers,villa,springer,mahoney,dailey,belcher,lockhart,griggs,costa,brandt,walden,moser,tatum,mccann,akers,lutz,pryor,orozco,mcallister,lugo,davies,shoemaker,rutherford,newsome,magee,chamberlain,blanton,simms,godfrey,flanagan,crum,cordova,escobar,downing,sinclair,donahue,krueger,mcginnis,gore,farris,webber,corbett,andrade,starr,lyon,yoder,hastings,mcgrath,spivey,krause,harden,crabtree,kirkpatrick,arrington,ritter,mcghee,bolden,maloney,gagnon,dunbar,ponce,pike,mayes,beatty,mobley,kimball,butts,montes,eldridge,braun,hamm,gibbons,moyer,manley,herron,plummer,elmore,cramer,rucker,pierson,fontenot,rubio,goldstein,elkins,wills,novak,hickey,worley,gorman,katz,dickinson,broussard,woodruff,crow,britton,nance,lehman,bingham,zuniga,whaley,shafer,coffman,steward,delarosa,neely,mata,davila,mccabe,kessler,hinkle,welsh,pagan,goldberg,goins,crouch,cuevas,quinones,mcdermott,hendrickson,samuels,denton,bergeron,ivey,locke,haines,snell,hoskins,byrne,arias,corbin,beltran,chappell,downey,dooley,tuttle,couch,payton,mcelroy,crockett,groves,cartwright,dickey,mcgill,dubois,muniz,tolbert,dempsey,cisneros,sewell,latham,vigil,tapia,rainey,norwood,stroud,meade,tipton,kuhn,hilliard,bonilla,teague,gunn,greenwood,correa,reece,pineda,phipps,frey,kaiser,ames,gunter,schmitt,milligan,espinosa,bowden,vickers,lowry,pritchard,costello,piper,mcclellan,lovell,sheehan,hatch,dobson,singh,jeffries,hollingsworth,sorensen,meza,fink,donnelly,burrell,tomlinson,colbert,billings,ritchie,helton,sutherland,peoples,mcqueen,thomason,givens,crocker,vogel,robison,dunham,coker,swartz,keys,ladner,richter,hargrove,edmonds,brantley,albright,murdock,boswell,muller,quintero,padgett,kenney,daly,connolly,inman,quintana,lund,barnard,villegas,simons,huggins,tidwell,sanderson,bullard,mcclendon,duarte,draper,marrero,dwyer,abrams,stover,goode,fraser,crews,bernal,godwin,conklin,mcneal,baca,esparza,crowder,bower,brewster,mcneill,rodrigues,leal,coates,raines,mccain,mccord,miner,holbrook,swift,dukes,carlisle,aldridge,ackerman,starks,ricks,holliday,ferris,hairston,sheffield,lange,fountain,doss,betts,kaplan,carmichael,bloom,ruffin,penn,kern,bowles,sizemore,larkin,dupree,seals,metcalf,hutchison,henley,farr,mccauley,hankins,gustafson,curran,waddell,ramey,cates,pollock,cummins,messer,heller,funk,cornett,palacios,galindo,cano,hathaway,pham,enriquez,salgado,pelletier,painter,wiseman,blount,feliciano,houser,doherty,mead,mcgraw,swan,capps,blanco,blackmon,thomson,mcmanus,burkett,gleason,dickens,cormier,voss,rushing,rosenberg,hurd,dumas,benitez,arellano,marin,caudill,bragg,jaramillo,huerta,gipson,colvin,biggs,vela,platt,cassidy,tompkins,mccollum,dolan,daley,crump,sneed,kilgore,grove,grimm,davison,brunson,prater,marcum,devine,dodge,stratton,rosas,choi,tripp,ledbetter,hightower,feldman,epps,yeager,posey,scruggs,cope,stubbs,richey,overton,trotter,sprague,cordero,butcher,stiles,burgos,woodson,horner,bassett,purcell,haskins,akins,ziegler,spaulding,hadley,grubbs,sumner,murillo,zavala,shook,lockwood,driscoll,dahl,thorpe,redmond,putnam,mcwilliams,mcrae,romano,joiner,sadler,hedrick,hager,hagen,fitch,coulter,thacker,mansfield,langston,guidry,ferreira,corley,conn,rossi,lackey,baez,saenz,mcnamara,mcmullen,mckenna,mcdonough,link,engel,browne,roper,peacock,eubanks,drummond,stringer,pritchett,parham,mims,landers,grayson,schafer,egan,timmons,ohara,keen,hamlin,finn,cortes,mcnair,nadeau,moseley,michaud,rosen,oakes,kurtz,jeffers,calloway,beal,bautista,winn,suggs,stern,stapleton,lyles,laird,montano,dawkins,hagan,goldman,bryson,barajas,lovett,segura,metz,lockett,langford,hinson,eastman,hooks,smallwood,shapiro,crowell,whalen,triplett,chatman,aldrich,cahill,youngblood,ybarra,stallings,sheets,reeder,connelly,bateman,abernathy,winkler,wilkes,masters,hackett,granger,gillis,schmitz,sapp,napier,souza,lanier,gomes,weir,otero,ledford,burroughs,babcock,ventura,siegel,dugan,bledsoe,atwood,wray,varner,spangler,anaya,staley,kraft,fournier,belanger,wolff,thorne,bynum,burnette,boykin,swenson,purvis,pina,khan,duvall,darby,xiong,kauffman,healy,engle,benoit,valle,steiner,spicer,shaver,randle,lundy,chin,calvert,staton,neff,kearney,darden,oakley,medeiros,mccracken,crenshaw,perdue,dill,whittaker,tobin,washburn,hogue,goodrich,easley,bravo,dennison,shipley,kerns,jorgensen,crain,villalobos,maurer,longoria,keene,coon,witherspoon,staples,pettit,kincaid,eason,madrid,echols,lusk,stahl,currie,thayer,shultz,mcnally,seay,maher,gagne,barrow,nava,moreland,honeycutt,hearn,diggs,caron,whitten,westbrook,stovall,ragland,munson,meier,looney,kimble,jolly,hobson,goddard,culver,burr,presley,negron,connell,tovar,huddleston,ashby,salter,root,pendleton,oleary,nickerson,myrick,judd,jacobsen,bain,adair,starnes,matos,busby,herndon,hanley,bellamy,doty,bartley,yazzie,rowell,parson,gifford,cullen,christiansen,benavides,barnhart,talbot,mock,crandall,connors,bonds,whitt,gage,bergman,arredondo,addison,lujan,dowdy,jernigan,huynh,bouchard,dutton,rhoades,ouellette,kiser,herrington,hare,blackman,babb,allred,rudd,paulson,ogden,koenig,geiger,begay,parra,lassiter,hawk,esposito,waldron,ransom,prather,chacon,vick,sands,roark,parr,mayberry,greenberg,coley,bruner,whitman,skaggs,shipman,leary,hutton,romo,medrano,ladd,kruse,askew,schulz,alfaro,tabor,mohr,gallo,bermudez,pereira,bliss,reaves,flint,comer,woodall,naquin,guevara,delong,carrier,pickens,tilley,schaffer,knutson,fenton,doran,vogt,vann,prescott,mclain,landis,corcoran,zapata,hyatt,hemphill,faulk,dove,boudreaux,aragon,whitlock,trejo,tackett,shearer,saldana,hanks,mckinnon,koehler,bourgeois,keyes,goodson,foote,lunsford,goldsmith,flood,winslow,sams,reagan,mccloud,hough,esquivel,naylor,loomis,coronado,ludwig,braswell,bearden,huang,fagan,ezell,edmondson,cronin,nunn,lemon,guillory,grier,dubose,traylor,ryder,dobbins,coyle,aponte,whitmore,smalls,rowan,malloy,cardona,braxton,borden,humphries,carrasco,ruff,metzger,huntley,hinojosa,finney,madsen,ernst,dozier,burkhart,bowser,peralta,daigle,whittington,sorenson,saucedo,roche,redding,fugate,avalos,waite,lind,huston,hawthorne,hamby,boyles,boles,regan,faust,crook,beam,barger,hinds,gallardo,willoughby,willingham,eckert,busch,zepeda,worthington,tinsley,hoff,hawley,carmona,varela,rector,newcomb,kinsey,dube,whatley,ragsdale,bernstein,becerra,yost,mattson,felder,cheek,handy,grossman,gauthier,escobedo,braden,beckman,mott,hillman,flaherty,dykes,stockton,stearns,lofton,coats,cavazos,beavers,barrios,tang,mosher,cardwell,coles,burnham,weller,lemons,beebe,aguilera,parnell,harman,couture,alley,schumacher,redd,dobbs,blum,blalock,merchant,ennis,denson,cottrell,brannon,bagley,aviles,watt,sousa,rosenthal,rooney,dietz,blank,paquette,mcclelland,duff,velasco,lentz,grubb,burrows,barbour,ulrich,shockley,rader,beyer,mixon,layton,altman,weathers,stoner,squires,shipp,priest,lipscomb,cutler,caballero,zimmer,willett,thurston,storey,medley,epperson,shah,mcmillian,baggett,torrez,hirsch,dent,poirier,peachey,farrar,creech,barth,trimble,dupre,albrecht,sample,lawler,crisp,conroy,wetzel,nesbitt,murry,jameson,wilhelm,patten,minton,matson,kimbrough,guinn,croft,toth,pulliam,nugent,newby,littlejohn,dias,canales,bernier,baron,singletary,renteria,pruett,mchugh,mabry,landrum,brower,stoddard,cagle,stjohn,scales,kohler,kellogg,hopson,gant,tharp,gann,zeigler,pringle,hammons,fairchild,deaton,chavis,carnes,rowley,matlock,kearns,irizarry,carrington,starkey,lopes,jarrell,craven,baum,littlefield,linn,humphreys,etheridge,cuellar,chastain,bundy,speer,skelton,quiroz,pyle,portillo,ponder,moulton,machado,killian,hutson,hitchcock,dowling,cloud,burdick,spann,pedersen,levin,leggett,hayward,dietrich,beaulieu,barksdale,wakefield,snowden,briscoe,bowie,berman,ogle,mcgregor,laughlin,helm,burden,wheatley,schreiber,pressley,parris,alaniz,agee,swann,snodgrass,schuster,radford,monk,mattingly,harp,girard,cheney,yancey,wagoner,ridley,lombardo,hudgins,gaskins,duckworth,coburn,willey,prado,newberry,magana,hammonds,elam,whipple,slade,serna,ojeda,liles,dorman,diehl,upton,reardon,michaels,goetz,eller,bauman,baer,layne,hummel,brenner,amaya,adamson,ornelas,dowell,cloutier,castellanos,wellman,saylor,orourke,moya,montalvo,kilpatrick,durbin,shell,oldham,kang,garvin,foss,branham,bartholomew,templeton,maguire,holton,rider,monahan,mccormack,beaty,anders,streeter,nieto,nielson,moffett,lankford,keating,heck,gatlin,delatorre,callaway,adcock,worrell,unger,robinette,nowak,jeter,brunner,steen,parrott,overstreet,nobles,montanez,clevenger,brinkley,trahan,quarles,pickering,pederson,jansen,grantham,gilchrist,crespo,aiken,schell,schaeffer,lorenz,leyva,harms,dyson,wallis,pease,leavitt,cheng,cavanaugh,batts,warden,seaman,rockwell,quezada,paxton,linder,houck,fontaine,durant,caruso,adler,pimentel,mize,lytle,cleary,cason,acker,switzer,isaacs,higginbotham,waterman,vandyke,stamper,sisk,shuler,riddick,mcmahan,levesque,hatton,bronson,bollinger,arnett,okeefe,gerber,gannon,farnsworth,baughman,silverman,satterfield,mccrary,kowalski,grigsby,greco,cabral,trout,rinehart,mahon,linton,gooden,curley,baugh,wyman,weiner,schwab,schuler,morrissey,mahan,bunn,thrasher,spear,waggoner,qualls,purdy,mcwhorter,mauldin,gilman,perryman,newsom,menard,martino,graf,billingsley,artis,simpkins,salisbury,quintanilla,gilliland,fraley,foust,crouse,scarborough,grissom,fultz,marlow,markham,madrigal,lawton,barfield,whiting,varney,schwarz,gooch,arce,wheat,truong,poulin,hurtado,selby,gaither,fortner,culpepper,coughlin,brinson,boudreau,bales,stepp,holm,schilling,morrell,kahn,heaton,gamez,causey,turpin,shanks,schrader,meek,isom,hardison,carranza,yanez,scroggins,schofield,runyon,ratcliff,murrell,moeller,irby,currier,butterfield,ralston,pullen,pinson,estep,carbone,hawks,ellington,casillas,spurlock,sikes,motley,mccartney,kruger,isbell,houle,burk,tomlin,quigley,neumann,lovelace,fennell,cheatham,bustamante,skidmore,hidalgo,forman,culp,bowens,betancourt,aquino,robb,milner,martel,gresham,wiles,ricketts,dowd,collazo,bostic,blakely,sherrod,kenyon,gandy,ebert,deloach,allard,sauer,robins,olivares,gillette,chestnut,bourque,paine,hite,hauser,devore,crawley,chapa,talbert,poindexter,meador,mcduffie,mattox,kraus,harkins,choate,wren,sledge,sanborn,kinder,geary,cornwell,barclay,abney,seward,rhoads,howland,fortier,benner,vines,tubbs,troutman,rapp,mccurdy,deluca,westmoreland,havens,guajardo,clary,seal,meehan,herzog,guillen,ashcraft,waugh,renner,milam,elrod,churchill,breaux,bolin,asher,windham,tirado,pemberton,nolen,noland,knott,emmons,cornish,christenson,brownlee,barbee,waldrop,pitt,olvera,lombardi,gruber,gaffney,eggleston,banda,archuleta,slone,prewitt,pfeiffer,nettles,mena,mcadams,henning,gardiner,cromwell,chisholm,burleson,vest,oglesby,mccarter,lumpkin,wofford,vanhorn,thorn,teel,swafford,stclair,stanfield,ocampo,herrmann,hannon,arsenault,roush,mcalister,hiatt,gunderson,forsythe,duggan,delvalle,cintron,wilks,weinstein,uribe,rizzo,noyes,mclendon,gurley,bethea,winstead,maples,guyton,giordano,alderman,valdes,polanco,pappas,lively,grogan,griffiths,bobo,arevalo,whitson,sowell,rendon,fernandes,farrow,benavidez,ayres,alicea,stump,smalley,seitz,schulte,gilley,gallant,canfield,wolford,omalley,mcnutt,mcnulty,mcgovern,hardman,harbin,cowart,chavarria,brink,beckett,bagwell,armstead,anglin,abreu,reynoso,krebs,jett,hoffmann,greenfield,forte,burney,broome,sisson,trammell,partridge,mace,lomax,lemieux,gossett,frantz,fogle,cooney,broughton,pence,paulsen,muncy,mcarthur,hollins,beauchamp,withers,osorio,mulligan,hoyle,dockery,cockrell,begley,amador,roby,rains,lindquist,gentile,everhart,bohannon,wylie,sommers,purnell,fortin,dunning,breeden,vail,phelan,phan,marx,cosby,colburn,boling,biddle,ledesma,gaddis,denney,chow,bueno,berrios,wicker,tolliver,thibodeaux,nagle,lavoie,fisk,crist,barbosa,reedy,locklear,kolb,himes,behrens,beckwith,weems,wahl,shorter,shackelford,rees,muse,cerda,valadez,thibodeau,saavedra,ridgeway,reiter,mchenry,majors,lachance,keaton,ferrara,clemens,blocker,applegate,needham,mojica,kuykendall,hamel,escamilla,doughty,burchett,ainsworth,vidal,upchurch,thigpen,strauss,spruill,sowers,riggins,ricker,mccombs,harlow,buffington,sotelo,olivas,negrete,morey,macon,logsdon,lapointe,bigelow,bello,westfall,stubblefield,lindley,hein,hawes,farrington,breen,birch,wilde,steed,sepulveda,reinhardt,proffitt,minter,messina,mcnabb,maier,keeler,gamboa,donohue,basham,shinn,crooks,cota,borders,bills,bachman,tisdale,tavares,schmid,pickard,gulley,fonseca,delossantos,condon,batista,wicks,wadsworth,martell,littleton,ison,haag,folsom,brumfield,broyles,brito,mireles,mcdonnell,leclair,hamblin,gough,fanning,binder,winfield,whitworth,soriano,palumbo,newkirk,mangum,hutcherson,comstock,carlin,beall,bair,wendt,watters,walling,putman,otoole,morley,mares,lemus,keener,hundley,dial,damico,billups,strother,mcfarlane,lamm,eaves,crutcher,caraballo,canty,atwell,taft,siler,rust,rawls,rawlings,prieto,mcneely,mcafee,hulsey,hackney,galvez,escalante,delagarza,crider,bandy,wilbanks,stowe,steinberg,renfro,masterson,massie,lanham,haskell,hamrick,dehart,burdette,branson,bourne,babin,aleman,worthy,tibbs,smoot,slack,paradis,mull,luce,houghton,gantt,furman,danner,christianson,burge,ashford,arndt,almeida,stallworth,shade,searcy,sager,noonan,mclemore,mcintire,maxey,lavigne,jobe,ferrer,falk,coffin,byrnes,aranda,apodaca,stamps,rounds,peek,olmstead,lewandowski,kaminski,dunaway,bruns,brackett,amato,reich,mcclung,lacroix,koontz,herrick,hardesty,flanders,cousins,cato,cade,vickery,shank,nagel,dupuis,croteau,cotter,stuckey,stine,porterfield,pauley,moffitt,knudsen,hardwick,goforth,dupont,blunt,barrows,barnhill,shull,rash,loftis,lemay,kitchens,horvath,grenier,fuchs,fairbanks,culbertson,calkins,burnside,beattie,ashworth,albertson,wertz,vaught,vallejo,turk,tuck,tijerina,sage,peterman,marroquin,marr,lantz,hoang,demarco,cone,berube,barnette,wharton,stinnett,slocum,scanlon,sander,pinto,mancuso,lima,headley,epstein,counts,clarkson,carnahan,boren,arteaga,adame,zook,whittle,whitehurst,wenzel,saxton,reddick,puente,handley,haggerty,earley,devlin,chaffin,cady,acuna,solano,sigler,pollack,pendergrass,ostrander,janes,francois,crutchfield,chamberlin,brubaker,baptiste,willson,reis,neeley,mullin,mercier,lira,layman,keeling,higdon,espinal,chapin,warfield,toledo,pulido,peebles,nagy,montague,mello,lear,jaeger,hogg,graff,furr,soliz,poore,mendenhall,mclaurin,maestas,gable,barraza,tillery,snead,pond,neill,mcculloch,mccorkle,lightfoot,hutchings,holloman,harness,dorn,bock,zielinski,turley,treadwell,stpierre,starling,somers,oswald,merrick,easterling,bivens,truitt,poston,parry,ontiveros,olivarez,moreau,medlin,lenz,knowlton,fairley,cobbs,chisolm,bannister,woodworth,toler,ocasio,noriega,neuman,moye,milburn,mcclanahan,lilley,hanes,flannery,dellinger,danielson,conti,blodgett,beers,weatherford,strain,karr,hitt,denham,custer,coble,clough,casteel,bolduc,batchelor,ammons,whitlow,tierney,staten,sibley,seifert,schubert,salcedo,mattison,laney,haggard,grooms,dees,cromer,cooks,colson,caswell,zarate,swisher,shin,ragan,pridgen,mcvey,matheny,lafleur,franz,ferraro,dugger,whiteside,rigsby,mcmurray,lehmann,jacoby,hildebrand,hendrick,headrick,goad,fincher,drury,borges,archibald,albers,woodcock,trapp,soares,seaton,monson,luckett,lindberg,kopp,keeton,healey,garvey,gaddy,fain,burchfield,wentworth,strand,stack,spooner,saucier,ricci,plunkett,pannell,ness,leger,freitas,fong,elizondo,duval,beaudoin,urbina,rickard,partin,mcgrew,mcclintock,ledoux,forsyth,faison,devries,bertrand,wasson,tilton,scarbrough,leung,irvine,garber,denning,corral,colley,castleberry,bowlin,bogan,beale,baines,trice,rayburn,parkinson,nunes,mcmillen,leahy,kimmel,higgs,fulmer,carden,bedford,taggart,spearman,prichard,morrill,koonce,heinz,hedges,guenther,grice,findley,dover,creighton,boothe,bayer,arreola,vitale,valles,raney,osgood,hanlon,burley,bounds,worden,weatherly,vetter,tanaka,stiltner,nevarez,mosby,montero,melancon,harter,hamer,goble,gladden,gist,ginn,akin,zaragoza,tarver,sammons,royster,oreilly,muir,morehead,luster,kingsley,kelso,grisham,glynn,baumann,alves,yount,tamayo,paterson,oates,menendez,longo,hargis,gillen,desantis,conover,breedlove,sumpter,scherer,rupp,reichert,heredia,creel,cohn,clemmons,casas,bickford,belton,bach,williford,whitcomb,tennant,sutter,stull,mccallum,langlois,keel,keegan,dangelo,dancy,damron,clapp,clanton,bankston,oliveira,mintz,mcinnis,martens,mabe,laster,jolley,hildreth,hefner,glaser,duckett,demers,brockman,blais,alcorn,agnew,toliver,tice,seeley,najera,musser,mcfall,laplante,galvin,fajardo,doan,coyne,copley,clawson,cheung,barone,wynne,woodley,tremblay,stoll,sparrow,sparkman,schweitzer,sasser,samples,roney,legg,heim,farias,colwell,christman,bratcher,winchester,upshaw,southerland,sorrell,sells,mccloskey,martindale,luttrell,loveless,lovejoy,linares,latimer,embry,coombs,bratton,bostick,venable,tuggle,toro,staggs,sandlin,jefferies,heckman,griffis,crayton,clem,browder,thorton,sturgill,sprouse,royer,rousseau,ridenour,pogue,perales,peeples,metzler,mesa,mccutcheon,mcbee,hornsby,heffner,corrigan,armijo,plante,peyton,paredes,macklin,hussey,hodgson,granados,frias,becnel,batten,almanza,turney,teal,sturgeon,meeker,mcdaniels,limon,keeney,hutto,holguin,gorham,fishman,fierro,blanchette,rodrigue,reddy,osburn,oden,lerma,kirkwood,keefer,haugen,hammett,chalmers,brinkman,baumgartner,zhang,valerio,tellez,steffen,shumate,sauls,ripley,kemper,guffey,evers,craddock,carvalho,blaylock,banuelos,balderas,wheaton,turnbull,shuman,pointer,mosier,mccue,ligon,kozlowski,johansen,ingle,herr,briones,snipes,rickman,pipkin,pantoja,orosco,moniz,lawless,kunkel,hibbard,galarza,enos,bussey,schott,salcido,perreault,mcdougal,mccool,haight,garris,easton,conyers,atherton,wimberly,utley,spellman,smithson,slagle,ritchey,rand,petit,osullivan,oaks,nutt,mcvay,mccreary,mayhew,knoll,jewett,harwood,cardoza,ashe,arriaga,zeller,wirth,whitmire,stauffer,rountree,redden,mccaffrey,martz,larose,langdon,humes,gaskin,faber,devito,cass,almond,wingfield,wingate,villareal,tyner,smothers,severson,reno,pennell,maupin,leighton,janssen,hassell,hallman,halcomb,folse,fitzsimmons,fahey,cranford,bolen,battles,battaglia,wooldridge,trask,rosser,regalado,mcewen,keefe,fuqua,echevarria,caro,boynton,andrus,viera,vanmeter,taber,spradlin,seibert,provost,prentice,oliphant,laporte,hwang,hatchett,hass,greiner,freedman,covert,chilton,byars,wiese,venegas,swank,shrader,roberge,mullis,mortensen,mccune,marlowe,kirchner,keck,isaacson,hostetler,halverson,gunther,griswold,fenner,durden,blackwood,ahrens,sawyers,savoy,nabors,mcswain,mackay,lavender,lash,labbe,jessup,fullerton,cruse,crittenden,correia,centeno,caudle,canady,callender,alarcon,ahern,winfrey,tribble,salley,roden,musgrove,minnick,fortenberry,carrion,bunting,batiste,whited,underhill,stillwell,rauch,pippin,perrin,messenger,mancini,lister,kinard,hartmann,fleck,wilt,treadway,thornhill,spalding,rafferty,pitre,patino,ordonez,linkous,kelleher,homan,galbraith,feeney,curtin,coward,camarillo,buss,bunnell,bolt,beeler,autry,alcala,witte,wentz,stidham,shively,nunley,meacham,martins,lemke,lefebvre,hynes,horowitz,hoppe,holcombe,dunne,derr,cochrane,brittain,bedard,beauregard,torrence,strunk,soria,simonson,shumaker,scoggins,oconner,moriarty,kuntz,ives,hutcheson,horan,hales,garmon,fitts,bohn,atchison,wisniewski,vanwinkle,sturm,sallee,prosser,moen,lundberg,kunz,kohl,keane,jorgenson,jaynes,funderburk,freed,durr,creamer,cosgrove,batson,vanhoose,thomsen,teeter,smyth,redmon,orellana,maness,heflin,goulet,frick,forney,bunker,asbury,aguiar,talbott,southard,mowery,mears,lemmon,krieger,hickson,elston,duong,delgadillo,dayton,dasilva,conaway,catron,bruton,bradbury,bordelon,bivins,bittner,bergstrom,beals,abell,whelan,tejada,pulley,pino,norfleet,nealy,maes,loper,gatewood,frierson,freund,finnegan,cupp,covey,catalano,boehm,bader,yoon,walston,tenney,sipes,rawlins,medlock,mccaskill,mccallister,marcotte,maclean,hughey,henke,harwell,gladney,gilson,chism,caskey,brandenburg,baylor,villasenor,veal,thatcher,stegall,petrie,nowlin,navarrete,lombard,loftin,lemaster,kroll,kovach,kimbrell,kidwell,hershberger,fulcher,cantwell,bustos,boland,bobbitt,binkley,wester,weis,verdin,tong,tiller,sisco,sharkey,seymore,rosenbaum,rohr,quinonez,pinkston,malley,logue,lessard,lerner,lebron,krauss,klinger,halstead,haller,getz,burrow,alger,shores,pfeifer,perron,nelms,munn,mcmaster,mckenney,manns,knudson,hutchens,huskey,goebel,flagg,cushman,click,castellano,carder,bumgarner,wampler,spinks,robson,neel,mcreynolds,mathias,maas,loera,jenson,florez,coons,buckingham,brogan,berryman,wilmoth,wilhite,thrash,shephard,seidel,schulze,roldan,pettis,obryan,maki,mackie,hatley,frazer,fiore,chesser,bottoms,bisson,benefield,allman,wilke,trudeau,timm,shifflett,mundy,milliken,mayers,leake,kohn,huntington,horsley,hermann,guerin,fryer,frizzell,foret,flemming,fife,criswell,carbajal,bozeman,boisvert,angulo,wallen,tapp,silvers,ramsay,oshea,orta,moll,mckeever,mcgehee,linville,kiefer,ketchum,howerton,groce,gass,fusco,corbitt,betz,bartels,amaral,aiello,weddle,sperry,seiler,runyan,raley,overby,osteen,olds,mckeown,matney,lauer,lattimore,hindman,hartwell,fredrickson,fredericks,espino,clegg,carswell,cambell,burkholder,woodbury,welker,totten,thornburg,theriault,stitt,stamm,stackhouse,scholl,saxon,rife,razo,quinlan,pinkerton,olivo,nesmith,nall,mattos,lafferty,justus,giron,geer,fielder,drayton,dortch,conners,conger,boatwright,billiot,barden,armenta,tibbetts,steadman,slattery,rinaldi,raynor,pinckney,pettigrew,milne,matteson,halsey,gonsalves,fellows,durand,desimone,cowley,cowles,brill,barham,barela,barba,ashmore,withrow,valenti,tejeda,spriggs,sayre,salerno,peltier,peel,merriman,matheson,lowman,lindstrom,hyland,giroux,earls,dugas,dabney,collado,briseno,baxley,whyte,wenger,vanover,vanburen,thiel,schindler,schiller,rigby,pomeroy,passmore,marble,manzo,mahaffey,lindgren,laflamme,greathouse,fite,calabrese,bayne,yamamoto,wick,townes,thames,reinhart,peeler,naranjo,montez,mcdade,mast,markley,marchand,leeper,kellum,hudgens,hennessey,hadden,gainey,coppola,borrego,bolling,beane,ault,slaton,pape,null,mulkey,lightner,langer,hillard,ethridge,enright,derosa,baskin,weinberg,turman,somerville,pardo,noll,lashley,ingraham,hiller,hendon,glaze,cothran,cooksey,conte,carrico,abner,wooley,swope,summerlin,sturgis,sturdivant,stott,spurgeon,spillman,speight,roussel,popp,nutter,mckeon,mazza,magnuson,lanning,kozak,jankowski,heyward,forster,corwin,callaghan,bays,wortham,usher,theriot,sayers,sabo,poling,loya,lieberman,laroche,labelle,howes,harr,garay,fogarty,everson,durkin,dominquez,chaves,chambliss,witcher,vieira,vandiver,terrill,stoker,schreiner,moorman,liddell,lawhorn,krug,irons,hylton,hollenbeck,herrin,hembree,goolsby,goodin,gilmer,foltz,dinkins,daughtry,caban,brim,briley,bilodeau,wyant,vergara,tallent,swearingen,stroup,scribner,quillen,pitman,mccants,maxfield,martinson,holtz,flournoy,brookins,brody,baumgardner,straub,sills,roybal,roundtree,oswalt,mcgriff,mcdougall,mccleary,maggard,gragg,gooding,godinez,doolittle,donato,cowell,cassell,bracken,appel,zambrano,reuter,perea,nakamura,monaghan,mickens,mcclinton,mcclary,marler,kish,judkins,gilbreath,freese,flanigan,felts,erdmann,dodds,chew,brownell,boatright,barreto,slayton,sandberg,saldivar,pettway,odum,narvaez,moultrie,montemayor,merrell,lees,keyser,hoke,hardaway,hannan,gilbertson,fogg,dumont,deberry,coggins,buxton,bucher,broadnax,beeson,araujo,appleton,amundson,aguayo,ackley,yocum,worsham,shivers,sanches,sacco,robey,rhoden,pender,ochs,mccurry,madera,luong,knotts,jackman,heinrich,hargrave,gault,comeaux,chitwood,caraway,boettcher,bernhardt,barrientos,zink,wickham,whiteman,thorp,stillman,settles,schoonover,roque,riddell,pilcher,phifer,novotny,macleod,hardee,haase,grider,doucette,clausen,bevins,beamon,badillo,tolley,tindall,soule,snook,seale,pinkney,pellegrino,nowell,nemeth,mondragon,mclane,lundgren,ingalls,hudspeth,hixson,gearhart,furlong,downes,dibble,deyoung,cornejo,camara,brookshire,boyette,wolcott,surratt,sellars,segal,salyer,reeve,rausch,labonte,haro,gower,freeland,fawcett,eads,driggers,donley,collett,bromley,boatman,ballinger,baldridge,volz,trombley,stonge,shanahan,rivard,rhyne,pedroza,matias,jamieson,hedgepeth,hartnett,estevez,eskridge,denman,chiu,chinn,catlett,carmack,buie,bechtel,beardsley,bard,ballou,ulmer,skeen,robledo,rincon,reitz,piazza,munger,moten,mcmichael,loftus,ledet,kersey,groff,fowlkes,crumpton,clouse,bettis,villagomez,timmerman,strom,santoro,roddy,penrod,musselman,macpherson,leboeuf,harless,haddad,guido,golding,fulkerson,fannin,dulaney,dowdell,cottle,ceja,cate,bosley,benge,albritton,voigt,trowbridge,soileau,seely,rohde,pearsall,paulk,orth,nason,mota,mcmullin,marquardt,madigan,hoag,gillum,gabbard,fenwick,danforth,cushing,cress,creed,cazares,bettencourt,barringer,baber,stansberry,schramm,rutter,rivero,oquendo,necaise,mouton,montenegro,miley,mcgough,marra,macmillan,lamontagne,jasso,horst,hetrick,heilman,gaytan,gall,fortney,dingle,desjardins,dabbs,burbank,brigham,breland,beaman,arriola,yarborough,wallin,toscano,stowers,reiss,pichardo,orton,michels,mcnamee,mccrory,leatherman,kell,keister,horning,hargett,guay,ferro,deboer,dagostino,carper,blanks,beaudry,towle,tafoya,stricklin,strader,soper,sonnier,sigmon,schenk,saddler,pedigo,mendes,lunn,lohr,lahr,kingsbury,jarman,hume,holliman,hofmann,haworth,harrelson,hambrick,flick,edmunds,dacosta,crossman,colston,chaplin,carrell,budd,weiler,waits,valentino,trantham,tarr,solorio,roebuck,powe,plank,pettus,pagano,mink,luker,leathers,joslin,hartzell,gambrell,cepeda,carty,caputo,brewington,bedell,ballew,applewhite,warnock,walz,urena,tudor,reel,pigg,parton,mickelson,meagher,mclellan,mcculley,mandel,leech,lavallee,kraemer,kling,kipp,kehoe,hochstetler,harriman,gregoire,grabowski,gosselin,gammon,fancher,edens,desai,brannan,armendariz,woolsey,whitehouse,whetstone,ussery,towne,testa,tallman,studer,strait,steinmetz,sorrells,sauceda,rolfe,paddock,mitchem,mcginn,mccrea,lovato,hazen,gilpin,gaynor,fike,devoe,delrio,curiel,burkhardt,bode,backus,zinn,watanabe,wachter,vanpelt,turnage,shaner,schroder,sato,riordan,quimby,portis,natale,mckoy,mccown,kilmer,hotchkiss,hesse,halbert,gwinn,godsey,delisle,chrisman,canter,arbogast,angell,acree,yancy,woolley,wesson,weatherspoon,trainor,stockman,spiller,sipe,rooks,reavis,propst,porras,neilson,mullens,loucks,llewellyn,kumar,koester,klingensmith,kirsch,kester,honaker,hodson,hennessy,helmick,garrity,garibay,drain,casarez,callis,botello,aycock,avant,wingard,wayman,tully,theisen,szymanski,stansbury,segovia,rainwater,preece,pirtle,padron,mincey,mckelvey,mathes,larrabee,kornegay,klug,ingersoll,hecht,germain,eggers,dykstra,deering,decoteau,deason,dearing,cofield,carrigan,bonham,bahr,aucoin,appleby,almonte,yager,womble,wimmer,weimer,vanderpool,stancil,sprinkle,romine,remington,pfaff,peckham,olivera,meraz,maze,lathrop,koehn,hazelton,halvorson,hallock,haddock,ducharme,dehaven,caruthers,brehm,bosworth,bost,bias,beeman,basile,bane,aikens,wold,walther,tabb,suber,strawn,stocker,shirey,schlosser,riedel,rembert,reimer,pyles,peele,merriweather,letourneau,latta,kidder,hixon,hillis,hight,herbst,henriquez,haygood,hamill,gabel,fritts,eubank,dawes,correll,bushey,buchholz,brotherton,botts,barnwell,auger,atchley,westphal,veilleux,ulloa,stutzman,shriver,ryals,pilkington,moyers,marrs,mangrum,maddux,lockard,laing,kuhl,harney,hammock,hamlett,felker,doerr,depriest,carrasquillo,carothers,bogle,bischoff,bergen,albanese,wyckoff,vermillion,vansickle,thibault,tetreault,stickney,shoemake,ruggiero,rawson,racine,philpot,paschal,mcelhaney,mathison,legrand,lapierre,kwan,kremer,jiles,hilbert,geyer,faircloth,ehlers,egbert,desrosiers,dalrymple,cotten,cashman,cadena,boardman,alcaraz,wyrick,therrien,tankersley,strickler,puryear,plourde,pattison,pardue,mcginty,mcevoy,landreth,kuhns,koon,hewett,giddens,emerick,eades,deangelis,cosme,ceballos,birdsong,benham,bemis,armour,anguiano,welborn,tsosie,storms,shoup,sessoms,samaniego,rood,rojo,rhinehart,raby,northcutt,myer,munguia,morehouse,mcdevitt,mallett,lozada,lemoine,kuehn,hallett,grim,gillard,gaylor,garman,gallaher,feaster,faris,darrow,dardar,coney,carreon,braithwaite,boylan,boyett,bixler,bigham,benford,barragan,barnum,zuber,wyche,westcott,vining,stoltzfus,simonds,shupe,sabin,ruble,rittenhouse,richman,perrone,mulholland,millan,lomeli,kite,jemison,hulett,holler,hickerson,herold,hazelwood,griffen,gause,forde,eisenberg,dilworth,charron,chaisson,bristow,breunig,brace,boutwell,bentz,belk,bayless,batchelder,baran,baeza,zimmermann,weathersby,volk,toole,theis,tedesco,searle,schenck,satterwhite,ruelas,rankins,partida,nesbit,morel,menchaca,levasseur,kaylor,johnstone,hulse,hollar,hersey,harrigan,harbison,guyer,gish,giese,gerlach,geller,geisler,falcone,elwell,doucet,deese,darr,corder,chafin,byler,bussell,burdett,brasher,bowe,bellinger,bastian,barner,alleyne,wilborn,weil,wegner,tatro,spitzer,smithers,schoen,resendez,parisi,overman,obrian,mudd,mahler,maggio,lindner,lalonde,lacasse,laboy,killion,kahl,jessen,jamerson,houk,henshaw,gustin,graber,durst,duenas,davey,cundiff,conlon,colunga,coakley,chiles,capers,buell,bricker,bissonnette,bartz,bagby,zayas,volpe,treece,toombs,thom,terrazas,swinney,skiles,silveira,shouse,senn,ramage,moua,langham,kyles,holston,hoagland,herd,feller,denison,carraway,burford,bickel,ambriz,abercrombie,yamada,weidner,waddle,verduzco,thurmond,swindle,schrock,sanabria,rosenberger,probst,peabody,olinger,nazario,mccafferty,mcbroom,mcabee,mazur,matherne,mapes,leverett,killingsworth,heisler,griego,gosnell,frankel,franke,ferrante,fenn,ehrlich,christopherso,chasse,caton,brunelle,bloomfield,babbitt,azevedo,abramson,ables,abeyta,youmans,wozniak,wainwright,stowell,smitherman,samuelson,runge,rothman,rosenfeld,peake,owings,olmos,munro,moreira,leatherwood,larkins,krantz,kovacs,kizer,kindred,karnes,jaffe,hubbell,hosey,hauck,goodell,erdman,dvorak,doane,cureton,cofer,buehler,bierman,berndt,banta,abdullah,warwick,waltz,turcotte,torrey,stith,seger,sachs,quesada,pinder,peppers,pascual,paschall,parkhurst,ozuna,oster,nicholls,lheureux,lavalley,kimura,jablonski,haun,gourley,gilligan,croy,cotto,cargill,burwell,burgett,buckman,booher,adorno,wrenn,whittemore,urias,szabo,sayles,saiz,rutland,rael,pharr,pelkey,ogrady,nickell,musick,moats,mather,massa,kirschner,kieffer,kellar,hendershot,gott,godoy,gadson,furtado,fiedler,erskine,dutcher,dever,daggett,chevalier,brake,ballesteros,amerson,wingo,waldon,trott,silvey,showers,schlegel,ritz,pepin,pelayo,parsley,palermo,moorehead,mchale,lett,kocher,kilburn,iglesias,humble,hulbert,huckaby,hartford,hardiman,gurney,grigg,grasso,goings,fillmore,farber,depew,dandrea,cowen,covarrubias,burrus,bracy,ardoin,thompkins,standley,radcliffe,pohl,persaud,parenteau,pabon,newson,newhouse,napolitano,mulcahy,malave,keim,hooten,hernandes,heffernan,hearne,greenleaf,glick,fuhrman,fetter,faria,dishman,dickenson,crites,criss,clapper,chenault,castor,casto,bugg,bove,bonney,anderton,allgood,alderson,woodman,warrick,toomey,tooley,tarrant,summerville,stebbins,sokol,searles,schutz,schumann,scheer,remillard,raper,proulx,palmore,monroy,messier,melo,melanson,mashburn,manzano,lussier,jenks,huneycutt,hartwig,grimsley,fulk,fielding,fidler,engstrom,eldred,dantzler,crandell,calder,brumley,breton,brann,bramlett,boykins,bianco,bancroft,almaraz,alcantar,whitmer,whitener,welton,vineyard,rahn,paquin,mizell,mcmillin,mckean,marston,maciel,lundquist,liggins,lampkin,kranz,koski,kirkham,jiminez,hazzard,harrod,graziano,grammer,gendron,garrido,fordham,englert,dryden,demoss,deluna,crabb,comeau,brummett,blume,benally,wessel,vanbuskirk,thorson,stumpf,stockwell,reams,radtke,rackley,pelton,niemi,newland,nelsen,morrissette,miramontes,mcginley,mccluskey,marchant,luevano,lampe,lail,jeffcoat,infante,hinman,gaona,eady,desmarais,decosta,dansby,cisco,choe,breckenridge,bostwick,borg,bianchi,alberts,wilkie,whorton,vargo,tait,soucy,schuman,ousley,mumford,lippert,leath,lavergne,laliberte,kirksey,kenner,johnsen,izzo,hiles,gullett,greenwell,gaspar,galbreath,gaitan,ericson,delapaz,croom,cottingham,clift,bushnell,bice,beason,arrowood,waring,voorhees,truax,shreve,shockey,schatz,sandifer,rubino,rozier,roseberry,pieper,peden,nester,nave,murphey,malinowski,macgregor,lafrance,kunkle,kirkman,hipp,hasty,haddix,gervais,gerdes,gamache,fouts,fitzwater,dillingham,deming,deanda,cedeno,cannady,burson,bouldin,arceneaux,woodhouse,whitford,wescott,welty,weigel,torgerson,toms,surber,sunderland,sterner,setzer,riojas,pumphrey,puga,metts,mcgarry,mccandless,magill,lupo,loveland,llamas,leclerc,koons,kahler,huss,holbert,heintz,haupt,grimmett,gaskill,ellingson,dorr,dingess,deweese,desilva,crossley,cordeiro,converse,conde,caldera,cairns,burmeister,burkhalter,brawner,bott,youngs,vierra,valladares,shrum,shropshire,sevilla,rusk,rodarte,pedraza,nino,merino,mcminn,markle,mapp,lajoie,koerner,kittrell,kato,hyder,hollifield,heiser,hazlett,greenwald,fant,eldredge,dreher,delafuente,cravens,claypool,beecher,aronson,alanis,worthen,wojcik,winger,whitacre,valverde,valdivia,troupe,thrower,swindell,suttles,stroman,spires,slate,shealy,sarver,sartin,sadowski,rondeau,rolon,rascon,priddy,paulino,nolte,munroe,molloy,mciver,lykins,loggins,lenoir,klotz,kempf,hupp,hollowell,hollander,haynie,harkness,harker,gottlieb,frith,eddins,driskell,doggett,densmore,charette,cassady,byrum,burcham,buggs,benn,whitted,warrington,vandusen,vaillancourt,steger,siebert,scofield,quirk,purser,plumb,orcutt,nordstrom,mosely,michalski,mcphail,mcdavid,mccraw,marchese,mannino,lefevre,largent,lanza,kress,isham,hunsaker,hoch,hildebrandt,guarino,grijalva,graybill,fick,ewell,ewald,cusick,crumley,coston,cathcart,carruthers,bullington,bowes,blain,blackford,barboza,yingling,wert,weiland,varga,silverstein,sievers,shuster,shumway,runnels,rumsey,renfroe,provencher,polley,mohler,middlebrooks,kutz,koster,groth,glidden,fazio,deen,chipman,chenoweth,champlin,cedillo,carrero,carmody,buckles,brien,boutin,bosch,berkowitz,altamirano,wilfong,wiegand,waites,truesdale,toussaint,tobey,tedder,steelman,sirois,schnell,robichaud,richburg,plumley,pizarro,piercy,ortego,oberg,neace,mertz,mcnew,matta,lapp,lair,kibler,howlett,hollister,hofer,hatten,hagler,falgoust,engelhardt,eberle,dombrowski,dinsmore,daye,casares,braud,balch,autrey,wendel,tyndall,strobel,stoltz,spinelli,serrato,reber,rathbone,palomino,nickels,mayle,mathers,mach,loeffler,littrell,levinson,leong,lemire,lejeune,lazo,lasley,koller,kennard,hoelscher,hintz,hagerman,greaves,fore,eudy,engler,corrales,cordes,brunet,bidwell,bennet,tyrrell,tharpe,swinton,stribling,southworth,sisneros,savoie,samons,ruvalcaba,ries,ramer,omara,mosqueda,millar,mcpeak,macomber,luckey,litton,lehr,lavin,hubbs,hoard,hibbs,hagans,futrell,exum,evenson,culler,carbaugh,callen,brashear,bloomer,blakeney,bigler,addington,woodford,unruh,tolentino,sumrall,stgermain,smock,sherer,rayner,pooler,oquinn,nero,mcglothlin,linden,kowal,kerrigan,ibrahim,harvell,hanrahan,goodall,geist,fussell,fung,ferebee,eley,eggert,dorsett,dingman,destefano,colucci,clemmer,burnell,brumbaugh,boddie,berryhill,avelar,alcantara,winder,winchell,vandenberg,trotman,thurber,thibeault,stlouis,stilwell,sperling,shattuck,sarmiento,ruppert,rumph,renaud,randazzo,rademacher,quiles,pearman,palomo,mercurio,lowrey,lindeman,lawlor,larosa,lander,labrecque,hovis,holifield,henninger,hawkes,hartfield,hann,hague,genovese,garrick,fudge,frink,eddings,dinh,cribbs,calvillo,bunton,brodeur,bolding,blanding,agosto,zahn,wiener,trussell,tello,teixeira,speck,sharma,shanklin,sealy,scanlan,santamaria,roundy,robichaux,ringer,rigney,prevost,polson,nord,moxley,medford,mccaslin,mcardle,macarthur,lewin,lasher,ketcham,keiser,heine,hackworth,grose,grizzle,gillman,gartner,frazee,fleury,edson,edmonson,derry,cronk,conant,burress,burgin,broom,brockington,bolick,boger,birchfield,billington,baily,bahena,armbruster,anson,yoho,wilcher,tinney,timberlake,thielen,sutphin,stultz,sikora,serra,schulman,scheffler,santillan,rego,preciado,pinkham,mickle,lomas,lizotte,lent,kellerman,keil,johanson,hernadez,hartsfield,haber,gorski,farkas,eberhardt,duquette,delano,cropper,cozart,cockerham,chamblee,cartagena,cahoon,buzzell,brister,brewton,blackshear,benfield,aston,ashburn,arruda,wetmore,weise,vaccaro,tucci,sudduth,stromberg,stoops,showalter,shears,runion,rowden,rosenblum,riffle,renfrow,peres,obryant,leftwich,lark,landeros,kistler,killough,kerley,kastner,hoggard,hartung,guertin,govan,gatling,gailey,fullmer,fulford,flatt,esquibel,endicott,edmiston,edelstein,dufresne,dressler,dickman,chee,busse,bonnett,berard,yoshida,velarde,veach,vanhouten,vachon,tolson,tolman,tennyson,stites,soler,shutt,ruggles,rhone,pegues,neese,muro,moncrief,mefford,mcphee,mcmorris,mceachern,mcclurg,mansour,mader,leija,lecompte,lafountain,labrie,jaquez,heald,hash,hartle,gainer,frisby,farina,eidson,edgerton,dyke,durrett,duhon,cuomo,cobos,cervantez,bybee,brockway,borowski,binion,beery,arguello,amaro,acton,yuen,winton,wigfall,weekley,vidrine,vannoy,tardiff,shoop,shilling,schick,safford,prendergast,pilgrim,pellerin,osuna,nissen,nalley,moller,messner,messick,merrifield,mcguinness,matherly,marcano,mahone,lemos,lebrun,jara,hoffer,herren,hecker,haws,haug,gwin,gober,gilliard,fredette,favela,echeverria,downer,donofrio,desrochers,crozier,corson,bechtold,argueta,aparicio,zamudio,westover,westerman,utter,troyer,thies,tapley,slavin,shirk,sandler,roop,rimmer,raymer,radcliff,otten,moorer,millet,mckibben,mccutchen,mcavoy,mcadoo,mayorga,mastin,martineau,marek,madore,leflore,kroeger,kennon,jimerson,hostetter,hornback,hendley,hance,guardado,granado,gowen,goodale,flinn,fleetwood,fitz,durkee,duprey,dipietro,dilley,clyburn,brawley,beckley,arana,weatherby,vollmer,vestal,tunnell,trigg,tingle,takahashi,sweatt,storer,snapp,shiver,rooker,rathbun,poisson,perrine,perri,parmer,parke,pare,papa,palmieri,midkiff,mecham,mccomas,mcalpine,lovelady,lillard,lally,knopp,kile,kiger,haile,gupta,goldsberry,gilreath,fulks,friesen,franzen,flack,findlay,ferland,dreyer,dore,dennard,deckard,debose,crim,coulombe,chancey,cantor,branton,bissell,barns,woolard,witham,wasserman,spiegel,shoffner,scholz,ruch,rossman,petry,palacio,paez,neary,mortenson,millsap,miele,menke,mckim,mcanally,martines,lemley,larochelle,klaus,klatt,kaufmann,kapp,helmer,hedge,halloran,glisson,frechette,fontana,eagan,distefano,danley,creekmore,chartier,chaffee,carillo,burg,bolinger,berkley,benz,basso,bash,zelaya,woodring,witkowski,wilmot,wilkens,wieland,verdugo,urquhart,tsai,timms,swiger,swaim,sussman,pires,molnar,mcatee,lowder,loos,linker,landes,kingery,hufford,higa,hendren,hammack,hamann,gillam,gerhardt,edelman,delk,deans,curl,constantine,cleaver,claar,casiano,carruth,carlyle,brophy,bolanos,bibbs,bessette,beggs,baugher,bartel,averill,andresen,amin,adames,valente,turnbow,swink,sublett,stroh,stringfellow,ridgway,pugliese,poteat,ohare,neubauer,murchison,mingo,lemmons,kwon,kellam,kean,jarmon,hyden,hudak,hollinger,henkel,hemingway,hasson,hansel,halter,haire,ginsberg,gillispie,fogel,flory,etter,elledge,eckman,deas,currin,crafton,coomer,colter,claxton,bulter,braddock,bowyer,binns,bellows,baskerville,barros,ansley,woolf,wight,waldman,wadley,tull,trull,tesch,stouffer,stadler,slay,shubert,sedillo,santacruz,reinke,poynter,neri,neale,mowry,moralez,monger,mitchum,merryman,manion,macdougall,litchfield,levitt,lepage,lasalle,khoury,kavanagh,karns,ivie,huebner,hodgkins,halpin,garica,eversole,dutra,dunagan,duffey,dillman,dillion,deville,dearborn,damato,courson,coulson,burdine,bousquet,bonin,bish,atencio,westbrooks,wages,vaca,toner,tillis,swett,struble,stanfill,solorzano,slusher,sipple,silvas,shults,schexnayder,saez,rodas,rager,pulver,penton,paniagua,meneses,mcfarlin,mcauley,matz,maloy,magruder,lohman,landa,lacombe,jaimes,holzer,holst,heil,hackler,grundy,gilkey,farnham,durfee,dunton,dunston,duda,dews,craver,corriveau,conwell,colella,chambless,bremer,boutte,bourassa,blaisdell,backman,babineaux,audette,alleman,towner,taveras,tarango,sullins,suiter,stallard,solberg,schlueter,poulos,pimental,owsley,okelley,moffatt,metcalfe,meekins,medellin,mcglynn,mccowan,marriott,marable,lennox,lamoureux,koss,kerby,karp,isenberg,howze,hockenberry,highsmith,hallmark,gusman,greeley,giddings,gaudet,gallup,fleenor,eicher,edington,dimaggio,dement,demello,decastro,bushman,brundage,brooker,bourg,blackstock,bergmann,beaton,banister,argo,appling,wortman,watterson,villalpando,tillotson,tighe,sundberg,sternberg,stamey,shipe,seeger,scarberry,sattler,sain,rothstein,poteet,plowman,pettiford,penland,partain,pankey,oyler,ogletree,ogburn,moton,merkel,lucier,lakey,kratz,kinser,kershaw,josephson,imhoff,hendry,hammon,frisbie,frawley,fraga,forester,eskew,emmert,drennan,doyon,dandridge,cawley,carvajal,bracey,belisle,batey,ahner,wysocki,weiser,veliz,tincher,sansone,sankey,sandstrom,rohrer,risner,pridemore,pfeffer,persinger,peery,oubre,nowicki,musgrave,murdoch,mullinax,mccary,mathieu,livengood,kyser,klink,kimes,kellner,kavanaugh,kasten,imes,hoey,hinshaw,hake,gurule,grube,grillo,geter,gatto,garver,garretson,farwell,eiland,dunford,decarlo,corso,colman,collard,cleghorn,chasteen,cavender,carlile,calvo,byerly,brogdon,broadwater,breault,bono,bergin,behr,ballenger,amick,tamez,stiffler,steinke,simmon,shankle,schaller,salmons,sackett,saad,rideout,ratcliffe,ranson,plascencia,petterson,olszewski,olney,olguin,nilsson,nevels,morelli,montiel,monge,michaelson,mertens,mcchesney,mcalpin,mathewson,loudermilk,lineberry,liggett,kinlaw,kight,jost,hereford,hardeman,halpern,halliday,hafer,gaul,friel,freitag,forsberg,evangelista,doering,dicarlo,dendy,delp,deguzman,dameron,curtiss,cosper,cauthen,bradberry,bouton,bonnell,bixby,bieber,beveridge,bedwell,barhorst,bannon,baltazar,baier,ayotte,attaway,arenas,abrego,turgeon,tunstall,thaxton,tenorio,stotts,sthilaire,shedd,seabolt,scalf,salyers,ruhl,rowlett,robinett,pfister,perlman,pepe,parkman,nunnally,norvell,napper,modlin,mckellar,mcclean,mascarenas,leibowitz,ledezma,kuhlman,kobayashi,hunley,holmquist,hinkley,hazard,hartsell,gribble,gravely,fifield,eliason,doak,crossland,carleton,bridgeman,bojorquez,boggess,auten,woosley,whiteley,wexler,twomey,tullis,townley,standridge,santoyo,rueda,riendeau,revell,pless,ottinger,nigro,nickles,mulvey,menefee,mcshane,mcloughlin,mckinzie,markey,lockridge,lipsey,knisley,knepper,kitts,kiel,jinks,hathcock,godin,gallego,fikes,fecteau,estabrook,ellinger,dunlop,dudek,countryman,chauvin,chatham,bullins,brownfield,boughton,bloodworth,bibb,baucom,barbieri,aubin,armitage,alessi,absher,abbate,zito,woolery,wiggs,wacker,tynes,tolle,telles,tarter,swarey,strode,stockdale,stalnaker,spina,schiff,saari,risley,rameriz,rakes,pettaway,penner,paulus,palladino,omeara,montelongo,melnick,mehta,mcgary,mccourt,mccollough,marchetti,manzanares,lowther,leiva,lauderdale,lafontaine,kowalczyk,knighton,joubert,jaworski,huth,hurdle,housley,hackman,gulick,gordy,gilstrap,gehrke,gebhart,gaudette,foxworth,endres,dunkle,cimino,caddell,brauer,braley,bodine,blackmore,belden,backer,ayer,andress,wisner,vuong,valliere,twigg,tavarez,strahan,steib,staub,sowder,seiber,schutt,scharf,schade,rodriques,risinger,renshaw,rahman,presnell,piatt,nieman,nevins,mcilwain,mcgaha,mccully,mccomb,massengale,macedo,lesher,kearse,jauregui,husted,hudnall,holmberg,hertel,hardie,glidewell,frausto,fassett,dalessandro,dahlgren,corum,constantino,conlin,colquitt,colombo,claycomb,cardin,buller,boney,bocanegra,biggers,benedetto,araiza,andino,albin,zorn,werth,weisman,walley,vanegas,ulibarri,towe,tedford,teasley,suttle,steffens,stcyr,squire,singley,sifuentes,shuck,schram,sass,rieger,ridenhour,rickert,richerson,rayborn,rabe,raab,pendley,pastore,ordway,moynihan,mellott,mckissick,mcgann,mccready,mauney,marrufo,lenhart,lazar,lafave,keele,kautz,jardine,jahnke,jacobo,hord,hardcastle,hageman,giglio,gehring,fortson,duque,duplessis,dicken,derosier,deitz,dalessio,cram,castleman,candelario,callison,caceres,bozarth,biles,bejarano,bashaw,avina,armentrout,alverez,acord,waterhouse,vereen,vanlandingham,strawser,shotwell,severance,seltzer,schoonmaker,schock,schaub,schaffner,roeder,rodrigez,riffe,rasberry,rancourt,railey,quade,pursley,prouty,perdomo,oxley,osterman,nickens,murphree,mounts,merida,maus,mattern,masse,martinelli,mangan,lutes,ludwick,loney,laureano,lasater,knighten,kissinger,kimsey,kessinger,honea,hollingshead,hockett,heyer,heron,gurrola,gove,glasscock,gillett,galan,featherstone,eckhardt,duron,dunson,dasher,culbreth,cowden,cowans,claypoole,churchwell,chabot,caviness,cater,caston,callan,byington,burkey,boden,beckford,atwater,archambault,alvey,alsup,whisenant,weese,voyles,verret,tsang,tessier,sweitzer,sherwin,shaughnessy,revis,remy,prine,philpott,peavy,paynter,parmenter,ovalle,offutt,nightingale,newlin,nakano,myatt,muth,mohan,mcmillon,mccarley,mccaleb,maxson,marinelli,maley,liston,letendre,kain,huntsman,hirst,hagerty,gulledge,greenway,grajeda,gorton,goines,gittens,frederickson,fanelli,embree,eichelberger,dunkin,dixson,dillow,defelice,chumley,burleigh,borkowski,binette,biggerstaff,berglund,beller,audet,arbuckle,allain,alfano,youngman,wittman,weintraub,vanzant,vaden,twitty,stollings,standifer,sines,shope,scalise,saville,posada,pisano,otte,nolasco,mier,merkle,mendiola,melcher,mejias,mcmurry,mccalla,markowitz,manis,mallette,macfarlane,lough,looper,landin,kittle,kinsella,kinnard,hobart,helman,hellman,hartsock,halford,hage,gordan,glasser,gayton,gattis,gastelum,gaspard,frisch,fitzhugh,eckstein,eberly,dowden,despain,crumpler,crotty,cornelison,chouinard,chamness,catlin,cann,bumgardner,budde,branum,bradfield,braddy,borst,birdwell,bazan,banas,bade,arango,ahearn,addis,zumwalt,wurth,wilk,widener,wagstaff,urrutia,terwilliger,tart,steinman,staats,sloat,rives,riggle,revels,reichard,prickett,poff,pitzer,petro,pell,northrup,nicks,moline,mielke,maynor,mallon,magness,lingle,lindell,lieb,lesko,lebeau,lammers,lafond,kiernan,ketron,jurado,holmgren,hilburn,hayashi,hashimoto,harbaugh,guillot,gard,froehlich,feinberg,falco,dufour,drees,doney,diep,delao,daves,dail,crowson,coss,congdon,carner,camarena,butterworth,burlingame,bouffard,bloch,bilyeu,barta,bakke,baillargeon,avent,aquilar,zeringue,yarber,wolfson,vogler,voelker,truss,troxell,thrift,strouse,spielman,sistrunk,sevigny,schuller,schaaf,ruffner,routh,roseman,ricciardi,peraza,pegram,overturf,olander,odaniel,millner,melchor,maroney,machuca,macaluso,livesay,layfield,laskowski,kwiatkowski,kilby,hovey,heywood,hayman,havard,harville,haigh,hagood,grieco,glassman,gebhardt,fleischer,fann,elson,eccles,cunha,crumb,blakley,bardwell,abshire,woodham,wines,welter,wargo,varnado,tutt,traynor,swaney,stricker,stoffel,stambaugh,sickler,shackleford,selman,seaver,sansom,sanmiguel,royston,rourke,rockett,rioux,puleo,pitchford,nardi,mulvaney,middaugh,malek,leos,lathan,kujawa,kimbro,killebrew,houlihan,hinckley,herod,hepler,hamner,hammel,hallowell,gonsalez,gingerich,gambill,funkhouser,fricke,fewell,falkner,endsley,dulin,drennen,deaver,dambrosio,chadwell,castanon,burkes,brune,brisco,brinker,bowker,boldt,berner,beaumont,beaird,bazemore,barrick,albano,younts,wunderlich,weidman,vanness,toland,theobald,stickler,steiger,stanger,spies,spector,sollars,smedley,seibel,scoville,saito,rummel,rowles,rouleau,roos,rogan,roemer,ream,raya,purkey,priester,perreira,penick,paulin,parkins,overcash,oleson,neves,muldrow,minard,midgett,michalak,melgar,mcentire,mcauliffe,marte,lydon,lindholm,leyba,langevin,lagasse,lafayette,kesler,kelton,kaminsky,jaggers,humbert,huck,howarth,hinrichs,higley,gupton,guimond,gravois,giguere,fretwell,fontes,feeley,faucher,eichhorn,ecker,earp,dole,dinger,derryberry,demars,deel,copenhaver,collinsworth,colangelo,cloyd,claiborne,caulfield,carlsen,calzada,caffey,broadus,brenneman,bouie,bodnar,blaney,blanc,beltz,behling,barahona,yockey,winkle,windom,wimer,villatoro,trexler,teran,taliaferro,sydnor,swinson,snelling,smtih,simonton,simoneaux,simoneau,sherrer,seavey,scheel,rushton,rupe,ruano,rippy,reiner,reiff,rabinowitz,quach,penley,odle,nock,minnich,mckown,mccarver,mcandrew,longley,laux,lamothe,lafreniere,kropp,krick,kates,jepson,huie,howse,howie,henriques,haydon,haught,hatter,hartzog,harkey,grimaldo,goshorn,gormley,gluck,gilroy,gillenwater,giffin,fluker,feder,eyre,eshelman,eakins,detwiler,delrosario,davisson,catalan,canning,calton,brammer,botelho,blakney,bartell,averett,askins,aker,witmer,winkelman,widmer,whittier,weitzel,wardell,wagers,ullman,tupper,tingley,tilghman,talton,simard,seda,scheller,sala,rundell,rost,ribeiro,rabideau,primm,pinon,peart,ostrom,ober,nystrom,nussbaum,naughton,murr,moorhead,monti,monteiro,melson,meissner,mclin,mcgruder,marotta,makowski,majewski,madewell,lunt,lukens,leininger,lebel,lakin,kepler,jaques,hunnicutt,hungerford,hoopes,hertz,heins,halliburton,grosso,gravitt,glasper,gallman,gallaway,funke,fulbright,falgout,eakin,dostie,dorado,dewberry,derose,cutshall,crampton,costanzo,colletti,cloninger,claytor,chiang,campagna,burd,brokaw,broaddus,bretz,brainard,binford,bilbrey,alpert,aitken,ahlers,zajac,woolfolk,witten,windle,wayland,tramel,tittle,talavera,suter,straley,specht,sommerville,soloman,skeens,sigman,sibert,shavers,schuck,schmit,sartain,sabol,rosenblatt,rollo,rashid,rabb,polston,nyberg,northrop,navarra,muldoon,mikesell,mcdougald,mcburney,mariscal,lozier,lingerfelt,legere,latour,lagunas,lacour,kurth,killen,kiely,kayser,kahle,isley,huertas,hower,hinz,haugh,gumm,galicia,fortunato,flake,dunleavy,duggins,doby,digiovanni,devaney,deltoro,cribb,corpuz,coronel,coen,charbonneau,caine,burchette,blakey,blakemore,bergquist,beene,beaudette,bayles,ballance,bakker,bailes,asberry,arwood,zucker,willman,whitesell,wald,walcott,vancleave,trump,strasser,simas,shick,schleicher,schaal,saleh,rotz,resnick,rainer,partee,ollis,oller,oday,noles,munday,mong,millican,merwin,mazzola,mansell,magallanes,llanes,lewellen,lepore,kisner,keesee,jeanlouis,ingham,hornbeck,hawn,hartz,harber,haffner,gutshall,guth,grays,gowan,finlay,finkelstein,eyler,enloe,dungan,diez,dearman,cull,crosson,chronister,cassity,campion,callihan,butz,breazeale,blumenthal,berkey,batty,batton,arvizu,alderete,aldana,albaugh,abernethy,wolter,wille,tweed,tollefson,thomasson,teter,testerman,sproul,spates,southwick,soukup,skelly,senter,sealey,sawicki,sargeant,rossiter,rosemond,repp,pifer,ormsby,nickelson,naumann,morabito,monzon,millsaps,millen,mcelrath,marcoux,mantooth,madson,macneil,mackinnon,louque,leister,lampley,kushner,krouse,kirwan,jessee,janson,jahn,jacquez,islas,hutt,holladay,hillyer,hepburn,hensel,harrold,gingrich,geis,gales,fults,finnell,ferri,featherston,epley,ebersole,eames,dunigan,drye,dismuke,devaughn,delorenzo,damiano,confer,collum,clower,clow,claussen,clack,caylor,cawthon,casias,carreno,bluhm,bingaman,bewley,belew,beckner,auld,amey,wolfenbarger,wilkey,wicklund,waltman,villalba,valero,valdovinos,ullrich,tyus,twyman,trost,tardif,tanguay,stripling,steinbach,shumpert,sasaki,sappington,sandusky,reinhold,reinert,quijano,placencia,pinkard,phinney,perrotta,pernell,parrett,oxendine,owensby,orman,nuno,mori,mcroberts,mcneese,mckamey,mccullum,markel,mardis,maines,lueck,lubin,lefler,leffler,larios,labarbera,kershner,josey,jeanbaptiste,izaguirre,hermosillo,haviland,hartshorn,hafner,ginter,getty,franck,fiske,dufrene,doody,davie,dangerfield,dahlberg,cuthbertson,crone,coffelt,chidester,chesson,cauley,caudell,cantara,campo,caines,bullis,bucci,brochu,bogard,bickerstaff,benning,arzola,antonelli,adkinson,zellers,wulf,worsley,woolridge,whitton,westerfield,walczak,vassar,truett,trueblood,trawick,townsley,topping,tobar,telford,steverson,stagg,sitton,sill,sergent,schoenfeld,sarabia,rutkowski,rubenstein,rigdon,prentiss,pomerleau,plumlee,philbrick,patnode,oloughlin,obregon,nuss,morell,mikell,mele,mcinerney,mcguigan,mcbrayer,lollar,kuehl,kinzer,kamp,joplin,jacobi,howells,holstein,hedden,hassler,harty,halle,greig,gouge,goodrum,gerhart,geier,geddes,gast,forehand,ferree,fendley,feltner,esqueda,encarnacion,eichler,egger,edmundson,eatmon,doud,donohoe,donelson,dilorenzo,digiacomo,diggins,delozier,dejong,danford,crippen,coppage,cogswell,clardy,cioffi,cabe,brunette,bresnahan,blomquist,blackstone,biller,bevis,bevan,bethune,benbow,baty,basinger,balcom,andes,aman,aguero,adkisson,yandell,wilds,whisenhunt,weigand,weeden,voight,villar,trottier,tillett,suazo,setser,scurry,schuh,schreck,schauer,samora,roane,rinker,reimers,ratchford,popovich,parkin,natal,melville,mcbryde,magdaleno,loehr,lockman,lingo,leduc,larocca,lamere,laclair,krall,korte,koger,jalbert,hughs,higbee,henton,heaney,haith,gump,greeson,goodloe,gholston,gasper,gagliardi,fregoso,farthing,fabrizio,ensor,elswick,elgin,eklund,eaddy,drouin,dorton,dizon,derouen,deherrera,davy,dampier,cullum,culley,cowgill,cardoso,cardinale,brodsky,broadbent,brimmer,briceno,branscum,bolyard,boley,bennington,beadle,baur,ballentine,azure,aultman,arciniega,aguila,aceves,yepez,woodrum,wethington,weissman,veloz,trusty,troup,trammel,tarpley,stivers,steck,sprayberry,spraggins,spitler,spiers,sohn,seagraves,schiffman,rudnick,rizo,riccio,rennie,quackenbush,puma,plott,pearcy,parada,paiz,munford,moskowitz,mease,mcnary,mccusker,lozoya,longmire,loesch,lasky,kuhlmann,krieg,koziol,kowalewski,konrad,kindle,jowers,jolin,jaco,horgan,hine,hileman,hepner,heise,heady,hawkinson,hannigan,haberman,guilford,grimaldi,garton,gagliano,fruge,follett,fiscus,ferretti,ebner,easterday,eanes,dirks,dimarco,depalma,deforest,cruce,craighead,christner,candler,cadwell,burchell,buettner,brinton,brazier,brannen,brame,bova,bomar,blakeslee,belknap,bangs,balzer,athey,armes,alvis,alverson,alvardo,yeung,wheelock,westlund,wessels,volkman,threadgill,thelen,tague,symons,swinford,sturtevant,straka,stier,stagner,segarra,seawright,rutan,roux,ringler,riker,ramsdell,quattlebaum,purifoy,poulson,permenter,peloquin,pasley,pagel,osman,obannon,nygaard,newcomer,munos,motta,meadors,mcquiston,mcniel,mcmann,mccrae,mayne,matte,legault,lechner,kucera,krohn,kratzer,koopman,jeske,horrocks,hock,hibbler,hesson,hersh,harvin,halvorsen,griner,grindle,gladstone,garofalo,frampton,forbis,eddington,diorio,dingus,dewar,desalvo,curcio,creasy,cortese,cordoba,connally,cluff,cascio,capuano,canaday,calabro,bussard,brayton,borja,bigley,arnone,arguelles,acuff,zamarripa,wooton,widner,wideman,threatt,thiele,templin,teeters,synder,swint,swick,sturges,stogner,stedman,spratt,siegfried,shetler,scull,savino,sather,rothwell,rook,rone,rhee,quevedo,privett,pouliot,poche,pickel,petrillo,pellegrini,peaslee,partlow,otey,nunnery,morelock,morello,meunier,messinger,mckie,mccubbin,mccarron,lerch,lavine,laverty,lariviere,lamkin,kugler,krol,kissel,keeter,hubble,hickox,hetzel,hayner,hagy,hadlock,groh,gottschalk,goodsell,gassaway,garrard,galligan,firth,fenderson,feinstein,etienne,engleman,emrick,ellender,drews,doiron,degraw,deegan,dart,crissman,corr,cookson,coil,cleaves,charest,chapple,chaparro,castano,carpio,byer,bufford,bridgewater,bridgers,brandes,borrero,bonanno,aube,ancheta,abarca,abad,wooster,wimbush,willhite,willams,wigley,weisberg,wardlaw,vigue,vanhook,unknow,torre,tasker,tarbox,strachan,slover,shamblin,semple,schuyler,schrimsher,sayer,salzman,rubalcava,riles,reneau,reichel,rayfield,rabon,pyatt,prindle,poss,polito,plemmons,pesce,perrault,pereyra,ostrowski,nilsen,niemeyer,munsey,mundell,moncada,miceli,meader,mcmasters,mckeehan,matsumoto,marron,marden,lizarraga,lingenfelter,lewallen,langan,lamanna,kovac,kinsler,kephart,keown,kass,kammerer,jeffreys,hysell,hosmer,hardnett,hanner,guyette,greening,glazer,ginder,fromm,fluellen,finkle,fessler,essary,eisele,duren,dittmer,crochet,cosentino,cogan,coelho,cavin,carrizales,campuzano,brough,bopp,bookman,bobb,blouin,beesley,battista,bascom,bakken,badgett,arneson,anselmo,albino,ahumada,woodyard,wolters,wireman,willison,warman,waldrup,vowell,vantassel,twombly,toomer,tennison,teets,tedeschi,swanner,stutz,stelly,sheehy,schermerhorn,scala,sandidge,salters,salo,saechao,roseboro,rolle,ressler,renz,renn,redford,raposa,rainbolt,pelfrey,orndorff,oney,nolin,nimmons,nardone,myhre,morman,menjivar,mcglone,mccammon,maxon,marciano,manus,lowrance,lorenzen,lonergan,lollis,littles,lindahl,lamas,lach,kuster,krawczyk,knuth,knecht,kirkendall,keitt,keever,kantor,jarboe,hoye,houchens,holter,holsinger,hickok,helwig,helgeson,hassett,harner,hamman,hames,hadfield,goree,goldfarb,gaughan,gaudreau,gantz,gallion,frady,foti,flesher,ferrin,faught,engram,donegan,desouza,degroot,cutright,crowl,criner,coan,clinkscales,chewning,chavira,catchings,carlock,bulger,buenrostro,bramblett,brack,boulware,bookout,bitner,birt,baranowski,baisden,allmon,acklin,yoakum,wilbourn,whisler,weinberger,washer,vasques,vanzandt,vanatta,troxler,tomes,tindle,tims,throckmorton,thach,stpeter,stlaurent,stenson,spry,spitz,songer,snavely,shroyer,shortridge,shenk,sevier,seabrook,scrivner,saltzman,rosenberry,rockwood,robeson,roan,reiser,ramires,raber,posner,popham,piotrowski,pinard,peterkin,pelham,peiffer,peay,nadler,musso,millett,mestas,mcgowen,marques,marasco,manriquez,manos,mair,lipps,leiker,krumm,knorr,kinslow,kessel,kendricks,kelm,irick,ickes,hurlburt,horta,hoekstra,heuer,helmuth,heatherly,hampson,hagar,haga,greenlaw,grau,godbey,gingras,gillies,gibb,gayden,gauvin,garrow,fontanez,florio,finke,fasano,ezzell,ewers,eveland,eckenrode,duclos,drumm,dimmick,delancey,defazio,dashiell,cusack,crowther,crigger,cray,coolidge,coldiron,cleland,chalfant,cassel,camire,cabrales,broomfield,brittingham,brisson,brickey,braziel,brazell,bragdon,boulanger,boman,bohannan,beem,barre,azar,ashbaugh,armistead,almazan,adamski,zendejas,winburn,willaims,wilhoit,westberry,wentzel,wendling,visser,vanscoy,vankirk,vallee,tweedy,thornberry,sweeny,spradling,spano,smelser,shim,sechrist,schall,scaife,rugg,rothrock,roesler,riehl,ridings,render,ransdell,radke,pinero,petree,pendergast,peluso,pecoraro,pascoe,panek,oshiro,navarrette,murguia,moores,moberg,michaelis,mcwhirter,mcsweeney,mcquade,mccay,mauk,mariani,marceau,mandeville,maeda,lunde,ludlow,loeb,lindo,linderman,leveille,leith,larock,lambrecht,kulp,kinsley,kimberlin,kesterson,hoyos,helfrich,hanke,grisby,goyette,gouveia,glazier,gile,gerena,gelinas,gasaway,funches,fujimoto,flynt,fenske,fellers,fehr,eslinger,escalera,enciso,duley,dittman,dineen,diller,devault,collings,clymer,clowers,chavers,charland,castorena,castello,camargo,bunce,bullen,boyes,borchers,borchardt,birnbaum,birdsall,billman,benites,bankhead,ange,ammerman,adkison,winegar,wickman,warr,warnke,villeneuve,veasey,vassallo,vannatta,vadnais,twilley,towery,tomblin,tippett,theiss,talkington,talamantes,swart,swanger,streit,stines,stabler,spurling,sobel,sine,simmers,shippy,shiflett,shearin,sauter,sanderlin,rusch,runkle,ruckman,rorie,roesch,richert,rehm,randel,ragin,quesenberry,puentes,plyler,plotkin,paugh,oshaughnessy,ohalloran,norsworthy,niemann,nader,moorefield,mooneyham,modica,miyamoto,mickel,mebane,mckinnie,mazurek,mancilla,lukas,lovins,loughlin,lotz,lindsley,liddle,levan,lederman,leclaire,lasseter,lapoint,lamoreaux,lafollette,kubiak,kirtley,keffer,kaczmarek,housman,hiers,hibbert,herrod,hegarty,hathorn,greenhaw,grafton,govea,futch,furst,franko,forcier,foran,flickinger,fairfield,eure,emrich,embrey,edgington,ecklund,eckard,durante,deyo,delvecchio,dade,currey,creswell,cottrill,casavant,cartier,cargile,capel,cammack,calfee,burse,burruss,brust,brousseau,bridwell,braaten,borkholder,bloomquist,bjork,bartelt,amburgey,yeary,whitefield,vinyard,vanvalkenburg,twitchell,timmins,tapper,stringham,starcher,spotts,slaugh,simonsen,sheffer,sequeira,rosati,rhymes,quint,pollak,peirce,patillo,parkerson,paiva,nilson,nevin,narcisse,mitton,merriam,merced,meiners,mckain,mcelveen,mcbeth,marsden,marez,manke,mahurin,mabrey,luper,krull,hunsicker,hornbuckle,holtzclaw,hinnant,heston,hering,hemenway,hegwood,hearns,halterman,guiterrez,grote,granillo,grainger,glasco,gilder,garren,garlock,garey,fryar,fredricks,fraizer,foshee,ferrel,felty,everitt,evens,esser,elkin,eberhart,durso,duguay,driskill,doster,dewall,deveau,demps,demaio,delreal,deleo,darrah,cumberbatch,culberson,cranmer,cordle,colgan,chesley,cavallo,castellon,castelli,carreras,carnell,carlucci,bontrager,blumberg,blasingame,becton,artrip,andujar,alkire,alder,zukowski,zuckerman,wroblewski,wrigley,woodside,wigginton,westman,westgate,werts,washam,wardlow,walser,waiters,tadlock,stringfield,stimpson,stickley,standish,spurlin,spindler,speller,spaeth,sotomayor,sluder,shryock,shepardson,shatley,scannell,santistevan,rosner,resto,reinhard,rathburn,prisco,poulsen,pinney,phares,pennock,pastrana,oviedo,ostler,nauman,mulford,moise,moberly,mirabal,metoyer,metheny,mentzer,meldrum,mcinturff,mcelyea,mcdougle,massaro,lumpkins,loveday,lofgren,lirette,lesperance,lefkowitz,ledger,lauzon,lachapelle,klassen,keough,kempton,kaelin,jeffords,hsieh,hoyer,horwitz,hoeft,hennig,haskin,gourdine,golightly,girouard,fulgham,fritsch,freer,frasher,foulk,firestone,fiorentino,fedor,ensley,englehart,eells,dunphy,donahoe,dileo,dibenedetto,dabrowski,crick,coonrod,conder,coddington,chunn,chaput,cerna,carreiro,calahan,braggs,bourdon,bollman,bittle,bauder,barreras,aubuchon,anzalone,adamo,zerbe,willcox,westberg,weikel,waymire,vroman,vinci,vallejos,truesdell,troutt,trotta,tollison,toles,tichenor,symonds,surles,strayer,stgeorge,sroka,sorrentino,solares,snelson,silvestri,sikorski,shawver,schumaker,schorr,schooley,scates,satterlee,satchell,rymer,roselli,robitaille,riegel,regis,reames,provenzano,priestley,plaisance,pettey,palomares,nowakowski,monette,minyard,mclamb,mchone,mccarroll,masson,magoon,maddy,lundin,licata,leonhardt,landwehr,kircher,kinch,karpinski,johannsen,hussain,houghtaling,hoskinson,hollaway,holeman,hobgood,hiebert,goggin,geissler,gadbois,gabaldon,fleshman,flannigan,fairman,eilers,dycus,dunmire,duffield,dowler,deloatch,dehaan,deemer,clayborn,christofferso,chilson,chesney,chatfield,carron,canale,brigman,branstetter,bosse,borton,bonar,biron,barroso,arispe,zacharias,zabel,yaeger,woolford,whetzel,weakley,veatch,vandeusen,tufts,troxel,troche,traver,townsel,talarico,swilley,sterrett,stenger,speakman,sowards,sours,souders,souder,soles,sobers,snoddy,smither,shute,shoaf,shahan,schuetz,scaggs,santini,rosson,rolen,robidoux,rentas,recio,pixley,pawlowski,pawlak,paull,overbey,orear,oliveri,oldenburg,nutting,naugle,mossman,misner,milazzo,michelson,mcentee,mccullar,mccree,mcaleer,mazzone,mandell,manahan,malott,maisonet,mailloux,lumley,lowrie,louviere,lipinski,lindemann,leppert,leasure,labarge,kubik,knisely,knepp,kenworthy,kennelly,kelch,kanter,houchin,hosley,hosler,hollon,holleman,heitman,haggins,gwaltney,goulding,gorden,geraci,gathers,frison,feagin,falconer,espada,erving,erikson,eisenhauer,ebeling,durgin,dowdle,dinwiddie,delcastillo,dedrick,crimmins,covell,cournoyer,coria,cohan,cataldo,carpentier,canas,campa,brode,brashears,blaser,bicknell,bednar,barwick,ascencio,althoff,almodovar,alamo,zirkle,zabala,wolverton,winebrenner,wetherell,westlake,wegener,weddington,tuten,trosclair,tressler,theroux,teske,swinehart,swensen,sundquist,southall,socha,sizer,silverberg,shortt,shimizu,sherrard,shaeffer,scheid,scheetz,saravia,sanner,rubinstein,rozell,romer,rheaume,reisinger,randles,pullum,petrella,payan,nordin,norcross,nicoletti,nicholes,newbold,nakagawa,monteith,milstead,milliner,mellen,mccardle,liptak,leitch,latimore,larrison,landau,laborde,koval,izquierdo,hymel,hoskin,holte,hoefer,hayworth,hausman,harrill,harrel,hardt,gully,groover,grinnell,greenspan,graver,grandberry,gorrell,goldenberg,goguen,gilleland,fuson,feldmann,everly,dyess,dunnigan,downie,dolby,deatherage,cosey,cheever,celaya,caver,cashion,caplinger,cansler,byrge,bruder,breuer,breslin,brazelton,botkin,bonneau,bondurant,bohanan,bogue,bodner,boatner,blatt,bickley,belliveau,beiler,beier,beckstead,bachmann,atkin,altizer,alloway,allaire,albro,abron,zellmer,yetter,yelverton,wiens,whidden,viramontes,vanwormer,tarantino,tanksley,sumlin,strauch,strang,stice,spahn,sosebee,sigala,shrout,seamon,schrum,schneck,schantz,ruddy,romig,roehl,renninger,reding,polak,pohlman,pasillas,oldfield,oldaker,ohanlon,ogilvie,norberg,nolette,neufeld,nellis,mummert,mulvihill,mullaney,monteleone,mendonca,meisner,mcmullan,mccluney,mattis,massengill,manfredi,luedtke,lounsbury,liberatore,lamphere,laforge,jourdan,iorio,iniguez,ikeda,hubler,hodgdon,hocking,heacock,haslam,haralson,hanshaw,hannum,hallam,haden,garnes,garces,gammage,gambino,finkel,faucett,ehrhardt,eggen,dusek,durrant,dubay,dones,depasquale,delucia,degraff,decamp,davalos,cullins,conard,clouser,clontz,cifuentes,chappel,chaffins,celis,carwile,byram,bruggeman,bressler,brathwaite,brasfield,bradburn,boose,bodie,blosser,bertsch,bernardi,bernabe,bengtson,barrette,astorga,alday,albee,abrahamson,yarnell,wiltse,wiebe,waguespack,vasser,upham,turek,traxler,torain,tomaszewski,tinnin,tiner,tindell,styron,stahlman,staab,skiba,sheperd,seidl,secor,schutte,sanfilippo,ruder,rondon,rearick,procter,prochaska,pettengill,pauly,neilsen,nally,mullenax,morano,meads,mcnaughton,mcmurtry,mcmath,mckinsey,matthes,massenburg,marlar,margolis,malin,magallon,mackin,lovette,loughran,loring,longstreet,loiselle,lenihan,kunze,koepke,kerwin,kalinowski,kagan,innis,innes,holtzman,heinemann,harshman,haider,haack,grondin,grissett,greenawalt,goudy,goodlett,goldston,gokey,gardea,galaviz,gafford,gabrielson,furlow,fritch,fordyce,folger,elizalde,ehlert,eckhoff,eccleston,ealey,dubin,diemer,deschamps,delapena,decicco,debolt,cullinan,crittendon,crase,cossey,coppock,coots,colyer,cluck,chamberland,burkhead,bumpus,buchan,borman,birkholz,berardi,benda,behnke,barter,amezquita,wotring,wirtz,wingert,wiesner,whitesides,weyant,wainscott,venezia,varnell,tussey,thurlow,tabares,stiver,stell,starke,stanhope,stanek,sisler,sinnott,siciliano,shehan,selph,seager,scurlock,scranton,santucci,santangelo,saltsman,rogge,rettig,renwick,reidy,reider,redfield,premo,parente,paolucci,palmquist,ohler,netherton,mutchler,morita,mistretta,minnis,middendorf,menzel,mendosa,mendelson,meaux,mcspadden,mcquaid,mcnatt,manigault,maney,mager,lukes,lopresti,liriano,letson,lechuga,lazenby,lauria,larimore,krupp,krupa,kopec,kinchen,kifer,kerney,kerner,kennison,kegley,karcher,justis,johson,jellison,janke,huskins,holzman,hinojos,hefley,hatmaker,harte,halloway,hallenbeck,goodwyn,glaspie,geise,fullwood,fryman,frakes,fraire,farrer,enlow,engen,ellzey,eckles,earles,dunkley,drinkard,dreiling,draeger,dinardo,dills,desroches,desantiago,curlee,crumbley,critchlow,coury,courtright,coffield,cleek,charpentier,cardone,caples,cantin,buntin,bugbee,brinkerhoff,brackin,bourland,blassingame,beacham,banning,auguste,andreasen,amann,almon,alejo,adelman,abston,yerger,wymer,woodberry,windley,whiteaker,westfield,weibel,wanner,waldrep,villani,vanarsdale,utterback,updike,triggs,topete,tolar,tigner,thoms,tauber,tarvin,tally,swiney,sweatman,studebaker,stennett,starrett,stannard,stalvey,sonnenberg,smithey,sieber,sickles,shinault,segars,sanger,salmeron,rothe,rizzi,restrepo,ralls,ragusa,quiroga,papenfuss,oropeza,okane,mudge,mozingo,molinaro,mcvicker,mcgarvey,mcfalls,mccraney,matus,magers,llanos,livermore,linehan,leitner,laymon,lawing,lacourse,kwong,kollar,kneeland,kennett,kellett,kangas,janzen,hutter,huling,hofmeister,hewes,harjo,habib,guice,grullon,greggs,grayer,granier,grable,gowdy,giannini,getchell,gartman,garnica,ganey,gallimore,fetters,fergerson,farlow,fagundes,exley,esteves,enders,edenfield,easterwood,drakeford,dipasquale,desousa,deshields,deeter,dedmon,debord,daughtery,cutts,courtemanche,coursey,copple,coomes,collis,cogburn,clopton,choquette,chaidez,castrejon,calhoon,burbach,bulloch,buchman,bruhn,bohon,blough,baynes,barstow,zeman,zackery,yardley,yamashita,wulff,wilken,wiliams,wickersham,wible,whipkey,wedgeworth,walmsley,walkup,vreeland,verrill,umana,traub,swingle,summey,stroupe,stockstill,steffey,stefanski,statler,stapp,speights,solari,soderberg,shunk,shorey,shewmaker,sheilds,schiffer,schank,schaff,sagers,rochon,riser,rickett,reale,raglin,polen,plata,pitcock,percival,palen,orona,oberle,nocera,navas,nault,mullings,montejano,monreal,minick,middlebrook,meece,mcmillion,mccullen,mauck,marshburn,maillet,mahaney,magner,maclin,lucey,litteral,lippincott,leite,leaks,lamarre,jurgens,jerkins,jager,hurwitz,hughley,hotaling,horstman,hohman,hocker,hively,hipps,hessler,hermanson,hepworth,helland,hedlund,harkless,haigler,gutierez,grindstaff,glantz,giardina,gerken,gadsden,finnerty,farnum,encinas,drakes,dennie,cutlip,curtsinger,couto,cortinas,corby,chiasson,carle,carballo,brindle,borum,bober,blagg,berthiaume,beahm,batres,basnight,backes,axtell,atterberry,alvares,alegria,woodell,wojciechowski,winfree,winbush,wiest,wesner,wamsley,wakeman,verner,truex,trafton,toman,thorsen,theus,tellier,tallant,szeto,strope,stills,simkins,shuey,shaul,servin,serio,serafin,salguero,ryerson,rudder,ruark,rother,rohrbaugh,rohrbach,rohan,rogerson,risher,reeser,pryce,prokop,prins,priebe,prejean,pinheiro,petrone,petri,penson,pearlman,parikh,natoli,murakami,mullikin,mullane,motes,morningstar,mcveigh,mcgrady,mcgaughey,mccurley,marchan,manske,lusby,linde,likens,licon,leroux,lemaire,legette,laskey,laprade,laplant,kolar,kittredge,kinley,kerber,kanagy,jetton,janik,ippolito,inouye,hunsinger,howley,howery,horrell,holthaus,hiner,hilson,hilderbrand,hartzler,harnish,harada,hansford,halligan,hagedorn,gwynn,gudino,greenstein,greear,gracey,goudeau,goodner,ginsburg,gerth,gerner,fujii,frier,frenette,folmar,fleisher,fleischmann,fetzer,eisenman,earhart,dupuy,dunkelberger,drexler,dillinger,dilbeck,dewald,demby,deford,craine,chesnut,casady,carstens,carrick,carino,carignan,canchola,bushong,burman,buono,brownlow,broach,britten,brickhouse,boyden,boulton,borland,bohrer,blubaugh,bever,berggren,benevides,arocho,arends,amezcua,almendarez,zalewski,witzel,winkfield,wilhoite,vangundy,vanfleet,vanetten,vandergriff,urbanski,troiano,thibodaux,straus,stoneking,stjean,stillings,stange,speicher,speegle,smeltzer,slawson,simmonds,shuttleworth,serpa,senger,seidman,schweiger,schloss,schimmel,schechter,sayler,sabatini,ronan,rodiguez,riggleman,richins,reamer,prunty,porath,plunk,piland,philbrook,pettitt,perna,peralez,pascale,padula,oboyle,nivens,nickols,mundt,munden,montijo,mcmanis,mcgrane,mccrimmon,manzi,mangold,malick,mahar,maddock,losey,litten,leedy,leavell,ladue,krahn,kluge,junker,iversen,imler,hurtt,huizar,hubbert,howington,hollomon,holdren,hoisington,heiden,hauge,hartigan,gutirrez,griffie,greenhill,gratton,granata,gottfried,gertz,gautreaux,furry,furey,funderburg,flippen,fitzgibbon,drucker,donoghue,dildy,devers,detweiler,despres,denby,degeorge,cueto,cranston,courville,clukey,cirillo,chivers,caudillo,butera,bulluck,buckmaster,braunstein,bracamonte,bourdeau,bonnette".split(","),
45549 us_tv_and_film:"you,i,to,that,it,me,what,this,know,i'm,no,have,my,don't,just,not,do,be,your,we,it's,so,but,all,well,oh,about,right,you're,get,here,out,going,like,yeah,if,can,up,want,think,that's,now,go,him,how,got,did,why,see,come,good,really,look,will,okay,back,can't,mean,tell,i'll,hey,he's,could,didn't,yes,something,because,say,take,way,little,make,need,gonna,never,we're,too,she's,i've,sure,our,sorry,what's,let,thing,maybe,down,man,very,there's,should,anything,said,much,any,even,off,please,doing,thank,give,thought,help,talk,god,still,wait,find,nothing,again,things,let's,doesn't,call,told,great,better,ever,night,away,believe,feel,everything,you've,fine,last,keep,does,put,around,stop,they're,i'd,guy,isn't,always,listen,wanted,guys,huh,those,big,lot,happened,thanks,won't,trying,kind,wrong,talking,guess,care,bad,mom,remember,getting,we'll,together,dad,leave,understand,wouldn't,actually,hear,baby,nice,father,else,stay,done,wasn't,course,might,mind,every,enough,try,hell,came,someone,you'll,whole,yourself,idea,ask,must,coming,looking,woman,room,knew,tonight,real,son,hope,went,hmm,happy,pretty,saw,girl,sir,friend,already,saying,next,job,problem,minute,thinking,haven't,heard,honey,matter,myself,couldn't,exactly,having,probably,happen,we've,hurt,boy,dead,gotta,alone,excuse,start,kill,hard,you'd,today,car,ready,without,wants,hold,wanna,yet,seen,deal,once,gone,morning,supposed,friends,head,stuff,worry,live,truth,face,forget,true,cause,soon,knows,telling,wife,who's,chance,run,move,anyone,person,bye,somebody,heart,miss,making,meet,anyway,phone,reason,damn,lost,looks,bring,case,turn,wish,tomorrow,kids,trust,check,change,anymore,least,aren't,working,makes,taking,means,brother,hate,ago,says,beautiful,gave,fact,crazy,sit,afraid,important,rest,fun,kid,word,watch,glad,everyone,sister,minutes,everybody,bit,couple,whoa,either,mrs,feeling,daughter,wow,gets,asked,break,promise,door,close,hand,easy,question,tried,far,walk,needs,mine,killed,hospital,anybody,alright,wedding,shut,able,die,perfect,stand,comes,hit,waiting,dinner,funny,husband,almost,pay,answer,cool,eyes,news,child,shouldn't,yours,moment,sleep,read,where's,sounds,sonny,pick,sometimes,bed,date,plan,hours,lose,hands,serious,shit,behind,inside,ahead,week,wonderful,fight,past,cut,quite,he'll,sick,it'll,eat,nobody,goes,save,seems,finally,lives,worried,upset,carly,met,brought,seem,sort,safe,weren't,leaving,front,shot,loved,asking,running,clear,figure,hot,felt,parents,drink,absolutely,how's,daddy,sweet,alive,sense,meant,happens,bet,blood,ain't,kidding,lie,meeting,dear,seeing,sound,fault,ten,buy,hour,speak,lady,jen,thinks,christmas,outside,hang,possible,worse,mistake,ooh,handle,spend,totally,giving,here's,marriage,realize,unless,sex,send,needed,scared,picture,talked,ass,hundred,changed,completely,explain,certainly,sign,boys,relationship,loves,hair,lying,choice,anywhere,future,weird,luck,she'll,turned,touch,kiss,crane,questions,obviously,wonder,pain,calling,somewhere,throw,straight,cold,fast,words,food,none,drive,feelings,they'll,marry,drop,cannot,dream,protect,twenty,surprise,sweetheart,poor,looked,mad,except,gun,y'know,dance,takes,appreciate,especially,situation,besides,pull,hasn't,worth,sheridan,amazing,expect,swear,piece,busy,happening,movie,we'd,catch,perhaps,step,fall,watching,kept,darling,dog,honor,moving,till,admit,problems,murder,he'd,evil,definitely,feels,honest,eye,broke,missed,longer,dollars,tired,evening,starting,entire,trip,niles,suppose,calm,imagine,fair,caught,blame,sitting,favor,apartment,terrible,clean,learn,frasier,relax,accident,wake,prove,smart,message,missing,forgot,interested,table,nbsp,mouth,pregnant,ring,careful,shall,dude,ride,figured,wear,shoot,stick,follow,angry,write,stopped,ran,standing,forgive,jail,wearing,ladies,kinda,lunch,cristian,greenlee,gotten,hoping,phoebe,thousand,ridge,paper,tough,tape,count,boyfriend,proud,agree,birthday,they've,share,offer,hurry,feet,wondering,decision,ones,finish,voice,herself,would've,mess,deserve,evidence,cute,dress,interesting,hotel,enjoy,quiet,concerned,staying,beat,sweetie,mention,clothes,fell,neither,mmm,fix,respect,prison,attention,holding,calls,surprised,bar,keeping,gift,hadn't,putting,dark,owe,ice,helping,normal,aunt,lawyer,apart,plans,jax,girlfriend,floor,whether,everything's,box,judge,upstairs,sake,mommy,possibly,worst,acting,accept,blow,strange,saved,conversation,plane,mama,yesterday,lied,quick,lately,stuck,difference,store,she'd,bought,doubt,listening,walking,cops,deep,dangerous,buffy,sleeping,chloe,rafe,join,card,crime,gentlemen,willing,window,walked,guilty,likes,fighting,difficult,soul,joke,favorite,uncle,promised,bother,seriously,cell,knowing,broken,advice,somehow,paid,losing,push,helped,killing,boss,liked,innocent,rules,learned,thirty,risk,letting,speaking,ridiculous,afternoon,apologize,nervous,charge,patient,boat,how'd,hide,detective,planning,huge,breakfast,horrible,awful,pleasure,driving,hanging,picked,sell,quit,apparently,dying,notice,congratulations,visit,could've,c'mon,letter,decide,forward,fool,showed,smell,seemed,spell,memory,pictures,slow,seconds,hungry,hearing,kitchen,ma'am,should've,realized,kick,grab,discuss,fifty,reading,idiot,suddenly,agent,destroy,bucks,shoes,peace,arms,demon,livvie,consider,papers,incredible,witch,drunk,attorney,tells,knock,ways,gives,nose,skye,turns,keeps,jealous,drug,sooner,cares,plenty,extra,outta,weekend,matters,gosh,opportunity,impossible,waste,pretend,jump,eating,proof,slept,arrest,breathe,perfectly,warm,pulled,twice,easier,goin,dating,suit,romantic,drugs,comfortable,finds,checked,divorce,begin,ourselves,closer,ruin,smile,laugh,treat,fear,what'd,otherwise,excited,mail,hiding,stole,pacey,noticed,fired,excellent,bringing,bottom,note,sudden,bathroom,honestly,sing,foot,remind,charges,witness,finding,tree,dare,hardly,that'll,steal,silly,contact,teach,shop,plus,colonel,fresh,trial,invited,roll,reach,dirty,choose,emergency,dropped,butt,credit,obvious,locked,loving,nuts,agreed,prue,goodbye,condition,guard,fuckin,grow,cake,mood,crap,crying,belong,partner,trick,pressure,dressed,taste,neck,nurse,raise,lots,carry,whoever,drinking,they'd,breaking,file,lock,wine,spot,paying,assume,asleep,turning,viki,bedroom,shower,nikolas,camera,fill,reasons,forty,bigger,nope,breath,doctors,pants,freak,movies,folks,cream,wild,truly,desk,convince,client,threw,hurts,spending,answers,shirt,chair,rough,doin,sees,ought,empty,wind,aware,dealing,pack,tight,hurting,guest,arrested,salem,confused,surgery,expecting,deacon,unfortunately,goddamn,bottle,beyond,whenever,pool,opinion,starts,jerk,secrets,falling,necessary,barely,dancing,tests,copy,cousin,ahem,twelve,tess,skin,fifteen,speech,orders,complicated,nowhere,escape,biggest,restaurant,grateful,usual,burn,address,someplace,screw,everywhere,regret,goodness,mistakes,details,responsibility,suspect,corner,hero,dumb,terrific,whoo,hole,memories,o'clock,teeth,ruined,bite,stenbeck,liar,showing,cards,desperate,search,pathetic,spoke,scare,marah,afford,settle,stayed,checking,hired,heads,concern,blew,alcazar,champagne,connection,tickets,happiness,saving,kissing,hated,personally,suggest,prepared,onto,downstairs,ticket,it'd,loose,holy,duty,convinced,throwing,kissed,legs,loud,saturday,babies,where'd,warning,miracle,carrying,blind,ugly,shopping,hates,sight,bride,coat,clearly,celebrate,brilliant,wanting,forrester,lips,custody,screwed,buying,toast,thoughts,reality,lexie,attitude,advantage,grandfather,sami,grandma,someday,roof,marrying,powerful,grown,grandmother,fake,must've,ideas,exciting,familiar,bomb,bout,harmony,schedule,capable,practically,correct,clue,forgotten,appointment,deserves,threat,bloody,lonely,shame,jacket,hook,scary,investigation,invite,shooting,lesson,criminal,victim,funeral,considering,burning,strength,harder,sisters,pushed,shock,pushing,heat,chocolate,miserable,corinthos,nightmare,brings,zander,crash,chances,sending,recognize,healthy,boring,feed,engaged,headed,treated,knife,drag,badly,hire,paint,pardon,behavior,closet,warn,gorgeous,milk,survive,ends,dump,rent,remembered,thanksgiving,rain,revenge,prefer,spare,pray,disappeared,aside,statement,sometime,meat,fantastic,breathing,laughing,stood,affair,ours,depends,protecting,jury,brave,fingers,murdered,explanation,picking,blah,stronger,handsome,unbelievable,anytime,shake,oakdale,wherever,pulling,facts,waited,lousy,circumstances,disappointed,weak,trusted,license,nothin,trash,understanding,slip,sounded,awake,friendship,stomach,weapon,threatened,mystery,vegas,understood,basically,switch,frankly,cheap,lifetime,deny,clock,garbage,why'd,tear,ears,indeed,changing,singing,tiny,decent,avoid,messed,filled,touched,disappear,exact,pills,kicked,harm,fortune,pretending,insurance,fancy,drove,cared,belongs,nights,lorelai,lift,timing,guarantee,chest,woke,burned,watched,heading,selfish,drinks,doll,committed,elevator,freeze,noise,wasting,ceremony,uncomfortable,staring,files,bike,stress,permission,thrown,possibility,borrow,fabulous,doors,screaming,bone,xander,what're,meal,apology,anger,honeymoon,bail,parking,fixed,wash,stolen,sensitive,stealing,photo,chose,lets,comfort,worrying,pocket,mateo,bleeding,shoulder,ignore,talent,tied,garage,dies,demons,dumped,witches,rude,crack,bothering,radar,soft,meantime,gimme,kinds,fate,concentrate,throat,prom,messages,intend,ashamed,somethin,manage,guilt,interrupt,guts,tongue,shoe,basement,sentence,purse,glasses,cabin,universe,repeat,mirror,wound,travers,tall,engagement,therapy,emotional,jeez,decisions,soup,thrilled,stake,chef,moves,extremely,moments,expensive,counting,shots,kidnapped,cleaning,shift,plate,impressed,smells,trapped,aidan,knocked,charming,attractive,argue,puts,whip,embarrassed,package,hitting,bust,stairs,alarm,pure,nail,nerve,incredibly,walks,dirt,stamp,terribly,friendly,damned,jobs,suffering,disgusting,stopping,deliver,riding,helps,disaster,bars,crossed,trap,talks,eggs,chick,threatening,spoken,introduce,confession,embarrassing,bags,impression,gate,reputation,presents,chat,suffer,argument,talkin,crowd,homework,coincidence,cancel,pride,solve,hopefully,pounds,pine,mate,illegal,generous,outfit,maid,bath,punch,freaked,begging,recall,enjoying,prepare,wheel,defend,signs,painful,yourselves,maris,that'd,suspicious,cooking,button,warned,sixty,pity,yelling,awhile,confidence,offering,pleased,panic,hers,gettin,refuse,grandpa,testify,choices,cruel,mental,gentleman,coma,cutting,proteus,guests,expert,benefit,faces,jumped,toilet,sneak,halloween,privacy,smoking,reminds,twins,swing,solid,options,commitment,crush,ambulance,wallet,gang,eleven,option,laundry,assure,stays,skip,fail,discussion,clinic,betrayed,sticking,bored,mansion,soda,sheriff,suite,handled,busted,load,happier,studying,romance,procedure,commit,assignment,suicide,minds,swim,yell,llanview,chasing,proper,believes,humor,hopes,lawyers,giant,latest,escaped,parent,tricks,insist,dropping,cheer,medication,flesh,routine,sandwich,handed,false,beating,warrant,awfully,odds,treating,thin,suggesting,fever,sweat,silent,clever,sweater,mall,sharing,assuming,judgment,goodnight,divorced,surely,steps,confess,math,listened,comin,answered,vulnerable,bless,dreaming,chip,zero,pissed,nate,kills,tears,knees,chill,brains,unusual,packed,dreamed,cure,lookin,grave,cheating,breaks,locker,gifts,awkward,thursday,joking,reasonable,dozen,curse,quartermaine,millions,dessert,rolling,detail,alien,delicious,closing,vampires,wore,tail,secure,salad,murderer,spit,offense,dust,conscience,bread,answering,lame,invitation,grief,smiling,pregnancy,prisoner,delivery,guards,virus,shrink,freezing,wreck,massimo,wire,technically,blown,anxious,cave,holidays,cleared,wishes,caring,candles,bound,charm,pulse,jumping,jokes,boom,occasion,silence,nonsense,frightened,slipped,dimera,blowing,relationships,kidnapping,spin,tool,roxy,packing,blaming,wrap,obsessed,fruit,torture,personality,there'll,fairy,necessarily,seventy,print,motel,underwear,grams,exhausted,believing,freaking,carefully,trace,touching,messing,recovery,intention,consequences,belt,sacrifice,courage,enjoyed,attracted,remove,testimony,intense,heal,defending,unfair,relieved,loyal,slowly,buzz,alcohol,surprises,psychiatrist,plain,attic,who'd,uniform,terrified,cleaned,zach,threaten,fella,enemies,satisfied,imagination,hooked,headache,forgetting,counselor,andie,acted,badge,naturally,frozen,sakes,appropriate,trunk,dunno,costume,sixteen,impressive,kicking,junk,grabbed,understands,describe,clients,owns,affect,witnesses,starving,instincts,happily,discussing,deserved,strangers,surveillance,admire,questioning,dragged,barn,deeply,wrapped,wasted,tense,hoped,fellas,roommate,mortal,fascinating,stops,arrangements,agenda,literally,propose,honesty,underneath,sauce,promises,lecture,eighty,torn,shocked,backup,differently,ninety,deck,biological,pheebs,ease,creep,waitress,telephone,ripped,raising,scratch,rings,prints,thee,arguing,ephram,asks,oops,diner,annoying,taggert,sergeant,blast,towel,clown,habit,creature,bermuda,snap,react,paranoid,handling,eaten,therapist,comment,sink,reporter,nurses,beats,priority,interrupting,warehouse,loyalty,inspector,pleasant,excuses,threats,guessing,tend,praying,motive,unconscious,mysterious,unhappy,tone,switched,rappaport,sookie,neighbor,loaded,swore,piss,balance,toss,misery,thief,squeeze,lobby,goa'uld,geez,exercise,forth,booked,sandburg,poker,eighteen,d'you,bury,everyday,digging,creepy,wondered,liver,hmmm,magical,fits,discussed,moral,helpful,searching,flew,depressed,aisle,cris,amen,vows,neighbors,darn,cents,arrange,annulment,useless,adventure,resist,fourteen,celebrating,inch,debt,violent,sand,teal'c,celebration,reminded,phones,paperwork,emotions,stubborn,pound,tension,stroke,steady,overnight,chips,beef,suits,boxes,cassadine,collect,tragedy,spoil,realm,wipe,surgeon,stretch,stepped,nephew,neat,limo,confident,perspective,climb,punishment,finest,springfield,hint,furniture,blanket,twist,proceed,fries,worries,niece,gloves,soap,signature,disappoint,crawl,convicted,flip,counsel,doubts,crimes,accusing,shaking,remembering,hallway,halfway,bothered,madam,gather,cameras,blackmail,symptoms,rope,ordinary,imagined,cigarette,supportive,explosion,trauma,ouch,furious,cheat,avoiding,whew,thick,oooh,boarding,approve,urgent,shhh,misunderstanding,drawer,phony,interfere,catching,bargain,tragic,respond,punish,penthouse,thou,rach,ohhh,insult,bugs,beside,begged,absolute,strictly,socks,senses,sneaking,reward,polite,checks,tale,physically,instructions,fooled,blows,tabby,bitter,adorable,y'all,tested,suggestion,jewelry,alike,jacks,distracted,shelter,lessons,constable,circus,audition,tune,shoulders,mask,helpless,feeding,explains,sucked,robbery,objection,behave,valuable,shadows,courtroom,confusing,talented,smarter,mistaken,customer,bizarre,scaring,motherfucker,alert,vecchio,reverend,foolish,compliment,bastards,worker,wheelchair,protective,gentle,reverse,picnic,knee,cage,wives,wednesday,voices,toes,stink,scares,pour,cheated,slide,ruining,filling,exit,cottage,upside,proves,parked,diary,complaining,confessed,pipe,merely,massage,chop,spill,prayer,betray,waiter,scam,rats,fraud,brush,tables,sympathy,pill,filthy,seventeen,employee,bracelet,pays,fairly,deeper,arrive,tracking,spite,shed,recommend,oughta,nanny,menu,diet,corn,roses,patch,dime,devastated,subtle,bullets,beans,pile,confirm,strings,parade,borrowed,toys,straighten,steak,premonition,planted,honored,exam,convenient,traveling,laying,insisted,dish,aitoro,kindly,grandson,donor,temper,teenager,proven,mothers,denial,backwards,tent,swell,noon,happiest,drives,thinkin,spirits,potion,holes,fence,whatsoever,rehearsal,overheard,lemme,hostage,bench,tryin,taxi,shove,moron,impress,needle,intelligent,instant,disagree,stinks,rianna,recover,groom,gesture,constantly,bartender,suspects,sealed,legally,hears,dresses,sheet,psychic,teenage,knocking,judging,accidentally,waking,rumor,manners,homeless,hollow,desperately,tapes,referring,item,genoa,gear,majesty,cried,tons,spells,instinct,quote,motorcycle,convincing,fashioned,aids,accomplished,grip,bump,upsetting,needing,invisible,forgiveness,feds,compare,bothers,tooth,inviting,earn,compromise,cocktail,tramp,jabot,intimate,dignity,dealt,souls,informed,gods,dressing,cigarettes,alistair,leak,fond,corky,seduce,liquor,fingerprints,enchantment,butters,stuffed,stavros,emotionally,transplant,tips,oxygen,nicely,lunatic,drill,complain,announcement,unfortunate,slap,prayers,plug,opens,oath,o'neill,mutual,yacht,remembers,fried,extraordinary,bait,warton,sworn,stare,safely,reunion,burst,might've,dive,aboard,expose,buddies,trusting,booze,sweep,sore,scudder,properly,parole,ditch,canceled,speaks,glow,wears,thirsty,skull,ringing,dorm,dining,bend,unexpected,pancakes,harsh,flattered,ahhh,troubles,fights,favourite,eats,rage,undercover,spoiled,sloane,shine,destroying,deliberately,conspiracy,thoughtful,sandwiches,plates,nails,miracles,fridge,drank,contrary,beloved,allergic,washed,stalking,solved,sack,misses,forgiven,bent,maciver,involve,dragging,cooked,pointing,foul,dull,beneath,heels,faking,deaf,stunt,jealousy,hopeless,fears,cuts,scenario,necklace,crashed,accuse,restraining,homicide,helicopter,firing,safer,auction,videotape,tore,reservations,pops,appetite,wounds,vanquish,ironic,fathers,excitement,anyhow,tearing,sends,rape,laughed,belly,dealer,cooperate,accomplish,wakes,spotted,sorts,reservation,ashes,tastes,supposedly,loft,intentions,integrity,wished,towels,suspected,investigating,inappropriate,lipstick,lawn,compassion,cafeteria,scarf,precisely,obsession,loses,lighten,infection,granddaughter,explode,balcony,this'll,spying,publicity,depend,cracked,conscious,ally,absurd,vicious,invented,forbid,directions,defendant,bare,announce,screwing,salesman,robbed,leap,lakeview,insanity,reveal,possibilities,kidnap,gown,chairs,wishing,setup,punished,criminals,regrets,raped,quarters,lamp,dentist,anyways,anonymous,semester,risks,owes,lungs,explaining,delicate,tricked,eager,doomed,adoption,stab,sickness,scum,floating,envelope,vault,sorel,pretended,potatoes,plea,photograph,payback,misunderstood,kiddo,healing,cascade,capeside,stabbed,remarkable,brat,privilege,passionate,nerves,lawsuit,kidney,disturbed,cozy,tire,shirts,oven,ordering,delay,risky,monsters,honorable,grounded,closest,breakdown,bald,abandon,scar,collar,worthless,sucking,enormous,disturbing,disturb,distract,deals,conclusions,vodka,dishes,crawling,briefcase,wiped,whistle,sits,roast,rented,pigs,flirting,deposit,bottles,topic,riot,overreacting,logical,hostile,embarrass,casual,beacon,amusing,altar,claus,survival,skirt,shave,porch,ghosts,favors,drops,dizzy,chili,advise,strikes,rehab,photographer,peaceful,leery,heavens,fortunately,fooling,expectations,cigar,weakness,ranch,practicing,examine,cranes,bribe,sail,prescription,hush,fragile,forensics,expense,drugged,cows,bells,visitor,suitcase,sorta,scan,manticore,insecure,imagining,hardest,clerk,wrist,what'll,starters,silk,pump,pale,nicer,haul,flies,boot,thumb,there'd,how're,elders,quietly,pulls,idiots,erase,denying,ankle,amnesia,accepting,heartbeat,devane,confront,minus,legitimate,fixing,arrogant,tuna,supper,slightest,sins,sayin,recipe,pier,paternity,humiliating,genuine,snack,rational,minded,guessed,weddings,tumor,humiliated,aspirin,spray,picks,eyed,drowning,contacts,ritual,perfume,hiring,hating,docks,creatures,visions,thanking,thankful,sock,nineteen,fork,throws,teenagers,stressed,slice,rolls,plead,ladder,kicks,detectives,assured,tellin,shallow,responsibilities,repay,howdy,girlfriends,deadly,comforting,ceiling,verdict,insensitive,spilled,respected,messy,interrupted,halliwell,blond,bleed,wardrobe,takin,murders,backs,underestimate,justify,harmless,frustrated,fold,enzo,communicate,bugging,arson,whack,salary,rumors,obligation,liking,dearest,congratulate,vengeance,rack,puzzle,fires,courtesy,caller,blamed,tops,quiz,prep,curiosity,circles,barbecue,sunnydale,spinning,psychotic,cough,accusations,resent,laughs,freshman,envy,drown,bartlet,asses,sofa,poster,highness,dock,apologies,theirs,stat,stall,realizes,psych,mmmm,fools,understandable,treats,succeed,stir,relaxed,makin,gratitude,faithful,accent,witter,wandering,locate,inevitable,gretel,deed,crushed,controlling,smelled,robe,gossip,gambling,cosmetics,accidents,surprising,stiff,sincere,rushed,refrigerator,preparing,nightmares,mijo,ignoring,hunch,fireworks,drowned,brass,whispering,sophisticated,luggage,hike,explore,emotion,crashing,contacted,complications,shining,rolled,righteous,reconsider,goody,geek,frightening,ethics,creeps,courthouse,camping,affection,smythe,haircut,essay,baked,apologized,vibe,respects,receipt,mami,hats,destructive,adore,adopt,tracked,shorts,reminding,dough,creations,cabot,barrel,snuck,slight,reporters,pressing,magnificent,madame,lazy,glorious,fiancee,bits,visitation,sane,kindness,shoulda,rescued,mattress,lounge,lifted,importantly,glove,enterprises,disappointment,condo,beings,admitting,yelled,waving,spoon,screech,satisfaction,reads,nailed,worm,tick,resting,marvelous,fuss,cortlandt,chased,pockets,luckily,lilith,filing,conversations,consideration,consciousness,worlds,innocence,forehead,aggressive,trailer,slam,quitting,inform,delighted,daylight,danced,confidential,aunts,washing,tossed,spectra,marrow,lined,implying,hatred,grill,corpse,clues,sober,offended,morgue,infected,humanity,distraction,cart,wired,violation,promising,harassment,glue,d'angelo,cursed,brutal,warlocks,wagon,unpleasant,proving,priorities,mustn't,lease,flame,disappearance,depressing,thrill,sitter,ribs,flush,earrings,deadline,corporal,collapsed,update,snapped,smack,melt,figuring,delusional,coulda,burnt,tender,sperm,realise,pork,popped,interrogation,esteem,choosing,undo,pres,prayed,plague,manipulate,insulting,detention,delightful,coffeehouse,betrayal,apologizing,adjust,wrecked,wont,whipped,rides,reminder,monsieur,faint,bake,distress,correctly,complaint,blocked,tortured,risking,pointless,handing,dumping,cups,alibi,struggling,shiny,risked,mummy,mint,hose,hobby,fortunate,fleischman,fitting,curtain,counseling,rode,puppet,modeling,memo,irresponsible,humiliation,hiya,freakin,felony,choke,blackmailing,appreciated,tabloid,suspicion,recovering,pledge,panicked,nursery,louder,jeans,investigator,homecoming,frustrating,buys,busting,buff,sleeve,irony,dope,declare,autopsy,workin,torch,prick,limb,hysterical,goddamnit,fetch,dimension,crowded,clip,climbing,bonding,woah,trusts,negotiate,lethal,iced,fantasies,deeds,bore,babysitter,questioned,outrageous,kiriakis,insulted,grudge,driveway,deserted,definite,beep,wires,suggestions,searched,owed,lend,drunken,demanding,costanza,conviction,bumped,weigh,touches,tempted,shout,resolve,relate,poisoned,meals,invitations,haunted,bogus,autograph,affects,tolerate,stepping,spontaneous,sleeps,probation,manny,fist,spectacular,hostages,heroin,havin,habits,encouraging,consult,burgers,boyfriends,bailed,baggage,watches,troubled,torturing,teasing,sweetest,qualities,postpone,overwhelmed,malkovich,impulse,classy,charging,amazed,policeman,hypocrite,humiliate,hideous,d'ya,costumes,bluffing,betting,bein,bedtime,alcoholic,vegetable,tray,suspicions,spreading,splendid,shrimp,shouting,pressed,nooo,grieving,gladly,fling,eliminate,cereal,aaah,sonofabitch,paralyzed,lotta,locks,guaranteed,dummy,despise,dental,briefing,bluff,batteries,whatta,sounding,servants,presume,handwriting,fainted,dried,allright,acknowledge,whacked,toxic,reliable,quicker,overwhelming,lining,harassing,fatal,endless,dolls,convict,whatcha,unlikely,shutting,positively,overcome,goddam,essence,dose,diagnosis,cured,bully,ahold,yearbook,tempting,shelf,prosecution,pouring,possessed,greedy,wonders,thorough,spine,rath,psychiatric,meaningless,latte,jammed,ignored,fiance,evidently,contempt,compromised,cans,weekends,urge,theft,suing,shipment,scissors,responding,proposition,noises,matching,hormones,hail,grandchildren,gently,smashed,sexually,sentimental,nicest,manipulated,intern,handcuffs,framed,errands,entertaining,crib,carriage,barge,spends,slipping,seated,rubbing,rely,reject,recommendation,reckon,headaches,float,embrace,corners,whining,sweating,skipped,mountie,motives,listens,cristobel,cleaner,cheerleader,balsom,unnecessary,stunning,scent,quartermaines,pose,montega,loosen,info,hottest,haunt,gracious,forgiving,errand,cakes,blames,abortion,sketch,shifts,plotting,perimeter,pals,mere,mattered,lonigan,interference,eyewitness,enthusiasm,diapers,strongest,shaken,punched,portal,catches,backyard,terrorists,sabotage,organs,needy,cuff,civilization,woof,who'll,prank,obnoxious,mates,hereby,gabby,faked,cellar,whitelighter,void,strangle,sour,muffins,interfering,demonic,clearing,boutique,barrington,terrace,smoked,righty,quack,petey,pact,knot,ketchup,disappearing,cordy,uptight,ticking,terrifying,tease,swamp,secretly,rejection,reflection,realizing,rays,mentally,marone,doubted,deception,congressman,cheesy,toto,stalling,scoop,ribbon,immune,expects,destined,bets,bathing,appreciation,accomplice,wander,shoved,sewer,scroll,retire,lasts,fugitive,freezer,discount,cranky,crank,clearance,bodyguard,anxiety,accountant,whoops,volunteered,talents,stinking,remotely,garlic,decency,cord,beds,altogether,uniforms,tremendous,popping,outa,observe,lung,hangs,feelin,dudes,donation,disguise,curb,bites,antique,toothbrush,realistic,predict,landlord,hourglass,hesitate,consolation,babbling,tipped,stranded,smartest,repeating,puke,psst,paycheck,overreacted,macho,juvenile,grocery,freshen,disposal,cuffs,caffeine,vanished,unfinished,ripping,pinch,flattering,expenses,dinners,colleague,ciao,belthazor,attorneys,woulda,whereabouts,waitin,truce,tripped,tasted,steer,poisoning,manipulative,immature,husbands,heel,granddad,delivering,condoms,addict,trashed,raining,pasta,needles,leaning,detector,coolest,batch,appointments,almighty,vegetables,spark,perfection,pains,momma,mole,meow,hairs,getaway,cracking,compliments,behold,verge,tougher,timer,tapped,taped,specialty,snooping,shoots,rendezvous,pentagon,leverage,jeopardize,janitor,grandparents,forbidden,clueless,bidding,ungrateful,unacceptable,tutor,serum,scuse,pajamas,mouths,lure,irrational,doom,cries,beautifully,arresting,approaching,traitor,sympathetic,smug,smash,rental,prostitute,premonitions,jumps,inventory,darlin,committing,banging,asap,worms,violated,vent,traumatic,traced,sweaty,shaft,overboard,insight,healed,grasp,experiencing,crappy,crab,chunk,awww,stain,shack,reacted,pronounce,poured,moms,marriages,jabez,handful,flipped,fireplace,embarrassment,disappears,concussion,bruises,brakes,twisting,swept,summon,splitting,sloppy,settling,reschedule,notch,hooray,grabbing,exquisite,disrespect,thornhart,straw,slapped,shipped,shattered,ruthless,refill,payroll,numb,mourning,manly,hunk,entertain,drift,dreadful,doorstep,confirmation,chops,appreciates,vague,tires,stressful,stashed,stash,sensed,preoccupied,predictable,noticing,madly,gunshot,dozens,dork,confuse,cleaners,charade,chalk,cappuccino,bouquet,amulet,addiction,who've,warming,unlock,satisfy,sacrificed,relaxing,lone,blocking,blend,blankets,addicted,yuck,hunger,hamburger,greeting,greet,gravy,gram,dreamt,dice,caution,backpack,agreeing,whale,taller,supervisor,sacrifices,phew,ounce,irrelevant,gran,felon,favorites,farther,fade,erased,easiest,convenience,compassionate,cane,backstage,agony,adores,veins,tweek,thieves,surgical,strangely,stetson,recital,proposing,productive,meaningful,immunity,hassle,goddamned,frighten,dearly,cease,ambition,wage,unstable,salvage,richer,refusing,raging,pumping,pressuring,mortals,lowlife,intimidated,intentionally,inspire,forgave,devotion,despicable,deciding,dash,comfy,breach,bark,aaaah,switching,swallowed,stove,screamed,scars,russians,pounding,poof,pipes,pawn,legit,invest,farewell,curtains,civilized,caviar,boost,token,superstition,supernatural,sadness,recorder,psyched,motivated,microwave,hallelujah,fraternity,dryer,cocoa,chewing,acceptable,unbelievably,smiled,smelling,simpler,respectable,remarks,khasinau,indication,gutter,grabs,fulfill,flashlight,ellenor,blooded,blink,blessings,beware,uhhh,turf,swings,slips,shovel,shocking,puff,mirrors,locking,heartless,fras,childish,cardiac,utterly,tuscany,ticked,stunned,statesville,sadly,purely,kiddin,jerks,hitch,flirt,fare,equals,dismiss,christening,casket,c'mere,breakup,biting,antibiotics,accusation,abducted,witchcraft,thread,runnin,punching,paramedics,newest,murdering,masks,lawndale,initials,grampa,choking,charms,careless,bushes,buns,bummed,shred,saves,saddle,rethink,regards,precinct,persuade,meds,manipulating,llanfair,leash,hearted,guarantees,fucks,disgrace,deposition,bookstore,boil,vitals,veil,trespassing,sidewalk,sensible,punishing,overtime,optimistic,obsessing,notify,mornin,jeopardy,jaffa,injection,hilarious,desires,confide,cautious,yada,where're,vindictive,vial,teeny,stroll,sittin,scrub,rebuild,posters,ordeal,nuns,intimacy,inheritance,exploded,donate,distracting,despair,crackers,wildwind,virtue,thoroughly,tails,spicy,sketches,sights,sheer,shaving,seize,scarecrow,refreshing,prosecute,platter,napkin,misplaced,merchandise,loony,jinx,heroic,frankenstein,ambitious,syrup,solitary,resemblance,reacting,premature,lavery,flashes,cheque,awright,acquainted,wrapping,untie,salute,realised,priceless,partying,lightly,lifting,kasnoff,insisting,glowing,generator,explosives,cutie,confronted,buts,blouse,ballistic,antidote,analyze,allowance,adjourned,unto,understatement,tucked,touchy,subconscious,screws,sarge,roommates,rambaldi,offend,nerd,knives,irresistible,incapable,hostility,goddammit,fuse,frat,curfew,blackmailed,walkin,starve,sleigh,sarcastic,recess,rebound,pinned,parlor,outfits,livin,heartache,haired,fundraiser,doorman,discreet,dilucca,cracks,considerate,climbed,catering,apophis,zoey,urine,strung,stitches,sordid,sark,protector,phoned,pets,hostess,flaw,flavor,deveraux,consumed,confidentiality,bourbon,straightened,specials,spaghetti,prettier,powerless,playin,playground,paranoia,instantly,havoc,exaggerating,eavesdropping,doughnuts,diversion,deepest,cutest,comb,bela,behaving,anyplace,accessory,workout,translate,stuffing,speeding,slime,royalty,polls,marital,lurking,lottery,imaginary,greetings,fairwinds,elegant,elbow,credibility,credentials,claws,chopped,bridal,bedside,babysitting,witty,unforgivable,underworld,tempt,tabs,sophomore,selfless,secrecy,restless,okey,movin,metaphor,messes,meltdown,lecter,incoming,gasoline,diefenbaker,buckle,admired,adjustment,warmth,throats,seduced,queer,parenting,noses,luckiest,graveyard,gifted,footsteps,dimeras,cynical,wedded,verbal,unpredictable,tuned,stoop,slides,sinking,rigged,plumbing,lingerie,hankey,greed,everwood,elope,dresser,chauffeur,bulletin,bugged,bouncing,temptation,strangest,slammed,sarcasm,pending,packages,orderly,obsessive,murderers,meteor,inconvenience,glimpse,froze,execute,courageous,consulate,closes,bosses,bees,amends,wuss,wolfram,wacky,unemployed,testifying,syringe,stew,startled,sorrow,sleazy,shaky,screams,rsquo,remark,poke,nutty,mentioning,mend,inspiring,impulsive,housekeeper,foam,fingernails,conditioning,baking,whine,thug,starved,sniffing,sedative,programmed,picket,paged,hound,homosexual,homo,hips,forgets,flipping,flea,flatter,dwell,dumpster,choo,assignments,ants,vile,unreasonable,tossing,thanked,steals,souvenir,scratched,psychopath,outs,obstruction,obey,lump,insists,harass,gloat,filth,edgy,didn,coroner,confessing,bruise,betraying,bailing,appealing,adebisi,wrath,wandered,waist,vain,traps,stepfather,poking,obligated,heavenly,dilemma,crazed,contagious,coaster,cheering,bundle,vomit,thingy,speeches,robbing,raft,pumped,pillows,peep,packs,neglected,m'kay,loneliness,intrude,helluva,gardener,forresters,drooling,betcha,vase,supermarket,squat,spitting,rhyme,relieve,receipts,racket,pictured,pause,overdue,motivation,morgendorffer,kidnapper,insect,horns,feminine,eyeballs,dumps,disappointing,crock,convertible,claw,clamp,canned,cambias,bathtub,avanya,artery,weep,warmer,suspense,summoned,spiders,reiber,raving,pushy,postponed,ohhhh,noooo,mold,laughter,incompetent,hugging,groceries,drip,communicating,auntie,adios,wraps,wiser,willingly,weirdest,timmih,thinner,swelling,swat,steroids,sensitivity,scrape,rehearse,prophecy,ledge,justified,insults,hateful,handles,doorway,chatting,buyer,buckaroo,bedrooms,askin,ammo,tutoring,subpoena,scratching,privileges,pager,mart,intriguing,idiotic,grape,enlighten,corrupt,brunch,bridesmaid,barking,applause,acquaintance,wretched,superficial,soak,smoothly,sensing,restraint,posing,pleading,payoff,oprah,nemo,morals,loaf,jumpy,ignorant,herbal,hangin,germs,generosity,flashing,doughnut,clumsy,chocolates,captive,behaved,apologise,vanity,stumbled,preview,poisonous,perjury,parental,onboard,mugged,minding,linen,knots,interviewing,humour,grind,greasy,goons,drastic,coop,comparing,cocky,clearer,bruised,brag,bind,worthwhile,whoop,vanquishing,tabloids,sprung,spotlight,sentencing,racist,provoke,pining,overly,locket,imply,impatient,hovering,hotter,fest,endure,dots,doren,debts,crawled,chained,brit,breaths,weirdo,warmed,wand,troubling,tok'ra,strapped,soaked,skipping,scrambled,rattle,profound,musta,mocking,misunderstand,limousine,kacl,hustle,forensic,enthusiastic,duct,drawers,devastating,conquer,clarify,chores,cheerleaders,cheaper,callin,blushing,barging,abused,yoga,wrecking,wits,waffles,virginity,vibes,uninvited,unfaithful,teller,strangled,scheming,ropes,rescuing,rave,postcard,o'reily,morphine,lotion,lads,kidneys,judgement,itch,indefinitely,grenade,glamorous,genetically,freud,discretion,delusions,crate,competent,bakery,argh,ahhhh,wedge,wager,unfit,tripping,torment,superhero,stirring,spinal,sorority,seminar,scenery,rabble,pneumonia,perks,override,ooooh,mija,manslaughter,mailed,lime,lettuce,intimidate,guarded,grieve,grad,frustration,doorbell,chinatown,authentic,arraignment,annulled,allergies,wanta,verify,vegetarian,tighter,telegram,stalk,spared,shoo,satisfying,saddam,requesting,pens,overprotective,obstacles,notified,nasedo,grandchild,genuinely,flushed,fluids,floss,escaping,ditched,cramp,corny,bunk,bitten,billions,bankrupt,yikes,wrists,ultrasound,ultimatum,thirst,sniff,shakes,salsa,retrieve,reassuring,pumps,neurotic,negotiating,needn't,monitors,millionaire,lydecker,limp,incriminating,hatchet,gracias,gordie,fills,feeds,doubting,decaf,biopsy,whiz,voluntarily,ventilator,unpack,unload,toad,spooked,snitch,schillinger,reassure,persuasive,mystical,mysteries,matrimony,mails,jock,headline,explanations,dispatch,curly,cupid,condolences,comrade,cassadines,bulb,bragging,awaits,assaulted,ambush,adolescent,abort,yank,whit,vaguely,undermine,tying,swamped,stabbing,slippers,slash,sincerely,sigh,setback,secondly,rotting,precaution,pcpd,melting,liaison,hots,hooking,headlines,haha,ganz,fury,felicity,fangs,encouragement,earring,dreidel,dory,donut,dictate,decorating,cocktails,bumps,blueberry,believable,backfired,backfire,apron,adjusting,vous,vouch,vitamins,ummm,tattoos,slimy,sibling,shhhh,renting,peculiar,parasite,paddington,marries,mailbox,magically,lovebirds,knocks,informant,exits,drazen,distractions,disconnected,dinosaurs,dashwood,crooked,conveniently,wink,warped,underestimated,tacky,shoving,seizure,reset,pushes,opener,mornings,mash,invent,indulge,horribly,hallucinating,festive,eyebrows,enjoys,desperation,dealers,darkest,daph,boragora,belts,bagel,authorization,auditions,agitated,wishful,wimp,vanish,unbearable,tonic,suffice,suction,slaying,safest,rocking,relive,puttin,prettiest,noisy,newlyweds,nauseous,misguided,mildly,midst,liable,judgmental,indy,hunted,givin,fascinated,elephants,dislike,deluded,decorate,crummy,contractions,carve,bottled,bonded,bahamas,unavailable,twenties,trustworthy,surgeons,stupidity,skies,remorse,preferably,pies,nausea,napkins,mule,mourn,melted,mashed,inherit,greatness,golly,excused,dumbo,drifting,delirious,damaging,cubicle,compelled,comm,chooses,checkup,boredom,bandages,alarms,windshield,who're,whaddya,transparent,surprisingly,sunglasses,slit,roar,reade,prognosis,probe,pitiful,persistent,peas,nosy,nagging,morons,masterpiece,martinis,limbo,liars,irritating,inclined,hump,hoynes,fiasco,eatin,cubans,concentrating,colorful,clam,cider,brochure,barto,bargaining,wiggle,welcoming,weighing,vanquished,stains,sooo,snacks,smear,sire,resentment,psychologist,pint,overhear,morality,landingham,kisser,hoot,holling,handshake,grilled,formality,elevators,depths,confirms,boathouse,accidental,westbridge,wacko,ulterior,thugs,thighs,tangled,stirred,snag,sling,sleaze,rumour,ripe,remarried,puddle,pins,perceptive,miraculous,longing,lockup,librarian,impressions,immoral,hypothetically,guarding,gourmet,gabe,faxed,extortion,downright,digest,cranberry,bygones,buzzing,burying,bikes,weary,taping,takeout,sweeping,stepmother,stale,senor,seaborn,pros,pepperoni,newborn,ludicrous,injected,geeks,forged,faults,drue,dire,dief,desi,deceiving,caterer,calmed,budge,ankles,vending,typing,tribbiani,there're,squared,snowing,shades,sexist,rewrite,regretted,raises,picky,orphan,mural,misjudged,miscarriage,memorize,leaking,jitters,invade,interruption,illegally,handicapped,glitch,gittes,finer,distraught,dispose,dishonest,digs,dads,cruelty,circling,canceling,butterflies,belongings,barbrady,amusement,alias,zombies,where've,unborn,swearing,stables,squeezed,sensational,resisting,radioactive,questionable,privileged,portofino,owning,overlook,orson,oddly,interrogate,imperative,impeccable,hurtful,hors,heap,graders,glance,disgust,devious,destruct,crazier,countdown,chump,cheeseburger,burglar,berries,ballroom,assumptions,annoyed,allergy,admirer,admirable,activate,underpants,twit,tack,strokes,stool,sham,scrap,retarded,resourceful,remarkably,refresh,pressured,precautions,pointy,nightclub,mustache,maui,lace,hunh,hubby,flare,dont,dokey,dangerously,crushing,clinging,choked,chem,cheerleading,checkbook,cashmere,calmly,blush,believer,amazingly,alas,what've,toilets,tacos,stairwell,spirited,sewing,rubbed,punches,protects,nuisance,motherfuckers,mingle,kynaston,knack,kinkle,impose,gullible,godmother,funniest,friggin,folding,fashions,eater,dysfunctional,drool,dripping,ditto,cruising,criticize,conceive,clone,cedars,caliber,brighter,blinded,birthdays,banquet,anticipate,annoy,whim,whichever,volatile,veto,vested,shroud,rests,reindeer,quarantine,pleases,painless,orphans,orphanage,offence,obliged,negotiation,narcotics,mistletoe,meddling,manifest,lookit,lilah,intrigued,injustice,homicidal,gigantic,exposing,elves,disturbance,disastrous,depended,demented,correction,cooped,cheerful,buyers,brownies,beverage,basics,arvin,weighs,upsets,unethical,swollen,sweaters,stupidest,sensation,scalpel,props,prescribed,pompous,objections,mushrooms,mulwray,manipulation,lured,internship,insignificant,inmate,incentive,fulfilled,disagreement,crypt,cornered,copied,brightest,beethoven,attendant,amaze,yogurt,wyndemere,vocabulary,tulsa,tactic,stuffy,respirator,pretends,polygraph,pennies,ordinarily,olives,necks,morally,martyr,leftovers,joints,hopping,homey,hints,heartbroken,forge,florist,firsthand,fiend,dandy,crippled,corrected,conniving,conditioner,clears,chemo,bubbly,bladder,beeper,baptism,wiring,wench,weaknesses,volunteering,violating,unlocked,tummy,surrogate,subid,stray,startle,specifics,slowing,scoot,robbers,rightful,richest,qfxmjrie,puffs,pierced,pencils,paralysis,makeover,luncheon,linksynergy,jerky,jacuzzi,hitched,hangover,fracture,flock,firemen,disgusted,darned,clams,borrowing,banged,wildest,weirder,unauthorized,stunts,sleeves,sixties,shush,shalt,retro,quits,pegged,painfully,paging,omelet,memorized,lawfully,jackets,intercept,ingredient,grownup,glued,fulfilling,enchanted,delusion,daring,compelling,carton,bridesmaids,bribed,boiling,bathrooms,bandage,awaiting,assign,arrogance,antiques,ainsley,turkeys,trashing,stockings,stalked,stabilized,skates,sedated,robes,respecting,psyche,presumptuous,prejudice,paragraph,mocha,mints,mating,mantan,lorne,loads,listener,itinerary,hepatitis,heave,guesses,fading,examining,dumbest,dishwasher,deceive,cunning,cripple,convictions,confided,compulsive,compromising,burglary,bumpy,brainwashed,benes,arnie,affirmative,adrenaline,adamant,watchin,waitresses,transgenic,toughest,tainted,surround,stormed,spree,spilling,spectacle,soaking,shreds,sewers,severed,scarce,scamming,scalp,rewind,rehearsing,pretentious,potions,overrated,obstacle,nerds,meems,mcmurphy,maternity,maneuver,loathe,fertility,eloping,ecstatic,ecstasy,divorcing,dignan,costing,clubhouse,clocks,candid,bursting,breather,braces,bending,arsonist,adored,absorb,valiant,uphold,unarmed,topolsky,thrilling,thigh,terminate,sustain,spaceship,snore,sneeze,smuggling,salty,quaint,patronize,patio,morbid,mamma,kettle,joyous,invincible,interpret,insecurities,impulses,illusions,holed,exploit,drivin,defenseless,dedicate,cradle,coupon,countless,conjure,cardboard,booking,backseat,accomplishment,wordsworth,wisely,valet,vaccine,urges,unnatural,unlucky,truths,traumatized,tasting,swears,strawberries,steaks,stats,skank,seducing,secretive,scumbag,screwdriver,schedules,rooting,rightfully,rattled,qualifies,puppets,prospects,pronto,posse,polling,pedestal,palms,muddy,morty,microscope,merci,lecturing,inject,incriminate,hygiene,grapefruit,gazebo,funnier,cuter,bossy,booby,aides,zende,winthrop,warrants,valentines,undressed,underage,truthfully,tampered,suffers,speechless,sparkling,sidelines,shrek,railing,puberty,pesky,outrage,outdoors,motions,moods,lunches,litter,kidnappers,itching,intuition,imitation,humility,hassling,gallons,drugstore,dosage,disrupt,dipping,deranged,debating,cuckoo,cremated,craziness,cooperating,circumstantial,chimney,blinking,biscuits,admiring,weeping,triad,trashy,soothing,slumber,slayers,skirts,siren,shindig,sentiment,rosco,riddance,quaid,purity,proceeding,pretzels,panicking,mckechnie,lovin,leaked,intruding,impersonating,ignorance,hamburgers,footprints,fluke,fleas,festivities,fences,feisty,evacuate,emergencies,deceived,creeping,craziest,corpses,conned,coincidences,bounced,bodyguards,blasted,bitterness,baloney,ashtray,apocalypse,zillion,watergate,wallpaper,telesave,sympathize,sweeter,startin,spades,sodas,snowed,sleepover,signor,seein,retainer,restroom,rested,repercussions,reliving,reconcile,prevail,preaching,overreact,o'neil,noose,moustache,manicure,maids,landlady,hypothetical,hopped,homesick,hives,hesitation,herbs,hectic,heartbreak,haunting,gangs,frown,fingerprint,exhausting,everytime,disregard,cling,chevron,chaperone,blinding,bitty,beads,battling,badgering,anticipation,upstanding,unprofessional,unhealthy,turmoil,truthful,toothpaste,tippin,thoughtless,tagataya,shooters,senseless,rewarding,propane,preposterous,pigeons,pastry,overhearing,obscene,negotiable,loner,jogging,itchy,insinuating,insides,hospitality,hormone,hearst,forthcoming,fists,fifties,etiquette,endings,destroys,despises,deprived,cuddy,crust,cloak,circumstance,chewed,casserole,bidder,bearer,artoo,applaud,appalling,vowed,virgins,vigilante,undone,throttle,testosterone,tailor,symptom,swoop,suitcases,stomp,sticker,stakeout,spoiling,snatched,smoochy,smitten,shameless,restraints,researching,renew,refund,reclaim,raoul,puzzles,purposely,punks,prosecuted,plaid,picturing,pickin,parasites,mysteriously,multiply,mascara,jukebox,interruptions,gunfire,furnace,elbows,duplicate,drapes,deliberate,decoy,cryptic,coupla,condemn,complicate,colossal,clerks,clarity,brushed,banished,argon,alarmed,worships,versa,uncanny,technicality,sundae,stumble,stripping,shuts,schmuck,satin,saliva,robber,relentless,reconnect,recipes,rearrange,rainy,psychiatrists,policemen,plunge,plugged,patched,overload,o'malley,mindless,menus,lullaby,lotte,leavin,killin,karinsky,invalid,hides,grownups,griff,flaws,flashy,flaming,fettes,evicted,dread,degrassi,dealings,dangers,cushion,bowel,barged,abide,abandoning,wonderfully,wait'll,violate,suicidal,stayin,sorted,slamming,sketchy,shoplifting,raiser,quizmaster,prefers,needless,motherhood,momentarily,migraine,lifts,leukemia,leftover,keepin,hinks,hellhole,gowns,goodies,gallon,futures,entertained,eighties,conspiring,cheery,benign,apiece,adjustments,abusive,abduction,wiping,whipping,welles,unspeakable,unidentified,trivial,transcripts,textbook,supervise,superstitious,stricken,stimulating,spielberg,slices,shelves,scratches,sabotaged,retrieval,repressed,rejecting,quickie,ponies,peeking,outraged,o'connell,moping,moaning,mausoleum,licked,kovich,klutz,interrogating,interfered,insulin,infested,incompetence,hyper,horrified,handedly,gekko,fraid,fractured,examiner,eloped,disoriented,dashing,crashdown,courier,cockroach,chipped,brushing,bombed,bolts,baths,baptized,astronaut,assurance,anemia,abuela,abiding,withholding,weave,wearin,weaker,suffocating,straws,straightforward,stench,steamed,starboard,sideways,shrinks,shortcut,scram,roasted,roaming,riviera,respectfully,repulsive,psychiatry,provoked,penitentiary,painkillers,ninotchka,mitzvah,milligrams,midge,marshmallows,looky,lapse,kubelik,intellect,improvise,implant,goa'ulds,giddy,geniuses,fruitcake,footing,fightin,drinkin,doork,detour,cuddle,crashes,combo,colonnade,cheats,cetera,bailiff,auditioning,assed,amused,alienate,aiding,aching,unwanted,topless,tongues,tiniest,superiors,soften,sheldrake,rawley,raisins,presses,plaster,nessa,narrowed,minions,merciful,lawsuits,intimidating,infirmary,inconvenient,imposter,hugged,honoring,holdin,hades,godforsaken,fumes,forgery,foolproof,folder,flattery,fingertips,exterminator,explodes,eccentric,dodging,disguised,crave,constructive,concealed,compartment,chute,chinpokomon,bodily,astronauts,alimony,accustomed,abdominal,wrinkle,wallow,valium,untrue,uncover,trembling,treasures,torched,toenails,timed,termites,telly,taunting,taransky,talker,succubus,smarts,sliding,sighting,semen,seizures,scarred,savvy,sauna,saddest,sacrificing,rubbish,riled,ratted,rationally,provenance,phonse,perky,pedal,overdose,nasal,nanites,mushy,movers,missus,midterm,merits,melodramatic,manure,knitting,invading,interpol,incapacitated,hotline,hauling,gunpoint,grail,ganza,framing,flannel,faded,eavesdrop,desserts,calories,breathtaking,bleak,blacked,batter,aggravated,yanked,wigand,whoah,unwind,undoubtedly,unattractive,twitch,trimester,torrance,timetable,taxpayers,strained,stared,slapping,sincerity,siding,shenanigans,shacking,sappy,samaritan,poorer,politely,paste,oysters,overruled,nightcap,mosquito,millimeter,merrier,manhood,lucked,kilos,ignition,hauled,harmed,goodwill,freshmen,fenmore,fasten,farce,exploding,erratic,drunks,ditching,d'artagnan,cramped,contacting,closets,clientele,chimp,bargained,arranging,anesthesia,amuse,altering,afternoons,accountable,abetting,wolek,waved,uneasy,toddy,tattooed,spauldings,sliced,sirens,schibetta,scatter,rinse,remedy,redemption,pleasures,optimism,oblige,mmmmm,masked,malicious,mailing,kosher,kiddies,judas,isolate,insecurity,incidentally,heals,headlights,growl,grilling,glazed,flunk,floats,fiery,fairness,exercising,excellency,disclosure,cupboard,counterfeit,condescending,conclusive,clicked,cleans,cholesterol,cashed,broccoli,brats,blueprints,blindfold,billing,attach,appalled,alrighty,wynant,unsolved,unreliable,toots,tighten,sweatshirt,steinbrenner,steamy,spouse,sonogram,slots,sleepless,shines,retaliate,rephrase,redeem,rambling,quilt,quarrel,prying,proverbial,priced,prescribe,prepped,pranks,possessive,plaintiff,pediatrics,overlooked,outcast,nightgown,mumbo,mediocre,mademoiselle,lunchtime,lifesaver,leaned,lambs,interns,hounding,hellmouth,hahaha,goner,ghoul,gardening,frenzy,foyer,extras,exaggerate,everlasting,enlightened,dialed,devote,deceitful,d'oeuvres,cosmetic,contaminated,conspired,conning,cavern,carving,butting,boiled,blurry,babysit,ascension,aaaaah,wildly,whoopee,whiny,weiskopf,walkie,vultures,vacations,upfront,unresolved,tampering,stockholders,snaps,sleepwalking,shrunk,sermon,seduction,scams,revolve,phenomenal,patrolling,paranormal,ounces,omigod,nightfall,lashing,innocents,infierno,incision,humming,haunts,gloss,gloating,frannie,fetal,feeny,entrapment,discomfort,detonator,dependable,concede,complication,commotion,commence,chulak,caucasian,casually,brainer,bolie,ballpark,anwar,analyzing,accommodations,youse,wring,wallowing,transgenics,thrive,tedious,stylish,strippers,sterile,squeezing,squeaky,sprained,solemn,snoring,shattering,shabby,seams,scrawny,revoked,residue,reeks,recite,ranting,quoting,predicament,plugs,pinpoint,petrified,pathological,passports,oughtta,nighter,navigate,kippie,intrigue,intentional,insufferable,hunky,how've,horrifying,hearty,hamptons,grazie,funerals,forks,fetched,excruciating,enjoyable,endanger,dumber,drying,diabolical,crossword,corry,comprehend,clipped,classmates,candlelight,brutally,brutality,boarded,bathrobe,authorize,assemble,aerobics,wholesome,whiff,vermin,trophies,trait,tragically,toying,testy,tasteful,stocked,spinach,sipping,sidetracked,scrubbing,scraping,sanctity,robberies,ridin,retribution,refrain,realities,radiant,protesting,projector,plutonium,payin,parting,o'reilly,nooooo,motherfucking,measly,manic,lalita,juggling,jerking,intro,inevitably,hypnosis,huddle,horrendous,hobbies,heartfelt,harlin,hairdresser,gonorrhea,fussing,furtwangler,fleeting,flawless,flashed,fetus,eulogy,distinctly,disrespectful,denies,crossbow,cregg,crabs,cowardly,contraction,contingency,confirming,condone,coffins,cleansing,cheesecake,certainty,cages,c'est,briefed,bravest,bosom,boils,binoculars,bachelorette,appetizer,ambushed,alerted,woozy,withhold,vulgar,utmost,unleashed,unholy,unhappiness,unconditional,typewriter,typed,twists,supermodel,subpoenaed,stringing,skeptical,schoolgirl,romantically,rocked,revoir,reopen,puncture,preach,polished,planetarium,penicillin,peacefully,nurturing,more'n,mmhmm,midgets,marklar,lodged,lifeline,jellyfish,infiltrate,hutch,horseback,heist,gents,frickin,freezes,forfeit,flakes,flair,fathered,eternally,epiphany,disgruntled,discouraged,delinquent,decipher,danvers,cubes,credible,coping,chills,cherished,catastrophe,bombshell,birthright,billionaire,ample,affections,admiration,abbotts,whatnot,watering,vinegar,unthinkable,unseen,unprepared,unorthodox,underhanded,uncool,timeless,thump,thermometer,theoretically,tapping,tagged,swung,stares,spiked,solves,smuggle,scarier,saucer,quitter,prudent,powdered,poked,pointers,peril,penetrate,penance,opium,nudge,nostrils,neurological,mockery,mobster,medically,loudly,insights,implicate,hypocritical,humanly,holiness,healthier,hammered,haldeman,gunman,gloom,freshly,francs,flunked,flawed,emptiness,drugging,dozer,derevko,deprive,deodorant,cryin,crocodile,coloring,colder,cognac,clocked,clippings,charades,chanting,certifiable,caterers,brute,brochures,botched,blinders,bitchin,banter,woken,ulcer,tread,thankfully,swine,swimsuit,swans,stressing,steaming,stamped,stabilize,squirm,snooze,shuffle,shredded,seafood,scratchy,savor,sadistic,rhetorical,revlon,realist,prosecuting,prophecies,polyester,petals,persuasion,paddles,o'leary,nuthin,neighbour,negroes,muster,meningitis,matron,lockers,letterman,legged,indictment,hypnotized,housekeeping,hopelessly,hallucinations,grader,goldilocks,girly,flask,envelopes,downside,doves,dissolve,discourage,disapprove,diabetic,deliveries,decorator,crossfire,criminally,containment,comrades,complimentary,chatter,catchy,cashier,cartel,caribou,cardiologist,brawl,booted,barbershop,aryan,angst,administer,zellie,wreak,whistles,vandalism,vamps,uterus,upstate,unstoppable,understudy,tristin,transcript,tranquilizer,toxins,tonsils,stempel,spotting,spectator,spatula,softer,snotty,slinging,showered,sexiest,sensual,sadder,rimbaud,restrain,resilient,remission,reinstate,rehash,recollection,rabies,popsicle,plausible,pediatric,patronizing,ostrich,ortolani,oooooh,omelette,mistrial,marseilles,loophole,laughin,kevvy,irritated,infidelity,hypothermia,horrific,groupie,grinding,graceful,goodspeed,gestures,frantic,extradition,echelon,disks,dawnie,dared,damsel,curled,collateral,collage,chant,calculating,bumping,bribes,boardwalk,blinds,blindly,bleeds,bickering,beasts,backside,avenge,apprehended,anguish,abusing,youthful,yells,yanking,whomever,when'd,vomiting,vengeful,unpacking,unfamiliar,undying,tumble,trolls,treacherous,tipping,tantrum,tanked,summons,straps,stomped,stinkin,stings,staked,squirrels,sprinkles,speculate,sorting,skinned,sicko,sicker,shootin,shatter,seeya,schnapps,s'posed,ronee,respectful,regroup,regretting,reeling,reckoned,ramifications,puddy,projections,preschool,plissken,platonic,permalash,outdone,outburst,mutants,mugging,misfortune,miserably,miraculously,medications,margaritas,manpower,lovemaking,logically,leeches,latrine,kneel,inflict,impostor,hypocrisy,hippies,heterosexual,heightened,hecuba,healer,gunned,grooming,groin,gooey,gloomy,frying,friendships,fredo,firepower,fathom,exhaustion,evils,endeavor,eggnog,dreaded,d'arcy,crotch,coughing,coronary,cookin,consummate,congrats,companionship,caved,caspar,bulletproof,brilliance,breakin,brash,blasting,aloud,airtight,advising,advertise,adultery,aches,wronged,upbeat,trillion,thingies,tending,tarts,surreal,specs,specialize,spade,shrew,shaping,selves,schoolwork,roomie,recuperating,rabid,quart,provocative,proudly,pretenses,prenatal,pharmaceuticals,pacing,overworked,originals,nicotine,murderous,mileage,mayonnaise,massages,losin,interrogated,injunction,impartial,homing,heartbreaker,hacks,glands,giver,fraizh,flips,flaunt,englishman,electrocuted,dusting,ducking,drifted,donating,cylon,crutches,crates,cowards,comfortably,chummy,chitchat,childbirth,businesswoman,brood,blatant,bethy,barring,bagged,awakened,asbestos,airplanes,worshipped,winnings,why're,visualize,unprotected,unleash,trays,thicker,therapists,takeoff,streisand,storeroom,stethoscope,stacked,spiteful,sneaks,snapping,slaughtered,slashed,simplest,silverware,shits,secluded,scruples,scrubs,scraps,ruptured,roaring,receptionist,recap,raditch,radiator,pushover,plastered,pharmacist,perverse,perpetrator,ornament,ointment,nineties,napping,nannies,mousse,moors,momentary,misunderstandings,manipulator,malfunction,laced,kivar,kickin,infuriating,impressionable,holdup,hires,hesitated,headphones,hammering,groundwork,grotesque,graces,gauze,gangsters,frivolous,freeing,fours,forwarding,ferrars,faulty,fantasizing,extracurricular,empathy,divorces,detonate,depraved,demeaning,deadlines,dalai,cursing,cufflink,crows,coupons,comforted,claustrophobic,casinos,camped,busboy,bluth,bennetts,baskets,attacker,aplastic,angrier,affectionate,zapped,wormhole,weaken,unrealistic,unravel,unimportant,unforgettable,twain,suspend,superbowl,stutter,stewardess,stepson,standin,spandex,souvenirs,sociopath,skeletons,shivering,sexier,selfishness,scrapbook,ritalin,ribbons,reunite,remarry,relaxation,rattling,rapist,psychosis,prepping,poses,pleasing,pisses,piling,persecuted,padded,operatives,negotiator,natty,menopause,mennihan,martimmys,loyalties,laynie,lando,justifies,intimately,inexperienced,impotent,immortality,horrors,hooky,hinges,heartbreaking,handcuffed,gypsies,guacamole,grovel,graziella,goggles,gestapo,fussy,ferragamo,feeble,eyesight,explosions,experimenting,enchanting,doubtful,dizziness,dismantle,detectors,deserving,defective,dangling,dancin,crumble,creamed,cramping,conceal,clockwork,chrissakes,chrissake,chopping,cabinets,brooding,bonfire,blurt,bloated,blackmailer,beforehand,bathed,bathe,barcode,banish,badges,babble,await,attentive,aroused,antibodies,animosity,ya'll,wrinkled,wonderland,willed,whisk,waltzing,waitressing,vigilant,upbringing,unselfish,uncles,trendy,trajectory,striped,stamina,stalled,staking,stacks,spoils,snuff,snooty,snide,shrinking,senora,secretaries,scoundrel,saline,salads,rundown,riddles,relapse,recommending,raspberry,plight,pecan,pantry,overslept,ornaments,niner,negligent,negligence,nailing,mucho,mouthed,monstrous,malpractice,lowly,loitering,logged,lingering,lettin,lattes,kamal,juror,jillefsky,jacked,irritate,intrusion,insatiable,infect,impromptu,icing,hmmmm,hefty,gasket,frightens,flapping,firstborn,faucet,estranged,envious,dopey,doesn,disposition,disposable,disappointments,dipped,dignified,deceit,dealership,deadbeat,curses,coven,counselors,concierge,clutches,casbah,callous,cahoots,brotherly,britches,brides,bethie,beige,autographed,attendants,attaboy,astonishing,appreciative,antibiotic,aneurysm,afterlife,affidavit,zoning,whats,whaddaya,vasectomy,unsuspecting,toula,topanga,tonio,toasted,tiring,terrorized,tenderness,tailing,sweats,suffocated,sucky,subconsciously,starvin,sprouts,spineless,sorrows,snowstorm,smirk,slicery,sledding,slander,simmer,signora,sigmund,seventies,sedate,scented,sandals,rollers,retraction,resigning,recuperate,receptive,racketeering,queasy,provoking,priors,prerogative,premed,pinched,pendant,outsiders,orbing,opportunist,olanov,neurologist,nanobot,mommies,molested,misread,mannered,laundromat,intercom,inspect,insanely,infatuation,indulgent,indiscretion,inconsiderate,hurrah,howling,herpes,hasta,harassed,hanukkah,groveling,groosalug,gander,galactica,futile,fridays,flier,fixes,exploiting,exorcism,evasive,endorse,emptied,dreary,dreamy,downloaded,dodged,doctored,disobeyed,disneyland,disable,dehydrated,contemplating,coconuts,cockroaches,clogged,chilling,chaperon,cameraman,bulbs,bucklands,bribing,brava,bracelets,bowels,bluepoint,appetizers,appendix,antics,anointed,analogy,almonds,yammering,winch,weirdness,wangler,vibrations,vendor,unmarked,unannounced,twerp,trespass,travesty,transfusion,trainee,towelie,tiresome,straightening,staggering,sonar,socializing,sinus,sinners,shambles,serene,scraped,scones,scepter,sarris,saberhagen,ridiculously,ridicule,rents,reconciled,radios,publicist,pubes,prune,prude,precrime,postponing,pluck,perish,peppermint,peeled,overdo,nutshell,nostalgic,mulan,mouthing,mistook,meddle,maybourne,martimmy,lobotomy,livelihood,lippman,likeness,kindest,kaffee,jocks,jerked,jeopardizing,jazzed,insured,inquisition,inhale,ingenious,holier,helmets,heirloom,heinous,haste,harmsway,hardship,hanky,gutters,gruesome,groping,goofing,godson,glare,finesse,figuratively,ferrie,endangerment,dreading,dozed,dorky,dmitri,divert,discredit,dialing,cufflinks,crutch,craps,corrupted,cocoon,cleavage,cannery,bystander,brushes,bruising,bribery,brainstorm,bolted,binge,ballistics,astute,arroway,adventurous,adoptive,addicts,addictive,yadda,whitelighters,wematanye,weeds,wedlock,wallets,vulnerability,vroom,vents,upped,unsettling,unharmed,trippin,trifle,tracing,tormenting,thats,syphilis,subtext,stickin,spices,sores,smacked,slumming,sinks,signore,shitting,shameful,shacked,septic,seedy,righteousness,relish,rectify,ravishing,quickest,phoebs,perverted,peeing,pedicure,pastrami,passionately,ozone,outnumbered,oregano,offender,nukes,nosed,nighty,nifty,mounties,motivate,moons,misinterpreted,mercenary,mentality,marsellus,lupus,lumbar,lovesick,lobsters,leaky,laundering,latch,jafar,instinctively,inspires,indoors,incarcerated,hundredth,handkerchief,gynecologist,guittierez,groundhog,grinning,goodbyes,geese,fullest,eyelashes,eyelash,enquirer,endlessly,elusive,disarm,detest,deluding,dangle,cotillion,corsage,conjugal,confessional,cones,commandment,coded,coals,chuckle,christmastime,cheeseburgers,chardonnay,celery,campfire,calming,burritos,brundle,broflovski,brighten,borderline,blinked,bling,beauties,bauers,battered,articulate,alienated,ahhhhh,agamemnon,accountants,y'see,wrongful,wrapper,workaholic,winnebago,whispered,warts,vacate,unworthy,unanswered,tonane,tolerated,throwin,throbbing,thrills,thorns,thereof,there've,tarot,sunscreen,stretcher,stereotype,soggy,sobbing,sizable,sightings,shucks,shrapnel,sever,senile,seaboard,scorned,saver,rebellious,rained,putty,prenup,pores,pinching,pertinent,peeping,paints,ovulating,opposites,occult,nutcracker,nutcase,newsstand,newfound,mocked,midterms,marshmallow,marbury,maclaren,leans,krudski,knowingly,keycard,junkies,juilliard,jolinar,irritable,invaluable,inuit,intoxicating,instruct,insolent,inexcusable,incubator,illustrious,hunsecker,houseguest,homosexuals,homeroom,hernia,harming,handgun,hallways,hallucination,gunshots,groupies,groggy,goiter,gingerbread,giggling,frigging,fledged,fedex,fairies,exchanging,exaggeration,esteemed,enlist,drags,dispense,disloyal,disconnect,desks,dentists,delacroix,degenerate,daydreaming,cushions,cuddly,corroborate,complexion,compensated,cobbler,closeness,chilled,checkmate,channing,carousel,calms,bylaws,benefactor,ballgame,baiting,backstabbing,artifact,airspace,adversary,actin,accuses,accelerant,abundantly,abstinence,zissou,zandt,yapping,witchy,willows,whadaya,vilandra,veiled,undress,undivided,underestimating,ultimatums,twirl,truckload,tremble,toasting,tingling,tents,tempered,sulking,stunk,sponges,spills,softly,snipers,scourge,rooftop,riana,revolting,revisit,refreshments,redecorating,recapture,raysy,pretense,prejudiced,precogs,pouting,poofs,pimple,piles,pediatrician,padre,packets,paces,orvelle,oblivious,objectivity,nighttime,nervosa,mexicans,meurice,melts,matchmaker,maeby,lugosi,lipnik,leprechaun,kissy,kafka,introductions,intestines,inspirational,insightful,inseparable,injections,inadvertently,hussy,huckabees,hittin,hemorrhaging,headin,haystack,hallowed,grudges,granilith,grandkids,grading,gracefully,godsend,gobbles,fragrance,fliers,finchley,farts,eyewitnesses,expendable,existential,dorms,delaying,degrading,deduction,darlings,danes,cylons,counsellor,contraire,consciously,conjuring,congratulating,cokes,buffay,brooch,bitching,bistro,bijou,bewitched,benevolent,bends,bearings,barren,aptitude,amish,amazes,abomination,worldly,whispers,whadda,wayward,wailing,vanishing,upscale,untouchable,unspoken,uncontrollable,unavoidable,unattended,trite,transvestite,toupee,timid,timers,terrorizing,swana,stumped,strolling,storybook,storming,stomachs,stoked,stationery,springtime,spontaneity,spits,spins,soaps,sentiments,scramble,scone,rooftops,retract,reflexes,rawdon,ragged,quirky,quantico,psychologically,prodigal,pounce,potty,pleasantries,pints,petting,perceive,onstage,notwithstanding,nibble,newmans,neutralize,mutilated,millionaires,mayflower,masquerade,mangy,macreedy,lunatics,lovable,locating,limping,lasagna,kwang,keepers,juvie,jaded,ironing,intuitive,intensely,insure,incantation,hysteria,hypnotize,humping,happenin,griet,grasping,glorified,ganging,g'night,focker,flunking,flimsy,flaunting,fixated,fitzwallace,fainting,eyebrow,exonerated,ether,electrician,egotistical,earthly,dusted,dignify,detonation,debrief,dazzling,dan'l,damnedest,daisies,crushes,crucify,contraband,confronting,collapsing,cocked,clicks,cliche,circled,chandelier,carburetor,callers,broads,breathes,bloodshed,blindsided,blabbing,bialystock,bashing,ballerina,aviva,arteries,anomaly,airstrip,agonizing,adjourn,aaaaa,yearning,wrecker,witnessing,whence,warhead,unsure,unheard,unfreeze,unfold,unbalanced,ugliest,troublemaker,toddler,tiptoe,threesome,thirties,thermostat,swipe,surgically,subtlety,stung,stumbling,stubs,stride,strangling,sprayed,socket,smuggled,showering,shhhhh,sabotaging,rumson,rounding,risotto,repairman,rehearsed,ratty,ragging,radiology,racquetball,racking,quieter,quicksand,prowl,prompt,premeditated,prematurely,prancing,porcupine,plated,pinocchio,peeked,peddle,panting,overweight,overrun,outing,outgrown,obsess,nursed,nodding,negativity,negatives,musketeers,mugger,motorcade,merrily,matured,masquerading,marvellous,maniacs,lovey,louse,linger,lilies,lawful,kudos,knuckle,juices,judgments,itches,intolerable,intermission,inept,incarceration,implication,imaginative,huckleberry,holster,heartburn,gunna,groomed,graciously,fulfillment,fugitives,forsaking,forgives,foreseeable,flavors,flares,fixation,fickle,fantasize,famished,fades,expiration,exclamation,erasing,eiffel,eerie,earful,duped,dulles,dissing,dissect,dispenser,dilated,detergent,desdemona,debriefing,damper,curing,crispina,crackpot,courting,cordial,conflicted,comprehension,commie,cleanup,chiropractor,charmer,chariot,cauldron,catatonic,bullied,buckets,brilliantly,breathed,booths,boardroom,blowout,blindness,blazing,biologically,bibles,biased,beseech,barbaric,balraj,audacity,anticipating,alcoholics,airhead,agendas,admittedly,absolution,youre,yippee,wittlesey,withheld,willful,whammy,weakest,washes,virtuous,videotapes,vials,unplugged,unpacked,unfairly,turbulence,tumbling,tricking,tremendously,traitors,torches,tinga,thyroid,teased,tawdry,taker,sympathies,swiped,sundaes,suave,strut,stepdad,spewing,spasm,socialize,slither,simulator,shutters,shrewd,shocks,semantics,schizophrenic,scans,savages,rya'c,runny,ruckus,royally,roadblocks,rewriting,revoke,repent,redecorate,recovers,recourse,ratched,ramali,racquet,quince,quiche,puppeteer,puking,puffed,problemo,praises,pouch,postcards,pooped,poised,piled,phoney,phobia,patching,parenthood,pardner,oozing,ohhhhh,numbing,nostril,nosey,neatly,nappa,nameless,mortuary,moronic,modesty,midwife,mcclane,matuka,maitre,lumps,lucid,loosened,loins,lawnmower,lamotta,kroehner,jinxy,jessep,jamming,jailhouse,jacking,intruders,inhuman,infatuated,indigestion,implore,implanted,hormonal,hoboken,hillbilly,heartwarming,headway,hatched,hartmans,harping,grapevine,gnome,forties,flyin,flirted,fingernail,exhilarating,enjoyment,embark,dumper,dubious,drell,docking,disillusioned,dishonor,disbarred,dicey,custodial,counterproductive,corned,cords,contemplate,concur,conceivable,cobblepot,chickened,checkout,carpe,cap'n,campers,buyin,bullies,braid,boxed,bouncy,blueberries,blubbering,bloodstream,bigamy,beeped,bearable,autographs,alarming,wretch,wimps,widower,whirlwind,whirl,warms,vandelay,unveiling,undoing,unbecoming,turnaround,touche,togetherness,tickles,ticker,teensy,taunt,sweethearts,stitched,standpoint,staffers,spotless,soothe,smothered,sickening,shouted,shepherds,shawl,seriousness,schooled,schoolboy,s'mores,roped,reminders,raggedy,preemptive,plucked,pheromones,particulars,pardoned,overpriced,overbearing,outrun,ohmigod,nosing,nicked,neanderthal,mosquitoes,mortified,milky,messin,mecha,markinson,marivellas,mannequin,manderley,madder,macready,lookie,locusts,lifetimes,lanna,lakhi,kholi,impersonate,hyperdrive,horrid,hopin,hogging,hearsay,harpy,harboring,hairdo,hafta,grasshopper,gobble,gatehouse,foosball,floozy,fished,firewood,finalize,felons,euphemism,entourage,elitist,elegance,drokken,drier,dredge,dossier,diseased,diarrhea,diagnose,despised,defuse,d'amour,contesting,conserve,conscientious,conjured,collars,clogs,chenille,chatty,chamomile,casing,calculator,brittle,breached,blurted,birthing,bikinis,astounding,assaulting,aroma,appliance,antsy,amnio,alienating,aliases,adolescence,xerox,wrongs,workload,willona,whistling,werewolves,wallaby,unwelcome,unseemly,unplug,undermining,ugliness,tyranny,tuesdays,trumpets,transference,ticks,tangible,tagging,swallowing,superheroes,studs,strep,stowed,stomping,steffy,sprain,spouting,sponsoring,sneezing,smeared,slink,shakin,sewed,seatbelt,scariest,scammed,sanctimonious,roasting,rightly,retinal,rethinking,resented,reruns,remover,racks,purest,progressing,presidente,preeclampsia,postponement,portals,poppa,pliers,pinning,pelvic,pampered,padding,overjoyed,ooooo,one'll,octavius,nonono,nicknames,neurosurgeon,narrows,misled,mislead,mishap,milltown,milking,meticulous,mediocrity,meatballs,machete,lurch,layin,knockin,khruschev,jurors,jumpin,jugular,jeweler,intellectually,inquiries,indulging,indestructible,indebted,imitate,ignores,hyperventilating,hyenas,hurrying,hermano,hellish,heheh,harshly,handout,grunemann,glances,giveaway,getup,gerome,furthest,frosting,frail,forwarded,forceful,flavored,flammable,flaky,fingered,fatherly,ethic,embezzlement,duffel,dotted,distressed,disobey,disappearances,dinky,diminish,diaphragm,deuces,creme,courteous,comforts,coerced,clots,clarification,chunks,chickie,chases,chaperoning,cartons,caper,calves,caged,bustin,bulging,bringin,boomhauer,blowin,blindfolded,biscotti,ballplayer,bagging,auster,assurances,aschen,arraigned,anonymity,alters,albatross,agreeable,adoring,abduct,wolfi,weirded,watchers,washroom,warheads,vincennes,urgency,understandably,uncomplicated,uhhhh,twitching,treadmill,thermos,tenorman,tangle,talkative,swarm,surrendering,summoning,strive,stilts,stickers,squashed,spraying,sparring,soaring,snort,sneezed,slaps,skanky,singin,sidle,shreck,shortness,shorthand,sharper,shamed,sadist,rydell,rusik,roulette,resumes,respiration,recount,reacts,purgatory,princesses,presentable,ponytail,plotted,pinot,pigtails,phillippe,peddling,paroled,orbed,offends,o'hara,moonlit,minefield,metaphors,malignant,mainframe,magicks,maggots,maclaine,loathing,leper,leaps,leaping,lashed,larch,larceny,lapses,ladyship,juncture,jiffy,jakov,invoke,infantile,inadmissible,horoscope,hinting,hideaway,hesitating,heddy,heckles,hairline,gripe,gratifying,governess,goebbels,freddo,foresee,fascination,exemplary,executioner,etcetera,escorts,endearing,eaters,earplugs,draped,disrupting,disagrees,dimes,devastate,detain,depositions,delicacy,darklighter,cynicism,cyanide,cutters,cronus,continuance,conquering,confiding,compartments,combing,cofell,clingy,cleanse,christmases,cheered,cheekbones,buttle,burdened,bruenell,broomstick,brained,bozos,bontecou,bluntman,blazes,blameless,bizarro,bellboy,beaucoup,barkeep,awaken,astray,assailant,appease,aphrodisiac,alleys,yesss,wrecks,woodpecker,wondrous,wimpy,willpower,wheeling,weepy,waxing,waive,videotaped,veritable,untouched,unlisted,unfounded,unforeseen,twinge,triggers,traipsing,toxin,tombstone,thumping,therein,testicles,telephones,tarmac,talby,tackled,swirling,suicides,suckered,subtitles,sturdy,strangler,stockbroker,stitching,steered,standup,squeal,sprinkler,spontaneously,splendor,spiking,spender,snipe,snagged,skimming,siddown,showroom,shovels,shotguns,shoelaces,shitload,shellfish,sharpest,shadowy,seizing,scrounge,scapegoat,sayonara,saddled,rummaging,roomful,renounce,reconsidered,recharge,realistically,radioed,quirks,quadrant,punctual,practising,pours,poolhouse,poltergeist,pocketbook,plainly,picnics,pesto,pawing,passageway,partied,oneself,numero,nostalgia,nitwit,neuro,mixer,meanest,mcbeal,matinee,margate,marce,manipulations,manhunt,manger,magicians,loafers,litvack,lightheaded,lifeguard,lawns,laughingstock,ingested,indignation,inconceivable,imposition,impersonal,imbecile,huddled,housewarming,horizons,homicides,hiccups,hearse,hardened,gushing,gushie,greased,goddamit,freelancer,forging,fondue,flustered,flung,flinch,flicker,fixin,festivus,fertilizer,farted,faggots,exonerate,evict,enormously,encrypted,emdash,embracing,duress,dupres,dowser,doormat,disfigured,disciplined,dibbs,depository,deathbed,dazzled,cuttin,cures,crowding,crepe,crammed,copycat,contradict,confidant,condemning,conceited,commute,comatose,clapping,circumference,chuppah,chore,choksondik,chestnuts,briault,bottomless,bonnet,blokes,berluti,beret,beggars,bankroll,bania,athos,arsenic,apperantly,ahhhhhh,afloat,accents,zipped,zeros,zeroes,zamir,yuppie,youngsters,yorkers,wisest,wipes,wield,whyn't,weirdos,wednesdays,vicksburg,upchuck,untraceable,unsupervised,unpleasantness,unhook,unconscionable,uncalled,trappings,tragedies,townie,thurgood,things'll,thine,tetanus,terrorize,temptations,tanning,tampons,swarming,straitjacket,steroid,startling,starry,squander,speculating,sollozzo,sneaked,slugs,skedaddle,sinker,silky,shortcomings,sellin,seasoned,scrubbed,screwup,scrapes,scarves,sandbox,salesmen,rooming,romances,revere,reproach,reprieve,rearranging,ravine,rationalize,raffle,punchy,psychobabble,provocation,profoundly,prescriptions,preferable,polishing,poached,pledges,pirelli,perverts,oversized,overdressed,outdid,nuptials,nefarious,mouthpiece,motels,mopping,mongrel,missin,metaphorically,mertin,memos,melodrama,melancholy,measles,meaner,mantel,maneuvering,mailroom,luring,listenin,lifeless,licks,levon,legwork,kneecaps,kippur,kiddie,kaput,justifiable,insistent,insidious,innuendo,innit,indecent,imaginable,horseshit,hemorrhoid,hella,healthiest,haywire,hamsters,hairbrush,grouchy,grisly,gratuitous,glutton,glimmer,gibberish,ghastly,gentler,generously,geeky,fuhrer,fronting,foolin,faxes,faceless,extinguisher,expel,etched,endangering,ducked,dodgeball,dives,dislocated,discrepancy,devour,derail,dementia,daycare,cynic,crumbling,cowardice,covet,cornwallis,corkscrew,cookbook,commandments,coincidental,cobwebs,clouded,clogging,clicking,clasp,chopsticks,chefs,chaps,cashing,carat,calmer,brazen,brainwashing,bradys,bowing,boned,bloodsucking,bleachers,bleached,bedpan,bearded,barrenger,bachelors,awwww,assures,assigning,asparagus,apprehend,anecdote,amoral,aggravation,afoot,acquaintances,accommodating,yakking,worshipping,wladek,willya,willies,wigged,whoosh,whisked,watered,warpath,volts,violates,valuables,uphill,unwise,untimely,unsavory,unresponsive,unpunished,unexplained,tubby,trolling,toxicology,tormented,toothache,tingly,timmiihh,thursdays,thoreau,terrifies,temperamental,telegrams,talkie,takers,symbiote,swirl,suffocate,stupider,strapping,steckler,springing,someway,sleepyhead,sledgehammer,slant,slams,showgirl,shoveling,shmoopy,sharkbait,shan't,scrambling,schematics,sandeman,sabbatical,rummy,reykjavik,revert,responsive,rescheduled,requisition,relinquish,rejoice,reckoning,recant,rebadow,reassurance,rattlesnake,ramble,primed,pricey,prance,pothole,pocus,persist,perpetrated,pekar,peeling,pastime,parmesan,pacemaker,overdrive,ominous,observant,nothings,noooooo,nonexistent,nodded,nieces,neglecting,nauseating,mutated,musket,mumbling,mowing,mouthful,mooseport,monologue,mistrust,meetin,masseuse,mantini,mailer,madre,lowlifes,locksmith,livid,liven,limos,liberating,lhasa,leniency,leering,laughable,lashes,lasagne,laceration,korben,katan,kalen,jittery,jammies,irreplaceable,intubate,intolerant,inhaler,inhaled,indifferent,indifference,impound,impolite,humbly,heroics,heigh,guillotine,guesthouse,grounding,grips,gossiping,goatee,gnomes,gellar,frutt,frobisher,freudian,foolishness,flagged,femme,fatso,fatherhood,fantasized,fairest,faintest,eyelids,extravagant,extraterrestrial,extraordinarily,escalator,elevate,drivel,dissed,dismal,disarray,dinnertime,devastation,dermatologist,delicately,defrost,debutante,debacle,damone,dainty,cuvee,culpa,crucified,creeped,crayons,courtship,convene,congresswoman,concocted,compromises,comprende,comma,coleslaw,clothed,clinically,chickenshit,checkin,cesspool,caskets,calzone,brothel,boomerang,bodega,blasphemy,bitsy,bicentennial,berlini,beatin,beards,barbas,barbarians,backpacking,arrhythmia,arousing,arbitrator,antagonize,angling,anesthetic,altercation,aggressor,adversity,acathla,aaahhh,wreaking,workup,wonderin,wither,wielding,what'm,what'cha,waxed,vibrating,veterinarian,venting,vasey,valor,validate,upholstery,untied,unscathed,uninterrupted,unforgiving,undies,uncut,twinkies,tucking,treatable,treasured,tranquility,townspeople,torso,tomei,tipsy,tinsel,tidings,thirtieth,tantrums,tamper,talky,swayed,swapping,suitor,stylist,stirs,standoff,sprinklers,sparkly,snobby,snatcher,smoother,sleepin,shrug,shoebox,sheesh,shackles,setbacks,sedatives,screeching,scorched,scanned,satyr,roadblock,riverbank,ridiculed,resentful,repellent,recreate,reconvene,rebuttal,realmedia,quizzes,questionnaire,punctured,pucker,prolong,professionalism,pleasantly,pigsty,penniless,paychecks,patiently,parading,overactive,ovaries,orderlies,oracles,oiled,offending,nudie,neonatal,neighborly,moops,moonlighting,mobilize,mmmmmm,milkshake,menial,meats,mayan,maxed,mangled,magua,lunacy,luckier,liters,lansbury,kooky,knowin,jeopardized,inkling,inhalation,inflated,infecting,incense,inbound,impractical,impenetrable,idealistic,i'mma,hypocrites,hurtin,humbled,hologram,hokey,hocus,hitchhiking,hemorrhoids,headhunter,hassled,harts,hardworking,haircuts,hacksaw,genitals,gazillion,gammy,gamesphere,fugue,footwear,folly,flashlights,fives,filet,extenuating,estrogen,entails,embezzled,eloquent,egomaniac,ducts,drowsy,drones,doree,donovon,disguises,diggin,deserting,depriving,defying,deductible,decorum,decked,daylights,daybreak,dashboard,damnation,cuddling,crunching,crickets,crazies,councilman,coughed,conundrum,complimented,cohaagen,clutching,clued,clader,cheques,checkpoint,chats,channeling,ceases,carasco,capisce,cantaloupe,cancelling,campsite,burglars,breakfasts,bra'tac,blueprint,bleedin,blabbed,beneficiary,basing,avert,atone,arlyn,approves,apothecary,antiseptic,aleikuum,advisement,zadir,wobbly,withnail,whattaya,whacking,wedged,wanders,vaginal,unimaginable,undeniable,unconditionally,uncharted,unbridled,tweezers,tvmegasite,trumped,triumphant,trimming,treading,tranquilizers,toontown,thunk,suture,suppressing,strays,stonewall,stogie,stepdaughter,stace,squint,spouses,splashed,speakin,sounder,sorrier,sorrel,sombrero,solemnly,softened,snobs,snippy,snare,smoothing,slump,slimeball,slaving,silently,shiller,shakedown,sensations,scrying,scrumptious,screamin,saucy,santoses,roundup,roughed,rosary,robechaux,retrospect,rescind,reprehensible,repel,remodeling,reconsidering,reciprocate,railroaded,psychics,promos,prob'ly,pristine,printout,priestess,prenuptial,precedes,pouty,phoning,peppy,pariah,parched,panes,overloaded,overdoing,nymphs,nother,notebooks,nearing,nearer,monstrosity,milady,mieke,mephesto,medicated,marshals,manilow,mammogram,m'lady,lotsa,loopy,lesion,lenient,learner,laszlo,kross,kinks,jinxed,involuntary,insubordination,ingrate,inflatable,incarnate,inane,hypoglycemia,huntin,humongous,hoodlum,honking,hemorrhage,helpin,hathor,hatching,grotto,grandmama,gorillas,godless,girlish,ghouls,gershwin,frosted,flutter,flagpole,fetching,fatter,faithfully,exert,evasion,escalate,enticing,enchantress,elopement,drills,downtime,downloading,dorks,doorways,divulge,dissociative,disgraceful,disconcerting,deteriorate,destinies,depressive,dented,denim,decruz,decidedly,deactivate,daydreams,curls,culprit,cruelest,crippling,cranberries,corvis,copped,commend,coastguard,cloning,cirque,churning,chock,chivalry,catalogues,cartwheels,carols,canister,buttered,bundt,buljanoff,bubbling,brokers,broaden,brimstone,brainless,bores,badmouthing,autopilot,ascertain,aorta,ampata,allenby,accosted,absolve,aborted,aaagh,aaaaaah,yonder,yellin,wyndham,wrongdoing,woodsboro,wigging,wasteland,warranty,waltzed,walnuts,vividly,veggie,unnecessarily,unloaded,unicorns,understated,unclean,umbrellas,twirling,turpentine,tupperware,triage,treehouse,tidbit,tickled,threes,thousandth,thingie,terminally,teething,tassel,talkies,swoon,switchboard,swerved,suspiciously,subsequentlyne,subscribe,strudel,stroking,strictest,stensland,starin,stannart,squirming,squealing,sorely,softie,snookums,sniveling,smidge,sloth,skulking,simian,sightseeing,siamese,shudder,shoppers,sharpen,shannen,semtex,secondhand,seance,scowl,scorn,safekeeping,russe,rummage,roshman,roomies,roaches,rinds,retrace,retires,resuscitate,rerun,reputations,rekall,refreshment,reenactment,recluse,ravioli,raves,raking,purses,punishable,punchline,puked,prosky,previews,poughkeepsie,poppins,polluted,placenta,pissy,petulant,perseverance,pears,pawns,pastries,partake,panky,palate,overzealous,orchids,obstructing,objectively,obituaries,obedient,nothingness,musty,motherly,mooning,momentous,mistaking,minutemen,milos,microchip,meself,merciless,menelaus,mazel,masturbate,mahogany,lysistrata,lillienfield,likable,liberate,leveled,letdown,larynx,lardass,lainey,lagged,klorel,kidnappings,keyed,karmic,jeebies,irate,invulnerable,intrusive,insemination,inquire,injecting,informative,informants,impure,impasse,imbalance,illiterate,hurled,hunts,hematoma,headstrong,handmade,handiwork,growling,gorky,getcha,gesundheit,gazing,galley,foolishly,fondness,floris,ferocious,feathered,fateful,fancies,fakes,faker,expire,ever'body,essentials,eskimos,enlightening,enchilada,emissary,embolism,elsinore,ecklie,drenched,drazi,doped,dogging,doable,dislikes,dishonesty,disengage,discouraging,derailed,deformed,deflect,defer,deactivated,crips,constellations,congressmen,complimenting,clubbing,clawing,chromium,chimes,chews,cheatin,chaste,cellblock,caving,catered,catacombs,calamari,bucking,brulee,brits,brisk,breezes,bounces,boudoir,binks,better'n,bellied,behrani,behaves,bedding,balmy,badmouth,backers,avenging,aromatherapy,armpit,armoire,anythin,anonymously,anniversaries,aftershave,affliction,adrift,admissible,adieu,acquittal,yucky,yearn,whitter,whirlpool,wendigo,watchdog,wannabes,wakey,vomited,voicemail,valedictorian,uttered,unwed,unrequited,unnoticed,unnerving,unkind,unjust,uniformed,unconfirmed,unadulterated,unaccounted,uglier,turnoff,trampled,tramell,toads,timbuktu,throwback,thimble,tasteless,tarantula,tamale,takeovers,swish,supposing,streaking,stargher,stanzi,stabs,squeamish,splattered,spiritually,spilt,speciality,smacking,skywire,skips,skaara,simpatico,shredding,showin,shortcuts,shite,shielding,shamelessly,serafine,sentimentality,seasick,schemer,scandalous,sainted,riedenschneider,rhyming,revel,retractor,retards,resurrect,remiss,reminiscing,remanded,reiben,regains,refuel,refresher,redoing,redheaded,reassured,rearranged,rapport,qumar,prowling,prejudices,precarious,powwow,pondering,plunger,plunged,pleasantville,playpen,phlegm,perfected,pancreas,paley,ovary,outbursts,oppressed,ooohhh,omoroca,offed,o'toole,nurture,nursemaid,nosebleed,necktie,muttering,munchies,mucking,mogul,mitosis,misdemeanor,miscarried,millionth,migraines,midler,manicurist,mandelbaum,manageable,malfunctioned,magnanimous,loudmouth,longed,lifestyles,liddy,lickety,leprechauns,komako,klute,kennel,justifying,irreversible,inventing,intergalactic,insinuate,inquiring,ingenuity,inconclusive,incessant,improv,impersonation,hyena,humperdinck,hubba,housework,hoffa,hither,hissy,hippy,hijacked,heparin,hellooo,hearth,hassles,hairstyle,hahahaha,hadda,guys'll,gutted,gulls,gritty,grievous,graft,gossamer,gooder,gambled,gadgets,fundamentals,frustrations,frolicking,frock,frilly,foreseen,footloose,fondly,flirtation,flinched,flatten,farthest,exposer,evading,escrow,empathize,embryos,embodiment,ellsberg,ebola,dulcinea,dreamin,drawbacks,doting,doose,doofy,disturbs,disorderly,disgusts,detox,denominator,demeanor,deliriously,decode,debauchery,croissant,cravings,cranked,coworkers,councilor,confuses,confiscate,confines,conduit,compress,combed,clouding,clamps,cinch,chinnery,celebratory,catalogs,carpenters,carnal,canin,bundys,bulldozer,buggers,bueller,brainy,booming,bookstores,bloodbath,bittersweet,bellhop,beeping,beanstalk,beady,baudelaire,bartenders,bargains,averted,armadillo,appreciating,appraised,antlers,aloof,allowances,alleyway,affleck,abject,zilch,youore,xanax,wrenching,wouldn,witted,wicca,whorehouse,whooo,whips,vouchers,victimized,vicodin,untested,unsolicited,unfocused,unfettered,unfeeling,unexplainable,understaffed,underbelly,tutorial,tryst,trampoline,towering,tirade,thieving,thang,swimmin,swayzak,suspecting,superstitions,stubbornness,streamers,strattman,stonewalling,stiffs,stacking,spout,splice,sonrisa,smarmy,slows,slicing,sisterly,shrill,shined,seeming,sedley,seatbelts,scour,scold,schoolyard,scarring,salieri,rustling,roxbury,rewire,revved,retriever,reputable,remodel,reins,reincarnation,rance,rafters,rackets,quail,pumbaa,proclaim,probing,privates,pried,prewedding,premeditation,posturing,posterity,pleasurable,pizzeria,pimps,penmanship,penchant,pelvis,overturn,overstepped,overcoat,ovens,outsmart,outed,ooohh,oncologist,omission,offhand,odour,nyazian,notarized,nobody'll,nightie,navel,nabbed,mystique,mover,mortician,morose,moratorium,mockingbird,mobsters,mingling,methinks,messengered,merde,masochist,martouf,martians,marinara,manray,majorly,magnifying,mackerel,lurid,lugging,lonnegan,loathsome,llantano,liberace,leprosy,latinos,lanterns,lamest,laferette,kraut,intestine,innocencia,inhibitions,ineffectual,indisposed,incurable,inconvenienced,inanimate,improbable,implode,hydrant,hustling,hustled,huevos,how'm,hooey,hoods,honcho,hinge,hijack,heimlich,hamunaptra,haladki,haiku,haggle,gutsy,grunting,grueling,gribbs,greevy,grandstanding,godparents,glows,glistening,gimmick,gaping,fraiser,formalities,foreigner,folders,foggy,fitty,fiends,fe'nos,favours,eyeing,extort,expedite,escalating,epinephrine,entitles,entice,eminence,eights,earthlings,eagerly,dunville,dugout,doublemeat,doling,dispensing,dispatcher,discoloration,diners,diddly,dictates,diazepam,derogatory,delights,defies,decoder,dealio,danson,cutthroat,crumbles,croissants,crematorium,craftsmanship,could'a,cordless,cools,conked,confine,concealing,complicates,communique,cockamamie,coasters,clobbered,clipping,clipboard,clemenza,cleanser,circumcision,chanukah,certainaly,cellmate,cancels,cadmium,buzzed,bumstead,bucko,browsing,broth,braver,boggling,bobbing,blurred,birkhead,benet,belvedere,bellies,begrudge,beckworth,banky,baldness,baggy,babysitters,aversion,astonished,assorted,appetites,angina,amiss,ambulances,alibis,airway,admires,adhesive,yoyou,xxxxxx,wreaked,wracking,woooo,wooing,wised,wilshire,wedgie,waging,violets,vincey,uplifting,untrustworthy,unmitigated,uneventful,undressing,underprivileged,unburden,umbilical,tweaking,turquoise,treachery,tosses,torching,toothpick,toasts,thickens,tereza,tenacious,teldar,taint,swill,sweatin,subtly,subdural,streep,stopwatch,stockholder,stillwater,stalkers,squished,squeegee,splinters,spliced,splat,spied,spackle,sophistication,snapshots,smite,sluggish,slithered,skeeters,sidewalks,sickly,shrugs,shrubbery,shrieking,shitless,settin,sentinels,selfishly,scarcely,sangria,sanctum,sahjhan,rustle,roving,rousing,rosomorf,riddled,responsibly,renoir,remoray,remedial,refundable,redirect,recheck,ravenwood,rationalizing,ramus,ramelle,quivering,pyjamas,psychos,provocations,prouder,protestors,prodded,proctologist,primordial,pricks,prickly,precedents,pentangeli,pathetically,parka,parakeet,panicky,overthruster,outsmarted,orthopedic,oncoming,offing,nutritious,nuthouse,nourishment,nibbling,newlywed,narcissist,mutilation,mundane,mummies,mumble,mowed,morvern,mortem,mopes,molasses,misplace,miscommunication,miney,midlife,menacing,memorizing,massaging,masking,magnets,luxuries,lounging,lothario,liposuction,lidocaine,libbets,levitate,leeway,launcelot,larek,lackeys,kumbaya,kryptonite,knapsack,keyhole,katarangura,juiced,jakey,ironclad,invoice,intertwined,interlude,interferes,injure,infernal,indeedy,incur,incorrigible,incantations,impediment,igloo,hysterectomy,hounded,hollering,hindsight,heebie,havesham,hasenfuss,hankering,hangers,hakuna,gutless,gusto,grubbing,grrrr,grazed,gratification,grandeur,gorak,godammit,gnawing,glanced,frostbite,frees,frazzled,fraulein,fraternizing,fortuneteller,formaldehyde,followup,foggiest,flunky,flickering,firecrackers,figger,fetuses,fates,eyeliner,extremities,extradited,expires,exceedingly,evaporate,erupt,epileptic,entrails,emporium,egregious,eggshells,easing,duwayne,droll,dreyfuss,dovey,doubly,doozy,donkeys,donde,distrust,distressing,disintegrate,discreetly,decapitated,dealin,deader,dashed,darkroom,dares,daddies,dabble,cushy,cupcakes,cuffed,croupier,croak,crapped,coursing,coolers,contaminate,consummated,construed,condos,concoction,compulsion,commish,coercion,clemency,clairvoyant,circulate,chesterton,checkered,charlatan,chaperones,categorically,cataracts,carano,capsules,capitalize,burdon,bullshitting,brewed,breathless,breasted,brainstorming,bossing,borealis,bonsoir,bobka,boast,blimp,bleep,bleeder,blackouts,bisque,billboards,beatings,bayberry,bashed,bamboozled,balding,baklava,baffled,backfires,babak,awkwardness,attest,attachments,apologizes,anyhoo,antiquated,alcante,advisable,aahhh,aaahh,zatarc,yearbooks,wuddya,wringing,womanhood,witless,winging,whatsa,wetting,waterproof,wastin,vogelman,vocation,vindicated,vigilance,vicariously,venza,vacuuming,utensils,uplink,unveil,unloved,unloading,uninhibited,unattached,tweaked,turnips,trinkets,toughen,toting,topside,terrors,terrify,technologically,tarnish,tagliati,szpilman,surly,supple,summation,suckin,stepmom,squeaking,splashmore,souffle,solitaire,solicitation,solarium,smokers,slugged,slobbering,skylight,skimpy,sinuses,silenced,sideburns,shrinkage,shoddy,shhhhhh,shelled,shareef,shangri,seuss,serenade,scuffle,scoff,scanners,sauerkraut,sardines,sarcophagus,salvy,rusted,russells,rowboat,rolfsky,ringside,respectability,reparations,renegotiate,reminisce,reimburse,regimen,raincoat,quibble,puzzled,purposefully,pubic,proofing,prescribing,prelim,poisons,poaching,personalized,personable,peroxide,pentonville,payphone,payoffs,paleontology,overflowing,oompa,oddest,objecting,o'hare,o'daniel,notches,nobody'd,nightstand,neutralized,nervousness,nerdy,needlessly,naquadah,nappy,nantucket,nambla,mountaineer,motherfuckin,morrie,monopolizing,mohel,mistreated,misreading,misbehave,miramax,minivan,milligram,milkshakes,metamorphosis,medics,mattresses,mathesar,matchbook,matata,marys,malucci,magilla,lymphoma,lowers,lordy,linens,lindenmeyer,limelight,leapt,laxative,lather,lapel,lamppost,laguardia,kindling,kegger,kawalsky,juries,jokin,jesminder,interning,innermost,injun,infallible,industrious,indulgence,incinerator,impossibility,impart,illuminate,iguanas,hypnotic,hyped,hospitable,hoses,homemaker,hirschmuller,helpers,headset,guardianship,guapo,grubby,granola,granddaddy,goren,goblet,gluttony,globes,giorno,getter,geritol,gassed,gaggle,foxhole,fouled,foretold,floorboards,flippers,flaked,fireflies,feedings,fashionably,farragut,fallback,facials,exterminate,excites,everything'll,evenin,ethically,ensue,enema,empath,eluded,eloquently,eject,edema,dumpling,droppings,dolled,distasteful,disputing,displeasure,disdain,deterrent,dehydration,defied,decomposing,dawned,dailies,custodian,crusts,crucifix,crowning,crier,crept,craze,crawls,couldn,correcting,corkmaster,copperfield,cooties,contraption,consumes,conspire,consenting,consented,conquers,congeniality,complains,communicator,commendable,collide,coladas,colada,clout,clooney,classifieds,clammy,civility,cirrhosis,chink,catskills,carvers,carpool,carelessness,cardio,carbs,capades,butabi,busmalis,burping,burdens,bunks,buncha,bulldozers,browse,brockovich,breakthroughs,bravado,boogety,blossoms,blooming,bloodsucker,blight,betterton,betrayer,belittle,beeps,bawling,barts,bartending,bankbooks,babish,atropine,assertive,armbrust,anyanka,annoyance,anemic,anago,airwaves,aimlessly,aaargh,aaand,yoghurt,writhing,workable,winking,winded,widen,whooping,whiter,whatya,wazoo,voila,virile,vests,vestibule,versed,vanishes,urkel,uproot,unwarranted,unscheduled,unparalleled,undergrad,tweedle,turtleneck,turban,trickery,transponder,toyed,townhouse,thyself,thunderstorm,thinning,thawed,tether,technicalities,tau'ri,tarnished,taffeta,tacked,systolic,swerve,sweepstakes,swabs,suspenders,superwoman,sunsets,succulent,subpoenas,stumper,stosh,stomachache,stewed,steppin,stepatech,stateside,spicoli,sparing,soulless,sonnets,sockets,snatching,smothering,slush,sloman,slashing,sitters,simpleton,sighs,sidra,sickens,shunned,shrunken,showbiz,shopped,shimmering,shagging,semblance,segue,sedation,scuzzlebutt,scumbags,screwin,scoundrels,scarsdale,scabs,saucers,saintly,saddened,runaways,runaround,rheya,resenting,rehashing,rehabilitated,regrettable,refreshed,redial,reconnecting,ravenous,raping,rafting,quandary,pylea,putrid,puffing,psychopathic,prunes,probate,prayin,pomegranate,plummeting,planing,plagues,pinata,pithy,perversion,personals,perched,peeps,peckish,pavarotti,pajama,packin,pacifier,overstepping,okama,obstetrician,nutso,nuance,normalcy,nonnegotiable,nomak,ninny,nines,nicey,newsflash,neutered,nether,negligee,necrosis,navigating,narcissistic,mylie,muses,momento,moisturizer,moderation,misinformed,misconception,minnifield,mikkos,methodical,mebbe,meager,maybes,matchmaking,masry,markovic,malakai,luzhin,lusting,lumberjack,loopholes,loaning,lightening,leotard,launder,lamaze,kubla,kneeling,kibosh,jumpsuit,joliet,jogger,janover,jakovasaurs,irreparable,innocently,inigo,infomercial,inexplicable,indispensable,impregnated,impossibly,imitating,hunches,hummus,houmfort,hothead,hostiles,hooves,hooligans,homos,homie,hisself,heyyy,hesitant,hangout,handsomest,handouts,hairless,gwennie,guzzling,guinevere,grungy,goading,glaring,gavel,gardino,gangrene,fruitful,friendlier,freckle,freakish,forthright,forearm,footnote,flops,fixer,firecracker,finito,figgered,fezzik,fastened,farfetched,fanciful,familiarize,faire,fahrenheit,extravaganza,exploratory,explanatory,everglades,eunuch,estas,escapade,erasers,emptying,embarassing,dweeb,dutiful,dumplings,dries,drafty,dollhouse,dismissing,disgraced,discrepancies,disbelief,disagreeing,digestion,didnt,deviled,deviated,demerol,delectable,decaying,decadent,dears,dateless,d'algout,cultivating,cryto,crumpled,crumbled,cronies,crease,craves,cozying,corduroy,congratulated,confidante,compressions,complicating,compadre,coerce,classier,chums,chumash,chivalrous,chinpoko,charred,chafing,celibacy,carted,carryin,carpeting,carotid,cannibals,candor,butterscotch,busts,busier,bullcrap,buggin,brookside,brodski,brassiere,brainwash,brainiac,botrelle,bonbon,boatload,blimey,blaring,blackness,bipartisan,bimbos,bigamist,biebe,biding,betrayals,bestow,bellerophon,bedpans,bassinet,basking,barzini,barnyard,barfed,backups,audited,asinine,asalaam,arouse,applejack,annoys,anchovies,ampule,alameida,aggravate,adage,accomplices,yokel,y'ever,wringer,witwer,withdrawals,windward,willfully,whorfin,whimsical,whimpering,weddin,weathered,warmest,wanton,volant,visceral,vindication,veggies,urinate,uproar,unwritten,unwrap,unsung,unsubstantiated,unspeakably,unscrupulous,unraveling,unquote,unqualified,unfulfilled,undetectable,underlined,unattainable,unappreciated,ummmm,ulcers,tylenol,tweak,turnin,tuatha,tropez,trellis,toppings,tootin,toodle,tinkering,thrives,thespis,theatrics,thatherton,tempers,tavington,tartar,tampon,swelled,sutures,sustenance,sunflowers,sublet,stubbins,strutting,strewn,stowaway,stoic,sternin,stabilizing,spiraling,spinster,speedometer,speakeasy,soooo,soiled,sneakin,smithereens,smelt,smacks,slaughterhouse,slacks,skids,sketching,skateboards,sizzling,sixes,sirree,simplistic,shouts,shorted,shoelace,sheeit,shards,shackled,sequestered,selmak,seduces,seclusion,seamstress,seabeas,scoops,scooped,scavenger,satch,s'more,rudeness,romancing,rioja,rifkin,rieper,revise,reunions,repugnant,replicating,repaid,renewing,relaxes,rekindle,regrettably,regenerate,reels,reciting,reappear,readin,ratting,rapes,rancher,rammed,rainstorm,railroading,queers,punxsutawney,punishes,pssst,prudy,proudest,protectors,procrastinating,proactive,priss,postmortem,pompoms,poise,pickings,perfectionist,peretti,people'll,pecking,patrolman,paralegal,paragraphs,paparazzi,pankot,pampering,overstep,overpower,outweigh,omnipotent,odious,nuwanda,nurtured,newsroom,neeson,needlepoint,necklaces,neato,muggers,muffler,mousy,mourned,mosey,mopey,mongolians,moldy,misinterpret,minibar,microfilm,mendola,mended,melissande,masturbating,masbath,manipulates,maimed,mailboxes,magnetism,m'lord,m'honey,lymph,lunge,lovelier,lefferts,leezak,ledgers,larraby,laloosh,kundun,kozinski,knockoff,kissin,kiosk,kennedys,kellman,karlo,kaleidoscope,jeffy,jaywalking,instructing,infraction,informer,infarction,impulsively,impressing,impersonated,impeach,idiocy,hyperbole,hurray,humped,huhuh,hsing,hordes,hoodlums,honky,hitchhiker,hideously,heaving,heathcliff,headgear,headboard,hazing,harem,handprint,hairspray,gutiurrez,goosebumps,gondola,glitches,gasping,frolic,freeways,frayed,fortitude,forgetful,forefathers,fonder,foiled,foaming,flossing,flailing,fitzgeralds,firehouse,finders,fiftieth,fellah,fawning,farquaad,faraway,fancied,extremists,exorcist,exhale,ethros,entrust,ennui,energized,encephalitis,embezzling,elster,elixir,electrolytes,duplex,dryers,drexl,dredging,drawback,don'ts,dobisch,divorcee,disrespected,disprove,disobeying,disinfectant,dingy,digress,dieting,dictating,devoured,devise,detonators,desist,deserter,derriere,deron,deceptive,debilitating,deathwok,daffodils,curtsy,cursory,cuppa,cumin,cronkite,cremation,credence,cranking,coverup,courted,countin,counselling,cornball,contentment,consensual,compost,cluett,cleverly,cleansed,cleanliness,chopec,chomp,chins,chime,cheswick,chessler,cheapest,chatted,cauliflower,catharsis,catchin,caress,camcorder,calorie,cackling,bystanders,buttoned,buttering,butted,buries,burgel,buffoon,brogna,bragged,boutros,bogeyman,blurting,blurb,blowup,bloodhound,blissful,birthmark,bigot,bestest,belted,belligerent,beggin,befall,beeswax,beatnik,beaming,barricade,baggoli,badness,awoke,artsy,artful,aroun,armpits,arming,annihilate,anise,angiogram,anaesthetic,amorous,ambiance,alligators,adoration,admittance,adama,abydos,zonked,zhivago,yorkin,wrongfully,writin,wrappers,worrywart,woops,wonderfalls,womanly,wickedness,whoopie,wholeheartedly,whimper,which'll,wheelchairs,what'ya,warranted,wallop,wading,wacked,virginal,vermouth,vermeil,verger,ventriss,veneer,vampira,utero,ushers,urgently,untoward,unshakable,unsettled,unruly,unlocks,ungodly,undue,uncooperative,uncontrollably,unbeatable,twitchy,tumbler,truest,triumphs,triplicate,tribbey,tortures,tongaree,tightening,thorazine,theres,testifies,teenaged,tearful,taxing,taldor,syllabus,swoops,swingin,suspending,sunburn,stuttering,stupor,strides,strategize,strangulation,stooped,stipulation,stingy,stapled,squeaks,squawking,spoilsport,splicing,spiel,spencers,spasms,spaniard,softener,sodding,soapbox,smoldering,smithbauer,skittish,sifting,sickest,sicilians,shuffling,shrivel,segretti,seeping,securely,scurrying,scrunch,scrote,screwups,schenkman,sawing,savin,satine,sapiens,salvaging,salmonella,sacrilege,rumpus,ruffle,roughing,rotted,rondall,ridding,rickshaw,rialto,rhinestone,restrooms,reroute,requisite,repress,rednecks,redeeming,rayed,ravell,raked,raincheck,raffi,racked,pushin,profess,prodding,procure,presuming,preppy,prednisone,potted,posttraumatic,poorhouse,podiatrist,plowed,pledging,playroom,plait,placate,pinback,picketing,photographing,pharoah,petrak,petal,persecuting,perchance,pellets,peeved,peerless,payable,pauses,pathologist,pagliacci,overwrought,overreaction,overqualified,overheated,outcasts,otherworldly,opinionated,oodles,oftentimes,occured,obstinate,nutritionist,numbness,nubile,nooooooo,nobodies,nepotism,neanderthals,mushu,mucus,mothering,mothballs,monogrammed,molesting,misspoke,misspelled,misconstrued,miscalculated,minimums,mince,mildew,mighta,middleman,mementos,mellowed,mayol,mauled,massaged,marmalade,mardi,makings,lundegaard,lovingly,loudest,lotto,loosing,loompa,looming,longs,loathes,littlest,littering,lifelike,legalities,laundered,lapdog,lacerations,kopalski,knobs,knitted,kittridge,kidnaps,kerosene,karras,jungles,jockeys,iranoff,invoices,invigorating,insolence,insincere,insectopia,inhumane,inhaling,ingrates,infestation,individuality,indeterminate,incomprehensible,inadequacy,impropriety,importer,imaginations,illuminating,ignite,hysterics,hypodermic,hyperventilate,hyperactive,humoring,honeymooning,honed,hoist,hoarding,hitching,hiker,hightail,hemoglobin,hell'd,heinie,growin,grasped,grandparent,granddaughters,gouged,goblins,gleam,glades,gigantor,get'em,geriatric,gatekeeper,gargoyles,gardenias,garcon,garbo,gallows,gabbing,futon,fulla,frightful,freshener,fortuitous,forceps,fogged,fodder,foamy,flogging,flaun,flared,fireplaces,feverish,favell,fattest,fattening,fallow,extraordinaire,evacuating,errant,envied,enchant,enamored,egocentric,dussander,dunwitty,dullest,dropout,dredged,dorsia,doornail,donot,dongs,dogged,dodgy,ditty,dishonorable,discriminating,discontinue,dings,dilly,dictation,dialysis,delly,delightfully,daryll,dandruff,cruddy,croquet,cringe,crimp,credo,crackling,courtside,counteroffer,counterfeiting,corrupting,copping,conveyor,contusions,contusion,conspirator,consoling,connoisseur,confetti,composure,compel,colic,coddle,cocksuckers,coattails,cloned,claustrophobia,clamoring,churn,chugga,chirping,chasin,chapped,chalkboard,centimeter,caymans,catheter,casings,caprica,capelli,cannolis,cannoli,camogli,camembert,butchers,butchered,busboys,bureaucrats,buckled,bubbe,brownstone,bravely,brackley,bouquets,botox,boozing,boosters,bodhi,blunders,blunder,blockage,biocyte,betrays,bested,beryllium,beheading,beggar,begbie,beamed,bastille,barstool,barricades,barbecues,barbecued,bandwagon,backfiring,bacarra,avenged,autopsies,aunties,associating,artichoke,arrowhead,appendage,apostrophe,antacid,ansel,annul,amuses,amped,amicable,amberg,alluring,adversaries,admirers,adlai,acupuncture,abnormality,aaaahhhh,zooming,zippity,zipping,zeroed,yuletide,yoyodyne,yengeese,yeahhh,wrinkly,wracked,withered,winks,windmills,whopping,wendle,weigart,waterworks,waterbed,watchful,wantin,wagging,waaah,vying,ventricle,varnish,vacuumed,unreachable,unprovoked,unmistakable,unfriendly,unfolding,underpaid,uncuff,unappealing,unabomber,typhoid,tuxedos,tushie,turds,tumnus,troubadour,trinium,treaters,treads,transpired,transgression,tought,thready,thins,thinners,techs,teary,tattaglia,tassels,tarzana,tanking,tablecloths,synchronize,symptomatic,sycophant,swimmingly,sweatshop,surfboard,superpowers,sunroom,sunblock,sugarplum,stupidly,strumpet,strapless,stooping,stools,stealthy,stalks,stairmaster,staffer,sshhh,squatting,squatters,spectacularly,sorbet,socked,sociable,snubbed,snorting,sniffles,snazzy,snakebite,smuggler,smorgasbord,smooching,slurping,slouch,slingshot,slaved,skimmed,sisterhood,silliest,sidarthur,sheraton,shebang,sharpening,shanghaied,shakers,sendoff,scurvy,scoliosis,scaredy,scagnetti,sawchuk,saugus,sasquatch,sandbag,saltines,s'pose,roston,rostle,riveting,ristle,rifling,revulsion,reverently,retrograde,restful,resents,reptilian,reorganize,renovating,reiterate,reinvent,reinmar,reibers,reechard,recuse,reconciling,recognizance,reclaiming,recitation,recieved,rebate,reacquainted,rascals,railly,quintuplets,quahog,pygmies,puzzling,punctuality,prosthetic,proms,probie,preys,preserver,preppie,poachers,plummet,plumbers,plannin,pitying,pitfalls,piqued,pinecrest,pinches,pillage,pigheaded,physique,pessimistic,persecute,perjure,percentile,pentothal,pensky,penises,peini,pazzi,pastels,parlour,paperweight,pamper,pained,overwhelm,overalls,outrank,outpouring,outhouse,outage,ouija,obstructed,obsessions,obeying,obese,o'riley,o'higgins,nosebleeds,norad,noooooooo,nononono,nonchalant,nippy,neurosis,nekhorvich,necronomicon,naquada,n'est,mystik,mystified,mumps,muddle,mothership,moped,monumentally,monogamous,mondesi,misogynistic,misinterpreting,mindlock,mending,megaphone,meeny,medicating,meanie,masseur,markstrom,marklars,margueritas,manifesting,maharajah,lukewarm,loveliest,loran,lizardo,liquored,lipped,lingers,limey,lemkin,leisurely,lathe,latched,lapping,ladle,krevlorneswath,kosygin,khakis,kenaru,keats,kaitlan,julliard,jollies,jaundice,jargon,jackals,invisibility,insipid,inflamed,inferiority,inexperience,incinerated,incinerate,incendiary,incan,inbred,implicating,impersonator,hunks,horsing,hooded,hippopotamus,hiked,hetson,hetero,hessian,henslowe,hendler,hellstrom,headstone,hayloft,harbucks,handguns,hallucinate,haldol,haggling,gynaecologist,gulag,guilder,guaranteeing,groundskeeper,grindstone,grimoir,grievance,griddle,gribbit,greystone,graceland,gooders,goeth,gentlemanly,gelatin,gawking,ganged,fukes,fromby,frenchmen,foursome,forsley,forbids,footwork,foothold,floater,flinging,flicking,fittest,fistfight,fireballs,fillings,fiddling,fennyman,felonious,felonies,feces,favoritism,fatten,fanatics,faceman,excusing,excepted,entwined,entree,ensconced,eladio,ehrlichman,easterland,dueling,dribbling,drape,downtrodden,doused,dosed,dorleen,dokie,distort,displeased,disown,dismount,disinherited,disarmed,disapproves,diperna,dined,diligent,dicaprio,depress,decoded,debatable,dealey,darsh,damsels,damning,dad'll,d'oeuvre,curlers,curie,cubed,crikey,crepes,countrymen,cornfield,coppers,copilot,copier,cooing,conspiracies,consigliere,condoning,commoner,commies,combust,comas,colds,clawed,clamped,choosy,chomping,chimps,chigorin,chianti,cheep,checkups,cheaters,celibate,cautiously,cautionary,castell,carpentry,caroling,carjacking,caritas,caregiver,cardiology,candlesticks,canasta,cain't,burro,burnin,bunking,bumming,bullwinkle,brummel,brooms,brews,breathin,braslow,bracing,botulism,boorish,bloodless,blayne,blatantly,blankie,bedbugs,becuase,barmaid,bared,baracus,banal,bakes,backpacks,attentions,atrocious,ativan,athame,asunder,astound,assuring,aspirins,asphyxiation,ashtrays,aryans,arnon,apprehension,applauding,anvil,antiquing,antidepressants,annoyingly,amputate,altruistic,alotta,alerting,afterthought,affront,affirm,actuality,abysmal,absentee,yeller,yakushova,wuzzy,wriggle,worrier,woogyman,womanizer,windpipe,windbag,willin,whisking,whimsy,wendall,weeny,weensy,weasels,watery,watcha,wasteful,waski,washcloth,waaay,vouched,viznick,ventriloquist,vendettas,veils,vayhue,vamanos,vadimus,upstage,uppity,unsaid,unlocking,unintentionally,undetected,undecided,uncaring,unbearably,tween,tryout,trotting,trini,trimmings,trickier,treatin,treadstone,trashcan,transcendent,tramps,townsfolk,torturous,torrid,toothpicks,tolerable,tireless,tiptoeing,timmay,tillinghouse,tidying,tibia,thumbing,thrusters,thrashing,these'll,thatos,testicular,teriyaki,tenors,tenacity,tellers,telemetry,tarragon,switchblade,swicker,swells,sweatshirts,swatches,surging,supremely,sump'n,succumb,subsidize,stumbles,stuffs,stoppin,stipulate,stenographer,steamroll,stasis,stagger,squandered,splint,splendidly,splashy,splashing,specter,sorcerers,somewheres,somber,snuggled,snowmobile,sniffed,snags,smugglers,smudged,smirking,smearing,slings,sleet,sleepovers,sleek,slackers,siree,siphoning,singed,sincerest,sickened,shuffled,shriveled,shorthanded,shittin,shish,shipwrecked,shins,sheetrock,shawshank,shamu,sha're,servitude,sequins,seascape,scrapings,scoured,scorching,sandpaper,saluting,salud,ruffled,roughnecks,rougher,rosslyn,rosses,roost,roomy,romping,revolutionize,reprimanded,refute,refrigerated,reeled,redundancies,rectal,recklessly,receding,reassignment,reapers,readout,ration,raring,ramblings,raccoons,quarantined,purging,punters,psychically,premarital,pregnancies,predisposed,precautionary,pollute,podunk,plums,plaything,pixilated,pitting,piranhas,pieced,piddles,pickled,photogenic,phosphorous,pffft,pestilence,pessimist,perspiration,perps,penticoff,passageways,pardons,panics,pancamo,paleontologist,overwhelms,overstating,overpaid,overdid,outlive,orthodontist,orgies,oreos,ordover,ordinates,ooooooh,oooohhh,omelettes,officiate,obtuse,obits,nymph,novocaine,noooooooooo,nipping,nilly,nightstick,negate,neatness,natured,narcotic,narcissism,namun,nakatomi,murky,muchacho,mouthwash,motzah,morsel,morph,morlocks,mooch,moloch,molest,mohra,modus,modicum,mockolate,misdemeanors,miscalculation,middies,meringue,mercilessly,meditating,mayakovsky,maximillian,marlee,markovski,maniacal,maneuvered,magnificence,maddening,lutze,lunged,lovelies,lorry,loosening,lookee,littered,lilac,lightened,laces,kurzon,kurtzweil,kind've,kimono,kenji,kembu,keanu,kazuo,jonesing,jilted,jiggling,jewelers,jewbilee,jacqnoud,jacksons,ivories,insurmountable,innocuous,innkeeper,infantery,indulged,indescribable,incoherent,impervious,impertinent,imperfections,hunnert,huffy,horsies,horseradish,hollowed,hogwash,hockley,hissing,hiromitsu,hidin,hereafter,helpmann,hehehe,haughty,happenings,hankie,handsomely,halliwells,haklar,haise,gunsights,grossly,grope,grocer,grits,gripping,grabby,glorificus,gizzard,gilardi,gibarian,geminon,gasses,garnish,galloping,gairwyn,futterman,futility,fumigated,fruitless,friendless,freon,foregone,forego,floored,flighty,flapjacks,fizzled,ficus,festering,farbman,fabricate,eyghon,extricate,exalted,eventful,esophagus,enterprising,entail,endor,emphatically,embarrasses,electroshock,easel,duffle,drumsticks,dissection,dissected,disposing,disparaging,disorientation,disintegrated,disarming,devoting,dessaline,deprecating,deplorable,delve,degenerative,deduct,decomposed,deathly,dearie,daunting,dankova,cyclotron,cyberspace,cutbacks,culpable,cuddled,crumpets,cruelly,crouching,cranium,cramming,cowering,couric,cordesh,conversational,conclusively,clung,clotting,cleanest,chipping,chimpanzee,chests,cheapen,chainsaws,censure,catapult,caravaggio,carats,captivating,calrissian,butlers,busybody,bussing,bunion,bulimic,budging,brung,browbeat,brokenhearted,brecher,breakdowns,bracebridge,boning,blowhard,blisters,blackboard,bigotry,bialy,bhamra,bended,begat,battering,baste,basquiat,barricaded,barometer,balled,baited,badenweiler,backhand,ascenscion,argumentative,appendicitis,apparition,anxiously,antagonistic,angora,anacott,amniotic,ambience,alonna,aleck,akashic,ageless,abouts,aawwww,aaaaarrrrrrggghhh,aaaaaa,zendi,yuppies,yodel,y'hear,wrangle,wombosi,wittle,withstanding,wisecracks,wiggling,wierd,whittlesley,whipper,whattya,whatsamatter,whatchamacallit,whassup,whad'ya,weakling,warfarin,waponis,wampum,wadn't,vorash,vizzini,virtucon,viridiana,veracity,ventilated,varicose,varcon,vandalized,vamos,vamoose,vaccinated,vacationing,usted,urinal,uppers,unwittingly,unsealed,unplanned,unhinged,unhand,unfathomable,unequivocally,unbreakable,unadvisedly,udall,tynacorp,tuxes,tussle,turati,tunic,tsavo,trussed,troublemakers,trollop,tremors,transsexual,transfusions,toothbrushes,toned,toddlers,tinted,tightened,thundering,thorpey,this'd,thespian,thaddius,tenuous,tenths,tenement,telethon,teleprompter,teaspoon,taunted,tattle,tardiness,taraka,tappy,tapioca,tapeworm,talcum,tacks,swivel,swaying,superpower,summarize,sumbitch,sultry,suburbia,styrofoam,stylings,strolls,strobe,stockpile,stewardesses,sterilized,sterilize,stealin,stakeouts,squawk,squalor,squabble,sprinkled,sportsmanship,spokes,spiritus,sparklers,spareribs,sowing,sororities,sonovabitch,solicit,softy,softness,softening,snuggling,snatchers,snarling,snarky,snacking,smears,slumped,slowest,slithering,sleazebag,slayed,slaughtering,skidded,skated,sivapathasundaram,sissies,silliness,silences,sidecar,sicced,shylock,shtick,shrugged,shriek,shoves,should'a,shortcake,shockingly,shirking,shaves,shatner,sharpener,shapely,shafted,sexless,septum,selflessness,seabea,scuff,screwball,scoping,scooch,scolding,schnitzel,schemed,scalper,santy,sankara,sanest,salesperson,sakulos,safehouse,sabers,runes,rumblings,rumbling,ruijven,ringers,righto,rhinestones,retrieving,reneging,remodelling,relentlessly,regurgitate,refills,reeking,reclusive,recklessness,recanted,ranchers,rafer,quaking,quacks,prophesied,propensity,profusely,problema,prided,prays,postmark,popsicles,poodles,pollyanna,polaroids,pokes,poconos,pocketful,plunging,plugging,pleeease,platters,pitied,pinetti,piercings,phooey,phonies,pestering,periscope,pentagram,pelts,patronized,paramour,paralyze,parachutes,pales,paella,paducci,owatta,overdone,overcrowded,overcompensating,ostracized,ordinate,optometrist,operandi,omens,okayed,oedipal,nuttier,nuptial,nunheim,noxious,nourish,notepad,nitroglycerin,nibblet,neuroses,nanosecond,nabbit,mythic,munchkins,multimillion,mulroney,mucous,muchas,mountaintop,morlin,mongorians,moneybags,mom'll,molto,mixup,misgivings,mindset,michalchuk,mesmerized,merman,mensa,meaty,mbwun,materialize,materialistic,masterminded,marginally,mapuhe,malfunctioning,magnify,macnamara,macinerney,machinations,macadamia,lysol,lurks,lovelorn,lopsided,locator,litback,litany,linea,limousines,limes,lighters,liebkind,levity,levelheaded,letterhead,lesabre,leron,lepers,lefts,leftenant,laziness,layaway,laughlan,lascivious,laryngitis,lapsed,landok,laminated,kurten,kobol,knucklehead,knowed,knotted,kirkeby,kinsa,karnovsky,jolla,jimson,jettison,jeric,jawed,jankis,janitors,jango,jalopy,jailbreak,jackers,jackasses,invalidate,intercepting,intercede,insinuations,infertile,impetuous,impaled,immerse,immaterial,imbeciles,imagines,idyllic,idolized,icebox,i'd've,hypochondriac,hyphen,hurtling,hurried,hunchback,hullo,horsting,hoooo,homeboys,hollandaise,hoity,hijinks,hesitates,herrero,herndorff,helplessly,heeyy,heathen,hearin,headband,harrassment,harpies,halstrom,hahahahaha,hacer,grumbling,grimlocks,grift,greets,grandmothers,grander,grafts,gordievsky,gondorff,godorsky,glscripts,gaudy,gardeners,gainful,fuses,fukienese,frizzy,freshness,freshening,fraught,frantically,foxbooks,fortieth,forked,foibles,flunkies,fleece,flatbed,fisted,firefight,fingerpaint,filibuster,fhloston,fenceline,femur,fatigues,fanucci,fantastically,familiars,falafel,fabulously,eyesore,expedient,ewwww,eviscerated,erogenous,epidural,enchante,embarassed,embarass,embalming,elude,elspeth,electrocute,eigth,eggshell,echinacea,eases,earpiece,earlobe,dumpsters,dumbshit,dumbasses,duloc,duisberg,drummed,drinkers,dressy,dorma,doily,divvy,diverting,dissuade,disrespecting,displace,disorganized,disgustingly,discord,disapproving,diligence,didja,diced,devouring,detach,destructing,desolate,demerits,delude,delirium,degrade,deevak,deemesa,deductions,deduce,debriefed,deadbeats,dateline,darndest,damnable,dalliance,daiquiri,d'agosta,cussing,cryss,cripes,cretins,crackerjack,cower,coveting,couriers,countermission,cotswolds,convertibles,conversationalist,consorting,consoled,consarn,confides,confidentially,commited,commiserate,comme,comforter,comeuppance,combative,comanches,colosseum,colling,coexist,coaxing,cliffside,chutes,chucked,chokes,childlike,childhoods,chickening,chenowith,charmingly,changin,catsup,captioning,capsize,cappucino,capiche,candlewell,cakewalk,cagey,caddie,buxley,bumbling,bulky,buggered,brussel,brunettes,brumby,brotha,bronck,brisket,bridegroom,braided,bovary,bookkeeper,bluster,bloodline,blissfully,blase,billionaires,bicker,berrisford,bereft,berating,berate,bendy,belive,belated,beikoku,beens,bedspread,bawdy,barreling,baptize,banya,balthazar,balmoral,bakshi,bails,badgered,backstreet,awkwardly,auras,attuned,atheists,astaire,assuredly,arrivederci,appetit,appendectomy,apologetic,antihistamine,anesthesiologist,amulets,albie,alarmist,aiight,adstream,admirably,acquaint,abound,abominable,aaaaaaah,zekes,zatunica,wussy,worded,wooed,woodrell,wiretap,windowsill,windjammer,windfall,whisker,whims,whatiya,whadya,weirdly,weenies,waunt,washout,wanto,waning,victimless,verdad,veranda,vandaley,vancomycin,valise,vaguest,upshot,unzip,unwashed,untrained,unstuck,unprincipled,unmentionables,unjustly,unfolds,unemployable,uneducated,unduly,undercut,uncovering,unconsciousness,unconsciously,tyndareus,turncoat,turlock,tulle,tryouts,trouper,triplette,trepkos,tremor,treeger,trapeze,traipse,tradeoff,trach,torin,tommorow,tollan,toity,timpani,thumbprint,thankless,tell'em,telepathy,telemarketing,telekinesis,teevee,teeming,tarred,tambourine,talentless,swooped,switcheroo,swirly,sweatpants,sunstroke,suitors,sugarcoat,subways,subterfuge,subservient,subletting,stunningly,strongbox,striptease,stravanavitch,stradling,stoolie,stodgy,stocky,stifle,stealer,squeezes,squatter,squarely,sprouted,spool,spindly,speedos,soups,soundly,soulmates,somebody'll,soliciting,solenoid,sobering,snowflakes,snowballs,snores,slung,slimming,skulk,skivvies,skewered,skewer,sizing,sistine,sidebar,sickos,shushing,shunt,shugga,shone,shol'va,sharpened,shapeshifter,shadowing,shadoe,selectman,sefelt,seared,scrounging,scribbling,scooping,scintillating,schmoozing,scallops,sapphires,sanitarium,sanded,safes,rudely,roust,rosebush,rosasharn,rondell,roadhouse,riveted,rewrote,revamp,retaliatory,reprimand,replicators,replaceable,remedied,relinquishing,rejoicing,reincarnated,reimbursed,reevaluate,redid,redefine,recreating,reconnected,rebelling,reassign,rearview,rayne,ravings,ratso,rambunctious,radiologist,quiver,quiero,queef,qualms,pyrotechnics,pulsating,psychosomatic,proverb,promiscuous,profanity,prioritize,preying,predisposition,precocious,precludes,prattling,prankster,povich,potting,postpartum,porridge,polluting,plowing,pistachio,pissin,pickpocket,physicals,peruse,pertains,personified,personalize,perjured,perfecting,pepys,pepperdine,pembry,peering,peels,pedophile,patties,passkey,paratrooper,paraphernalia,paralyzing,pandering,paltry,palpable,pagers,pachyderm,overstay,overestimated,overbite,outwit,outgrow,outbid,ooops,oomph,oohhh,oldie,obliterate,objectionable,nygma,notting,noches,nitty,nighters,newsstands,newborns,neurosurgery,nauseated,nastiest,narcolepsy,mutilate,muscled,murmur,mulva,mulling,mukada,muffled,morgues,moonbeams,monogamy,molester,molestation,molars,moans,misprint,mismatched,mirth,mindful,mimosas,millander,mescaline,menstrual,menage,mellowing,medevac,meddlesome,matey,manicures,malevolent,madmen,macaroons,lydell,lycra,lunchroom,lunching,lozenges,looped,litigious,liquidate,linoleum,lingk,limitless,limber,lilacs,ligature,liftoff,lemmiwinks,leggo,learnin,lazarre,lawyered,lactose,knelt,kenosha,kemosabe,jussy,junky,jordy,jimmies,jeriko,jakovasaur,issacs,isabela,irresponsibility,ironed,intoxication,insinuated,inherits,ingest,ingenue,inflexible,inflame,inevitability,inedible,inducement,indignant,indictments,indefensible,incomparable,incommunicado,improvising,impounded,illogical,ignoramus,hydrochloric,hydrate,hungover,humorless,humiliations,hugest,hoverdrone,hovel,hmmph,hitchhike,hibernating,henchman,helloooo,heirlooms,heartsick,headdress,hatches,harebrained,hapless,hanen,handsomer,hallows,habitual,guten,gummy,guiltier,guidebook,gstaad,gruff,griss,grieved,grata,gorignak,goosed,goofed,glowed,glitz,glimpses,glancing,gilmores,gianelli,geraniums,garroway,gangbusters,gamblers,galls,fuddy,frumpy,frowning,frothy,fro'tak,frere,fragrances,forgettin,follicles,flowery,flophouse,floatin,flirts,flings,flatfoot,fingerprinting,fingerprinted,fingering,finald,fillet,fianc,femoral,federales,fawkes,fascinates,farfel,fambly,falsified,fabricating,exterminators,expectant,excusez,excrement,excercises,evian,etins,esophageal,equivalency,equate,equalizer,entrees,enquire,endearment,empathetic,emailed,eggroll,earmuffs,dyslexic,duper,duesouth,drunker,druggie,dreadfully,dramatics,dragline,downplay,downers,dominatrix,doers,docket,docile,diversify,distracts,disloyalty,disinterested,discharging,disagreeable,dirtier,dinghy,dimwitted,dimoxinil,dimmy,diatribe,devising,deviate,detriment,desertion,depressants,depravity,deniability,delinquents,defiled,deepcore,deductive,decimate,deadbolt,dauthuille,dastardly,daiquiris,daggers,dachau,curiouser,curdled,cucamonga,cruller,cruces,crosswalk,crinkle,crescendo,cremate,counseled,couches,cornea,corday,copernicus,contrition,contemptible,constipated,conjoined,confounded,condescend,concoct,conch,compensating,committment,commandeered,comely,coddled,cockfight,cluttered,clunky,clownfish,cloaked,clenched,cleanin,civilised,circumcised,cimmeria,cilantro,chutzpah,chucking,chiseled,chicka,chattering,cervix,carrey,carpal,carnations,cappuccinos,candied,calluses,calisthenics,bushy,burners,budington,buchanans,brimming,braids,boycotting,bouncers,botticelli,botherin,bookkeeping,bogyman,bogged,bloodthirsty,blintzes,blanky,binturong,billable,bigboote,bewildered,betas,bequeath,behoove,befriend,bedpost,bedded,baudelaires,barreled,barboni,barbeque,bangin,baltus,bailout,backstabber,baccarat,awning,augie,arguillo,archway,apricots,apologising,annyong,anchorman,amenable,amazement,allspice,alannis,airfare,airbags,ahhhhhhhhh,ahhhhhhhh,ahhhhhhh,agitator,adrenal,acidosis,achoo,accessorizing,accentuate,abrasions,abductor,aaaahhh,aaaaaaaa,aaaaaaa,zeroing,zelner,zeldy,yevgeny,yeska,yellows,yeesh,yeahh,yamuri,wouldn't've,workmanship,woodsman,winnin,winked,wildness,whoring,whitewash,whiney,when're,wheezer,wheelman,wheelbarrow,westerburg,weeding,watermelons,washboard,waltzes,wafting,voulez,voluptuous,vitone,vigilantes,videotaping,viciously,vices,veruca,vermeer,verifying,vasculitis,valets,upholstered,unwavering,untold,unsympathetic,unromantic,unrecognizable,unpredictability,unmask,unleashing,unintentional,unglued,unequivocal,underrated,underfoot,unchecked,unbutton,unbind,unbiased,unagi,uhhhhh,tugging,triads,trespasses,treehorn,traviata,trappers,transplants,trannie,tramping,tracheotomy,tourniquet,tooty,toothless,tomarrow,toasters,thruster,thoughtfulness,thornwood,tengo,tenfold,telltale,telephoto,telephoned,telemarketer,tearin,tastic,tastefully,tasking,taser,tamed,tallow,taketh,taillight,tadpoles,tachibana,syringes,sweated,swarthy,swagger,surges,supermodels,superhighway,sunup,sun'll,sulfa,sugarless,sufficed,subside,strolled,stringy,strengthens,straightest,straightens,storefront,stopper,stockpiling,stimulant,stiffed,steyne,sternum,stepladder,stepbrother,steers,steelheads,steakhouse,stathis,stankylecartmankennymr,standoffish,stalwart,squirted,spritz,sprig,sprawl,spousal,sphincter,spenders,spearmint,spatter,spangled,southey,soured,sonuvabitch,somethng,snuffed,sniffs,smokescreen,smilin,slobs,sleepwalker,sleds,slays,slayage,skydiving,sketched,skanks,sixed,siphoned,siphon,simpering,sigfried,sidearm,siddons,sickie,shuteye,shuffleboard,shrubberies,shrouded,showmanship,shouldn't've,shoplift,shiatsu,sentries,sentance,sensuality,seething,secretions,searing,scuttlebutt,sculpt,scowling,scouring,scorecard,schoolers,schmucks,scepters,scaly,scalps,scaffolding,sauces,sartorius,santen,salivating,sainthood,saget,saddens,rygalski,rusting,ruination,rueland,rudabaga,rottweiler,roofies,romantics,rollerblading,roldy,roadshow,rickets,rible,rheza,revisiting,retentive,resurface,restores,respite,resounding,resorting,resists,repulse,repressing,repaying,reneged,refunds,rediscover,redecorated,reconstructive,recommitted,recollect,receptacle,reassess,reanimation,realtors,razinin,rationalization,ratatouille,rashum,rasczak,rancheros,rampler,quizzing,quips,quartered,purring,pummeling,puede,proximo,prospectus,pronouncing,prolonging,procreation,proclamations,principled,prides,preoccupation,prego,precog,prattle,pounced,potshots,potpourri,porque,pomegranates,polenta,plying,pluie,plesac,playmates,plantains,pillowcase,piddle,pickers,photocopied,philistine,perpetuate,perpetually,perilous,pawned,pausing,pauper,parter,parlez,parlay,pally,ovulation,overtake,overstate,overpowering,overpowered,overconfident,overbooked,ovaltine,outweighs,outings,ottos,orrin,orifice,orangutan,oopsy,ooooooooh,oooooo,ooohhhh,ocular,obstruct,obscenely,o'dwyer,nutjob,nunur,notifying,nostrand,nonny,nonfat,noblest,nimble,nikes,nicht,newsworthy,nestled,nearsighted,ne'er,nastier,narco,nakedness,muted,mummified,mudda,mozzarella,moxica,motivator,motility,mothafucka,mortmain,mortgaged,mores,mongers,mobbed,mitigating,mistah,misrepresented,mishke,misfortunes,misdirection,mischievous,mineshaft,millaney,microwaves,metzenbaum,mccovey,masterful,masochistic,marliston,marijawana,manya,mantumbi,malarkey,magnifique,madrona,madox,machida,m'hidi,lullabies,loveliness,lotions,looka,lompoc,litterbug,litigator,lithe,liquorice,linds,limericks,lightbulb,lewises,letch,lemec,layover,lavatory,laurels,lateness,laparotomy,laboring,kuato,kroff,krispy,krauts,knuckleheads,kitschy,kippers,kimbrow,keypad,keepsake,kebab,karloff,junket,judgemental,jointed,jezzie,jetting,jeeze,jeeter,jeesus,jeebs,janeane,jails,jackhammer,ixnay,irritates,irritability,irrevocable,irrefutable,irked,invoking,intricacies,interferon,intents,insubordinate,instructive,instinctive,inquisitive,inlay,injuns,inebriated,indignity,indecisive,incisors,incacha,inalienable,impresses,impregnate,impregnable,implosion,idolizes,hypothyroidism,hypoglycemic,huseni,humvee,huddling,honing,hobnobbing,hobnob,histrionics,histamine,hirohito,hippocratic,hindquarters,hikita,hikes,hightailed,hieroglyphics,heretofore,herbalist,hehey,hedriks,heartstrings,headmistress,headlight,hardheaded,happend,handlebars,hagitha,habla,gyroscope,guys'd,guy'd,guttersnipe,grump,growed,grovelling,groan,greenbacks,gravedigger,grating,grasshoppers,grandiose,grandest,grafted,gooood,goood,gooks,godsakes,goaded,glamorama,giveth,gingham,ghostbusters,germane,georgy,gazzo,gazelles,gargle,garbled,galgenstein,gaffe,g'day,fyarl,furnish,furies,fulfills,frowns,frowned,frighteningly,freebies,freakishly,forewarned,foreclose,forearms,fordson,fonics,flushes,flitting,flemmer,flabby,fishbowl,fidgeting,fevers,feigning,faxing,fatigued,fathoms,fatherless,fancier,fanatical,factored,eyelid,eyeglasses,expresso,expletive,expectin,excruciatingly,evidentiary,ever'thing,eurotrash,eubie,estrangement,erlich,epitome,entrap,enclose,emphysema,embers,emasculating,eighths,eardrum,dyslexia,duplicitous,dumpty,dumbledore,dufus,duddy,duchamp,drunkenness,drumlin,drowns,droid,drinky,drifts,drawbridge,dramamine,douggie,douchebag,dostoyevsky,doodling,don'tcha,domineering,doings,dogcatcher,doctoring,ditzy,dissimilar,dissecting,disparage,disliking,disintegrating,dishwalla,dishonored,dishing,disengaged,disavowed,dippy,diorama,dimmed,dilate,digitalis,diggory,dicing,diagnosing,devola,desolation,dennings,denials,deliverance,deliciously,delicacies,degenerates,degas,deflector,defile,deference,decrepit,deciphered,dawdle,dauphine,daresay,dangles,dampen,damndest,cucumbers,cucaracha,cryogenically,croaks,croaked,criticise,crisper,creepiest,creams,crackle,crackin,covertly,counterintelligence,corrosive,cordially,cops'll,convulsions,convoluted,conversing,conga,confrontational,confab,condolence,condiments,complicit,compiegne,commodus,comings,cometh,collusion,collared,cockeyed,clobber,clemonds,clarithromycin,cienega,christmasy,christmassy,chloroform,chippie,chested,cheeco,checklist,chauvinist,chandlers,chambermaid,chakras,cellophane,caveat,cataloguing,cartmanland,carples,carny,carded,caramels,cappy,caped,canvassing,callback,calibrated,calamine,buttermilk,butterfingers,bunsen,bulimia,bukatari,buildin,budged,brobich,bringer,brendell,brawling,bratty,braised,boyish,boundless,botch,boosh,bookies,bonbons,bodes,bobunk,bluntly,blossoming,bloomers,bloodstains,bloodhounds,blech,biter,biometric,bioethics,bijan,bigoted,bicep,bereaved,bellowing,belching,beholden,beached,batmobile,barcodes,barch,barbecuing,bandanna,backwater,backtrack,backdraft,augustino,atrophy,atrocity,atley,atchoo,asthmatic,assoc,armchair,arachnids,aptly,appetizing,antisocial,antagonizing,anorexia,anini,andersons,anagram,amputation,alleluia,airlock,aimless,agonized,agitate,aggravating,aerosol,acing,accomplishing,accidently,abuser,abstain,abnormally,aberration,aaaaahh,zlotys,zesty,zerzura,zapruder,zantopia,yelburton,yeess,y'knowwhati'msayin,wwhat,wussies,wrenched,would'a,worryin,wormser,wooooo,wookiee,wolchek,wishin,wiseguys,windbreaker,wiggy,wieners,wiedersehen,whoopin,whittled,wherefore,wharvey,welts,wellstone,wedges,wavered,watchit,wastebasket,wango,waken,waitressed,wacquiem,vrykolaka,voula,vitally,visualizing,viciousness,vespers,vertes,verily,vegetarians,vater,vaporize,vannacutt,vallens,ussher,urinating,upping,unwitting,untangle,untamed,unsanitary,unraveled,unopened,unisex,uninvolved,uninteresting,unintelligible,unimaginative,undeserving,undermines,undergarments,unconcerned,tyrants,typist,tykes,tybalt,twosome,twits,tutti,turndown,tularemia,tuberculoma,tsimshian,truffaut,truer,truant,trove,triumphed,tripe,trigonometry,trifled,trifecta,tribulations,tremont,tremoille,transcends,trafficker,touchin,tomfoolery,tinkered,tinfoil,tightrope,thousan,thoracotomy,thesaurus,thawing,thatta,tessio,temps,taxidermist,tator,tachycardia,t'akaya,swelco,sweetbreads,swatting,supercollider,sunbathing,summarily,suffocation,sueleen,succinct,subsided,submissive,subjecting,subbing,subatomic,stupendous,stunted,stubble,stubbed,streetwalker,strategizing,straining,straightaway,stoli,stiffer,stickup,stens,steamroller,steadwell,steadfast,stateroom,stans,sshhhh,squishing,squinting,squealed,sprouting,sprimp,spreadsheets,sprawled,spotlights,spooning,spirals,speedboat,spectacles,speakerphone,southglen,souse,soundproof,soothsayer,sommes,somethings,solidify,soars,snorted,snorkeling,snitches,sniping,snifter,sniffin,snickering,sneer,snarl,smila,slinking,slanted,slanderous,slammin,skimp,skilosh,siteid,sirloin,singe,sighing,sidekicks,sicken,showstopper,shoplifter,shimokawa,sherborne,shavadai,sharpshooters,sharking,shagged,shaddup,senorita,sesterces,sensuous,seahaven,scullery,scorcher,schotzie,schnoz,schmooze,schlep,schizo,scents,scalping,scalped,scallop,scalding,sayeth,saybrooke,sawed,savoring,sardine,sandstorm,sandalwood,salutations,sagman,s'okay,rsvp'd,rousted,rootin,romper,romanovs,rollercoaster,rolfie,robinsons,ritzy,ritualistic,ringwald,rhymed,rheingold,rewrites,revoking,reverts,retrofit,retort,retinas,respirations,reprobate,replaying,repaint,renquist,renege,relapsing,rekindled,rejuvenating,rejuvenated,reinstating,recriminations,rechecked,reassemble,rears,reamed,reacquaint,rayanne,ravish,rathole,raspail,rarest,rapists,rants,racketeer,quittin,quitters,quintessential,queremos,quellek,quelle,quasimodo,pyromaniac,puttanesca,puritanical,purer,puree,pungent,pummel,puedo,psychotherapist,prosecutorial,prosciutto,propositioning,procrastination,probationary,primping,preventative,prevails,preservatives,preachy,praetorians,practicality,powders,potus,postop,positives,poser,portolano,portokalos,poolside,poltergeists,pocketed,poach,plummeted,plucking,plimpton,playthings,plastique,plainclothes,pinpointed,pinkus,pinks,pigskin,piffle,pictionary,piccata,photocopy,phobias,perignon,perfumes,pecks,pecked,patently,passable,parasailing,paramus,papier,paintbrush,pacer,paaiint,overtures,overthink,overstayed,overrule,overestimate,overcooked,outlandish,outgrew,outdoorsy,outdo,orchestrate,oppress,opposable,oooohh,oomupwah,okeydokey,okaaay,ohashi,of'em,obscenities,oakie,o'gar,nurection,nostradamus,norther,norcom,nooch,nonsensical,nipped,nimbala,nervously,neckline,nebbleman,narwhal,nametag,n'n't,mycenae,muzak,muumuu,mumbled,mulvehill,muggings,muffet,mouthy,motivates,motaba,moocher,mongi,moley,moisturize,mohair,mocky,mmkay,mistuh,missis,misdeeds,mincemeat,miggs,miffed,methadone,messieur,menopausal,menagerie,mcgillicuddy,mayflowers,matrimonial,matick,masai,marzipan,maplewood,manzelle,mannequins,manhole,manhandle,malfunctions,madwoman,machiavelli,lynley,lynched,lurconis,lujack,lubricant,looove,loons,loofah,lonelyhearts,lollipops,lineswoman,lifers,lexter,lepner,lemony,leggy,leafy,leadeth,lazerus,lazare,lawford,languishing,lagoda,ladman,kundera,krinkle,krendler,kreigel,kowolski,knockdown,knifed,kneed,kneecap,kids'll,kennie,kenmore,keeled,kazootie,katzenmoyer,kasdan,karak,kapowski,kakistos,julyan,jockstrap,jobless,jiggly,jaunt,jarring,jabbering,irrigate,irrevocably,irrationally,ironies,invitro,intimated,intently,intentioned,intelligently,instill,instigator,instep,inopportune,innuendoes,inflate,infects,infamy,indiscretions,indiscreet,indio,indignities,indict,indecision,inconspicuous,inappropriately,impunity,impudent,impotence,implicates,implausible,imperfection,impatience,immutable,immobilize,idealist,iambic,hysterically,hyperspace,hygienist,hydraulics,hydrated,huzzah,husks,hunched,huffed,hubris,hubbub,hovercraft,houngan,hosed,horoscopes,hopelessness,hoodwinked,honorably,honeysuckle,homegirl,holiest,hippity,hildie,hieroglyphs,hexton,herein,heckle,heaping,healthilizer,headfirst,hatsue,harlot,hardwired,halothane,hairstyles,haagen,haaaaa,gutting,gummi,groundless,groaning,gristle,grills,graynamore,grabbin,goodes,goggle,glittering,glint,gleaming,glassy,girth,gimbal,giblets,gellers,geezers,geeze,garshaw,gargantuan,garfunkel,gangway,gandarium,gamut,galoshes,gallivanting,gainfully,gachnar,fusionlips,fusilli,furiously,frugal,fricking,frederika,freckling,frauds,fountainhead,forthwith,forgo,forgettable,foresight,foresaw,fondling,fondled,fondle,folksy,fluttering,fluffing,floundering,flirtatious,flexing,flatterer,flaring,fixating,finchy,figurehead,fiendish,fertilize,ferment,fending,fellahs,feelers,fascinate,fantabulous,falsify,fallopian,faithless,fairer,fainter,failings,facetious,eyepatch,exxon,extraterrestrials,extradite,extracurriculars,extinguish,expunged,expelling,exorbitant,exhilarated,exertion,exerting,excercise,everbody,evaporated,escargot,escapee,erases,epizootics,epithelials,ephrum,entanglements,enslave,engrossed,emphatic,emeralds,ember,emancipated,elevates,ejaculate,effeminate,eccentricities,easygoing,earshot,dunks,dullness,dulli,dulled,drumstick,dropper,driftwood,dregs,dreck,dreamboat,draggin,downsizing,donowitz,dominoes,diversions,distended,dissipate,disraeli,disqualify,disowned,dishwashing,disciplining,discerning,disappoints,dinged,digested,dicking,detonating,despising,depressor,depose,deport,dents,defused,deflecting,decryption,decoys,decoupage,decompress,decibel,decadence,deafening,dawning,dater,darkened,dappy,dallying,dagon,czechoslovakians,cuticles,cuteness,cupboards,culottes,cruisin,crosshairs,cronyn,criminalistics,creatively,creaming,crapping,cranny,cowed,contradicting,constipation,confining,confidences,conceiving,conceivably,concealment,compulsively,complainin,complacent,compels,communing,commode,comming,commensurate,columnists,colonoscopy,colchicine,coddling,clump,clubbed,clowning,cliffhanger,clang,cissy,choosers,choker,chiffon,channeled,chalet,cellmates,cathartic,caseload,carjack,canvass,canisters,candlestick,candlelit,camry,calzones,calitri,caldy,byline,butterball,bustier,burlap,bureaucrat,buffoons,buenas,brookline,bronzed,broiled,broda,briss,brioche,briar,breathable,brays,brassieres,boysenberry,bowline,boooo,boonies,booklets,bookish,boogeyman,boogey,bogas,boardinghouse,bluuch,blundering,bluer,blowed,blotchy,blossomed,bloodwork,bloodied,blithering,blinks,blathering,blasphemous,blacking,birdson,bings,bfmid,bfast,bettin,berkshires,benjamins,benevolence,benched,benatar,bellybutton,belabor,behooves,beddy,beaujolais,beattle,baxworth,baseless,barfing,bannish,bankrolled,banek,ballsy,ballpoint,baffling,badder,badda,bactine,backgammon,baako,aztreonam,authoritah,auctioning,arachtoids,apropos,aprons,apprised,apprehensive,anythng,antivenin,antichrist,anorexic,anoint,anguished,angioplasty,angio,amply,ampicillin,amphetamines,alternator,alcove,alabaster,airlifted,agrabah,affidavits,admonished,admonish,addled,addendum,accuser,accompli,absurdity,absolved,abrusso,abreast,aboot,abductions,abducting,aback,ababwa,aaahhhh,zorin,zinthar,zinfandel,zillions,zephyrs,zatarcs,zacks,youuu,yokels,yardstick,yammer,y'understand,wynette,wrung,wreaths,wowed,wouldn'ta,worming,wormed,workday,woodsy,woodshed,woodchuck,wojadubakowski,withering,witching,wiseass,wiretaps,wining,willoby,wiccaning,whupped,whoopi,whoomp,wholesaler,whiteness,whiner,whatchya,wharves,wenus,weirdoes,weaning,watusi,waponi,waistband,wackos,vouching,votre,vivica,viveca,vivant,vivacious,visor,visitin,visage,vicrum,vetted,ventriloquism,venison,varnsen,vaporized,vapid,vanstock,uuuuh,ushering,urologist,urination,upstart,uprooted,unsubtitled,unspoiled,unseat,unseasonably,unseal,unsatisfying,unnerve,unlikable,unleaded,uninsured,uninspired,unicycle,unhooked,unfunny,unfreezing,unflattering,unfairness,unexpressed,unending,unencumbered,unearth,undiscovered,undisciplined,understan,undershirt,underlings,underline,undercurrent,uncivilized,uncharacteristic,umpteenth,uglies,tuney,trumps,truckasaurus,trubshaw,trouser,tringle,trifling,trickster,trespassers,trespasser,traumas,trattoria,trashes,transgressions,trampling,tp'ed,toxoplasmosis,tounge,tortillas,topsy,topple,topnotch,tonsil,tions,timmuh,timithious,tilney,tighty,tightness,tightens,tidbits,ticketed,thyme,threepio,thoughtfully,thorkel,thommo,thing'll,thefts,that've,thanksgivings,tetherball,testikov,terraforming,tepid,tendonitis,tenboom,telex,teenybopper,tattered,tattaglias,tanneke,tailspin,tablecloth,swooping,swizzle,swiping,swindled,swilling,swerving,sweatshops,swaddling,swackhammer,svetkoff,supossed,superdad,sumptuous,sugary,sugai,subvert,substantiate,submersible,sublimating,subjugation,stymied,strychnine,streetlights,strassmans,stranglehold,strangeness,straddling,straddle,stowaways,stotch,stockbrokers,stifling,stepford,steerage,steena,statuary,starlets,staggeringly,ssshhh,squaw,spurt,spungeon,spritzer,sprightly,sprays,sportswear,spoonful,splittin,splitsville,speedily,specialise,spastic,sparrin,souvlaki,southie,sourpuss,soupy,soundstage,soothes,somebody'd,softest,sociopathic,socialized,snyders,snowmobiles,snowballed,snatches,smugness,smoothest,smashes,sloshed,sleight,skyrocket,skied,skewed,sixpence,sipowicz,singling,simulates,shyness,shuvanis,showoff,shortsighted,shopkeeper,shoehorn,shithouse,shirtless,shipshape,shifu,shelve,shelbyville,sheepskin,sharpens,shaquille,shanshu,servings,sequined,seizes,seashells,scrambler,scopes,schnauzer,schmo,schizoid,scampered,savagely,saudis,santas,sandovals,sanding,saleswoman,sagging,s'cuse,rutting,ruthlessly,runneth,ruffians,rubes,rosalita,rollerblades,rohypnol,roasts,roadies,ritten,rippling,ripples,rigoletto,richardo,rethought,reshoot,reserving,reseda,rescuer,reread,requisitions,repute,reprogram,replenish,repetitious,reorganizing,reinventing,reinvented,reheat,refrigerators,reenter,recruiter,recliner,rawdy,rashes,rajeski,raison,raisers,rages,quinine,questscape,queller,pygmalion,pushers,pusan,purview,pumpin,pubescent,prudes,provolone,propriety,propped,procrastinate,processional,preyed,pretrial,portent,pooling,poofy,polloi,policia,poacher,pluses,pleasuring,platitudes,plateaued,plaguing,pittance,pinheads,pincushion,pimply,pimped,piggyback,piecing,phillipe,philipse,philby,pharaohs,petyr,petitioner,peshtigo,pesaram,persnickety,perpetrate,percolating,pepto,penne,penell,pemmican,peeks,pedaling,peacemaker,pawnshop,patting,pathologically,patchouli,pasts,pasties,passin,parlors,paltrow,palamon,padlock,paddling,oversleep,overheating,overdosed,overcharge,overblown,outrageously,ornery,opportune,oooooooooh,oohhhh,ohhhhhh,ogres,odorless,obliterated,nyong,nymphomaniac,ntozake,novocain,nough,nonnie,nonissue,nodules,nightmarish,nightline,niceties,newsman,needra,nedry,necking,navour,nauseam,nauls,narim,namath,nagged,naboo,n'sync,myslexia,mutator,mustafi,musketeer,murtaugh,murderess,munching,mumsy,muley,mouseville,mortifying,morgendorffers,moola,montel,mongoloid,molestered,moldings,mocarbies,mo'ss,mixers,misrell,misnomer,misheard,mishandled,miscreant,misconceptions,miniscule,millgate,mettle,metricconverter,meteors,menorah,mengele,melding,meanness,mcgruff,mcarnold,matzoh,matted,mastectomy,massager,marveling,marooned,marmaduke,marick,manhandled,manatees,man'll,maltin,maliciously,malfeasance,malahide,maketh,makeovers,maiming,machismo,lumpectomy,lumbering,lucci,lording,lorca,lookouts,loogie,loners,loathed,lissen,lighthearted,lifer,lickin,lewen,levitation,lestercorp,lessee,lentils,legislate,legalizing,lederhosen,lawmen,lasskopf,lardner,lambeau,lamagra,ladonn,lactic,lacquer,labatier,krabappel,kooks,knickknacks,klutzy,kleynach,klendathu,kinross,kinkaid,kind'a,ketch,kesher,karikos,karenina,kanamits,junshi,jumbled,joust,jotted,jobson,jingling,jigalong,jerries,jellies,jeeps,javna,irresistable,internist,intercranial,inseminated,inquisitor,infuriate,inflating,infidelities,incessantly,incensed,incase,incapacitate,inasmuch,inaccuracies,imploding,impeding,impediments,immaturity,illegible,iditarod,icicles,ibuprofen,i'i'm,hymie,hydrolase,hunker,humps,humons,humidor,humdinger,humbling,huggin,huffing,housecleaning,hothouse,hotcakes,hosty,hootenanny,hootchie,hoosegow,honks,honeymooners,homily,homeopathic,hitchhikers,hissed,hillnigger,hexavalent,hewwo,hershe,hermey,hergott,henny,hennigans,henhouse,hemolytic,helipad,heifer,hebrews,hebbing,heaved,headlock,harrowing,harnessed,hangovers,handi,handbasket,halfrek,hacene,gyges,guys're,gundersons,gumption,gruntmaster,grubs,grossie,groped,grins,greaseball,gravesite,gratuity,granma,grandfathers,grandbaby,gradski,gracing,gossips,gooble,goners,golitsyn,gofer,godsake,goddaughter,gnats,gluing,glares,givers,ginza,gimmie,gimmee,gennero,gemme,gazpacho,gazed,gassy,gargling,gandhiji,galvanized,gallbladder,gaaah,furtive,fumigation,fucka,fronkonsteen,frills,freezin,freewald,freeloader,frailty,forger,foolhardy,fondest,fomin,followin,follicle,flotation,flopping,floodgates,flogged,flicked,flenders,fleabag,fixings,fixable,fistful,firewater,firelight,fingerbang,finalizing,fillin,filipov,fiderer,felling,feldberg,feign,faunia,fatale,farkus,fallible,faithfulness,factoring,eyeful,extramarital,exterminated,exhume,exasperated,eviscerate,estoy,esmerelda,escapades,epoxy,enticed,enthused,entendre,engrossing,endorphins,emptive,emmys,eminently,embezzler,embarressed,embarrassingly,embalmed,eludes,eling,elated,eirie,egotitis,effecting,eerily,eecom,eczema,earthy,earlobes,eally,dyeing,dwells,duvet,duncans,dulcet,droves,droppin,drools,drey'auc,downriver,domesticity,dollop,doesnt,dobler,divulged,diversionary,distancing,dispensers,disorienting,disneyworld,dismissive,disingenuous,disheveled,disfiguring,dinning,dimming,diligently,dilettante,dilation,dickensian,diaphragms,devastatingly,destabilize,desecrate,deposing,deniece,demony,delving,delicates,deigned,defraud,deflower,defibrillator,defiantly,defenceless,defacing,deconstruction,decompose,deciphering,decibels,deceptively,deceptions,decapitation,debutantes,debonair,deadlier,dawdling,davic,darwinism,darnit,darks,danke,danieljackson,dangled,cytoxan,cutout,cutlery,curveball,curfews,cummerbund,crunches,crouched,crisps,cripples,crilly,cribs,crewman,creepin,creeds,credenza,creak,crawly,crawlin,crawlers,crated,crackheads,coworker,couldn't've,corwins,coriander,copiously,convenes,contraceptives,contingencies,contaminating,conniption,condiment,concocting,comprehending,complacency,commendatore,comebacks,com'on,collarbone,colitis,coldly,coiffure,coffers,coeds,codependent,cocksucking,cockney,cockles,clutched,closeted,cloistered,cleve,cleats,clarifying,clapped,cinnabar,chunnel,chumps,cholinesterase,choirboy,chocolatey,chlamydia,chigliak,cheesie,chauvinistic,chasm,chartreuse,charo,charnier,chapil,chalked,chadway,certifiably,cellulite,celled,cavalcade,cataloging,castrated,cassio,cashews,cartouche,carnivore,carcinogens,capulet,captivated,capt'n,cancellations,campin,callate,callar,caffeinated,cadavers,cacophony,cackle,buzzes,buttoning,busload,burglaries,burbs,buona,bunions,bullheaded,buffs,bucyk,buckling,bruschetta,browbeating,broomsticks,broody,bromly,brolin,briefings,brewskies,breathalyzer,breakups,bratwurst,brania,braiding,brags,braggin,bradywood,bottomed,bossa,bordello,bookshelf,boogida,bondsman,bolder,boggles,bludgeoned,blowtorch,blotter,blips,blemish,bleaching,blainetologists,blading,blabbermouth,birdseed,bimmel,biloxi,biggly,bianchinni,betadine,berenson,belus,belloq,begets,befitting,beepers,beelzebub,beefed,bedridden,bedevere,beckons,beaded,baubles,bauble,battleground,bathrobes,basketballs,basements,barroom,barnacle,barkin,barked,baretta,bangles,bangler,banality,bambang,baltar,ballplayers,bagman,baffles,backroom,babysat,baboons,averse,audiotape,auctioneer,atten,atcha,astonishment,arugula,arroz,antihistamines,annoyances,anesthesiology,anatomically,anachronism,amiable,amaretto,allahu,alight,aimin,ailment,afterglow,affronte,advil,adrenals,actualization,acrost,ached,accursed,accoutrements,absconded,aboveboard,abetted,aargh,aaaahh,zuwicky,zolda,ziploc,zakamatak,youve,yippie,yesterdays,yella,yearns,yearnings,yearned,yawning,yalta,yahtzee,y'mean,y'are,wuthering,wreaks,worrisome,workiiing,wooooooo,wonky,womanizing,wolodarsky,wiwith,withdraws,wishy,wisht,wipers,wiper,winos,windthorne,windsurfing,windermere,wiggled,wiggen,whwhat,whodunit,whoaaa,whittling,whitesnake,whereof,wheezing,wheeze,whatd'ya,whataya,whammo,whackin,wellll,weightless,weevil,wedgies,webbing,weasly,wayside,waxes,waturi,washy,washrooms,wandell,waitaminute,waddya,waaaah,vornac,vishnoor,virulent,vindictiveness,vinceres,villier,vigeous,vestigial,ventilate,vented,venereal,veering,veered,veddy,vaslova,valosky,vailsburg,vaginas,vagas,urethra,upstaged,uploading,unwrapping,unwieldy,untapped,unsatisfied,unquenchable,unnerved,unmentionable,unlovable,unknowns,uninformed,unimpressed,unhappily,unguarded,unexplored,undergarment,undeniably,unclench,unclaimed,uncharacteristically,unbuttoned,unblemished,ululd,uhhhm,tweeze,tutsami,tushy,tuscarora,turkle,turghan,turbinium,tubers,trucoat,troxa,tropicana,triquetra,trimmers,triceps,trespassed,traya,traumatizing,transvestites,trainors,tradin,trackers,townies,tourelles,toucha,tossin,tortious,topshop,topes,tonics,tongs,tomsk,tomorrows,toiling,toddle,tizzy,tippers,timmi,thwap,thusly,ththe,thrusts,throwers,throwed,throughway,thickening,thermonuclear,thelwall,thataway,terrifically,tendons,teleportation,telepathically,telekinetic,teetering,teaspoons,tarantulas,tapas,tanned,tangling,tamales,tailors,tahitian,tactful,tachy,tablespoon,syrah,synchronicity,synch,synapses,swooning,switchman,swimsuits,sweltering,sweetly,suvolte,suslov,surfed,supposition,suppertime,supervillains,superfluous,superego,sunspots,sunning,sunless,sundress,suckah,succotash,sublevel,subbasement,studious,striping,strenuously,straights,stonewalled,stillness,stilettos,stevesy,steno,steenwyck,stargates,stammering,staedert,squiggly,squiggle,squashing,squaring,spreadsheet,spramp,spotters,sporto,spooking,splendido,spittin,spirulina,spiky,spate,spartacus,spacerun,soonest,something'll,someth,somepin,someone'll,sofas,soberly,sobered,snowmen,snowbank,snowballing,snivelling,sniffling,snakeskin,snagging,smush,smooter,smidgen,smackers,slumlord,slossum,slimmer,slighted,sleepwalk,sleazeball,skokie,skeptic,sitarides,sistah,sipped,sindell,simpletons,simony,silkwood,silks,silken,sightless,sideboard,shuttles,shrugging,shrouds,showy,shoveled,shouldn'ta,shoplifters,shitstorm,sheeny,shapetype,shaming,shallows,shackle,shabbily,shabbas,seppuku,senility,semite,semiautomatic,selznick,secretarial,sebacio,scuzzy,scummy,scrutinized,scrunchie,scribbled,scotches,scolded,scissor,schlub,scavenging,scarin,scarfing,scallions,scald,savour,savored,saute,sarcoidosis,sandbar,saluted,salish,saith,sailboats,sagittarius,sacre,saccharine,sacamano,rushdie,rumpled,rumba,rulebook,rubbers,roughage,rotisserie,rootie,roofy,roofie,romanticize,rittle,ristorante,rippin,rinsing,ringin,rincess,rickety,reveling,retest,retaliating,restorative,reston,restaurateur,reshoots,resetting,resentments,reprogramming,repossess,repartee,renzo,remore,remitting,remeber,relaxants,rejuvenate,rejections,regenerated,refocus,referrals,reeno,recycles,recrimination,reclining,recanting,reattach,reassigning,razgul,raved,rattlesnakes,rattles,rashly,raquetball,ransack,raisinettes,raheem,radisson,radishes,raban,quoth,qumari,quints,quilts,quilting,quien,quarreled,purty,purblind,punchbowl,publically,psychotics,psychopaths,psychoanalyze,pruning,provasik,protectin,propping,proportioned,prophylactic,proofed,prompter,procreate,proclivities,prioritizing,prinze,pricked,press'll,presets,prescribes,preocupe,prejudicial,prefex,preconceived,precipice,pralines,pragmatist,powerbar,pottie,pottersville,potsie,potholes,posses,posies,portkey,porterhouse,pornographers,poring,poppycock,poppers,pomponi,pokin,poitier,podiatry,pleeze,pleadings,playbook,platelets,plane'arium,placebos,place'll,pistachios,pirated,pinochle,pineapples,pinafore,pimples,piggly,piddling,picon,pickpockets,picchu,physiologically,physic,phobic,philandering,phenomenally,pheasants,pewter,petticoat,petronis,petitioning,perturbed,perpetuating,permutat,perishable,perimeters,perfumed,percocet,per'sus,pepperjack,penalize,pelting,pellet,peignoir,pedicures,peckers,pecans,pawning,paulsson,pattycake,patrolmen,patois,pathos,pasted,parishioner,parcheesi,parachuting,papayas,pantaloons,palpitations,palantine,paintballing,overtired,overstress,oversensitive,overnights,overexcited,overanxious,overachiever,outwitted,outvoted,outnumber,outlast,outlander,out've,orphey,orchestrating,openers,ooooooo,okies,ohhhhhhhhh,ohhhhhhhh,ogling,offbeat,obsessively,obeyed,o'hana,o'bannon,o'bannion,numpce,nummy,nuked,nuances,nourishing,nosedive,norbu,nomlies,nomine,nixed,nihilist,nightshift,newmeat,neglectful,neediness,needin,naphthalene,nanocytes,nanite,naivete,n'yeah,mystifying,myhnegon,mutating,musing,mulled,muggy,muerto,muckraker,muchachos,mountainside,motherless,mosquitos,morphed,mopped,moodoo,moncho,mollem,moisturiser,mohicans,mocks,mistresses,misspent,misinterpretation,miscarry,minuses,mindee,mimes,millisecond,milked,mightn't,mightier,mierzwiak,microchips,meyerling,mesmerizing,mershaw,meecrob,medicate,meddled,mckinnons,mcgewan,mcdunnough,mcats,mbien,matzah,matriarch,masturbated,masselin,martialed,marlboros,marksmanship,marinate,marchin,manicured,malnourished,malign,majorek,magnon,magnificently,macking,machiavellian,macdougal,macchiato,macaws,macanaw,m'self,lydells,lusts,lucite,lubricants,lopper,lopped,loneliest,lonelier,lomez,lojack,loath,liquefy,lippy,limps,likin,lightness,liesl,liebchen,licious,libris,libation,lhamo,leotards,leanin,laxatives,lavished,latka,lanyard,lanky,landmines,lameness,laddies,lacerated,labored,l'amour,kreskin,kovitch,kournikova,kootchy,konoss,knknow,knickety,knackety,kmart,klicks,kiwanis,kissable,kindergartners,kilter,kidnet,kid'll,kicky,kickbacks,kickback,kholokov,kewpie,kendo,katra,kareoke,kafelnikov,kabob,junjun,jumba,julep,jordie,jondy,jolson,jenoff,jawbone,janitorial,janiro,ipecac,invigorated,intruded,intros,intravenously,interruptus,interrogations,interject,interfacing,interestin,insuring,instilled,insensitivity,inscrutable,inroads,innards,inlaid,injector,ingratitude,infuriates,infra,infliction,indelicate,incubators,incrimination,inconveniencing,inconsolable,incestuous,incas,incarcerate,inbreeding,impudence,impressionists,impeached,impassioned,imipenem,idling,idiosyncrasies,icebergs,hypotensive,hydrochloride,hushed,humus,humph,hummm,hulking,hubcaps,hubald,howya,howbout,how'll,housebroken,hotwire,hotspots,hotheaded,horrace,hopsfield,honto,honkin,honeymoons,homewrecker,hombres,hollers,hollerin,hoedown,hoboes,hobbling,hobble,hoarse,hinky,highlighters,hexes,heru'ur,hernias,heppleman,hell're,heighten,heheheheheh,heheheh,hedging,heckling,heckled,heavyset,heatshield,heathens,heartthrob,headpiece,hayseed,haveo,hauls,hasten,harridan,harpoons,hardens,harcesis,harbouring,hangouts,halkein,haleh,halberstam,hairnet,hairdressers,hacky,haaaa,h'yah,gusta,gushy,gurgling,guilted,gruel,grudging,grrrrrr,grosses,groomsmen,griping,gravest,gratified,grated,goulash,goopy,goona,goodly,godliness,godawful,godamn,glycerin,glutes,glowy,globetrotters,glimpsed,glenville,glaucoma,girlscout,giraffes,gilbey,gigglepuss,ghora,gestating,gelato,geishas,gearshift,gayness,gasped,gaslighting,garretts,garba,gablyczyck,g'head,fumigating,fumbling,fudged,fuckwad,fuck're,fuchsia,fretting,freshest,frenchies,freezers,fredrica,fraziers,fraidy,foxholes,fourty,fossilized,forsake,forfeits,foreclosed,foreal,footsies,florists,flopped,floorshow,floorboard,flinching,flecks,flaubert,flatware,flatulence,flatlined,flashdance,flail,flagging,fiver,fitzy,fishsticks,finetti,finelli,finagle,filko,fieldstone,fibber,ferrini,feedin,feasting,favore,fathering,farrouhk,farmin,fairytale,fairservice,factoid,facedown,fabled,eyeballin,extortionist,exquisitely,expedited,exorcise,existentialist,execs,exculpatory,exacerbate,everthing,eventuality,evander,euphoric,euphemisms,estamos,erred,entitle,enquiries,enormity,enfants,endive,encyclopedias,emulating,embittered,effortless,ectopic,ecirc,easely,earphones,earmarks,dweller,durslar,durned,dunois,dunking,dunked,dumdum,dullard,dudleys,druthers,druggist,drossos,drooled,driveways,drippy,dreamless,drawstring,drang,drainpipe,dozing,dotes,dorkface,doorknobs,doohickey,donnatella,doncha,domicile,dokos,dobermans,dizzying,divola,ditsy,distaste,disservice,dislodged,dislodge,disinherit,disinformation,discounting,dinka,dimly,digesting,diello,diddling,dictatorships,dictators,diagnostician,devours,devilishly,detract,detoxing,detours,detente,destructs,desecrated,derris,deplore,deplete,demure,demolitions,demean,delish,delbruck,delaford,degaulle,deftly,deformity,deflate,definatly,defector,decrypted,decontamination,decapitate,decanter,dardis,dampener,damme,daddy'll,dabbling,dabbled,d'etre,d'argent,d'alene,d'agnasti,czechoslovakian,cymbal,cyberdyne,cutoffs,cuticle,curvaceous,curiousity,crowing,crowed,croutons,cropped,criminy,crescentis,crashers,cranwell,coverin,courtrooms,countenance,cosmically,cosign,corroboration,coroners,cornflakes,copperpot,copperhead,copacetic,coordsize,convulsing,consults,conjures,congenial,concealer,compactor,commercialism,cokey,cognizant,clunkers,clumsily,clucking,cloves,cloven,cloths,clothe,clods,clocking,clings,clavicle,classless,clashing,clanking,clanging,clamping,civvies,citywide,circulatory,circuited,chronisters,chromic,choos,chloroformed,chillun,cheesed,chatterbox,chaperoned,channukah,cerebellum,centerpieces,centerfold,ceecee,ccedil,cavorting,cavemen,cauterized,cauldwell,catting,caterine,cassiopeia,carves,cartwheel,carpeted,carob,caressing,carelessly,careening,capricious,capitalistic,capillaries,candidly,camaraderie,callously,calfskin,caddies,buttholes,busywork,busses,burps,burgomeister,bunkhouse,bungchow,bugler,buffets,buffed,brutish,brusque,bronchitis,bromden,brolly,broached,brewskis,brewin,brean,breadwinner,brana,bountiful,bouncin,bosoms,borgnine,bopping,bootlegs,booing,bombosity,bolting,boilerplate,bluey,blowback,blouses,bloodsuckers,bloodstained,bloat,bleeth,blackface,blackest,blackened,blacken,blackballed,blabs,blabbering,birdbrain,bipartisanship,biodegradable,biltmore,bilked,big'uns,bidet,besotted,bernheim,benegas,bendiga,belushi,bellboys,belittling,behinds,begone,bedsheets,beckoning,beaute,beaudine,beastly,beachfront,bathes,batak,baser,baseballs,barbella,bankrolling,bandaged,baerly,backlog,backin,babying,azkaban,awwwww,aviary,authorizes,austero,aunty,attics,atreus,astounded,astonish,artemus,arses,arintero,appraiser,apathetic,anybody'd,anxieties,anticlimactic,antar,anglos,angleman,anesthetist,androscoggin,andolini,andale,amway,amuck,amniocentesis,amnesiac,americano,amara,alvah,altruism,alternapalooza,alphabetize,alpaca,allus,allergist,alexandros,alaikum,akimbo,agoraphobia,agides,aggrhh,aftertaste,adoptions,adjuster,addictions,adamantium,activator,accomplishes,aberrant,aaaaargh,aaaaaaaaaaaaa,a'ight,zzzzzzz,zucchini,zookeeper,zirconia,zippers,zequiel,zellary,zeitgeist,zanuck,zagat,you'n,ylang,yes'm,yenta,yecchh,yecch,yawns,yankin,yahdah,yaaah,y'got,xeroxed,wwooww,wristwatch,wrangled,wouldst,worthiness,worshiping,wormy,wormtail,wormholes,woosh,wollsten,wolfing,woefully,wobbling,wintry,wingding,windstorm,windowtext,wiluna,wilting,wilted,willick,willenholly,wildflowers,wildebeest,whyyy,whoppers,whoaa,whizzing,whizz,whitest,whistled,whist,whinny,wheelies,whazzup,whatwhatwhaaat,whato,whatdya,what'dya,whacks,wewell,wetsuit,welluh,weeps,waylander,wavin,wassail,wasnt,warneford,warbucks,waltons,wallbanger,waiving,waitwait,vowing,voucher,vornoff,vorhees,voldemort,vivre,vittles,vindaloo,videogames,vichyssoise,vicarious,vesuvius,verguenza,ven't,velveteen,velour,velociraptor,vastness,vasectomies,vapors,vanderhof,valmont,validates,valiantly,vacuums,usurp,usernum,us'll,urinals,unyielding,unvarnished,unturned,untouchables,untangled,unsecured,unscramble,unreturned,unremarkable,unpretentious,unnerstand,unmade,unimpeachable,unfashionable,underwrite,underlining,underling,underestimates,underappreciated,uncouth,uncork,uncommonly,unclog,uncircumcised,unchallenged,uncas,unbuttoning,unapproved,unamerican,unafraid,umpteen,umhmm,uhwhy,ughuh,typewriters,twitches,twitched,twirly,twinkling,twinges,twiddling,turners,turnabout,tumblin,tryed,trowel,trousseau,trivialize,trifles,tribianni,trenchcoat,trembled,traumatize,transitory,transients,transfuse,transcribing,tranq,trampy,traipsed,trainin,trachea,traceable,touristy,toughie,toscanini,tortola,tortilla,torreon,toreador,tommorrow,tollbooth,tollans,toidy,togas,tofurkey,toddling,toddies,toasties,toadstool,to've,tingles,timin,timey,timetables,tightest,thuggee,thrusting,thrombus,throes,thrifty,thornharts,thinnest,thicket,thetas,thesulac,tethered,testaburger,tersenadine,terrif,terdlington,tepui,temping,tector,taxidermy,tastebuds,tartlets,tartabull,tar'd,tantamount,tangy,tangles,tamer,tabula,tabletops,tabithia,szechwan,synthedyne,svenjolly,svengali,survivalists,surmise,surfboards,surefire,suprise,supremacists,suppositories,superstore,supercilious,suntac,sunburned,summercliff,sullied,sugared,suckle,subtleties,substantiated,subsides,subliminal,subhuman,strowman,stroked,stroganoff,streetlight,straying,strainer,straighter,straightener,stoplight,stirrups,stewing,stereotyping,stepmommy,stephano,stashing,starshine,stairwells,squatsie,squandering,squalid,squabbling,squab,sprinkling,spreader,spongy,spokesmen,splintered,spittle,spitter,spiced,spews,spendin,spect,spearchucker,spatulas,southtown,soused,soshi,sorter,sorrowful,sooth,some'in,soliloquy,soiree,sodomized,sobriki,soaping,snows,snowcone,snitching,snitched,sneering,snausages,snaking,smoothed,smoochies,smarten,smallish,slushy,slurring,sluman,slithers,slippin,sleuthing,sleeveless,skinless,skillfully,sketchbook,skagnetti,sista,sinning,singularly,sinewy,silverlake,siguto,signorina,sieve,sidearms,shying,shunning,shtud,shrieks,shorting,shortbread,shopkeepers,shmancy,shizzit,shitheads,shitfaced,shipmates,shiftless,shelving,shedlow,shavings,shatters,sharifa,shampoos,shallots,shafter,sha'nauc,sextant,serviceable,sepsis,senores,sendin,semis,semanski,selflessly,seinfelds,seers,seeps,seductress,secaucus,sealant,scuttling,scusa,scrunched,scissorhands,schreber,schmancy,scamps,scalloped,savoir,savagery,sarong,sarnia,santangel,samool,sallow,salino,safecracker,sadism,sacrilegious,sabrini,sabath,s'aright,ruttheimer,rudest,rubbery,rousting,rotarian,roslin,roomed,romari,romanica,rolltop,rolfski,rockettes,roared,ringleader,riffing,ribcage,rewired,retrial,reting,resuscitated,restock,resale,reprogrammed,replicant,repentant,repellant,repays,repainting,renegotiating,rendez,remem,relived,relinquishes,relearn,relaxant,rekindling,rehydrate,refueled,refreshingly,refilling,reexamine,reeseman,redness,redeemable,redcoats,rectangles,recoup,reciprocated,reassessing,realy,realer,reachin,re'kali,rawlston,ravages,rappaports,ramoray,ramming,raindrops,rahesh,radials,racists,rabartu,quiches,quench,quarreling,quaintly,quadrants,putumayo,put'em,purifier,pureed,punitis,pullout,pukin,pudgy,puddings,puckering,pterodactyl,psychodrama,psats,protestations,protectee,prosaic,propositioned,proclivity,probed,printouts,prevision,pressers,preset,preposition,preempt,preemie,preconceptions,prancan,powerpuff,potties,potpie,poseur,porthole,poops,pooping,pomade,polyps,polymerized,politeness,polisher,polack,pocketknife,poatia,plebeian,playgroup,platonically,platitude,plastering,plasmapheresis,plaids,placemats,pizzazz,pintauro,pinstripes,pinpoints,pinkner,pincer,pimento,pileup,pilates,pigmen,pieeee,phrased,photocopies,phoebes,philistines,philanderer,pheromone,phasers,pfeffernuesse,pervs,perspire,personify,perservere,perplexed,perpetrating,perkiness,perjurer,periodontist,perfunctory,perdido,percodan,pentameter,pentacle,pensive,pensione,pennybaker,pennbrooke,penhall,pengin,penetti,penetrates,pegnoir,peeve,peephole,pectorals,peckin,peaky,peaksville,paxcow,paused,patted,parkishoff,parkers,pardoning,paraplegic,paraphrasing,paperers,papered,pangs,paneling,palooza,palmed,palmdale,palatable,pacify,pacified,owwwww,oversexed,overrides,overpaying,overdrawn,overcompensate,overcomes,overcharged,outmaneuver,outfoxed,oughtn't,ostentatious,oshun,orthopedist,or'derves,ophthalmologist,operagirl,oozes,oooooooh,onesie,omnis,omelets,oktoberfest,okeydoke,ofthe,ofher,obstetrical,obeys,obeah,o'henry,nyquil,nyanyanyanyah,nuttin,nutsy,nutball,nurhachi,numbskull,nullifies,nullification,nucking,nubbin,nourished,nonspecific,noing,noinch,nohoho,nobler,nitwits,newsprint,newspaperman,newscaster,neuropathy,netherworld,neediest,navasky,narcissists,napped,nafta,mache,mykonos,mutilating,mutherfucker,mutha,mutates,mutate,musn't,murchy,multitasking,mujeeb,mudslinging,muckraking,mousetrap,mourns,mournful,motherf,mostro,morphing,morphate,moralistic,moochy,mooching,monotonous,monopolize,monocle,molehill,moland,mofet,mockup,mobilizing,mmmmmmm,mitzvahs,mistreating,misstep,misjudge,misinformation,misdirected,miscarriages,miniskirt,mindwarped,minced,milquetoast,miguelito,mightily,midstream,midriff,mideast,microbe,methuselah,mesdames,mescal,men'll,memma,megaton,megara,megalomaniac,meeee,medulla,medivac,meaninglessness,mcnuggets,mccarthyism,maypole,may've,mauve,mateys,marshack,markles,marketable,mansiere,manservant,manse,manhandling,mallomars,malcontent,malaise,majesties,mainsail,mailmen,mahandra,magnolias,magnified,magev,maelstrom,machu,macado,m'boy,m'appelle,lustrous,lureen,lunges,lumped,lumberyard,lulled,luego,lucks,lubricated,loveseat,loused,lounger,loski,lorre,loora,looong,loonies,loincloth,lofts,lodgers,lobbing,loaner,livered,liqueur,ligourin,lifesaving,lifeguards,lifeblood,liaisons,let'em,lesbianism,lence,lemonlyman,legitimize,leadin,lazars,lazarro,lawyering,laugher,laudanum,latrines,lations,laters,lapels,lakefront,lahit,lafortunata,lachrymose,l'italien,kwaini,kruczynski,kramerica,kowtow,kovinsky,korsekov,kopek,knowakowski,knievel,knacks,kiowas,killington,kickball,keyworth,keymaster,kevie,keveral,kenyons,keggers,keepsakes,kechner,keaty,kavorka,karajan,kamerev,kaggs,jujyfruit,jostled,jonestown,jokey,joists,jocko,jimmied,jiggled,jests,jenzen,jenko,jellyman,jedediah,jealitosis,jaunty,jarmel,jankle,jagoff,jagielski,jackrabbits,jabbing,jabberjaw,izzat,irresponsibly,irrepressible,irregularity,irredeemable,inuvik,intuitions,intubated,intimates,interminable,interloper,intercostal,instyle,instigate,instantaneously,ining,ingrown,ingesting,infusing,infringe,infinitum,infact,inequities,indubitably,indisputable,indescribably,indentation,indefinable,incontrovertible,inconsequential,incompletes,incoherently,inclement,incidentals,inarticulate,inadequacies,imprudent,improprieties,imprison,imprinted,impressively,impostors,importante,imperious,impale,immodest,immobile,imbedded,imbecilic,illegals,idn't,hysteric,hypotenuse,hygienic,hyeah,hushpuppies,hunhh,humpback,humored,hummed,humiliates,humidifier,huggy,huggers,huckster,hotbed,hosing,hosers,horsehair,homebody,homebake,holing,holies,hoisting,hogwallop,hocks,hobbits,hoaxes,hmmmmm,hisses,hippest,hillbillies,hilarity,heurh,herniated,hermaphrodite,hennifer,hemlines,hemline,hemery,helplessness,helmsley,hellhound,heheheheh,heeey,hedda,heartbeats,heaped,healers,headstart,headsets,headlong,hawkland,havta,haulin,harvey'll,hanta,hansom,hangnail,handstand,handrail,handoff,hallucinogen,hallor,halitosis,haberdashery,gypped,guy'll,gumbel,guerillas,guava,guardrail,grunther,grunick,groppi,groomer,grodin,gripes,grinds,grifters,gretch,greevey,greasing,graveyards,grandkid,grainy,gouging,gooney,googly,goldmuff,goldenrod,goingo,godly,gobbledygook,gobbledegook,glues,gloriously,glengarry,glassware,glamor,gimmicks,giggly,giambetti,ghoulish,ghettos,ghali,gether,geriatrics,gerbils,geosynchronous,georgio,gente,gendarme,gelbman,gazillionth,gayest,gauging,gastro,gaslight,gasbag,garters,garish,garas,gantu,gangy,gangly,gangland,galling,gadda,furrowed,funnies,funkytown,fugimotto,fudging,fuckeen,frustrates,froufrou,froot,fromberge,frizzies,fritters,frightfully,friendliest,freeloading,freelancing,freakazoid,fraternization,framers,fornication,fornicating,forethought,footstool,foisting,focussing,focking,flurries,fluffed,flintstones,fledermaus,flayed,flawlessly,flatters,flashbang,flapped,fishies,firmer,fireproof,firebug,fingerpainting,finessed,findin,financials,finality,fillets,fiercest,fiefdom,fibbing,fervor,fentanyl,fenelon,fedorchuk,feckless,feathering,faucets,farewells,fantasyland,fanaticism,faltered,faggy,faberge,extorting,extorted,exterminating,exhumation,exhilaration,exhausts,exfoliate,excels,exasperating,exacting,everybody'd,evasions,espressos,esmail,errrr,erratically,eroding,ernswiler,epcot,enthralled,ensenada,enriching,enrage,enhancer,endear,encrusted,encino,empathic,embezzle,emanates,electricians,eking,egomaniacal,egging,effacing,ectoplasm,eavesdropped,dummkopf,dugray,duchaisne,drunkard,drudge,droop,droids,drips,dripped,dribbles,drazens,downy,downsize,downpour,dosages,doppelganger,dopes,doohicky,dontcha,doneghy,divining,divest,diuretics,diuretic,distrustful,disrupts,dismemberment,dismember,disinfect,disillusionment,disheartening,discourteous,discotheque,discolored,dirtiest,diphtheria,dinks,dimpled,didya,dickwad,diatribes,diathesis,diabetics,deviants,detonates,detests,detestable,detaining,despondent,desecration,derision,derailing,deputized,depressors,dependant,dentures,denominators,demur,demonology,delts,dellarte,delacour,deflated,defib,defaced,decorators,deaqon,davola,datin,darwinian,darklighters,dandelions,dampened,damaskinos,dalrimple,d'peshu,d'hoffryn,d'astier,cynics,cutesy,cutaway,curmudgeon,curdle,culpability,cuisinart,cuffing,crypts,cryptid,crunched,crumblers,crudely,crosscheck,croon,crissake,crevasse,creswood,creepo,creases,creased,creaky,cranks,crabgrass,coveralls,couple'a,coughs,coslaw,corporeal,cornucopia,cornering,corks,cordoned,coolly,coolin,cookbooks,contrite,contented,constrictor,confound,confit,confiscating,condoned,conditioners,concussions,comprendo,comers,combustible,combusted,collingswood,coldness,coitus,codicil,coasting,clydesdale,cluttering,clunker,clunk,clumsiness,clotted,clothesline,clinches,clincher,cleverness,clench,clein,cleanses,claymores,clammed,chugging,chronically,christsakes,choque,chompers,chiseling,chirpy,chirp,chinks,chingachgook,chickenpox,chickadee,chewin,chessboard,chargin,chanteuse,chandeliers,chamdo,chagrined,chaff,certs,certainties,cerreno,cerebrum,censured,cemetary,caterwauling,cataclysmic,casitas,cased,carvel,carting,carrear,carolling,carolers,carnie,cardiogram,carbuncle,capulets,canines,candaules,canape,caldecott,calamitous,cadillacs,cachet,cabeza,cabdriver,buzzards,butai,businesswomen,bungled,bumpkins,bummers,bulldoze,buffybot,bubut,bubbies,brrrrr,brownout,brouhaha,bronzing,bronchial,broiler,briskly,briefcases,bricked,breezing,breeher,breakable,breadstick,bravenet,braved,brandies,brainwaves,brainiest,braggart,bradlee,boys're,boys'll,boys'd,boutonniere,bossed,bosomy,borans,boosts,bookshelves,bookends,boneless,bombarding,bollo,boinked,boink,bluest,bluebells,bloodshot,blockhead,blockbusters,blithely,blather,blankly,bladders,blackbeard,bitte,bippy,biogenetics,bilge,bigglesworth,bicuspids,beususe,betaseron,besmirch,bernece,bereavement,bentonville,benchley,benching,bembe,bellyaching,bellhops,belie,beleaguered,behrle,beginnin,begining,beenie,beefs,beechwood,becau,beaverhausen,beakers,bazillion,baudouin,barrytown,barringtons,barneys,barbs,barbers,barbatus,bankrupted,bailiffs,backslide,baby'd,baaad,b'fore,awwwk,aways,awakes,automatics,authenticate,aught,aubyn,attired,attagirl,atrophied,asystole,astroturf,assertiveness,artichokes,arquillians,aright,archenemy,appraise,appeased,antin,anspaugh,anesthetics,anaphylactic,amscray,ambivalence,amalio,alriiight,alphabetized,alpena,alouette,allora,alliteration,allenwood,allegiances,algerians,alcerro,alastor,ahaha,agitators,aforethought,advertises,admonition,adirondacks,adenoids,acupuncturist,acula,actuarial,activators,actionable,achingly,accusers,acclimated,acclimate,absurdly,absorbent,absolvo,absolutes,absences,abdomenizer,aaaaaaaaah,aaaaaaaaaa,a'right".split(","),
45550 male_names:"james,john,robert,michael,william,david,richard,charles,joseph,thomas,christopher,daniel,paul,mark,donald,george,kenneth,steven,edward,brian,ronald,anthony,kevin,jason,matthew,gary,timothy,jose,larry,jeffrey,frank,scott,eric,stephen,andrew,raymond,gregory,joshua,jerry,dennis,walter,patrick,peter,harold,douglas,henry,carl,arthur,ryan,roger,joe,juan,jack,albert,jonathan,justin,terry,gerald,keith,samuel,willie,ralph,lawrence,nicholas,roy,benjamin,bruce,brandon,adam,harry,fred,wayne,billy,steve,louis,jeremy,aaron,randy,eugene,carlos,russell,bobby,victor,ernest,phillip,todd,jesse,craig,alan,shawn,clarence,sean,philip,chris,johnny,earl,jimmy,antonio,danny,bryan,tony,luis,mike,stanley,leonard,nathan,dale,manuel,rodney,curtis,norman,marvin,vincent,glenn,jeffery,travis,jeff,chad,jacob,melvin,alfred,kyle,francis,bradley,jesus,herbert,frederick,ray,joel,edwin,don,eddie,ricky,troy,randall,barry,bernard,mario,leroy,francisco,marcus,micheal,theodore,clifford,miguel,oscar,jay,jim,tom,calvin,alex,jon,ronnie,bill,lloyd,tommy,leon,derek,darrell,jerome,floyd,leo,alvin,tim,wesley,dean,greg,jorge,dustin,pedro,derrick,dan,zachary,corey,herman,maurice,vernon,roberto,clyde,glen,hector,shane,ricardo,sam,rick,lester,brent,ramon,tyler,gilbert,gene,marc,reginald,ruben,brett,nathaniel,rafael,edgar,milton,raul,ben,cecil,duane,andre,elmer,brad,gabriel,ron,roland,jared,adrian,karl,cory,claude,erik,darryl,neil,christian,javier,fernando,clinton,ted,mathew,tyrone,darren,lonnie,lance,cody,julio,kurt,allan,clayton,hugh,max,dwayne,dwight,armando,felix,jimmie,everett,ian,ken,bob,jaime,casey,alfredo,alberto,dave,ivan,johnnie,sidney,byron,julian,isaac,clifton,willard,daryl,virgil,andy,salvador,kirk,sergio,seth,kent,terrance,rene,eduardo,terrence,enrique,freddie,stuart,fredrick,arturo,alejandro,joey,nick,luther,wendell,jeremiah,evan,julius,donnie,otis,trevor,luke,homer,gerard,doug,kenny,hubert,angelo,shaun,lyle,matt,alfonso,orlando,rex,carlton,ernesto,pablo,lorenzo,omar,wilbur,blake,horace,roderick,kerry,abraham,rickey,ira,andres,cesar,johnathan,malcolm,rudolph,damon,kelvin,rudy,preston,alton,archie,marco,pete,randolph,garry,geoffrey,jonathon,felipe,bennie,gerardo,dominic,loren,delbert,colin,guillermo,earnest,benny,noel,rodolfo,myron,edmund,salvatore,cedric,lowell,gregg,sherman,devin,sylvester,roosevelt,israel,jermaine,forrest,wilbert,leland,simon,irving,owen,rufus,woodrow,sammy,kristopher,levi,marcos,gustavo,jake,lionel,marty,gilberto,clint,nicolas,laurence,ismael,orville,drew,ervin,dewey,wilfred,josh,hugo,ignacio,caleb,tomas,sheldon,erick,frankie,darrel,rogelio,terence,alonzo,elias,bert,elbert,ramiro,conrad,noah,grady,phil,cornelius,lamar,rolando,clay,percy,bradford,merle,darin,amos,terrell,moses,irvin,saul,roman,darnell,randal,tommie,timmy,darrin,brendan,toby,van,abel,dominick,emilio,elijah,cary,domingo,aubrey,emmett,marlon,emanuel,jerald,edmond,emil,dewayne,otto,teddy,reynaldo,bret,jess,trent,humberto,emmanuel,stephan,louie,vicente,lamont,garland,micah,efrain,heath,rodger,demetrius,ethan,eldon,rocky,pierre,eli,bryce,antoine,robbie,kendall,royce,sterling,grover,elton,cleveland,dylan,chuck,damian,reuben,stan,leonardo,russel,erwin,benito,hans,monte,blaine,ernie,curt,quentin,agustin,jamal,devon,adolfo,tyson,wilfredo,bart,jarrod,vance,denis,damien,joaquin,harlan,desmond,elliot,darwin,gregorio,kermit,roscoe,esteban,anton,solomon,norbert,elvin,nolan,carey,rod,quinton,hal,brain,rob,elwood,kendrick,darius,moises,marlin,fidel,thaddeus,cliff,marcel,ali,raphael,bryon,armand,alvaro,jeffry,dane,joesph,thurman,ned,sammie,rusty,michel,monty,rory,fabian,reggie,kris,isaiah,gus,avery,loyd,diego,adolph,millard,rocco,gonzalo,derick,rodrigo,gerry,rigoberto,alphonso,rickie,noe,vern,elvis,bernardo,mauricio,hiram,donovan,basil,nickolas,scot,vince,quincy,eddy,sebastian,federico,ulysses,heriberto,donnell,denny,gavin,emery,romeo,jayson,dion,dante,clement,coy,odell,jarvis,bruno,issac,dudley,sanford,colby,carmelo,nestor,hollis,stefan,donny,linwood,beau,weldon,galen,isidro,truman,delmar,johnathon,silas,frederic,irwin,merrill,charley,marcelino,carlo,trenton,kurtis,aurelio,winfred,vito,collin,denver,leonel,emory,pasquale,mohammad,mariano,danial,landon,dirk,branden,adan,numbers,clair,buford,bernie,wilmer,emerson,zachery,jacques,errol,josue,edwardo,wilford,theron,raymundo,daren,tristan,robby,lincoln,jame,genaro,octavio,cornell,hung,arron,antony,herschel,alva,giovanni,garth,cyrus,cyril,ronny,stevie,lon,kennith,carmine,augustine,erich,chadwick,wilburn,russ,myles,jonas,mitchel,mervin,zane,jamel,lazaro,alphonse,randell,johnie,jarrett,ariel,abdul,dusty,luciano,seymour,scottie,eugenio,mohammed,arnulfo,lucien,ferdinand,thad,ezra,aldo,rubin,mitch,earle,abe,marquis,lanny,kareem,jamar,boris,isiah,emile,elmo,aron,leopoldo,everette,josef,eloy,dorian,rodrick,reinaldo,lucio,jerrod,weston,hershel,lemuel,lavern,burt,jules,gil,eliseo,ahmad,nigel,efren,antwan,alden,margarito,refugio,dino,osvaldo,les,deandre,normand,kieth,ivory,trey,norberto,napoleon,jerold,fritz,rosendo,milford,sang,deon,christoper,alfonzo,lyman,josiah,brant,wilton,rico,jamaal,dewitt,brenton,yong,olin,faustino,claudio,judson,gino,edgardo,alec,jarred,donn,trinidad,tad,porfirio,odis,lenard,chauncey,tod,mel,marcelo,kory,augustus,keven,hilario,bud,sal,orval,mauro,dannie,zachariah,olen,anibal,milo,jed,thanh,amado,lenny,tory,richie,horacio,brice,mohamed,delmer,dario,mac,jonah,jerrold,robt,hank,sung,rupert,rolland,kenton,damion,chi,antone,waldo,fredric,bradly,kip,burl,tyree,jefferey,ahmed,willy,stanford,oren,moshe,mikel,enoch,brendon,quintin,jamison,florencio,darrick,tobias,minh,hassan,giuseppe,demarcus,cletus,tyrell,lyndon,keenan,werner,theo,geraldo,columbus,chet,bertram,markus,huey,hilton,dwain,donte,tyron,omer,isaias,hipolito,fermin,chung,adalberto,jamey,teodoro,mckinley,maximo,raleigh,lawerence,abram,rashad,emmitt,daron,chong,samual,otha,miquel,eusebio,dong,domenic,darron,wilber,renato,hoyt,haywood,ezekiel,chas,florentino,elroy,clemente,arden,neville,edison,deshawn,carrol,shayne,nathanial,jordon,danilo,claud,sherwood,raymon,rayford,cristobal,ambrose,titus,hyman,felton,ezequiel,erasmo,lonny,milan,lino,jarod,herb,andreas,rhett,jude,douglass,cordell,oswaldo,ellsworth,virgilio,toney,nathanael,benedict,mose,hong,isreal,garret,fausto,arlen,zack,modesto,francesco,manual,gaylord,gaston,filiberto,deangelo,michale,granville,malik,zackary,tuan,nicky,cristopher,antione,malcom,korey,jospeh,colton,waylon,hosea,shad,santo,rudolf,rolf,renaldo,marcellus,lucius,kristofer,harland,arnoldo,rueben,leandro,kraig,jerrell,jeromy,hobert,cedrick,arlie,winford,wally,luigi,keneth,jacinto,graig,franklyn,edmundo,leif,jeramy,willian,vincenzo,shon,michal,lynwood,jere,elden,darell,broderick,alonso".split(",")},module.exports=frequency_lists;
45551
45552 },{}],4:[function(require,module,exports){
45553 var feedback,matching,scoring,time,time_estimates,zxcvbn;matching=require("./matching"),scoring=require("./scoring"),time_estimates=require("./time_estimates"),feedback=require("./feedback"),time=function(){return(new Date).getTime()},zxcvbn=function(e,t){var i,n,c,s,a,r,m,o,u,g,_;for(null==t&&(t=[]),g=time(),u=[],c=0,s=t.length;c<s;c++)i=t[c],"string"!=(m=typeof i)&&"number"!==m&&"boolean"!==m||u.push(i.toString().toLowerCase());matching.set_user_input_dictionary(u),a=matching.omnimatch(e),o=scoring.most_guessable_match_sequence(e,a),o.calc_time=time()-g,n=time_estimates.estimate_attack_times(o.guesses);for(r in n)_=n[r],o[r]=_;return o.feedback=feedback.get_feedback(o.score,o.sequence),o},module.exports=zxcvbn;
45554
45555 },{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){
45556 var DATE_MAX_YEAR,DATE_MIN_YEAR,DATE_SPLITS,GRAPHS,L33T_TABLE,RANKED_DICTIONARIES,REGEXEN,adjacency_graphs,build_ranked_dict,frequency_lists,lst,matching,name,scoring;frequency_lists=require("./frequency_lists"),adjacency_graphs=require("./adjacency_graphs"),scoring=require("./scoring"),build_ranked_dict=function(e){var t,n,r,i,a;for(i={},t=1,r=0,n=e.length;r<n;r++)a=e[r],i[a]=t,t+=1;return i},RANKED_DICTIONARIES={};for(name in frequency_lists)lst=frequency_lists[name],RANKED_DICTIONARIES[name]=build_ranked_dict(lst);GRAPHS={qwerty:adjacency_graphs.qwerty,dvorak:adjacency_graphs.dvorak,keypad:adjacency_graphs.keypad,mac_keypad:adjacency_graphs.mac_keypad},L33T_TABLE={a:["4","@"],b:["8"],c:["(","{","[","<"],e:["3"],g:["6","9"],i:["1","!","|"],l:["1","|","7"],o:["0"],s:["$","5"],t:["+","7"],x:["%"],z:["2"]},REGEXEN={recent_year:/19\d\d|200\d|201\d/g},DATE_MAX_YEAR=2050,DATE_MIN_YEAR=1e3,DATE_SPLITS={4:[[1,2],[2,3]],5:[[1,3],[2,3]],6:[[1,2],[2,4],[4,5]],7:[[1,3],[2,3],[4,5],[4,6]],8:[[2,4],[4,6]]},matching={empty:function(e){var t;return 0===function(){var n;n=[];for(t in e)n.push(t);return n}().length},extend:function(e,t){return e.push.apply(e,t)},translate:function(e,t){var n;return function(){var r,i,a,s;for(a=e.split(""),s=[],i=0,r=a.length;i<r;i++)n=a[i],s.push(t[n]||n);return s}().join("")},mod:function(e,t){return(e%t+t)%t},sorted:function(e){return e.sort(function(e,t){return e.i-t.i||e.j-t.j})},omnimatch:function(e){var t,n,r,i,a;for(i=[],r=[this.dictionary_match,this.reverse_dictionary_match,this.l33t_match,this.spatial_match,this.repeat_match,this.sequence_match,this.regex_match,this.date_match],a=0,t=r.length;a<t;a++)n=r[a],this.extend(i,n.call(this,e));return this.sorted(i)},dictionary_match:function(e,t){var n,r,i,a,s,o,h,u,c,l,_,f,d,p;null==t&&(t=RANKED_DICTIONARIES),s=[],a=e.length,u=e.toLowerCase();for(n in t)for(l=t[n],r=o=0,_=a;0<=_?o<_:o>_;r=0<=_?++o:--o)for(i=h=f=r,d=a;f<=d?h<d:h>d;i=f<=d?++h:--h)u.slice(r,+i+1||9e9)in l&&(p=u.slice(r,+i+1||9e9),c=l[p],s.push({pattern:"dictionary",i:r,j:i,token:e.slice(r,+i+1||9e9),matched_word:p,rank:c,dictionary_name:n,reversed:!1,l33t:!1}));return this.sorted(s)},reverse_dictionary_match:function(e,t){var n,r,i,a,s,o;for(null==t&&(t=RANKED_DICTIONARIES),o=e.split("").reverse().join(""),i=this.dictionary_match(o,t),a=0,n=i.length;a<n;a++)r=i[a],r.token=r.token.split("").reverse().join(""),r.reversed=!0,s=[e.length-1-r.j,e.length-1-r.i],r.i=s[0],r.j=s[1];return this.sorted(i)},set_user_input_dictionary:function(e){return RANKED_DICTIONARIES.user_inputs=build_ranked_dict(e.slice())},relevant_l33t_subtable:function(e,t){var n,r,i,a,s,o,h,u,c,l;for(s={},o=e.split(""),a=0,r=o.length;a<r;a++)n=o[a],s[n]=!0;l={};for(i in t)c=t[i],h=function(){var e,t,n;for(n=[],t=0,e=c.length;t<e;t++)u=c[t],u in s&&n.push(u);return n}(),h.length>0&&(l[i]=h);return l},enumerate_l33t_subs:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p;a=function(){var t;t=[];for(i in e)t.push(i);return t}(),p=[[]],n=function(e){var t,n,r,a,s,o,h,u;for(n=[],s={},o=0,a=e.length;o<a;o++)h=e[o],t=function(){var e,t,n;for(n=[],u=t=0,e=h.length;t<e;u=++t)i=h[u],n.push([i,u]);return n}(),t.sort(),r=function(){var e,n,r;for(r=[],u=n=0,e=t.length;n<e;u=++n)i=t[u],r.push(i+","+u);return r}().join("-"),r in s||(s[r]=!0,n.push(h));return n},r=function(t){var i,a,s,o,h,u,c,l,_,f,d,g,m,A,E,y;if(t.length){for(a=t[0],m=t.slice(1),c=[],d=e[a],l=0,h=d.length;l<h;l++)for(o=d[l],_=0,u=p.length;_<u;_++){for(A=p[_],i=-1,s=f=0,g=A.length;0<=g?f<g:f>g;s=0<=g?++f:--f)if(A[s][0]===o){i=s;break}i===-1?(y=A.concat([[o,a]]),c.push(y)):(E=A.slice(0),E.splice(i,1),E.push([o,a]),c.push(A),c.push(E))}return p=n(c),r(m)}},r(a),d=[];for(u=0,o=p.length;u<o;u++){for(_=p[u],f={},c=0,h=_.length;c<h;c++)l=_[c],s=l[0],t=l[1],f[s]=t;d.push(f)}return d},l33t_match:function(e,t,n){var r,i,a,s,o,h,u,c,l,_,f,d,p,g,m,A;for(null==t&&(t=RANKED_DICTIONARIES),null==n&&(n=L33T_TABLE),u=[],_=this.enumerate_l33t_subs(this.relevant_l33t_subtable(e,n)),c=0,a=_.length;c<a&&(d=_[c],!this.empty(d));c++)for(g=this.translate(e,d),f=this.dictionary_match(g,t),l=0,s=f.length;l<s;l++)if(o=f[l],m=e.slice(o.i,+o.j+1||9e9),m.toLowerCase()!==o.matched_word){h={};for(p in d)r=d[p],m.indexOf(p)!==-1&&(h[p]=r);o.l33t=!0,o.token=m,o.sub=h,o.sub_display=function(){var e;e=[];for(i in h)A=h[i],e.push(i+" -> "+A);return e}().join(", "),u.push(o)}return this.sorted(u.filter(function(e){return e.token.length>1}))},spatial_match:function(e,t){var n,r,i;null==t&&(t=GRAPHS),i=[];for(r in t)n=t[r],this.extend(i,this.spatial_match_helper(e,n,r));return this.sorted(i)},SHIFTED_RX:/[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?]/,spatial_match_helper:function(e,t,n){var r,i,a,s,o,h,u,c,l,_,f,d,p,g,m;for(f=[],u=0;u<e.length-1;)for(c=u+1,l=null,m=0,g="qwerty"!==n&&"dvorak"!==n||!this.SHIFTED_RX.exec(e.charAt(u))?0:1;;){if(p=e.charAt(c-1),o=!1,h=-1,s=-1,i=t[p]||[],c<e.length)for(a=e.charAt(c),d=0,_=i.length;d<_;d++)if(r=i[d],s+=1,r&&r.indexOf(a)!==-1){o=!0,h=s,1===r.indexOf(a)&&(g+=1),l!==h&&(m+=1,l=h);break}if(!o){c-u>2&&f.push({pattern:"spatial",i:u,j:c-1,token:e.slice(u,c),graph:n,turns:m,shifted_count:g}),u=c;break}c+=1}return f},repeat_match:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p;for(d=[],a=/(.+)\1+/g,c=/(.+?)\1+/g,l=/^(.+?)\1+$/,u=0;u<e.length&&(a.lastIndex=c.lastIndex=u,s=a.exec(e),_=c.exec(e),null!=s);)s[0].length>_[0].length?(f=s,i=l.exec(f[0])[1]):(f=_,i=f[1]),p=[f.index,f.index+f[0].length-1],o=p[0],h=p[1],t=scoring.most_guessable_match_sequence(i,this.omnimatch(i)),r=t.sequence,n=t.guesses,d.push({pattern:"repeat",i:o,j:h,token:f[0],base_token:i,base_guesses:n,base_matches:r,repeat_count:f[0].length/i.length}),u=h+1;return d},MAX_DELTA:5,sequence_match:function(e){var t,n,r,i,a,s,o,h,u;if(1===e.length)return[];for(u=function(t){return function(n,r,i){var a,s,o,u;if((r-n>1||1===Math.abs(i))&&0<(a=Math.abs(i))&&a<=t.MAX_DELTA)return u=e.slice(n,+r+1||9e9),/^[a-z]+$/.test(u)?(s="lower",o=26):/^[A-Z]+$/.test(u)?(s="upper",o=26):/^\d+$/.test(u)?(s="digits",o=10):(s="unicode",o=26),h.push({pattern:"sequence",i:n,j:r,token:e.slice(n,+r+1||9e9),sequence_name:s,sequence_space:o,ascending:i>0})}}(this),h=[],n=0,a=null,i=s=1,o=e.length;1<=o?s<o:s>o;i=1<=o?++s:--s)t=e.charCodeAt(i)-e.charCodeAt(i-1),null==a&&(a=t),t!==a&&(r=i-1,u(n,r,a),n=r,a=t);return u(n,e.length-1,a),h},regex_match:function(e,t){var n,r,i,a;null==t&&(t=REGEXEN),n=[];for(name in t)for(r=t[name],r.lastIndex=0;i=r.exec(e);)a=i[0],n.push({pattern:"regex",token:a,i:i.index,j:i.index+i[0].length-1,regex_name:name,regex_match:i});return this.sorted(n)},date_match:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p,g,m,A,E,y,v,I,R,T,D,k,x,j,b,N,S,q,L,M;for(_=[],f=/^\d{4,8}$/,d=/^(\d{1,4})([\s\/\\_.-])(\d{1,2})\2(\d{1,4})$/,s=m=0,v=e.length-4;0<=v?m<=v:m>=v;s=0<=v?++m:--m)for(o=A=I=s+3,R=s+7;(I<=R?A<=R:A>=R)&&!(o>=e.length);o=I<=R?++A:--A)if(M=e.slice(s,+o+1||9e9),f.exec(M)){for(r=[],T=DATE_SPLITS[M.length],E=0,c=T.length;E<c;E++)D=T[E],h=D[0],u=D[1],a=this.map_ints_to_dmy([parseInt(M.slice(0,h)),parseInt(M.slice(h,u)),parseInt(M.slice(u))]),null!=a&&r.push(a);if(r.length>0){for(t=r[0],p=function(e){return Math.abs(e.year-scoring.REFERENCE_YEAR)},g=p(r[0]),k=r.slice(1),y=0,l=k.length;y<l;y++)n=k[y],i=p(n),i<g&&(x=[n,i],t=x[0],g=x[1]);_.push({pattern:"date",token:M,i:s,j:o,separator:"",year:t.year,month:t.month,day:t.day})}}for(s=q=0,j=e.length-6;0<=j?q<=j:q>=j;s=0<=j?++q:--q)for(o=L=b=s+5,N=s+9;(b<=N?L<=N:L>=N)&&!(o>=e.length);o=b<=N?++L:--L)M=e.slice(s,+o+1||9e9),S=d.exec(M),null!=S&&(a=this.map_ints_to_dmy([parseInt(S[1]),parseInt(S[3]),parseInt(S[4])]),null!=a&&_.push({pattern:"date",token:M,i:s,j:o,separator:S[2],year:a.year,month:a.month,day:a.day}));return this.sorted(_.filter(function(e){var t,n,r,i;for(t=!1,i=0,n=_.length;i<n;i++)if(r=_[i],e!==r&&r.i<=e.i&&r.j>=e.j){t=!0;break}return!t}))},map_ints_to_dmy:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p,g;if(!(e[1]>31||e[1]<=0)){for(o=0,h=0,p=0,s=0,r=e.length;s<r;s++){if(n=e[s],99<n&&n<DATE_MIN_YEAR||n>DATE_MAX_YEAR)return;n>31&&(h+=1),n>12&&(o+=1),n<=0&&(p+=1)}if(!(h>=2||3===o||p>=2)){for(c=[[e[2],e.slice(0,2)],[e[0],e.slice(1,3)]],u=0,i=c.length;u<i;u++)if(_=c[u],g=_[0],d=_[1],DATE_MIN_YEAR<=g&&g<=DATE_MAX_YEAR)return t=this.map_ints_to_dm(d),null!=t?{year:g,month:t.month,day:t.day}:void 0;for(l=0,a=c.length;l<a;l++)if(f=c[l],g=f[0],d=f[1],t=this.map_ints_to_dm(d),null!=t)return g=this.two_to_four_digit_year(g),{year:g,month:t.month,day:t.day}}}},map_ints_to_dm:function(e){var t,n,r,i,a,s;for(a=[e,e.slice().reverse()],i=0,n=a.length;i<n;i++)if(s=a[i],t=s[0],r=s[1],1<=t&&t<=31&&1<=r&&r<=12)return{day:t,month:r}},two_to_four_digit_year:function(e){return e>99?e:e>50?e+1900:e+2e3}},module.exports=matching;
45557
45558 },{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){
45559 var BRUTEFORCE_CARDINALITY,MIN_GUESSES_BEFORE_GROWING_SEQUENCE,MIN_SUBMATCH_GUESSES_MULTI_CHAR,MIN_SUBMATCH_GUESSES_SINGLE_CHAR,adjacency_graphs,calc_average_degree,k,scoring,v;adjacency_graphs=require("./adjacency_graphs"),calc_average_degree=function(e){var t,r,n,s,a,u;t=0;for(n in e)a=e[n],t+=function(){var e,t,r;for(r=[],t=0,e=a.length;t<e;t++)s=a[t],s&&r.push(s);return r}().length;return t/=function(){var t;t=[];for(r in e)u=e[r],t.push(r);return t}().length},BRUTEFORCE_CARDINALITY=10,MIN_GUESSES_BEFORE_GROWING_SEQUENCE=1e4,MIN_SUBMATCH_GUESSES_SINGLE_CHAR=10,MIN_SUBMATCH_GUESSES_MULTI_CHAR=50,scoring={nCk:function(e,t){var r,n,s,a;if(t>e)return 0;if(0===t)return 1;for(s=1,r=n=1,a=t;1<=a?n<=a:n>=a;r=1<=a?++n:--n)s*=e,s/=r,e-=1;return s},log10:function(e){return Math.log(e)/Math.log(10)},log2:function(e){return Math.log(e)/Math.log(2)},factorial:function(e){var t,r,n,s;if(e<2)return 1;for(t=1,r=n=2,s=e;2<=s?n<=s:n>=s;r=2<=s?++n:--n)t*=r;return t},most_guessable_match_sequence:function(e,t,r){var n,s,a,u,i,_,o,h,E,c,g,f,l,p,A,S,R,v,I,M,N,C,U,T;for(null==r&&(r=!1),l=e.length,f=function(){var e,t,r;for(r=[],n=e=0,t=l;0<=t?e<t:e>t;n=0<=t?++e:--e)r.push([]);return r}(),p=0,_=t.length;p<_;p++)c=t[p],f[c.j].push(c);for(v=0,o=f.length;v<o;v++)E=f[v],E.sort(function(e,t){return e.i-t.i});for(A={m:function(){var e,t,r;for(t=[],n=r=0,e=l;0<=e?r<e:r>e;n=0<=e?++r:--r)t.push({});return t}(),pi:function(){var e,t,r;for(t=[],n=r=0,e=l;0<=e?r<e:r>e;n=0<=e?++r:--r)t.push({});return t}(),g:function(){var e,t,r;for(t=[],n=r=0,e=l;0<=e?r<e:r>e;n=0<=e?++r:--r)t.push({});return t}()},U=function(t){return function(n,s){var a,u,i,_,o,h;_=n.j,o=t.estimate_guesses(n,e),s>1&&(o*=A.pi[n.i-1][s-1]),i=t.factorial(s)*o,r||(i+=Math.pow(MIN_GUESSES_BEFORE_GROWING_SEQUENCE,s-1)),h=A.g[_];for(u in h)if(a=h[u],!(u>s)&&a<=i)return;return A.g[_][s]=i,A.m[_][s]=n,A.pi[_][s]=o}}(this),s=function(e){return function(e){var t,r,n,s,a,u;for(c=g(0,e),U(c,1),a=[],t=u=1,s=e;1<=s?u<=s:u>=s;t=1<=s?++u:--u)c=g(t,e),a.push(function(){var e,s;e=A.m[t-1],s=[];for(r in e)n=e[r],r=parseInt(r),"bruteforce"!==n.pattern&&s.push(U(c,r+1));return s}());return a}}(this),g=function(t){return function(t,r){return{pattern:"bruteforce",token:e.slice(t,+r+1||9e9),i:t,j:r}}}(this),C=function(e){return function(e){var t,r,n,s,a,u,i;u=[],s=e-1,a=void 0,n=1/0,i=A.g[s];for(r in i)t=i[r],t<n&&(a=r,n=t);for(;s>=0;)c=A.m[s][a],u.unshift(c),s=c.i-1,a--;return u}}(this),u=N=0,I=l;0<=I?N<I:N>I;u=0<=I?++N:--N){for(M=f[u],T=0,h=M.length;T<h;T++)if(c=M[T],c.i>0)for(i in A.m[c.i-1])i=parseInt(i),U(c,i+1);else U(c,1);s(u)}return R=C(l),S=R.length,a=0===e.length?1:A.g[l-1][S],{password:e,guesses:a,guesses_log10:this.log10(a),sequence:R}},estimate_guesses:function(e,t){var r,n,s;return null!=e.guesses?e.guesses:(s=1,e.token.length<t.length&&(s=1===e.token.length?MIN_SUBMATCH_GUESSES_SINGLE_CHAR:MIN_SUBMATCH_GUESSES_MULTI_CHAR),r={bruteforce:this.bruteforce_guesses,dictionary:this.dictionary_guesses,spatial:this.spatial_guesses,repeat:this.repeat_guesses,sequence:this.sequence_guesses,regex:this.regex_guesses,date:this.date_guesses},n=r[e.pattern].call(this,e),e.guesses=Math.max(n,s),e.guesses_log10=this.log10(e.guesses),e.guesses)},bruteforce_guesses:function(e){var t,r;return t=Math.pow(BRUTEFORCE_CARDINALITY,e.token.length),r=1===e.token.length?MIN_SUBMATCH_GUESSES_SINGLE_CHAR+1:MIN_SUBMATCH_GUESSES_MULTI_CHAR+1,Math.max(t,r)},repeat_guesses:function(e){return e.base_guesses*e.repeat_count},sequence_guesses:function(e){var t,r;return r=e.token.charAt(0),t="a"===r||"A"===r||"z"===r||"Z"===r||"0"===r||"1"===r||"9"===r?4:r.match(/\d/)?10:26,e.ascending||(t*=2),t*e.token.length},MIN_YEAR_SPACE:20,REFERENCE_YEAR:2016,regex_guesses:function(e){var t,r;if(t={alpha_lower:26,alpha_upper:26,alpha:52,alphanumeric:62,digits:10,symbols:33},e.regex_name in t)return Math.pow(t[e.regex_name],e.token.length);switch(e.regex_name){case"recent_year":return r=Math.abs(parseInt(e.regex_match[0])-this.REFERENCE_YEAR),r=Math.max(r,this.MIN_YEAR_SPACE)}},date_guesses:function(e){var t,r;return r=Math.max(Math.abs(e.year-this.REFERENCE_YEAR),this.MIN_YEAR_SPACE),t=365*r,e.separator&&(t*=4),t},KEYBOARD_AVERAGE_DEGREE:calc_average_degree(adjacency_graphs.qwerty),KEYPAD_AVERAGE_DEGREE:calc_average_degree(adjacency_graphs.keypad),KEYBOARD_STARTING_POSITIONS:function(){var e,t;e=adjacency_graphs.qwerty,t=[];for(k in e)v=e[k],t.push(k);return t}().length,KEYPAD_STARTING_POSITIONS:function(){var e,t;e=adjacency_graphs.keypad,t=[];for(k in e)v=e[k],t.push(k);return t}().length,spatial_guesses:function(e){var t,r,n,s,a,u,i,_,o,h,E,c,g,f,l,p,A,S;for("qwerty"===(E=e.graph)||"dvorak"===E?(l=this.KEYBOARD_STARTING_POSITIONS,s=this.KEYBOARD_AVERAGE_DEGREE):(l=this.KEYPAD_STARTING_POSITIONS,s=this.KEYPAD_AVERAGE_DEGREE),a=0,t=e.token.length,A=e.turns,u=_=2,c=t;2<=c?_<=c:_>=c;u=2<=c?++_:--_)for(o=Math.min(A,u-1),i=h=1,g=o;1<=g?h<=g:h>=g;i=1<=g?++h:--h)a+=this.nCk(u-1,i-1)*l*Math.pow(s,i);if(e.shifted_count)if(r=e.shifted_count,n=e.token.length-e.shifted_count,0===r||0===n)a*=2;else{for(p=0,u=S=1,f=Math.min(r,n);1<=f?S<=f:S>=f;u=1<=f?++S:--S)p+=this.nCk(r+n,u);a*=p}return a},dictionary_guesses:function(e){var t;return e.base_guesses=e.rank,e.uppercase_variations=this.uppercase_variations(e),e.l33t_variations=this.l33t_variations(e),t=e.reversed&&2||1,e.base_guesses*e.uppercase_variations*e.l33t_variations*t},START_UPPER:/^[A-Z][^A-Z]+$/,END_UPPER:/^[^A-Z]+[A-Z]$/,ALL_UPPER:/^[^a-z]+$/,ALL_LOWER:/^[^A-Z]+$/,uppercase_variations:function(e){var t,r,n,s,a,u,i,_,o,h,E,c;if(c=e.token,c.match(this.ALL_LOWER)||c.toLowerCase()===c)return 1;for(_=[this.START_UPPER,this.END_UPPER,this.ALL_UPPER],u=0,a=_.length;u<a;u++)if(h=_[u],c.match(h))return 2;for(r=function(){var e,t,r,s;for(r=c.split(""),s=[],t=0,e=r.length;t<e;t++)n=r[t],n.match(/[A-Z]/)&&s.push(n);return s}().length,t=function(){var e,t,r,s;for(r=c.split(""),s=[],t=0,e=r.length;t<e;t++)n=r[t],n.match(/[a-z]/)&&s.push(n);return s}().length,E=0,s=i=1,o=Math.min(r,t);1<=o?i<=o:i>=o;s=1<=o?++i:--i)E+=this.nCk(r+t,s);return E},l33t_variations:function(e){var t,r,n,s,a,u,i,_,o,h,E,c,g;if(!e.l33t)return 1;g=1,o=e.sub;for(E in o)if(c=o[E],s=e.token.toLowerCase().split(""),t=function(){var e,t,r;for(r=[],t=0,e=s.length;t<e;t++)n=s[t],n===E&&r.push(n);return r}().length,r=function(){var e,t,r;for(r=[],t=0,e=s.length;t<e;t++)n=s[t],n===c&&r.push(n);return r}().length,0===t||0===r)g*=2;else{for(i=Math.min(r,t),_=0,a=u=1,h=i;1<=h?u<=h:u>=h;a=1<=h?++u:--u)_+=this.nCk(r+t,a);g*=_}return g}},module.exports=scoring;
45560
45561 },{"./adjacency_graphs":1}],7:[function(require,module,exports){
45562 var time_estimates;time_estimates={estimate_attack_times:function(e){var t,n,s,o;n={online_throttling_100_per_hour:e/(100/3600),online_no_throttling_10_per_second:e/10,offline_slow_hashing_1e4_per_second:e/1e4,offline_fast_hashing_1e10_per_second:e/1e10},t={};for(s in n)o=n[s],t[s]=this.display_time(o);return{crack_times_seconds:n,crack_times_display:t,score:this.guesses_to_score(e)}},guesses_to_score:function(e){var t;return t=5,e<1e3+t?0:e<1e6+t?1:e<1e8+t?2:e<1e10+t?3:4},display_time:function(e){var t,n,s,o,_,r,i,a,u,c;return i=60,r=60*i,s=24*r,a=31*s,c=12*a,n=100*c,u=e<1?[null,"less than a second"]:e<i?(t=Math.round(e),[t,t+" second"]):e<r?(t=Math.round(e/i),[t,t+" minute"]):e<s?(t=Math.round(e/r),[t,t+" hour"]):e<a?(t=Math.round(e/s),[t,t+" day"]):e<c?(t=Math.round(e/a),[t,t+" month"]):e<n?(t=Math.round(e/c),[t,t+" year"]):[null,"centuries"],o=u[0],_=u[1],null!=o&&1!==o&&(_+="s"),_}},module.exports=time_estimates;
45563
45564 },{}]},{},[4])(4)
45565 });
45566
45567 </script>
45568 <script>/*
45569 * Detects entropy from a string.
45570 *
45571 * Formats include:
45572 * binary [0-1]
45573 * base 6 [0-5]
45574 * dice 6 [1-6]
45575 * decimal [0-9]
45576 * hexadecimal [0-9A-F]
45577 * card [A2-9TJQK][CDHS]
45578 *
45579 * Automatically uses lowest entropy to avoid issues such as interpretting 0101
45580 * as hexadecimal which would be 16 bits when really it's only 4 bits of binary
45581 * entropy.
45582 */
45583
45584 window.Entropy = new (function() {
45585
45586 var TWO = new BigInteger(2);
45587
45588 // matchers returns an array of the matched events for each type of entropy.
45589 // eg
45590 // matchers.binary("010") returns ["0", "1", "0"]
45591 // matchers.binary("a10") returns ["1", "0"]
45592 // matchers.hex("a10") returns ["a", "1", "0"]
45593 var matchers = {
45594 binary: function(str) {
45595 return str.match(/[0-1]/gi) || [];
45596 },
45597 base6: function(str) {
45598 return str.match(/[0-5]/gi) || [];
45599 },
45600 dice: function(str) {
45601 return str.match(/[1-6]/gi) || []; // ie dice numbers
45602 },
45603 base10: function(str) {
45604 return str.match(/[0-9]/gi) || [];
45605 },
45606 hex: function(str) {
45607 return str.match(/[0-9A-F]/gi) || [];
45608 },
45609 card: function(str) {
45610 // Format is NumberSuit, eg
45611 // AH ace of hearts
45612 // 8C eight of clubs
45613 // TD ten of diamonds
45614 // JS jack of spades
45615 // QH queen of hearts
45616 // KC king of clubs
45617 return str.match(/([A2-9TJQK][CDHS])/gi) || [];
45618 }
45619 }
45620
45621 // Convert array of cards from ["ac", "4d", "ks"]
45622 // to numbers between 0 and 51 [0, 16, 51]
45623 function convertCardsToInts(cards) {
45624 var ints = [];
45625 var values = "a23456789tjqk";
45626 var suits = "cdhs";
45627 for (var i=0; i<cards.length; i++) {
45628 var card = cards[i].toLowerCase();
45629 var value = card[0];
45630 var suit = card[1];
45631 var asInt = 13 * suits.indexOf(suit) + values.indexOf(value);
45632 ints.push(asInt);
45633 }
45634 return ints;
45635 }
45636
45637 this.fromString = function(rawEntropyStr) {
45638 // Find type of entropy being used (binary, hex, dice etc)
45639 var base = getBase(rawEntropyStr);
45640 // Convert dice to base6 entropy (ie 1-6 to 0-5)
45641 // This is done by changing all 6s to 0s
45642 if (base.str == "dice") {
45643 var newParts = [];
45644 var newInts = [];
45645 for (var i=0; i<base.parts.length; i++) {
45646 var c = base.parts[i];
45647 if ("12345".indexOf(c) > -1) {
45648 newParts[i] = base.parts[i];
45649 newInts[i] = base.ints[i];
45650 }
45651 else {
45652 newParts[i] = "0";
45653 newInts[i] = 0;
45654 }
45655 }
45656 base.str = "base 6 (dice)";
45657 base.ints = newInts;
45658 base.parts = newParts;
45659 base.matcher = matchers.base6;
45660 }
45661 // Detect empty entropy
45662 if (base.parts.length == 0) {
45663 return {
45664 binaryStr: "",
45665 cleanStr: "",
45666 cleanHtml: "",
45667 base: base,
45668 };
45669 }
45670 // Convert base.ints to BigInteger.
45671 // Due to using unusual bases, eg cards of base52, this is not as simple as
45672 // using BigInteger.parse()
45673 var entropyInt = BigInteger.ZERO;
45674 for (var i=base.ints.length-1; i>=0; i--) {
45675 var thisInt = BigInteger.parse(base.ints[i]);
45676 var power = (base.ints.length - 1) - i;
45677 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
45678 entropyInt = entropyInt.add(additionalEntropy);
45679 }
45680 // Convert entropy to binary
45681 var entropyBin = entropyInt.toString(2);
45682 // If the first integer is small, it must be padded with zeros.
45683 // Otherwise the chance of the first bit being 1 is 100%, which is
45684 // obviously incorrect.
45685 // This is not perfect for non-2^n bases.
45686 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
45687 while (entropyBin.length < expectedBits) {
45688 entropyBin = "0" + entropyBin;
45689 }
45690 // Calculate the number of bits per event
45691 var bitsPerEvent = Math.log2(base.asInt);
45692 // Cards binary must be handled differently, since they're not replaced
45693 if (base.asInt == 52) {
45694 var cardEntropy = processCardEntropy(base.parts);
45695 entropyBin = cardEntropy.binaryStr;
45696 bitsPerEvent = cardEntropy.bitsPerEvent;
45697 }
45698 // Supply a 'filtered' entropy string for display purposes
45699 var entropyClean = base.parts.join("");
45700 var entropyHtml = base.parts.join("");
45701 if (base.asInt == 52) {
45702 entropyClean = base.parts.join(" ").toUpperCase();
45703 entropyClean = entropyClean.replace(/C/g, "\u2663");
45704 entropyClean = entropyClean.replace(/D/g, "\u2666");
45705 entropyClean = entropyClean.replace(/H/g, "\u2665");
45706 entropyClean = entropyClean.replace(/S/g, "\u2660");
45707 entropyHtml = base.parts.join(" ").toUpperCase();
45708 entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>");
45709 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>");
45710 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>");
45711 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>");
45712 }
45713 // Return the result
45714 var e = {
45715 binaryStr: entropyBin,
45716 cleanStr: entropyClean,
45717 cleanHtml: entropyHtml,
45718 bitsPerEvent: bitsPerEvent,
45719 base: base,
45720 }
45721 return e;
45722 }
45723
45724 function getSortedDeck() {
45725 var s = [];
45726 var suits = "CDHS";
45727 var values = "A23456789TJQK";
45728 for (var i=0; i<suits.length; i++) {
45729 for (var j=0; j<values.length; j++) {
45730 s.push(values[j]+suits[i]);
45731 }
45732 }
45733 return s;
45734 }
45735
45736 function getBase(str) {
45737 // Need to get the lowest base for the supplied entropy.
45738 // This prevents interpreting, say, dice rolls as hexadecimal.
45739 var binaryMatches = matchers.binary(str);
45740 var hexMatches = matchers.hex(str);
45741 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
45742 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
45743 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
45744 return {
45745 ints: ints,
45746 parts: binaryMatches,
45747 matcher: matchers.binary,
45748 asInt: 2,
45749 str: "binary",
45750 }
45751 }
45752 var cardMatches = matchers.card(str);
45753 if (cardMatches.length >= hexMatches.length / 2) {
45754 var ints = convertCardsToInts(cardMatches);
45755 return {
45756 ints: ints,
45757 parts: cardMatches,
45758 matcher: matchers.card,
45759 asInt: 52,
45760 str: "card",
45761 }
45762 }
45763 var diceMatches = matchers.dice(str);
45764 if (diceMatches.length == hexMatches.length && hexMatches.length > 0) {
45765 var ints = diceMatches.map(function(i) { return parseInt(i) });
45766 return {
45767 ints: ints,
45768 parts: diceMatches,
45769 matcher: matchers.dice,
45770 asInt: 6,
45771 str: "dice",
45772 }
45773 }
45774 var base6Matches = matchers.base6(str);
45775 if (base6Matches.length == hexMatches.length && hexMatches.length > 0) {
45776 var ints = base6Matches.map(function(i) { return parseInt(i) });
45777 return {
45778 ints: ints,
45779 parts: base6Matches,
45780 matcher: matchers.base6,
45781 asInt: 6,
45782 str: "base 6",
45783 }
45784 }
45785 var base10Matches = matchers.base10(str);
45786 if (base10Matches.length == hexMatches.length && hexMatches.length > 0) {
45787 var ints = base10Matches.map(function(i) { return parseInt(i) });
45788 return {
45789 ints: ints,
45790 parts: base10Matches,
45791 matcher: matchers.base10,
45792 asInt: 10,
45793 str: "base 10",
45794 }
45795 }
45796 var ints = hexMatches.map(function(i) { return parseInt(i, 16) });
45797 return {
45798 ints: ints,
45799 parts: hexMatches,
45800 matcher: matchers.hex,
45801 asInt: 16,
45802 str: "hexadecimal",
45803 }
45804 }
45805
45806 // Assume cards are NOT replaced.
45807 // Additional entropy decreases as more cards are used. This means
45808 // total possible entropy is measured using n!, not base^n.
45809 // eg the second last card can be only one of two, not one of fifty two
45810 // so the added entropy for that card is only one bit at most
45811 function processCardEntropy(cards) {
45812 // Track how many instances of each card have been used, and thus
45813 // how many decks are in use.
45814 var cardCounts = {};
45815 var numberOfDecks = 0;
45816 // Work out number of decks by max(duplicates)
45817 for (var i=0; i<cards.length; i++) {
45818 // Get the card that was drawn
45819 var cardLower = cards[i];
45820 var card = cardLower.toUpperCase();
45821 // Initialize the count for this card if needed
45822 if (!(card in cardCounts)) {
45823 cardCounts[card] = 0;
45824 }
45825 cardCounts[card] += 1;
45826 // See if this is max(duplicates)
45827 if (cardCounts[card] > numberOfDecks) {
45828 numberOfDecks = cardCounts[card];
45829 }
45830 }
45831 // Work out the total number of bits for this many decks
45832 // See http://crypto.stackexchange.com/q/41886
45833 var gainedBits = 0;
45834 // Equivalent of Math.log2(factorial(52*numberOfDecks))
45835 // which becomes infinity for numberOfDecks > 4
45836 for (var i=1; i<=52*numberOfDecks; i++) {
45837 gainedBits = gainedBits + Math.log2(i);
45838 }
45839 var lostBits = 52 * Math.log2(factorial(numberOfDecks));
45840 var maxBits = gainedBits - lostBits;
45841 // Convert the drawn cards to a binary representation.
45842 // The exact technique for doing this is unclear.
45843 // See
45844 // http://crypto.stackexchange.com/a/41896
45845 // "I even doubt that this is well defined (only the average entropy
45846 // is, I believe)."
45847 // See
45848 // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856
45849 // "The binary representation can be the first log(permutations,2) bits
45850 // of the sha-2 hash of the normalized deck string."
45851 //
45852 // In this specific implementation, the first N bits of the hash of the
45853 // normalized cards string is being used. Uppercase, no spaces; eg
45854 // sha256("AH8DQSTC2H")
45855 var totalCards = numberOfDecks * 52;
45856 var percentUsed = cards.length / totalCards;
45857 // Calculate the average number of bits of entropy for the number of
45858 // cards drawn.
45859 var numberOfBits = Math.floor(maxBits * percentUsed);
45860 // Create a normalized string of the selected cards
45861 var normalizedCards = cards.join("").toUpperCase();
45862 // Convert to binary using the SHA256 hash of the normalized cards.
45863 // If the number of bits is more than 256, multiple hashes
45864 // are used until the required number of bits is reached.
45865 var entropyBin = "";
45866 var iterations = 0;
45867 while (entropyBin.length < numberOfBits) {
45868 var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations);
45869 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
45870 for (var i=0; i<hashHex.length; i++) {
45871 var decimal = parseInt(hashHex[i], 16);
45872 var binary = decimal.toString(2);
45873 while (binary.length < 4) {
45874 binary = "0" + binary;
45875 }
45876 entropyBin = entropyBin + binary;
45877 }
45878 iterations = iterations + 1;
45879 }
45880 // Truncate to the appropriate number of bits.
45881 entropyBin = entropyBin.substring(0, numberOfBits);
45882 // Get the number of bits per event
45883 bitsPerEvent = maxBits / totalCards;
45884 return {
45885 binaryStr: entropyBin,
45886 bitsPerEvent: bitsPerEvent,
45887 }
45888 }
45889
45890 // Polyfill for Math.log2
45891 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
45892 Math.log2 = Math.log2 || function(x) {
45893 // The polyfill isn't good enough because of the poor accuracy of
45894 // Math.LOG2E
45895 // log2(8) gave 2.9999999999999996 which when floored causes issues.
45896 // So instead use the BigInteger library to get it right.
45897 return BigInteger.log(x) / BigInteger.log(2);
45898 };
45899
45900 // Depends on BigInteger
45901 function factorial(n) {
45902 if (n == 0) {
45903 return 1;
45904 }
45905 f = BigInteger.ONE;
45906 for (var i=1; i<=n; i++) {
45907 f = f.multiply(new BigInteger(i));
45908 }
45909 return f;
45910 }
45911
45912 })();
45913 </script>
45914 <script>(function() {
45915
45916 // mnemonics is populated as required by getLanguage
45917 var mnemonics = { "english": new Mnemonic("english") };
45918 var mnemonic = mnemonics["english"];
45919 var seed = null;
45920 var bip32RootKey = null;
45921 var bip32ExtendedKey = null;
45922 var network = bitcoinjs.bitcoin.networks.bitcoin;
45923 var addressRowTemplate = $("#address-row-template");
45924
45925 var showIndex = true;
45926 var showAddress = true;
45927 var showPubKey = true;
45928 var showPrivKey = true;
45929 var showQr = false;
45930 var litecoinUseLtub = false;
45931
45932 var entropyChangeTimeoutEvent = null;
45933 var phraseChangeTimeoutEvent = null;
45934 var rootKeyChangedTimeoutEvent = null;
45935
45936 var generationProcesses = [];
45937
45938 var DOM = {};
45939 DOM.network = $(".network");
45940 DOM.bip32Client = $("#bip32-client");
45941 DOM.phraseNetwork = $("#network-phrase");
45942 DOM.useEntropy = $(".use-entropy");
45943 DOM.entropyContainer = $(".entropy-container");
45944 DOM.entropy = $(".entropy");
45945 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
45946 DOM.entropyType = DOM.entropyContainer.find(".type");
45947 DOM.entropyCrackTime = DOM.entropyContainer.find(".crack-time");
45948 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
45949 DOM.entropyBits = DOM.entropyContainer.find(".bits");
45950 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
45951 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
45952 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
45953 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
45954 DOM.entropyFilterWarning = DOM.entropyContainer.find(".filter-warning");
45955 DOM.phrase = $(".phrase");
45956 DOM.passphrase = $(".passphrase");
45957 DOM.generateContainer = $(".generate-container");
45958 DOM.generate = $(".generate");
45959 DOM.seed = $(".seed");
45960 DOM.rootKey = $(".root-key");
45961 DOM.litecoinLtubContainer = $(".litecoin-ltub-container");
45962 DOM.litecoinUseLtub = $(".litecoin-use-ltub");
45963 DOM.extendedPrivKey = $(".extended-priv-key");
45964 DOM.extendedPubKey = $(".extended-pub-key");
45965 DOM.bip32tab = $("#bip32-tab");
45966 DOM.bip44tab = $("#bip44-tab");
45967 DOM.bip49tab = $("#bip49-tab");
45968 DOM.bip32panel = $("#bip32");
45969 DOM.bip44panel = $("#bip44");
45970 DOM.bip49panel = $("#bip49");
45971 DOM.bip32path = $("#bip32-path");
45972 DOM.bip44path = $("#bip44-path");
45973 DOM.bip44purpose = $("#bip44 .purpose");
45974 DOM.bip44coin = $("#bip44 .coin");
45975 DOM.bip44account = $("#bip44 .account");
45976 DOM.bip44accountXprv = $("#bip44 .account-xprv");
45977 DOM.bip44accountXpub = $("#bip44 .account-xpub");
45978 DOM.bip44change = $("#bip44 .change");
45979 DOM.bip49unavailable = $("#bip49 .unavailable");
45980 DOM.bip49available = $("#bip49 .available");
45981 DOM.bip49path = $("#bip49-path");
45982 DOM.bip49purpose = $("#bip49 .purpose");
45983 DOM.bip49coin = $("#bip49 .coin");
45984 DOM.bip49account = $("#bip49 .account");
45985 DOM.bip49accountXprv = $("#bip49 .account-xprv");
45986 DOM.bip49accountXpub = $("#bip49 .account-xpub");
45987 DOM.bip49change = $("#bip49 .change");
45988 DOM.generatedStrength = $(".generate-container .strength");
45989 DOM.hardenedAddresses = $(".hardened-addresses");
45990 DOM.useP2wpkhNestedInP2sh = $(".p2wpkh-nested-in-p2sh");
45991 DOM.addresses = $(".addresses");
45992 DOM.rowsToAdd = $(".rows-to-add");
45993 DOM.more = $(".more");
45994 DOM.feedback = $(".feedback");
45995 DOM.tab = $(".derivation-type a");
45996 DOM.indexToggle = $(".index-toggle");
45997 DOM.addressToggle = $(".address-toggle");
45998 DOM.publicKeyToggle = $(".public-key-toggle");
45999 DOM.privateKeyToggle = $(".private-key-toggle");
46000 DOM.languages = $(".languages a");
46001 DOM.qrContainer = $(".qr-container");
46002 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
46003 DOM.qrImage = DOM.qrContainer.find(".qr-image");
46004 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
46005 DOM.showQrEls = $("[data-show-qr]");
46006
46007 function init() {
46008 // Events
46009 DOM.network.on("change", networkChanged);
46010 DOM.bip32Client.on("change", bip32ClientChanged);
46011 DOM.useEntropy.on("change", setEntropyVisibility);
46012 DOM.entropy.on("input", delayedEntropyChanged);
46013 DOM.entropyMnemonicLength.on("change", entropyChanged);
46014 DOM.phrase.on("input", delayedPhraseChanged);
46015 DOM.passphrase.on("input", delayedPhraseChanged);
46016 DOM.generate.on("click", generateClicked);
46017 DOM.more.on("click", showMore);
46018 DOM.rootKey.on("input", delayedRootKeyChanged);
46019 DOM.litecoinUseLtub.on("change", litecoinUseLtubChanged);
46020 DOM.bip32path.on("input", calcForDerivationPath);
46021 DOM.bip44account.on("input", calcForDerivationPath);
46022 DOM.bip44change.on("input", calcForDerivationPath);
46023 DOM.bip49account.on("input", calcForDerivationPath);
46024 DOM.bip49change.on("input", calcForDerivationPath);
46025 DOM.tab.on("shown.bs.tab", calcForDerivationPath);
46026 DOM.hardenedAddresses.on("change", calcForDerivationPath);
46027 DOM.useP2wpkhNestedInP2sh.on("change", calcForDerivationPath);
46028 DOM.indexToggle.on("click", toggleIndexes);
46029 DOM.addressToggle.on("click", toggleAddresses);
46030 DOM.publicKeyToggle.on("click", togglePublicKeys);
46031 DOM.privateKeyToggle.on("click", togglePrivateKeys);
46032 DOM.languages.on("click", languageChanged);
46033 setQrEvents(DOM.showQrEls);
46034 disableForms();
46035 hidePending();
46036 hideValidationError();
46037 populateNetworkSelect();
46038 populateClientSelect();
46039 }
46040
46041 // Event handlers
46042
46043 function networkChanged(e) {
46044 clearDerivedKeys();
46045 clearAddressesList();
46046 DOM.litecoinLtubContainer.addClass("hidden");
46047 var networkIndex = e.target.value;
46048 var network = networks[networkIndex];
46049 network.onSelect();
46050 if (network.p2wpkhNestedInP2shAvailable) {
46051 showP2wpkhNestedInP2shAvailable();
46052 }
46053 else {
46054 showP2wpkhNestedInP2shUnavailable();
46055 }
46056 if (seed != null) {
46057 phraseChanged();
46058 }
46059 else {
46060 rootKeyChanged();
46061 }
46062 }
46063
46064 function bip32ClientChanged(e) {
46065 var clientIndex = DOM.bip32Client.val();
46066 if (clientIndex == "custom") {
46067 DOM.bip32path.prop("readonly", false);
46068 }
46069 else {
46070 DOM.bip32path.prop("readonly", true);
46071 clients[clientIndex].onSelect();
46072 if (seed != null) {
46073 phraseChanged();
46074 }
46075 else {
46076 rootKeyChanged();
46077 }
46078 }
46079 }
46080
46081 function setEntropyVisibility() {
46082 if (isUsingOwnEntropy()) {
46083 DOM.entropyContainer.removeClass("hidden");
46084 DOM.generateContainer.addClass("hidden");
46085 DOM.phrase.prop("readonly", true);
46086 DOM.entropy.focus();
46087 entropyChanged();
46088 }
46089 else {
46090 DOM.entropyContainer.addClass("hidden");
46091 DOM.generateContainer.removeClass("hidden");
46092 DOM.phrase.prop("readonly", false);
46093 hidePending();
46094 }
46095 }
46096
46097 function delayedPhraseChanged() {
46098 hideValidationError();
46099 seed = null;
46100 bip32RootKey = null;
46101 bip32ExtendedKey = null;
46102 clearAddressesList();
46103 showPending();
46104 if (phraseChangeTimeoutEvent != null) {
46105 clearTimeout(phraseChangeTimeoutEvent);
46106 }
46107 phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400);
46108 }
46109
46110 function phraseChanged() {
46111 showPending();
46112 setMnemonicLanguage();
46113 // Get the mnemonic phrase
46114 var phrase = DOM.phrase.val();
46115 var errorText = findPhraseErrors(phrase);
46116 if (errorText) {
46117 showValidationError(errorText);
46118 return;
46119 }
46120 // Calculate and display
46121 var passphrase = DOM.passphrase.val();
46122 calcBip32RootKeyFromSeed(phrase, passphrase);
46123 calcForDerivationPath();
46124 }
46125
46126 function delayedEntropyChanged() {
46127 hideValidationError();
46128 showPending();
46129 if (entropyChangeTimeoutEvent != null) {
46130 clearTimeout(entropyChangeTimeoutEvent);
46131 }
46132 entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400);
46133 }
46134
46135 function entropyChanged() {
46136 // If blank entropy, clear mnemonic, addresses, errors
46137 if (DOM.entropy.val().trim().length == 0) {
46138 clearDisplay();
46139 clearEntropyFeedback();
46140 DOM.phrase.val("");
46141 showValidationError("Blank entropy");
46142 return;
46143 }
46144 // Get the current phrase to detect changes
46145 var phrase = DOM.phrase.val();
46146 // Set the phrase from the entropy
46147 setMnemonicFromEntropy();
46148 // Recalc addresses if the phrase has changed
46149 var newPhrase = DOM.phrase.val();
46150 if (newPhrase != phrase) {
46151 if (newPhrase.length == 0) {
46152 clearDisplay();
46153 }
46154 else {
46155 phraseChanged();
46156 }
46157 }
46158 else {
46159 hidePending();
46160 }
46161 }
46162
46163 function delayedRootKeyChanged() {
46164 // Warn if there is an existing mnemonic or passphrase.
46165 if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
46166 if (!confirm("This will clear existing mnemonic and passphrase")) {
46167 DOM.rootKey.val(bip32RootKey);
46168 return
46169 }
46170 }
46171 hideValidationError();
46172 showPending();
46173 // Clear existing mnemonic and passphrase
46174 DOM.phrase.val("");
46175 DOM.passphrase.val("");
46176 seed = null;
46177 if (rootKeyChangedTimeoutEvent != null) {
46178 clearTimeout(rootKeyChangedTimeoutEvent);
46179 }
46180 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
46181 }
46182
46183 function rootKeyChanged() {
46184 showPending();
46185 hideValidationError();
46186 var rootKeyBase58 = DOM.rootKey.val();
46187 var errorText = validateRootKey(rootKeyBase58);
46188 if (errorText) {
46189 showValidationError(errorText);
46190 return;
46191 }
46192 // Calculate and display
46193 calcBip32RootKeyFromBase58(rootKeyBase58);
46194 calcForDerivationPath();
46195 }
46196
46197 function litecoinUseLtubChanged() {
46198 litecoinUseLtub = DOM.litecoinUseLtub.prop("checked");
46199 if (litecoinUseLtub) {
46200 network = bitcoinjs.bitcoin.networks.litecoinLtub;
46201 }
46202 else {
46203 network = bitcoinjs.bitcoin.networks.litecoin;
46204 }
46205 phraseChanged();
46206 }
46207
46208 function calcForDerivationPath() {
46209 clearDerivedKeys();
46210 clearAddressesList();
46211 showPending();
46212 // Don't show bip49 if it's selected but network doesn't support it
46213 if (bip49TabSelected() && !networkHasBip49()) {
46214 return;
46215 }
46216 // Get the derivation path
46217 var derivationPath = getDerivationPath();
46218 var errorText = findDerivationPathErrors(derivationPath);
46219 if (errorText) {
46220 showValidationError(errorText);
46221 return;
46222 }
46223 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
46224 if (bip44TabSelected()) {
46225 displayBip44Info();
46226 }
46227 if (bip49TabSelected()) {
46228 displayBip49Info();
46229 }
46230 displayBip32Info();
46231 }
46232
46233 function generateClicked() {
46234 if (isUsingOwnEntropy()) {
46235 return;
46236 }
46237 clearDisplay();
46238 showPending();
46239 setTimeout(function() {
46240 setMnemonicLanguage();
46241 var phrase = generateRandomPhrase();
46242 if (!phrase) {
46243 return;
46244 }
46245 phraseChanged();
46246 }, 50);
46247 }
46248
46249 function languageChanged() {
46250 setTimeout(function() {
46251 setMnemonicLanguage();
46252 if (DOM.phrase.val().length > 0) {
46253 var newPhrase = convertPhraseToNewLanguage();
46254 DOM.phrase.val(newPhrase);
46255 phraseChanged();
46256 }
46257 else {
46258 DOM.generate.trigger("click");
46259 }
46260 }, 50);
46261 }
46262
46263 function toggleIndexes() {
46264 showIndex = !showIndex;
46265 $("td.index span").toggleClass("invisible");
46266 }
46267
46268 function toggleAddresses() {
46269 showAddress = !showAddress;
46270 $("td.address span").toggleClass("invisible");
46271 }
46272
46273 function togglePublicKeys() {
46274 showPubKey = !showPubKey;
46275 $("td.pubkey span").toggleClass("invisible");
46276 }
46277
46278 function togglePrivateKeys() {
46279 showPrivKey = !showPrivKey;
46280 $("td.privkey span").toggleClass("invisible");
46281 }
46282
46283 // Private methods
46284
46285 function generateRandomPhrase() {
46286 if (!hasStrongRandom()) {
46287 var errorText = "This browser does not support strong randomness";
46288 showValidationError(errorText);
46289 return;
46290 }
46291 var numWords = parseInt(DOM.generatedStrength.val());
46292 var strength = numWords / 3 * 32;
46293 var words = mnemonic.generate(strength);
46294 DOM.phrase.val(words);
46295 return words;
46296 }
46297
46298 function calcBip32RootKeyFromSeed(phrase, passphrase) {
46299 seed = mnemonic.toSeed(phrase, passphrase);
46300 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromSeedHex(seed, network);
46301 }
46302
46303 function calcBip32RootKeyFromBase58(rootKeyBase58) {
46304 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network);
46305 }
46306
46307 function calcBip32ExtendedKey(path) {
46308 // Check there's a root key to derive from
46309 if (!bip32RootKey) {
46310 return bip32RootKey;
46311 }
46312 var extendedKey = bip32RootKey;
46313 // Derive the key from the path
46314 var pathBits = path.split("/");
46315 for (var i=0; i<pathBits.length; i++) {
46316 var bit = pathBits[i];
46317 var index = parseInt(bit);
46318 if (isNaN(index)) {
46319 continue;
46320 }
46321 var hardened = bit[bit.length-1] == "'";
46322 var isPriv = !(extendedKey.isNeutered());
46323 var invalidDerivationPath = hardened && !isPriv;
46324 if (invalidDerivationPath) {
46325 extendedKey = null;
46326 }
46327 else if (hardened) {
46328 extendedKey = extendedKey.deriveHardened(index);
46329 }
46330 else {
46331 extendedKey = extendedKey.derive(index);
46332 }
46333 }
46334 return extendedKey
46335 }
46336
46337 function showValidationError(errorText) {
46338 DOM.feedback
46339 .text(errorText)
46340 .show();
46341 }
46342
46343 function hideValidationError() {
46344 DOM.feedback
46345 .text("")
46346 .hide();
46347 }
46348
46349 function findPhraseErrors(phrase) {
46350 // Preprocess the words
46351 phrase = mnemonic.normalizeString(phrase);
46352 var words = phraseToWordArray(phrase);
46353 // Detect blank phrase
46354 if (words.length == 0) {
46355 return "Blank mnemonic";
46356 }
46357 // Check each word
46358 for (var i=0; i<words.length; i++) {
46359 var word = words[i];
46360 var language = getLanguage();
46361 if (WORDLISTS[language].indexOf(word) == -1) {
46362 console.log("Finding closest match to " + word);
46363 var nearestWord = findNearestWord(word);
46364 return word + " not in wordlist, did you mean " + nearestWord + "?";
46365 }
46366 }
46367 // Check the words are valid
46368 var properPhrase = wordArrayToPhrase(words);
46369 var isValid = mnemonic.check(properPhrase);
46370 if (!isValid) {
46371 return "Invalid mnemonic";
46372 }
46373 return false;
46374 }
46375
46376 function validateRootKey(rootKeyBase58) {
46377 try {
46378 bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network);
46379 }
46380 catch (e) {
46381 return "Invalid root key";
46382 }
46383 return "";
46384 }
46385
46386 function getDerivationPath() {
46387 if (bip44TabSelected()) {
46388 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
46389 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
46390 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
46391 var change = parseIntNoNaN(DOM.bip44change.val(), 0);
46392 var path = "m/";
46393 path += purpose + "'/";
46394 path += coin + "'/";
46395 path += account + "'/";
46396 path += change;
46397 DOM.bip44path.val(path);
46398 var derivationPath = DOM.bip44path.val();
46399 console.log("Using derivation path from BIP44 tab: " + derivationPath);
46400 return derivationPath;
46401 }
46402 if (bip49TabSelected()) {
46403 var purpose = parseIntNoNaN(DOM.bip49purpose.val(), 49);
46404 var coin = parseIntNoNaN(DOM.bip49coin.val(), 0);
46405 var account = parseIntNoNaN(DOM.bip49account.val(), 0);
46406 var change = parseIntNoNaN(DOM.bip49change.val(), 0);
46407 var path = "m/";
46408 path += purpose + "'/";
46409 path += coin + "'/";
46410 path += account + "'/";
46411 path += change;
46412 DOM.bip49path.val(path);
46413 var derivationPath = DOM.bip49path.val();
46414 console.log("Using derivation path from BIP49 tab: " + derivationPath);
46415 return derivationPath;
46416 }
46417 else if (bip32TabSelected()) {
46418 var derivationPath = DOM.bip32path.val();
46419 console.log("Using derivation path from BIP32 tab: " + derivationPath);
46420 return derivationPath;
46421 }
46422 else {
46423 console.log("Unknown derivation path");
46424 }
46425 }
46426
46427 function findDerivationPathErrors(path) {
46428 // TODO is not perfect but is better than nothing
46429 // Inspired by
46430 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors
46431 // and
46432 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys
46433 var maxDepth = 255; // TODO verify this!!
46434 var maxIndexValue = Math.pow(2, 31); // TODO verify this!!
46435 if (path[0] != "m") {
46436 return "First character must be 'm'";
46437 }
46438 if (path.length > 1) {
46439 if (path[1] != "/") {
46440 return "Separator must be '/'";
46441 }
46442 var indexes = path.split("/");
46443 if (indexes.length > maxDepth) {
46444 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
46445 }
46446 for (var depth = 1; depth<indexes.length; depth++) {
46447 var index = indexes[depth];
46448 var invalidChars = index.replace(/^[0-9]+'?$/g, "")
46449 if (invalidChars.length > 0) {
46450 return "Invalid characters " + invalidChars + " found at depth " + depth;
46451 }
46452 var indexValue = parseInt(index.replace("'", ""));
46453 if (isNaN(depth)) {
46454 return "Invalid number at depth " + depth;
46455 }
46456 if (indexValue > maxIndexValue) {
46457 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
46458 }
46459 }
46460 }
46461 // Check root key exists or else derivation path is useless!
46462 if (!bip32RootKey) {
46463 return "No root key";
46464 }
46465 // Check no hardened derivation path when using xpub keys
46466 var hardenedPath = path.indexOf("'") > -1;
46467 var hardenedAddresses = bip32TabSelected() && DOM.hardenedAddresses.prop("checked");
46468 var hardened = hardenedPath || hardenedAddresses;
46469 var isXpubkey = bip32RootKey.isNeutered();
46470 if (hardened && isXpubkey) {
46471 return "Hardened derivation path is invalid with xpub key";
46472 }
46473 return false;
46474 }
46475
46476 function displayBip44Info() {
46477 // Get the derivation path for the account
46478 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
46479 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
46480 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
46481 var path = "m/";
46482 path += purpose + "'/";
46483 path += coin + "'/";
46484 path += account + "'/";
46485 // Calculate the account extended keys
46486 var accountExtendedKey = calcBip32ExtendedKey(path);
46487 var accountXprv = accountExtendedKey.toBase58();
46488 var accountXpub = accountExtendedKey.neutered().toBase58();
46489 // Display the extended keys
46490 DOM.bip44accountXprv.val(accountXprv);
46491 DOM.bip44accountXpub.val(accountXpub);
46492 }
46493
46494 function displayBip49Info() {
46495 // Get the derivation path for the account
46496 var purpose = parseIntNoNaN(DOM.bip49purpose.val(), 49);
46497 var coin = parseIntNoNaN(DOM.bip49coin.val(), 0);
46498 var account = parseIntNoNaN(DOM.bip49account.val(), 0);
46499 var path = "m/";
46500 path += purpose + "'/";
46501 path += coin + "'/";
46502 path += account + "'/";
46503 // Calculate the account extended keys
46504 var accountExtendedKey = calcBip32ExtendedKey(path);
46505 var accountXprv = accountExtendedKey.toBase58();
46506 var accountXpub = accountExtendedKey.neutered().toBase58();
46507 // Display the extended keys
46508 DOM.bip49accountXprv.val(accountXprv);
46509 DOM.bip49accountXpub.val(accountXpub);
46510 }
46511
46512 function displayBip32Info() {
46513 // Display the key
46514 DOM.seed.val(seed);
46515 var rootKey = bip32RootKey.toBase58();
46516 DOM.rootKey.val(rootKey);
46517 var xprvkeyB58 = "NA";
46518 if (!bip32ExtendedKey.isNeutered()) {
46519 xprvkeyB58 = bip32ExtendedKey.toBase58();
46520 }
46521 var extendedPrivKey = xprvkeyB58;
46522 DOM.extendedPrivKey.val(extendedPrivKey);
46523 var extendedPubKey = bip32ExtendedKey.neutered().toBase58();
46524 DOM.extendedPubKey.val(extendedPubKey);
46525 // Display the addresses and privkeys
46526 clearAddressesList();
46527 displayAddresses(0, 20);
46528 }
46529
46530 function displayAddresses(start, total) {
46531 generationProcesses.push(new (function() {
46532
46533 var rows = [];
46534
46535 this.stop = function() {
46536 for (var i=0; i<rows.length; i++) {
46537 rows[i].shouldGenerate = false;
46538 }
46539 hidePending();
46540 }
46541
46542 for (var i=0; i<total; i++) {
46543 var index = i + start;
46544 var isLast = i == total - 1;
46545 rows.push(new TableRow(index, isLast));
46546 }
46547
46548 })());
46549 }
46550
46551 function TableRow(index, isLast) {
46552
46553 var self = this;
46554 this.shouldGenerate = true;
46555 var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
46556 var isP2wpkhNestedInP2sh = bip49TabSelected() || (bip32TabSelected() && useP2wpkhNestedInP2sh());
46557 var p2wpkhNestedInP2shAvailable = networkHasBip49();
46558
46559 function init() {
46560 calculateValues();
46561 }
46562
46563 function calculateValues() {
46564 setTimeout(function() {
46565 if (!self.shouldGenerate) {
46566 return;
46567 }
46568 var key = "NA";
46569 if (useHardenedAddresses) {
46570 key = bip32ExtendedKey.deriveHardened(index);
46571 }
46572 else {
46573 key = bip32ExtendedKey.derive(index);
46574 }
46575 var address = key.getAddress().toString();
46576 var privkey = "NA";
46577 if (!key.isNeutered()) {
46578 privkey = key.keyPair.toWIF(network);
46579 }
46580 var pubkey = key.getPublicKeyBuffer().toString('hex');
46581 var indexText = getDerivationPath() + "/" + index;
46582 if (useHardenedAddresses) {
46583 indexText = indexText + "'";
46584 }
46585 // Ethereum values are different
46586 if (networks[DOM.network.val()].name == "ETH - Ethereum") {
46587 var privKeyBuffer = key.keyPair.d.toBuffer();
46588 privkey = privKeyBuffer.toString('hex');
46589 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
46590 var hexAddress = addressBuffer.toString('hex');
46591 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
46592 address = ethUtil.addHexPrefix(checksumAddress);
46593 privkey = ethUtil.addHexPrefix(privkey);
46594 pubkey = ethUtil.addHexPrefix(pubkey);
46595 }
46596 // Ripple values are different
46597 if (networks[DOM.network.val()].name == "XRP - Ripple") {
46598 privkey = convertRipplePriv(privkey);
46599 address = convertRippleAdrr(address);
46600 }
46601 // BIP49 addresses are different
46602 if (isP2wpkhNestedInP2sh) {
46603 if (!p2wpkhNestedInP2shAvailable) {
46604 return;
46605 }
46606 var keyhash = bitcoinjs.bitcoin.crypto.hash160(key.getPublicKeyBuffer());
46607 var scriptsig = bitcoinjs.bitcoin.script.witnessPubKeyHash.output.encode(keyhash);
46608 var addressbytes = bitcoinjs.bitcoin.crypto.hash160(scriptsig);
46609 var scriptpubkey = bitcoinjs.bitcoin.script.scriptHash.output.encode(addressbytes);
46610 address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network)
46611 }
46612 addAddressToList(indexText, address, pubkey, privkey);
46613 if (isLast) {
46614 hidePending();
46615 }
46616 }, 50)
46617 }
46618
46619 init();
46620
46621 }
46622
46623 function showMore() {
46624 var start = DOM.addresses.children().length;
46625 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
46626 if (isNaN(rowsToAdd)) {
46627 rowsToAdd = 20;
46628 DOM.rowsToAdd.val("20");
46629 }
46630 if (rowsToAdd > 200) {
46631 var msg = "Generating " + rowsToAdd + " rows could take a while. ";
46632 msg += "Do you want to continue?";
46633 if (!confirm(msg)) {
46634 return;
46635 }
46636 }
46637 displayAddresses(start, rowsToAdd);
46638 }
46639
46640 function clearDisplay() {
46641 clearAddressesList();
46642 clearKeys();
46643 hideValidationError();
46644 }
46645
46646 function clearAddressesList() {
46647 DOM.addresses.empty();
46648 stopGenerating();
46649 }
46650
46651 function stopGenerating() {
46652 while (generationProcesses.length > 0) {
46653 var generation = generationProcesses.shift();
46654 generation.stop();
46655 }
46656 }
46657
46658 function clearKeys() {
46659 clearRootKey();
46660 clearDerivedKeys();
46661 }
46662
46663 function clearRootKey() {
46664 DOM.rootKey.val("");
46665 }
46666
46667 function clearDerivedKeys() {
46668 DOM.extendedPrivKey.val("");
46669 DOM.extendedPubKey.val("");
46670 DOM.bip44accountXprv.val("");
46671 DOM.bip44accountXpub.val("");
46672 }
46673
46674 function addAddressToList(indexText, address, pubkey, privkey) {
46675 var row = $(addressRowTemplate.html());
46676 // Elements
46677 var indexCell = row.find(".index span");
46678 var addressCell = row.find(".address span");
46679 var pubkeyCell = row.find(".pubkey span");
46680 var privkeyCell = row.find(".privkey span");
46681 // Content
46682 indexCell.text(indexText);
46683 addressCell.text(address);
46684 pubkeyCell.text(pubkey);
46685 privkeyCell.text(privkey);
46686 // Visibility
46687 if (!showIndex) {
46688 indexCell.addClass("invisible");
46689 }
46690 if (!showAddress) {
46691 addressCell.addClass("invisible");
46692 }
46693 if (!showPubKey) {
46694 pubkeyCell.addClass("invisible");
46695 }
46696 if (!showPrivKey) {
46697 privkeyCell.addClass("invisible");
46698 }
46699 DOM.addresses.append(row);
46700 var rowShowQrEls = row.find("[data-show-qr]");
46701 setQrEvents(rowShowQrEls);
46702 }
46703
46704 function hasStrongRandom() {
46705 return 'crypto' in window && window['crypto'] !== null;
46706 }
46707
46708 function disableForms() {
46709 $("form").on("submit", function(e) {
46710 e.preventDefault();
46711 });
46712 }
46713
46714 function parseIntNoNaN(val, defaultVal) {
46715 var v = parseInt(val);
46716 if (isNaN(v)) {
46717 return defaultVal;
46718 }
46719 return v;
46720 }
46721
46722 function showPending() {
46723 DOM.feedback
46724 .text("Calculating...")
46725 .show();
46726 }
46727
46728 function findNearestWord(word) {
46729 var language = getLanguage();
46730 var words = WORDLISTS[language];
46731 var minDistance = 99;
46732 var closestWord = words[0];
46733 for (var i=0; i<words.length; i++) {
46734 var comparedTo = words[i];
46735 if (comparedTo.indexOf(word) == 0) {
46736 return comparedTo;
46737 }
46738 var distance = Levenshtein.get(word, comparedTo);
46739 if (distance < minDistance) {
46740 closestWord = comparedTo;
46741 minDistance = distance;
46742 }
46743 }
46744 return closestWord;
46745 }
46746
46747 function hidePending() {
46748 DOM.feedback
46749 .text("")
46750 .hide();
46751 }
46752
46753 function populateNetworkSelect() {
46754 for (var i=0; i<networks.length; i++) {
46755 var network = networks[i];
46756 var option = $("<option>");
46757 option.attr("value", i);
46758 option.text(network.name);
46759 if (network.name == "BTC - Bitcoin") {
46760 option.prop("selected", true);
46761 }
46762 DOM.phraseNetwork.append(option);
46763 }
46764 }
46765
46766 function populateClientSelect() {
46767 for (var i=0; i<clients.length; i++) {
46768 var client = clients[i];
46769 var option = $("<option>");
46770 option.attr("value", i);
46771 option.text(client.name);
46772 DOM.bip32Client.append(option);
46773 }
46774 }
46775
46776 function getLanguage() {
46777 var defaultLanguage = "english";
46778 // Try to get from existing phrase
46779 var language = getLanguageFromPhrase();
46780 // Try to get from url if not from phrase
46781 if (language.length == 0) {
46782 language = getLanguageFromUrl();
46783 }
46784 // Default to English if no other option
46785 if (language.length == 0) {
46786 language = defaultLanguage;
46787 }
46788 return language;
46789 }
46790
46791 function getLanguageFromPhrase(phrase) {
46792 // Check if how many words from existing phrase match a language.
46793 var language = "";
46794 if (!phrase) {
46795 phrase = DOM.phrase.val();
46796 }
46797 if (phrase.length > 0) {
46798 var words = phraseToWordArray(phrase);
46799 var languageMatches = {};
46800 for (l in WORDLISTS) {
46801 // Track how many words match in this language
46802 languageMatches[l] = 0;
46803 for (var i=0; i<words.length; i++) {
46804 var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1;
46805 if (wordInLanguage) {
46806 languageMatches[l]++;
46807 }
46808 }
46809 // Find languages with most word matches.
46810 // This is made difficult due to commonalities between Chinese
46811 // simplified vs traditional.
46812 var mostMatches = 0;
46813 var mostMatchedLanguages = [];
46814 for (var l in languageMatches) {
46815 var numMatches = languageMatches[l];
46816 if (numMatches > mostMatches) {
46817 mostMatches = numMatches;
46818 mostMatchedLanguages = [l];
46819 }
46820 else if (numMatches == mostMatches) {
46821 mostMatchedLanguages.push(l);
46822 }
46823 }
46824 }
46825 if (mostMatchedLanguages.length > 0) {
46826 // Use first language and warn if multiple detected
46827 language = mostMatchedLanguages[0];
46828 if (mostMatchedLanguages.length > 1) {
46829 console.warn("Multiple possible languages");
46830 console.warn(mostMatchedLanguages);
46831 }
46832 }
46833 }
46834 return language;
46835 }
46836
46837 function getLanguageFromUrl() {
46838 for (var language in WORDLISTS) {
46839 if (window.location.hash.indexOf(language) > -1) {
46840 return language;
46841 }
46842 }
46843 return "";
46844 }
46845
46846 function setMnemonicLanguage() {
46847 var language = getLanguage();
46848 // Load the bip39 mnemonic generator for this language if required
46849 if (!(language in mnemonics)) {
46850 mnemonics[language] = new Mnemonic(language);
46851 }
46852 mnemonic = mnemonics[language];
46853 }
46854
46855 function convertPhraseToNewLanguage() {
46856 var oldLanguage = getLanguageFromPhrase();
46857 var newLanguage = getLanguageFromUrl();
46858 var oldPhrase = DOM.phrase.val();
46859 var oldWords = phraseToWordArray(oldPhrase);
46860 var newWords = [];
46861 for (var i=0; i<oldWords.length; i++) {
46862 var oldWord = oldWords[i];
46863 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
46864 var newWord = WORDLISTS[newLanguage][index];
46865 newWords.push(newWord);
46866 }
46867 newPhrase = wordArrayToPhrase(newWords);
46868 return newPhrase;
46869 }
46870
46871 // TODO look at jsbip39 - mnemonic.splitWords
46872 function phraseToWordArray(phrase) {
46873 var words = phrase.split(/\s/g);
46874 var noBlanks = [];
46875 for (var i=0; i<words.length; i++) {
46876 var word = words[i];
46877 if (word.length > 0) {
46878 noBlanks.push(word);
46879 }
46880 }
46881 return noBlanks;
46882 }
46883
46884 // TODO look at jsbip39 - mnemonic.joinWords
46885 function wordArrayToPhrase(words) {
46886 var phrase = words.join(" ");
46887 var language = getLanguageFromPhrase(phrase);
46888 if (language == "japanese") {
46889 phrase = words.join("\u3000");
46890 }
46891 return phrase;
46892 }
46893
46894 function isUsingOwnEntropy() {
46895 return DOM.useEntropy.prop("checked");
46896 }
46897
46898 function setMnemonicFromEntropy() {
46899 clearEntropyFeedback();
46900 // Get entropy value
46901 var entropyStr = DOM.entropy.val();
46902 // Work out minimum base for entropy
46903 var entropy = Entropy.fromString(entropyStr);
46904 if (entropy.binaryStr.length == 0) {
46905 return;
46906 }
46907 // Show entropy details
46908 showEntropyFeedback(entropy);
46909 // Use entropy hash if not using raw entropy
46910 var bits = entropy.binaryStr;
46911 var mnemonicLength = DOM.entropyMnemonicLength.val();
46912 if (mnemonicLength != "raw") {
46913 // Get bits by hashing entropy with SHA256
46914 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
46915 var hex = sjcl.codec.hex.fromBits(hash);
46916 bits = BigInteger.parse(hex, 16).toString(2);
46917 while (bits.length % 256 != 0) {
46918 bits = "0" + bits;
46919 }
46920 // Truncate hash to suit number of words
46921 mnemonicLength = parseInt(mnemonicLength);
46922 var numberOfBits = 32 * mnemonicLength / 3;
46923 bits = bits.substring(0, numberOfBits);
46924 }
46925 // Discard trailing entropy
46926 var bitsToUse = Math.floor(bits.length / 32) * 32;
46927 var start = bits.length - bitsToUse;
46928 var binaryStr = bits.substring(start);
46929 // Convert entropy string to numeric array
46930 var entropyArr = [];
46931 for (var i=0; i<binaryStr.length / 8; i++) {
46932 var byteAsBits = binaryStr.substring(i*8, i*8+8);
46933 var entropyByte = parseInt(byteAsBits, 2);
46934 entropyArr.push(entropyByte)
46935 }
46936 // Convert entropy array to mnemonic
46937 var phrase = mnemonic.toMnemonic(entropyArr);
46938 // Set the mnemonic in the UI
46939 DOM.phrase.val(phrase);
46940 }
46941
46942 function clearEntropyFeedback() {
46943 DOM.entropyCrackTime.text("...");
46944 DOM.entropyType.text("");
46945 DOM.entropyWordCount.text("0");
46946 DOM.entropyEventCount.text("0");
46947 DOM.entropyBitsPerEvent.text("0");
46948 DOM.entropyBits.text("0");
46949 DOM.entropyFiltered.html("&nbsp;");
46950 DOM.entropyBinary.html("&nbsp;");
46951 }
46952
46953 function showEntropyFeedback(entropy) {
46954 var numberOfBits = entropy.binaryStr.length;
46955 var timeToCrack = "unknown";
46956 try {
46957 var z = zxcvbn(entropy.base.parts.join(""));
46958 timeToCrack = z.crack_times_display.offline_fast_hashing_1e10_per_second;
46959 if (z.feedback.warning != "") {
46960 timeToCrack = timeToCrack + " - " + z.feedback.warning;
46961 };
46962 }
46963 catch (e) {
46964 console.log("Error detecting entropy strength with zxcvbn:");
46965 console.log(e);
46966 }
46967 var entropyTypeStr = getEntropyTypeStr(entropy);
46968 var wordCount = Math.floor(numberOfBits / 32) * 3;
46969 var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
46970 DOM.entropyFiltered.html(entropy.cleanHtml);
46971 DOM.entropyType.text(entropyTypeStr);
46972 DOM.entropyCrackTime.text(timeToCrack);
46973 DOM.entropyEventCount.text(entropy.base.ints.length);
46974 DOM.entropyBits.text(numberOfBits);
46975 DOM.entropyWordCount.text(wordCount);
46976 DOM.entropyBinary.text(entropy.binaryStr);
46977 DOM.entropyBitsPerEvent.text(bitsPerEvent);
46978 // detect and warn of filtering
46979 var rawNoSpaces = DOM.entropy.val().replace(/\s/g, "");
46980 var cleanNoSpaces = entropy.cleanStr.replace(/\s/g, "");
46981 var isFiltered = rawNoSpaces.length != cleanNoSpaces.length;
46982 if (isFiltered) {
46983 DOM.entropyFilterWarning.removeClass('hidden');
46984 }
46985 else {
46986 DOM.entropyFilterWarning.addClass('hidden');
46987 }
46988 }
46989
46990 function getEntropyTypeStr(entropy) {
46991 var typeStr = entropy.base.str;
46992 // Add some detail if these are cards
46993 if (entropy.base.asInt == 52) {
46994 var cardDetail = []; // array of message strings
46995 // Detect duplicates
46996 var dupes = [];
46997 var dupeTracker = {};
46998 for (var i=0; i<entropy.base.parts.length; i++) {
46999 var card = entropy.base.parts[i];
47000 var cardUpper = card.toUpperCase();
47001 if (cardUpper in dupeTracker) {
47002 dupes.push(card);
47003 }
47004 dupeTracker[cardUpper] = true;
47005 }
47006 if (dupes.length > 0) {
47007 var dupeWord = "duplicates";
47008 if (dupes.length == 1) {
47009 dupeWord = "duplicate";
47010 }
47011 var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" ");
47012 if (dupes.length > 3) {
47013 msg += "...";
47014 }
47015 cardDetail.push(msg);
47016 }
47017 // Detect full deck
47018 var uniqueCards = [];
47019 for (var uniqueCard in dupeTracker) {
47020 uniqueCards.push(uniqueCard);
47021 }
47022 if (uniqueCards.length == 52) {
47023 cardDetail.unshift("full deck");
47024 }
47025 // Detect missing cards
47026 var values = "A23456789TJQK";
47027 var suits = "CDHS";
47028 var missingCards = [];
47029 for (var i=0; i<suits.length; i++) {
47030 for (var j=0; j<values.length; j++) {
47031 var card = values[j] + suits[i];
47032 if (!(card in dupeTracker)) {
47033 missingCards.push(card);
47034 }
47035 }
47036 }
47037 // Display missing cards if six or less, ie clearly going for full deck
47038 if (missingCards.length > 0 && missingCards.length <= 6) {
47039 var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" ");
47040 if (missingCards.length > 3) {
47041 msg += "...";
47042 }
47043 cardDetail.push(msg);
47044 }
47045 // Add card details to typeStr
47046 if (cardDetail.length > 0) {
47047 typeStr += " (" + cardDetail.join(", ") + ")";
47048 }
47049 }
47050 return typeStr;
47051 }
47052
47053 function setQrEvents(els) {
47054 els.on("mouseenter", createQr);
47055 els.on("mouseleave", destroyQr);
47056 els.on("click", toggleQr);
47057 }
47058
47059 function createQr(e) {
47060 var content = e.target.textContent || e.target.value;
47061 if (content) {
47062 var size = 130;
47063 DOM.qrImage.qrcode({width: size, height: size, text: content});
47064 if (!showQr) {
47065 DOM.qrHider.addClass("hidden");
47066 }
47067 else {
47068 DOM.qrHider.removeClass("hidden");
47069 }
47070 DOM.qrContainer.removeClass("hidden");
47071 }
47072 }
47073
47074 function destroyQr() {
47075 DOM.qrImage.text("");
47076 DOM.qrContainer.addClass("hidden");
47077 }
47078
47079 function toggleQr() {
47080 showQr = !showQr;
47081 DOM.qrHider.toggleClass("hidden");
47082 DOM.qrHint.toggleClass("hidden");
47083 }
47084
47085 function bip44TabSelected() {
47086 return DOM.bip44tab.hasClass("active");
47087 }
47088
47089 function bip32TabSelected() {
47090 return DOM.bip32tab.hasClass("active");
47091 }
47092
47093 function useP2wpkhNestedInP2sh() {
47094 return DOM.useP2wpkhNestedInP2sh.prop("checked");
47095 }
47096
47097 function networkHasBip49() {
47098 return networks[DOM.network.val()].p2wpkhNestedInP2shAvailable;
47099 }
47100
47101 function bip49TabSelected() {
47102 return DOM.bip49tab.hasClass("active");
47103 }
47104
47105 function setHdCoin(coinValue) {
47106 DOM.bip44coin.val(coinValue);
47107 DOM.bip49coin.val(coinValue);
47108 }
47109
47110 function showP2wpkhNestedInP2shAvailable() {
47111 DOM.bip49unavailable.addClass("hidden");
47112 DOM.bip49available.removeClass("hidden");
47113 DOM.useP2wpkhNestedInP2sh.prop("disabled", false);
47114 }
47115
47116 function showP2wpkhNestedInP2shUnavailable() {
47117 DOM.bip49available.addClass("hidden");
47118 DOM.bip49unavailable.removeClass("hidden");
47119 DOM.useP2wpkhNestedInP2sh.prop("disabled", true);
47120 DOM.useP2wpkhNestedInP2sh.prop("checked", false);
47121 }
47122
47123 var networks = [
47124 {
47125 name: "BCH - Bitcoin Cash",
47126 p2wpkhNestedInP2shAvailable: false,
47127 onSelect: function() {
47128 network = bitcoinjs.bitcoin.networks.bitcoin;
47129 setHdCoin(145);
47130 },
47131 },
47132 {
47133 name: "BTC - Bitcoin",
47134 p2wpkhNestedInP2shAvailable: true,
47135 onSelect: function() {
47136 network = bitcoinjs.bitcoin.networks.bitcoin;
47137 setHdCoin(0);
47138 },
47139 },
47140 {
47141 name: "BTC - Bitcoin Testnet",
47142 p2wpkhNestedInP2shAvailable: true,
47143 onSelect: function() {
47144 network = bitcoinjs.bitcoin.networks.testnet;
47145 setHdCoin(1);
47146 },
47147 },
47148 {
47149 name: "CLAM - Clams",
47150 p2wpkhNestedInP2shAvailable: false,
47151 onSelect: function() {
47152 network = bitcoinjs.bitcoin.networks.clam;
47153 setHdCoin(23);
47154 },
47155 },
47156 {
47157 name: "CRW - Crown",
47158 p2wpkhNestedInP2shAvailable: false,
47159 onSelect: function() {
47160 network = bitcoinjs.bitcoin.networks.crown;
47161 setHdCoin(72);
47162 },
47163 },
47164 {
47165 name: "DASH - Dash",
47166 p2wpkhNestedInP2shAvailable: false,
47167 onSelect: function() {
47168 network = bitcoinjs.bitcoin.networks.dash;
47169 setHdCoin(5);
47170 },
47171 },
47172 {
47173 name: "DASH - Dash Testnet",
47174 p2wpkhNestedInP2shAvailable: false,
47175 onSelect: function() {
47176 network = bitcoinjs.bitcoin.networks.dashtn;
47177 setHdCoin(1);
47178 },
47179 },
47180 {
47181 name: "DOGE - Dogecoin",
47182 p2wpkhNestedInP2shAvailable: false,
47183 onSelect: function() {
47184 network = bitcoinjs.bitcoin.networks.dogecoin;
47185 setHdCoin(3);
47186 },
47187 },
47188 {
47189 name: "ETH - Ethereum",
47190 p2wpkhNestedInP2shAvailable: false,
47191 onSelect: function() {
47192 network = bitcoinjs.bitcoin.networks.bitcoin;
47193 setHdCoin(60);
47194 },
47195 },
47196 {
47197 name: "FJC - Fujicoin",
47198 p2wpkhNestedInP2shAvailable: false,
47199 onSelect: function() {
47200 network = bitcoinjs.bitcoin.networks.fujicoin;
47201 setHdCoin(75);
47202 },
47203 },
47204 {
47205 name: "GAME - GameCredits",
47206 p2wpkhNestedInP2shAvailable: false,
47207 onSelect: function() {
47208 network = bitcoinjs.bitcoin.networks.game;
47209 setHdCoin(101);
47210 },
47211 },
47212 {
47213 name: "JBS - Jumbucks",
47214 p2wpkhNestedInP2shAvailable: false,
47215 onSelect: function() {
47216 network = bitcoinjs.bitcoin.networks.jumbucks;
47217 setHdCoin(26);
47218 },
47219 },
47220 {
47221 name: "LTC - Litecoin",
47222 p2wpkhNestedInP2shAvailable: false,
47223 onSelect: function() {
47224 network = bitcoinjs.bitcoin.networks.litecoin;
47225 setHdCoin(2);
47226 DOM.litecoinLtubContainer.removeClass("hidden");
47227 },
47228 },
47229 {
47230 name: "MAZA - Maza",
47231 p2wpkhNestedInP2shAvailable: false,
47232 onSelect: function() {
47233 network = bitcoinjs.bitcoin.networks.maza;
47234 setHdCoin(13);
47235 },
47236 },
47237
47238 {
47239 name: "NMC - Namecoin",
47240 p2wpkhNestedInP2shAvailable: false,
47241 onSelect: function() {
47242 network = bitcoinjs.bitcoin.networks.namecoin;
47243 setHdCoin(7);
47244 },
47245 },
47246 {
47247 name: "PIVX - PIVX",
47248 p2wpkhNestedInP2shAvailable: false,
47249 onSelect: function() {
47250 network = bitcoinjs.bitcoin.networks.pivx;
47251 setHdCoin(119);
47252 },
47253 },
47254 {
47255 name: "PIVX - PIVX Testnet",
47256 p2wpkhNestedInP2shAvailable: false,
47257 onSelect: function() {
47258 network = bitcoinjs.bitcoin.networks.pivxtestnet;
47259 setHdCoin(1);
47260 },
47261 },
47262 {
47263 name: "PPC - Peercoin",
47264 p2wpkhNestedInP2shAvailable: false,
47265 onSelect: function() {
47266 network = bitcoinjs.bitcoin.networks.peercoin;
47267 setHdCoin(6);
47268 },
47269 },
47270 {
47271 name: "SDC - ShadowCash",
47272 p2wpkhNestedInP2shAvailable: false,
47273 onSelect: function() {
47274 network = bitcoinjs.bitcoin.networks.shadow;
47275 setHdCoin(35);
47276 },
47277 },
47278 {
47279 name: "SDC - ShadowCash Testnet",
47280 p2wpkhNestedInP2shAvailable: false,
47281 onSelect: function() {
47282 network = bitcoinjs.bitcoin.networks.shadowtn;
47283 setHdCoin(1);
47284 },
47285 },
47286 {
47287 name: "SLM - Slimcoin",
47288 p2wpkhNestedInP2shAvailable: false,
47289 onSelect: function() {
47290 network = bitcoinjs.bitcoin.networks.slimcoin;
47291 setHdCoin(63);
47292 },
47293 },
47294 {
47295 name: "SLM - Slimcoin Testnet",
47296 p2wpkhNestedInP2shAvailable: false,
47297 onSelect: function() {
47298 network = bitcoinjs.bitcoin.networks.slimcointn;
47299 setHdCoin(111);
47300 },
47301 },
47302 {
47303 name: "VIA - Viacoin",
47304 p2wpkhNestedInP2shAvailable: false,
47305 onSelect: function() {
47306 network = bitcoinjs.bitcoin.networks.viacoin;
47307 setHdCoin(14);
47308 },
47309 },
47310 {
47311 name: "VIA - Viacoin Testnet",
47312 p2wpkhNestedInP2shAvailable: false,
47313 onSelect: function() {
47314 network = bitcoinjs.bitcoin.networks.viacointestnet;
47315 setHdCoin(1);
47316 },
47317 },
47318 {
47319 name: "XMY - Myriadcoin",
47320 p2wpkhNestedInP2shAvailable: false,
47321 onSelect: function() {
47322 network = bitcoinjs.bitcoin.networks.myriadcoin;
47323 setHdCoin(90);
47324 },
47325 },
47326 {
47327 name: "XRP - Ripple",
47328 p2wpkhNestedInP2shAvailable: false,
47329 onSelect: function() {
47330 network = bitcoinjs.bitcoin.networks.bitcoin;
47331 setHdCoin(144);
47332 },
47333 }
47334 ]
47335
47336 var clients = [
47337 {
47338 name: "Bitcoin Core",
47339 onSelect: function() {
47340 DOM.bip32path.val("m/0'/0'");
47341 DOM.hardenedAddresses.prop('checked', true);
47342 },
47343 },
47344 {
47345 name: "blockchain.info",
47346 onSelect: function() {
47347 DOM.bip32path.val("m/44'/0'/0'");
47348 DOM.hardenedAddresses.prop('checked', false);
47349 },
47350 },
47351 {
47352 name: "MultiBit HD",
47353 onSelect: function() {
47354 DOM.bip32path.val("m/0'/0");
47355 DOM.hardenedAddresses.prop('checked', false);
47356 },
47357 }
47358 ]
47359
47360 init();
47361
47362 })();
47363 </script>
47364 </body>
47365 </html>