]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blob - bip39-standalone.html
Merge pull request #98 from Zwilla/patch-1
[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.5</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 data-translate>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 data-translate-html>
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 data-translate>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 data-translate>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" data-translate>Warning</label>
162 <div class="col-sm-10 form-control-static">
163 <span data-translate>Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.</span>
164 <a href="#entropy-notes" data-translate>Read more</a>
165 </div>
166 </div>
167 <div class="form-group">
168 <label for="entropy" class="col-sm-2 control-label" data-translate>Entropy</label>
169 <div class="col-sm-7">
170 <textarea id="entropy" rows="2" class="entropy form-control" placeholder="Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards" data-translate-placeholder></textarea>
171 <div class="row">
172 <label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Based on estimates from zxcvbn using Filtered Entropy">Time To Crack</span></label>
173 <div class="crack-time col-sm-3 form-control-static"></div>
174 <label class="col-sm-3 control-label" data-translate>Event Count</label>
175 <div class="event-count col-sm-3 form-control-static"></div>
176 </div>
177 <div class="row">
178 <label class="col-sm-3 control-label" data-translate>Entropy Type</label>
179 <div class="type col-sm-3 form-control-static"></div>
180 <label class="col-sm-3 control-label" data-translate>Bits Per Event</label>
181 <div class="bits-per-event col-sm-3 form-control-static"></div>
182 </div>
183 <div class="row">
184 <label class="col-sm-3 control-label" data-translate>Raw Entropy Words</label>
185 <div class="word-count col-sm-3 form-control-static"></div>
186 <label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Total bits of entropy may be less than indicated if any entropy event uses a weak source.">Total Bits</span></label>
187 <div class="bits col-sm-3 form-control-static"></div>
188 </div>
189 <label class="col-sm-3 control-label" data-translate>Filtered Entropy</label>
190 <div class="filtered col-sm-9 form-control-static"></div>
191 <label class="col-sm-3 control-label" data-translate>Raw Binary</label>
192 <div class="binary col-sm-9 form-control-static"></div>
193 <label class="col-sm-3 control-label" data-translate>Mnemonic Length</label>
194 <div class="col-sm-9">
195 <select class="mnemonic-length form-control">
196 <option value="raw" selected data-translate>Use Raw Entropy (3 words per 32 bits)</option>
197 <option value="12">12 <span data-translate>Words</span></option>
198 <option value="15">15 <span data-translate>Words</option>
199 <option value="18">18 <span data-translate>Words</span></option>
200 <option value="21">21 <span data-translate>Words</span></option>
201 <option value="24">24 <span data-translate>Words</span></option>
202 </select>
203 </div>
204 </div>
205 <div class="col-sm-3">
206 <p data-translate>Valid entropy values include:</p>
207 <ul>
208 <li><strong data-translate>Binary</strong> [0-1]<br>101010011</li>
209 <li><strong data-translate>Base 6</strong> [0-5]<br>123434014</li>
210 <li><strong data-translate>Dice</strong> [1-6]<br>62535634</li>
211 <li><strong data-translate>Base 10</strong> [0-9]<br>90834528</li>
212 <li><strong data-translate>Hex</strong> [0-9A-F]<br>4187a8bfd9</li>
213 <li><strong data-translate>Card</strong> [A2-9TJQK][CDHS]<br>ahqs9dtc</li>
214 </ul>
215 </div>
216 </div>
217 </div>
218 <div class="form-group">
219 <div class="col-sm-2"></div>
220 <div class="col-sm-10 checkbox">
221 <label>
222 <input type="checkbox" class="use-entropy">
223 <span data-translate>Supply my own source of entropy</span>
224 </label>
225 </div>
226 </div>
227 <div class="form-group">
228 <label class="col-sm-2 control-label" data-translate>Mnemonic Language</label>
229 <div class="col-sm-10 languages">
230 <div class="form-control no-border">
231 <a href="#english">English</a>
232 <a href="#japanese" title="Japanese">日本語</a>
233 <a href="#spanish" title="Spanish">Español</a>
234 <a href="#chinese_simplified" title="Chinese (Simplified)">中文(简体)</a>
235 <a href="#chinese_traditional" title="Chinese (Traditional)">中文(繁體)</a>
236 <a href="#french" title="French">Français</a>
237 <a href="#italian" title="Italian">Italiano</a>
238 </div>
239 </div>
240 </div>
241 <div class="form-group">
242 <label for="phrase" class="col-sm-2 control-label" data-translate>BIP39 Mnemonic</label>
243 <div class="col-sm-10">
244 <textarea id="phrase" class="phrase form-control" data-show-qr></textarea>
245 </div>
246 </div>
247 <div class="form-group">
248 <label for="passphrase" class="col-sm-2 control-label" data-translate>BIP39 Passphrase (optional)</label>
249 <div class="col-sm-10">
250 <textarea id="passphrase" class="passphrase form-control"></textarea>
251 </div>
252 </div>
253 <div class="form-group">
254 <label for="seed" class="col-sm-2 control-label" data-translate>BIP39 Seed</label>
255 <div class="col-sm-10">
256 <textarea id="seed" class="seed form-control" readonly="readonly" data-show-qr></textarea>
257 </div>
258 </div>
259 <div class="form-group">
260 <label for="network-phrase" class="col-sm-2 control-label" data-translate>Coin</label>
261 <div class="col-sm-10">
262 <select id="network-phrase" class="network form-control">
263 <!-- populated by javascript -->
264 </select>
265 </div>
266 </div>
267 <div class="form-group">
268 <label for="root-key" class="col-sm-2 control-label" data-translate>BIP32 Root Key</label>
269 <div class="col-sm-10">
270 <textarea id="root-key" class="root-key form-control" data-show-qr></textarea>
271 </div>
272 </div>
273 <div class="form-group litecoin-ltub-container hidden">
274 <label for="litecoin-use-ltub" class="col-sm-2 control-label" data-translate>Prefixes</label>
275 <div class="col-sm-10 checkbox">
276 <label>
277 <input type="checkbox" id="litecoin-use-ltub" class="litecoin-use-ltub">
278 Use <code>Ltpv / Ltub</code> instead of <code>xprv / xpub</code>
279 </label>
280 </div>
281 </div>
282 </form>
283 </div>
284 </div>
285
286 <hr>
287
288 <div class="row">
289 <div class="col-md-12">
290 <h2>Derivation Path</h2>
291 <ul class="derivation-type nav nav-tabs" role="tablist">
292 <li id="bip32-tab">
293 <a href="#bip32" role="tab" data-toggle="tab">BIP32</a>
294 </li>
295 <li id="bip44-tab" class="active">
296 <a href="#bip44" role="tab" data-toggle="tab">BIP44</a>
297 </li>
298 <li id="bip49-tab">
299 <a href="#bip49" role="tab" data-toggle="tab">BIP49</a>
300 </li>
301 </ul>
302 <div class="derivation-type tab-content">
303 <div id="bip44" class="tab-pane active">
304 <form class="form-horizontal" role="form">
305 <br>
306 <div class="col-sm-2"></div>
307 <div class="col-sm-10">
308 <p data-translate-html>
309 For more info see the
310 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">BIP44 spec</a>.
311 </p>
312 </div>
313 <div class="form-group">
314 <label for="purpose" class="col-sm-2 control-label">
315 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
316 </label>
317 <div class="col-sm-10">
318 <input id="purpose" type="text" class="purpose form-control" value="44" readonly>
319 </div>
320 </div>
321 <div class="form-group">
322 <label for="coin" class="col-sm-2 control-label">
323 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
324 </label>
325 <div class="col-sm-10">
326 <input id="coin" type="text" class="coin form-control" value="0" readonly>
327 </div>
328 </div>
329 <div class="form-group">
330 <label for="account" class="col-sm-2 control-label">
331 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
332 </label>
333 <div class="col-sm-10">
334 <input id="account" type="text" class="account form-control" value="0">
335 </div>
336 </div>
337 <div class="form-group">
338 <label for="change" class="col-sm-2 control-label">
339 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
340 </label>
341 <div class="col-sm-10">
342 <input id="change" type="text" class="change form-control" value="0">
343 </div>
344 </div>
345 <div class="form-group">
346 <label class="col-sm-2 control-label">
347 </label>
348 <div class="col-sm-10">
349 <p data-translate>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.</p>
350 </div>
351 </div>
352 <div class="form-group">
353 <label for="account-xprv" class="col-sm-2 control-label">
354 <span data-translate>Account Extended Private Key</span>
355 </label>
356 <div class="col-sm-10">
357 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
358 </div>
359 </div>
360 <div class="form-group">
361 <label for="account-xpub" class="col-sm-2 control-label">
362 <span data-translate>Account Extended Public Key</span>
363 </label>
364 <div class="col-sm-10">
365 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
366 </div>
367 </div>
368 <div class="form-group">
369 <label class="col-sm-2 control-label">
370 </label>
371 <div class="col-sm-10">
372 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
373 </div>
374 </div>
375 <div class="form-group">
376 <label for="bip44-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
377 <div class="col-sm-10">
378 <input id="bip44-path" type="text" class="path form-control" value="m/44'/0'/0'/0" readonly="readonly">
379 </div>
380 </div>
381 </form>
382 </div>
383 <div id="bip32" class="tab-pane">
384 <form class="form-horizontal" role="form">
385 <br>
386 <div class="col-sm-2"></div>
387 <div class="col-sm-10">
388 <p data-translate>
389 For more info see the
390 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">BIP32 spec</a>
391 </p>
392 </div>
393 <div class="form-group">
394 <label for="bip32-client" class="col-sm-2 control-label" data-translate>Client</label>
395 <div class="col-sm-10">
396 <select id="bip32-client" class="client form-control">
397 <option value="custom">Custom derivation path</option>
398 <!-- populated by javascript -->
399 </select>
400 </div>
401 </div>
402 <div class="form-group">
403 <label for="bip32-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
404 <div class="col-sm-10">
405 <input id="bip32-path" type="text" class="path form-control" value="m/0">
406 </div>
407 </div>
408 <div class="form-group">
409 <div class="col-sm-2"></div>
410 <label class="col-sm-10">
411 <input class="hardened-addresses" type="checkbox">
412 <span data-translate>Use hardened addresses</span>
413 </label>
414 </div>
415 <div class="form-group">
416 <div class="col-sm-2"></div>
417 <label class="col-sm-10">
418 <input class="p2wpkh-nested-in-p2sh" type="checkbox">
419 <span data-translate>Use SegWit addresses (ie P2WPKH Nested In P2SH)</span>
420 </label>
421 </div>
422 <div class="form-group">
423 <label for="core-path" class="col-sm-2 control-label" data-translate>Bitcoin Core</label>
424 <div class="col-sm-10">
425 <p class="form-control no-border" data-translate-html>
426 Use path <code>m/0'/0'</code> with hardened addresses.
427 </p>
428 <p class="form-control no-border" data-translate-html>
429 For more info see the
430 <a href="https://github.com/bitcoin/bitcoin/pull/8035" target="_blank">Bitcoin Core BIP32 implementation</a>
431 </p>
432 </div>
433 </div>
434 <div class="form-group">
435 <label for="core-path" class="col-sm-2 control-label" data-translate>Multibit</label>
436 <div class="col-sm-10">
437 <p class="form-control no-border">
438 <span data-translate-html>Use path <code>m/0'/0</code>.</span>
439 </p>
440 <p class="form-control no-border">
441 <span data-translate>For more info see</span>
442 <a href="https://multibit.org/" target="_blank">MultiBit HD</a>
443 </p>
444 </div>
445 </div>
446 <div class="form-group">
447 <label class="col-sm-2 control-label" data-translate>Block Explorers</label>
448 <div class="col-sm-10">
449 <p class="form-control no-border">
450 <span data-translate-html>Use path <code>m/44'/0'/0'</code>.</span>
451 <span data-translate-html>Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.</span>
452 </p>
453 <p class="form-control no-border">
454 <span data-translate>Can be used with</span>:
455 <a href="https://blockchain.info/" target="_blank">blockchain.info</a>
456 </p>
457 </div>
458 </div>
459 </form>
460 </div>
461 <div id="bip49" class="tab-pane">
462 <form class="form-horizontal" role="form">
463 <br>
464 <div class="unavailable hidden">
465 <div class="form-group">
466 <div class="col-sm-2"></div>
467 <div class="col-sm-10">
468 <p data-translate>BIP49 is unavailable for this coin.</p>
469 </div>
470 </div>
471 </div>
472 <div class="available">
473 <div class="col-sm-2"></div>
474 <div class="col-sm-10">
475 <p data-translate-html>
476 For more info see the
477 <a href="https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki" target="_blank">BIP49 spec</a>.
478 </p>
479 </div>
480 <div class="form-group">
481 <label for="purpose" class="col-sm-2 control-label">
482 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
483 </label>
484 <div class="col-sm-10">
485 <input id="purpose" type="text" class="purpose form-control" value="49" readonly>
486 </div>
487 </div>
488 <div class="form-group">
489 <label for="coin" class="col-sm-2 control-label">
490 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
491 </label>
492 <div class="col-sm-10">
493 <input id="coin" type="text" class="coin form-control" value="0" readonly>
494 </div>
495 </div>
496 <div class="form-group">
497 <label for="account" class="col-sm-2 control-label">
498 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
499 </label>
500 <div class="col-sm-10">
501 <input id="account" type="text" class="account form-control" value="0">
502 </div>
503 </div>
504 <div class="form-group">
505 <label for="change" class="col-sm-2 control-label">
506 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
507 </label>
508 <div class="col-sm-10">
509 <input id="change" type="text" class="change form-control" value="0">
510 </div>
511 </div>
512 <div class="form-group">
513 <label class="col-sm-2 control-label">
514 </label>
515 <div class="col-sm-10">
516 <p data-translate>The account extended keys can be used for importing to most BIP49 compatible wallets.</p>
517 </div>
518 </div>
519 <div class="form-group">
520 <label for="account-xprv" class="col-sm-2 control-label">
521 <span data-translate>Account Extended Private Key</span>
522 </label>
523 <div class="col-sm-10">
524 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
525 </div>
526 </div>
527 <div class="form-group">
528 <label for="account-xpub" class="col-sm-2 control-label">
529 <span data-translate>Account Extended Public Key</span>
530 </label>
531 <div class="col-sm-10">
532 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
533 </div>
534 </div>
535 <div class="form-group">
536 <label class="col-sm-2 control-label">
537 </label>
538 <div class="col-sm-10">
539 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
540 </div>
541 </div>
542 <div class="form-group">
543 <label for="bip49-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
544 <div class="col-sm-10">
545 <input id="bip49-path" type="text" class="path form-control" value="m/49'/0'/0'/0" readonly="readonly">
546 </div>
547 </div>
548 </div>
549 </form>
550 </div>
551 </div>
552 <form class="form-horizontal" role="form">
553 <div class="form-group">
554 <label for="extended-priv-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Private Key</label>
555 <div class="col-sm-10">
556 <textarea id="extended-priv-key" class="extended-priv-key form-control" readonly="readonly" data-show-qr></textarea>
557 </div>
558 </div>
559 <div class="form-group">
560 <label for="extended-pub-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Public Key</label>
561 <div class="col-sm-10">
562 <textarea id="extended-pub-key" class="extended-pub-key form-control" readonly="readonly" data-show-qr></textarea>
563 </div>
564 </div>
565 </form>
566 </div>
567 </div>
568
569 <hr>
570
571 <div class="row">
572 <div class="col-md-12">
573 <h2>Derived Addresses</h2>
574 <p data-translate>Note these addreses are derived from the BIP32 Extended Key</p>
575 <table class="table table-striped">
576 <thead>
577 <th>
578 <div class="input-group">
579 <span data-translate>Path</span>&nbsp;&nbsp;
580 <button class="index-toggle" data-translate>Toggle</button>
581 </div>
582 </th>
583 <th>
584 <div class="input-group">
585 <span data-translate>Address</span>&nbsp;&nbsp;
586 <button class="address-toggle" data-translate>Toggle</button>
587 </div>
588 </th>
589 <th>
590 <div class="input-group">
591 <span data-translate>Public Key</span>&nbsp;&nbsp;
592 <button class="public-key-toggle" data-translate>Toggle</button>
593 </div>
594 </th>
595 <th>
596 <div class="input-group">
597 <span data-translate>Private Key</span>&nbsp;&nbsp;
598 <button class="private-key-toggle" data-translate>Toggle</button>
599 </div>
600 </th>
601 </thead>
602 <tbody class="addresses monospace">
603 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
604 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
605 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
606 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
607 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
608 </tbody>
609 </table>
610 </div>
611 </div>
612 <span data-translate>Show more rows</span>:
613 <input type="number" class="rows-to-add" value="20">
614 <button class="more" data-translate>Show</button>
615
616 <hr>
617
618 <div class="row">
619 <div class="col-md-12">
620 <h2 data-translate>More info</h2>
621 <h3>BIP39 <span class="small" data-translate>Mnemonic code for generating deterministic keys</span></h3>
622 <p data-translate-html>
623 Read more at the
624 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a>
625 </p>
626 <h3>BIP32 <span class="small" data-translate>Hierarchical Deterministic Wallets</span></h3>
627 <p data-translate-html>
628 Read more at the
629 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a>
630 </p>
631 <p data-translate-html>
632 See the demo at
633 <a href="http://bip32.org/" target="_blank">bip32.org</a>
634 </p>
635 <h3>BIP44 <span class="small" data-translate>Multi-Account Hierarchy for Deterministic Wallets</span></h3>
636 <p data-translate-html>
637 Read more at the
638 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a>
639 </p>
640 <h3 data-translate>Private Keys</h3>
641 <p>
642 <span data-translate-html>
643 Use private keys at
644 <a href="https://web.archive.org/web/20150707020924/https://brainwallet.org/" target="_blank">brainwallet.org</a>.
645 </span>
646 <span data-translate>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span>
647 </p>
648 <h3 id="entropy-notes" data-translate>Entropy</h3>
649 <p>
650 <span data-translate-html>
651 Entropy values must be sourced from a
652 <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>.
653 </span>
654 <span data-translate>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span>
655 <span data-translate-html>
656 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address,
657 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't
658 random enough for the needs of this tool.
659 </span>
660 </p>
661 <p>
662 <strong><span data-translate>Do not store entropy.</span></strong>
663 </p>
664 <p>
665 <span data-translate>Storing entropy (such as keeping a deck of cards in a specific shuffled order) is unreliable compared to storing a mnemonic.</span>
666 <span data-translate>Instead of storing entropy, store the mnemonic generated from the entropy.</span>
667 <span data-translate-html><a href="https://en.wikipedia.org/wiki/Steganography#Physical" target="_blank">Steganography</a> may be beneficial when storing the mnemonic.</span>
668 </p>
669 <p>
670 <span data-translate-html>
671 The random mnemonic generator on this page uses a
672 <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>.
673 </span>
674 <span data-translate>The built in random generator can generally be trusted more than your own intuition about randomness.</span>
675 <span data-translate>If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.</span>
676 <span data-translate>In that case you might choose to use your own source of entropy.</span>
677 </p>
678 <p>
679 <a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank" data-translate>You are not a good source of entropy.</a>
680 </p>
681 <h3 data-translate>License</h3>
682 <p>
683 <span data-translate-html>Please refer to <a href="https://github.com/iancoleman/bip39/blob/master/LICENSE" target="_blank">the software license</a> for more detail.
684 </span>
685 </p>
686 <p data-translate>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>
687 </div>
688 </div>
689
690 <hr>
691
692 <div class="row">
693 <div class="col-md-12">
694
695 <h2 data-translate>Offline Usage</h2>
696
697 <p data-translate>
698 You can use this tool without having to be online.
699 </p>
700 <p data-translate>
701 In your browser, select file save-as, and save this page
702 as a file.
703 </p>
704 <p data-translate>
705 Double-click that file to open it in a browser
706 on any offline computer.
707 </p>
708 <p>
709 <span data-translate>Alternatively, download the file from the repository</span>
710 -
711 <a href="https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39</a>
712 </p>
713
714 </div>
715 </div>
716
717 <hr>
718
719 <div class="row">
720 <div class="col-md-12">
721
722 <h2 data-translate>This project is 100% open-source code</h2>
723
724 <p>
725 <span data-translate>Get the source code from the repository</span>
726 -
727 <a href="https://github.com/iancoleman/bip39" target="_blank">
728 https://github.com/iancoleman/bip39
729 </a>
730 </p>
731
732 <h3 data-translate>Libraries</h3>
733
734 <p>
735 <span>BitcoinJS - </span>
736 <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank">
737 https://github.com/bitcoinjs/bitcoinjs-lib
738 </a>
739 </p>
740
741 <p>
742 <span>jsBIP39 - </span>
743 <a href="https://github.com/iancoleman/jsbip39" target="_blank">
744 https://github.com/iancoleman/jsbip39
745 </a>
746 </p>
747
748 <p>
749 <span>sjcl - </span>
750 <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank">
751 https://github.com/bitwiseshiftleft/sjcl
752 </a>
753 </p>
754
755 <p>
756 <span>jQuery - </span>
757 <a href="https://jquery.com/" target="_blank">
758 https://jquery.com/
759 </a>
760 </p>
761
762 <p>
763 <span>Twitter Bootstrap - </span>
764 <a href="http://getbootstrap.com/" target="_blank">
765 http://getbootstrap.com/
766 </a>
767 </p>
768
769 </div>
770 </div>
771
772 </div>
773
774 <div class="qr-container hidden">
775 <div class="qr-hint bg-primary hidden" data-translate>Click field to hide QR</div>
776 <div class="qr-hint bg-primary" data-translate>Click field to show QR</div>
777 <div class="qr-hider hidden">
778 <div class="qr-image"></div>
779 <div class="qr-warning bg-primary" data-translate>Caution: Scanner may keep history</div>
780 </div>
781 </div>
782
783 <div class="feedback-container">
784 <div class="feedback">Loading...</div>
785 </div>
786
787 <script type="text/template" id="address-row-template">
788 <tr>
789 <td class="index"><span></span></td>
790 <td class="address"><span data-show-qr></span></td>
791 <td class="pubkey"><span data-show-qr></span></td>
792 <td class="privkey"><span data-show-qr></span></td>
793 </tr>
794 </script>
795 <script>// From
796 // https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
797 // Required for ethereumjs-utils.js when run in phantomjs-2.1.1
798 // but is not required in any modern browsers.
799 // For more information, see
800 // https://www.bountysource.com/issues/38485709-error-rendering-plot-with-phantomjs
801
802 //----------------------------------------------------------------------
803 //
804 // ECMAScript 2015 Polyfills
805 //
806 //----------------------------------------------------------------------
807
808 (function (global) {
809 "use strict";
810
811 // Set this to always override native implementations, for testing
812 // the polyfill in browsers with partial/full ES2015 support.
813 var OVERRIDE_NATIVE_FOR_TESTING = false;
814
815 var undefined = (void 0); // Paranoia
816
817 // Helpers
818
819 function strict(o) {
820 return o === global ? undefined : o;
821 }
822
823 function hook(o, p, f) {
824 var op = o[p];
825 console.assert(typeof op === 'function', 'Hooking a non-function');
826 o[p] = function() {
827 var o = strict(this);
828 var r = f.apply(o, arguments);
829 return r !== undefined ? r : op.apply(o, arguments);
830 };
831 }
832
833 function isSymbol(s) {
834 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
835 }
836
837 function getPropertyDescriptor(target, name) {
838 var desc = Object.getOwnPropertyDescriptor(target, name);
839 var proto = Object.getPrototypeOf(target);
840 while (!desc && proto) {
841 desc = Object.getOwnPropertyDescriptor(proto, name);
842 proto = Object.getPrototypeOf(proto);
843 }
844 return desc;
845 }
846
847 var enqueue = (function(nativePromise, nativeSetImmediate) {
848 if (nativePromise)
849 return function(job) { nativePromise.resolve().then(function() { job(); }); };
850 if (nativeSetImmediate)
851 return function(job) { nativeSetImmediate(job); };
852 return function(job) { setTimeout(job, 0); };
853 }(global['Promise'], global['setImmediate']));
854
855 function define(o, p, v, override) {
856 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
857 return;
858
859 if (typeof v === 'function') {
860 // Sanity check that functions are appropriately named (where possible)
861 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
862 Object.defineProperty(o, p, {
863 value: v,
864 configurable: true,
865 enumerable: false,
866 writable: true
867 });
868 } else {
869 Object.defineProperty(o, p, {
870 value: v,
871 configurable: false,
872 enumerable: false,
873 writable: false
874 });
875 }
876 }
877
878 function set_internal(o, p, v) {
879 Object.defineProperty(o, p, {
880 value: v,
881 configurable: false,
882 enumerable: false,
883 writable: true
884 });
885 }
886
887 // Snapshot intrinsic functions
888 var $isNaN = global.isNaN,
889 $parseInt = global.parseInt,
890 $parseFloat = global.parseFloat;
891
892 var E = Math.E,
893 LOG10E = Math.LOG10E,
894 LOG2E = Math.LOG2E,
895 abs = Math.abs,
896 ceil = Math.ceil,
897 exp = Math.exp,
898 floor = Math.floor,
899 log = Math.log,
900 max = Math.max,
901 min = Math.min,
902 pow = Math.pow,
903 random = Math.random,
904 sqrt = Math.sqrt;
905
906 var orig_match = String.prototype.match,
907 orig_replace = String.prototype.replace,
908 orig_search = String.prototype.search,
909 orig_split = String.prototype.split;
910
911 // These are used for implementing the polyfills, but not exported.
912
913 // Inspired by https://gist.github.com/1638059
914 /** @constructor */
915 function EphemeronTable() {
916 var secretKey = ObjectCreate(null);
917
918 function conceal(o) {
919 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
920 Object.defineProperty(o, 'valueOf', {
921 value: (function(secretKey) {
922 return function (k) {
923 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
924 };
925 }(secretKey)),
926 configurable: true,
927 writeable: true,
928 enumerable: false
929 });
930 return secrets;
931 }
932
933 function reveal(o) {
934 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
935 return v === o ? null : v;
936 }
937
938 return {
939 clear: function() {
940 secretKey = ObjectCreate(null);
941 },
942 remove: function(key) {
943 var secrets = reveal(key);
944 if (secrets && HasOwnProperty(secrets, 'value')) {
945 delete secrets.value;
946 return true;
947 }
948 return false;
949 },
950 get: function(key, defaultValue) {
951 var secrets = reveal(key);
952 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
953 },
954 has: function(key) {
955 var secrets = reveal(key);
956 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
957 },
958 set: function(key, value) {
959 var secrets = reveal(key) || conceal(key);
960 secrets.value = value;
961 }
962 };
963 }
964
965 var empty = Object.create(null);
966
967 //----------------------------------------------------------------------
968 //
969 // ECMAScript 2015
970 // http://www.ecma-international.org/ecma-262/6.0/
971 //
972 //----------------------------------------------------------------------
973
974 // ---------------------------------------
975 // 19.4 Symbol Objects
976 // ---------------------------------------
977
978 // NOTE: Symbols are defined here - out of spec order - since we need the
979 // properties and prototype to be populated for other polyfills.
980
981 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
982
983 var symbolForKey;
984 (function() {
985 var secret = Object.create(null);
986 var symbolMap = {};
987 symbolForKey = function(k) {
988 return symbolMap[k];
989 };
990
991 var GlobalSymbolRegistry = [];
992
993 function unique(bits) {
994 return Array(bits + 1).join('x').replace(/x/g, function() {
995 return random() < 0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
996 });
997 }
998
999 // 19.4.1 The Symbol Constructor
1000 // 19.4.1.1 Symbol ( description=undefined )
1001 function Symbol(description) {
1002 if (!(this instanceof Symbol)) return new Symbol(description, secret);
1003 if (this instanceof Symbol && arguments[1] !== secret) throw TypeError();
1004
1005 var descString = description === undefined ? undefined : String(description);
1006
1007 set_internal(this, '[[SymbolData]]', unique(128));
1008 set_internal(this, '[[Description]]', descString);
1009
1010 symbolMap[this] = this;
1011 return this;
1012 }
1013
1014 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
1015 global.Symbol = Symbol;
1016
1017 // 19.4.2 Properties of the Symbol Constructor
1018
1019 // 19.4.2.1 Symbol.for (key)
1020 define(Symbol, 'for', function for_(key) {
1021 var stringKey = String(key);
1022 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
1023 var e = GlobalSymbolRegistry[i];
1024 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
1025 }
1026 var newSymbol = Symbol(key);
1027 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
1028 return newSymbol;
1029 });
1030
1031 // 19.4.2.2 Symbol.hasInstance
1032 // 19.4.2.3 Symbol.isConcatSpreadable
1033
1034 // 19.4.2.4 Symbol.iterator
1035 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
1036
1037 // 19.4.2.5 Symbol.keyFor (sym)
1038 define(Symbol, 'keyFor', function keyFor(sym) {
1039 if (!(sym instanceof Symbol)) throw TypeError();
1040 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
1041 var e = GlobalSymbolRegistry[i];
1042 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
1043 }
1044 return undefined;
1045 });
1046
1047 // 19.4.2.6 Symbol.match
1048 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
1049
1050 // 19.4.2.7 Symbol.prototype
1051
1052 // 19.4.2.8 Symbol.replace
1053 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
1054
1055 // 19.4.2.9 Symbol.search
1056 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
1057
1058 // 19.4.2.10 Symbol.species
1059
1060 // 19.4.2.11 Symbol.search
1061 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
1062
1063 // 19.4.2.12 Symbol.toPrimitive
1064
1065 // 19.4.2.13 Symbol.toStringTag
1066 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
1067
1068 // 19.4.2.14 Symbol.unscopables
1069
1070 // 19.4.3 Properties of the Symbol Prototype Object
1071 // 19.4.3.1 Symbol.prototype.constructor
1072
1073 // 19.4.3.2 Symbol.prototype.toString ( )
1074 Object.defineProperty(Symbol.prototype, 'toString', {
1075 value: function toString() {
1076 var s = strict(this);
1077 var desc = s['[[Description]]'];
1078 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
1079 },
1080 configurable: true, writeable: true, enumerable: false });
1081
1082 // 19.4.3.3 Symbol.prototype.valueOf ( )
1083 Object.defineProperty(Symbol.prototype, 'valueOf', {
1084 value: function valueOf() {
1085 // To prevent automatic string conversion:
1086 throw TypeError();
1087
1088 // Spec has approximately the following:
1089 //var s = strict(this);
1090 //if (Type(s) === 'symbol') return s;
1091 //if (Type(s) !== 'object') throw TypeError();
1092 //if (!('[[SymbolData]]' in s)) throw TypeError();
1093 //return s['[[SymbolData]]'];
1094 },
1095 configurable: true, writeable: true, enumerable: false });
1096
1097 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1098 // (Done later to polyfill partial implementations)
1099
1100 // 19.4.4 Properties of Symbol Instances
1101 }());
1102
1103 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
1104
1105 // Defined here so that other prototypes can reference it
1106 // 25.1.2 The %IteratorPrototype% Object
1107 var $IteratorPrototype$ = {};
1108
1109 //----------------------------------------
1110 // 6 ECMAScript Data Types and Values
1111 //----------------------------------------
1112
1113 // 6.1 ECMAScript Language Types
1114
1115 // "Type(x)" is used as shorthand for "the type of x"...
1116 function Type(v) {
1117 switch (typeof v) {
1118 case 'undefined': return 'undefined';
1119 case 'boolean': return 'boolean';
1120 case 'number': return 'number';
1121 case 'string': return 'string';
1122 case 'symbol': return 'symbol';
1123 default:
1124 if (v === null) return 'null';
1125 if (v instanceof global.Symbol) return 'symbol';
1126 return 'object';
1127 }
1128 }
1129
1130 // 6.1.5.1 Well-Known Symbols
1131 var $$iterator = global.Symbol.iterator,
1132 $$match = global.Symbol.match,
1133 $$replace = global.Symbol.replace,
1134 $$search = global.Symbol.search,
1135 $$split = global.Symbol.split,
1136 $$toStringTag = global.Symbol.toStringTag;
1137
1138 //----------------------------------------
1139 // 7 Abstract Operations
1140 //----------------------------------------
1141
1142 //----------------------------------------
1143 // 7.1 Type Conversion
1144 //----------------------------------------
1145
1146 // 7.1.1 ToPrimitive ( input [, PreferredType] )
1147 // just use valueOf()
1148
1149 // 7.1.2 ToBoolean ( argument )
1150 // just use Boolean()
1151
1152 // 7.1.3 ToNumber ( argument )
1153 // just use Number()
1154
1155 // 7.1.4 ToInteger ( argument )
1156 function ToInteger(n) {
1157 n = Number(n);
1158 if ($isNaN(n)) return 0;
1159 if (n === 0 || n === Infinity || n === -Infinity) return n;
1160 return ((n < 0) ? -1 : 1) * floor(abs(n));
1161 }
1162
1163 // 7.1.5 ToInt32 ( argument )
1164 function ToInt32(v) { return v >> 0; }
1165
1166 // 7.1.6 ToUint32 ( argument )
1167 function ToUint32(v) { return v >>> 0; }
1168
1169 // 7.1.7 ToInt16 ( argument )
1170 function ToInt16(v) { return (v << 16) >> 16; }
1171
1172 // 7.1.8 ToUint16 ( argument )
1173 function ToUint16(v) { return v & 0xFFFF; }
1174
1175 // 7.1.9 ToInt8 ( argument )
1176 function ToInt8(v) { return (v << 24) >> 24; }
1177
1178 // 7.1.10 ToUint8 ( argument )
1179 function ToUint8(v) { return v & 0xFF; }
1180
1181 // 7.1.11 ToUint8Clamp ( argument )
1182 function ToUint8Clamp(argument) {
1183 var number = Number(argument);
1184 if ($isNaN(number)) return 0;
1185 if (number <= 0) return 0;
1186 if (number >= 255) return 255;
1187 var f = floor(number);
1188 if ((f + 0.5) < number) return f + 1;
1189 if (number < (f + 0.5)) return f;
1190 if (f % 2) return f + 1;
1191 return f;
1192 }
1193
1194 // 7.1.12 ToString ( argument )
1195 // just use String()
1196
1197 // 7.1.13 ToObject ( argument )
1198 function ToObject(v) {
1199 if (v === null || v === undefined) throw TypeError();
1200 return Object(v);
1201 }
1202
1203 // 7.1.14 ToPropertyKey ( argument )
1204 function ToPropertyKey(v) {
1205 return String(v);
1206 }
1207
1208 // 7.1.15 ToLength ( argument )
1209 function ToLength(v) {
1210 var len = ToInteger(v);
1211 if (len <= 0) return 0;
1212 if (len === Infinity) return 0x20000000000000 - 1; // 2^53-1
1213 return min(len, 0x20000000000000 - 1); // 2^53-1
1214 }
1215
1216 // 7.1.16 CanonicalNumericIndexString ( argument )
1217
1218 //----------------------------------------
1219 // 7.2 Testing and Comparison Operations
1220 //----------------------------------------
1221
1222 // 7.2.1 RequireObjectCoercible ( argument )
1223 // 7.2.2 IsArray ( argument )
1224
1225 // 7.2.3 IsCallable ( argument )
1226 function IsCallable(o) { return typeof o === 'function'; }
1227
1228 // 7.2.4 IsConstructor ( argument )
1229 function IsConstructor(o) {
1230 // Hacks for Safari 7 TypedArray XXXConstructor objects
1231 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1232 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1233 // TODO: Can this be improved on?
1234 return typeof o === 'function';
1235 }
1236
1237 // 7.2.5 IsExtensible (O)
1238 // 7.2.6 IsInteger ( argument )
1239
1240 // 7.2.7 IsPropertyKey ( argument )
1241 function IsPropertyKey(argument) {
1242 if (Type(argument) === 'string') return true;
1243 if (Type(argument) === 'symbol') return true;
1244 return false;
1245 }
1246
1247 // 7.2.8 IsRegExp ( argument )
1248 // 7.2.5 IsConstructor ( argument )
1249
1250 // 7.2.9 SameValue(x, y)
1251 function SameValue(x, y) {
1252 if (typeof x !== typeof y) return false;
1253 switch (typeof x) {
1254 case 'undefined':
1255 return true;
1256 case 'number':
1257 if (x !== x && y !== y) return true;
1258 if (x === 0 && y === 0) return 1/x === 1/y;
1259 return x === y;
1260 case 'boolean':
1261 case 'string':
1262 case 'object':
1263 default:
1264 return x === y;
1265 }
1266 }
1267
1268 // 7.2.10 SameValueZero(x, y)
1269 function SameValueZero(x, y) {
1270 if (typeof x !== typeof y) return false;
1271 switch (typeof x) {
1272 case 'undefined':
1273 return true;
1274 case 'number':
1275 if (x !== x && y !== y) return true;
1276 return x === y;
1277 case 'boolean':
1278 case 'string':
1279 case 'object':
1280 default:
1281 return x === y;
1282 }
1283 }
1284
1285 //----------------------------------------
1286 // 7.3 Operations on Objects
1287 //----------------------------------------
1288
1289 // 7.3.1 Get (O, P)
1290 // - just use o.p or o[p]
1291
1292 // 7.3.2 GetV (V, P)
1293 function GetV(v, p) {
1294 var o = ToObject(v);
1295 return o[p];
1296 }
1297
1298 // 7.3.3 Set (O, P, V, Throw)
1299 // - just use o.p = v or o[p] = v
1300
1301
1302
1303
1304 // 7.3.9 GetMethod (O, P)
1305 function GetMethod(o, p) {
1306 var func = GetV(o, p);
1307 if (func === undefined || func === null) return undefined;
1308 if (!IsCallable(func)) throw TypeError();
1309 return func;
1310 }
1311
1312 // 7.3.10 HasProperty (O, P)
1313 function HasProperty(o, p) {
1314 while (o) {
1315 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1316 if (Type(o) !== 'object') return false;
1317 o = Object.getPrototypeOf(o);
1318 }
1319 return false;
1320 }
1321
1322 // 7.3.11 HasOwnProperty (O, P)
1323 function HasOwnProperty(o, p) {
1324 return Object.prototype.hasOwnProperty.call(o, p);
1325 }
1326
1327 //----------------------------------------
1328 // 7.4 Operations on Iterator Objects
1329 //----------------------------------------
1330
1331 // 7.4.1 GetIterator ( obj, method )
1332 function GetIterator(obj, method) {
1333 if (arguments.length < 2)
1334 method = GetMethod(obj, $$iterator);
1335 var iterator = method.call(obj);
1336 if (Type(iterator) !== 'object') throw TypeError();
1337 return iterator;
1338 }
1339
1340 // 7.4.2 IteratorNext ( iterator, value )
1341 function IteratorNext(iterator, value) {
1342 if (arguments.length < 2)
1343 var result = iterator.next();
1344 else
1345 result = iterator.next(value);
1346 if (Type(result) !== 'object') throw TypeError();
1347 return result;
1348 }
1349
1350 // 7.4.3 IteratorComplete ( iterResult )
1351 function IteratorComplete(iterResult) {
1352 console.assert(Type(iterResult) === 'object');
1353 return Boolean(iterResult.done);
1354 }
1355
1356 // 7.4.4 IteratorValue ( iterResult )
1357 function IteratorValue(iterResult) {
1358 console.assert(Type(iterResult) === 'object');
1359 return iterResult.value;
1360 }
1361
1362 // 7.4.5 IteratorStep ( iterator )
1363 function IteratorStep( iterator, value ) {
1364 var result = IteratorNext(iterator, value);
1365 var done = result['done'];
1366 if (Boolean(done) === true) return false;
1367 return result;
1368 }
1369
1370 // 7.4.6 IteratorClose( iterator, completion )
1371 function IteratorClose( iterator, completion ) {
1372 console.assert(Type(iterator) === 'object');
1373 var _return = GetMethod(iterator, 'return');
1374 if (_return === undefined) return completion;
1375 try {
1376 var innerResult = _return[iterator]();
1377 } catch (result) {
1378 // TODO: If completion.[[type]] is throw, return completion
1379 return result;
1380 }
1381 if (Type(innerResult) !== 'object') throw TypeError();
1382 return completion;
1383 }
1384
1385 // 7.4.7 CreateIterResultObject (value, done)
1386 function CreateIterResultObject(value, done) {
1387 console.assert(Type(done) === 'boolean');
1388 var obj = {};
1389 obj["value"] = value;
1390 obj["done"] = done;
1391 return obj;
1392 }
1393
1394 // 7.4.8 CreateListIterator (list)
1395 // 7.4.8.1 ListIterator next( )
1396 // 7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1397 // 7.4.9.1 CompoundIterator next( )
1398
1399 //----------------------------------------
1400 // 8 Executable Code and Execution Contexts
1401 //----------------------------------------
1402
1403 //----------------------------------------
1404 // 8.4 Jobs and Job Queues
1405 //----------------------------------------
1406
1407 // 8.4.1 EnqueueJob ( queueName, job, arguments)
1408 function EnqueueJob(queueName, job, args) {
1409 var fn = function() { job.apply(undefined, args); };
1410 enqueue(fn);
1411 }
1412
1413 // 8.4.2 NextJob result
1414 function NextJob(result) {
1415 // no-op
1416 }
1417
1418 //----------------------------------------
1419 // 9 Ordinary and Exotic Objects Behaviors
1420 //----------------------------------------
1421
1422 // 9.1.11 [[Enumerate]] ()
1423 function Enumerate(obj) {
1424 var e = [];
1425 if (Object(obj) !== obj) return e;
1426 var visited = new Set;
1427 while (obj !== null) {
1428 Object.getOwnPropertyNames(obj).forEach(function(name) {
1429 if (!visited.has(name)) {
1430 var desc = Object.getOwnPropertyDescriptor(obj, name);
1431 if (desc) {
1432 visited.add(name);
1433 if (desc.enumerable) e.push(name);
1434 }
1435 }
1436 });
1437 obj = Object.getPrototypeOf(obj);
1438 }
1439 return e[$$iterator]();
1440 }
1441
1442 // 9.1.12 [[OwnPropertyKeys]] ( )
1443 function OwnPropertyKeys(o) {
1444 return Object.getOwnPropertyNames(o);
1445 }
1446
1447 // 9.1.13 ObjectCreate(proto, internalSlotsList)
1448 function ObjectCreate(proto, internalSlotsList) {
1449 return Object.create(proto, internalSlotsList);
1450 }
1451
1452 // ---------------------------------------
1453 // 19 Fundamental Objects
1454 // ---------------------------------------
1455
1456 // ---------------------------------------
1457 // 19.1 Object Objects
1458 // ---------------------------------------
1459
1460 // 19.1.1 The Object Constructor
1461 // 19.1.1.1 Object ( [ value ] )
1462 // 19.1.2 Properties of the Object Constructor
1463 // 19.1.2.1 Object.assign ( target, ...sources )
1464 define(
1465 Object, 'assign',
1466 function assign(target, /*...*/sources) {
1467 var to = ToObject(target);
1468 if (arguments.length < 2) return to;
1469
1470 var sourcesIndex = 1;
1471 while (sourcesIndex < arguments.length) {
1472 var nextSource = arguments[sourcesIndex++];
1473 if (nextSource === undefined || nextSource === null) {
1474 var keys = [];
1475 } else {
1476 var from = ToObject(nextSource);
1477 keys = OwnPropertyKeys(from);
1478 }
1479 for (var keysIndex = 0; keysIndex < keys.length; ++keysIndex) {
1480 var nextKey = keys[keysIndex];
1481 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1482 if (desc !== undefined && desc.enumerable) {
1483 var propValue = from[nextKey];
1484 to[nextKey] = propValue;
1485 }
1486 }
1487 }
1488 return to;
1489 });
1490
1491 // 19.1.2.2 Object.create ( O [ , Properties ] )
1492 // 19.1.2.3 Object.defineProperties ( O, Properties )
1493 // 19.1.2.4 Object.defineProperty ( O, P, Attributes )
1494 // 19.1.2.5 Object.freeze ( O )
1495 // 19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1496
1497 (function() {
1498 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1499 $getOwnPropertyNames = Object.getOwnPropertyNames,
1500 $keys = Object.keys,
1501 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1502
1503 function isStringKey(k) { return !symbolForKey(k); }
1504
1505 // 19.1.2.7 Object.getOwnPropertyNames ( O )
1506 define(
1507 Object, 'getOwnPropertyNames',
1508 function getOwnPropertyNames(o) {
1509 if (Object.prototype.toString.call(o) === '[object Window]') {
1510 // Workaround for cross-realm calling by IE itself.
1511 // https://github.com/inexorabletash/polyfill/issues/96
1512 try {
1513 return $getOwnPropertyNames(o).filter(isStringKey);
1514 } catch (_) {
1515 return $window_names.slice();
1516 }
1517 }
1518 return $getOwnPropertyNames(o).filter(isStringKey);
1519 }, !nativeSymbols);
1520
1521 // 19.1.2.8 Object.getOwnPropertySymbols ( O )
1522 define(
1523 Object, 'getOwnPropertySymbols',
1524 function getOwnPropertySymbols(o) {
1525 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1526 }, !nativeSymbols);
1527
1528 // 19.1.2.14 Object.keys ( O )
1529 define(
1530 Object, 'keys',
1531 function keys(o) {
1532 return $keys(o).filter(isStringKey);
1533 }, !nativeSymbols);
1534 }());
1535
1536 // 19.1.2.9 Object.getPrototypeOf ( O )
1537 // 19.1.2.10 Object.is ( value1, value2 )
1538 define(
1539 Object, 'is',
1540 function is(value1, value2) {
1541 return SameValue(value1, value2);
1542 });
1543
1544 // 19.1.2.11 Object.isExtensible ( O )
1545 // 19.1.2.12 Object.isFrozen ( O )
1546 // 19.1.2.13 Object.isSealed ( O )
1547
1548 // 19.1.2.14 Object.keys ( O )
1549 // see above
1550
1551 // 19.1.2.15 Object.preventExtensions ( O )
1552 // 19.1.2.16 Object.prototype
1553 // 19.1.2.17 Object.seal ( O )
1554
1555 // 19.1.2.18 Object.setPrototypeOf ( O, proto )
1556 define(
1557 Object, 'setPrototypeOf',
1558 function setPrototypeOf(o, proto) {
1559 if (Type(o) !== 'object') throw TypeError();
1560 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1561 o.__proto__ = proto;
1562 return o;
1563 }
1564 );
1565
1566 // 19.1.3 Properties of the Object Prototype Object
1567 // 19.1.3.1 Object.prototype.constructor
1568 // 19.1.3.2 Object.prototype.hasOwnProperty ( V )
1569 // 19.1.3.3 Object.prototype.isPrototypeOf ( V )
1570 // 19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1571 // 19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1572 // 19.1.3.6 Object.prototype.toString ( )
1573 hook(Object.prototype, 'toString',
1574 function() {
1575 var o = strict(this);
1576 if (o === Object(o) && $$toStringTag in o) {
1577 return '[object ' + o[$$toStringTag] + ']';
1578 }
1579 return undefined;
1580 });
1581
1582 // 19.1.3.7 Object.prototype.valueOf ( )
1583 // 19.1.4 Properties of Object Instances
1584
1585 // ---------------------------------------
1586 // 19.2 Function Objects
1587 // ---------------------------------------
1588
1589 // 19.2.1 The Function Constructor
1590 // 19.2.1.1 Function ( p1, p2, … , pn, body )
1591 // 19.2.2 Properties of the Function Constructor
1592 // 19.2.2.1 Function.length
1593 // 19.2.2.2 Function.prototype
1594 // 19.2.3 Properties of the Function Prototype Object
1595 // 19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1596 // 19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1597 // 19.2.3.3 Function.prototype.call (thisArg , ...args)
1598 // 19.2.3.4 Function.prototype.constructor
1599 // 19.2.3.5 Function.prototype.toString ( )
1600 // 19.2.3.6 Function.prototype[@@hasInstance] ( V )
1601 // 19.2.4 Function Instances
1602 // 19.2.4.1 length
1603 // 19.2.4.2 name
1604 // 19.2.4.3 prototype
1605
1606 // (No polyfillable changes from ES5)
1607
1608 // ---------------------------------------
1609 // 19.3 Boolean Objects
1610 // ---------------------------------------
1611
1612 // 19.3.1 The Boolean Constructor
1613 // 19.3.1.1 Boolean ( value )
1614 // 19.3.2 Properties of the Boolean Constructor
1615 // 19.3.2.1 Boolean.prototype
1616 // 19.3.3 Properties of the Boolean Prototype Object
1617 // 19.3.3.1 Boolean.prototype.constructor
1618 // 19.3.3.2 Boolean.prototype.toString ( )
1619 // 19.3.3.3 Boolean.prototype.valueOf ( )
1620 // 19.3.4 Properties of Boolean Instances
1621
1622 // (No polyfillable changes from ES5)
1623
1624 // ---------------------------------------
1625 // 19.4 Symbol Objects
1626 // ---------------------------------------
1627
1628 // Moved earlier in this script, so that other polyfills can depend on them.
1629
1630 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1631 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1632
1633 // ---------------------------------------
1634 // 19.5 Error Objects
1635 // ---------------------------------------
1636
1637 // 19.5.1 The Error Constructor
1638 // 19.5.1.1 Error ( message )
1639 // 19.5.1.2 new Error( ...argumentsList )
1640 // 19.5.2 Properties of the Error Constructor
1641 // 19.5.2.1 Error.prototype
1642 // 19.5.3 Properties of the Error Prototype Object
1643 // 19.5.3.1 Error.prototype.constructor
1644 // 19.5.3.2 Error.prototype.message
1645 // 19.5.3.3 Error.prototype.name
1646 // 19.5.3.4 Error.prototype.toString ( )
1647 // 19.5.4 Properties of Error Instances
1648 // 19.5.5 Native Error Types Used in This Standard
1649 // 19.5.5.1 EvalError
1650 // 19.5.5.2 RangeError
1651 // 19.5.5.3 ReferenceError
1652 // 19.5.5.4 SyntaxError
1653 // 19.5.5.5 TypeError
1654 // 19.5.5.6 URIError
1655 // 19.5.6 NativeError Object Structure
1656 // 19.5.6.1 NativeError Constructors
1657 // 19.5.6.1.1 NativeError ( message )
1658 // 19.5.6.1.2 new NativeError ( ...argumentsList )
1659 // 19.5.6.2 Properties of the NativeError Constructors
1660 // 19.5.6.2.1 NativeError.prototype
1661 // 19.5.6.3 Properties of the NativeError Prototype Objects
1662 // 19.5.6.4 Properties of NativeError Instances
1663
1664 // (No polyfillable changes from ES5)
1665
1666 // ---------------------------------------
1667 // 20 Numbers and Dates
1668 // ---------------------------------------
1669
1670 // ---------------------------------------
1671 // 20.1 Number Objects
1672 // ---------------------------------------
1673
1674 // 20.1.1 The Number Constructor
1675 // 20.1.1.1 Number ( [ value ] )
1676 // 20.1.1.2 new Number ( ...argumentsList )
1677 // 20.1.2 Properties of the Number Constructor
1678
1679 // 20.1.2.1 Number.EPSILON
1680 define(
1681 Number, 'EPSILON',
1682 (function () {
1683 var next, result;
1684 for (next = 1; 1 + next !== 1; next = next / 2)
1685 result = next;
1686 return result;
1687 }()));
1688
1689 // 20.1.2.2 Number.isFinite ( number )
1690 define(
1691 Number, 'isFinite',
1692 function isFinite(number) {
1693 if (Type(number) !== 'number') return false;
1694 if (number !== number || number === +Infinity || number === -Infinity) return false;
1695 return true;
1696 });
1697
1698 // 20.1.2.3 Number.isInteger ( number )
1699 define(
1700 Number, 'isInteger',
1701 function isInteger(number) {
1702 if (Type(number) !== 'number') return false;
1703 if (number !== number || number === +Infinity || number === -Infinity) return false;
1704 var integer = ToInteger(number);
1705 if (integer !== number) return false;
1706 return true;
1707 });
1708
1709 // 20.1.2.4 Number.isNaN ( number )
1710 define(
1711 Number, 'isNaN',
1712 function isNaN(number) {
1713 if (Type(number) !== 'number') return false;
1714 if (number !== number) return true;
1715 return false;
1716 });
1717
1718 // 20.1.2.5 Number.isSafeInteger ( number )
1719 define(
1720 Number, 'isSafeInteger',
1721 function isSafeInteger(number) {
1722 if (Type(number) !== 'number') return false;
1723 if (number !== number || number === +Infinity || number === -Infinity) return false;
1724 var integer = ToInteger(number);
1725 if (integer !== number) return false;
1726 if (abs(integer) <= (0x20000000000000 - 1)) // 2^53-1
1727 return true;
1728 return false;
1729 });
1730
1731 // 20.1.2.6 Number.MAX_SAFE_INTEGER
1732 define(
1733 Number, 'MAX_SAFE_INTEGER',
1734 9007199254740991); // 2^53-1
1735
1736 // 20.1.2.7 Number.MAX_VALUE
1737
1738 // 20.1.2.8 Number.MIN_SAFE_INTEGER
1739 define(
1740 Number, 'MIN_SAFE_INTEGER',
1741 -9007199254740991); // -2^53+1
1742
1743 // 20.1.2.9 Number.MIN_VALUE
1744 // 20.1.2.10 Number.NaN
1745 // 20.1.2.11 Number.NEGATIVE_INFINITY
1746
1747 // 20.1.2.12 Number.parseFloat ( string )
1748 define(Number, 'parseFloat', $parseFloat);
1749
1750 // 20.1.2.13 Number.parseInt ( string, radix )
1751 define(Number, 'parseInt', $parseInt);
1752
1753 // 20.1.2.14 Number.POSITIVE_INFINITY
1754 // 20.1.2.15 Number.prototype
1755
1756 // 20.1.3 Properties of the Number Prototype Object
1757 // 20.1.3.1 Number.prototype.constructor
1758 // 20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1759 // 20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1760 // 20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1761 // 20.1.3.5 Number.prototype.toPrecision ( precision )
1762 // 20.1.3.6 Number.prototype.toString ( [ radix ] )
1763 // 20.1.3.7 Number.prototype.valueOf ( )
1764 // 20.1.4 Properties of Number Instances
1765
1766 // ---------------------------------------
1767 // 20.2 The Math Object
1768 // ---------------------------------------
1769
1770 // 20.2.1 Value Properties of the Math Object
1771 // 20.2.1.1 Math.E
1772 // 20.2.1.2 Math.LN10
1773 // 20.2.1.3 Math.LN2
1774 // 20.2.1.4 Math.LOG10E
1775 // 20.2.1.5 Math.LOG2E
1776 // 20.2.1.6 Math.PI
1777 // 20.2.1.7 Math.SQRT1_2
1778 // 20.2.1.8 Math.SQRT2
1779
1780 // 20.2.1.9 Math [ @@toStringTag ]
1781 define(Math, $$toStringTag, 'Math');
1782
1783 // 20.2.2 Function Properties of the Math Object
1784 // 20.2.2.1 Math.abs ( x )
1785 // 20.2.2.2 Math.acos ( x )
1786
1787 // 20.2.2.3 Math.acosh(x)
1788 define(
1789 Math, 'acosh',
1790 function acosh(x) {
1791 x = Number(x);
1792 return log(x + sqrt(x * x - 1));
1793 });
1794
1795 // 20.2.2.4 Math.asin ( x )
1796
1797 // 20.2.2.5 Math.asinh( x )
1798 define(
1799 Math, 'asinh',
1800 function asinh(x) {
1801 x = Number(x);
1802 if (SameValue(x, -0)) {
1803 return x;
1804 }
1805 var s = sqrt(x * x + 1);
1806 return (s === -x) ? log(0) : log(x + s);
1807 });
1808
1809 // 20.2.2.6 Math.atan ( x )
1810
1811 // 20.2.2.7 Math.atanh( x )
1812 define(
1813 Math, 'atanh',
1814 function atanh(x) {
1815 x = Number(x);
1816 return (x === 0) ? x : log((1 + x) / (1 - x)) / 2;
1817 });
1818
1819 // 20.2.2.8 Math.atan2 ( y, x )
1820
1821 // 20.2.2.9 Math.cbrt ( x )
1822 define(
1823 Math, 'cbrt',
1824 function cbrt(x) {
1825 x = Number(x);
1826 if ($isNaN(x/x)) {
1827 return x;
1828 }
1829 var r = pow(abs(x), 1/3);
1830 var t = x/r/r;
1831 return r + (r * (t-r) / (2*r + t));
1832 });
1833
1834 // 20.2.2.10 Math.ceil ( x )
1835
1836 // 20.2.2.11 Math.clz32 ( x )
1837 define(
1838 Math, 'clz32',
1839 function clz32(x) {
1840 function clz8(x) {
1841 return (x & 0xf0) ? (x & 0x80 ? 0 : x & 0x40 ? 1 : x & 0x20 ? 2 : 3) :
1842 (x & 0x08 ? 4 : x & 0x04 ? 5 : x & 0x02 ? 6 : x & 0x01 ? 7 : 8);
1843 }
1844 x = ToUint32(x);
1845 return x & 0xff000000 ? clz8(x >> 24) :
1846 x & 0xff0000 ? clz8(x >> 16) + 8 :
1847 x & 0xff00 ? clz8(x >> 8) + 16 : clz8(x) + 24;
1848 });
1849
1850
1851
1852 // 20.2.2.12 Math.cos ( x )
1853
1854 // 20.2.2.13 Math.cosh ( x )
1855 define(
1856 Math, 'cosh',
1857 function cosh(x) {
1858 x = Number(x);
1859 return (pow(E, x) + pow(E, -x)) / 2;
1860 });
1861
1862 // 20.2.2.14 Math.exp ( x )
1863
1864 // 20.2.2.15 Math.expm1 ( x )
1865 define(
1866 Math, 'expm1',
1867 function expm1(x) {
1868 x = Number(x);
1869 // from: http://www.johndcook.com/cpp_log1p.html
1870 if (SameValue(x, -0)) {
1871 return -0;
1872 } else if (abs(x) < 1e-5) {
1873 return x + 0.5 * x * x; // two terms of Taylor expansion
1874 } else {
1875 return exp(x) - 1;
1876 }
1877 });
1878
1879 // 20.2.2.16 Math.floor ( x )
1880
1881 // 20.2.2.17 Math.fround ( x )
1882 define(
1883 Math, 'fround',
1884 function fround(x) {
1885 if ($isNaN(x)) {
1886 return NaN;
1887 }
1888 if (1/x === +Infinity || 1/x === -Infinity || x === +Infinity || x === -Infinity) {
1889 return x;
1890 }
1891 return (new Float32Array([x]))[0];
1892 });
1893
1894 // 20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
1895 define(
1896 Math, 'hypot',
1897 function hypot() {
1898 var values = [];
1899 var m = 0, sawNaN = false;
1900 for (var i = 0; i < arguments.length; ++i) {
1901 var n = abs(Number(arguments[i]));
1902 if (n === Infinity) return n;
1903 if (n !== n) sawNaN = true;
1904 if (n > m) m = n;
1905 values[i] = n;
1906 }
1907 if (sawNaN) return NaN;
1908 if (m === 0) return +0;
1909 var sum = +0;
1910 for (i = 0; i < values.length; ++i) {
1911 var r = values[i] / m;
1912 sum = sum + r * r;
1913 }
1914 return m * sqrt(sum);
1915 });
1916
1917 // 20.2.2.19 Math.imul ( x, y )
1918 define(
1919 Math, 'imul',
1920 function imul(x, y) {
1921 var a = ToUint32(x);
1922 var b = ToUint32(y);
1923 // (slow but accurate)
1924 var ah = (a >>> 16) & 0xffff;
1925 var al = a & 0xffff;
1926 var bh = (b >>> 16) & 0xffff;
1927 var bl = b & 0xffff;
1928 return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
1929 }, ('imul' in Math && Math.imul(1, 0x80000000) === 0) // Safari 7 bug
1930 );
1931
1932 // 20.2.2.20 Math.log ( x )
1933
1934 // 20.2.2.21 Math.log1p ( x )
1935 define(
1936 Math, 'log1p',
1937 function log1p(x) {
1938 x = Number(x);
1939 // from: http://www.johndcook.com/cpp_expm1.html
1940 if (x < -1) {
1941 return NaN;
1942 } else if (SameValue(x, -0)) {
1943 return -0;
1944 } else if (abs(x) > 1e-4) {
1945 return log(1 + x);
1946 } else {
1947 return (-0.5 * x + 1) * x;
1948 }
1949 });
1950
1951 // 20.2.2.22 Math.log10 ( x )
1952 define(
1953 Math, 'log10',
1954 function log10(x) {
1955 x = Number(x);
1956 return log(x) * LOG10E;
1957 });
1958
1959 // 20.2.2.23 Math.log2 ( x )
1960 define(
1961 Math, 'log2',
1962 function log2(x) {
1963 x = Number(x);
1964 return log(x) * LOG2E;
1965 });
1966
1967 // 20.2.2.24 Math.max ( value1, value2 , ...values )
1968 // 20.2.2.25 Math.min ( value1, value2 , ...values )
1969 // 20.2.2.26 Math.pow ( x, y )
1970 // 20.2.2.27 Math.random ( )
1971 // 20.2.2.28 Math.round ( x )
1972
1973 // 20.2.2.29 Math.sign(x)
1974 define(
1975 Math, 'sign',
1976 function sign(x) {
1977 x = Number(x);
1978 return x < 0 ? -1 : x > 0 ? 1 : x;
1979 });
1980
1981 // 20.2.2.30 Math.sin ( x )
1982
1983 // 20.2.2.31 Math.sinh( x )
1984 define(
1985 Math, 'sinh',
1986 function sinh(x) {
1987 x = Number(x);
1988 return SameValue(x, -0) ? x : (pow(E, x) - pow(E, -x)) / 2;
1989 });
1990
1991 // 20.2.2.32 Math.sqrt ( x )
1992 // 20.2.2.33 Math.tan ( x )
1993
1994 // 20.2.2.34 Math.tanh ( x )
1995 define(
1996 Math, 'tanh',
1997 function tanh(x) {
1998 x = Number(x);
1999 var n = pow(E, 2 * x) - 1,
2000 d = pow(E, 2 * x) + 1;
2001 if (SameValue(x, -0))
2002 return x;
2003 return (n === d) ? 1 : n / d; // Handle Infinity/Infinity
2004 });
2005
2006 // 20.2.2.35 Math.trunc ( x )
2007 define(
2008 Math, 'trunc',
2009 function trunc(x) {
2010 x = Number(x);
2011 return $isNaN(x) ? NaN :
2012 x < 0 ? ceil(x) : floor(x);
2013 });
2014
2015 // ---------------------------------------
2016 // 20.3 Date Objects
2017 // ---------------------------------------
2018
2019 // 20.3.1 Overview of Date Objects and Definitions of Abstract Operations
2020 // 20.3.1.1 Time Values and Time Range
2021 // 20.3.1.2 Day Number and Time within Day
2022 // 20.3.1.3 Year Number
2023 // 20.3.1.4 Month Number
2024 // 20.3.1.5 Date Number
2025 // 20.3.1.6 Week Day
2026 // 20.3.1.7 Local Time Zone Adjustment
2027 // 20.3.1.8 Daylight Saving Time Adjustment
2028 // 20.3.1.9 Local Time
2029 // 20.3.1.10 Hours, Minutes, Second, and Milliseconds
2030 // 20.3.1.11 MakeTime (hour, min, sec, ms)
2031 // 20.3.1.12 MakeDay (year, month, date)
2032 // 20.3.1.13 MakeDate (day, time)
2033 // 20.3.1.14 TimeClip (time)
2034 // 20.3.1.15 Date Time String Format
2035 // 20.3.1.15.1 Extended years
2036 // 20.3.2 The Date Constructor
2037 // 20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2038 // 20.3.2.2 Date ( value )
2039 // 20.3.2.3 Date ( )
2040 // 20.3.3 Properties of the Date Constructor
2041 // 20.3.3.1 Date.now ( )
2042 // 20.3.3.2 Date.parse (string)
2043 // 20.3.3.3 Date.prototype
2044 // 20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2045 // 20.3.4 Properties of the Date Prototype Object
2046 // 20.3.4.1 Date.prototype.constructor
2047 // 20.3.4.2 Date.prototype.getDate ( )
2048 // 20.3.4.3 Date.prototype.getDay ( )
2049 // 20.3.4.4 Date.prototype.getFullYear ( )
2050 // 20.3.4.5 Date.prototype.getHours ( )
2051 // 20.3.4.6 Date.prototype.getMilliseconds ( )
2052 // 20.3.4.7 Date.prototype.getMinutes ( )
2053 // 20.3.4.8 Date.prototype.getMonth ( )
2054 // 20.3.4.9 Date.prototype.getSeconds ( )
2055 // 20.3.4.10 Date.prototype.getTime ( )
2056 // 20.3.4.11 Date.prototype.getTimezoneOffset ( )
2057 // 20.3.4.12 Date.prototype.getUTCDate ( )
2058 // 20.3.4.13 Date.prototype.getUTCDay ( )
2059 // 20.3.4.14 Date.prototype.getUTCFullYear ( )
2060 // 20.3.4.15 Date.prototype.getUTCHours ( )
2061 // 20.3.4.16 Date.prototype.getUTCMilliseconds ( )
2062 // 20.3.4.17 Date.prototype.getUTCMinutes ( )
2063 // 20.3.4.18 Date.prototype.getUTCMonth ( )
2064 // 20.3.4.19 Date.prototype.getUTCSeconds ( )
2065 // 20.3.4.20 Date.prototype.setDate ( date )
2066 // 20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
2067 // 20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
2068 // 20.3.4.23 Date.prototype.setMilliseconds ( ms )
2069 // 20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
2070 // 20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
2071 // 20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
2072 // 20.3.4.27 Date.prototype.setTime ( time )
2073 // 20.3.4.28 Date.prototype.setUTCDate ( date )
2074 // 20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
2075 // 20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
2076 // 20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
2077 // 20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
2078 // 20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
2079 // 20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
2080 // 20.3.4.35 Date.prototype.toDateString ( )
2081 // 20.3.4.36 Date.prototype.toISOString ( )
2082 // 20.3.4.37 Date.prototype.toJSON ( key )
2083 // 20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
2084 // 20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2085 // 20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
2086 // 20.3.4.41 Date.prototype.toString ( )
2087 // 20.3.4.42 Date.prototype.toTimeString ( )
2088 // 20.3.4.43 Date.prototype.toUTCString ( )
2089 // 20.3.4.44 Date.prototype.valueOf ( )
2090 // 20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
2091 // 20.3.5 Properties of Date Instances
2092
2093 // (No polyfillable changes from ES5)
2094
2095 // ---------------------------------------
2096 // 21 Text Processing
2097 // ---------------------------------------
2098
2099 var string_regexp_dispatch = (function() {
2100 var faux = {}, secret = Symbol();
2101 faux[Symbol.match] = function() { return secret; };
2102 return ("").match(faux) === secret;
2103 }());
2104
2105 // 21.1 String Objects
2106 // 21.1.1 The String Constructor
2107 // 21.1.1.1 String ( value )
2108 // 21.1.2 Properties of the String Constructor
2109 // 21.1.2.1 String.fromCharCode ( ...codeUnits )
2110
2111 // 21.1.2.2 String.fromCodePoint ( ...codePoints )
2112 define(
2113 String, 'fromCodePoint',
2114 function fromCodePoint(/*...codePoints*/) {
2115 var codePoints = arguments,
2116 length = codePoints.length,
2117 elements = [],
2118 nextIndex = 0;
2119 while (nextIndex < length) {
2120 var next = codePoints[nextIndex];
2121 var nextCP = Number(next);
2122 if (!SameValue(nextCP, ToInteger(nextCP)) ||
2123 nextCP < 0 || nextCP > 0x10FFFF) {
2124 throw RangeError('Invalid code point ' + nextCP);
2125 }
2126 if (nextCP < 0x10000) {
2127 elements.push(String.fromCharCode(nextCP));
2128 } else {
2129 nextCP -= 0x10000;
2130 elements.push(String.fromCharCode((nextCP >> 10) + 0xD800));
2131 elements.push(String.fromCharCode((nextCP % 0x400) + 0xDC00));
2132 }
2133 nextIndex += 1;
2134 }
2135 return elements.join('');
2136 });
2137
2138 // 21.1.2.3 String.prototype
2139
2140 // 21.1.2.4 String.raw ( template , ...substitutions )
2141 define(
2142 String, 'raw',
2143 function raw(template /*, ...substitutions*/) {
2144 var substitutions = [].slice.call(arguments, 1);
2145
2146 var cooked = Object(template);
2147 var rawValue = cooked['raw'];
2148 var raw = Object(rawValue);
2149 var len = raw['length'];
2150 var literalSegments = ToLength(len);
2151 if (literalSegments <= 0) return '';
2152 var stringElements = [];
2153 var nextIndex = 0;
2154 while (true) {
2155 var next = raw[nextIndex];
2156 var nextSeg = String(next);
2157 stringElements.push(nextSeg);
2158 if (nextIndex + 1 === literalSegments)
2159 return stringElements.join('');
2160 next = substitutions[nextIndex];
2161 var nextSub = String(next);
2162 stringElements.push(nextSub);
2163 nextIndex = nextIndex + 1;
2164 }
2165 });
2166
2167 // See https://githib.com/inexorabletash/uate for a more useful version.
2168
2169 // 21.1.3 Properties of the String Prototype Object
2170 // 21.1.3.1 String.prototype.charAt ( pos )
2171 // 21.1.3.2 String.prototype.charCodeAt ( pos )
2172
2173 // 21.1.3.3 String.prototype.codePointAt ( pos )
2174 define(
2175 String.prototype, 'codePointAt',
2176 function codePointAt(pos) {
2177 var o = strict(this);
2178 var s = String(o);
2179 var position = ToInteger(pos);
2180 var size = s.length;
2181 if (position < 0 || position >= size) return undefined;
2182 var first = s.charCodeAt(position);
2183 if (first < 0xD800 || first > 0xDBFF || position + 1 === size) return first;
2184 var second = s.charCodeAt(position + 1);
2185 if (second < 0xDC00 || second > 0xDFFF) return first;
2186 return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
2187 });
2188
2189 // 21.1.3.4 String.prototype.concat ( ...args )
2190 // 21.1.3.5 String.prototype.constructor
2191
2192 // 21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2193 define(
2194 String.prototype, 'endsWith',
2195 function endsWith(searchString) {
2196 var endPosition = arguments[1];
2197
2198 var o = strict(this);
2199 var s = String(o);
2200 var searchStr = String(searchString);
2201 var len = s.length;
2202 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2203 var end = min(max(pos, 0), len);
2204 var searchLength = searchStr.length;
2205 var start = end - searchLength;
2206 if (start < 0) return false;
2207 if (s.substring(start, start + searchLength) === searchStr) return true;
2208 return false;
2209 });
2210
2211 // 21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2212 define(
2213 String.prototype, 'includes',
2214 function includes(searchString) {
2215 var position = arguments[1];
2216
2217 var o = strict(this);
2218 var s = String(o);
2219 var searchStr = String(searchString);
2220 var pos = ToInteger(position);
2221 var len = s.length;
2222 var start = min(max(pos, 0), len);
2223 return s.indexOf(searchStr, start) !== -1;
2224 });
2225
2226 // 21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2227 // 21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2228 // 21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2229 // 21.1.3.11 String.prototype.match ( regexp )
2230 define(
2231 String.prototype, 'match',
2232 function match(regexp) {
2233 var o = strict(this);
2234 var s = String(o);
2235 if (HasProperty(regexp, $$match)) var rx = regexp;
2236 else rx = new RegExp(regexp);
2237 return rx[$$match](s);
2238 }, !string_regexp_dispatch);
2239
2240 // 21.1.3.12 String.prototype.normalize ( [ form ] )
2241
2242 // Not practical due to table sizes; if needed, pull in:
2243 // https://github.com/walling/unorm/
2244
2245 // 21.1.3.13 String.prototype.repeat ( count )
2246 define(
2247 String.prototype, 'repeat',
2248 function repeat(count) {
2249 var o = strict(this);
2250 var s = String(o);
2251 var n = ToInteger(count);
2252 if (n < 0) throw RangeError();
2253 if (n === Infinity) throw RangeError();
2254 var t = new Array(n + 1).join(s);
2255 return t;
2256 });
2257
2258 // 21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2259 define(
2260 String.prototype, 'replace',
2261 function replace(searchValue, replaceValue) {
2262 var o = strict(this);
2263 if (HasProperty(searchValue, $$replace))
2264 return searchValue[$$replace](o, replaceValue);
2265 return orig_replace.call(o, searchValue, replaceValue);
2266 }, !string_regexp_dispatch);
2267
2268 // 21.1.3.15 String.prototype.search ( regexp )
2269 define(
2270 String.prototype, 'search',
2271 function search(regexp) {
2272 var o = strict(this);
2273 var string = String(o);
2274 if (HasProperty(regexp, $$search)) var rx = regexp;
2275 else rx = new RegExp(regexp);
2276 return rx[$$search](string);
2277 }, !string_regexp_dispatch);
2278
2279 // 21.1.3.16 String.prototype.slice ( start, end )
2280 // 21.1.3.17 String.prototype.split ( separator, limit )
2281 define(
2282 String.prototype, 'split',
2283 function split(separator, limit) {
2284 var o = strict(this);
2285 if (HasProperty(separator, $$split))
2286 return separator[$$split](o, limit);
2287 return orig_split.call(o, separator, limit);
2288 }, !string_regexp_dispatch);
2289
2290 // 21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2291 define(
2292 String.prototype, 'startsWith',
2293 function startsWith(searchString) {
2294 var position = arguments[1];
2295
2296 var o = strict(this);
2297 var s = String(o);
2298 var searchStr = String(searchString);
2299 var pos = ToInteger(position);
2300 var len = s.length;
2301 var start = min(max(pos, 0), len);
2302 var searchLength = searchStr.length;
2303 if (searchLength + start > len) return false;
2304 if (s.substring(start, start + searchLength) === searchStr) return true;
2305 return false;
2306 });
2307
2308 // 21.1.3.19 String.prototype.substring ( start, end )
2309 // 21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2310 // 21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2311 // 21.1.3.22 String.prototype.toLowerCase ( )
2312 // 21.1.3.23 String.prototype.toString ( )
2313 // 21.1.3.24 String.prototype.toUpperCase ( )
2314 // 21.1.3.25 String.prototype.trim ( )
2315 // 21.1.3.26 String.prototype.valueOf ( )
2316
2317 // 21.1.3.27 String.prototype [ @@iterator ]( )
2318 define(
2319 String.prototype, $$iterator,
2320 function entries() {
2321 return CreateStringIterator(this, 'value');
2322 });
2323
2324 // 21.1.4 Properties of String Instances
2325 // 21.1.4.1 length
2326
2327 // 21.1.5 String Iterator Objects
2328 /** @constructor */
2329 function StringIterator() {}
2330
2331 // 21.1.5.1 CreateStringIterator Abstract Operation
2332 function CreateStringIterator(string, kind) {
2333 var s = String(string);
2334 var iterator = new StringIterator;
2335 set_internal(iterator, '[[IteratedString]]', s);
2336 set_internal(iterator, '[[StringIteratorNextIndex]]', 0);
2337 set_internal(iterator, '[[StringIterationKind]]', kind);
2338 return iterator;
2339 }
2340
2341 // 21.1.5.2 The %StringIteratorPrototype% Object
2342 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2343 StringIterator.prototype = $StringIteratorPrototype$;
2344
2345 // 21.1.5.2.1 %StringIteratorPrototype%.next ( )
2346 define(
2347 $StringIteratorPrototype$, 'next',
2348 function next() {
2349 var o = ToObject(this);
2350 var s = String(o['[[IteratedString]]']),
2351 index = o['[[StringIteratorNextIndex]]'],
2352 len = s.length;
2353 if (index >= len) {
2354 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2355 return CreateIterResultObject(undefined, true);
2356 }
2357 var cp = s.codePointAt(index);
2358 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp > 0xFFFF ? 2 : 1));
2359 return CreateIterResultObject(String.fromCodePoint(cp), false);
2360 });
2361
2362 // 21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2363 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2364
2365 // 21.1.5.3 Properties of String Iterator Instances
2366
2367 // ---------------------------------------
2368 // 21.2 RegExp (Regular Expression) Objects
2369 // ---------------------------------------
2370
2371 // 21.2.1 Patterns
2372 // 21.2.2 Pattern Semantics
2373 // 21.2.2.1 Notation
2374 // 21.2.2.2 Pattern
2375 // 21.2.2.3 Disjunction
2376 // 21.2.2.4 Alternative
2377 // 21.2.2.5 Term
2378 // 21.2.2.6 Assertion
2379 // 21.2.2.7 Quantifier
2380 // 21.2.2.8 Atom
2381 // 21.2.2.9 AtomEscape
2382 // 21.2.2.10 CharacterEscape
2383 // 21.2.2.11 DecimalEscape
2384 // 21.2.2.12 CharacterClassEscape
2385 // 21.2.2.13 CharacterClass
2386 // 21.2.2.14 ClassRanges
2387 // 21.2.2.15 NonemptyClassRanges
2388 // 21.2.2.16 NonemptyClassRangesNoDash
2389 // 21.2.2.17 ClassAtom
2390 // 21.2.2.18 ClassAtomNoDash
2391 // 21.2.2.19 ClassEscape
2392 // 21.2.3 The RegExp Constructor
2393 // 21.2.3.1 RegExp ( pattern, flags )
2394 // 21.2.3.2 new RegExp( ...argumentsList )
2395 // 21.2.3.3 Abstract Operations for the RegExp Constructor
2396 // 21.2.4 Properties of the RegExp Constructor
2397 // 21.2.4.1 RegExp.prototype
2398 // 21.2.5 Properties of the RegExp Prototype Object
2399 // 21.2.5.1 RegExp.prototype.constructor
2400 // 21.2.5.2 RegExp.prototype.exec ( string )
2401
2402 // 21.2.5.3 get RegExp.prototype.flags
2403 if (!('flags' in RegExp.prototype)) {
2404 Object.defineProperty(
2405 RegExp.prototype, 'flags', {
2406 get: function() {
2407 var s = String(this);
2408 return s.substring(s.lastIndexOf('/') + 1);
2409 }
2410 });
2411 }
2412
2413 // 21.2.5.4 get RegExp.prototype.global
2414 // 21.2.5.5 get RegExp.prototype.ignoreCase
2415
2416 // 21.2.5.6 RegExp.prototype [ @@match ] ( string )
2417 define(RegExp.prototype, $$match, function(string) {
2418 var o = strict(this);
2419 return orig_match.call(string, o);
2420 });
2421
2422 // 21.2.5.7 get RegExp.prototype.multiline
2423
2424 // 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2425 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2426 var o = strict(this);
2427 return orig_replace.call(string, o, replaceValue);
2428 });
2429
2430 // 21.2.5.9 RegExp.prototype [ @@search ] ( string )
2431 define(RegExp.prototype, $$search, function(string) {
2432 var o = strict(this);
2433 return orig_search.call(string, o);
2434 });
2435
2436 // 21.2.5.10 get RegExp.prototype.source
2437
2438 // 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2439 define(RegExp.prototype, $$split, function(string, limit) {
2440 var o = strict(this);
2441 return orig_split.call(string, o, limit);
2442 });
2443
2444 // 21.2.5.12 get RegExp.prototype.sticky
2445 // 21.2.5.13 RegExp.prototype.test( S )
2446 // 21.2.5.14 RegExp.prototype.toString ( )
2447 // 21.2.5.15 get RegExp.prototype.unicode
2448
2449 // 21.2.6 Properties of RegExp Instances
2450 // 21.2.6.1 lastIndex
2451
2452 // (No polyfillable changes from ES5)
2453
2454 // ---------------------------------------
2455 // 22 Indexed Collections
2456 // ---------------------------------------
2457
2458 // ---------------------------------------
2459 // 22.1 Array Objects
2460 // ---------------------------------------
2461
2462 // 22.1.1 The Array Constructor
2463 // 22.1.1.1 Array ( )
2464 // 22.1.1.2 Array (len)
2465 // 22.1.1.3 Array (...items )
2466
2467 // 22.1.2 Properties of the Array Constructor
2468
2469 // 22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2470 define(
2471 Array, 'from',
2472 function from(items) {
2473 var mapfn = arguments[1];
2474 var thisArg = arguments[2];
2475
2476 var c = strict(this);
2477 if (mapfn === undefined) {
2478 var mapping = false;
2479 } else {
2480 if (!IsCallable(mapfn)) throw TypeError();
2481 var t = thisArg;
2482 mapping = true;
2483 }
2484 var usingIterator = GetMethod(items, $$iterator);
2485 if (usingIterator !== undefined) {
2486 if (IsConstructor(c)) {
2487 var a = new c();
2488 } else {
2489 a = new Array(0);
2490 }
2491 var iterator = GetIterator(items, usingIterator);
2492 var k = 0;
2493 while (true) {
2494 var next = IteratorStep(iterator);
2495 if (next === false) {
2496 a.length = k;
2497 return a;
2498 }
2499 var nextValue = IteratorValue(next);
2500 if (mapping)
2501 var mappedValue = mapfn.call(t, nextValue);
2502 else
2503 mappedValue = nextValue;
2504 a[k] = mappedValue;
2505 k += 1;
2506 }
2507 }
2508 var arrayLike = ToObject(items);
2509 var lenValue = arrayLike.length;
2510 var len = ToLength(lenValue);
2511 if (IsConstructor(c)) {
2512 a = new c(len);
2513 } else {
2514 a = new Array(len);
2515 }
2516 k = 0;
2517 while (k < len) {
2518 var kValue = arrayLike[k];
2519 if (mapping)
2520 mappedValue = mapfn.call(t, kValue, k);
2521 else
2522 mappedValue = kValue;
2523 a[k] = mappedValue;
2524 k += 1;
2525 }
2526 a.length = len;
2527 return a;
2528 });
2529
2530 // 22.1.2.2 Array.isArray ( arg )
2531
2532 // 22.1.2.3 Array.of ( ...items )
2533 define(
2534 Array, 'of',
2535 function of() {
2536 var items = arguments;
2537
2538 var lenValue = items.length;
2539 var len = ToUint32(lenValue);
2540 var c = strict(this), a;
2541 if (IsConstructor(c)) {
2542 a = new c(len);
2543 a = ToObject(a);
2544 } else {
2545 a = new Array(len);
2546 }
2547 var k = 0;
2548 while (k < len) {
2549 a[k] = items[k];
2550 k += 1;
2551 }
2552 a.length = len;
2553 return a;
2554 });
2555
2556 // 22.1.2.4 Array.prototype
2557 // 22.1.2.5 get Array [ @@species ]
2558 // 22.1.3 Properties of the Array Prototype Object
2559 // 22.1.3.1 Array.prototype.concat ( ...arguments )
2560 // 22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2561 // 22.1.3.2 Array.prototype.constructor
2562 // 22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2563 define(
2564 Array.prototype, 'copyWithin',
2565 function copyWithin(target, start/*, end*/) {
2566 var end = arguments[2];
2567
2568 var o = ToObject(this);
2569 var lenVal = o.length;
2570 var len = ToLength(lenVal);
2571 len = max(len, 0);
2572 var relativeTarget = ToInteger(target);
2573 var to;
2574 if (relativeTarget < 0)
2575 to = max(len + relativeTarget, 0);
2576 else
2577 to = min(relativeTarget, len);
2578 var relativeStart = ToInteger(start);
2579 var from;
2580 if (relativeStart < 0)
2581 from = max(len + relativeStart, 0);
2582 else
2583 from = min(relativeStart, len);
2584 var relativeEnd;
2585 if (end === undefined)
2586 relativeEnd = len;
2587 else
2588 relativeEnd = ToInteger(end);
2589 var final;
2590 if (relativeEnd < 0)
2591 final = max(len + relativeEnd, 0);
2592 else
2593 final = min(relativeEnd, len);
2594 var count = min(final - from, len - to);
2595 var direction;
2596 if (from < to && to < from + count) {
2597 direction = -1;
2598 from = from + count - 1;
2599 to = to + count - 1;
2600 } else {
2601 direction = 1;
2602 }
2603 while (count > 0) {
2604 var fromKey = String(from);
2605 var toKey = String(to);
2606 var fromPresent = HasProperty(o, fromKey);
2607 if (fromPresent) {
2608 var fromVal = o[fromKey];
2609 o[toKey] = fromVal;
2610 } else {
2611 delete o[toKey];
2612 }
2613 from = from + direction;
2614 to = to + direction;
2615 count = count - 1;
2616 }
2617 return o;
2618 });
2619
2620 // 22.1.3.4 Array.prototype.entries ( )
2621 var nativeArrayIteratorMethods =
2622 ('entries' in Array.prototype && 'next' in [].entries());
2623
2624 define(
2625 Array.prototype, 'entries',
2626 function entries() {
2627 return CreateArrayIterator(this, 'key+value');
2628 }, !nativeArrayIteratorMethods);
2629
2630 // 22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2631
2632 // 22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2633 define(
2634 Array.prototype, 'fill',
2635 function fill(value/*, start, end*/) {
2636 var start = arguments[1],
2637 end = arguments[2];
2638
2639 var o = ToObject(this);
2640 var lenVal = o.length;
2641 var len = ToLength(lenVal);
2642 len = max(len, 0);
2643 var relativeStart = ToInteger(start);
2644 var k;
2645 if (relativeStart < 0)
2646 k = max((len + relativeStart), 0);
2647 else
2648 k = min(relativeStart, len);
2649 var relativeEnd;
2650 if (end === undefined)
2651 relativeEnd = len;
2652 else
2653 relativeEnd = ToInteger(end);
2654 var final;
2655 if (relativeEnd < 0)
2656 final = max((len + relativeEnd), 0);
2657 else
2658 final = min(relativeEnd, len);
2659 while (k < final) {
2660 var pk = String(k);
2661 o[pk] = value;
2662 k += 1;
2663 }
2664 return o;
2665 });
2666
2667 // 22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2668
2669 // 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2670 define(
2671 Array.prototype, 'find',
2672 function find(predicate) {
2673 var o = ToObject(this);
2674 var lenValue = o.length;
2675 var len = ToInteger(lenValue);
2676 if (!IsCallable(predicate)) throw TypeError();
2677 var t = arguments.length > 1 ? arguments[1] : undefined;
2678 var k = 0;
2679 while (k < len) {
2680 var pk = String(k);
2681 var kPresent = HasProperty(o, pk);
2682 if (kPresent) {
2683 var kValue = o[pk];
2684 var testResult = predicate.call(t, kValue, k, o);
2685 if (Boolean(testResult)) {
2686 return kValue;
2687 }
2688 }
2689 ++k;
2690 }
2691 return undefined;
2692 });
2693
2694 // 22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2695 define(
2696 Array.prototype, 'findIndex',
2697 function findIndex(predicate) {
2698 var o = ToObject(this);
2699 var lenValue = o.length;
2700 var len = ToLength(lenValue);
2701 if (!IsCallable(predicate)) throw TypeError();
2702 var t = arguments.length > 1 ? arguments[1] : undefined;
2703 var k = 0;
2704 while (k < len) {
2705 var pk = String(k);
2706 var kPresent = HasProperty(o, pk);
2707 if (kPresent) {
2708 var kValue = o[pk];
2709 var testResult = predicate.call(t, kValue, k, o);
2710 if (Boolean(testResult)) {
2711 return k;
2712 }
2713 }
2714 ++k;
2715 }
2716 return -1;
2717 });
2718
2719 // 22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2720 // 22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2721 // 22.1.3.12 Array.prototype.join (separator)
2722
2723 // 22.1.3.13 Array.prototype.keys ( )
2724 define(
2725 Array.prototype, 'keys',
2726 function keys() {
2727 return CreateArrayIterator(this, 'key');
2728 }, !nativeArrayIteratorMethods);
2729
2730 // 22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2731 // 22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2732 // 22.1.3.16 Array.prototype.pop ( )
2733 // 22.1.3.17 Array.prototype.push ( ...items )
2734 // 22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2735 // 22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2736 // 22.1.3.20 Array.prototype.reverse ( )
2737 // 22.1.3.21 Array.prototype.shift ( )
2738 // 22.1.3.22 Array.prototype.slice (start, end)
2739 // 22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2740 // 22.1.3.24 Array.prototype.sort (comparefn)
2741 // 22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2742 // 22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2743 // 22.1.3.27 Array.prototype.toString ( )
2744 // 22.1.3.28 Array.prototype.unshift ( ...items )
2745
2746 // 22.1.3.29 Array.prototype.values ( )
2747 define(
2748 Array.prototype, 'values',
2749 function values() {
2750 return CreateArrayIterator(this, 'value');
2751 }, !nativeArrayIteratorMethods);
2752
2753 // 22.1.3.30 Array.prototype [ @@iterator ] ( )
2754 define(
2755 Array.prototype, $$iterator,
2756 Array.prototype.values
2757 );
2758
2759 // 22.1.3.31 Array.prototype [ @@unscopables ]
2760 // 22.1.4 Properties of Array Instances
2761 // 22.1.4.1 length
2762
2763 // 22.1.5 Array Iterator Objects
2764 function ArrayIterator() {}
2765
2766 // 22.1.5.1 CreateArrayIterator Abstract Operation
2767 function CreateArrayIterator(array, kind) {
2768 var o = ToObject(array);
2769 var iterator = new ArrayIterator;
2770 set_internal(iterator, '[[IteratedObject]]', o);
2771 set_internal(iterator, '[[ArrayIteratorNextIndex]]', 0);
2772 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2773 return iterator;
2774 }
2775
2776 // 22.1.5.2 The %ArrayIteratorPrototype% Object
2777 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
2778 ArrayIterator.prototype = $ArrayIteratorPrototype$;
2779
2780 // 22.1.5.2.1 %ArrayIteratorPrototype%. next( )
2781 define(
2782 $ArrayIteratorPrototype$, 'next',
2783 function next() {
2784 var o = strict(this);
2785 if (Type(o) !== 'object') throw TypeError();
2786 var a = o['[[IteratedObject]]'],
2787 index = o['[[ArrayIteratorNextIndex]]'],
2788 itemKind = o['[[ArrayIterationKind]]'],
2789 lenValue = a.length,
2790 len = ToUint32(lenValue),
2791 elementKey,
2792 elementValue;
2793 if (itemKind.indexOf('sparse') !== -1) {
2794 var found = false;
2795 while (!found && index < len) {
2796 elementKey = String(index);
2797 found = HasProperty(a, elementKey);
2798 if (!found) {
2799 index += 1;
2800 }
2801 }
2802 }
2803 if (index >= len) {
2804 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
2805 return CreateIterResultObject(undefined, true);
2806 }
2807 elementKey = index;
2808 set_internal(o, '[[ArrayIteratorNextIndex]]', index + 1);
2809 if (itemKind.indexOf('value') !== -1)
2810 elementValue = a[elementKey];
2811 if (itemKind.indexOf('key+value') !== -1)
2812 return CreateIterResultObject([elementKey, elementValue], false);
2813 if (itemKind.indexOf('key') !== -1)
2814 return CreateIterResultObject(elementKey, false);
2815 if (itemKind === 'value')
2816 return CreateIterResultObject(elementValue, false);
2817 throw Error('Internal error');
2818 });
2819
2820 // 22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
2821 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
2822
2823 // 22.1.5.3 Properties of Array Iterator Instances
2824
2825
2826 // ---------------------------------------
2827 // 22.2 TypedArray Objects
2828 // ---------------------------------------
2829
2830 // See typedarray.js for TypedArray polyfill
2831
2832 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
2833 'Int16Array', 'Uint16Array',
2834 'Int32Array', 'Uint32Array',
2835 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
2836 if (!($TypedArrayName$ in global))
2837 return;
2838 var $TypedArray$ = global[$TypedArrayName$];
2839
2840 // 22.2.1 The %TypedArray% Intrinsic Object
2841 // 22.2.1.1 %TypedArray% ( length )
2842 // 22.2.1.2 %TypedArray% ( typedArray )
2843 // 22.2.1.3 %TypedArray% ( object )
2844 // 22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
2845 // 22.2.1.5 %TypedArray% ( all other argument combinations )
2846 // 22.2.2 Properties of the %TypedArray% Intrinsic Object
2847
2848 // 22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
2849 define(
2850 $TypedArray$, 'from',
2851 function from(source) {
2852 var mapfn = arguments[1];
2853 var thisArg = arguments[2];
2854
2855 var c = strict(this);
2856 if (!IsConstructor(c)) throw TypeError();
2857 if (mapfn === undefined) {
2858 var mapping = false;
2859 } else {
2860 if (IsCallable(mapfn)) throw TypeError();
2861 var t = thisArg;
2862 mapping = true;
2863 }
2864 var usingIterator = GetMethod(source, $$iterator);
2865 if (usingIterator !== undefined) {
2866 var iterator = GetIterator(source, usingIterator);
2867 var values = [];
2868 var next = true;
2869 while (next !== false) {
2870 next = IteratorStep(iterator);
2871 if (next !== false) {
2872 var nextValue = IteratorValue(next);
2873 values.push(nextValue);
2874 }
2875 }
2876 var len = values.length;
2877 var newObj = new c(len);
2878 var k = 0;
2879 while (k < len) {
2880 var kValue = values.shift();
2881 if (mapping) {
2882 var mappedValue = mapfn.call(t, kValue);
2883 } else {
2884 mappedValue = kValue;
2885 }
2886 newObj[k] = mappedValue;
2887 ++k;
2888 }
2889 console.assert(values.length === 0);
2890 return newObj;
2891 }
2892 var arrayLike = ToObject(source);
2893 var lenValue = arrayLike.length;
2894 len = ToLength(lenValue);
2895 newObj = new c(len);
2896 k = 0;
2897 while (k < len) {
2898 kValue = arrayLike[k];
2899 if (mapping) {
2900 mappedValue = mapfn.call(t, kValue, k);
2901 } else {
2902 mappedValue = kValue;
2903 }
2904 newObj[k] = mappedValue;
2905 ++k;
2906 }
2907 return newObj;
2908 });
2909
2910 // 22.2.2.2 %TypedArray%.of ( ...items )
2911 define(
2912 $TypedArray$, 'of',
2913 function of() {
2914 var items = arguments;
2915
2916 var len = items.length;
2917 var c = strict(this);
2918 var newObj = new c(len);
2919 var k = 0;
2920 while (k < len) {
2921 newObj[k] = items[k];
2922 ++k;
2923 }
2924 return newObj;
2925 });
2926
2927 // 22.2.2.3 %TypedArray%.prototype
2928 // 22.2.2.4 get %TypedArray% [ @@species ]
2929 // 22.2.3 Properties of the %TypedArrayPrototype% Object
2930 // 22.2.3.1 get %TypedArray%.prototype.buffer
2931 // 22.2.3.2 get %TypedArray%.prototype.byteLength
2932 // 22.2.3.3 get %TypedArray%.prototype.byteOffset
2933 // 22.2.3.4 %TypedArray%.prototype.constructor
2934
2935 // 22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
2936 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
2937
2938 // 22.2.3.6 %TypedArray%.prototype.entries ( )
2939 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
2940
2941 // 22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
2942 define($TypedArray$.prototype, 'every', Array.prototype.every);
2943
2944 // 22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
2945 define(
2946 $TypedArray$.prototype, 'fill',
2947 //Array.prototype.fill // Doesn't work in Safari 7
2948 function fill(value/*, start, end*/) {
2949 var start = arguments[1],
2950 end = arguments[2];
2951
2952 var o = ToObject(this);
2953 var lenVal = o.length;
2954 var len = ToLength(lenVal);
2955 len = max(len, 0);
2956 var relativeStart = ToInteger(start);
2957 var k;
2958 if (relativeStart < 0) k = max((len + relativeStart), 0);
2959 else k = min(relativeStart, len);
2960 var relativeEnd;
2961 if (end === undefined) relativeEnd = len;
2962 else relativeEnd = ToInteger(end);
2963 var final;
2964 if (relativeEnd < 0) final = max((len + relativeEnd), 0);
2965 else final = min(relativeEnd, len);
2966 while (k < final) {
2967 var pk = String(k);
2968 o[pk] = value;
2969 k += 1;
2970 }
2971 return o;
2972 });
2973
2974 // 22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
2975 define(
2976 $TypedArray$.prototype, 'filter',
2977 function filter(callbackfn) {
2978 var thisArg = arguments[1];
2979
2980 var o = ToObject(this);
2981 var lenVal = o.length;
2982 var len = ToLength(lenVal);
2983 if (!IsCallable(callbackfn)) throw TypeError();
2984 var t = thisArg;
2985 var c = o.constructor;
2986 var kept = [];
2987 var k = 0;
2988 var captured = 0;
2989 while (k < len) {
2990 var kValue = o[k];
2991 var selected = callbackfn.call(t, kValue, k, o);
2992 if (selected) {
2993 kept.push(kValue);
2994 ++captured;
2995 }
2996 ++k;
2997 }
2998 var a = new c(captured);
2999 var n = 0;
3000 for (var i = 0; i < kept.length; ++i) {
3001 var e = kept[i];
3002 a[n] = e;
3003 ++n;
3004 }
3005 return a;
3006 });
3007
3008 // 22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
3009 define($TypedArray$.prototype, 'find', Array.prototype.find);
3010
3011 // 22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
3012 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
3013
3014 // 22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
3015 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
3016
3017 // 22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
3018 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
3019
3020 // 22.2.3.14 %TypedArray%.prototype.join ( separator )
3021 define($TypedArray$.prototype, 'join', Array.prototype.join);
3022
3023 // 22.2.3.15 %TypedArray%.prototype.keys ( )
3024 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
3025
3026 // 22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
3027 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
3028
3029 // 22.2.3.17 get %TypedArray%.prototype.length
3030
3031 // 22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
3032 define(
3033 $TypedArray$.prototype, 'map',
3034 function map(callbackfn) {
3035 var thisArg = arguments[1];
3036
3037 var o = ToObject(this);
3038 var lenValue = o.length;
3039 var len = ToLength(lenValue);
3040 if (!IsCallable(callbackfn)) throw TypeError();
3041 var t = thisArg;
3042 var a = undefined;
3043 var c = o.constructor;
3044 if (IsConstructor(c))
3045 a = new c(len);
3046 if (a === undefined)
3047 a = new Array(len);
3048 var k = 0;
3049 while (k < len) {
3050 var kPresent = HasProperty(o, k);
3051 if (kPresent) {
3052 var kValue = o[k];
3053 var mappedValue = callbackfn.call(t, kValue, k, o);
3054 a[k] = mappedValue;
3055 }
3056 ++k;
3057 }
3058 return a;
3059 });
3060
3061 // 22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
3062 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
3063
3064 // 22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
3065 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
3066
3067 // 22.2.3.21 %TypedArray%.prototype.reverse ( )
3068 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
3069
3070 // 22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
3071 // 22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
3072 // 22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
3073
3074 // 22.2.3.23 %TypedArray%.prototype.slice ( start, end )
3075 define(
3076 $TypedArray$.prototype, 'slice',
3077 function slice(start, end) {
3078 var o = ToObject(this);
3079 var lenVal = o.length;
3080 var len = ToLength(lenVal);
3081 var relativeStart = ToInteger(start);
3082 var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
3083 var relativeEnd = (end === undefined) ? len : ToInteger(end);
3084 var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
3085 var count = final - k;
3086 var c = o.constructor;
3087 if (IsConstructor(c)) {
3088 var a = new c(count);
3089 } else {
3090 throw TypeError();
3091 }
3092 var n = 0;
3093 while (k < final) {
3094 var kValue = o[k];
3095 a[n] = kValue;
3096 ++k;
3097 ++n;
3098 }
3099 return a;
3100 });
3101
3102 // 22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
3103 define($TypedArray$.prototype, 'some', Array.prototype.some);
3104
3105 // 22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
3106 define(
3107 $TypedArray$.prototype, 'sort',
3108 function sort() {
3109 var comparefn = arguments[0];
3110
3111 function sortCompare(x, y) {
3112 console.assert(Type(x) === 'number' && Type(y) === 'number');
3113 if (x !== x && y !== y) return +0;
3114 if (x !== x) return 1;
3115 if (y !== y) return -1;
3116 if (comparefn !== undefined) {
3117 return comparefn(x, y);
3118 }
3119 if (x < y) return -1;
3120 if (x > y) return 1;
3121 return +0;
3122 }
3123 return Array.prototype.sort.call(this, sortCompare);
3124 });
3125
3126 // 22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
3127 // 22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
3128 // 22.2.3.28 %TypedArray%.prototype.toString ( )
3129
3130 // 22.2.3.29 %TypedArray%.prototype.values ( )
3131 define($TypedArray$.prototype, 'values', Array.prototype.values);
3132
3133 // 22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
3134 define(
3135 $TypedArray$.prototype, $$iterator,
3136 $TypedArray$.prototype.values
3137 );
3138
3139 // 22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3140 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3141
3142 // 22.2.4 The TypedArray Constructors
3143 // 22.2.4.1TypedArray( ... argumentsList)
3144 // 22.2.5 Properties of the TypedArray Constructors
3145 // 22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3146 // 22.2.5.2 TypedArray.prototype
3147 // 22.2.6 Properties of TypedArray Prototype Objects
3148 // 22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3149 // 22.2.6.2 TypedArray.prototype.constructor
3150 // 22.2.7 Properties of TypedArray Instances
3151 });
3152
3153 // ---------------------------------------
3154 // 23 Keyed Collection
3155 // ---------------------------------------
3156
3157 // ---------------------------------------
3158 // 23.1 Map Objects
3159 // ---------------------------------------
3160
3161 (function() {
3162 // 23.1.1 The Map Constructor
3163
3164 // 23.1.1.1 Map ( [ iterable ] )
3165 /** @constructor */
3166 function Map(/*iterable*/) {
3167 var map = strict(this);
3168 var iterable = arguments[0];
3169
3170 if (Type(map) !== 'object') throw TypeError();
3171 if ('[[MapData]]' in map) throw TypeError();
3172
3173 if (iterable !== undefined) {
3174 var adder = map['set'];
3175 if (!IsCallable(adder)) throw TypeError();
3176 var iter = GetIterator(ToObject(iterable));
3177 }
3178 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3179 if (iter === undefined) return map;
3180 while (true) {
3181 var next = IteratorStep(iter);
3182 if (next === false)
3183 return map;
3184 var nextItem = IteratorValue(next);
3185 if (Type(nextItem) !== 'object') throw TypeError();
3186 var k = nextItem[0];
3187 var v = nextItem[1];
3188 adder.call(map, k, v);
3189 }
3190
3191 return map;
3192 }
3193
3194 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3195 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3196 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3197 (new global.Map([['a', 1]]).size !== 1))
3198 global.Map = Map;
3199
3200
3201 function MapDataIndexOf(mapData, key) {
3202 var i;
3203 if (key === key) return mapData.keys.indexOf(key);
3204 // Slow case for NaN
3205 for (i = 0; i < mapData.keys.length; i += 1)
3206 if (SameValueZero(mapData.keys[i], key)) return i;
3207 return -1;
3208 }
3209
3210 // 23.1.1.2 new Map ( ... argumentsList )
3211 // 23.1.2 Properties of the Map Constructor
3212 // 23.1.2.1 Map.prototype
3213 var $MapPrototype$ = {};
3214 Map.prototype = $MapPrototype$;
3215
3216 // 23.1.2.2 get Map [ @@species ]
3217
3218 // 23.1.3 Properties of the Map Prototype Object
3219 // 23.1.3.1 Map.prototype.clear ()
3220 define(
3221 Map.prototype, 'clear',
3222 function clear() {
3223 var m = strict(this);
3224 if (Type(m) !== 'object') throw TypeError();
3225 if (!('[[MapData]]' in m)) throw TypeError();
3226 if (m['[[MapData]]'] === undefined) throw TypeError();
3227 var entries = m['[[MapData]]'];
3228 entries.keys.length = 0;
3229 entries.values.length = 0;
3230 return undefined;
3231 });
3232
3233 // 23.1.3.2 Map.prototype.constructor
3234
3235 // 23.1.3.3 Map.prototype.delete ( key )
3236 define(
3237 Map.prototype, 'delete',
3238 function delete_(key) {
3239 var m = strict(this);
3240 if (Type(m) !== 'object') throw TypeError();
3241 if (!('[[MapData]]' in m)) throw TypeError();
3242 if (m['[[MapData]]'] === undefined) throw TypeError();
3243 var entries = m['[[MapData]]'];
3244 var i = MapDataIndexOf(entries, key);
3245 if (i < 0) return false;
3246 entries.keys[i] = empty;
3247 entries.values[i] = empty;
3248 return true;
3249 });
3250
3251 // 23.1.3.4 Map.prototype.entries ( )
3252 define(
3253 Map.prototype, 'entries',
3254 function entries() {
3255 var m = strict(this);
3256 if (Type(m) !== 'object') throw TypeError();
3257 return CreateMapIterator(m, 'key+value');
3258 });
3259
3260 // 23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3261 define(
3262 Map.prototype, 'forEach',
3263 function forEach(callbackfn /*, thisArg*/) {
3264 var thisArg = arguments[1];
3265
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
3272 if (!IsCallable(callbackfn)) {
3273 throw TypeError('First argument to forEach is not callable.');
3274 }
3275 for (var i = 0; i < entries.keys.length; ++i) {
3276 if (entries.keys[i] !== empty) {
3277 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3278 }
3279 }
3280 return undefined;
3281 });
3282
3283 // 23.1.3.6 Map.prototype.get ( key )
3284 define(
3285 Map.prototype, 'get',
3286 function get(key) {
3287 var m = strict(this);
3288 if (Type(m) !== 'object') throw TypeError();
3289 if (!('[[MapData]]' in m)) throw TypeError();
3290 if (m['[[MapData]]'] === undefined) throw TypeError();
3291 var entries = m['[[MapData]]'];
3292 var i = MapDataIndexOf(entries, key);
3293 if (i >= 0) return entries.values[i];
3294 return undefined;
3295 });
3296
3297 // 23.1.3.7 Map.prototype.has ( key )
3298 define(
3299 Map.prototype, 'has',
3300 function has(key) {
3301 var m = strict(this);
3302 if (Type(m) !== 'object') throw TypeError();
3303 if (!('[[MapData]]' in m)) throw TypeError();
3304 if (m['[[MapData]]'] === undefined) throw TypeError();
3305 var entries = m['[[MapData]]'];
3306 if (MapDataIndexOf(entries, key) >= 0) return true;
3307 return false;
3308 });
3309
3310 // 23.1.3.8 Map.prototype.keys ( )
3311 define(
3312 Map.prototype, 'keys',
3313 function keys() {
3314 var m = strict(this);
3315 if (Type(m) !== 'object') throw TypeError();
3316 return CreateMapIterator(m, 'key');
3317 });
3318
3319 // 23.1.3.9 Map.prototype.set ( key , value )
3320 define(
3321 Map.prototype, 'set',
3322 function set(key, value) {
3323 var m = strict(this);
3324 if (Type(m) !== 'object') throw TypeError();
3325 if (!('[[MapData]]' in m)) throw TypeError();
3326 if (m['[[MapData]]'] === undefined) throw TypeError();
3327 var entries = m['[[MapData]]'];
3328 var i = MapDataIndexOf(entries, key);
3329 if (i < 0) i = entries.keys.length;
3330 if (SameValue(key, -0)) key = 0;
3331 entries.keys[i] = key;
3332 entries.values[i] = value;
3333 return m;
3334 });
3335
3336 // 23.1.3.10 get Map.prototype.size
3337 Object.defineProperty(
3338 Map.prototype, 'size', {
3339 get: function() {
3340 var m = strict(this);
3341 if (Type(m) !== 'object') throw TypeError();
3342 if (!('[[MapData]]' in m)) throw TypeError();
3343 if (m['[[MapData]]'] === undefined) throw TypeError();
3344 var entries = m['[[MapData]]'];
3345 var count = 0;
3346 for (var i = 0; i < entries.keys.length; ++i) {
3347 if (entries.keys[i] !== empty)
3348 count = count + 1;
3349 }
3350 return count;
3351 }
3352 });
3353
3354 // 23.1.3.11 Map.prototype.values ( )
3355 define(
3356 Map.prototype, 'values',
3357 function values() {
3358 var m = strict(this);
3359 if (Type(m) !== 'object') throw TypeError();
3360 return CreateMapIterator(m, 'value');
3361 });
3362
3363 // 23.1.3.12 Map.prototype [ @@iterator ]( )
3364 define(
3365 Map.prototype, $$iterator,
3366 function() {
3367 var m = strict(this);
3368 if (Type(m) !== 'object') throw TypeError();
3369 return CreateMapIterator(m, 'key+value');
3370 });
3371
3372 // 23.1.3.13 Map.prototype [ @@toStringTag ]
3373 define(global.Map.prototype, $$toStringTag, 'Map');
3374
3375 // 23.1.4 Properties of Map Instances
3376 // 23.1.5 Map Iterator Objects
3377
3378 /** @constructor */
3379 function MapIterator() {}
3380
3381 // 23.1.5.1 CreateMapIterator Abstract Operation
3382 function CreateMapIterator(map, kind) {
3383 if (Type(map) !== 'object') throw TypeError();
3384 if (!('[[MapData]]' in map)) throw TypeError();
3385 if (map['[[MapData]]'] === undefined) throw TypeError();
3386 var iterator = new MapIterator;
3387 set_internal(iterator, '[[Map]]', map);
3388 set_internal(iterator, '[[MapNextIndex]]', 0);
3389 set_internal(iterator, '[[MapIterationKind]]', kind);
3390 return iterator;
3391 }
3392
3393 // 23.1.5.2 The %MapIteratorPrototype% Object
3394 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3395 MapIterator.prototype = $MapIteratorPrototype$;
3396
3397 // 23.1.5.2.1 %MapIteratorPrototype%.next ( )
3398 define(
3399 $MapIteratorPrototype$, 'next',
3400 function next() {
3401 var o = strict(this);
3402 if (Type(o) !== 'object') throw TypeError();
3403 var m = o['[[Map]]'],
3404 index = o['[[MapNextIndex]]'],
3405 itemKind = o['[[MapIterationKind]]'],
3406 entries = m['[[MapData]]'];
3407 while (index < entries.keys.length) {
3408 var e = {key: entries.keys[index], value: entries.values[index]};
3409 index = index += 1;
3410 set_internal(o, '[[MapNextIndex]]', index);
3411 if (e.key !== empty) {
3412 if (itemKind === 'key') {
3413 return CreateIterResultObject(e.key, false);
3414 } else if (itemKind === 'value') {
3415 return CreateIterResultObject(e.value, false);
3416 } else {
3417 return CreateIterResultObject([e.key, e.value], false);
3418 }
3419 }
3420 }
3421 return CreateIterResultObject(undefined, true);
3422 });
3423
3424 // 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3425 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3426
3427 // 23.1.5.3 Properties of Map Iterator Instances
3428 }());
3429
3430 // ---------------------------------------
3431 // 23.2 Set Objects
3432 // ---------------------------------------
3433
3434 (function() {
3435 // 23.2.1 The Set Constructor
3436 // 23.2.1.1 Set ( [ iterable ] )
3437
3438 /** @constructor */
3439 function Set(/*iterable*/) {
3440 var set = strict(this);
3441 var iterable = arguments[0];
3442
3443 if (Type(set) !== 'object') throw TypeError();
3444 if ('[[SetData]]' in set) throw TypeError();
3445
3446 if (iterable !== undefined) {
3447 var adder = set['add'];
3448 if (!IsCallable(adder)) throw TypeError();
3449 var iter = GetIterator(ToObject(iterable));
3450 }
3451 set_internal(set, '[[SetData]]', []);
3452 if (iter === undefined) return set;
3453 while (true) {
3454 var next = IteratorStep(iter);
3455 if (next === false)
3456 return set;
3457 var nextValue = IteratorValue(next);
3458 adder.call(set, nextValue);
3459 }
3460
3461 return set;
3462 }
3463
3464 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3465 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3466 (new global.Set([1]).size !== 1))
3467 global.Set = Set;
3468
3469 function SetDataIndexOf(setData, key) {
3470 var i;
3471 if (key === key)
3472 return setData.indexOf(key);
3473 // Slow case for NaN
3474 for (i = 0; i < setData.length; i += 1)
3475 if (SameValueZero(setData[i], key)) return i;
3476 return -1;
3477 }
3478
3479 // 23.2.1.2 new Set ( ...argumentsList )
3480 // 23.2.2 Properties of the Set Constructor
3481
3482 // 23.2.2.1 Set.prototype
3483 var $SetPrototype$ = {};
3484 Set.prototype = $SetPrototype$;
3485
3486 // 23.2.2.2 get Set [ @@species ]
3487 // 23.2.3 Properties of the Set Prototype Object
3488
3489 // 23.2.3.1 Set.prototype.add (value )
3490 define(
3491 Set.prototype, 'add',
3492 function add(value) {
3493 var s = strict(this);
3494 if (Type(s) !== 'object') throw TypeError();
3495 if (!('[[SetData]]' in s)) throw TypeError();
3496 if (s['[[SetData]]'] === undefined) throw TypeError();
3497 if (SameValue(value, -0)) value = 0;
3498 var entries = s['[[SetData]]'];
3499 var i = SetDataIndexOf(entries, value);
3500 if (i < 0) i = s['[[SetData]]'].length;
3501 s['[[SetData]]'][i] = value;
3502
3503 return s;
3504 });
3505
3506 // 23.2.3.2 Set.prototype.clear ()
3507 define(
3508 Set.prototype, 'clear',
3509 function clear() {
3510 var s = strict(this);
3511 if (Type(s) !== 'object') throw TypeError();
3512 if (!('[[SetData]]' in s)) throw TypeError();
3513 if (s['[[SetData]]'] === undefined) throw TypeError();
3514 var entries = s['[[SetData]]'];
3515 entries.length = 0;
3516 return undefined;
3517 });
3518
3519 // 23.2.3.3 Set.prototype.constructor
3520 // 23.2.3.4 Set.prototype.delete ( value )
3521 define(
3522 Set.prototype, 'delete',
3523 function delete_(value) {
3524 var s = strict(this);
3525 if (Type(s) !== 'object') throw TypeError();
3526 if (!('[[SetData]]' in s)) throw TypeError();
3527 if (s['[[SetData]]'] === undefined) throw TypeError();
3528 var entries = s['[[SetData]]'];
3529 var i = SetDataIndexOf(entries, value);
3530 if (i < 0) return false;
3531 entries[i] = empty;
3532 return true;
3533 });
3534
3535 // 23.2.3.5 Set.prototype.entries ( )
3536 define(
3537 Set.prototype, 'entries',
3538 function entries() {
3539 var s = strict(this);
3540 if (Type(s) !== 'object') throw TypeError();
3541 return CreateSetIterator(s, 'key+value');
3542 });
3543
3544 // 23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3545 define(
3546 Set.prototype, 'forEach',
3547 function forEach(callbackfn/*, thisArg*/) {
3548 var thisArg = arguments[1];
3549
3550 var s = strict(this);
3551 if (Type(s) !== 'object') throw TypeError();
3552 if (!('[[SetData]]' in s)) throw TypeError();
3553 if (s['[[SetData]]'] === undefined) throw TypeError();
3554 var entries = s['[[SetData]]'];
3555
3556 if (!IsCallable(callbackfn)) {
3557 throw TypeError('First argument to forEach is not callable.');
3558 }
3559 for (var i = 0; i < entries.length; ++i) {
3560 if (entries[i] !== empty) {
3561 callbackfn.call(thisArg, entries[i], entries[i], s);
3562 }
3563 }
3564 });
3565
3566 // 23.2.3.7 Set.prototype.has ( value )
3567 define(
3568 Set.prototype, 'has',
3569 function has(key) {
3570 var s = strict(this);
3571 if (Type(s) !== 'object') throw TypeError();
3572 if (!('[[SetData]]' in s)) throw TypeError();
3573 if (s['[[SetData]]'] === undefined) throw TypeError();
3574 var entries = s['[[SetData]]'];
3575 return SetDataIndexOf(entries, key) !== -1;
3576 });
3577
3578 // 23.2.3.8 Set.prototype.keys ( )
3579 // See Set.prototype.values
3580
3581 // 23.2.3.9 get Set.prototype.size
3582 Object.defineProperty(
3583 Set.prototype, 'size', {
3584 get: function() {
3585 var s = strict(this);
3586 if (Type(s) !== 'object') throw TypeError();
3587 if (!('[[SetData]]' in s)) throw TypeError();
3588 if (s['[[SetData]]'] === undefined) throw TypeError();
3589 var entries = s['[[SetData]]'];
3590 var count = 0;
3591 for (var i = 0; i < entries.length; ++i) {
3592 if (entries[i] !== empty)
3593 count = count + 1;
3594 }
3595 return count;
3596 }
3597 });
3598
3599 // 23.2.3.10 Set.prototype.values ( )
3600 define(
3601 Set.prototype, 'values',
3602 function values() {
3603 var s = strict(this);
3604 if (Type(s) !== 'object') throw TypeError();
3605 return CreateSetIterator(s, 'value');
3606 });
3607 // NOTE: function name is still 'values':
3608 Set.prototype.keys = Set.prototype.values;
3609
3610 // 23.2.3.11 Set.prototype [@@iterator ] ( )
3611 define(
3612 Set.prototype, $$iterator,
3613 function() {
3614 var s = strict(this);
3615 if (Type(s) !== 'object') throw TypeError();
3616 return CreateSetIterator(s);
3617 });
3618
3619 // 23.2.3.12 Set.prototype [ @@toStringTag ]
3620 define(global.Set.prototype, $$toStringTag, 'Set');
3621
3622 // 23.2.4 Properties of Set Instances
3623 // 23.2.5 Set Iterator Objects
3624 /** @constructor */
3625 function SetIterator() {}
3626
3627 // 23.2.5.1 CreateSetIterator Abstract Operation
3628 function CreateSetIterator(set, kind) {
3629 if (Type(set) !== 'object') throw TypeError();
3630 if (!('[[SetData]]' in set)) throw TypeError();
3631 if (set['[[SetData]]'] === undefined) throw TypeError();
3632 var iterator = new SetIterator;
3633 set_internal(iterator, '[[IteratedSet]]', set);
3634 set_internal(iterator, '[[SetNextIndex]]', 0);
3635 set_internal(iterator, '[[SetIterationKind]]', kind);
3636 return iterator;
3637 }
3638
3639 // 23.2.5.2 The %SetIteratorPrototype% Object
3640 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3641 SetIterator.prototype = $SetIteratorPrototype$;
3642
3643 // 23.2.5.2.1 %SetIteratorPrototype%.next( )
3644 define(
3645 $SetIteratorPrototype$, 'next',
3646 function next() {
3647 var o = strict(this);
3648 if (Type(o) !== 'object') throw TypeError();
3649 var s = o['[[IteratedSet]]'],
3650 index = o['[[SetNextIndex]]'],
3651 itemKind = o['[[SetIterationKind]]'],
3652 entries = s['[[SetData]]'];
3653 while (index < entries.length) {
3654 var e = entries[index];
3655 index = index += 1;
3656 set_internal(o, '[[SetNextIndex]]', index);
3657 if (e !== empty) {
3658 if (itemKind === 'key+value')
3659 return CreateIterResultObject([e, e], false);
3660 return CreateIterResultObject(e, false);
3661 }
3662 }
3663 return CreateIterResultObject(undefined, true);
3664 });
3665
3666 // 23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3667 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3668
3669 // 23.2.5.3 Properties of Set Iterator Instances
3670
3671 }());
3672
3673 // ---------------------------------------
3674 // 23.3 WeakMap Objects
3675 // ---------------------------------------
3676
3677 (function() {
3678 // 23.3.1 The WeakMap Constructor
3679 // 23.3.1.1 WeakMap ( [ iterable ] )
3680 /** @constructor */
3681 function WeakMap(/*iterable*/) {
3682 var map = strict(this);
3683 var iterable = arguments[0];
3684
3685 if (Type(map) !== 'object') throw TypeError();
3686 if ('[[WeakMapData]]' in map) throw TypeError();
3687
3688 if (iterable !== undefined) {
3689 var adder = map['set'];
3690 if (!IsCallable(adder)) throw TypeError();
3691 var iter = GetIterator(ToObject(iterable));
3692 }
3693 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3694 if (iter === undefined) return map;
3695 while (true) {
3696 var next = IteratorStep(iter);
3697 if (next === false)
3698 return map;
3699 var nextValue = IteratorValue(next);
3700 if (Type(nextValue) !== 'object') throw TypeError();
3701 var k = nextValue[0];
3702 var v = nextValue[1];
3703 adder.call(map, k, v);
3704 }
3705
3706 return map;
3707 }
3708
3709 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3710 global.WeakMap = WeakMap;
3711
3712 // 23.3.2 Properties of the WeakMap Constructor
3713 // 23.3.2.1 WeakMap.prototype
3714 var $WeakMapPrototype$ = {};
3715 WeakMap.prototype = $WeakMapPrototype$;
3716
3717
3718
3719 // 23.3.2.2 WeakMap[ @@create ] ( )
3720 // 23.3.3 Properties of the WeakMap Prototype Object
3721
3722 // 23.3.3.1 WeakMap.prototype.constructor
3723
3724 // 23.3.3.2 WeakMap.prototype.delete ( key )
3725 define(
3726 WeakMap.prototype, 'delete',
3727 function delete_(key) {
3728 var M = strict(this);
3729 if (Type(M) !== 'object') throw TypeError();
3730 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3731 if (Type(key) !== 'object') throw TypeError('Expected object');
3732 return M['[[WeakMapData]]'].remove(key);
3733 });
3734
3735 // 23.3.3.3 WeakMap.prototype.get ( key )
3736 define(
3737 WeakMap.prototype, 'get',
3738 function get(key, defaultValue) {
3739 var M = strict(this);
3740 if (Type(M) !== 'object') throw TypeError();
3741 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3742 if (Type(key) !== 'object') throw TypeError('Expected object');
3743 return M['[[WeakMapData]]'].get(key, defaultValue);
3744 });
3745
3746 // 23.3.3.4 WeakMap.prototype.has ( key )
3747 define(
3748 WeakMap.prototype, 'has',
3749 function has(key) {
3750 var M = strict(this);
3751 if (Type(M) !== 'object') throw TypeError();
3752 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3753 if (Type(key) !== 'object') throw TypeError('Expected object');
3754 return M['[[WeakMapData]]'].has(key);
3755 });
3756
3757 // 23.3.3.5 WeakMap.prototype.set ( key , value )
3758 define(
3759 WeakMap.prototype, 'set',
3760 function set(key, value) {
3761 var M = strict(this);
3762 if (Type(M) !== 'object') throw TypeError();
3763 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3764 if (Type(key) !== 'object') throw TypeError('Expected object');
3765 M['[[WeakMapData]]'].set(key, value);
3766 return M;
3767 });
3768
3769 // 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3770 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3771
3772 // 23.3.4 Properties of WeakMap Instances
3773
3774 // Polyfills for incomplete native implementations:
3775 (function() {
3776 var wm = new global.WeakMap();
3777 var orig = global.WeakMap.prototype.set;
3778 define(global.WeakMap.prototype, 'set', function set() {
3779 orig.apply(this, arguments);
3780 return this;
3781 }, wm.set({}, 0) !== wm);
3782 }());
3783 }());
3784
3785 // ---------------------------------------
3786 // 23.4 WeakSet Objects
3787 // ---------------------------------------
3788
3789 (function() {
3790 // 23.4.1 The WeakSet Constructor
3791 // 23.4.1.1 WeakSet ( [ iterable ] )
3792 /** @constructor */
3793 function WeakSet(/*iterable*/) {
3794 var set = strict(this);
3795 var iterable = arguments[0];
3796
3797 if (Type(set) !== 'object') throw TypeError();
3798 if ('[[WeakSetData]]' in set) throw TypeError();
3799
3800 if (iterable !== undefined) {
3801 var adder = set['add'];
3802 if (!IsCallable(adder)) throw TypeError();
3803 var iter = GetIterator(ToObject(iterable));
3804 }
3805 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
3806 if (iter === undefined) return set;
3807 while (true) {
3808 var next = IteratorStep(iter);
3809 if (next === false)
3810 return set;
3811 var nextValue = IteratorValue(next);
3812 adder.call(set, nextValue);
3813 }
3814
3815 return set;
3816 }
3817
3818 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3819 global.WeakSet = WeakSet;
3820
3821 // 23.4.2 Properties of the WeakSet Constructor
3822 // 23.4.2.1 WeakSet.prototype
3823 var $WeakSetPrototype$ = {};
3824 WeakSet.prototype = $WeakSetPrototype$;
3825
3826 // 23.4.3 Properties of the WeakSet Prototype Object
3827 // 23.4.3.1 WeakSet.prototype.add (value )
3828 define(
3829 WeakSet.prototype, 'add',
3830 function add(value) {
3831 var S = strict(this);
3832 if (Type(S) !== 'object') throw TypeError();
3833 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3834 if (Type(value) !== 'object') throw TypeError('Expected object');
3835 S['[[WeakSetData]]'].set(value, true);
3836 return S;
3837 });
3838
3839 // 23.4.3.2 WeakSet.prototype.constructor
3840 // 23.4.3.3 WeakSet.prototype.delete ( value )
3841 define(
3842 WeakSet.prototype, 'delete',
3843 function delete_(value) {
3844 var S = strict(this);
3845 if (Type(S) !== 'object') throw TypeError();
3846 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3847 if (Type(value) !== 'object') throw TypeError('Expected object');
3848 return S['[[WeakSetData]]'].remove(value);
3849 });
3850
3851 // 23.4.3.4 WeakSet.prototype.has ( value )
3852 define(
3853 WeakSet.prototype, 'has',
3854 function has(key) {
3855 var S = strict(this);
3856 if (Type(S) !== 'object') throw TypeError();
3857 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3858 if (Type(key) !== 'object') throw TypeError('Expected object');
3859 return S['[[WeakSetData]]'].has(key);
3860 });
3861
3862 // 23.4.3.5 WeakSet.prototype [ @@toStringTag ]
3863 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
3864
3865 // 23.4.4 Properties of WeakSet Instances
3866
3867 // Polyfills for incomplete native implementations:
3868 (function() {
3869 var ws = new global.WeakSet();
3870 var orig = global.WeakSet.prototype.add;
3871 define(global.WeakSet.prototype, 'add', function add() {
3872 orig.apply(this, arguments);
3873 return this;
3874 }, ws.add({}) !== ws);
3875 }());
3876 }());
3877
3878 // ---------------------------------------
3879 // 24 Structured Data
3880 // ---------------------------------------
3881
3882 // ---------------------------------------
3883 // 24.1 ArrayBuffer Objects
3884 // ---------------------------------------
3885
3886 // See typedarray.js for TypedArray polyfill
3887
3888 (function() {
3889 if (!('ArrayBuffer' in global))
3890 return;
3891
3892 // 24.1.1 Abstract Operations For ArrayBuffer Objects
3893 // 24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
3894 // 24.1.1.2 IsDetachedBuffer( arrayBuffer )
3895 // 24.1.1.3 DetachArrayBuffer( arrayBuffer )
3896 // 24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
3897 // 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
3898 // 24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
3899 // 24.1.2 The ArrayBuffer Constructor
3900 // 24.1.2.1 ArrayBuffer( length )
3901 // 24.1.3 Properties of the ArrayBuffer Constructor
3902
3903 // 24.1.3.1 ArrayBuffer.isView ( arg )
3904 define(
3905 ArrayBuffer, 'isView',
3906 function isView(arg) {
3907 if (Type(arg) !== 'object') return false;
3908 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
3909 return false;
3910 });
3911
3912 // 24.1.3.2 ArrayBuffer.prototype
3913 // 24.1.3.3 get ArrayBuffer [ @@species ]
3914 // 24.1.4 Properties of the ArrayBuffer Prototype Object
3915 // 24.1.4.1 get ArrayBuffer.prototype.byteLength
3916 // 24.1.4.2 ArrayBuffer.prototype.constructor
3917 // 24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
3918
3919 // 24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
3920 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
3921
3922 // 24.1.5 Properties of the ArrayBuffer Instances
3923 }());
3924
3925 // ---------------------------------------
3926 // 24.2 DataView Objects
3927 // ---------------------------------------
3928
3929 // See typedarray.js for TypedArray polyfill
3930
3931 (function() {
3932 if (!('DataView' in global))
3933 return;
3934
3935 // 24.2.1 Abstract Operations For DataView Objects
3936 // 24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
3937 // 24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
3938 // 24.2.2 The DataView Constructor
3939 // 24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
3940 // 24.2.3 Properties of the DataView Constructor
3941 // 24.2.3.1 DataView.prototype
3942 // 24.2.4 Properties of the DataView Prototype Object
3943 // 24.2.4.1 get DataView.prototype.buffer
3944 // 24.2.4.2 get DataView.prototype.byteLength
3945 // 24.2.4.3 get DataView.prototype.byteOffset
3946 // 24.2.4.4 DataView.prototype.constructor
3947 // 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
3948 // 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
3949 // 24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
3950 // 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
3951 // 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
3952 // 24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
3953 // 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
3954 // 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
3955 // 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
3956 // 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
3957 // 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
3958 // 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
3959 // 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
3960 // 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
3961 // 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
3962 // 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
3963
3964 // 24.2.4.21 DataView.prototype[ @@toStringTag ]
3965 define(DataView.prototype, $$toStringTag, 'DataView');
3966
3967 // 24.2.5 Properties of DataView Instances
3968 }());
3969
3970 // ---------------------------------------
3971 // 24.3 The JSON Object
3972 // ---------------------------------------
3973
3974 // 24.3.1 JSON.parse ( text [ , reviver ] )
3975 // 24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
3976 // 24.3.3 JSON [ @@toStringTag ]
3977 define(JSON, $$toStringTag, 'JSON');
3978
3979 // ---------------------------------------
3980 // 25.1 Iteration
3981 // ---------------------------------------
3982
3983 // 25.1.1 Common Iteration Interfaces
3984 // 25.1.1.1 The Iterable Interface
3985 // 25.1.1.2 The Iterator Interface
3986 // 25.1.1.3 The IteratorResult Interface
3987
3988 // 25.1.2 The %IteratorPrototype% Object
3989 // Defined earlier, so other prototypes can reference it.
3990 // 25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
3991 define($IteratorPrototype$, $$iterator, function() {
3992 return this;
3993 });
3994
3995
3996 // ---------------------------------------
3997 // 25.4 Promise Objects
3998 // ---------------------------------------
3999
4000 (function() {
4001 // 25.4 Promise Objects
4002
4003 // 25.4.1 Promise Abstract Operations
4004
4005 // 25.4.1.1 PromiseCapability Records
4006 // 25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
4007
4008 function IfAbruptRejectPromise(value, capability) {
4009 var rejectResult = capability['[[Reject]]'].call(undefined, value);
4010 return capability['[[Promise]]'];
4011 }
4012
4013 // 25.4.1.2 PromiseReaction Records
4014
4015 // 25.4.1.3 CreateResolvingFunctions ( promise )
4016
4017 function CreateResolvingFunctions(promise) {
4018 var alreadyResolved = {'[[value]]': false};
4019 var resolve = PromiseResolveFunction();
4020 set_internal(resolve, '[[Promise]]', promise);
4021 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
4022 var reject = PromiseRejectFunction();
4023 set_internal(reject, '[[Promise]]', promise);
4024 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
4025 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
4026 }
4027
4028 // 25.4.1.3.1 Promise Reject Functions
4029
4030 function PromiseRejectFunction() {
4031 var F = function(reason) {
4032 console.assert(Type(F['[[Promise]]']) === 'object');
4033 var promise = F['[[Promise]]'];
4034 var alreadyResolved = F['[[AlreadyResolved]]'];
4035 if (alreadyResolved['[[value]]']) return undefined;
4036 set_internal(alreadyResolved, '[[value]]', true);
4037 return RejectPromise(promise, reason);
4038 };
4039 return F;
4040 }
4041
4042 // 25.4.1.3.2 Promise Resolve Functions
4043
4044 function PromiseResolveFunction() {
4045 var F = function(resolution) {
4046 console.assert(Type(F['[[Promise]]']) === 'object');
4047 var promise = F['[[Promise]]'];
4048 var alreadyResolved = F['[[AlreadyResolved]]'];
4049 if (alreadyResolved['[[value]]']) return undefined;
4050 set_internal(alreadyResolved, '[[value]]', true);
4051
4052 if (SameValue(resolution, promise)) {
4053 var selfResolutionError = TypeError();
4054 return RejectPromise(promise, selfResolutionError);
4055 }
4056 if (Type(resolution) !== 'object')
4057 return FulfillPromise(promise, resolution);
4058 try {
4059 var then = resolution['then'];
4060 } catch(then) {
4061 return RejectPromise(promise, then);
4062 }
4063 if (!IsCallable(then))
4064 return FulfillPromise(promise, resolution);
4065 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
4066 return undefined;
4067 };
4068 return F;
4069 }
4070
4071 // 25.4.1.4 FulfillPromise ( promise, value )
4072
4073 function FulfillPromise(promise, value) {
4074 console.assert(promise['[[PromiseState]]'] === 'pending');
4075 var reactions = promise['[[PromiseFulfillReactions]]'];
4076 set_internal(promise, '[[PromiseResult]]', value);
4077 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4078 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4079 set_internal(promise, '[[PromiseState]]', 'fulfilled');
4080 return TriggerPromiseReactions(reactions, value);
4081 }
4082
4083 // 25.4.1.5 NewPromiseCapability ( C )
4084
4085 function NewPromiseCapability(c) {
4086 // To keep Promise hermetic, this doesn't look much like the spec.
4087 return CreatePromiseCapabilityRecord(undefined, c);
4088 }
4089
4090 // 25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
4091
4092 function CreatePromiseCapabilityRecord(promise, constructor) {
4093 // To keep Promise hermetic, this doesn't look much like the spec.
4094 console.assert(IsConstructor(constructor));
4095 var promiseCapability = {};
4096 set_internal(promiseCapability, '[[Promise]]', promise);
4097 set_internal(promiseCapability, '[[Resolve]]', undefined);
4098 set_internal(promiseCapability, '[[Reject]]', undefined);
4099 var executor = GetCapabilitiesExecutor();
4100 set_internal(executor, '[[Capability]]', promiseCapability);
4101
4102 // NOTE: Differs from spec; object is constructed here
4103 var constructorResult = promise = new constructor(executor);
4104 set_internal(promiseCapability, '[[Promise]]', promise);
4105
4106 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
4107 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
4108 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
4109 return promiseCapability;
4110 }
4111
4112 // 25.4.1.5.2 GetCapabilitiesExecutor Functions
4113
4114 function GetCapabilitiesExecutor() {
4115 var F = function(resolve, reject) {
4116 console.assert(F['[[Capability]]']);
4117 var promiseCapability = F['[[Capability]]'];
4118 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
4119 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
4120 set_internal(promiseCapability, '[[Resolve]]', resolve);
4121 set_internal(promiseCapability, '[[Reject]]', reject);
4122 return undefined;
4123 };
4124 return F;
4125 }
4126
4127 // 25.4.1.6 IsPromise ( x )
4128
4129 function IsPromise(x) {
4130 if (Type(x) !== 'object') return false;
4131 if (!('[[PromiseState]]' in x)) return false;
4132 if (x['[[PromiseState]]'] === undefined) return false;
4133 return true;
4134 }
4135
4136 // 25.4.1.7 RejectPromise ( promise, reason )
4137
4138 function RejectPromise(promise, reason) {
4139 console.assert(promise['[[PromiseState]]'] === 'pending');
4140 var reactions = promise['[[PromiseRejectReactions]]'];
4141 set_internal(promise, '[[PromiseResult]]', reason);
4142 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4143 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4144 set_internal(promise, '[[PromiseState]]', 'rejected');
4145 return TriggerPromiseReactions(reactions, reason);
4146 }
4147
4148 // 25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4149
4150 function TriggerPromiseReactions(reactions, argument) {
4151 for (var i = 0, len = reactions.length; i < len; ++i)
4152 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4153 return undefined;
4154 }
4155
4156 // 25.4.2 Promise Jobs
4157
4158 // 25.4.2.1 PromiseReactionJob ( reaction, argument )
4159
4160 function PromiseReactionJob(reaction, argument) {
4161 var promiseCapability = reaction['[[Capabilities]]'];
4162 var handler = reaction['[[Handler]]'];
4163 var handlerResult, status;
4164 try {
4165 if (handler === 'Identity') handlerResult = argument;
4166 else if (handler === 'Thrower') throw argument;
4167 else handlerResult = handler.call(undefined, argument);
4168 } catch (handlerResult) {
4169 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4170 NextJob(status); return;
4171 }
4172 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4173 NextJob(status);
4174 }
4175
4176 // 25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4177
4178 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4179 // SPEC BUG: promise vs. promiseToResolve
4180 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4181 try {
4182 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4183 resolvingFunctions['[[Reject]]']);
4184 } catch (thenCallResult) {
4185 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4186 NextJob(status); return;
4187 }
4188 NextJob(thenCallResult);
4189 }
4190
4191 // 25.4.3 The Promise Constructor
4192
4193 // 25.4.3.1 Promise ( executor )
4194
4195 function Promise(executor) {
4196 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4197 Object.defineProperty(this, '[[PromiseState]]', config);
4198 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4199 Object.defineProperty(this, '[[PromiseResult]]', config);
4200 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4201 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4202
4203 var promise = this;
4204 if (Type(promise) !== 'object') throw new TypeError();
4205 if (!('[[PromiseState]]' in promise)) throw TypeError();
4206 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4207 if (!IsCallable(executor)) throw TypeError();
4208
4209 set_internal(promise, '[[PromiseConstructor]]', Promise);
4210
4211 return InitializePromise(promise, executor);
4212 }
4213
4214 // 25.4.3.1.1 InitializePromise ( promise, executor )
4215
4216 function InitializePromise(promise, executor) {
4217 console.assert('[[PromiseState]]' in promise);
4218 console.assert(IsCallable(executor));
4219 set_internal(promise, '[[PromiseState]]', 'pending');
4220 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4221 set_internal(promise, '[[PromiseRejectReactions]]', []);
4222 var resolvingFunctions = CreateResolvingFunctions(promise);
4223 try {
4224 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4225 resolvingFunctions['[[Reject]]']);
4226 } catch (completion) {
4227 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4228 }
4229 return promise;
4230 }
4231
4232 // 25.4.4 Properties of the Promise Constructor
4233 // 25.4.4.1 Promise.all ( iterable )
4234
4235 define(Promise, 'all', function all(iterable) {
4236 var c = strict(this);
4237 var promiseCapability = NewPromiseCapability(c);
4238 try {
4239 var iterator = GetIterator(iterable);
4240 } catch (value) {
4241 promiseCapability['[[Reject]]'].call(undefined, value);
4242 return promiseCapability['[[Promise]]'];
4243 }
4244 var values = [];
4245 var remainingElementsCount = { value: 1 };
4246 var index = 0;
4247 while (true) {
4248 try {
4249 var next = IteratorStep(iterator);
4250 } catch (value) {
4251 promiseCapability['[[Reject]]'].call(undefined, value);
4252 return promiseCapability['[[Promise]]'];
4253 }
4254 if (!next) {
4255 remainingElementsCount.value -= 1;
4256 if (remainingElementsCount.value === 0) {
4257 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4258
4259
4260 }
4261 return promiseCapability['[[Promise]]'];
4262 }
4263 try {
4264 var nextValue = IteratorValue(next);
4265 } catch (value) {
4266 promiseCapability['[[Reject]]'].call(undefined, value);
4267 return promiseCapability['[[Promise]]'];
4268 }
4269 try {
4270 var nextPromise = c.resolve(nextValue);
4271 } catch (value) {
4272 promiseCapability['[[Reject]]'].call(undefined, value);
4273 return promiseCapability['[[Promise]]'];
4274 }
4275 var resolveElement = PromiseAllResolveElementFunction();
4276 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4277 set_internal(resolveElement, '[[Index]]', index);
4278 set_internal(resolveElement, '[[Values]]', values);
4279 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4280 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4281 remainingElementsCount.value += 1;
4282 try {
4283 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4284 } catch (value) {
4285 promiseCapability['[[Reject]]'].call(undefined, value);
4286 return promiseCapability['[[Promise]]'];
4287 }
4288 index += 1;
4289 }
4290 });
4291
4292 // 25.4.4.1.1 Promise.all Resolve Element Functions
4293
4294 function PromiseAllResolveElementFunction() {
4295 var F = function(x) {
4296 var alreadyCalled = F['[[AlreadyCalled]]'];
4297 if (alreadyCalled.value) return undefined;
4298 alreadyCalled.value = true;
4299 var index = F['[[Index]]'];
4300 var values = F['[[Values]]'];
4301 var promiseCapability = F['[[Capabilities]]'];
4302 var remainingElementsCount = F['[[RemainingElements]]'];
4303 try {
4304 values[index] = x;
4305 } catch (result) {
4306 promiseCapability['[[Reject]]'].call(undefined, result);
4307 return promiseCapability['[[Promise]]'];
4308 }
4309 remainingElementsCount.value -= 1;
4310 if (remainingElementsCount.value === 0)
4311 return promiseCapability['[[Resolve]]'].call(undefined, values);
4312 return undefined;
4313 };
4314 return F;
4315 }
4316
4317 // 25.4.4.2 Promise.prototype
4318
4319 Promise.prototype = {};
4320
4321 // 25.4.4.3 Promise.race ( iterable )
4322
4323 define(Promise, 'race', function race(iterable) {
4324 var c = strict(this);
4325 var promiseCapability = NewPromiseCapability(c);
4326 try {
4327 var iterator = GetIterator(iterable);
4328 } catch (value) {
4329 promiseCapability['[[Reject]]'].call(undefined, value);
4330 return promiseCapability['[[Promise]]'];
4331 }
4332 while (true) {
4333 try {
4334 var next = IteratorStep(iterator);
4335 } catch (value) {
4336 promiseCapability['[[Reject]]'].call(undefined, value);
4337 return promiseCapability['[[Promise]]'];
4338 }
4339 if (!next) return promiseCapability['[[Promise]]'];
4340 try {
4341 var nextValue = IteratorValue(next);
4342 } catch (value) {
4343 promiseCapability['[[Reject]]'].call(undefined, value);
4344 return promiseCapability['[[Promise]]'];
4345 }
4346 try {
4347 var nextPromise = c.resolve(nextValue);
4348 } catch (value) {
4349 promiseCapability['[[Reject]]'].call(undefined, value);
4350 return promiseCapability['[[Promise]]'];
4351 }
4352 try {
4353 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4354 } catch (value) {
4355 promiseCapability['[[Reject]]'].call(undefined, value);
4356 return promiseCapability['[[Promise]]'];
4357 }
4358 }
4359 });
4360
4361 // 25.4.4.4 Promise.reject ( r )
4362
4363 define(Promise, 'reject', function reject(r) {
4364 var c = strict(this);
4365 var promiseCapability = NewPromiseCapability(c);
4366 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4367 return promiseCapability['[[Promise]]'];
4368 });
4369
4370 // 25.4.4.5 Promise.resolve ( x )
4371
4372 define(Promise, 'resolve', function resolve(x) {
4373 var c = strict(this);
4374 if (IsPromise(x)) {
4375 var constructor = x['[[PromiseConstructor]]'];
4376 if (SameValue(constructor, c)) return x;
4377 }
4378 var promiseCapability = NewPromiseCapability(c);
4379 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4380 return promiseCapability['[[Promise]]'];
4381 });
4382
4383 // 25.4.4.6 Promise [ @@create ] ( )
4384 // 25.4.4.6.1 AllocatePromise ( constructor )
4385 // 25.4.5 Properties of the Promise Prototype Object
4386 // 25.4.5.1 Promise.prototype.catch ( onRejected )
4387
4388 define(Promise.prototype, 'catch', function catch_(onRejected) {
4389 var promise = this;
4390 return promise.then(undefined, onRejected);
4391 });
4392
4393 // 25.4.5.2 Promise.prototype.constructor
4394
4395 Promise.prototype.constructor = Promise;
4396
4397 // 25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4398
4399 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4400 var promise = this;
4401 if (!IsPromise(promise)) throw TypeError();
4402 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4403 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4404 var c = promise.constructor;
4405 var promiseCapability = NewPromiseCapability(c);
4406 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4407 '[[Handler]]': onFulfilled };
4408 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4409 '[[Handler]]': onRejected };
4410 if (promise['[[PromiseState]]'] === 'pending') {
4411 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4412 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4413 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4414 var value = promise['[[PromiseResult]]'];
4415 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4416 } else if (promise['[[PromiseState]]'] === 'rejected') {
4417 var reason = promise['[[PromiseResult]]'];
4418 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4419 }
4420 return promiseCapability['[[Promise]]'];
4421 });
4422
4423 // 25.4.6 Properties of Promise Instances
4424
4425 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4426 global.Promise = Promise;
4427
4428 // Patch early Promise.cast vs. Promise.resolve implementations
4429 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4430 }());
4431
4432 // 25.4.5.1 Promise.prototype [ @@toStringTag ]
4433 define(Promise.prototype, $$toStringTag, 'Promise');
4434
4435 // ---------------------------------------
4436 // 26 Reflection
4437 // ---------------------------------------
4438
4439 (function() {
4440 // 26.1 The Reflect Object
4441 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4442 global.Reflect = {};
4443
4444 // 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4445 define(
4446 Reflect, 'apply',
4447 function apply(target, thisArgument, argumentsList) {
4448 if (!IsCallable(target)) throw TypeError();
4449 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4450 });
4451
4452 // 26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4453 define(
4454 Reflect, 'construct',
4455 function construct(target, argumentsList) {
4456 return __cons(target, argumentsList);
4457 });
4458
4459 // 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4460 define(
4461 Reflect, 'defineProperty',
4462 function defineProperty(target, propertyKey, attributes) {
4463 try {
4464 Object.defineProperty(target, propertyKey, attributes);
4465 return true;
4466 } catch (_) {
4467 return false;
4468 }
4469 });
4470
4471 // 26.1.4 Reflect.deleteProperty ( target, propertyKey )
4472 define(
4473 Reflect, 'deleteProperty',
4474 function deleteProperty(target,name) {
4475 try {
4476 delete target[name];
4477 return !HasOwnProperty(target, name);
4478 } catch (_) {
4479 return false;
4480 }
4481 });
4482
4483 // 26.1.5 Reflect.enumerate ( target )
4484 define(
4485 Reflect, 'enumerate',
4486 function enumerate(target) {
4487 target = ToObject(target);
4488 var iterator = Enumerate(target);
4489 return iterator;
4490 });
4491
4492 // 26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4493 define(
4494 Reflect, 'get',
4495 function get(target, name, receiver) {
4496 target = ToObject(target);
4497 name = String(name);
4498 receiver = (receiver === undefined) ? target : ToObject(receiver);
4499 var desc = getPropertyDescriptor(target, name);
4500 if (desc && 'get' in desc)
4501 return Function.prototype.call.call(desc['get'], receiver);
4502 return target[name];
4503 });
4504
4505 // 26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4506 define(
4507 Reflect, 'getOwnPropertyDescriptor',
4508 Object.getOwnPropertyDescriptor);
4509
4510 // 26.1.8 Reflect.getPrototypeOf ( target )
4511 define(
4512 Reflect, 'getPrototypeOf',
4513 Object.getPrototypeOf);
4514
4515 // 26.1.9 Reflect.has ( target, propertyKey )
4516 define(
4517 Reflect, 'has',
4518 function has(target,name) {
4519 return String(name) in ToObject(target);
4520 });
4521
4522 // 26.1.10 Reflect.isExtensible (target)
4523 define(
4524 Reflect, 'isExtensible',
4525 Object.isExtensible);
4526
4527 // 26.1.11 Reflect.ownKeys ( target )
4528 define(
4529 Reflect, 'ownKeys',
4530 function ownKeys(target) {
4531 var obj = ToObject(target);
4532 return Object.getOwnPropertyNames(obj);
4533 });
4534
4535 // 26.1.12 Reflect.preventExtensions ( target )
4536 define(
4537 Reflect, 'preventExtensions',
4538 function preventExtensions(target) {
4539 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4540 });
4541
4542 // 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4543 define(
4544 Reflect, 'set',
4545 function set(target, name, value, receiver) {
4546 target = ToObject(target);
4547 name = String(name);
4548 receiver = (receiver === undefined) ? target : ToObject(receiver);
4549 var desc = getPropertyDescriptor(target, name);
4550 try {
4551 if (desc && 'set' in desc)
4552 Function.prototype.call.call(desc['set'], receiver, value);
4553 else
4554 target[name] = value;
4555 return true;
4556 } catch (_) {
4557 return false;
4558 }
4559 });
4560
4561 // 26.1.14 Reflect.setPrototypeOf ( target, proto )
4562 define(
4563 Reflect, 'setPrototypeOf',
4564 function setPrototypeOf(target, proto) {
4565 try {
4566 target.__proto__ = proto;
4567 return Reflect.getPrototypeOf(target) === proto;
4568 } catch(_) {
4569 return false;
4570 }
4571 });
4572
4573 }());
4574
4575 // ---------------------------------------
4576 // 26.2 Proxy Objects
4577 // ---------------------------------------
4578
4579 // Not polyfillable.
4580
4581 }(self));
4582
4583 // This helper is defined outside the main scope so that the use of
4584 // 'eval' does not taint the scope for minifiers.
4585 function __cons(t, a) {
4586 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4587 }
4588 </script>
4589 <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){
4590 'use strict'
4591
4592 exports.byteLength = byteLength
4593 exports.toByteArray = toByteArray
4594 exports.fromByteArray = fromByteArray
4595
4596 var lookup = []
4597 var revLookup = []
4598 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4599
4600 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4601 for (var i = 0, len = code.length; i < len; ++i) {
4602 lookup[i] = code[i]
4603 revLookup[code.charCodeAt(i)] = i
4604 }
4605
4606 revLookup['-'.charCodeAt(0)] = 62
4607 revLookup['_'.charCodeAt(0)] = 63
4608
4609 function placeHoldersCount (b64) {
4610 var len = b64.length
4611 if (len % 4 > 0) {
4612 throw new Error('Invalid string. Length must be a multiple of 4')
4613 }
4614
4615 // the number of equal signs (place holders)
4616 // if there are two placeholders, than the two characters before it
4617 // represent one byte
4618 // if there is only one, then the three characters before it represent 2 bytes
4619 // this is just a cheap hack to not do indexOf twice
4620 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
4621 }
4622
4623 function byteLength (b64) {
4624 // base64 is 4/3 + up to two characters of the original data
4625 return b64.length * 3 / 4 - placeHoldersCount(b64)
4626 }
4627
4628 function toByteArray (b64) {
4629 var i, j, l, tmp, placeHolders, arr
4630 var len = b64.length
4631 placeHolders = placeHoldersCount(b64)
4632
4633 arr = new Arr(len * 3 / 4 - placeHolders)
4634
4635 // if there are placeholders, only get up to the last complete 4 chars
4636 l = placeHolders > 0 ? len - 4 : len
4637
4638 var L = 0
4639
4640 for (i = 0, j = 0; i < l; i += 4, j += 3) {
4641 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
4642 arr[L++] = (tmp >> 16) & 0xFF
4643 arr[L++] = (tmp >> 8) & 0xFF
4644 arr[L++] = tmp & 0xFF
4645 }
4646
4647 if (placeHolders === 2) {
4648 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
4649 arr[L++] = tmp & 0xFF
4650 } else if (placeHolders === 1) {
4651 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
4652 arr[L++] = (tmp >> 8) & 0xFF
4653 arr[L++] = tmp & 0xFF
4654 }
4655
4656 return arr
4657 }
4658
4659 function tripletToBase64 (num) {
4660 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
4661 }
4662
4663 function encodeChunk (uint8, start, end) {
4664 var tmp
4665 var output = []
4666 for (var i = start; i < end; i += 3) {
4667 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
4668 output.push(tripletToBase64(tmp))
4669 }
4670 return output.join('')
4671 }
4672
4673 function fromByteArray (uint8) {
4674 var tmp
4675 var len = uint8.length
4676 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
4677 var output = ''
4678 var parts = []
4679 var maxChunkLength = 16383 // must be multiple of 3
4680
4681 // go through the array every three bytes, we'll deal with trailing stuff later
4682 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
4683 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
4684 }
4685
4686 // pad the end with zeros, but make sure to not forget the extra bytes
4687 if (extraBytes === 1) {
4688 tmp = uint8[len - 1]
4689 output += lookup[tmp >> 2]
4690 output += lookup[(tmp << 4) & 0x3F]
4691 output += '=='
4692 } else if (extraBytes === 2) {
4693 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
4694 output += lookup[tmp >> 10]
4695 output += lookup[(tmp >> 4) & 0x3F]
4696 output += lookup[(tmp << 2) & 0x3F]
4697 output += '='
4698 }
4699
4700 parts.push(output)
4701
4702 return parts.join('')
4703 }
4704
4705 },{}],2:[function(require,module,exports){
4706 /*!
4707 * The buffer module from node.js, for the browser.
4708 *
4709 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
4710 * @license MIT
4711 */
4712 /* eslint-disable no-proto */
4713
4714 'use strict'
4715
4716 var base64 = require('base64-js')
4717 var ieee754 = require('ieee754')
4718
4719 exports.Buffer = Buffer
4720 exports.SlowBuffer = SlowBuffer
4721 exports.INSPECT_MAX_BYTES = 50
4722
4723 var K_MAX_LENGTH = 0x7fffffff
4724 exports.kMaxLength = K_MAX_LENGTH
4725
4726 /**
4727 * If `Buffer.TYPED_ARRAY_SUPPORT`:
4728 * === true Use Uint8Array implementation (fastest)
4729 * === false Print warning and recommend using `buffer` v4.x which has an Object
4730 * implementation (most compatible, even IE6)
4731 *
4732 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
4733 * Opera 11.6+, iOS 4.2+.
4734 *
4735 * We report that the browser does not support typed arrays if the are not subclassable
4736 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
4737 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
4738 * for __proto__ and has a buggy typed array implementation.
4739 */
4740 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
4741
4742 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
4743 typeof console.error === 'function') {
4744 console.error(
4745 'This browser lacks typed array (Uint8Array) support which is required by ' +
4746 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
4747 )
4748 }
4749
4750 function typedArraySupport () {
4751 // Can typed array instances can be augmented?
4752 try {
4753 var arr = new Uint8Array(1)
4754 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
4755 return arr.foo() === 42
4756 } catch (e) {
4757 return false
4758 }
4759 }
4760
4761 function createBuffer (length) {
4762 if (length > K_MAX_LENGTH) {
4763 throw new RangeError('Invalid typed array length')
4764 }
4765 // Return an augmented `Uint8Array` instance
4766 var buf = new Uint8Array(length)
4767 buf.__proto__ = Buffer.prototype
4768 return buf
4769 }
4770
4771 /**
4772 * The Buffer constructor returns instances of `Uint8Array` that have their
4773 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
4774 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
4775 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
4776 * returns a single octet.
4777 *
4778 * The `Uint8Array` prototype remains unmodified.
4779 */
4780
4781 function Buffer (arg, encodingOrOffset, length) {
4782 // Common case.
4783 if (typeof arg === 'number') {
4784 if (typeof encodingOrOffset === 'string') {
4785 throw new Error(
4786 'If encoding is specified then the first argument must be a string'
4787 )
4788 }
4789 return allocUnsafe(arg)
4790 }
4791 return from(arg, encodingOrOffset, length)
4792 }
4793
4794 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
4795 if (typeof Symbol !== 'undefined' && Symbol.species &&
4796 Buffer[Symbol.species] === Buffer) {
4797 Object.defineProperty(Buffer, Symbol.species, {
4798 value: null,
4799 configurable: true,
4800 enumerable: false,
4801 writable: false
4802 })
4803 }
4804
4805 Buffer.poolSize = 8192 // not used by this implementation
4806
4807 function from (value, encodingOrOffset, length) {
4808 if (typeof value === 'number') {
4809 throw new TypeError('"value" argument must not be a number')
4810 }
4811
4812 if (value instanceof ArrayBuffer) {
4813 return fromArrayBuffer(value, encodingOrOffset, length)
4814 }
4815
4816 if (typeof value === 'string') {
4817 return fromString(value, encodingOrOffset)
4818 }
4819
4820 return fromObject(value)
4821 }
4822
4823 /**
4824 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
4825 * if value is a number.
4826 * Buffer.from(str[, encoding])
4827 * Buffer.from(array)
4828 * Buffer.from(buffer)
4829 * Buffer.from(arrayBuffer[, byteOffset[, length]])
4830 **/
4831 Buffer.from = function (value, encodingOrOffset, length) {
4832 return from(value, encodingOrOffset, length)
4833 }
4834
4835 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
4836 // https://github.com/feross/buffer/pull/148
4837 Buffer.prototype.__proto__ = Uint8Array.prototype
4838 Buffer.__proto__ = Uint8Array
4839
4840 function assertSize (size) {
4841 if (typeof size !== 'number') {
4842 throw new TypeError('"size" argument must be a number')
4843 } else if (size < 0) {
4844 throw new RangeError('"size" argument must not be negative')
4845 }
4846 }
4847
4848 function alloc (size, fill, encoding) {
4849 assertSize(size)
4850 if (size <= 0) {
4851 return createBuffer(size)
4852 }
4853 if (fill !== undefined) {
4854 // Only pay attention to encoding if it's a string. This
4855 // prevents accidentally sending in a number that would
4856 // be interpretted as a start offset.
4857 return typeof encoding === 'string'
4858 ? createBuffer(size).fill(fill, encoding)
4859 : createBuffer(size).fill(fill)
4860 }
4861 return createBuffer(size)
4862 }
4863
4864 /**
4865 * Creates a new filled Buffer instance.
4866 * alloc(size[, fill[, encoding]])
4867 **/
4868 Buffer.alloc = function (size, fill, encoding) {
4869 return alloc(size, fill, encoding)
4870 }
4871
4872 function allocUnsafe (size) {
4873 assertSize(size)
4874 return createBuffer(size < 0 ? 0 : checked(size) | 0)
4875 }
4876
4877 /**
4878 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
4879 * */
4880 Buffer.allocUnsafe = function (size) {
4881 return allocUnsafe(size)
4882 }
4883 /**
4884 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
4885 */
4886 Buffer.allocUnsafeSlow = function (size) {
4887 return allocUnsafe(size)
4888 }
4889
4890 function fromString (string, encoding) {
4891 if (typeof encoding !== 'string' || encoding === '') {
4892 encoding = 'utf8'
4893 }
4894
4895 if (!Buffer.isEncoding(encoding)) {
4896 throw new TypeError('"encoding" must be a valid string encoding')
4897 }
4898
4899 var length = byteLength(string, encoding) | 0
4900 var buf = createBuffer(length)
4901
4902 var actual = buf.write(string, encoding)
4903
4904 if (actual !== length) {
4905 // Writing a hex string, for example, that contains invalid characters will
4906 // cause everything after the first invalid character to be ignored. (e.g.
4907 // 'abxxcd' will be treated as 'ab')
4908 buf = buf.slice(0, actual)
4909 }
4910
4911 return buf
4912 }
4913
4914 function fromArrayLike (array) {
4915 var length = array.length < 0 ? 0 : checked(array.length) | 0
4916 var buf = createBuffer(length)
4917 for (var i = 0; i < length; i += 1) {
4918 buf[i] = array[i] & 255
4919 }
4920 return buf
4921 }
4922
4923 function fromArrayBuffer (array, byteOffset, length) {
4924 if (byteOffset < 0 || array.byteLength < byteOffset) {
4925 throw new RangeError('\'offset\' is out of bounds')
4926 }
4927
4928 if (array.byteLength < byteOffset + (length || 0)) {
4929 throw new RangeError('\'length\' is out of bounds')
4930 }
4931
4932 var buf
4933 if (byteOffset === undefined && length === undefined) {
4934 buf = new Uint8Array(array)
4935 } else if (length === undefined) {
4936 buf = new Uint8Array(array, byteOffset)
4937 } else {
4938 buf = new Uint8Array(array, byteOffset, length)
4939 }
4940
4941 // Return an augmented `Uint8Array` instance
4942 buf.__proto__ = Buffer.prototype
4943 return buf
4944 }
4945
4946 function fromObject (obj) {
4947 if (Buffer.isBuffer(obj)) {
4948 var len = checked(obj.length) | 0
4949 var buf = createBuffer(len)
4950
4951 if (buf.length === 0) {
4952 return buf
4953 }
4954
4955 obj.copy(buf, 0, 0, len)
4956 return buf
4957 }
4958
4959 if (obj) {
4960 if (isArrayBufferView(obj) || 'length' in obj) {
4961 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
4962 return createBuffer(0)
4963 }
4964 return fromArrayLike(obj)
4965 }
4966
4967 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
4968 return fromArrayLike(obj.data)
4969 }
4970 }
4971
4972 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
4973 }
4974
4975 function checked (length) {
4976 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
4977 // length is NaN (which is otherwise coerced to zero.)
4978 if (length >= K_MAX_LENGTH) {
4979 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
4980 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
4981 }
4982 return length | 0
4983 }
4984
4985 function SlowBuffer (length) {
4986 if (+length != length) { // eslint-disable-line eqeqeq
4987 length = 0
4988 }
4989 return Buffer.alloc(+length)
4990 }
4991
4992 Buffer.isBuffer = function isBuffer (b) {
4993 return b != null && b._isBuffer === true
4994 }
4995
4996 Buffer.compare = function compare (a, b) {
4997 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
4998 throw new TypeError('Arguments must be Buffers')
4999 }
5000
5001 if (a === b) return 0
5002
5003 var x = a.length
5004 var y = b.length
5005
5006 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
5007 if (a[i] !== b[i]) {
5008 x = a[i]
5009 y = b[i]
5010 break
5011 }
5012 }
5013
5014 if (x < y) return -1
5015 if (y < x) return 1
5016 return 0
5017 }
5018
5019 Buffer.isEncoding = function isEncoding (encoding) {
5020 switch (String(encoding).toLowerCase()) {
5021 case 'hex':
5022 case 'utf8':
5023 case 'utf-8':
5024 case 'ascii':
5025 case 'latin1':
5026 case 'binary':
5027 case 'base64':
5028 case 'ucs2':
5029 case 'ucs-2':
5030 case 'utf16le':
5031 case 'utf-16le':
5032 return true
5033 default:
5034 return false
5035 }
5036 }
5037
5038 Buffer.concat = function concat (list, length) {
5039 if (!Array.isArray(list)) {
5040 throw new TypeError('"list" argument must be an Array of Buffers')
5041 }
5042
5043 if (list.length === 0) {
5044 return Buffer.alloc(0)
5045 }
5046
5047 var i
5048 if (length === undefined) {
5049 length = 0
5050 for (i = 0; i < list.length; ++i) {
5051 length += list[i].length
5052 }
5053 }
5054
5055 var buffer = Buffer.allocUnsafe(length)
5056 var pos = 0
5057 for (i = 0; i < list.length; ++i) {
5058 var buf = list[i]
5059 if (!Buffer.isBuffer(buf)) {
5060 throw new TypeError('"list" argument must be an Array of Buffers')
5061 }
5062 buf.copy(buffer, pos)
5063 pos += buf.length
5064 }
5065 return buffer
5066 }
5067
5068 function byteLength (string, encoding) {
5069 if (Buffer.isBuffer(string)) {
5070 return string.length
5071 }
5072 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
5073 return string.byteLength
5074 }
5075 if (typeof string !== 'string') {
5076 string = '' + string
5077 }
5078
5079 var len = string.length
5080 if (len === 0) return 0
5081
5082 // Use a for loop to avoid recursion
5083 var loweredCase = false
5084 for (;;) {
5085 switch (encoding) {
5086 case 'ascii':
5087 case 'latin1':
5088 case 'binary':
5089 return len
5090 case 'utf8':
5091 case 'utf-8':
5092 case undefined:
5093 return utf8ToBytes(string).length
5094 case 'ucs2':
5095 case 'ucs-2':
5096 case 'utf16le':
5097 case 'utf-16le':
5098 return len * 2
5099 case 'hex':
5100 return len >>> 1
5101 case 'base64':
5102 return base64ToBytes(string).length
5103 default:
5104 if (loweredCase) return utf8ToBytes(string).length // assume utf8
5105 encoding = ('' + encoding).toLowerCase()
5106 loweredCase = true
5107 }
5108 }
5109 }
5110 Buffer.byteLength = byteLength
5111
5112 function slowToString (encoding, start, end) {
5113 var loweredCase = false
5114
5115 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
5116 // property of a typed array.
5117
5118 // This behaves neither like String nor Uint8Array in that we set start/end
5119 // to their upper/lower bounds if the value passed is out of range.
5120 // undefined is handled specially as per ECMA-262 6th Edition,
5121 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
5122 if (start === undefined || start < 0) {
5123 start = 0
5124 }
5125 // Return early if start > this.length. Done here to prevent potential uint32
5126 // coercion fail below.
5127 if (start > this.length) {
5128 return ''
5129 }
5130
5131 if (end === undefined || end > this.length) {
5132 end = this.length
5133 }
5134
5135 if (end <= 0) {
5136 return ''
5137 }
5138
5139 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
5140 end >>>= 0
5141 start >>>= 0
5142
5143 if (end <= start) {
5144 return ''
5145 }
5146
5147 if (!encoding) encoding = 'utf8'
5148
5149 while (true) {
5150 switch (encoding) {
5151 case 'hex':
5152 return hexSlice(this, start, end)
5153
5154 case 'utf8':
5155 case 'utf-8':
5156 return utf8Slice(this, start, end)
5157
5158 case 'ascii':
5159 return asciiSlice(this, start, end)
5160
5161 case 'latin1':
5162 case 'binary':
5163 return latin1Slice(this, start, end)
5164
5165 case 'base64':
5166 return base64Slice(this, start, end)
5167
5168 case 'ucs2':
5169 case 'ucs-2':
5170 case 'utf16le':
5171 case 'utf-16le':
5172 return utf16leSlice(this, start, end)
5173
5174 default:
5175 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5176 encoding = (encoding + '').toLowerCase()
5177 loweredCase = true
5178 }
5179 }
5180 }
5181
5182 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
5183 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
5184 // reliably in a browserify context because there could be multiple different
5185 // copies of the 'buffer' package in use. This method works even for Buffer
5186 // instances that were created from another copy of the `buffer` package.
5187 // See: https://github.com/feross/buffer/issues/154
5188 Buffer.prototype._isBuffer = true
5189
5190 function swap (b, n, m) {
5191 var i = b[n]
5192 b[n] = b[m]
5193 b[m] = i
5194 }
5195
5196 Buffer.prototype.swap16 = function swap16 () {
5197 var len = this.length
5198 if (len % 2 !== 0) {
5199 throw new RangeError('Buffer size must be a multiple of 16-bits')
5200 }
5201 for (var i = 0; i < len; i += 2) {
5202 swap(this, i, i + 1)
5203 }
5204 return this
5205 }
5206
5207 Buffer.prototype.swap32 = function swap32 () {
5208 var len = this.length
5209 if (len % 4 !== 0) {
5210 throw new RangeError('Buffer size must be a multiple of 32-bits')
5211 }
5212 for (var i = 0; i < len; i += 4) {
5213 swap(this, i, i + 3)
5214 swap(this, i + 1, i + 2)
5215 }
5216 return this
5217 }
5218
5219 Buffer.prototype.swap64 = function swap64 () {
5220 var len = this.length
5221 if (len % 8 !== 0) {
5222 throw new RangeError('Buffer size must be a multiple of 64-bits')
5223 }
5224 for (var i = 0; i < len; i += 8) {
5225 swap(this, i, i + 7)
5226 swap(this, i + 1, i + 6)
5227 swap(this, i + 2, i + 5)
5228 swap(this, i + 3, i + 4)
5229 }
5230 return this
5231 }
5232
5233 Buffer.prototype.toString = function toString () {
5234 var length = this.length
5235 if (length === 0) return ''
5236 if (arguments.length === 0) return utf8Slice(this, 0, length)
5237 return slowToString.apply(this, arguments)
5238 }
5239
5240 Buffer.prototype.equals = function equals (b) {
5241 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
5242 if (this === b) return true
5243 return Buffer.compare(this, b) === 0
5244 }
5245
5246 Buffer.prototype.inspect = function inspect () {
5247 var str = ''
5248 var max = exports.INSPECT_MAX_BYTES
5249 if (this.length > 0) {
5250 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
5251 if (this.length > max) str += ' ... '
5252 }
5253 return '<Buffer ' + str + '>'
5254 }
5255
5256 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
5257 if (!Buffer.isBuffer(target)) {
5258 throw new TypeError('Argument must be a Buffer')
5259 }
5260
5261 if (start === undefined) {
5262 start = 0
5263 }
5264 if (end === undefined) {
5265 end = target ? target.length : 0
5266 }
5267 if (thisStart === undefined) {
5268 thisStart = 0
5269 }
5270 if (thisEnd === undefined) {
5271 thisEnd = this.length
5272 }
5273
5274 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
5275 throw new RangeError('out of range index')
5276 }
5277
5278 if (thisStart >= thisEnd && start >= end) {
5279 return 0
5280 }
5281 if (thisStart >= thisEnd) {
5282 return -1
5283 }
5284 if (start >= end) {
5285 return 1
5286 }
5287
5288 start >>>= 0
5289 end >>>= 0
5290 thisStart >>>= 0
5291 thisEnd >>>= 0
5292
5293 if (this === target) return 0
5294
5295 var x = thisEnd - thisStart
5296 var y = end - start
5297 var len = Math.min(x, y)
5298
5299 var thisCopy = this.slice(thisStart, thisEnd)
5300 var targetCopy = target.slice(start, end)
5301
5302 for (var i = 0; i < len; ++i) {
5303 if (thisCopy[i] !== targetCopy[i]) {
5304 x = thisCopy[i]
5305 y = targetCopy[i]
5306 break
5307 }
5308 }
5309
5310 if (x < y) return -1
5311 if (y < x) return 1
5312 return 0
5313 }
5314
5315 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
5316 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
5317 //
5318 // Arguments:
5319 // - buffer - a Buffer to search
5320 // - val - a string, Buffer, or number
5321 // - byteOffset - an index into `buffer`; will be clamped to an int32
5322 // - encoding - an optional encoding, relevant is val is a string
5323 // - dir - true for indexOf, false for lastIndexOf
5324 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
5325 // Empty buffer means no match
5326 if (buffer.length === 0) return -1
5327
5328 // Normalize byteOffset
5329 if (typeof byteOffset === 'string') {
5330 encoding = byteOffset
5331 byteOffset = 0
5332 } else if (byteOffset > 0x7fffffff) {
5333 byteOffset = 0x7fffffff
5334 } else if (byteOffset < -0x80000000) {
5335 byteOffset = -0x80000000
5336 }
5337 byteOffset = +byteOffset // Coerce to Number.
5338 if (numberIsNaN(byteOffset)) {
5339 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
5340 byteOffset = dir ? 0 : (buffer.length - 1)
5341 }
5342
5343 // Normalize byteOffset: negative offsets start from the end of the buffer
5344 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
5345 if (byteOffset >= buffer.length) {
5346 if (dir) return -1
5347 else byteOffset = buffer.length - 1
5348 } else if (byteOffset < 0) {
5349 if (dir) byteOffset = 0
5350 else return -1
5351 }
5352
5353 // Normalize val
5354 if (typeof val === 'string') {
5355 val = Buffer.from(val, encoding)
5356 }
5357
5358 // Finally, search either indexOf (if dir is true) or lastIndexOf
5359 if (Buffer.isBuffer(val)) {
5360 // Special case: looking for empty string/buffer always fails
5361 if (val.length === 0) {
5362 return -1
5363 }
5364 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
5365 } else if (typeof val === 'number') {
5366 val = val & 0xFF // Search for a byte value [0-255]
5367 if (typeof Uint8Array.prototype.indexOf === 'function') {
5368 if (dir) {
5369 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
5370 } else {
5371 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
5372 }
5373 }
5374 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
5375 }
5376
5377 throw new TypeError('val must be string, number or Buffer')
5378 }
5379
5380 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
5381 var indexSize = 1
5382 var arrLength = arr.length
5383 var valLength = val.length
5384
5385 if (encoding !== undefined) {
5386 encoding = String(encoding).toLowerCase()
5387 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
5388 encoding === 'utf16le' || encoding === 'utf-16le') {
5389 if (arr.length < 2 || val.length < 2) {
5390 return -1
5391 }
5392 indexSize = 2
5393 arrLength /= 2
5394 valLength /= 2
5395 byteOffset /= 2
5396 }
5397 }
5398
5399 function read (buf, i) {
5400 if (indexSize === 1) {
5401 return buf[i]
5402 } else {
5403 return buf.readUInt16BE(i * indexSize)
5404 }
5405 }
5406
5407 var i
5408 if (dir) {
5409 var foundIndex = -1
5410 for (i = byteOffset; i < arrLength; i++) {
5411 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
5412 if (foundIndex === -1) foundIndex = i
5413 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
5414 } else {
5415 if (foundIndex !== -1) i -= i - foundIndex
5416 foundIndex = -1
5417 }
5418 }
5419 } else {
5420 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
5421 for (i = byteOffset; i >= 0; i--) {
5422 var found = true
5423 for (var j = 0; j < valLength; j++) {
5424 if (read(arr, i + j) !== read(val, j)) {
5425 found = false
5426 break
5427 }
5428 }
5429 if (found) return i
5430 }
5431 }
5432
5433 return -1
5434 }
5435
5436 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
5437 return this.indexOf(val, byteOffset, encoding) !== -1
5438 }
5439
5440 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
5441 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
5442 }
5443
5444 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
5445 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
5446 }
5447
5448 function hexWrite (buf, string, offset, length) {
5449 offset = Number(offset) || 0
5450 var remaining = buf.length - offset
5451 if (!length) {
5452 length = remaining
5453 } else {
5454 length = Number(length)
5455 if (length > remaining) {
5456 length = remaining
5457 }
5458 }
5459
5460 // must be an even number of digits
5461 var strLen = string.length
5462 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
5463
5464 if (length > strLen / 2) {
5465 length = strLen / 2
5466 }
5467 for (var i = 0; i < length; ++i) {
5468 var parsed = parseInt(string.substr(i * 2, 2), 16)
5469 if (numberIsNaN(parsed)) return i
5470 buf[offset + i] = parsed
5471 }
5472 return i
5473 }
5474
5475 function utf8Write (buf, string, offset, length) {
5476 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
5477 }
5478
5479 function asciiWrite (buf, string, offset, length) {
5480 return blitBuffer(asciiToBytes(string), buf, offset, length)
5481 }
5482
5483 function latin1Write (buf, string, offset, length) {
5484 return asciiWrite(buf, string, offset, length)
5485 }
5486
5487 function base64Write (buf, string, offset, length) {
5488 return blitBuffer(base64ToBytes(string), buf, offset, length)
5489 }
5490
5491 function ucs2Write (buf, string, offset, length) {
5492 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
5493 }
5494
5495 Buffer.prototype.write = function write (string, offset, length, encoding) {
5496 // Buffer#write(string)
5497 if (offset === undefined) {
5498 encoding = 'utf8'
5499 length = this.length
5500 offset = 0
5501 // Buffer#write(string, encoding)
5502 } else if (length === undefined && typeof offset === 'string') {
5503 encoding = offset
5504 length = this.length
5505 offset = 0
5506 // Buffer#write(string, offset[, length][, encoding])
5507 } else if (isFinite(offset)) {
5508 offset = offset >>> 0
5509 if (isFinite(length)) {
5510 length = length >>> 0
5511 if (encoding === undefined) encoding = 'utf8'
5512 } else {
5513 encoding = length
5514 length = undefined
5515 }
5516 } else {
5517 throw new Error(
5518 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
5519 )
5520 }
5521
5522 var remaining = this.length - offset
5523 if (length === undefined || length > remaining) length = remaining
5524
5525 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
5526 throw new RangeError('Attempt to write outside buffer bounds')
5527 }
5528
5529 if (!encoding) encoding = 'utf8'
5530
5531 var loweredCase = false
5532 for (;;) {
5533 switch (encoding) {
5534 case 'hex':
5535 return hexWrite(this, string, offset, length)
5536
5537 case 'utf8':
5538 case 'utf-8':
5539 return utf8Write(this, string, offset, length)
5540
5541 case 'ascii':
5542 return asciiWrite(this, string, offset, length)
5543
5544 case 'latin1':
5545 case 'binary':
5546 return latin1Write(this, string, offset, length)
5547
5548 case 'base64':
5549 // Warning: maxLength not taken into account in base64Write
5550 return base64Write(this, string, offset, length)
5551
5552 case 'ucs2':
5553 case 'ucs-2':
5554 case 'utf16le':
5555 case 'utf-16le':
5556 return ucs2Write(this, string, offset, length)
5557
5558 default:
5559 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5560 encoding = ('' + encoding).toLowerCase()
5561 loweredCase = true
5562 }
5563 }
5564 }
5565
5566 Buffer.prototype.toJSON = function toJSON () {
5567 return {
5568 type: 'Buffer',
5569 data: Array.prototype.slice.call(this._arr || this, 0)
5570 }
5571 }
5572
5573 function base64Slice (buf, start, end) {
5574 if (start === 0 && end === buf.length) {
5575 return base64.fromByteArray(buf)
5576 } else {
5577 return base64.fromByteArray(buf.slice(start, end))
5578 }
5579 }
5580
5581 function utf8Slice (buf, start, end) {
5582 end = Math.min(buf.length, end)
5583 var res = []
5584
5585 var i = start
5586 while (i < end) {
5587 var firstByte = buf[i]
5588 var codePoint = null
5589 var bytesPerSequence = (firstByte > 0xEF) ? 4
5590 : (firstByte > 0xDF) ? 3
5591 : (firstByte > 0xBF) ? 2
5592 : 1
5593
5594 if (i + bytesPerSequence <= end) {
5595 var secondByte, thirdByte, fourthByte, tempCodePoint
5596
5597 switch (bytesPerSequence) {
5598 case 1:
5599 if (firstByte < 0x80) {
5600 codePoint = firstByte
5601 }
5602 break
5603 case 2:
5604 secondByte = buf[i + 1]
5605 if ((secondByte & 0xC0) === 0x80) {
5606 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
5607 if (tempCodePoint > 0x7F) {
5608 codePoint = tempCodePoint
5609 }
5610 }
5611 break
5612 case 3:
5613 secondByte = buf[i + 1]
5614 thirdByte = buf[i + 2]
5615 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
5616 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
5617 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
5618 codePoint = tempCodePoint
5619 }
5620 }
5621 break
5622 case 4:
5623 secondByte = buf[i + 1]
5624 thirdByte = buf[i + 2]
5625 fourthByte = buf[i + 3]
5626 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
5627 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
5628 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
5629 codePoint = tempCodePoint
5630 }
5631 }
5632 }
5633 }
5634
5635 if (codePoint === null) {
5636 // we did not generate a valid codePoint so insert a
5637 // replacement char (U+FFFD) and advance only 1 byte
5638 codePoint = 0xFFFD
5639 bytesPerSequence = 1
5640 } else if (codePoint > 0xFFFF) {
5641 // encode to utf16 (surrogate pair dance)
5642 codePoint -= 0x10000
5643 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
5644 codePoint = 0xDC00 | codePoint & 0x3FF
5645 }
5646
5647 res.push(codePoint)
5648 i += bytesPerSequence
5649 }
5650
5651 return decodeCodePointsArray(res)
5652 }
5653
5654 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
5655 // the lowest limit is Chrome, with 0x10000 args.
5656 // We go 1 magnitude less, for safety
5657 var MAX_ARGUMENTS_LENGTH = 0x1000
5658
5659 function decodeCodePointsArray (codePoints) {
5660 var len = codePoints.length
5661 if (len <= MAX_ARGUMENTS_LENGTH) {
5662 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
5663 }
5664
5665 // Decode in chunks to avoid "call stack size exceeded".
5666 var res = ''
5667 var i = 0
5668 while (i < len) {
5669 res += String.fromCharCode.apply(
5670 String,
5671 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
5672 )
5673 }
5674 return res
5675 }
5676
5677 function asciiSlice (buf, start, end) {
5678 var ret = ''
5679 end = Math.min(buf.length, end)
5680
5681 for (var i = start; i < end; ++i) {
5682 ret += String.fromCharCode(buf[i] & 0x7F)
5683 }
5684 return ret
5685 }
5686
5687 function latin1Slice (buf, start, end) {
5688 var ret = ''
5689 end = Math.min(buf.length, end)
5690
5691 for (var i = start; i < end; ++i) {
5692 ret += String.fromCharCode(buf[i])
5693 }
5694 return ret
5695 }
5696
5697 function hexSlice (buf, start, end) {
5698 var len = buf.length
5699
5700 if (!start || start < 0) start = 0
5701 if (!end || end < 0 || end > len) end = len
5702
5703 var out = ''
5704 for (var i = start; i < end; ++i) {
5705 out += toHex(buf[i])
5706 }
5707 return out
5708 }
5709
5710 function utf16leSlice (buf, start, end) {
5711 var bytes = buf.slice(start, end)
5712 var res = ''
5713 for (var i = 0; i < bytes.length; i += 2) {
5714 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
5715 }
5716 return res
5717 }
5718
5719 Buffer.prototype.slice = function slice (start, end) {
5720 var len = this.length
5721 start = ~~start
5722 end = end === undefined ? len : ~~end
5723
5724 if (start < 0) {
5725 start += len
5726 if (start < 0) start = 0
5727 } else if (start > len) {
5728 start = len
5729 }
5730
5731 if (end < 0) {
5732 end += len
5733 if (end < 0) end = 0
5734 } else if (end > len) {
5735 end = len
5736 }
5737
5738 if (end < start) end = start
5739
5740 var newBuf = this.subarray(start, end)
5741 // Return an augmented `Uint8Array` instance
5742 newBuf.__proto__ = Buffer.prototype
5743 return newBuf
5744 }
5745
5746 /*
5747 * Need to make sure that buffer isn't trying to write out of bounds.
5748 */
5749 function checkOffset (offset, ext, length) {
5750 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
5751 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
5752 }
5753
5754 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
5755 offset = offset >>> 0
5756 byteLength = byteLength >>> 0
5757 if (!noAssert) checkOffset(offset, byteLength, this.length)
5758
5759 var val = this[offset]
5760 var mul = 1
5761 var i = 0
5762 while (++i < byteLength && (mul *= 0x100)) {
5763 val += this[offset + i] * mul
5764 }
5765
5766 return val
5767 }
5768
5769 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
5770 offset = offset >>> 0
5771 byteLength = byteLength >>> 0
5772 if (!noAssert) {
5773 checkOffset(offset, byteLength, this.length)
5774 }
5775
5776 var val = this[offset + --byteLength]
5777 var mul = 1
5778 while (byteLength > 0 && (mul *= 0x100)) {
5779 val += this[offset + --byteLength] * mul
5780 }
5781
5782 return val
5783 }
5784
5785 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
5786 offset = offset >>> 0
5787 if (!noAssert) checkOffset(offset, 1, this.length)
5788 return this[offset]
5789 }
5790
5791 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
5792 offset = offset >>> 0
5793 if (!noAssert) checkOffset(offset, 2, this.length)
5794 return this[offset] | (this[offset + 1] << 8)
5795 }
5796
5797 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
5798 offset = offset >>> 0
5799 if (!noAssert) checkOffset(offset, 2, this.length)
5800 return (this[offset] << 8) | this[offset + 1]
5801 }
5802
5803 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
5804 offset = offset >>> 0
5805 if (!noAssert) checkOffset(offset, 4, this.length)
5806
5807 return ((this[offset]) |
5808 (this[offset + 1] << 8) |
5809 (this[offset + 2] << 16)) +
5810 (this[offset + 3] * 0x1000000)
5811 }
5812
5813 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
5814 offset = offset >>> 0
5815 if (!noAssert) checkOffset(offset, 4, this.length)
5816
5817 return (this[offset] * 0x1000000) +
5818 ((this[offset + 1] << 16) |
5819 (this[offset + 2] << 8) |
5820 this[offset + 3])
5821 }
5822
5823 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
5824 offset = offset >>> 0
5825 byteLength = byteLength >>> 0
5826 if (!noAssert) checkOffset(offset, byteLength, this.length)
5827
5828 var val = this[offset]
5829 var mul = 1
5830 var i = 0
5831 while (++i < byteLength && (mul *= 0x100)) {
5832 val += this[offset + i] * mul
5833 }
5834 mul *= 0x80
5835
5836 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5837
5838 return val
5839 }
5840
5841 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
5842 offset = offset >>> 0
5843 byteLength = byteLength >>> 0
5844 if (!noAssert) checkOffset(offset, byteLength, this.length)
5845
5846 var i = byteLength
5847 var mul = 1
5848 var val = this[offset + --i]
5849 while (i > 0 && (mul *= 0x100)) {
5850 val += this[offset + --i] * mul
5851 }
5852 mul *= 0x80
5853
5854 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5855
5856 return val
5857 }
5858
5859 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
5860 offset = offset >>> 0
5861 if (!noAssert) checkOffset(offset, 1, this.length)
5862 if (!(this[offset] & 0x80)) return (this[offset])
5863 return ((0xff - this[offset] + 1) * -1)
5864 }
5865
5866 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
5867 offset = offset >>> 0
5868 if (!noAssert) checkOffset(offset, 2, this.length)
5869 var val = this[offset] | (this[offset + 1] << 8)
5870 return (val & 0x8000) ? val | 0xFFFF0000 : val
5871 }
5872
5873 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
5874 offset = offset >>> 0
5875 if (!noAssert) checkOffset(offset, 2, this.length)
5876 var val = this[offset + 1] | (this[offset] << 8)
5877 return (val & 0x8000) ? val | 0xFFFF0000 : val
5878 }
5879
5880 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
5881 offset = offset >>> 0
5882 if (!noAssert) checkOffset(offset, 4, this.length)
5883
5884 return (this[offset]) |
5885 (this[offset + 1] << 8) |
5886 (this[offset + 2] << 16) |
5887 (this[offset + 3] << 24)
5888 }
5889
5890 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
5891 offset = offset >>> 0
5892 if (!noAssert) checkOffset(offset, 4, this.length)
5893
5894 return (this[offset] << 24) |
5895 (this[offset + 1] << 16) |
5896 (this[offset + 2] << 8) |
5897 (this[offset + 3])
5898 }
5899
5900 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
5901 offset = offset >>> 0
5902 if (!noAssert) checkOffset(offset, 4, this.length)
5903 return ieee754.read(this, offset, true, 23, 4)
5904 }
5905
5906 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
5907 offset = offset >>> 0
5908 if (!noAssert) checkOffset(offset, 4, this.length)
5909 return ieee754.read(this, offset, false, 23, 4)
5910 }
5911
5912 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
5913 offset = offset >>> 0
5914 if (!noAssert) checkOffset(offset, 8, this.length)
5915 return ieee754.read(this, offset, true, 52, 8)
5916 }
5917
5918 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
5919 offset = offset >>> 0
5920 if (!noAssert) checkOffset(offset, 8, this.length)
5921 return ieee754.read(this, offset, false, 52, 8)
5922 }
5923
5924 function checkInt (buf, value, offset, ext, max, min) {
5925 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
5926 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
5927 if (offset + ext > buf.length) throw new RangeError('Index out of range')
5928 }
5929
5930 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
5931 value = +value
5932 offset = offset >>> 0
5933 byteLength = byteLength >>> 0
5934 if (!noAssert) {
5935 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5936 checkInt(this, value, offset, byteLength, maxBytes, 0)
5937 }
5938
5939 var mul = 1
5940 var i = 0
5941 this[offset] = value & 0xFF
5942 while (++i < byteLength && (mul *= 0x100)) {
5943 this[offset + i] = (value / mul) & 0xFF
5944 }
5945
5946 return offset + byteLength
5947 }
5948
5949 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
5950 value = +value
5951 offset = offset >>> 0
5952 byteLength = byteLength >>> 0
5953 if (!noAssert) {
5954 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5955 checkInt(this, value, offset, byteLength, maxBytes, 0)
5956 }
5957
5958 var i = byteLength - 1
5959 var mul = 1
5960 this[offset + i] = value & 0xFF
5961 while (--i >= 0 && (mul *= 0x100)) {
5962 this[offset + i] = (value / mul) & 0xFF
5963 }
5964
5965 return offset + byteLength
5966 }
5967
5968 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
5969 value = +value
5970 offset = offset >>> 0
5971 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
5972 this[offset] = (value & 0xff)
5973 return offset + 1
5974 }
5975
5976 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
5977 value = +value
5978 offset = offset >>> 0
5979 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5980 this[offset] = (value & 0xff)
5981 this[offset + 1] = (value >>> 8)
5982 return offset + 2
5983 }
5984
5985 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
5986 value = +value
5987 offset = offset >>> 0
5988 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5989 this[offset] = (value >>> 8)
5990 this[offset + 1] = (value & 0xff)
5991 return offset + 2
5992 }
5993
5994 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
5995 value = +value
5996 offset = offset >>> 0
5997 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5998 this[offset + 3] = (value >>> 24)
5999 this[offset + 2] = (value >>> 16)
6000 this[offset + 1] = (value >>> 8)
6001 this[offset] = (value & 0xff)
6002 return offset + 4
6003 }
6004
6005 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
6006 value = +value
6007 offset = offset >>> 0
6008 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
6009 this[offset] = (value >>> 24)
6010 this[offset + 1] = (value >>> 16)
6011 this[offset + 2] = (value >>> 8)
6012 this[offset + 3] = (value & 0xff)
6013 return offset + 4
6014 }
6015
6016 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
6017 value = +value
6018 offset = offset >>> 0
6019 if (!noAssert) {
6020 var limit = Math.pow(2, (8 * byteLength) - 1)
6021
6022 checkInt(this, value, offset, byteLength, limit - 1, -limit)
6023 }
6024
6025 var i = 0
6026 var mul = 1
6027 var sub = 0
6028 this[offset] = value & 0xFF
6029 while (++i < byteLength && (mul *= 0x100)) {
6030 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
6031 sub = 1
6032 }
6033 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6034 }
6035
6036 return offset + byteLength
6037 }
6038
6039 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
6040 value = +value
6041 offset = offset >>> 0
6042 if (!noAssert) {
6043 var limit = Math.pow(2, (8 * byteLength) - 1)
6044
6045 checkInt(this, value, offset, byteLength, limit - 1, -limit)
6046 }
6047
6048 var i = byteLength - 1
6049 var mul = 1
6050 var sub = 0
6051 this[offset + i] = value & 0xFF
6052 while (--i >= 0 && (mul *= 0x100)) {
6053 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
6054 sub = 1
6055 }
6056 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6057 }
6058
6059 return offset + byteLength
6060 }
6061
6062 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
6063 value = +value
6064 offset = offset >>> 0
6065 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
6066 if (value < 0) value = 0xff + value + 1
6067 this[offset] = (value & 0xff)
6068 return offset + 1
6069 }
6070
6071 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
6072 value = +value
6073 offset = offset >>> 0
6074 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6075 this[offset] = (value & 0xff)
6076 this[offset + 1] = (value >>> 8)
6077 return offset + 2
6078 }
6079
6080 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
6081 value = +value
6082 offset = offset >>> 0
6083 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6084 this[offset] = (value >>> 8)
6085 this[offset + 1] = (value & 0xff)
6086 return offset + 2
6087 }
6088
6089 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
6090 value = +value
6091 offset = offset >>> 0
6092 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6093 this[offset] = (value & 0xff)
6094 this[offset + 1] = (value >>> 8)
6095 this[offset + 2] = (value >>> 16)
6096 this[offset + 3] = (value >>> 24)
6097 return offset + 4
6098 }
6099
6100 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
6101 value = +value
6102 offset = offset >>> 0
6103 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6104 if (value < 0) value = 0xffffffff + value + 1
6105 this[offset] = (value >>> 24)
6106 this[offset + 1] = (value >>> 16)
6107 this[offset + 2] = (value >>> 8)
6108 this[offset + 3] = (value & 0xff)
6109 return offset + 4
6110 }
6111
6112 function checkIEEE754 (buf, value, offset, ext, max, min) {
6113 if (offset + ext > buf.length) throw new RangeError('Index out of range')
6114 if (offset < 0) throw new RangeError('Index out of range')
6115 }
6116
6117 function writeFloat (buf, value, offset, littleEndian, noAssert) {
6118 value = +value
6119 offset = offset >>> 0
6120 if (!noAssert) {
6121 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
6122 }
6123 ieee754.write(buf, value, offset, littleEndian, 23, 4)
6124 return offset + 4
6125 }
6126
6127 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
6128 return writeFloat(this, value, offset, true, noAssert)
6129 }
6130
6131 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
6132 return writeFloat(this, value, offset, false, noAssert)
6133 }
6134
6135 function writeDouble (buf, value, offset, littleEndian, noAssert) {
6136 value = +value
6137 offset = offset >>> 0
6138 if (!noAssert) {
6139 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
6140 }
6141 ieee754.write(buf, value, offset, littleEndian, 52, 8)
6142 return offset + 8
6143 }
6144
6145 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
6146 return writeDouble(this, value, offset, true, noAssert)
6147 }
6148
6149 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
6150 return writeDouble(this, value, offset, false, noAssert)
6151 }
6152
6153 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
6154 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
6155 if (!start) start = 0
6156 if (!end && end !== 0) end = this.length
6157 if (targetStart >= target.length) targetStart = target.length
6158 if (!targetStart) targetStart = 0
6159 if (end > 0 && end < start) end = start
6160
6161 // Copy 0 bytes; we're done
6162 if (end === start) return 0
6163 if (target.length === 0 || this.length === 0) return 0
6164
6165 // Fatal error conditions
6166 if (targetStart < 0) {
6167 throw new RangeError('targetStart out of bounds')
6168 }
6169 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
6170 if (end < 0) throw new RangeError('sourceEnd out of bounds')
6171
6172 // Are we oob?
6173 if (end > this.length) end = this.length
6174 if (target.length - targetStart < end - start) {
6175 end = target.length - targetStart + start
6176 }
6177
6178 var len = end - start
6179 var i
6180
6181 if (this === target && start < targetStart && targetStart < end) {
6182 // descending copy from end
6183 for (i = len - 1; i >= 0; --i) {
6184 target[i + targetStart] = this[i + start]
6185 }
6186 } else if (len < 1000) {
6187 // ascending copy from start
6188 for (i = 0; i < len; ++i) {
6189 target[i + targetStart] = this[i + start]
6190 }
6191 } else {
6192 Uint8Array.prototype.set.call(
6193 target,
6194 this.subarray(start, start + len),
6195 targetStart
6196 )
6197 }
6198
6199 return len
6200 }
6201
6202 // Usage:
6203 // buffer.fill(number[, offset[, end]])
6204 // buffer.fill(buffer[, offset[, end]])
6205 // buffer.fill(string[, offset[, end]][, encoding])
6206 Buffer.prototype.fill = function fill (val, start, end, encoding) {
6207 // Handle string cases:
6208 if (typeof val === 'string') {
6209 if (typeof start === 'string') {
6210 encoding = start
6211 start = 0
6212 end = this.length
6213 } else if (typeof end === 'string') {
6214 encoding = end
6215 end = this.length
6216 }
6217 if (val.length === 1) {
6218 var code = val.charCodeAt(0)
6219 if (code < 256) {
6220 val = code
6221 }
6222 }
6223 if (encoding !== undefined && typeof encoding !== 'string') {
6224 throw new TypeError('encoding must be a string')
6225 }
6226 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
6227 throw new TypeError('Unknown encoding: ' + encoding)
6228 }
6229 } else if (typeof val === 'number') {
6230 val = val & 255
6231 }
6232
6233 // Invalid ranges are not set to a default, so can range check early.
6234 if (start < 0 || this.length < start || this.length < end) {
6235 throw new RangeError('Out of range index')
6236 }
6237
6238 if (end <= start) {
6239 return this
6240 }
6241
6242 start = start >>> 0
6243 end = end === undefined ? this.length : end >>> 0
6244
6245 if (!val) val = 0
6246
6247 var i
6248 if (typeof val === 'number') {
6249 for (i = start; i < end; ++i) {
6250 this[i] = val
6251 }
6252 } else {
6253 var bytes = Buffer.isBuffer(val)
6254 ? val
6255 : new Buffer(val, encoding)
6256 var len = bytes.length
6257 for (i = 0; i < end - start; ++i) {
6258 this[i + start] = bytes[i % len]
6259 }
6260 }
6261
6262 return this
6263 }
6264
6265 // HELPER FUNCTIONS
6266 // ================
6267
6268 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
6269
6270 function base64clean (str) {
6271 // Node strips out invalid characters like \n and \t from the string, base64-js does not
6272 str = str.trim().replace(INVALID_BASE64_RE, '')
6273 // Node converts strings with length < 2 to ''
6274 if (str.length < 2) return ''
6275 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
6276 while (str.length % 4 !== 0) {
6277 str = str + '='
6278 }
6279 return str
6280 }
6281
6282 function toHex (n) {
6283 if (n < 16) return '0' + n.toString(16)
6284 return n.toString(16)
6285 }
6286
6287 function utf8ToBytes (string, units) {
6288 units = units || Infinity
6289 var codePoint
6290 var length = string.length
6291 var leadSurrogate = null
6292 var bytes = []
6293
6294 for (var i = 0; i < length; ++i) {
6295 codePoint = string.charCodeAt(i)
6296
6297 // is surrogate component
6298 if (codePoint > 0xD7FF && codePoint < 0xE000) {
6299 // last char was a lead
6300 if (!leadSurrogate) {
6301 // no lead yet
6302 if (codePoint > 0xDBFF) {
6303 // unexpected trail
6304 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6305 continue
6306 } else if (i + 1 === length) {
6307 // unpaired lead
6308 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6309 continue
6310 }
6311
6312 // valid lead
6313 leadSurrogate = codePoint
6314
6315 continue
6316 }
6317
6318 // 2 leads in a row
6319 if (codePoint < 0xDC00) {
6320 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6321 leadSurrogate = codePoint
6322 continue
6323 }
6324
6325 // valid surrogate pair
6326 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
6327 } else if (leadSurrogate) {
6328 // valid bmp char, but last char was a lead
6329 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6330 }
6331
6332 leadSurrogate = null
6333
6334 // encode utf8
6335 if (codePoint < 0x80) {
6336 if ((units -= 1) < 0) break
6337 bytes.push(codePoint)
6338 } else if (codePoint < 0x800) {
6339 if ((units -= 2) < 0) break
6340 bytes.push(
6341 codePoint >> 0x6 | 0xC0,
6342 codePoint & 0x3F | 0x80
6343 )
6344 } else if (codePoint < 0x10000) {
6345 if ((units -= 3) < 0) break
6346 bytes.push(
6347 codePoint >> 0xC | 0xE0,
6348 codePoint >> 0x6 & 0x3F | 0x80,
6349 codePoint & 0x3F | 0x80
6350 )
6351 } else if (codePoint < 0x110000) {
6352 if ((units -= 4) < 0) break
6353 bytes.push(
6354 codePoint >> 0x12 | 0xF0,
6355 codePoint >> 0xC & 0x3F | 0x80,
6356 codePoint >> 0x6 & 0x3F | 0x80,
6357 codePoint & 0x3F | 0x80
6358 )
6359 } else {
6360 throw new Error('Invalid code point')
6361 }
6362 }
6363
6364 return bytes
6365 }
6366
6367 function asciiToBytes (str) {
6368 var byteArray = []
6369 for (var i = 0; i < str.length; ++i) {
6370 // Node's code seems to be doing this and not & 0x7F..
6371 byteArray.push(str.charCodeAt(i) & 0xFF)
6372 }
6373 return byteArray
6374 }
6375
6376 function utf16leToBytes (str, units) {
6377 var c, hi, lo
6378 var byteArray = []
6379 for (var i = 0; i < str.length; ++i) {
6380 if ((units -= 2) < 0) break
6381
6382 c = str.charCodeAt(i)
6383 hi = c >> 8
6384 lo = c % 256
6385 byteArray.push(lo)
6386 byteArray.push(hi)
6387 }
6388
6389 return byteArray
6390 }
6391
6392 function base64ToBytes (str) {
6393 return base64.toByteArray(base64clean(str))
6394 }
6395
6396 function blitBuffer (src, dst, offset, length) {
6397 for (var i = 0; i < length; ++i) {
6398 if ((i + offset >= dst.length) || (i >= src.length)) break
6399 dst[i + offset] = src[i]
6400 }
6401 return i
6402 }
6403
6404 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
6405 function isArrayBufferView (obj) {
6406 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
6407 }
6408
6409 function numberIsNaN (obj) {
6410 return obj !== obj // eslint-disable-line no-self-compare
6411 }
6412
6413 },{"base64-js":1,"ieee754":3}],3:[function(require,module,exports){
6414 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
6415 var e, m
6416 var eLen = nBytes * 8 - mLen - 1
6417 var eMax = (1 << eLen) - 1
6418 var eBias = eMax >> 1
6419 var nBits = -7
6420 var i = isLE ? (nBytes - 1) : 0
6421 var d = isLE ? -1 : 1
6422 var s = buffer[offset + i]
6423
6424 i += d
6425
6426 e = s & ((1 << (-nBits)) - 1)
6427 s >>= (-nBits)
6428 nBits += eLen
6429 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6430
6431 m = e & ((1 << (-nBits)) - 1)
6432 e >>= (-nBits)
6433 nBits += mLen
6434 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6435
6436 if (e === 0) {
6437 e = 1 - eBias
6438 } else if (e === eMax) {
6439 return m ? NaN : ((s ? -1 : 1) * Infinity)
6440 } else {
6441 m = m + Math.pow(2, mLen)
6442 e = e - eBias
6443 }
6444 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
6445 }
6446
6447 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
6448 var e, m, c
6449 var eLen = nBytes * 8 - mLen - 1
6450 var eMax = (1 << eLen) - 1
6451 var eBias = eMax >> 1
6452 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
6453 var i = isLE ? 0 : (nBytes - 1)
6454 var d = isLE ? 1 : -1
6455 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
6456
6457 value = Math.abs(value)
6458
6459 if (isNaN(value) || value === Infinity) {
6460 m = isNaN(value) ? 1 : 0
6461 e = eMax
6462 } else {
6463 e = Math.floor(Math.log(value) / Math.LN2)
6464 if (value * (c = Math.pow(2, -e)) < 1) {
6465 e--
6466 c *= 2
6467 }
6468 if (e + eBias >= 1) {
6469 value += rt / c
6470 } else {
6471 value += rt * Math.pow(2, 1 - eBias)
6472 }
6473 if (value * c >= 2) {
6474 e++
6475 c /= 2
6476 }
6477
6478 if (e + eBias >= eMax) {
6479 m = 0
6480 e = eMax
6481 } else if (e + eBias >= 1) {
6482 m = (value * c - 1) * Math.pow(2, mLen)
6483 e = e + eBias
6484 } else {
6485 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
6486 e = 0
6487 }
6488 }
6489
6490 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
6491
6492 e = (e << mLen) | m
6493 eLen += mLen
6494 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
6495
6496 buffer[offset + i - d] |= s * 128
6497 }
6498
6499 },{}],4:[function(require,module,exports){
6500 window.basex = require('base-x')
6501 },{"base-x":5}],5:[function(require,module,exports){
6502 // base-x encoding
6503 // Forked from https://github.com/cryptocoinjs/bs58
6504 // Originally written by Mike Hearn for BitcoinJ
6505 // Copyright (c) 2011 Google Inc
6506 // Ported to JavaScript by Stefan Thomas
6507 // Merged Buffer refactorings from base58-native by Stephen Pair
6508 // Copyright (c) 2013 BitPay Inc
6509
6510 var Buffer = require('safe-buffer').Buffer
6511
6512 module.exports = function base (ALPHABET) {
6513 var ALPHABET_MAP = {}
6514 var BASE = ALPHABET.length
6515 var LEADER = ALPHABET.charAt(0)
6516
6517 // pre-compute lookup table
6518 for (var z = 0; z < ALPHABET.length; z++) {
6519 var x = ALPHABET.charAt(z)
6520
6521 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
6522 ALPHABET_MAP[x] = z
6523 }
6524
6525 function encode (source) {
6526 if (source.length === 0) return ''
6527
6528 var digits = [0]
6529 for (var i = 0; i < source.length; ++i) {
6530 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
6531 carry += digits[j] << 8
6532 digits[j] = carry % BASE
6533 carry = (carry / BASE) | 0
6534 }
6535
6536 while (carry > 0) {
6537 digits.push(carry % BASE)
6538 carry = (carry / BASE) | 0
6539 }
6540 }
6541
6542 var string = ''
6543
6544 // deal with leading zeros
6545 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
6546 // convert digits to a string
6547 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
6548
6549 return string
6550 }
6551
6552 function decodeUnsafe (string) {
6553 if (string.length === 0) return Buffer.allocUnsafe(0)
6554
6555 var bytes = [0]
6556 for (var i = 0; i < string.length; i++) {
6557 var value = ALPHABET_MAP[string[i]]
6558 if (value === undefined) return
6559
6560 for (var j = 0, carry = value; j < bytes.length; ++j) {
6561 carry += bytes[j] * BASE
6562 bytes[j] = carry & 0xff
6563 carry >>= 8
6564 }
6565
6566 while (carry > 0) {
6567 bytes.push(carry & 0xff)
6568 carry >>= 8
6569 }
6570 }
6571
6572 // deal with leading zeros
6573 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
6574 bytes.push(0)
6575 }
6576
6577 return Buffer.from(bytes.reverse())
6578 }
6579
6580 function decode (string) {
6581 var buffer = decodeUnsafe(string)
6582 if (buffer) return buffer
6583
6584 throw new Error('Non-base' + BASE + ' character')
6585 }
6586
6587 return {
6588 encode: encode,
6589 decodeUnsafe: decodeUnsafe,
6590 decode: decode
6591 }
6592 }
6593
6594 },{"safe-buffer":6}],6:[function(require,module,exports){
6595 module.exports = require('buffer')
6596
6597 },{"buffer":2}]},{},[4])(4)
6598 });</script>
6599 <script>(function (root) {
6600 "use strict";
6601
6602 /***** unorm.js *****/
6603
6604 /*
6605 * UnicodeNormalizer 1.0.0
6606 * Copyright (c) 2008 Matsuza
6607 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
6608 * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
6609 * $Rev: 13309 $
6610 */
6611
6612 var DEFAULT_FEATURE = [null, 0, {}];
6613 var CACHE_THRESHOLD = 10;
6614 var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;
6615 var NCount = VCount * TCount; // 588
6616 var SCount = LCount * NCount; // 11172
6617
6618 var UChar = function(cp, feature){
6619 this.codepoint = cp;
6620 this.feature = feature;
6621 };
6622
6623 // Strategies
6624 var cache = {};
6625 var cacheCounter = [];
6626 for (var i = 0; i <= 0xFF; ++i){
6627 cacheCounter[i] = 0;
6628 }
6629
6630 function fromCache(next, cp, needFeature){
6631 var ret = cache[cp];
6632 if(!ret){
6633 ret = next(cp, needFeature);
6634 if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){
6635 cache[cp] = ret;
6636 }
6637 }
6638 return ret;
6639 }
6640
6641 function fromData(next, cp, needFeature){
6642 var hash = cp & 0xFF00;
6643 var dunit = UChar.udata[hash] || {};
6644 var f = dunit[cp];
6645 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
6646 }
6647 function fromCpOnly(next, cp, needFeature){
6648 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
6649 }
6650 function fromRuleBasedJamo(next, cp, needFeature){
6651 var j;
6652 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
6653 return next(cp, needFeature);
6654 }
6655 if(LBase <= cp && cp < LBase + LCount){
6656 var c = {};
6657 var base = (cp - LBase) * VCount;
6658 for (j = 0; j < VCount; ++j){
6659 c[VBase + j] = SBase + TCount * (j + base);
6660 }
6661 return new UChar(cp, [,,c]);
6662 }
6663
6664 var SIndex = cp - SBase;
6665 var TIndex = SIndex % TCount;
6666 var feature = [];
6667 if(TIndex !== 0){
6668 feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
6669 } else {
6670 feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
6671 feature[2] = {};
6672 for (j = 1; j < TCount; ++j){
6673 feature[2][TBase + j] = cp + j;
6674 }
6675 }
6676 return new UChar(cp, feature);
6677 }
6678 function fromCpFilter(next, cp, needFeature){
6679 return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
6680 }
6681
6682 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
6683
6684 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
6685 return function (cp, needFeature) {
6686 return strategy(next, cp, needFeature);
6687 };
6688 }, null);
6689
6690 UChar.isHighSurrogate = function(cp){
6691 return cp >= 0xD800 && cp <= 0xDBFF;
6692 };
6693 UChar.isLowSurrogate = function(cp){
6694 return cp >= 0xDC00 && cp <= 0xDFFF;
6695 };
6696
6697 UChar.prototype.prepFeature = function(){
6698 if(!this.feature){
6699 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
6700 }
6701 };
6702
6703 UChar.prototype.toString = function(){
6704 if(this.codepoint < 0x10000){
6705 return String.fromCharCode(this.codepoint);
6706 } else {
6707 var x = this.codepoint - 0x10000;
6708 return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
6709 }
6710 };
6711
6712 UChar.prototype.getDecomp = function(){
6713 this.prepFeature();
6714 return this.feature[0] || null;
6715 };
6716
6717 UChar.prototype.isCompatibility = function(){
6718 this.prepFeature();
6719 return !!this.feature[1] && (this.feature[1] & (1 << 8));
6720 };
6721 UChar.prototype.isExclude = function(){
6722 this.prepFeature();
6723 return !!this.feature[1] && (this.feature[1] & (1 << 9));
6724 };
6725 UChar.prototype.getCanonicalClass = function(){
6726 this.prepFeature();
6727 return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
6728 };
6729 UChar.prototype.getComposite = function(following){
6730 this.prepFeature();
6731 if(!this.feature[2]){
6732 return null;
6733 }
6734 var cp = this.feature[2][following.codepoint];
6735 return cp ? UChar.fromCharCode(cp) : null;
6736 };
6737
6738 var UCharIterator = function(str){
6739 this.str = str;
6740 this.cursor = 0;
6741 };
6742 UCharIterator.prototype.next = function(){
6743 if(!!this.str && this.cursor < this.str.length){
6744 var cp = this.str.charCodeAt(this.cursor++);
6745 var d;
6746 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
6747 cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;
6748 ++this.cursor;
6749 }
6750 return UChar.fromCharCode(cp);
6751 } else {
6752 this.str = null;
6753 return null;
6754 }
6755 };
6756
6757 var RecursDecompIterator = function(it, cano){
6758 this.it = it;
6759 this.canonical = cano;
6760 this.resBuf = [];
6761 };
6762
6763 RecursDecompIterator.prototype.next = function(){
6764 function recursiveDecomp(cano, uchar){
6765 var decomp = uchar.getDecomp();
6766 if(!!decomp && !(cano && uchar.isCompatibility())){
6767 var ret = [];
6768 for(var i = 0; i < decomp.length; ++i){
6769 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
6770 ret = ret.concat(a);
6771 }
6772 return ret;
6773 } else {
6774 return [uchar];
6775 }
6776 }
6777 if(this.resBuf.length === 0){
6778 var uchar = this.it.next();
6779 if(!uchar){
6780 return null;
6781 }
6782 this.resBuf = recursiveDecomp(this.canonical, uchar);
6783 }
6784 return this.resBuf.shift();
6785 };
6786
6787 var DecompIterator = function(it){
6788 this.it = it;
6789 this.resBuf = [];
6790 };
6791
6792 DecompIterator.prototype.next = function(){
6793 var cc;
6794 if(this.resBuf.length === 0){
6795 do{
6796 var uchar = this.it.next();
6797 if(!uchar){
6798 break;
6799 }
6800 cc = uchar.getCanonicalClass();
6801 var inspt = this.resBuf.length;
6802 if(cc !== 0){
6803 for(; inspt > 0; --inspt){
6804 var uchar2 = this.resBuf[inspt - 1];
6805 var cc2 = uchar2.getCanonicalClass();
6806 if(cc2 <= cc){
6807 break;
6808 }
6809 }
6810 }
6811 this.resBuf.splice(inspt, 0, uchar);
6812 } while(cc !== 0);
6813 }
6814 return this.resBuf.shift();
6815 };
6816
6817 var CompIterator = function(it){
6818 this.it = it;
6819 this.procBuf = [];
6820 this.resBuf = [];
6821 this.lastClass = null;
6822 };
6823
6824 CompIterator.prototype.next = function(){
6825 while(this.resBuf.length === 0){
6826 var uchar = this.it.next();
6827 if(!uchar){
6828 this.resBuf = this.procBuf;
6829 this.procBuf = [];
6830 break;
6831 }
6832 if(this.procBuf.length === 0){
6833 this.lastClass = uchar.getCanonicalClass();
6834 this.procBuf.push(uchar);
6835 } else {
6836 var starter = this.procBuf[0];
6837 var composite = starter.getComposite(uchar);
6838 var cc = uchar.getCanonicalClass();
6839 if(!!composite && (this.lastClass < cc || this.lastClass === 0)){
6840 this.procBuf[0] = composite;
6841 } else {
6842 if(cc === 0){
6843 this.resBuf = this.procBuf;
6844 this.procBuf = [];
6845 }
6846 this.lastClass = cc;
6847 this.procBuf.push(uchar);
6848 }
6849 }
6850 }
6851 return this.resBuf.shift();
6852 };
6853
6854 var createIterator = function(mode, str){
6855 switch(mode){
6856 case "NFD":
6857 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
6858 case "NFKD":
6859 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
6860 case "NFC":
6861 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
6862 case "NFKC":
6863 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
6864 }
6865 throw mode + " is invalid";
6866 };
6867 var normalize = function(mode, str){
6868 var it = createIterator(mode, str);
6869 var ret = "";
6870 var uchar;
6871 while(!!(uchar = it.next())){
6872 ret += uchar.toString();
6873 }
6874 return ret;
6875 };
6876
6877 /* API functions */
6878 function nfd(str){
6879 return normalize("NFD", str);
6880 }
6881
6882 function nfkd(str){
6883 return normalize("NFKD", str);
6884 }
6885
6886 function nfc(str){
6887 return normalize("NFC", str);
6888 }
6889
6890 function nfkc(str){
6891 return normalize("NFKC", str);
6892 }
6893
6894 /* Unicode data */
6895 UChar.udata={
6896 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]]},
6897 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]},
6898 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]},
6899 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]},
6900 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]]},
6901 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]},
6902 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]},
6903 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]},
6904 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]},
6905 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]},
6906 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]},
6907 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]},
6908 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]},
6909 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]]},
6910 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]},
6911 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]},
6912 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]},
6913 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]},
6914 4608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},
6915 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]},
6916 5120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},
6917 5376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},
6918 5632:{71231:[,9],71350:[,9],71351:[,7]},
6919 5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
6920 6144:{6313:[,228]},
6921 6400:{6457:[,222],6458:[,230],6459:[,220]},
6922 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]},
6923 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]},
6924 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]},
6925 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]},
6926 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]]},
6927 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}]},
6928 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]},
6929 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}]},
6930 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]]},
6931 8960:{9001:[[12296]],9002:[[12297]]},
6932 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]},
6933 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]},
6934 11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
6935 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]},
6936 11776:{11935:[[27597],256],12019:[[40863],256]},
6937 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]},
6938 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]},
6939 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]},
6940 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]},
6941 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]},
6942 27136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},
6943 27392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},
6944 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]},
6945 42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
6946 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]},
6947 43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
6948 43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
6949 43776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},
6950 48128:{113822:[,1]},
6951 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]},
6952 53760:{119362:[,230],119363:[,230],119364:[,230]},
6953 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]},
6954 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]},
6955 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]},
6956 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]},
6957 59392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},
6958 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]},
6959 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]},
6960 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]},
6961 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]]},
6962 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]]},
6963 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]]},
6964 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]},
6965 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]},
6966 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]},
6967 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]},
6968 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]}
6969
6970 };
6971
6972 /***** Module to export */
6973 var unorm = {
6974 nfc: nfc,
6975 nfd: nfd,
6976 nfkc: nfkc,
6977 nfkd: nfkd
6978 };
6979
6980 /*globals module:true,define:true*/
6981
6982 // CommonJS
6983 if (typeof module === "object") {
6984 module.exports = unorm;
6985
6986 // AMD
6987 } else if (typeof define === "function" && define.amd) {
6988 define("unorm", function () {
6989 return unorm;
6990 });
6991
6992 // Global
6993 } else {
6994 root.unorm = unorm;
6995 }
6996
6997 /***** Export as shim for String::normalize method *****/
6998 /*
6999 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
7000
7001 21.1.3.12 String.prototype.normalize(form="NFC")
7002 When the normalize method is called with one argument form, the following steps are taken:
7003
7004 1. Let O be CheckObjectCoercible(this value).
7005 2. Let S be ToString(O).
7006 3. ReturnIfAbrupt(S).
7007 4. If form is not provided or undefined let form be "NFC".
7008 5. Let f be ToString(form).
7009 6. ReturnIfAbrupt(f).
7010 7. If f is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw a RangeError Exception.
7011 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.
7012 9. Return ns.
7013
7014 The length property of the normalize method is 0.
7015
7016 *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.
7017 */
7018 unorm.shimApplied = false;
7019
7020 if (!String.prototype.normalize) {
7021 String.prototype.normalize = function(form) {
7022 var str = "" + this;
7023 form = form === undefined ? "NFC" : form;
7024
7025 if (form === "NFC") {
7026 return unorm.nfc(str);
7027 } else if (form === "NFD") {
7028 return unorm.nfd(str);
7029 } else if (form === "NFKC") {
7030 return unorm.nfkc(str);
7031 } else if (form === "NFKD") {
7032 return unorm.nfkd(str);
7033 } else {
7034 throw new RangeError("Invalid normalization form: " + form);
7035 }
7036 };
7037
7038 unorm.shimApplied = true;
7039 }
7040 }(this));
7041 </script>
7042 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
7043 !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)
7044 },_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))
7045 },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});
7046 </script>
7047 <script>/*!
7048 * Bootstrap v3.2.0 (http://getbootstrap.com)
7049 * Copyright 2011-2014 Twitter, Inc.
7050 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7051 */
7052 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>
7053 <script>(function() {
7054 'use strict';
7055
7056 /**
7057 * Extend an Object with another Object's properties.
7058 *
7059 * The source objects are specified as additional arguments.
7060 *
7061 * @param dst Object the object to extend.
7062 *
7063 * @return Object the final object.
7064 */
7065 var _extend = function(dst) {
7066 var sources = Array.prototype.slice.call(arguments, 1);
7067 for (var i=0; i<sources.length; ++i) {
7068 var src = sources[i];
7069 for (var p in src) {
7070 if (src.hasOwnProperty(p)) dst[p] = src[p];
7071 }
7072 }
7073 return dst;
7074 };
7075
7076
7077 /**
7078 * Defer execution of given function.
7079 * @param {Function} func
7080 */
7081 var _defer = function(func) {
7082 if (typeof setImmediate === 'function') {
7083 return setImmediate(func);
7084 } else {
7085 return setTimeout(func, 0);
7086 }
7087 };
7088
7089 /**
7090 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
7091 */
7092 var Levenshtein = {
7093 /**
7094 * Calculate levenshtein distance of the two strings.
7095 *
7096 * @param str1 String the first string.
7097 * @param str2 String the second string.
7098 * @return Integer the levenshtein distance (0 and above).
7099 */
7100 get: function(str1, str2) {
7101 // base cases
7102 if (str1 === str2) return 0;
7103 if (str1.length === 0) return str2.length;
7104 if (str2.length === 0) return str1.length;
7105
7106 // two rows
7107 var prevRow = new Array(str2.length + 1),
7108 curCol, nextCol, i, j, tmp;
7109
7110 // initialise previous row
7111 for (i=0; i<prevRow.length; ++i) {
7112 prevRow[i] = i;
7113 }
7114
7115 // calculate current row distance from previous row
7116 for (i=0; i<str1.length; ++i) {
7117 nextCol = i + 1;
7118
7119 for (j=0; j<str2.length; ++j) {
7120 curCol = nextCol;
7121
7122 // substution
7123 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7124 // insertion
7125 tmp = curCol + 1;
7126 if (nextCol > tmp) {
7127 nextCol = tmp;
7128 }
7129 // deletion
7130 tmp = prevRow[j + 1] + 1;
7131 if (nextCol > tmp) {
7132 nextCol = tmp;
7133 }
7134
7135 // copy current col value into previous (in preparation for next iteration)
7136 prevRow[j] = curCol;
7137 }
7138
7139 // copy last col value into previous (in preparation for next iteration)
7140 prevRow[j] = nextCol;
7141 }
7142
7143 return nextCol;
7144 },
7145
7146 /**
7147 * Asynchronously calculate levenshtein distance of the two strings.
7148 *
7149 * @param str1 String the first string.
7150 * @param str2 String the second string.
7151 * @param cb Function callback function with signature: function(Error err, int distance)
7152 * @param [options] Object additional options.
7153 * @param [options.progress] Function progress callback with signature: function(percentComplete)
7154 */
7155 getAsync: function(str1, str2, cb, options) {
7156 options = _extend({}, {
7157 progress: null
7158 }, options);
7159
7160 // base cases
7161 if (str1 === str2) return cb(null, 0);
7162 if (str1.length === 0) return cb(null, str2.length);
7163 if (str2.length === 0) return cb(null, str1.length);
7164
7165 // two rows
7166 var prevRow = new Array(str2.length + 1),
7167 curCol, nextCol,
7168 i, j, tmp,
7169 startTime, currentTime;
7170
7171 // initialise previous row
7172 for (i=0; i<prevRow.length; ++i) {
7173 prevRow[i] = i;
7174 }
7175
7176 nextCol = 1;
7177 i = 0;
7178 j = -1;
7179
7180 var __calculate = function() {
7181 // reset timer
7182 startTime = new Date().valueOf();
7183 currentTime = startTime;
7184
7185 // keep going until one second has elapsed
7186 while (currentTime - startTime < 1000) {
7187 // reached end of current row?
7188 if (str2.length <= (++j)) {
7189 // copy current into previous (in preparation for next iteration)
7190 prevRow[j] = nextCol;
7191
7192 // if already done all chars
7193 if (str1.length <= (++i)) {
7194 return cb(null, nextCol);
7195 }
7196 // else if we have more left to do
7197 else {
7198 nextCol = i + 1;
7199 j = 0;
7200 }
7201 }
7202
7203 // calculation
7204 curCol = nextCol;
7205
7206 // substution
7207 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7208 // insertion
7209 tmp = curCol + 1;
7210 if (nextCol > tmp) {
7211 nextCol = tmp;
7212 }
7213 // deletion
7214 tmp = prevRow[j + 1] + 1;
7215 if (nextCol > tmp) {
7216 nextCol = tmp;
7217 }
7218
7219 // copy current into previous (in preparation for next iteration)
7220 prevRow[j] = curCol;
7221
7222 // get current time
7223 currentTime = new Date().valueOf();
7224 }
7225
7226 // send a progress update?
7227 if (null !== options.progress) {
7228 try {
7229 options.progress.call(null, (i * 100.0/ str1.length));
7230 } catch (err) {
7231 return cb('Progress callback: ' + err.toString());
7232 }
7233 }
7234
7235 // next iteration
7236 _defer(__calculate);
7237 };
7238
7239 __calculate();
7240 }
7241
7242 };
7243
7244 // amd
7245 if (typeof define !== "undefined" && define !== null && define.amd) {
7246 define(function() {
7247 return Levenshtein;
7248 });
7249 }
7250 // commonjs
7251 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
7252 module.exports = Levenshtein;
7253 }
7254 // web worker
7255 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
7256 self.Levenshtein = Levenshtein;
7257 }
7258 // browser main thread
7259 else if (typeof window !== "undefined" && window !== null) {
7260 window.Levenshtein = Levenshtein;
7261 }
7262 }());
7263
7264 </script>
7265 <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},
7266 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;
7267 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-
7268 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]=
7269 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},
7270 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=
7271 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-
7272 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,
7273 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=
7274 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&&
7275 (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,
7276 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)-
7277 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:"+
7278 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:"+
7279 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+
7280 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),
7281 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>
7282 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],
7283 [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,
7284 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,
7285 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,
7286 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,
7287 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,
7288 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*
7289 (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,
7290 correctLevel:2,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),
7291 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",
7292 d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
7293 </script>
7294 <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){
7295 (function (global){
7296 'use strict';
7297
7298 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
7299 // original notice:
7300
7301 /*!
7302 * The buffer module from node.js, for the browser.
7303 *
7304 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7305 * @license MIT
7306 */
7307 function compare(a, b) {
7308 if (a === b) {
7309 return 0;
7310 }
7311
7312 var x = a.length;
7313 var y = b.length;
7314
7315 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
7316 if (a[i] !== b[i]) {
7317 x = a[i];
7318 y = b[i];
7319 break;
7320 }
7321 }
7322
7323 if (x < y) {
7324 return -1;
7325 }
7326 if (y < x) {
7327 return 1;
7328 }
7329 return 0;
7330 }
7331 function isBuffer(b) {
7332 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
7333 return global.Buffer.isBuffer(b);
7334 }
7335 return !!(b != null && b._isBuffer);
7336 }
7337
7338 // based on node assert, original notice:
7339
7340 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
7341 //
7342 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
7343 //
7344 // Originally from narwhal.js (http://narwhaljs.org)
7345 // Copyright (c) 2009 Thomas Robinson <280north.com>
7346 //
7347 // Permission is hereby granted, free of charge, to any person obtaining a copy
7348 // of this software and associated documentation files (the 'Software'), to
7349 // deal in the Software without restriction, including without limitation the
7350 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7351 // sell copies of the Software, and to permit persons to whom the Software is
7352 // furnished to do so, subject to the following conditions:
7353 //
7354 // The above copyright notice and this permission notice shall be included in
7355 // all copies or substantial portions of the Software.
7356 //
7357 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7358 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7359 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
7360 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
7361 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
7362 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
7363
7364 var util = require('util/');
7365 var hasOwn = Object.prototype.hasOwnProperty;
7366 var pSlice = Array.prototype.slice;
7367 var functionsHaveNames = (function () {
7368 return function foo() {}.name === 'foo';
7369 }());
7370 function pToString (obj) {
7371 return Object.prototype.toString.call(obj);
7372 }
7373 function isView(arrbuf) {
7374 if (isBuffer(arrbuf)) {
7375 return false;
7376 }
7377 if (typeof global.ArrayBuffer !== 'function') {
7378 return false;
7379 }
7380 if (typeof ArrayBuffer.isView === 'function') {
7381 return ArrayBuffer.isView(arrbuf);
7382 }
7383 if (!arrbuf) {
7384 return false;
7385 }
7386 if (arrbuf instanceof DataView) {
7387 return true;
7388 }
7389 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
7390 return true;
7391 }
7392 return false;
7393 }
7394 // 1. The assert module provides functions that throw
7395 // AssertionError's when particular conditions are not met. The
7396 // assert module must conform to the following interface.
7397
7398 var assert = module.exports = ok;
7399
7400 // 2. The AssertionError is defined in assert.
7401 // new assert.AssertionError({ message: message,
7402 // actual: actual,
7403 // expected: expected })
7404
7405 var regex = /\s*function\s+([^\(\s]*)\s*/;
7406 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
7407 function getName(func) {
7408 if (!util.isFunction(func)) {
7409 return;
7410 }
7411 if (functionsHaveNames) {
7412 return func.name;
7413 }
7414 var str = func.toString();
7415 var match = str.match(regex);
7416 return match && match[1];
7417 }
7418 assert.AssertionError = function AssertionError(options) {
7419 this.name = 'AssertionError';
7420 this.actual = options.actual;
7421 this.expected = options.expected;
7422 this.operator = options.operator;
7423 if (options.message) {
7424 this.message = options.message;
7425 this.generatedMessage = false;
7426 } else {
7427 this.message = getMessage(this);
7428 this.generatedMessage = true;
7429 }
7430 var stackStartFunction = options.stackStartFunction || fail;
7431 if (Error.captureStackTrace) {
7432 Error.captureStackTrace(this, stackStartFunction);
7433 } else {
7434 // non v8 browsers so we can have a stacktrace
7435 var err = new Error();
7436 if (err.stack) {
7437 var out = err.stack;
7438
7439 // try to strip useless frames
7440 var fn_name = getName(stackStartFunction);
7441 var idx = out.indexOf('\n' + fn_name);
7442 if (idx >= 0) {
7443 // once we have located the function frame
7444 // we need to strip out everything before it (and its line)
7445 var next_line = out.indexOf('\n', idx + 1);
7446 out = out.substring(next_line + 1);
7447 }
7448
7449 this.stack = out;
7450 }
7451 }
7452 };
7453
7454 // assert.AssertionError instanceof Error
7455 util.inherits(assert.AssertionError, Error);
7456
7457 function truncate(s, n) {
7458 if (typeof s === 'string') {
7459 return s.length < n ? s : s.slice(0, n);
7460 } else {
7461 return s;
7462 }
7463 }
7464 function inspect(something) {
7465 if (functionsHaveNames || !util.isFunction(something)) {
7466 return util.inspect(something);
7467 }
7468 var rawname = getName(something);
7469 var name = rawname ? ': ' + rawname : '';
7470 return '[Function' + name + ']';
7471 }
7472 function getMessage(self) {
7473 return truncate(inspect(self.actual), 128) + ' ' +
7474 self.operator + ' ' +
7475 truncate(inspect(self.expected), 128);
7476 }
7477
7478 // At present only the three keys mentioned above are used and
7479 // understood by the spec. Implementations or sub modules can pass
7480 // other keys to the AssertionError's constructor - they will be
7481 // ignored.
7482
7483 // 3. All of the following functions must throw an AssertionError
7484 // when a corresponding condition is not met, with a message that
7485 // may be undefined if not provided. All assertion methods provide
7486 // both the actual and expected values to the assertion error for
7487 // display purposes.
7488
7489 function fail(actual, expected, message, operator, stackStartFunction) {
7490 throw new assert.AssertionError({
7491 message: message,
7492 actual: actual,
7493 expected: expected,
7494 operator: operator,
7495 stackStartFunction: stackStartFunction
7496 });
7497 }
7498
7499 // EXTENSION! allows for well behaved errors defined elsewhere.
7500 assert.fail = fail;
7501
7502 // 4. Pure assertion tests whether a value is truthy, as determined
7503 // by !!guard.
7504 // assert.ok(guard, message_opt);
7505 // This statement is equivalent to assert.equal(true, !!guard,
7506 // message_opt);. To test strictly for the value true, use
7507 // assert.strictEqual(true, guard, message_opt);.
7508
7509 function ok(value, message) {
7510 if (!value) fail(value, true, message, '==', assert.ok);
7511 }
7512 assert.ok = ok;
7513
7514 // 5. The equality assertion tests shallow, coercive equality with
7515 // ==.
7516 // assert.equal(actual, expected, message_opt);
7517
7518 assert.equal = function equal(actual, expected, message) {
7519 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
7520 };
7521
7522 // 6. The non-equality assertion tests for whether two objects are not equal
7523 // with != assert.notEqual(actual, expected, message_opt);
7524
7525 assert.notEqual = function notEqual(actual, expected, message) {
7526 if (actual == expected) {
7527 fail(actual, expected, message, '!=', assert.notEqual);
7528 }
7529 };
7530
7531 // 7. The equivalence assertion tests a deep equality relation.
7532 // assert.deepEqual(actual, expected, message_opt);
7533
7534 assert.deepEqual = function deepEqual(actual, expected, message) {
7535 if (!_deepEqual(actual, expected, false)) {
7536 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
7537 }
7538 };
7539
7540 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
7541 if (!_deepEqual(actual, expected, true)) {
7542 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
7543 }
7544 };
7545
7546 function _deepEqual(actual, expected, strict, memos) {
7547 // 7.1. All identical values are equivalent, as determined by ===.
7548 if (actual === expected) {
7549 return true;
7550 } else if (isBuffer(actual) && isBuffer(expected)) {
7551 return compare(actual, expected) === 0;
7552
7553 // 7.2. If the expected value is a Date object, the actual value is
7554 // equivalent if it is also a Date object that refers to the same time.
7555 } else if (util.isDate(actual) && util.isDate(expected)) {
7556 return actual.getTime() === expected.getTime();
7557
7558 // 7.3 If the expected value is a RegExp object, the actual value is
7559 // equivalent if it is also a RegExp object with the same source and
7560 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
7561 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
7562 return actual.source === expected.source &&
7563 actual.global === expected.global &&
7564 actual.multiline === expected.multiline &&
7565 actual.lastIndex === expected.lastIndex &&
7566 actual.ignoreCase === expected.ignoreCase;
7567
7568 // 7.4. Other pairs that do not both pass typeof value == 'object',
7569 // equivalence is determined by ==.
7570 } else if ((actual === null || typeof actual !== 'object') &&
7571 (expected === null || typeof expected !== 'object')) {
7572 return strict ? actual === expected : actual == expected;
7573
7574 // If both values are instances of typed arrays, wrap their underlying
7575 // ArrayBuffers in a Buffer each to increase performance
7576 // This optimization requires the arrays to have the same type as checked by
7577 // Object.prototype.toString (aka pToString). Never perform binary
7578 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
7579 // bit patterns are not identical.
7580 } else if (isView(actual) && isView(expected) &&
7581 pToString(actual) === pToString(expected) &&
7582 !(actual instanceof Float32Array ||
7583 actual instanceof Float64Array)) {
7584 return compare(new Uint8Array(actual.buffer),
7585 new Uint8Array(expected.buffer)) === 0;
7586
7587 // 7.5 For all other Object pairs, including Array objects, equivalence is
7588 // determined by having the same number of owned properties (as verified
7589 // with Object.prototype.hasOwnProperty.call), the same set of keys
7590 // (although not necessarily the same order), equivalent values for every
7591 // corresponding key, and an identical 'prototype' property. Note: this
7592 // accounts for both named and indexed properties on Arrays.
7593 } else if (isBuffer(actual) !== isBuffer(expected)) {
7594 return false;
7595 } else {
7596 memos = memos || {actual: [], expected: []};
7597
7598 var actualIndex = memos.actual.indexOf(actual);
7599 if (actualIndex !== -1) {
7600 if (actualIndex === memos.expected.indexOf(expected)) {
7601 return true;
7602 }
7603 }
7604
7605 memos.actual.push(actual);
7606 memos.expected.push(expected);
7607
7608 return objEquiv(actual, expected, strict, memos);
7609 }
7610 }
7611
7612 function isArguments(object) {
7613 return Object.prototype.toString.call(object) == '[object Arguments]';
7614 }
7615
7616 function objEquiv(a, b, strict, actualVisitedObjects) {
7617 if (a === null || a === undefined || b === null || b === undefined)
7618 return false;
7619 // if one is a primitive, the other must be same
7620 if (util.isPrimitive(a) || util.isPrimitive(b))
7621 return a === b;
7622 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
7623 return false;
7624 var aIsArgs = isArguments(a);
7625 var bIsArgs = isArguments(b);
7626 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
7627 return false;
7628 if (aIsArgs) {
7629 a = pSlice.call(a);
7630 b = pSlice.call(b);
7631 return _deepEqual(a, b, strict);
7632 }
7633 var ka = objectKeys(a);
7634 var kb = objectKeys(b);
7635 var key, i;
7636 // having the same number of owned properties (keys incorporates
7637 // hasOwnProperty)
7638 if (ka.length !== kb.length)
7639 return false;
7640 //the same set of keys (although not necessarily the same order),
7641 ka.sort();
7642 kb.sort();
7643 //~~~cheap key test
7644 for (i = ka.length - 1; i >= 0; i--) {
7645 if (ka[i] !== kb[i])
7646 return false;
7647 }
7648 //equivalent values for every corresponding key, and
7649 //~~~possibly expensive deep test
7650 for (i = ka.length - 1; i >= 0; i--) {
7651 key = ka[i];
7652 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
7653 return false;
7654 }
7655 return true;
7656 }
7657
7658 // 8. The non-equivalence assertion tests for any deep inequality.
7659 // assert.notDeepEqual(actual, expected, message_opt);
7660
7661 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
7662 if (_deepEqual(actual, expected, false)) {
7663 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
7664 }
7665 };
7666
7667 assert.notDeepStrictEqual = notDeepStrictEqual;
7668 function notDeepStrictEqual(actual, expected, message) {
7669 if (_deepEqual(actual, expected, true)) {
7670 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
7671 }
7672 }
7673
7674
7675 // 9. The strict equality assertion tests strict equality, as determined by ===.
7676 // assert.strictEqual(actual, expected, message_opt);
7677
7678 assert.strictEqual = function strictEqual(actual, expected, message) {
7679 if (actual !== expected) {
7680 fail(actual, expected, message, '===', assert.strictEqual);
7681 }
7682 };
7683
7684 // 10. The strict non-equality assertion tests for strict inequality, as
7685 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
7686
7687 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
7688 if (actual === expected) {
7689 fail(actual, expected, message, '!==', assert.notStrictEqual);
7690 }
7691 };
7692
7693 function expectedException(actual, expected) {
7694 if (!actual || !expected) {
7695 return false;
7696 }
7697
7698 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
7699 return expected.test(actual);
7700 }
7701
7702 try {
7703 if (actual instanceof expected) {
7704 return true;
7705 }
7706 } catch (e) {
7707 // Ignore. The instanceof check doesn't work for arrow functions.
7708 }
7709
7710 if (Error.isPrototypeOf(expected)) {
7711 return false;
7712 }
7713
7714 return expected.call({}, actual) === true;
7715 }
7716
7717 function _tryBlock(block) {
7718 var error;
7719 try {
7720 block();
7721 } catch (e) {
7722 error = e;
7723 }
7724 return error;
7725 }
7726
7727 function _throws(shouldThrow, block, expected, message) {
7728 var actual;
7729
7730 if (typeof block !== 'function') {
7731 throw new TypeError('"block" argument must be a function');
7732 }
7733
7734 if (typeof expected === 'string') {
7735 message = expected;
7736 expected = null;
7737 }
7738
7739 actual = _tryBlock(block);
7740
7741 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
7742 (message ? ' ' + message : '.');
7743
7744 if (shouldThrow && !actual) {
7745 fail(actual, expected, 'Missing expected exception' + message);
7746 }
7747
7748 var userProvidedMessage = typeof message === 'string';
7749 var isUnwantedException = !shouldThrow && util.isError(actual);
7750 var isUnexpectedException = !shouldThrow && actual && !expected;
7751
7752 if ((isUnwantedException &&
7753 userProvidedMessage &&
7754 expectedException(actual, expected)) ||
7755 isUnexpectedException) {
7756 fail(actual, expected, 'Got unwanted exception' + message);
7757 }
7758
7759 if ((shouldThrow && actual && expected &&
7760 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
7761 throw actual;
7762 }
7763 }
7764
7765 // 11. Expected to throw an error:
7766 // assert.throws(block, Error_opt, message_opt);
7767
7768 assert.throws = function(block, /*optional*/error, /*optional*/message) {
7769 _throws(true, block, error, message);
7770 };
7771
7772 // EXTENSION! This is annoying to write outside this module.
7773 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
7774 _throws(false, block, error, message);
7775 };
7776
7777 assert.ifError = function(err) { if (err) throw err; };
7778
7779 var objectKeys = Object.keys || function (obj) {
7780 var keys = [];
7781 for (var key in obj) {
7782 if (hasOwn.call(obj, key)) keys.push(key);
7783 }
7784 return keys;
7785 };
7786
7787 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
7788 },{"util/":32}],2:[function(require,module,exports){
7789 'use strict'
7790
7791 exports.byteLength = byteLength
7792 exports.toByteArray = toByteArray
7793 exports.fromByteArray = fromByteArray
7794
7795 var lookup = []
7796 var revLookup = []
7797 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
7798
7799 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
7800 for (var i = 0, len = code.length; i < len; ++i) {
7801 lookup[i] = code[i]
7802 revLookup[code.charCodeAt(i)] = i
7803 }
7804
7805 revLookup['-'.charCodeAt(0)] = 62
7806 revLookup['_'.charCodeAt(0)] = 63
7807
7808 function placeHoldersCount (b64) {
7809 var len = b64.length
7810 if (len % 4 > 0) {
7811 throw new Error('Invalid string. Length must be a multiple of 4')
7812 }
7813
7814 // the number of equal signs (place holders)
7815 // if there are two placeholders, than the two characters before it
7816 // represent one byte
7817 // if there is only one, then the three characters before it represent 2 bytes
7818 // this is just a cheap hack to not do indexOf twice
7819 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
7820 }
7821
7822 function byteLength (b64) {
7823 // base64 is 4/3 + up to two characters of the original data
7824 return (b64.length * 3 / 4) - placeHoldersCount(b64)
7825 }
7826
7827 function toByteArray (b64) {
7828 var i, l, tmp, placeHolders, arr
7829 var len = b64.length
7830 placeHolders = placeHoldersCount(b64)
7831
7832 arr = new Arr((len * 3 / 4) - placeHolders)
7833
7834 // if there are placeholders, only get up to the last complete 4 chars
7835 l = placeHolders > 0 ? len - 4 : len
7836
7837 var L = 0
7838
7839 for (i = 0; i < l; i += 4) {
7840 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
7841 arr[L++] = (tmp >> 16) & 0xFF
7842 arr[L++] = (tmp >> 8) & 0xFF
7843 arr[L++] = tmp & 0xFF
7844 }
7845
7846 if (placeHolders === 2) {
7847 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
7848 arr[L++] = tmp & 0xFF
7849 } else if (placeHolders === 1) {
7850 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
7851 arr[L++] = (tmp >> 8) & 0xFF
7852 arr[L++] = tmp & 0xFF
7853 }
7854
7855 return arr
7856 }
7857
7858 function tripletToBase64 (num) {
7859 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
7860 }
7861
7862 function encodeChunk (uint8, start, end) {
7863 var tmp
7864 var output = []
7865 for (var i = start; i < end; i += 3) {
7866 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
7867 output.push(tripletToBase64(tmp))
7868 }
7869 return output.join('')
7870 }
7871
7872 function fromByteArray (uint8) {
7873 var tmp
7874 var len = uint8.length
7875 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
7876 var output = ''
7877 var parts = []
7878 var maxChunkLength = 16383 // must be multiple of 3
7879
7880 // go through the array every three bytes, we'll deal with trailing stuff later
7881 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
7882 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
7883 }
7884
7885 // pad the end with zeros, but make sure to not forget the extra bytes
7886 if (extraBytes === 1) {
7887 tmp = uint8[len - 1]
7888 output += lookup[tmp >> 2]
7889 output += lookup[(tmp << 4) & 0x3F]
7890 output += '=='
7891 } else if (extraBytes === 2) {
7892 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
7893 output += lookup[tmp >> 10]
7894 output += lookup[(tmp >> 4) & 0x3F]
7895 output += lookup[(tmp << 2) & 0x3F]
7896 output += '='
7897 }
7898
7899 parts.push(output)
7900
7901 return parts.join('')
7902 }
7903
7904 },{}],3:[function(require,module,exports){
7905
7906 },{}],4:[function(require,module,exports){
7907 /*!
7908 * The buffer module from node.js, for the browser.
7909 *
7910 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7911 * @license MIT
7912 */
7913 /* eslint-disable no-proto */
7914
7915 'use strict'
7916
7917 var base64 = require('base64-js')
7918 var ieee754 = require('ieee754')
7919
7920 exports.Buffer = Buffer
7921 exports.SlowBuffer = SlowBuffer
7922 exports.INSPECT_MAX_BYTES = 50
7923
7924 var K_MAX_LENGTH = 0x7fffffff
7925 exports.kMaxLength = K_MAX_LENGTH
7926
7927 /**
7928 * If `Buffer.TYPED_ARRAY_SUPPORT`:
7929 * === true Use Uint8Array implementation (fastest)
7930 * === false Print warning and recommend using `buffer` v4.x which has an Object
7931 * implementation (most compatible, even IE6)
7932 *
7933 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
7934 * Opera 11.6+, iOS 4.2+.
7935 *
7936 * We report that the browser does not support typed arrays if the are not subclassable
7937 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
7938 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
7939 * for __proto__ and has a buggy typed array implementation.
7940 */
7941 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
7942
7943 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
7944 typeof console.error === 'function') {
7945 console.error(
7946 'This browser lacks typed array (Uint8Array) support which is required by ' +
7947 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
7948 )
7949 }
7950
7951 function typedArraySupport () {
7952 // Can typed array instances can be augmented?
7953 try {
7954 var arr = new Uint8Array(1)
7955 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
7956 return arr.foo() === 42
7957 } catch (e) {
7958 return false
7959 }
7960 }
7961
7962 function createBuffer (length) {
7963 if (length > K_MAX_LENGTH) {
7964 throw new RangeError('Invalid typed array length')
7965 }
7966 // Return an augmented `Uint8Array` instance
7967 var buf = new Uint8Array(length)
7968 buf.__proto__ = Buffer.prototype
7969 return buf
7970 }
7971
7972 /**
7973 * The Buffer constructor returns instances of `Uint8Array` that have their
7974 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
7975 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
7976 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
7977 * returns a single octet.
7978 *
7979 * The `Uint8Array` prototype remains unmodified.
7980 */
7981
7982 function Buffer (arg, encodingOrOffset, length) {
7983 // Common case.
7984 if (typeof arg === 'number') {
7985 if (typeof encodingOrOffset === 'string') {
7986 throw new Error(
7987 'If encoding is specified then the first argument must be a string'
7988 )
7989 }
7990 return allocUnsafe(arg)
7991 }
7992 return from(arg, encodingOrOffset, length)
7993 }
7994
7995 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
7996 if (typeof Symbol !== 'undefined' && Symbol.species &&
7997 Buffer[Symbol.species] === Buffer) {
7998 Object.defineProperty(Buffer, Symbol.species, {
7999 value: null,
8000 configurable: true,
8001 enumerable: false,
8002 writable: false
8003 })
8004 }
8005
8006 Buffer.poolSize = 8192 // not used by this implementation
8007
8008 function from (value, encodingOrOffset, length) {
8009 if (typeof value === 'number') {
8010 throw new TypeError('"value" argument must not be a number')
8011 }
8012
8013 if (value instanceof ArrayBuffer) {
8014 return fromArrayBuffer(value, encodingOrOffset, length)
8015 }
8016
8017 if (typeof value === 'string') {
8018 return fromString(value, encodingOrOffset)
8019 }
8020
8021 return fromObject(value)
8022 }
8023
8024 /**
8025 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
8026 * if value is a number.
8027 * Buffer.from(str[, encoding])
8028 * Buffer.from(array)
8029 * Buffer.from(buffer)
8030 * Buffer.from(arrayBuffer[, byteOffset[, length]])
8031 **/
8032 Buffer.from = function (value, encodingOrOffset, length) {
8033 return from(value, encodingOrOffset, length)
8034 }
8035
8036 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
8037 // https://github.com/feross/buffer/pull/148
8038 Buffer.prototype.__proto__ = Uint8Array.prototype
8039 Buffer.__proto__ = Uint8Array
8040
8041 function assertSize (size) {
8042 if (typeof size !== 'number') {
8043 throw new TypeError('"size" argument must be a number')
8044 } else if (size < 0) {
8045 throw new RangeError('"size" argument must not be negative')
8046 }
8047 }
8048
8049 function alloc (size, fill, encoding) {
8050 assertSize(size)
8051 if (size <= 0) {
8052 return createBuffer(size)
8053 }
8054 if (fill !== undefined) {
8055 // Only pay attention to encoding if it's a string. This
8056 // prevents accidentally sending in a number that would
8057 // be interpretted as a start offset.
8058 return typeof encoding === 'string'
8059 ? createBuffer(size).fill(fill, encoding)
8060 : createBuffer(size).fill(fill)
8061 }
8062 return createBuffer(size)
8063 }
8064
8065 /**
8066 * Creates a new filled Buffer instance.
8067 * alloc(size[, fill[, encoding]])
8068 **/
8069 Buffer.alloc = function (size, fill, encoding) {
8070 return alloc(size, fill, encoding)
8071 }
8072
8073 function allocUnsafe (size) {
8074 assertSize(size)
8075 return createBuffer(size < 0 ? 0 : checked(size) | 0)
8076 }
8077
8078 /**
8079 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
8080 * */
8081 Buffer.allocUnsafe = function (size) {
8082 return allocUnsafe(size)
8083 }
8084 /**
8085 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
8086 */
8087 Buffer.allocUnsafeSlow = function (size) {
8088 return allocUnsafe(size)
8089 }
8090
8091 function fromString (string, encoding) {
8092 if (typeof encoding !== 'string' || encoding === '') {
8093 encoding = 'utf8'
8094 }
8095
8096 if (!Buffer.isEncoding(encoding)) {
8097 throw new TypeError('"encoding" must be a valid string encoding')
8098 }
8099
8100 var length = byteLength(string, encoding) | 0
8101 var buf = createBuffer(length)
8102
8103 var actual = buf.write(string, encoding)
8104
8105 if (actual !== length) {
8106 // Writing a hex string, for example, that contains invalid characters will
8107 // cause everything after the first invalid character to be ignored. (e.g.
8108 // 'abxxcd' will be treated as 'ab')
8109 buf = buf.slice(0, actual)
8110 }
8111
8112 return buf
8113 }
8114
8115 function fromArrayLike (array) {
8116 var length = array.length < 0 ? 0 : checked(array.length) | 0
8117 var buf = createBuffer(length)
8118 for (var i = 0; i < length; i += 1) {
8119 buf[i] = array[i] & 255
8120 }
8121 return buf
8122 }
8123
8124 function fromArrayBuffer (array, byteOffset, length) {
8125 if (byteOffset < 0 || array.byteLength < byteOffset) {
8126 throw new RangeError('\'offset\' is out of bounds')
8127 }
8128
8129 if (array.byteLength < byteOffset + (length || 0)) {
8130 throw new RangeError('\'length\' is out of bounds')
8131 }
8132
8133 var buf
8134 if (byteOffset === undefined && length === undefined) {
8135 buf = new Uint8Array(array)
8136 } else if (length === undefined) {
8137 buf = new Uint8Array(array, byteOffset)
8138 } else {
8139 buf = new Uint8Array(array, byteOffset, length)
8140 }
8141
8142 // Return an augmented `Uint8Array` instance
8143 buf.__proto__ = Buffer.prototype
8144 return buf
8145 }
8146
8147 function fromObject (obj) {
8148 if (Buffer.isBuffer(obj)) {
8149 var len = checked(obj.length) | 0
8150 var buf = createBuffer(len)
8151
8152 if (buf.length === 0) {
8153 return buf
8154 }
8155
8156 obj.copy(buf, 0, 0, len)
8157 return buf
8158 }
8159
8160 if (obj) {
8161 if (isArrayBufferView(obj) || 'length' in obj) {
8162 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
8163 return createBuffer(0)
8164 }
8165 return fromArrayLike(obj)
8166 }
8167
8168 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
8169 return fromArrayLike(obj.data)
8170 }
8171 }
8172
8173 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
8174 }
8175
8176 function checked (length) {
8177 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
8178 // length is NaN (which is otherwise coerced to zero.)
8179 if (length >= K_MAX_LENGTH) {
8180 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
8181 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
8182 }
8183 return length | 0
8184 }
8185
8186 function SlowBuffer (length) {
8187 if (+length != length) { // eslint-disable-line eqeqeq
8188 length = 0
8189 }
8190 return Buffer.alloc(+length)
8191 }
8192
8193 Buffer.isBuffer = function isBuffer (b) {
8194 return b != null && b._isBuffer === true
8195 }
8196
8197 Buffer.compare = function compare (a, b) {
8198 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
8199 throw new TypeError('Arguments must be Buffers')
8200 }
8201
8202 if (a === b) return 0
8203
8204 var x = a.length
8205 var y = b.length
8206
8207 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
8208 if (a[i] !== b[i]) {
8209 x = a[i]
8210 y = b[i]
8211 break
8212 }
8213 }
8214
8215 if (x < y) return -1
8216 if (y < x) return 1
8217 return 0
8218 }
8219
8220 Buffer.isEncoding = function isEncoding (encoding) {
8221 switch (String(encoding).toLowerCase()) {
8222 case 'hex':
8223 case 'utf8':
8224 case 'utf-8':
8225 case 'ascii':
8226 case 'latin1':
8227 case 'binary':
8228 case 'base64':
8229 case 'ucs2':
8230 case 'ucs-2':
8231 case 'utf16le':
8232 case 'utf-16le':
8233 return true
8234 default:
8235 return false
8236 }
8237 }
8238
8239 Buffer.concat = function concat (list, length) {
8240 if (!Array.isArray(list)) {
8241 throw new TypeError('"list" argument must be an Array of Buffers')
8242 }
8243
8244 if (list.length === 0) {
8245 return Buffer.alloc(0)
8246 }
8247
8248 var i
8249 if (length === undefined) {
8250 length = 0
8251 for (i = 0; i < list.length; ++i) {
8252 length += list[i].length
8253 }
8254 }
8255
8256 var buffer = Buffer.allocUnsafe(length)
8257 var pos = 0
8258 for (i = 0; i < list.length; ++i) {
8259 var buf = list[i]
8260 if (!Buffer.isBuffer(buf)) {
8261 throw new TypeError('"list" argument must be an Array of Buffers')
8262 }
8263 buf.copy(buffer, pos)
8264 pos += buf.length
8265 }
8266 return buffer
8267 }
8268
8269 function byteLength (string, encoding) {
8270 if (Buffer.isBuffer(string)) {
8271 return string.length
8272 }
8273 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
8274 return string.byteLength
8275 }
8276 if (typeof string !== 'string') {
8277 string = '' + string
8278 }
8279
8280 var len = string.length
8281 if (len === 0) return 0
8282
8283 // Use a for loop to avoid recursion
8284 var loweredCase = false
8285 for (;;) {
8286 switch (encoding) {
8287 case 'ascii':
8288 case 'latin1':
8289 case 'binary':
8290 return len
8291 case 'utf8':
8292 case 'utf-8':
8293 case undefined:
8294 return utf8ToBytes(string).length
8295 case 'ucs2':
8296 case 'ucs-2':
8297 case 'utf16le':
8298 case 'utf-16le':
8299 return len * 2
8300 case 'hex':
8301 return len >>> 1
8302 case 'base64':
8303 return base64ToBytes(string).length
8304 default:
8305 if (loweredCase) return utf8ToBytes(string).length // assume utf8
8306 encoding = ('' + encoding).toLowerCase()
8307 loweredCase = true
8308 }
8309 }
8310 }
8311 Buffer.byteLength = byteLength
8312
8313 function slowToString (encoding, start, end) {
8314 var loweredCase = false
8315
8316 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
8317 // property of a typed array.
8318
8319 // This behaves neither like String nor Uint8Array in that we set start/end
8320 // to their upper/lower bounds if the value passed is out of range.
8321 // undefined is handled specially as per ECMA-262 6th Edition,
8322 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
8323 if (start === undefined || start < 0) {
8324 start = 0
8325 }
8326 // Return early if start > this.length. Done here to prevent potential uint32
8327 // coercion fail below.
8328 if (start > this.length) {
8329 return ''
8330 }
8331
8332 if (end === undefined || end > this.length) {
8333 end = this.length
8334 }
8335
8336 if (end <= 0) {
8337 return ''
8338 }
8339
8340 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
8341 end >>>= 0
8342 start >>>= 0
8343
8344 if (end <= start) {
8345 return ''
8346 }
8347
8348 if (!encoding) encoding = 'utf8'
8349
8350 while (true) {
8351 switch (encoding) {
8352 case 'hex':
8353 return hexSlice(this, start, end)
8354
8355 case 'utf8':
8356 case 'utf-8':
8357 return utf8Slice(this, start, end)
8358
8359 case 'ascii':
8360 return asciiSlice(this, start, end)
8361
8362 case 'latin1':
8363 case 'binary':
8364 return latin1Slice(this, start, end)
8365
8366 case 'base64':
8367 return base64Slice(this, start, end)
8368
8369 case 'ucs2':
8370 case 'ucs-2':
8371 case 'utf16le':
8372 case 'utf-16le':
8373 return utf16leSlice(this, start, end)
8374
8375 default:
8376 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8377 encoding = (encoding + '').toLowerCase()
8378 loweredCase = true
8379 }
8380 }
8381 }
8382
8383 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
8384 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
8385 // reliably in a browserify context because there could be multiple different
8386 // copies of the 'buffer' package in use. This method works even for Buffer
8387 // instances that were created from another copy of the `buffer` package.
8388 // See: https://github.com/feross/buffer/issues/154
8389 Buffer.prototype._isBuffer = true
8390
8391 function swap (b, n, m) {
8392 var i = b[n]
8393 b[n] = b[m]
8394 b[m] = i
8395 }
8396
8397 Buffer.prototype.swap16 = function swap16 () {
8398 var len = this.length
8399 if (len % 2 !== 0) {
8400 throw new RangeError('Buffer size must be a multiple of 16-bits')
8401 }
8402 for (var i = 0; i < len; i += 2) {
8403 swap(this, i, i + 1)
8404 }
8405 return this
8406 }
8407
8408 Buffer.prototype.swap32 = function swap32 () {
8409 var len = this.length
8410 if (len % 4 !== 0) {
8411 throw new RangeError('Buffer size must be a multiple of 32-bits')
8412 }
8413 for (var i = 0; i < len; i += 4) {
8414 swap(this, i, i + 3)
8415 swap(this, i + 1, i + 2)
8416 }
8417 return this
8418 }
8419
8420 Buffer.prototype.swap64 = function swap64 () {
8421 var len = this.length
8422 if (len % 8 !== 0) {
8423 throw new RangeError('Buffer size must be a multiple of 64-bits')
8424 }
8425 for (var i = 0; i < len; i += 8) {
8426 swap(this, i, i + 7)
8427 swap(this, i + 1, i + 6)
8428 swap(this, i + 2, i + 5)
8429 swap(this, i + 3, i + 4)
8430 }
8431 return this
8432 }
8433
8434 Buffer.prototype.toString = function toString () {
8435 var length = this.length
8436 if (length === 0) return ''
8437 if (arguments.length === 0) return utf8Slice(this, 0, length)
8438 return slowToString.apply(this, arguments)
8439 }
8440
8441 Buffer.prototype.equals = function equals (b) {
8442 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
8443 if (this === b) return true
8444 return Buffer.compare(this, b) === 0
8445 }
8446
8447 Buffer.prototype.inspect = function inspect () {
8448 var str = ''
8449 var max = exports.INSPECT_MAX_BYTES
8450 if (this.length > 0) {
8451 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
8452 if (this.length > max) str += ' ... '
8453 }
8454 return '<Buffer ' + str + '>'
8455 }
8456
8457 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
8458 if (!Buffer.isBuffer(target)) {
8459 throw new TypeError('Argument must be a Buffer')
8460 }
8461
8462 if (start === undefined) {
8463 start = 0
8464 }
8465 if (end === undefined) {
8466 end = target ? target.length : 0
8467 }
8468 if (thisStart === undefined) {
8469 thisStart = 0
8470 }
8471 if (thisEnd === undefined) {
8472 thisEnd = this.length
8473 }
8474
8475 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
8476 throw new RangeError('out of range index')
8477 }
8478
8479 if (thisStart >= thisEnd && start >= end) {
8480 return 0
8481 }
8482 if (thisStart >= thisEnd) {
8483 return -1
8484 }
8485 if (start >= end) {
8486 return 1
8487 }
8488
8489 start >>>= 0
8490 end >>>= 0
8491 thisStart >>>= 0
8492 thisEnd >>>= 0
8493
8494 if (this === target) return 0
8495
8496 var x = thisEnd - thisStart
8497 var y = end - start
8498 var len = Math.min(x, y)
8499
8500 var thisCopy = this.slice(thisStart, thisEnd)
8501 var targetCopy = target.slice(start, end)
8502
8503 for (var i = 0; i < len; ++i) {
8504 if (thisCopy[i] !== targetCopy[i]) {
8505 x = thisCopy[i]
8506 y = targetCopy[i]
8507 break
8508 }
8509 }
8510
8511 if (x < y) return -1
8512 if (y < x) return 1
8513 return 0
8514 }
8515
8516 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
8517 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
8518 //
8519 // Arguments:
8520 // - buffer - a Buffer to search
8521 // - val - a string, Buffer, or number
8522 // - byteOffset - an index into `buffer`; will be clamped to an int32
8523 // - encoding - an optional encoding, relevant is val is a string
8524 // - dir - true for indexOf, false for lastIndexOf
8525 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
8526 // Empty buffer means no match
8527 if (buffer.length === 0) return -1
8528
8529 // Normalize byteOffset
8530 if (typeof byteOffset === 'string') {
8531 encoding = byteOffset
8532 byteOffset = 0
8533 } else if (byteOffset > 0x7fffffff) {
8534 byteOffset = 0x7fffffff
8535 } else if (byteOffset < -0x80000000) {
8536 byteOffset = -0x80000000
8537 }
8538 byteOffset = +byteOffset // Coerce to Number.
8539 if (numberIsNaN(byteOffset)) {
8540 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
8541 byteOffset = dir ? 0 : (buffer.length - 1)
8542 }
8543
8544 // Normalize byteOffset: negative offsets start from the end of the buffer
8545 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
8546 if (byteOffset >= buffer.length) {
8547 if (dir) return -1
8548 else byteOffset = buffer.length - 1
8549 } else if (byteOffset < 0) {
8550 if (dir) byteOffset = 0
8551 else return -1
8552 }
8553
8554 // Normalize val
8555 if (typeof val === 'string') {
8556 val = Buffer.from(val, encoding)
8557 }
8558
8559 // Finally, search either indexOf (if dir is true) or lastIndexOf
8560 if (Buffer.isBuffer(val)) {
8561 // Special case: looking for empty string/buffer always fails
8562 if (val.length === 0) {
8563 return -1
8564 }
8565 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
8566 } else if (typeof val === 'number') {
8567 val = val & 0xFF // Search for a byte value [0-255]
8568 if (typeof Uint8Array.prototype.indexOf === 'function') {
8569 if (dir) {
8570 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
8571 } else {
8572 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
8573 }
8574 }
8575 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
8576 }
8577
8578 throw new TypeError('val must be string, number or Buffer')
8579 }
8580
8581 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
8582 var indexSize = 1
8583 var arrLength = arr.length
8584 var valLength = val.length
8585
8586 if (encoding !== undefined) {
8587 encoding = String(encoding).toLowerCase()
8588 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
8589 encoding === 'utf16le' || encoding === 'utf-16le') {
8590 if (arr.length < 2 || val.length < 2) {
8591 return -1
8592 }
8593 indexSize = 2
8594 arrLength /= 2
8595 valLength /= 2
8596 byteOffset /= 2
8597 }
8598 }
8599
8600 function read (buf, i) {
8601 if (indexSize === 1) {
8602 return buf[i]
8603 } else {
8604 return buf.readUInt16BE(i * indexSize)
8605 }
8606 }
8607
8608 var i
8609 if (dir) {
8610 var foundIndex = -1
8611 for (i = byteOffset; i < arrLength; i++) {
8612 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
8613 if (foundIndex === -1) foundIndex = i
8614 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
8615 } else {
8616 if (foundIndex !== -1) i -= i - foundIndex
8617 foundIndex = -1
8618 }
8619 }
8620 } else {
8621 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
8622 for (i = byteOffset; i >= 0; i--) {
8623 var found = true
8624 for (var j = 0; j < valLength; j++) {
8625 if (read(arr, i + j) !== read(val, j)) {
8626 found = false
8627 break
8628 }
8629 }
8630 if (found) return i
8631 }
8632 }
8633
8634 return -1
8635 }
8636
8637 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
8638 return this.indexOf(val, byteOffset, encoding) !== -1
8639 }
8640
8641 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
8642 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
8643 }
8644
8645 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
8646 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
8647 }
8648
8649 function hexWrite (buf, string, offset, length) {
8650 offset = Number(offset) || 0
8651 var remaining = buf.length - offset
8652 if (!length) {
8653 length = remaining
8654 } else {
8655 length = Number(length)
8656 if (length > remaining) {
8657 length = remaining
8658 }
8659 }
8660
8661 // must be an even number of digits
8662 var strLen = string.length
8663 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
8664
8665 if (length > strLen / 2) {
8666 length = strLen / 2
8667 }
8668 for (var i = 0; i < length; ++i) {
8669 var parsed = parseInt(string.substr(i * 2, 2), 16)
8670 if (numberIsNaN(parsed)) return i
8671 buf[offset + i] = parsed
8672 }
8673 return i
8674 }
8675
8676 function utf8Write (buf, string, offset, length) {
8677 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
8678 }
8679
8680 function asciiWrite (buf, string, offset, length) {
8681 return blitBuffer(asciiToBytes(string), buf, offset, length)
8682 }
8683
8684 function latin1Write (buf, string, offset, length) {
8685 return asciiWrite(buf, string, offset, length)
8686 }
8687
8688 function base64Write (buf, string, offset, length) {
8689 return blitBuffer(base64ToBytes(string), buf, offset, length)
8690 }
8691
8692 function ucs2Write (buf, string, offset, length) {
8693 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
8694 }
8695
8696 Buffer.prototype.write = function write (string, offset, length, encoding) {
8697 // Buffer#write(string)
8698 if (offset === undefined) {
8699 encoding = 'utf8'
8700 length = this.length
8701 offset = 0
8702 // Buffer#write(string, encoding)
8703 } else if (length === undefined && typeof offset === 'string') {
8704 encoding = offset
8705 length = this.length
8706 offset = 0
8707 // Buffer#write(string, offset[, length][, encoding])
8708 } else if (isFinite(offset)) {
8709 offset = offset >>> 0
8710 if (isFinite(length)) {
8711 length = length >>> 0
8712 if (encoding === undefined) encoding = 'utf8'
8713 } else {
8714 encoding = length
8715 length = undefined
8716 }
8717 } else {
8718 throw new Error(
8719 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
8720 )
8721 }
8722
8723 var remaining = this.length - offset
8724 if (length === undefined || length > remaining) length = remaining
8725
8726 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
8727 throw new RangeError('Attempt to write outside buffer bounds')
8728 }
8729
8730 if (!encoding) encoding = 'utf8'
8731
8732 var loweredCase = false
8733 for (;;) {
8734 switch (encoding) {
8735 case 'hex':
8736 return hexWrite(this, string, offset, length)
8737
8738 case 'utf8':
8739 case 'utf-8':
8740 return utf8Write(this, string, offset, length)
8741
8742 case 'ascii':
8743 return asciiWrite(this, string, offset, length)
8744
8745 case 'latin1':
8746 case 'binary':
8747 return latin1Write(this, string, offset, length)
8748
8749 case 'base64':
8750 // Warning: maxLength not taken into account in base64Write
8751 return base64Write(this, string, offset, length)
8752
8753 case 'ucs2':
8754 case 'ucs-2':
8755 case 'utf16le':
8756 case 'utf-16le':
8757 return ucs2Write(this, string, offset, length)
8758
8759 default:
8760 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8761 encoding = ('' + encoding).toLowerCase()
8762 loweredCase = true
8763 }
8764 }
8765 }
8766
8767 Buffer.prototype.toJSON = function toJSON () {
8768 return {
8769 type: 'Buffer',
8770 data: Array.prototype.slice.call(this._arr || this, 0)
8771 }
8772 }
8773
8774 function base64Slice (buf, start, end) {
8775 if (start === 0 && end === buf.length) {
8776 return base64.fromByteArray(buf)
8777 } else {
8778 return base64.fromByteArray(buf.slice(start, end))
8779 }
8780 }
8781
8782 function utf8Slice (buf, start, end) {
8783 end = Math.min(buf.length, end)
8784 var res = []
8785
8786 var i = start
8787 while (i < end) {
8788 var firstByte = buf[i]
8789 var codePoint = null
8790 var bytesPerSequence = (firstByte > 0xEF) ? 4
8791 : (firstByte > 0xDF) ? 3
8792 : (firstByte > 0xBF) ? 2
8793 : 1
8794
8795 if (i + bytesPerSequence <= end) {
8796 var secondByte, thirdByte, fourthByte, tempCodePoint
8797
8798 switch (bytesPerSequence) {
8799 case 1:
8800 if (firstByte < 0x80) {
8801 codePoint = firstByte
8802 }
8803 break
8804 case 2:
8805 secondByte = buf[i + 1]
8806 if ((secondByte & 0xC0) === 0x80) {
8807 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
8808 if (tempCodePoint > 0x7F) {
8809 codePoint = tempCodePoint
8810 }
8811 }
8812 break
8813 case 3:
8814 secondByte = buf[i + 1]
8815 thirdByte = buf[i + 2]
8816 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
8817 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
8818 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
8819 codePoint = tempCodePoint
8820 }
8821 }
8822 break
8823 case 4:
8824 secondByte = buf[i + 1]
8825 thirdByte = buf[i + 2]
8826 fourthByte = buf[i + 3]
8827 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
8828 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
8829 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
8830 codePoint = tempCodePoint
8831 }
8832 }
8833 }
8834 }
8835
8836 if (codePoint === null) {
8837 // we did not generate a valid codePoint so insert a
8838 // replacement char (U+FFFD) and advance only 1 byte
8839 codePoint = 0xFFFD
8840 bytesPerSequence = 1
8841 } else if (codePoint > 0xFFFF) {
8842 // encode to utf16 (surrogate pair dance)
8843 codePoint -= 0x10000
8844 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
8845 codePoint = 0xDC00 | codePoint & 0x3FF
8846 }
8847
8848 res.push(codePoint)
8849 i += bytesPerSequence
8850 }
8851
8852 return decodeCodePointsArray(res)
8853 }
8854
8855 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
8856 // the lowest limit is Chrome, with 0x10000 args.
8857 // We go 1 magnitude less, for safety
8858 var MAX_ARGUMENTS_LENGTH = 0x1000
8859
8860 function decodeCodePointsArray (codePoints) {
8861 var len = codePoints.length
8862 if (len <= MAX_ARGUMENTS_LENGTH) {
8863 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
8864 }
8865
8866 // Decode in chunks to avoid "call stack size exceeded".
8867 var res = ''
8868 var i = 0
8869 while (i < len) {
8870 res += String.fromCharCode.apply(
8871 String,
8872 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
8873 )
8874 }
8875 return res
8876 }
8877
8878 function asciiSlice (buf, start, end) {
8879 var ret = ''
8880 end = Math.min(buf.length, end)
8881
8882 for (var i = start; i < end; ++i) {
8883 ret += String.fromCharCode(buf[i] & 0x7F)
8884 }
8885 return ret
8886 }
8887
8888 function latin1Slice (buf, start, end) {
8889 var ret = ''
8890 end = Math.min(buf.length, end)
8891
8892 for (var i = start; i < end; ++i) {
8893 ret += String.fromCharCode(buf[i])
8894 }
8895 return ret
8896 }
8897
8898 function hexSlice (buf, start, end) {
8899 var len = buf.length
8900
8901 if (!start || start < 0) start = 0
8902 if (!end || end < 0 || end > len) end = len
8903
8904 var out = ''
8905 for (var i = start; i < end; ++i) {
8906 out += toHex(buf[i])
8907 }
8908 return out
8909 }
8910
8911 function utf16leSlice (buf, start, end) {
8912 var bytes = buf.slice(start, end)
8913 var res = ''
8914 for (var i = 0; i < bytes.length; i += 2) {
8915 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
8916 }
8917 return res
8918 }
8919
8920 Buffer.prototype.slice = function slice (start, end) {
8921 var len = this.length
8922 start = ~~start
8923 end = end === undefined ? len : ~~end
8924
8925 if (start < 0) {
8926 start += len
8927 if (start < 0) start = 0
8928 } else if (start > len) {
8929 start = len
8930 }
8931
8932 if (end < 0) {
8933 end += len
8934 if (end < 0) end = 0
8935 } else if (end > len) {
8936 end = len
8937 }
8938
8939 if (end < start) end = start
8940
8941 var newBuf = this.subarray(start, end)
8942 // Return an augmented `Uint8Array` instance
8943 newBuf.__proto__ = Buffer.prototype
8944 return newBuf
8945 }
8946
8947 /*
8948 * Need to make sure that buffer isn't trying to write out of bounds.
8949 */
8950 function checkOffset (offset, ext, length) {
8951 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
8952 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
8953 }
8954
8955 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
8956 offset = offset >>> 0
8957 byteLength = byteLength >>> 0
8958 if (!noAssert) checkOffset(offset, byteLength, this.length)
8959
8960 var val = this[offset]
8961 var mul = 1
8962 var i = 0
8963 while (++i < byteLength && (mul *= 0x100)) {
8964 val += this[offset + i] * mul
8965 }
8966
8967 return val
8968 }
8969
8970 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
8971 offset = offset >>> 0
8972 byteLength = byteLength >>> 0
8973 if (!noAssert) {
8974 checkOffset(offset, byteLength, this.length)
8975 }
8976
8977 var val = this[offset + --byteLength]
8978 var mul = 1
8979 while (byteLength > 0 && (mul *= 0x100)) {
8980 val += this[offset + --byteLength] * mul
8981 }
8982
8983 return val
8984 }
8985
8986 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
8987 offset = offset >>> 0
8988 if (!noAssert) checkOffset(offset, 1, this.length)
8989 return this[offset]
8990 }
8991
8992 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
8993 offset = offset >>> 0
8994 if (!noAssert) checkOffset(offset, 2, this.length)
8995 return this[offset] | (this[offset + 1] << 8)
8996 }
8997
8998 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
8999 offset = offset >>> 0
9000 if (!noAssert) checkOffset(offset, 2, this.length)
9001 return (this[offset] << 8) | this[offset + 1]
9002 }
9003
9004 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
9005 offset = offset >>> 0
9006 if (!noAssert) checkOffset(offset, 4, this.length)
9007
9008 return ((this[offset]) |
9009 (this[offset + 1] << 8) |
9010 (this[offset + 2] << 16)) +
9011 (this[offset + 3] * 0x1000000)
9012 }
9013
9014 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
9015 offset = offset >>> 0
9016 if (!noAssert) checkOffset(offset, 4, this.length)
9017
9018 return (this[offset] * 0x1000000) +
9019 ((this[offset + 1] << 16) |
9020 (this[offset + 2] << 8) |
9021 this[offset + 3])
9022 }
9023
9024 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
9025 offset = offset >>> 0
9026 byteLength = byteLength >>> 0
9027 if (!noAssert) checkOffset(offset, byteLength, this.length)
9028
9029 var val = this[offset]
9030 var mul = 1
9031 var i = 0
9032 while (++i < byteLength && (mul *= 0x100)) {
9033 val += this[offset + i] * mul
9034 }
9035 mul *= 0x80
9036
9037 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
9038
9039 return val
9040 }
9041
9042 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
9043 offset = offset >>> 0
9044 byteLength = byteLength >>> 0
9045 if (!noAssert) checkOffset(offset, byteLength, this.length)
9046
9047 var i = byteLength
9048 var mul = 1
9049 var val = this[offset + --i]
9050 while (i > 0 && (mul *= 0x100)) {
9051 val += this[offset + --i] * mul
9052 }
9053 mul *= 0x80
9054
9055 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
9056
9057 return val
9058 }
9059
9060 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
9061 offset = offset >>> 0
9062 if (!noAssert) checkOffset(offset, 1, this.length)
9063 if (!(this[offset] & 0x80)) return (this[offset])
9064 return ((0xff - this[offset] + 1) * -1)
9065 }
9066
9067 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
9068 offset = offset >>> 0
9069 if (!noAssert) checkOffset(offset, 2, this.length)
9070 var val = this[offset] | (this[offset + 1] << 8)
9071 return (val & 0x8000) ? val | 0xFFFF0000 : val
9072 }
9073
9074 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
9075 offset = offset >>> 0
9076 if (!noAssert) checkOffset(offset, 2, this.length)
9077 var val = this[offset + 1] | (this[offset] << 8)
9078 return (val & 0x8000) ? val | 0xFFFF0000 : val
9079 }
9080
9081 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
9082 offset = offset >>> 0
9083 if (!noAssert) checkOffset(offset, 4, this.length)
9084
9085 return (this[offset]) |
9086 (this[offset + 1] << 8) |
9087 (this[offset + 2] << 16) |
9088 (this[offset + 3] << 24)
9089 }
9090
9091 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
9092 offset = offset >>> 0
9093 if (!noAssert) checkOffset(offset, 4, this.length)
9094
9095 return (this[offset] << 24) |
9096 (this[offset + 1] << 16) |
9097 (this[offset + 2] << 8) |
9098 (this[offset + 3])
9099 }
9100
9101 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
9102 offset = offset >>> 0
9103 if (!noAssert) checkOffset(offset, 4, this.length)
9104 return ieee754.read(this, offset, true, 23, 4)
9105 }
9106
9107 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
9108 offset = offset >>> 0
9109 if (!noAssert) checkOffset(offset, 4, this.length)
9110 return ieee754.read(this, offset, false, 23, 4)
9111 }
9112
9113 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
9114 offset = offset >>> 0
9115 if (!noAssert) checkOffset(offset, 8, this.length)
9116 return ieee754.read(this, offset, true, 52, 8)
9117 }
9118
9119 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
9120 offset = offset >>> 0
9121 if (!noAssert) checkOffset(offset, 8, this.length)
9122 return ieee754.read(this, offset, false, 52, 8)
9123 }
9124
9125 function checkInt (buf, value, offset, ext, max, min) {
9126 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
9127 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
9128 if (offset + ext > buf.length) throw new RangeError('Index out of range')
9129 }
9130
9131 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
9132 value = +value
9133 offset = offset >>> 0
9134 byteLength = byteLength >>> 0
9135 if (!noAssert) {
9136 var maxBytes = Math.pow(2, 8 * byteLength) - 1
9137 checkInt(this, value, offset, byteLength, maxBytes, 0)
9138 }
9139
9140 var mul = 1
9141 var i = 0
9142 this[offset] = value & 0xFF
9143 while (++i < byteLength && (mul *= 0x100)) {
9144 this[offset + i] = (value / mul) & 0xFF
9145 }
9146
9147 return offset + byteLength
9148 }
9149
9150 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
9151 value = +value
9152 offset = offset >>> 0
9153 byteLength = byteLength >>> 0
9154 if (!noAssert) {
9155 var maxBytes = Math.pow(2, 8 * byteLength) - 1
9156 checkInt(this, value, offset, byteLength, maxBytes, 0)
9157 }
9158
9159 var i = byteLength - 1
9160 var mul = 1
9161 this[offset + i] = value & 0xFF
9162 while (--i >= 0 && (mul *= 0x100)) {
9163 this[offset + i] = (value / mul) & 0xFF
9164 }
9165
9166 return offset + byteLength
9167 }
9168
9169 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
9170 value = +value
9171 offset = offset >>> 0
9172 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
9173 this[offset] = (value & 0xff)
9174 return offset + 1
9175 }
9176
9177 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
9178 value = +value
9179 offset = offset >>> 0
9180 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
9181 this[offset] = (value & 0xff)
9182 this[offset + 1] = (value >>> 8)
9183 return offset + 2
9184 }
9185
9186 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
9187 value = +value
9188 offset = offset >>> 0
9189 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
9190 this[offset] = (value >>> 8)
9191 this[offset + 1] = (value & 0xff)
9192 return offset + 2
9193 }
9194
9195 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
9196 value = +value
9197 offset = offset >>> 0
9198 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
9199 this[offset + 3] = (value >>> 24)
9200 this[offset + 2] = (value >>> 16)
9201 this[offset + 1] = (value >>> 8)
9202 this[offset] = (value & 0xff)
9203 return offset + 4
9204 }
9205
9206 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
9207 value = +value
9208 offset = offset >>> 0
9209 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
9210 this[offset] = (value >>> 24)
9211 this[offset + 1] = (value >>> 16)
9212 this[offset + 2] = (value >>> 8)
9213 this[offset + 3] = (value & 0xff)
9214 return offset + 4
9215 }
9216
9217 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
9218 value = +value
9219 offset = offset >>> 0
9220 if (!noAssert) {
9221 var limit = Math.pow(2, (8 * byteLength) - 1)
9222
9223 checkInt(this, value, offset, byteLength, limit - 1, -limit)
9224 }
9225
9226 var i = 0
9227 var mul = 1
9228 var sub = 0
9229 this[offset] = value & 0xFF
9230 while (++i < byteLength && (mul *= 0x100)) {
9231 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
9232 sub = 1
9233 }
9234 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
9235 }
9236
9237 return offset + byteLength
9238 }
9239
9240 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
9241 value = +value
9242 offset = offset >>> 0
9243 if (!noAssert) {
9244 var limit = Math.pow(2, (8 * byteLength) - 1)
9245
9246 checkInt(this, value, offset, byteLength, limit - 1, -limit)
9247 }
9248
9249 var i = byteLength - 1
9250 var mul = 1
9251 var sub = 0
9252 this[offset + i] = value & 0xFF
9253 while (--i >= 0 && (mul *= 0x100)) {
9254 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
9255 sub = 1
9256 }
9257 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
9258 }
9259
9260 return offset + byteLength
9261 }
9262
9263 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
9264 value = +value
9265 offset = offset >>> 0
9266 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
9267 if (value < 0) value = 0xff + value + 1
9268 this[offset] = (value & 0xff)
9269 return offset + 1
9270 }
9271
9272 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
9273 value = +value
9274 offset = offset >>> 0
9275 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
9276 this[offset] = (value & 0xff)
9277 this[offset + 1] = (value >>> 8)
9278 return offset + 2
9279 }
9280
9281 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
9282 value = +value
9283 offset = offset >>> 0
9284 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
9285 this[offset] = (value >>> 8)
9286 this[offset + 1] = (value & 0xff)
9287 return offset + 2
9288 }
9289
9290 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
9291 value = +value
9292 offset = offset >>> 0
9293 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
9294 this[offset] = (value & 0xff)
9295 this[offset + 1] = (value >>> 8)
9296 this[offset + 2] = (value >>> 16)
9297 this[offset + 3] = (value >>> 24)
9298 return offset + 4
9299 }
9300
9301 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
9302 value = +value
9303 offset = offset >>> 0
9304 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
9305 if (value < 0) value = 0xffffffff + value + 1
9306 this[offset] = (value >>> 24)
9307 this[offset + 1] = (value >>> 16)
9308 this[offset + 2] = (value >>> 8)
9309 this[offset + 3] = (value & 0xff)
9310 return offset + 4
9311 }
9312
9313 function checkIEEE754 (buf, value, offset, ext, max, min) {
9314 if (offset + ext > buf.length) throw new RangeError('Index out of range')
9315 if (offset < 0) throw new RangeError('Index out of range')
9316 }
9317
9318 function writeFloat (buf, value, offset, littleEndian, noAssert) {
9319 value = +value
9320 offset = offset >>> 0
9321 if (!noAssert) {
9322 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
9323 }
9324 ieee754.write(buf, value, offset, littleEndian, 23, 4)
9325 return offset + 4
9326 }
9327
9328 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
9329 return writeFloat(this, value, offset, true, noAssert)
9330 }
9331
9332 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
9333 return writeFloat(this, value, offset, false, noAssert)
9334 }
9335
9336 function writeDouble (buf, value, offset, littleEndian, noAssert) {
9337 value = +value
9338 offset = offset >>> 0
9339 if (!noAssert) {
9340 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
9341 }
9342 ieee754.write(buf, value, offset, littleEndian, 52, 8)
9343 return offset + 8
9344 }
9345
9346 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
9347 return writeDouble(this, value, offset, true, noAssert)
9348 }
9349
9350 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
9351 return writeDouble(this, value, offset, false, noAssert)
9352 }
9353
9354 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
9355 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
9356 if (!start) start = 0
9357 if (!end && end !== 0) end = this.length
9358 if (targetStart >= target.length) targetStart = target.length
9359 if (!targetStart) targetStart = 0
9360 if (end > 0 && end < start) end = start
9361
9362 // Copy 0 bytes; we're done
9363 if (end === start) return 0
9364 if (target.length === 0 || this.length === 0) return 0
9365
9366 // Fatal error conditions
9367 if (targetStart < 0) {
9368 throw new RangeError('targetStart out of bounds')
9369 }
9370 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
9371 if (end < 0) throw new RangeError('sourceEnd out of bounds')
9372
9373 // Are we oob?
9374 if (end > this.length) end = this.length
9375 if (target.length - targetStart < end - start) {
9376 end = target.length - targetStart + start
9377 }
9378
9379 var len = end - start
9380 var i
9381
9382 if (this === target && start < targetStart && targetStart < end) {
9383 // descending copy from end
9384 for (i = len - 1; i >= 0; --i) {
9385 target[i + targetStart] = this[i + start]
9386 }
9387 } else if (len < 1000) {
9388 // ascending copy from start
9389 for (i = 0; i < len; ++i) {
9390 target[i + targetStart] = this[i + start]
9391 }
9392 } else {
9393 Uint8Array.prototype.set.call(
9394 target,
9395 this.subarray(start, start + len),
9396 targetStart
9397 )
9398 }
9399
9400 return len
9401 }
9402
9403 // Usage:
9404 // buffer.fill(number[, offset[, end]])
9405 // buffer.fill(buffer[, offset[, end]])
9406 // buffer.fill(string[, offset[, end]][, encoding])
9407 Buffer.prototype.fill = function fill (val, start, end, encoding) {
9408 // Handle string cases:
9409 if (typeof val === 'string') {
9410 if (typeof start === 'string') {
9411 encoding = start
9412 start = 0
9413 end = this.length
9414 } else if (typeof end === 'string') {
9415 encoding = end
9416 end = this.length
9417 }
9418 if (val.length === 1) {
9419 var code = val.charCodeAt(0)
9420 if (code < 256) {
9421 val = code
9422 }
9423 }
9424 if (encoding !== undefined && typeof encoding !== 'string') {
9425 throw new TypeError('encoding must be a string')
9426 }
9427 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
9428 throw new TypeError('Unknown encoding: ' + encoding)
9429 }
9430 } else if (typeof val === 'number') {
9431 val = val & 255
9432 }
9433
9434 // Invalid ranges are not set to a default, so can range check early.
9435 if (start < 0 || this.length < start || this.length < end) {
9436 throw new RangeError('Out of range index')
9437 }
9438
9439 if (end <= start) {
9440 return this
9441 }
9442
9443 start = start >>> 0
9444 end = end === undefined ? this.length : end >>> 0
9445
9446 if (!val) val = 0
9447
9448 var i
9449 if (typeof val === 'number') {
9450 for (i = start; i < end; ++i) {
9451 this[i] = val
9452 }
9453 } else {
9454 var bytes = Buffer.isBuffer(val)
9455 ? val
9456 : new Buffer(val, encoding)
9457 var len = bytes.length
9458 for (i = 0; i < end - start; ++i) {
9459 this[i + start] = bytes[i % len]
9460 }
9461 }
9462
9463 return this
9464 }
9465
9466 // HELPER FUNCTIONS
9467 // ================
9468
9469 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
9470
9471 function base64clean (str) {
9472 // Node strips out invalid characters like \n and \t from the string, base64-js does not
9473 str = str.trim().replace(INVALID_BASE64_RE, '')
9474 // Node converts strings with length < 2 to ''
9475 if (str.length < 2) return ''
9476 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
9477 while (str.length % 4 !== 0) {
9478 str = str + '='
9479 }
9480 return str
9481 }
9482
9483 function toHex (n) {
9484 if (n < 16) return '0' + n.toString(16)
9485 return n.toString(16)
9486 }
9487
9488 function utf8ToBytes (string, units) {
9489 units = units || Infinity
9490 var codePoint
9491 var length = string.length
9492 var leadSurrogate = null
9493 var bytes = []
9494
9495 for (var i = 0; i < length; ++i) {
9496 codePoint = string.charCodeAt(i)
9497
9498 // is surrogate component
9499 if (codePoint > 0xD7FF && codePoint < 0xE000) {
9500 // last char was a lead
9501 if (!leadSurrogate) {
9502 // no lead yet
9503 if (codePoint > 0xDBFF) {
9504 // unexpected trail
9505 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9506 continue
9507 } else if (i + 1 === length) {
9508 // unpaired lead
9509 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9510 continue
9511 }
9512
9513 // valid lead
9514 leadSurrogate = codePoint
9515
9516 continue
9517 }
9518
9519 // 2 leads in a row
9520 if (codePoint < 0xDC00) {
9521 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9522 leadSurrogate = codePoint
9523 continue
9524 }
9525
9526 // valid surrogate pair
9527 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
9528 } else if (leadSurrogate) {
9529 // valid bmp char, but last char was a lead
9530 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9531 }
9532
9533 leadSurrogate = null
9534
9535 // encode utf8
9536 if (codePoint < 0x80) {
9537 if ((units -= 1) < 0) break
9538 bytes.push(codePoint)
9539 } else if (codePoint < 0x800) {
9540 if ((units -= 2) < 0) break
9541 bytes.push(
9542 codePoint >> 0x6 | 0xC0,
9543 codePoint & 0x3F | 0x80
9544 )
9545 } else if (codePoint < 0x10000) {
9546 if ((units -= 3) < 0) break
9547 bytes.push(
9548 codePoint >> 0xC | 0xE0,
9549 codePoint >> 0x6 & 0x3F | 0x80,
9550 codePoint & 0x3F | 0x80
9551 )
9552 } else if (codePoint < 0x110000) {
9553 if ((units -= 4) < 0) break
9554 bytes.push(
9555 codePoint >> 0x12 | 0xF0,
9556 codePoint >> 0xC & 0x3F | 0x80,
9557 codePoint >> 0x6 & 0x3F | 0x80,
9558 codePoint & 0x3F | 0x80
9559 )
9560 } else {
9561 throw new Error('Invalid code point')
9562 }
9563 }
9564
9565 return bytes
9566 }
9567
9568 function asciiToBytes (str) {
9569 var byteArray = []
9570 for (var i = 0; i < str.length; ++i) {
9571 // Node's code seems to be doing this and not & 0x7F..
9572 byteArray.push(str.charCodeAt(i) & 0xFF)
9573 }
9574 return byteArray
9575 }
9576
9577 function utf16leToBytes (str, units) {
9578 var c, hi, lo
9579 var byteArray = []
9580 for (var i = 0; i < str.length; ++i) {
9581 if ((units -= 2) < 0) break
9582
9583 c = str.charCodeAt(i)
9584 hi = c >> 8
9585 lo = c % 256
9586 byteArray.push(lo)
9587 byteArray.push(hi)
9588 }
9589
9590 return byteArray
9591 }
9592
9593 function base64ToBytes (str) {
9594 return base64.toByteArray(base64clean(str))
9595 }
9596
9597 function blitBuffer (src, dst, offset, length) {
9598 for (var i = 0; i < length; ++i) {
9599 if ((i + offset >= dst.length) || (i >= src.length)) break
9600 dst[i + offset] = src[i]
9601 }
9602 return i
9603 }
9604
9605 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
9606 function isArrayBufferView (obj) {
9607 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
9608 }
9609
9610 function numberIsNaN (obj) {
9611 return obj !== obj // eslint-disable-line no-self-compare
9612 }
9613
9614 },{"base64-js":2,"ieee754":7}],5:[function(require,module,exports){
9615 (function (Buffer){
9616 // Copyright Joyent, Inc. and other Node contributors.
9617 //
9618 // Permission is hereby granted, free of charge, to any person obtaining a
9619 // copy of this software and associated documentation files (the
9620 // "Software"), to deal in the Software without restriction, including
9621 // without limitation the rights to use, copy, modify, merge, publish,
9622 // distribute, sublicense, and/or sell copies of the Software, and to permit
9623 // persons to whom the Software is furnished to do so, subject to the
9624 // following conditions:
9625 //
9626 // The above copyright notice and this permission notice shall be included
9627 // in all copies or substantial portions of the Software.
9628 //
9629 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9630 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9631 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9632 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9633 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9634 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9635 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9636
9637 // NOTE: These type checking functions intentionally don't use `instanceof`
9638 // because it is fragile and can be easily faked with `Object.create()`.
9639
9640 function isArray(arg) {
9641 if (Array.isArray) {
9642 return Array.isArray(arg);
9643 }
9644 return objectToString(arg) === '[object Array]';
9645 }
9646 exports.isArray = isArray;
9647
9648 function isBoolean(arg) {
9649 return typeof arg === 'boolean';
9650 }
9651 exports.isBoolean = isBoolean;
9652
9653 function isNull(arg) {
9654 return arg === null;
9655 }
9656 exports.isNull = isNull;
9657
9658 function isNullOrUndefined(arg) {
9659 return arg == null;
9660 }
9661 exports.isNullOrUndefined = isNullOrUndefined;
9662
9663 function isNumber(arg) {
9664 return typeof arg === 'number';
9665 }
9666 exports.isNumber = isNumber;
9667
9668 function isString(arg) {
9669 return typeof arg === 'string';
9670 }
9671 exports.isString = isString;
9672
9673 function isSymbol(arg) {
9674 return typeof arg === 'symbol';
9675 }
9676 exports.isSymbol = isSymbol;
9677
9678 function isUndefined(arg) {
9679 return arg === void 0;
9680 }
9681 exports.isUndefined = isUndefined;
9682
9683 function isRegExp(re) {
9684 return objectToString(re) === '[object RegExp]';
9685 }
9686 exports.isRegExp = isRegExp;
9687
9688 function isObject(arg) {
9689 return typeof arg === 'object' && arg !== null;
9690 }
9691 exports.isObject = isObject;
9692
9693 function isDate(d) {
9694 return objectToString(d) === '[object Date]';
9695 }
9696 exports.isDate = isDate;
9697
9698 function isError(e) {
9699 return (objectToString(e) === '[object Error]' || e instanceof Error);
9700 }
9701 exports.isError = isError;
9702
9703 function isFunction(arg) {
9704 return typeof arg === 'function';
9705 }
9706 exports.isFunction = isFunction;
9707
9708 function isPrimitive(arg) {
9709 return arg === null ||
9710 typeof arg === 'boolean' ||
9711 typeof arg === 'number' ||
9712 typeof arg === 'string' ||
9713 typeof arg === 'symbol' || // ES6 symbol
9714 typeof arg === 'undefined';
9715 }
9716 exports.isPrimitive = isPrimitive;
9717
9718 exports.isBuffer = Buffer.isBuffer;
9719
9720 function objectToString(o) {
9721 return Object.prototype.toString.call(o);
9722 }
9723
9724 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
9725 },{"../../is-buffer/index.js":9}],6:[function(require,module,exports){
9726 // Copyright Joyent, Inc. and other Node contributors.
9727 //
9728 // Permission is hereby granted, free of charge, to any person obtaining a
9729 // copy of this software and associated documentation files (the
9730 // "Software"), to deal in the Software without restriction, including
9731 // without limitation the rights to use, copy, modify, merge, publish,
9732 // distribute, sublicense, and/or sell copies of the Software, and to permit
9733 // persons to whom the Software is furnished to do so, subject to the
9734 // following conditions:
9735 //
9736 // The above copyright notice and this permission notice shall be included
9737 // in all copies or substantial portions of the Software.
9738 //
9739 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9740 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9741 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9742 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9743 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9744 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9745 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9746
9747 function EventEmitter() {
9748 this._events = this._events || {};
9749 this._maxListeners = this._maxListeners || undefined;
9750 }
9751 module.exports = EventEmitter;
9752
9753 // Backwards-compat with node 0.10.x
9754 EventEmitter.EventEmitter = EventEmitter;
9755
9756 EventEmitter.prototype._events = undefined;
9757 EventEmitter.prototype._maxListeners = undefined;
9758
9759 // By default EventEmitters will print a warning if more than 10 listeners are
9760 // added to it. This is a useful default which helps finding memory leaks.
9761 EventEmitter.defaultMaxListeners = 10;
9762
9763 // Obviously not all Emitters should be limited to 10. This function allows
9764 // that to be increased. Set to zero for unlimited.
9765 EventEmitter.prototype.setMaxListeners = function(n) {
9766 if (!isNumber(n) || n < 0 || isNaN(n))
9767 throw TypeError('n must be a positive number');
9768 this._maxListeners = n;
9769 return this;
9770 };
9771
9772 EventEmitter.prototype.emit = function(type) {
9773 var er, handler, len, args, i, listeners;
9774
9775 if (!this._events)
9776 this._events = {};
9777
9778 // If there is no 'error' event listener then throw.
9779 if (type === 'error') {
9780 if (!this._events.error ||
9781 (isObject(this._events.error) && !this._events.error.length)) {
9782 er = arguments[1];
9783 if (er instanceof Error) {
9784 throw er; // Unhandled 'error' event
9785 } else {
9786 // At least give some kind of context to the user
9787 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
9788 err.context = er;
9789 throw err;
9790 }
9791 }
9792 }
9793
9794 handler = this._events[type];
9795
9796 if (isUndefined(handler))
9797 return false;
9798
9799 if (isFunction(handler)) {
9800 switch (arguments.length) {
9801 // fast cases
9802 case 1:
9803 handler.call(this);
9804 break;
9805 case 2:
9806 handler.call(this, arguments[1]);
9807 break;
9808 case 3:
9809 handler.call(this, arguments[1], arguments[2]);
9810 break;
9811 // slower
9812 default:
9813 args = Array.prototype.slice.call(arguments, 1);
9814 handler.apply(this, args);
9815 }
9816 } else if (isObject(handler)) {
9817 args = Array.prototype.slice.call(arguments, 1);
9818 listeners = handler.slice();
9819 len = listeners.length;
9820 for (i = 0; i < len; i++)
9821 listeners[i].apply(this, args);
9822 }
9823
9824 return true;
9825 };
9826
9827 EventEmitter.prototype.addListener = function(type, listener) {
9828 var m;
9829
9830 if (!isFunction(listener))
9831 throw TypeError('listener must be a function');
9832
9833 if (!this._events)
9834 this._events = {};
9835
9836 // To avoid recursion in the case that type === "newListener"! Before
9837 // adding it to the listeners, first emit "newListener".
9838 if (this._events.newListener)
9839 this.emit('newListener', type,
9840 isFunction(listener.listener) ?
9841 listener.listener : listener);
9842
9843 if (!this._events[type])
9844 // Optimize the case of one listener. Don't need the extra array object.
9845 this._events[type] = listener;
9846 else if (isObject(this._events[type]))
9847 // If we've already got an array, just append.
9848 this._events[type].push(listener);
9849 else
9850 // Adding the second element, need to change to array.
9851 this._events[type] = [this._events[type], listener];
9852
9853 // Check for listener leak
9854 if (isObject(this._events[type]) && !this._events[type].warned) {
9855 if (!isUndefined(this._maxListeners)) {
9856 m = this._maxListeners;
9857 } else {
9858 m = EventEmitter.defaultMaxListeners;
9859 }
9860
9861 if (m && m > 0 && this._events[type].length > m) {
9862 this._events[type].warned = true;
9863 console.error('(node) warning: possible EventEmitter memory ' +
9864 'leak detected. %d listeners added. ' +
9865 'Use emitter.setMaxListeners() to increase limit.',
9866 this._events[type].length);
9867 if (typeof console.trace === 'function') {
9868 // not supported in IE 10
9869 console.trace();
9870 }
9871 }
9872 }
9873
9874 return this;
9875 };
9876
9877 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
9878
9879 EventEmitter.prototype.once = function(type, listener) {
9880 if (!isFunction(listener))
9881 throw TypeError('listener must be a function');
9882
9883 var fired = false;
9884
9885 function g() {
9886 this.removeListener(type, g);
9887
9888 if (!fired) {
9889 fired = true;
9890 listener.apply(this, arguments);
9891 }
9892 }
9893
9894 g.listener = listener;
9895 this.on(type, g);
9896
9897 return this;
9898 };
9899
9900 // emits a 'removeListener' event iff the listener was removed
9901 EventEmitter.prototype.removeListener = function(type, listener) {
9902 var list, position, length, i;
9903
9904 if (!isFunction(listener))
9905 throw TypeError('listener must be a function');
9906
9907 if (!this._events || !this._events[type])
9908 return this;
9909
9910 list = this._events[type];
9911 length = list.length;
9912 position = -1;
9913
9914 if (list === listener ||
9915 (isFunction(list.listener) && list.listener === listener)) {
9916 delete this._events[type];
9917 if (this._events.removeListener)
9918 this.emit('removeListener', type, listener);
9919
9920 } else if (isObject(list)) {
9921 for (i = length; i-- > 0;) {
9922 if (list[i] === listener ||
9923 (list[i].listener && list[i].listener === listener)) {
9924 position = i;
9925 break;
9926 }
9927 }
9928
9929 if (position < 0)
9930 return this;
9931
9932 if (list.length === 1) {
9933 list.length = 0;
9934 delete this._events[type];
9935 } else {
9936 list.splice(position, 1);
9937 }
9938
9939 if (this._events.removeListener)
9940 this.emit('removeListener', type, listener);
9941 }
9942
9943 return this;
9944 };
9945
9946 EventEmitter.prototype.removeAllListeners = function(type) {
9947 var key, listeners;
9948
9949 if (!this._events)
9950 return this;
9951
9952 // not listening for removeListener, no need to emit
9953 if (!this._events.removeListener) {
9954 if (arguments.length === 0)
9955 this._events = {};
9956 else if (this._events[type])
9957 delete this._events[type];
9958 return this;
9959 }
9960
9961 // emit removeListener for all listeners on all events
9962 if (arguments.length === 0) {
9963 for (key in this._events) {
9964 if (key === 'removeListener') continue;
9965 this.removeAllListeners(key);
9966 }
9967 this.removeAllListeners('removeListener');
9968 this._events = {};
9969 return this;
9970 }
9971
9972 listeners = this._events[type];
9973
9974 if (isFunction(listeners)) {
9975 this.removeListener(type, listeners);
9976 } else if (listeners) {
9977 // LIFO order
9978 while (listeners.length)
9979 this.removeListener(type, listeners[listeners.length - 1]);
9980 }
9981 delete this._events[type];
9982
9983 return this;
9984 };
9985
9986 EventEmitter.prototype.listeners = function(type) {
9987 var ret;
9988 if (!this._events || !this._events[type])
9989 ret = [];
9990 else if (isFunction(this._events[type]))
9991 ret = [this._events[type]];
9992 else
9993 ret = this._events[type].slice();
9994 return ret;
9995 };
9996
9997 EventEmitter.prototype.listenerCount = function(type) {
9998 if (this._events) {
9999 var evlistener = this._events[type];
10000
10001 if (isFunction(evlistener))
10002 return 1;
10003 else if (evlistener)
10004 return evlistener.length;
10005 }
10006 return 0;
10007 };
10008
10009 EventEmitter.listenerCount = function(emitter, type) {
10010 return emitter.listenerCount(type);
10011 };
10012
10013 function isFunction(arg) {
10014 return typeof arg === 'function';
10015 }
10016
10017 function isNumber(arg) {
10018 return typeof arg === 'number';
10019 }
10020
10021 function isObject(arg) {
10022 return typeof arg === 'object' && arg !== null;
10023 }
10024
10025 function isUndefined(arg) {
10026 return arg === void 0;
10027 }
10028
10029 },{}],7:[function(require,module,exports){
10030 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
10031 var e, m
10032 var eLen = nBytes * 8 - mLen - 1
10033 var eMax = (1 << eLen) - 1
10034 var eBias = eMax >> 1
10035 var nBits = -7
10036 var i = isLE ? (nBytes - 1) : 0
10037 var d = isLE ? -1 : 1
10038 var s = buffer[offset + i]
10039
10040 i += d
10041
10042 e = s & ((1 << (-nBits)) - 1)
10043 s >>= (-nBits)
10044 nBits += eLen
10045 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10046
10047 m = e & ((1 << (-nBits)) - 1)
10048 e >>= (-nBits)
10049 nBits += mLen
10050 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10051
10052 if (e === 0) {
10053 e = 1 - eBias
10054 } else if (e === eMax) {
10055 return m ? NaN : ((s ? -1 : 1) * Infinity)
10056 } else {
10057 m = m + Math.pow(2, mLen)
10058 e = e - eBias
10059 }
10060 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
10061 }
10062
10063 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
10064 var e, m, c
10065 var eLen = nBytes * 8 - mLen - 1
10066 var eMax = (1 << eLen) - 1
10067 var eBias = eMax >> 1
10068 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
10069 var i = isLE ? 0 : (nBytes - 1)
10070 var d = isLE ? 1 : -1
10071 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
10072
10073 value = Math.abs(value)
10074
10075 if (isNaN(value) || value === Infinity) {
10076 m = isNaN(value) ? 1 : 0
10077 e = eMax
10078 } else {
10079 e = Math.floor(Math.log(value) / Math.LN2)
10080 if (value * (c = Math.pow(2, -e)) < 1) {
10081 e--
10082 c *= 2
10083 }
10084 if (e + eBias >= 1) {
10085 value += rt / c
10086 } else {
10087 value += rt * Math.pow(2, 1 - eBias)
10088 }
10089 if (value * c >= 2) {
10090 e++
10091 c /= 2
10092 }
10093
10094 if (e + eBias >= eMax) {
10095 m = 0
10096 e = eMax
10097 } else if (e + eBias >= 1) {
10098 m = (value * c - 1) * Math.pow(2, mLen)
10099 e = e + eBias
10100 } else {
10101 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
10102 e = 0
10103 }
10104 }
10105
10106 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
10107
10108 e = (e << mLen) | m
10109 eLen += mLen
10110 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
10111
10112 buffer[offset + i - d] |= s * 128
10113 }
10114
10115 },{}],8:[function(require,module,exports){
10116 if (typeof Object.create === 'function') {
10117 // implementation from standard node.js 'util' module
10118 module.exports = function inherits(ctor, superCtor) {
10119 ctor.super_ = superCtor
10120 ctor.prototype = Object.create(superCtor.prototype, {
10121 constructor: {
10122 value: ctor,
10123 enumerable: false,
10124 writable: true,
10125 configurable: true
10126 }
10127 });
10128 };
10129 } else {
10130 // old school shim for old browsers
10131 module.exports = function inherits(ctor, superCtor) {
10132 ctor.super_ = superCtor
10133 var TempCtor = function () {}
10134 TempCtor.prototype = superCtor.prototype
10135 ctor.prototype = new TempCtor()
10136 ctor.prototype.constructor = ctor
10137 }
10138 }
10139
10140 },{}],9:[function(require,module,exports){
10141 /*!
10142 * Determine if an object is a Buffer
10143 *
10144 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
10145 * @license MIT
10146 */
10147
10148 // The _isBuffer check is for Safari 5-7 support, because it's missing
10149 // Object.prototype.constructor. Remove this eventually
10150 module.exports = function (obj) {
10151 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
10152 }
10153
10154 function isBuffer (obj) {
10155 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
10156 }
10157
10158 // For Node v0.10 support. Remove this eventually.
10159 function isSlowBuffer (obj) {
10160 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
10161 }
10162
10163 },{}],10:[function(require,module,exports){
10164 var toString = {}.toString;
10165
10166 module.exports = Array.isArray || function (arr) {
10167 return toString.call(arr) == '[object Array]';
10168 };
10169
10170 },{}],11:[function(require,module,exports){
10171 (function (process){
10172 'use strict';
10173
10174 if (!process.version ||
10175 process.version.indexOf('v0.') === 0 ||
10176 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
10177 module.exports = nextTick;
10178 } else {
10179 module.exports = process.nextTick;
10180 }
10181
10182 function nextTick(fn, arg1, arg2, arg3) {
10183 if (typeof fn !== 'function') {
10184 throw new TypeError('"callback" argument must be a function');
10185 }
10186 var len = arguments.length;
10187 var args, i;
10188 switch (len) {
10189 case 0:
10190 case 1:
10191 return process.nextTick(fn);
10192 case 2:
10193 return process.nextTick(function afterTickOne() {
10194 fn.call(null, arg1);
10195 });
10196 case 3:
10197 return process.nextTick(function afterTickTwo() {
10198 fn.call(null, arg1, arg2);
10199 });
10200 case 4:
10201 return process.nextTick(function afterTickThree() {
10202 fn.call(null, arg1, arg2, arg3);
10203 });
10204 default:
10205 args = new Array(len - 1);
10206 i = 0;
10207 while (i < args.length) {
10208 args[i++] = arguments[i];
10209 }
10210 return process.nextTick(function afterTick() {
10211 fn.apply(null, args);
10212 });
10213 }
10214 }
10215
10216 }).call(this,require('_process'))
10217 },{"_process":12}],12:[function(require,module,exports){
10218 // shim for using process in browser
10219 var process = module.exports = {};
10220
10221 // cached from whatever global is present so that test runners that stub it
10222 // don't break things. But we need to wrap it in a try catch in case it is
10223 // wrapped in strict mode code which doesn't define any globals. It's inside a
10224 // function because try/catches deoptimize in certain engines.
10225
10226 var cachedSetTimeout;
10227 var cachedClearTimeout;
10228
10229 function defaultSetTimout() {
10230 throw new Error('setTimeout has not been defined');
10231 }
10232 function defaultClearTimeout () {
10233 throw new Error('clearTimeout has not been defined');
10234 }
10235 (function () {
10236 try {
10237 if (typeof setTimeout === 'function') {
10238 cachedSetTimeout = setTimeout;
10239 } else {
10240 cachedSetTimeout = defaultSetTimout;
10241 }
10242 } catch (e) {
10243 cachedSetTimeout = defaultSetTimout;
10244 }
10245 try {
10246 if (typeof clearTimeout === 'function') {
10247 cachedClearTimeout = clearTimeout;
10248 } else {
10249 cachedClearTimeout = defaultClearTimeout;
10250 }
10251 } catch (e) {
10252 cachedClearTimeout = defaultClearTimeout;
10253 }
10254 } ())
10255 function runTimeout(fun) {
10256 if (cachedSetTimeout === setTimeout) {
10257 //normal enviroments in sane situations
10258 return setTimeout(fun, 0);
10259 }
10260 // if setTimeout wasn't available but was latter defined
10261 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
10262 cachedSetTimeout = setTimeout;
10263 return setTimeout(fun, 0);
10264 }
10265 try {
10266 // when when somebody has screwed with setTimeout but no I.E. maddness
10267 return cachedSetTimeout(fun, 0);
10268 } catch(e){
10269 try {
10270 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10271 return cachedSetTimeout.call(null, fun, 0);
10272 } catch(e){
10273 // 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
10274 return cachedSetTimeout.call(this, fun, 0);
10275 }
10276 }
10277
10278
10279 }
10280 function runClearTimeout(marker) {
10281 if (cachedClearTimeout === clearTimeout) {
10282 //normal enviroments in sane situations
10283 return clearTimeout(marker);
10284 }
10285 // if clearTimeout wasn't available but was latter defined
10286 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
10287 cachedClearTimeout = clearTimeout;
10288 return clearTimeout(marker);
10289 }
10290 try {
10291 // when when somebody has screwed with setTimeout but no I.E. maddness
10292 return cachedClearTimeout(marker);
10293 } catch (e){
10294 try {
10295 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10296 return cachedClearTimeout.call(null, marker);
10297 } catch (e){
10298 // 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.
10299 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
10300 return cachedClearTimeout.call(this, marker);
10301 }
10302 }
10303
10304
10305
10306 }
10307 var queue = [];
10308 var draining = false;
10309 var currentQueue;
10310 var queueIndex = -1;
10311
10312 function cleanUpNextTick() {
10313 if (!draining || !currentQueue) {
10314 return;
10315 }
10316 draining = false;
10317 if (currentQueue.length) {
10318 queue = currentQueue.concat(queue);
10319 } else {
10320 queueIndex = -1;
10321 }
10322 if (queue.length) {
10323 drainQueue();
10324 }
10325 }
10326
10327 function drainQueue() {
10328 if (draining) {
10329 return;
10330 }
10331 var timeout = runTimeout(cleanUpNextTick);
10332 draining = true;
10333
10334 var len = queue.length;
10335 while(len) {
10336 currentQueue = queue;
10337 queue = [];
10338 while (++queueIndex < len) {
10339 if (currentQueue) {
10340 currentQueue[queueIndex].run();
10341 }
10342 }
10343 queueIndex = -1;
10344 len = queue.length;
10345 }
10346 currentQueue = null;
10347 draining = false;
10348 runClearTimeout(timeout);
10349 }
10350
10351 process.nextTick = function (fun) {
10352 var args = new Array(arguments.length - 1);
10353 if (arguments.length > 1) {
10354 for (var i = 1; i < arguments.length; i++) {
10355 args[i - 1] = arguments[i];
10356 }
10357 }
10358 queue.push(new Item(fun, args));
10359 if (queue.length === 1 && !draining) {
10360 runTimeout(drainQueue);
10361 }
10362 };
10363
10364 // v8 likes predictible objects
10365 function Item(fun, array) {
10366 this.fun = fun;
10367 this.array = array;
10368 }
10369 Item.prototype.run = function () {
10370 this.fun.apply(null, this.array);
10371 };
10372 process.title = 'browser';
10373 process.browser = true;
10374 process.env = {};
10375 process.argv = [];
10376 process.version = ''; // empty string to avoid regexp issues
10377 process.versions = {};
10378
10379 function noop() {}
10380
10381 process.on = noop;
10382 process.addListener = noop;
10383 process.once = noop;
10384 process.off = noop;
10385 process.removeListener = noop;
10386 process.removeAllListeners = noop;
10387 process.emit = noop;
10388 process.prependListener = noop;
10389 process.prependOnceListener = noop;
10390
10391 process.listeners = function (name) { return [] }
10392
10393 process.binding = function (name) {
10394 throw new Error('process.binding is not supported');
10395 };
10396
10397 process.cwd = function () { return '/' };
10398 process.chdir = function (dir) {
10399 throw new Error('process.chdir is not supported');
10400 };
10401 process.umask = function() { return 0; };
10402
10403 },{}],13:[function(require,module,exports){
10404 module.exports = require('./lib/_stream_duplex.js');
10405
10406 },{"./lib/_stream_duplex.js":14}],14:[function(require,module,exports){
10407 // Copyright Joyent, Inc. and other Node contributors.
10408 //
10409 // Permission is hereby granted, free of charge, to any person obtaining a
10410 // copy of this software and associated documentation files (the
10411 // "Software"), to deal in the Software without restriction, including
10412 // without limitation the rights to use, copy, modify, merge, publish,
10413 // distribute, sublicense, and/or sell copies of the Software, and to permit
10414 // persons to whom the Software is furnished to do so, subject to the
10415 // following conditions:
10416 //
10417 // The above copyright notice and this permission notice shall be included
10418 // in all copies or substantial portions of the Software.
10419 //
10420 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10421 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10422 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10423 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10424 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10425 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10426 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10427
10428 // a duplex stream is just a stream that is both readable and writable.
10429 // Since JS doesn't have multiple prototypal inheritance, this class
10430 // prototypally inherits from Readable, and then parasitically from
10431 // Writable.
10432
10433 'use strict';
10434
10435 /*<replacement>*/
10436
10437 var processNextTick = require('process-nextick-args');
10438 /*</replacement>*/
10439
10440 /*<replacement>*/
10441 var objectKeys = Object.keys || function (obj) {
10442 var keys = [];
10443 for (var key in obj) {
10444 keys.push(key);
10445 }return keys;
10446 };
10447 /*</replacement>*/
10448
10449 module.exports = Duplex;
10450
10451 /*<replacement>*/
10452 var util = require('core-util-is');
10453 util.inherits = require('inherits');
10454 /*</replacement>*/
10455
10456 var Readable = require('./_stream_readable');
10457 var Writable = require('./_stream_writable');
10458
10459 util.inherits(Duplex, Readable);
10460
10461 var keys = objectKeys(Writable.prototype);
10462 for (var v = 0; v < keys.length; v++) {
10463 var method = keys[v];
10464 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
10465 }
10466
10467 function Duplex(options) {
10468 if (!(this instanceof Duplex)) return new Duplex(options);
10469
10470 Readable.call(this, options);
10471 Writable.call(this, options);
10472
10473 if (options && options.readable === false) this.readable = false;
10474
10475 if (options && options.writable === false) this.writable = false;
10476
10477 this.allowHalfOpen = true;
10478 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
10479
10480 this.once('end', onend);
10481 }
10482
10483 // the no-half-open enforcer
10484 function onend() {
10485 // if we allow half-open state, or if the writable side ended,
10486 // then we're ok.
10487 if (this.allowHalfOpen || this._writableState.ended) return;
10488
10489 // no more data can be written.
10490 // But allow more writes to happen in this tick.
10491 processNextTick(onEndNT, this);
10492 }
10493
10494 function onEndNT(self) {
10495 self.end();
10496 }
10497
10498 Object.defineProperty(Duplex.prototype, 'destroyed', {
10499 get: function () {
10500 if (this._readableState === undefined || this._writableState === undefined) {
10501 return false;
10502 }
10503 return this._readableState.destroyed && this._writableState.destroyed;
10504 },
10505 set: function (value) {
10506 // we ignore the value if the stream
10507 // has not been initialized yet
10508 if (this._readableState === undefined || this._writableState === undefined) {
10509 return;
10510 }
10511
10512 // backward compatibility, the user is explicitly
10513 // managing destroyed
10514 this._readableState.destroyed = value;
10515 this._writableState.destroyed = value;
10516 }
10517 });
10518
10519 Duplex.prototype._destroy = function (err, cb) {
10520 this.push(null);
10521 this.end();
10522
10523 processNextTick(cb, err);
10524 };
10525
10526 function forEach(xs, f) {
10527 for (var i = 0, l = xs.length; i < l; i++) {
10528 f(xs[i], i);
10529 }
10530 }
10531 },{"./_stream_readable":16,"./_stream_writable":18,"core-util-is":5,"inherits":8,"process-nextick-args":11}],15:[function(require,module,exports){
10532 // Copyright Joyent, Inc. and other Node contributors.
10533 //
10534 // Permission is hereby granted, free of charge, to any person obtaining a
10535 // copy of this software and associated documentation files (the
10536 // "Software"), to deal in the Software without restriction, including
10537 // without limitation the rights to use, copy, modify, merge, publish,
10538 // distribute, sublicense, and/or sell copies of the Software, and to permit
10539 // persons to whom the Software is furnished to do so, subject to the
10540 // following conditions:
10541 //
10542 // The above copyright notice and this permission notice shall be included
10543 // in all copies or substantial portions of the Software.
10544 //
10545 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10546 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10547 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10548 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10549 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10550 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10551 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10552
10553 // a passthrough stream.
10554 // basically just the most minimal sort of Transform stream.
10555 // Every written chunk gets output as-is.
10556
10557 'use strict';
10558
10559 module.exports = PassThrough;
10560
10561 var Transform = require('./_stream_transform');
10562
10563 /*<replacement>*/
10564 var util = require('core-util-is');
10565 util.inherits = require('inherits');
10566 /*</replacement>*/
10567
10568 util.inherits(PassThrough, Transform);
10569
10570 function PassThrough(options) {
10571 if (!(this instanceof PassThrough)) return new PassThrough(options);
10572
10573 Transform.call(this, options);
10574 }
10575
10576 PassThrough.prototype._transform = function (chunk, encoding, cb) {
10577 cb(null, chunk);
10578 };
10579 },{"./_stream_transform":17,"core-util-is":5,"inherits":8}],16:[function(require,module,exports){
10580 (function (process,global){
10581 // Copyright Joyent, Inc. and other Node contributors.
10582 //
10583 // Permission is hereby granted, free of charge, to any person obtaining a
10584 // copy of this software and associated documentation files (the
10585 // "Software"), to deal in the Software without restriction, including
10586 // without limitation the rights to use, copy, modify, merge, publish,
10587 // distribute, sublicense, and/or sell copies of the Software, and to permit
10588 // persons to whom the Software is furnished to do so, subject to the
10589 // following conditions:
10590 //
10591 // The above copyright notice and this permission notice shall be included
10592 // in all copies or substantial portions of the Software.
10593 //
10594 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10595 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10596 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10597 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10598 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10599 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10600 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10601
10602 'use strict';
10603
10604 /*<replacement>*/
10605
10606 var processNextTick = require('process-nextick-args');
10607 /*</replacement>*/
10608
10609 module.exports = Readable;
10610
10611 /*<replacement>*/
10612 var isArray = require('isarray');
10613 /*</replacement>*/
10614
10615 /*<replacement>*/
10616 var Duplex;
10617 /*</replacement>*/
10618
10619 Readable.ReadableState = ReadableState;
10620
10621 /*<replacement>*/
10622 var EE = require('events').EventEmitter;
10623
10624 var EElistenerCount = function (emitter, type) {
10625 return emitter.listeners(type).length;
10626 };
10627 /*</replacement>*/
10628
10629 /*<replacement>*/
10630 var Stream = require('./internal/streams/stream');
10631 /*</replacement>*/
10632
10633 // TODO(bmeurer): Change this back to const once hole checks are
10634 // properly optimized away early in Ignition+TurboFan.
10635 /*<replacement>*/
10636 var Buffer = require('safe-buffer').Buffer;
10637 var OurUint8Array = global.Uint8Array || function () {};
10638 function _uint8ArrayToBuffer(chunk) {
10639 return Buffer.from(chunk);
10640 }
10641 function _isUint8Array(obj) {
10642 return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
10643 }
10644 /*</replacement>*/
10645
10646 /*<replacement>*/
10647 var util = require('core-util-is');
10648 util.inherits = require('inherits');
10649 /*</replacement>*/
10650
10651 /*<replacement>*/
10652 var debugUtil = require('util');
10653 var debug = void 0;
10654 if (debugUtil && debugUtil.debuglog) {
10655 debug = debugUtil.debuglog('stream');
10656 } else {
10657 debug = function () {};
10658 }
10659 /*</replacement>*/
10660
10661 var BufferList = require('./internal/streams/BufferList');
10662 var destroyImpl = require('./internal/streams/destroy');
10663 var StringDecoder;
10664
10665 util.inherits(Readable, Stream);
10666
10667 var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
10668
10669 function prependListener(emitter, event, fn) {
10670 // Sadly this is not cacheable as some libraries bundle their own
10671 // event emitter implementation with them.
10672 if (typeof emitter.prependListener === 'function') {
10673 return emitter.prependListener(event, fn);
10674 } else {
10675 // This is a hack to make sure that our error handler is attached before any
10676 // userland ones. NEVER DO THIS. This is here only because this code needs
10677 // to continue to work with older versions of Node.js that do not include
10678 // the prependListener() method. The goal is to eventually remove this hack.
10679 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]];
10680 }
10681 }
10682
10683 function ReadableState(options, stream) {
10684 Duplex = Duplex || require('./_stream_duplex');
10685
10686 options = options || {};
10687
10688 // object stream flag. Used to make read(n) ignore n and to
10689 // make all the buffer merging and length checks go away
10690 this.objectMode = !!options.objectMode;
10691
10692 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
10693
10694 // the point at which it stops calling _read() to fill the buffer
10695 // Note: 0 is a valid value, means "don't call _read preemptively ever"
10696 var hwm = options.highWaterMark;
10697 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
10698 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
10699
10700 // cast to ints.
10701 this.highWaterMark = Math.floor(this.highWaterMark);
10702
10703 // A linked list is used to store data chunks instead of an array because the
10704 // linked list can remove elements from the beginning faster than
10705 // array.shift()
10706 this.buffer = new BufferList();
10707 this.length = 0;
10708 this.pipes = null;
10709 this.pipesCount = 0;
10710 this.flowing = null;
10711 this.ended = false;
10712 this.endEmitted = false;
10713 this.reading = false;
10714
10715 // a flag to be able to tell if the event 'readable'/'data' is emitted
10716 // immediately, or on a later tick. We set this to true at first, because
10717 // any actions that shouldn't happen until "later" should generally also
10718 // not happen before the first read call.
10719 this.sync = true;
10720
10721 // whenever we return null, then we set a flag to say
10722 // that we're awaiting a 'readable' event emission.
10723 this.needReadable = false;
10724 this.emittedReadable = false;
10725 this.readableListening = false;
10726 this.resumeScheduled = false;
10727
10728 // has it been destroyed
10729 this.destroyed = false;
10730
10731 // Crypto is kind of old and crusty. Historically, its default string
10732 // encoding is 'binary' so we have to make this configurable.
10733 // Everything else in the universe uses 'utf8', though.
10734 this.defaultEncoding = options.defaultEncoding || 'utf8';
10735
10736 // the number of writers that are awaiting a drain event in .pipe()s
10737 this.awaitDrain = 0;
10738
10739 // if true, a maybeReadMore has been scheduled
10740 this.readingMore = false;
10741
10742 this.decoder = null;
10743 this.encoding = null;
10744 if (options.encoding) {
10745 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10746 this.decoder = new StringDecoder(options.encoding);
10747 this.encoding = options.encoding;
10748 }
10749 }
10750
10751 function Readable(options) {
10752 Duplex = Duplex || require('./_stream_duplex');
10753
10754 if (!(this instanceof Readable)) return new Readable(options);
10755
10756 this._readableState = new ReadableState(options, this);
10757
10758 // legacy
10759 this.readable = true;
10760
10761 if (options) {
10762 if (typeof options.read === 'function') this._read = options.read;
10763
10764 if (typeof options.destroy === 'function') this._destroy = options.destroy;
10765 }
10766
10767 Stream.call(this);
10768 }
10769
10770 Object.defineProperty(Readable.prototype, 'destroyed', {
10771 get: function () {
10772 if (this._readableState === undefined) {
10773 return false;
10774 }
10775 return this._readableState.destroyed;
10776 },
10777 set: function (value) {
10778 // we ignore the value if the stream
10779 // has not been initialized yet
10780 if (!this._readableState) {
10781 return;
10782 }
10783
10784 // backward compatibility, the user is explicitly
10785 // managing destroyed
10786 this._readableState.destroyed = value;
10787 }
10788 });
10789
10790 Readable.prototype.destroy = destroyImpl.destroy;
10791 Readable.prototype._undestroy = destroyImpl.undestroy;
10792 Readable.prototype._destroy = function (err, cb) {
10793 this.push(null);
10794 cb(err);
10795 };
10796
10797 // Manually shove something into the read() buffer.
10798 // This returns true if the highWaterMark has not been hit yet,
10799 // similar to how Writable.write() returns true if you should
10800 // write() some more.
10801 Readable.prototype.push = function (chunk, encoding) {
10802 var state = this._readableState;
10803 var skipChunkCheck;
10804
10805 if (!state.objectMode) {
10806 if (typeof chunk === 'string') {
10807 encoding = encoding || state.defaultEncoding;
10808 if (encoding !== state.encoding) {
10809 chunk = Buffer.from(chunk, encoding);
10810 encoding = '';
10811 }
10812 skipChunkCheck = true;
10813 }
10814 } else {
10815 skipChunkCheck = true;
10816 }
10817
10818 return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
10819 };
10820
10821 // Unshift should *always* be something directly out of read()
10822 Readable.prototype.unshift = function (chunk) {
10823 return readableAddChunk(this, chunk, null, true, false);
10824 };
10825
10826 function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
10827 var state = stream._readableState;
10828 if (chunk === null) {
10829 state.reading = false;
10830 onEofChunk(stream, state);
10831 } else {
10832 var er;
10833 if (!skipChunkCheck) er = chunkInvalid(state, chunk);
10834 if (er) {
10835 stream.emit('error', er);
10836 } else if (state.objectMode || chunk && chunk.length > 0) {
10837 if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
10838 chunk = _uint8ArrayToBuffer(chunk);
10839 }
10840
10841 if (addToFront) {
10842 if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
10843 } else if (state.ended) {
10844 stream.emit('error', new Error('stream.push() after EOF'));
10845 } else {
10846 state.reading = false;
10847 if (state.decoder && !encoding) {
10848 chunk = state.decoder.write(chunk);
10849 if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
10850 } else {
10851 addChunk(stream, state, chunk, false);
10852 }
10853 }
10854 } else if (!addToFront) {
10855 state.reading = false;
10856 }
10857 }
10858
10859 return needMoreData(state);
10860 }
10861
10862 function addChunk(stream, state, chunk, addToFront) {
10863 if (state.flowing && state.length === 0 && !state.sync) {
10864 stream.emit('data', chunk);
10865 stream.read(0);
10866 } else {
10867 // update the buffer info.
10868 state.length += state.objectMode ? 1 : chunk.length;
10869 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
10870
10871 if (state.needReadable) emitReadable(stream);
10872 }
10873 maybeReadMore(stream, state);
10874 }
10875
10876 function chunkInvalid(state, chunk) {
10877 var er;
10878 if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
10879 er = new TypeError('Invalid non-string/buffer chunk');
10880 }
10881 return er;
10882 }
10883
10884 // if it's past the high water mark, we can push in some more.
10885 // Also, if we have no data yet, we can stand some
10886 // more bytes. This is to work around cases where hwm=0,
10887 // such as the repl. Also, if the push() triggered a
10888 // readable event, and the user called read(largeNumber) such that
10889 // needReadable was set, then we ought to push more, so that another
10890 // 'readable' event will be triggered.
10891 function needMoreData(state) {
10892 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
10893 }
10894
10895 Readable.prototype.isPaused = function () {
10896 return this._readableState.flowing === false;
10897 };
10898
10899 // backwards compatibility.
10900 Readable.prototype.setEncoding = function (enc) {
10901 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10902 this._readableState.decoder = new StringDecoder(enc);
10903 this._readableState.encoding = enc;
10904 return this;
10905 };
10906
10907 // Don't raise the hwm > 8MB
10908 var MAX_HWM = 0x800000;
10909 function computeNewHighWaterMark(n) {
10910 if (n >= MAX_HWM) {
10911 n = MAX_HWM;
10912 } else {
10913 // Get the next highest power of 2 to prevent increasing hwm excessively in
10914 // tiny amounts
10915 n--;
10916 n |= n >>> 1;
10917 n |= n >>> 2;
10918 n |= n >>> 4;
10919 n |= n >>> 8;
10920 n |= n >>> 16;
10921 n++;
10922 }
10923 return n;
10924 }
10925
10926 // This function is designed to be inlinable, so please take care when making
10927 // changes to the function body.
10928 function howMuchToRead(n, state) {
10929 if (n <= 0 || state.length === 0 && state.ended) return 0;
10930 if (state.objectMode) return 1;
10931 if (n !== n) {
10932 // Only flow one buffer at a time
10933 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
10934 }
10935 // If we're asking for more than the current hwm, then raise the hwm.
10936 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
10937 if (n <= state.length) return n;
10938 // Don't have enough
10939 if (!state.ended) {
10940 state.needReadable = true;
10941 return 0;
10942 }
10943 return state.length;
10944 }
10945
10946 // you can override either this method, or the async _read(n) below.
10947 Readable.prototype.read = function (n) {
10948 debug('read', n);
10949 n = parseInt(n, 10);
10950 var state = this._readableState;
10951 var nOrig = n;
10952
10953 if (n !== 0) state.emittedReadable = false;
10954
10955 // if we're doing read(0) to trigger a readable event, but we
10956 // already have a bunch of data in the buffer, then just trigger
10957 // the 'readable' event and move on.
10958 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
10959 debug('read: emitReadable', state.length, state.ended);
10960 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
10961 return null;
10962 }
10963
10964 n = howMuchToRead(n, state);
10965
10966 // if we've ended, and we're now clear, then finish it up.
10967 if (n === 0 && state.ended) {
10968 if (state.length === 0) endReadable(this);
10969 return null;
10970 }
10971
10972 // All the actual chunk generation logic needs to be
10973 // *below* the call to _read. The reason is that in certain
10974 // synthetic stream cases, such as passthrough streams, _read
10975 // may be a completely synchronous operation which may change
10976 // the state of the read buffer, providing enough data when
10977 // before there was *not* enough.
10978 //
10979 // So, the steps are:
10980 // 1. Figure out what the state of things will be after we do
10981 // a read from the buffer.
10982 //
10983 // 2. If that resulting state will trigger a _read, then call _read.
10984 // Note that this may be asynchronous, or synchronous. Yes, it is
10985 // deeply ugly to write APIs this way, but that still doesn't mean
10986 // that the Readable class should behave improperly, as streams are
10987 // designed to be sync/async agnostic.
10988 // Take note if the _read call is sync or async (ie, if the read call
10989 // has returned yet), so that we know whether or not it's safe to emit
10990 // 'readable' etc.
10991 //
10992 // 3. Actually pull the requested chunks out of the buffer and return.
10993
10994 // if we need a readable event, then we need to do some reading.
10995 var doRead = state.needReadable;
10996 debug('need readable', doRead);
10997
10998 // if we currently have less than the highWaterMark, then also read some
10999 if (state.length === 0 || state.length - n < state.highWaterMark) {
11000 doRead = true;
11001 debug('length less than watermark', doRead);
11002 }
11003
11004 // however, if we've ended, then there's no point, and if we're already
11005 // reading, then it's unnecessary.
11006 if (state.ended || state.reading) {
11007 doRead = false;
11008 debug('reading or ended', doRead);
11009 } else if (doRead) {
11010 debug('do read');
11011 state.reading = true;
11012 state.sync = true;
11013 // if the length is currently zero, then we *need* a readable event.
11014 if (state.length === 0) state.needReadable = true;
11015 // call internal read method
11016 this._read(state.highWaterMark);
11017 state.sync = false;
11018 // If _read pushed data synchronously, then `reading` will be false,
11019 // and we need to re-evaluate how much data we can return to the user.
11020 if (!state.reading) n = howMuchToRead(nOrig, state);
11021 }
11022
11023 var ret;
11024 if (n > 0) ret = fromList(n, state);else ret = null;
11025
11026 if (ret === null) {
11027 state.needReadable = true;
11028 n = 0;
11029 } else {
11030 state.length -= n;
11031 }
11032
11033 if (state.length === 0) {
11034 // If we have nothing in the buffer, then we want to know
11035 // as soon as we *do* get something into the buffer.
11036 if (!state.ended) state.needReadable = true;
11037
11038 // If we tried to read() past the EOF, then emit end on the next tick.
11039 if (nOrig !== n && state.ended) endReadable(this);
11040 }
11041
11042 if (ret !== null) this.emit('data', ret);
11043
11044 return ret;
11045 };
11046
11047 function onEofChunk(stream, state) {
11048 if (state.ended) return;
11049 if (state.decoder) {
11050 var chunk = state.decoder.end();
11051 if (chunk && chunk.length) {
11052 state.buffer.push(chunk);
11053 state.length += state.objectMode ? 1 : chunk.length;
11054 }
11055 }
11056 state.ended = true;
11057
11058 // emit 'readable' now to make sure it gets picked up.
11059 emitReadable(stream);
11060 }
11061
11062 // Don't emit readable right away in sync mode, because this can trigger
11063 // another read() call => stack overflow. This way, it might trigger
11064 // a nextTick recursion warning, but that's not so bad.
11065 function emitReadable(stream) {
11066 var state = stream._readableState;
11067 state.needReadable = false;
11068 if (!state.emittedReadable) {
11069 debug('emitReadable', state.flowing);
11070 state.emittedReadable = true;
11071 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
11072 }
11073 }
11074
11075 function emitReadable_(stream) {
11076 debug('emit readable');
11077 stream.emit('readable');
11078 flow(stream);
11079 }
11080
11081 // at this point, the user has presumably seen the 'readable' event,
11082 // and called read() to consume some data. that may have triggered
11083 // in turn another _read(n) call, in which case reading = true if
11084 // it's in progress.
11085 // However, if we're not ended, or reading, and the length < hwm,
11086 // then go ahead and try to read some more preemptively.
11087 function maybeReadMore(stream, state) {
11088 if (!state.readingMore) {
11089 state.readingMore = true;
11090 processNextTick(maybeReadMore_, stream, state);
11091 }
11092 }
11093
11094 function maybeReadMore_(stream, state) {
11095 var len = state.length;
11096 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
11097 debug('maybeReadMore read 0');
11098 stream.read(0);
11099 if (len === state.length)
11100 // didn't get any data, stop spinning.
11101 break;else len = state.length;
11102 }
11103 state.readingMore = false;
11104 }
11105
11106 // abstract method. to be overridden in specific implementation classes.
11107 // call cb(er, data) where data is <= n in length.
11108 // for virtual (non-string, non-buffer) streams, "length" is somewhat
11109 // arbitrary, and perhaps not very meaningful.
11110 Readable.prototype._read = function (n) {
11111 this.emit('error', new Error('_read() is not implemented'));
11112 };
11113
11114 Readable.prototype.pipe = function (dest, pipeOpts) {
11115 var src = this;
11116 var state = this._readableState;
11117
11118 switch (state.pipesCount) {
11119 case 0:
11120 state.pipes = dest;
11121 break;
11122 case 1:
11123 state.pipes = [state.pipes, dest];
11124 break;
11125 default:
11126 state.pipes.push(dest);
11127 break;
11128 }
11129 state.pipesCount += 1;
11130 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
11131
11132 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
11133
11134 var endFn = doEnd ? onend : unpipe;
11135 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
11136
11137 dest.on('unpipe', onunpipe);
11138 function onunpipe(readable, unpipeInfo) {
11139 debug('onunpipe');
11140 if (readable === src) {
11141 if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
11142 unpipeInfo.hasUnpiped = true;
11143 cleanup();
11144 }
11145 }
11146 }
11147
11148 function onend() {
11149 debug('onend');
11150 dest.end();
11151 }
11152
11153 // when the dest drains, it reduces the awaitDrain counter
11154 // on the source. This would be more elegant with a .once()
11155 // handler in flow(), but adding and removing repeatedly is
11156 // too slow.
11157 var ondrain = pipeOnDrain(src);
11158 dest.on('drain', ondrain);
11159
11160 var cleanedUp = false;
11161 function cleanup() {
11162 debug('cleanup');
11163 // cleanup event handlers once the pipe is broken
11164 dest.removeListener('close', onclose);
11165 dest.removeListener('finish', onfinish);
11166 dest.removeListener('drain', ondrain);
11167 dest.removeListener('error', onerror);
11168 dest.removeListener('unpipe', onunpipe);
11169 src.removeListener('end', onend);
11170 src.removeListener('end', unpipe);
11171 src.removeListener('data', ondata);
11172
11173 cleanedUp = true;
11174
11175 // if the reader is waiting for a drain event from this
11176 // specific writer, then it would cause it to never start
11177 // flowing again.
11178 // So, if this is awaiting a drain, then we just call it now.
11179 // If we don't know, then assume that we are waiting for one.
11180 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
11181 }
11182
11183 // If the user pushes more data while we're writing to dest then we'll end up
11184 // in ondata again. However, we only want to increase awaitDrain once because
11185 // dest will only emit one 'drain' event for the multiple writes.
11186 // => Introduce a guard on increasing awaitDrain.
11187 var increasedAwaitDrain = false;
11188 src.on('data', ondata);
11189 function ondata(chunk) {
11190 debug('ondata');
11191 increasedAwaitDrain = false;
11192 var ret = dest.write(chunk);
11193 if (false === ret && !increasedAwaitDrain) {
11194 // If the user unpiped during `dest.write()`, it is possible
11195 // to get stuck in a permanently paused state if that write
11196 // also returned false.
11197 // => Check whether `dest` is still a piping destination.
11198 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
11199 debug('false write response, pause', src._readableState.awaitDrain);
11200 src._readableState.awaitDrain++;
11201 increasedAwaitDrain = true;
11202 }
11203 src.pause();
11204 }
11205 }
11206
11207 // if the dest has an error, then stop piping into it.
11208 // however, don't suppress the throwing behavior for this.
11209 function onerror(er) {
11210 debug('onerror', er);
11211 unpipe();
11212 dest.removeListener('error', onerror);
11213 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
11214 }
11215
11216 // Make sure our error handler is attached before userland ones.
11217 prependListener(dest, 'error', onerror);
11218
11219 // Both close and finish should trigger unpipe, but only once.
11220 function onclose() {
11221 dest.removeListener('finish', onfinish);
11222 unpipe();
11223 }
11224 dest.once('close', onclose);
11225 function onfinish() {
11226 debug('onfinish');
11227 dest.removeListener('close', onclose);
11228 unpipe();
11229 }
11230 dest.once('finish', onfinish);
11231
11232 function unpipe() {
11233 debug('unpipe');
11234 src.unpipe(dest);
11235 }
11236
11237 // tell the dest that it's being piped to
11238 dest.emit('pipe', src);
11239
11240 // start the flow if it hasn't been started already.
11241 if (!state.flowing) {
11242 debug('pipe resume');
11243 src.resume();
11244 }
11245
11246 return dest;
11247 };
11248
11249 function pipeOnDrain(src) {
11250 return function () {
11251 var state = src._readableState;
11252 debug('pipeOnDrain', state.awaitDrain);
11253 if (state.awaitDrain) state.awaitDrain--;
11254 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
11255 state.flowing = true;
11256 flow(src);
11257 }
11258 };
11259 }
11260
11261 Readable.prototype.unpipe = function (dest) {
11262 var state = this._readableState;
11263 var unpipeInfo = { hasUnpiped: false };
11264
11265 // if we're not piping anywhere, then do nothing.
11266 if (state.pipesCount === 0) return this;
11267
11268 // just one destination. most common case.
11269 if (state.pipesCount === 1) {
11270 // passed in one, but it's not the right one.
11271 if (dest && dest !== state.pipes) return this;
11272
11273 if (!dest) dest = state.pipes;
11274
11275 // got a match.
11276 state.pipes = null;
11277 state.pipesCount = 0;
11278 state.flowing = false;
11279 if (dest) dest.emit('unpipe', this, unpipeInfo);
11280 return this;
11281 }
11282
11283 // slow case. multiple pipe destinations.
11284
11285 if (!dest) {
11286 // remove all.
11287 var dests = state.pipes;
11288 var len = state.pipesCount;
11289 state.pipes = null;
11290 state.pipesCount = 0;
11291 state.flowing = false;
11292
11293 for (var i = 0; i < len; i++) {
11294 dests[i].emit('unpipe', this, unpipeInfo);
11295 }return this;
11296 }
11297
11298 // try to find the right one.
11299 var index = indexOf(state.pipes, dest);
11300 if (index === -1) return this;
11301
11302 state.pipes.splice(index, 1);
11303 state.pipesCount -= 1;
11304 if (state.pipesCount === 1) state.pipes = state.pipes[0];
11305
11306 dest.emit('unpipe', this, unpipeInfo);
11307
11308 return this;
11309 };
11310
11311 // set up data events if they are asked for
11312 // Ensure readable listeners eventually get something
11313 Readable.prototype.on = function (ev, fn) {
11314 var res = Stream.prototype.on.call(this, ev, fn);
11315
11316 if (ev === 'data') {
11317 // Start flowing on next tick if stream isn't explicitly paused
11318 if (this._readableState.flowing !== false) this.resume();
11319 } else if (ev === 'readable') {
11320 var state = this._readableState;
11321 if (!state.endEmitted && !state.readableListening) {
11322 state.readableListening = state.needReadable = true;
11323 state.emittedReadable = false;
11324 if (!state.reading) {
11325 processNextTick(nReadingNextTick, this);
11326 } else if (state.length) {
11327 emitReadable(this);
11328 }
11329 }
11330 }
11331
11332 return res;
11333 };
11334 Readable.prototype.addListener = Readable.prototype.on;
11335
11336 function nReadingNextTick(self) {
11337 debug('readable nexttick read 0');
11338 self.read(0);
11339 }
11340
11341 // pause() and resume() are remnants of the legacy readable stream API
11342 // If the user uses them, then switch into old mode.
11343 Readable.prototype.resume = function () {
11344 var state = this._readableState;
11345 if (!state.flowing) {
11346 debug('resume');
11347 state.flowing = true;
11348 resume(this, state);
11349 }
11350 return this;
11351 };
11352
11353 function resume(stream, state) {
11354 if (!state.resumeScheduled) {
11355 state.resumeScheduled = true;
11356 processNextTick(resume_, stream, state);
11357 }
11358 }
11359
11360 function resume_(stream, state) {
11361 if (!state.reading) {
11362 debug('resume read 0');
11363 stream.read(0);
11364 }
11365
11366 state.resumeScheduled = false;
11367 state.awaitDrain = 0;
11368 stream.emit('resume');
11369 flow(stream);
11370 if (state.flowing && !state.reading) stream.read(0);
11371 }
11372
11373 Readable.prototype.pause = function () {
11374 debug('call pause flowing=%j', this._readableState.flowing);
11375 if (false !== this._readableState.flowing) {
11376 debug('pause');
11377 this._readableState.flowing = false;
11378 this.emit('pause');
11379 }
11380 return this;
11381 };
11382
11383 function flow(stream) {
11384 var state = stream._readableState;
11385 debug('flow', state.flowing);
11386 while (state.flowing && stream.read() !== null) {}
11387 }
11388
11389 // wrap an old-style stream as the async data source.
11390 // This is *not* part of the readable stream interface.
11391 // It is an ugly unfortunate mess of history.
11392 Readable.prototype.wrap = function (stream) {
11393 var state = this._readableState;
11394 var paused = false;
11395
11396 var self = this;
11397 stream.on('end', function () {
11398 debug('wrapped end');
11399 if (state.decoder && !state.ended) {
11400 var chunk = state.decoder.end();
11401 if (chunk && chunk.length) self.push(chunk);
11402 }
11403
11404 self.push(null);
11405 });
11406
11407 stream.on('data', function (chunk) {
11408 debug('wrapped data');
11409 if (state.decoder) chunk = state.decoder.write(chunk);
11410
11411 // don't skip over falsy values in objectMode
11412 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
11413
11414 var ret = self.push(chunk);
11415 if (!ret) {
11416 paused = true;
11417 stream.pause();
11418 }
11419 });
11420
11421 // proxy all the other methods.
11422 // important when wrapping filters and duplexes.
11423 for (var i in stream) {
11424 if (this[i] === undefined && typeof stream[i] === 'function') {
11425 this[i] = function (method) {
11426 return function () {
11427 return stream[method].apply(stream, arguments);
11428 };
11429 }(i);
11430 }
11431 }
11432
11433 // proxy certain important events.
11434 for (var n = 0; n < kProxyEvents.length; n++) {
11435 stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));
11436 }
11437
11438 // when we try to consume some more bytes, simply unpause the
11439 // underlying stream.
11440 self._read = function (n) {
11441 debug('wrapped _read', n);
11442 if (paused) {
11443 paused = false;
11444 stream.resume();
11445 }
11446 };
11447
11448 return self;
11449 };
11450
11451 // exposed for testing purposes only.
11452 Readable._fromList = fromList;
11453
11454 // Pluck off n bytes from an array of buffers.
11455 // Length is the combined lengths of all the buffers in the list.
11456 // This function is designed to be inlinable, so please take care when making
11457 // changes to the function body.
11458 function fromList(n, state) {
11459 // nothing buffered
11460 if (state.length === 0) return null;
11461
11462 var ret;
11463 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
11464 // read it all, truncate the list
11465 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);
11466 state.buffer.clear();
11467 } else {
11468 // read part of list
11469 ret = fromListPartial(n, state.buffer, state.decoder);
11470 }
11471
11472 return ret;
11473 }
11474
11475 // Extracts only enough buffered data to satisfy the amount requested.
11476 // This function is designed to be inlinable, so please take care when making
11477 // changes to the function body.
11478 function fromListPartial(n, list, hasStrings) {
11479 var ret;
11480 if (n < list.head.data.length) {
11481 // slice is the same for buffers and strings
11482 ret = list.head.data.slice(0, n);
11483 list.head.data = list.head.data.slice(n);
11484 } else if (n === list.head.data.length) {
11485 // first chunk is a perfect match
11486 ret = list.shift();
11487 } else {
11488 // result spans more than one buffer
11489 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
11490 }
11491 return ret;
11492 }
11493
11494 // Copies a specified amount of characters from the list of buffered data
11495 // chunks.
11496 // This function is designed to be inlinable, so please take care when making
11497 // changes to the function body.
11498 function copyFromBufferString(n, list) {
11499 var p = list.head;
11500 var c = 1;
11501 var ret = p.data;
11502 n -= ret.length;
11503 while (p = p.next) {
11504 var str = p.data;
11505 var nb = n > str.length ? str.length : n;
11506 if (nb === str.length) ret += str;else ret += str.slice(0, n);
11507 n -= nb;
11508 if (n === 0) {
11509 if (nb === str.length) {
11510 ++c;
11511 if (p.next) list.head = p.next;else list.head = list.tail = null;
11512 } else {
11513 list.head = p;
11514 p.data = str.slice(nb);
11515 }
11516 break;
11517 }
11518 ++c;
11519 }
11520 list.length -= c;
11521 return ret;
11522 }
11523
11524 // Copies a specified amount of bytes from the list of buffered data chunks.
11525 // This function is designed to be inlinable, so please take care when making
11526 // changes to the function body.
11527 function copyFromBuffer(n, list) {
11528 var ret = Buffer.allocUnsafe(n);
11529 var p = list.head;
11530 var c = 1;
11531 p.data.copy(ret);
11532 n -= p.data.length;
11533 while (p = p.next) {
11534 var buf = p.data;
11535 var nb = n > buf.length ? buf.length : n;
11536 buf.copy(ret, ret.length - n, 0, nb);
11537 n -= nb;
11538 if (n === 0) {
11539 if (nb === buf.length) {
11540 ++c;
11541 if (p.next) list.head = p.next;else list.head = list.tail = null;
11542 } else {
11543 list.head = p;
11544 p.data = buf.slice(nb);
11545 }
11546 break;
11547 }
11548 ++c;
11549 }
11550 list.length -= c;
11551 return ret;
11552 }
11553
11554 function endReadable(stream) {
11555 var state = stream._readableState;
11556
11557 // If we get here before consuming all the bytes, then that is a
11558 // bug in node. Should never happen.
11559 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
11560
11561 if (!state.endEmitted) {
11562 state.ended = true;
11563 processNextTick(endReadableNT, state, stream);
11564 }
11565 }
11566
11567 function endReadableNT(state, stream) {
11568 // Check that we didn't get one last unshift.
11569 if (!state.endEmitted && state.length === 0) {
11570 state.endEmitted = true;
11571 stream.readable = false;
11572 stream.emit('end');
11573 }
11574 }
11575
11576 function forEach(xs, f) {
11577 for (var i = 0, l = xs.length; i < l; i++) {
11578 f(xs[i], i);
11579 }
11580 }
11581
11582 function indexOf(xs, x) {
11583 for (var i = 0, l = xs.length; i < l; i++) {
11584 if (xs[i] === x) return i;
11585 }
11586 return -1;
11587 }
11588 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
11589 },{"./_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){
11590 // Copyright Joyent, Inc. and other Node contributors.
11591 //
11592 // Permission is hereby granted, free of charge, to any person obtaining a
11593 // copy of this software and associated documentation files (the
11594 // "Software"), to deal in the Software without restriction, including
11595 // without limitation the rights to use, copy, modify, merge, publish,
11596 // distribute, sublicense, and/or sell copies of the Software, and to permit
11597 // persons to whom the Software is furnished to do so, subject to the
11598 // following conditions:
11599 //
11600 // The above copyright notice and this permission notice shall be included
11601 // in all copies or substantial portions of the Software.
11602 //
11603 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11604 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11605 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11606 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11607 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11608 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11609 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11610
11611 // a transform stream is a readable/writable stream where you do
11612 // something with the data. Sometimes it's called a "filter",
11613 // but that's not a great name for it, since that implies a thing where
11614 // some bits pass through, and others are simply ignored. (That would
11615 // be a valid example of a transform, of course.)
11616 //
11617 // While the output is causally related to the input, it's not a
11618 // necessarily symmetric or synchronous transformation. For example,
11619 // a zlib stream might take multiple plain-text writes(), and then
11620 // emit a single compressed chunk some time in the future.
11621 //
11622 // Here's how this works:
11623 //
11624 // The Transform stream has all the aspects of the readable and writable
11625 // stream classes. When you write(chunk), that calls _write(chunk,cb)
11626 // internally, and returns false if there's a lot of pending writes
11627 // buffered up. When you call read(), that calls _read(n) until
11628 // there's enough pending readable data buffered up.
11629 //
11630 // In a transform stream, the written data is placed in a buffer. When
11631 // _read(n) is called, it transforms the queued up data, calling the
11632 // buffered _write cb's as it consumes chunks. If consuming a single
11633 // written chunk would result in multiple output chunks, then the first
11634 // outputted bit calls the readcb, and subsequent chunks just go into
11635 // the read buffer, and will cause it to emit 'readable' if necessary.
11636 //
11637 // This way, back-pressure is actually determined by the reading side,
11638 // since _read has to be called to start processing a new chunk. However,
11639 // a pathological inflate type of transform can cause excessive buffering
11640 // here. For example, imagine a stream where every byte of input is
11641 // interpreted as an integer from 0-255, and then results in that many
11642 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
11643 // 1kb of data being output. In this case, you could write a very small
11644 // amount of input, and end up with a very large amount of output. In
11645 // such a pathological inflating mechanism, there'd be no way to tell
11646 // the system to stop doing the transform. A single 4MB write could
11647 // cause the system to run out of memory.
11648 //
11649 // However, even in such a pathological case, only a single written chunk
11650 // would be consumed, and then the rest would wait (un-transformed) until
11651 // the results of the previous transformed chunk were consumed.
11652
11653 'use strict';
11654
11655 module.exports = Transform;
11656
11657 var Duplex = require('./_stream_duplex');
11658
11659 /*<replacement>*/
11660 var util = require('core-util-is');
11661 util.inherits = require('inherits');
11662 /*</replacement>*/
11663
11664 util.inherits(Transform, Duplex);
11665
11666 function TransformState(stream) {
11667 this.afterTransform = function (er, data) {
11668 return afterTransform(stream, er, data);
11669 };
11670
11671 this.needTransform = false;
11672 this.transforming = false;
11673 this.writecb = null;
11674 this.writechunk = null;
11675 this.writeencoding = null;
11676 }
11677
11678 function afterTransform(stream, er, data) {
11679 var ts = stream._transformState;
11680 ts.transforming = false;
11681
11682 var cb = ts.writecb;
11683
11684 if (!cb) {
11685 return stream.emit('error', new Error('write callback called multiple times'));
11686 }
11687
11688 ts.writechunk = null;
11689 ts.writecb = null;
11690
11691 if (data !== null && data !== undefined) stream.push(data);
11692
11693 cb(er);
11694
11695 var rs = stream._readableState;
11696 rs.reading = false;
11697 if (rs.needReadable || rs.length < rs.highWaterMark) {
11698 stream._read(rs.highWaterMark);
11699 }
11700 }
11701
11702 function Transform(options) {
11703 if (!(this instanceof Transform)) return new Transform(options);
11704
11705 Duplex.call(this, options);
11706
11707 this._transformState = new TransformState(this);
11708
11709 var stream = this;
11710
11711 // start out asking for a readable event once data is transformed.
11712 this._readableState.needReadable = true;
11713
11714 // we have implemented the _read method, and done the other things
11715 // that Readable wants before the first _read call, so unset the
11716 // sync guard flag.
11717 this._readableState.sync = false;
11718
11719 if (options) {
11720 if (typeof options.transform === 'function') this._transform = options.transform;
11721
11722 if (typeof options.flush === 'function') this._flush = options.flush;
11723 }
11724
11725 // When the writable side finishes, then flush out anything remaining.
11726 this.once('prefinish', function () {
11727 if (typeof this._flush === 'function') this._flush(function (er, data) {
11728 done(stream, er, data);
11729 });else done(stream);
11730 });
11731 }
11732
11733 Transform.prototype.push = function (chunk, encoding) {
11734 this._transformState.needTransform = false;
11735 return Duplex.prototype.push.call(this, chunk, encoding);
11736 };
11737
11738 // This is the part where you do stuff!
11739 // override this function in implementation classes.
11740 // 'chunk' is an input chunk.
11741 //
11742 // Call `push(newChunk)` to pass along transformed output
11743 // to the readable side. You may call 'push' zero or more times.
11744 //
11745 // Call `cb(err)` when you are done with this chunk. If you pass
11746 // an error, then that'll put the hurt on the whole operation. If you
11747 // never call cb(), then you'll never get another chunk.
11748 Transform.prototype._transform = function (chunk, encoding, cb) {
11749 throw new Error('_transform() is not implemented');
11750 };
11751
11752 Transform.prototype._write = function (chunk, encoding, cb) {
11753 var ts = this._transformState;
11754 ts.writecb = cb;
11755 ts.writechunk = chunk;
11756 ts.writeencoding = encoding;
11757 if (!ts.transforming) {
11758 var rs = this._readableState;
11759 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
11760 }
11761 };
11762
11763 // Doesn't matter what the args are here.
11764 // _transform does all the work.
11765 // That we got here means that the readable side wants more data.
11766 Transform.prototype._read = function (n) {
11767 var ts = this._transformState;
11768
11769 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
11770 ts.transforming = true;
11771 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
11772 } else {
11773 // mark that we need a transform, so that any data that comes in
11774 // will get processed, now that we've asked for it.
11775 ts.needTransform = true;
11776 }
11777 };
11778
11779 Transform.prototype._destroy = function (err, cb) {
11780 var _this = this;
11781
11782 Duplex.prototype._destroy.call(this, err, function (err2) {
11783 cb(err2);
11784 _this.emit('close');
11785 });
11786 };
11787
11788 function done(stream, er, data) {
11789 if (er) return stream.emit('error', er);
11790
11791 if (data !== null && data !== undefined) stream.push(data);
11792
11793 // if there's nothing in the write buffer, then that means
11794 // that nothing more will ever be provided
11795 var ws = stream._writableState;
11796 var ts = stream._transformState;
11797
11798 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
11799
11800 if (ts.transforming) throw new Error('Calling transform done when still transforming');
11801
11802 return stream.push(null);
11803 }
11804 },{"./_stream_duplex":14,"core-util-is":5,"inherits":8}],18:[function(require,module,exports){
11805 (function (process,global){
11806 // Copyright Joyent, Inc. and other Node contributors.
11807 //
11808 // Permission is hereby granted, free of charge, to any person obtaining a
11809 // copy of this software and associated documentation files (the
11810 // "Software"), to deal in the Software without restriction, including
11811 // without limitation the rights to use, copy, modify, merge, publish,
11812 // distribute, sublicense, and/or sell copies of the Software, and to permit
11813 // persons to whom the Software is furnished to do so, subject to the
11814 // following conditions:
11815 //
11816 // The above copyright notice and this permission notice shall be included
11817 // in all copies or substantial portions of the Software.
11818 //
11819 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11820 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11821 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11822 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11823 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11824 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11825 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11826
11827 // A bit simpler than readable streams.
11828 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
11829 // the drain event emission and buffering.
11830
11831 'use strict';
11832
11833 /*<replacement>*/
11834
11835 var processNextTick = require('process-nextick-args');
11836 /*</replacement>*/
11837
11838 module.exports = Writable;
11839
11840 /* <replacement> */
11841 function WriteReq(chunk, encoding, cb) {
11842 this.chunk = chunk;
11843 this.encoding = encoding;
11844 this.callback = cb;
11845 this.next = null;
11846 }
11847
11848 // It seems a linked list but it is not
11849 // there will be only 2 of these for each stream
11850 function CorkedRequest(state) {
11851 var _this = this;
11852
11853 this.next = null;
11854 this.entry = null;
11855 this.finish = function () {
11856 onCorkedFinish(_this, state);
11857 };
11858 }
11859 /* </replacement> */
11860
11861 /*<replacement>*/
11862 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
11863 /*</replacement>*/
11864
11865 /*<replacement>*/
11866 var Duplex;
11867 /*</replacement>*/
11868
11869 Writable.WritableState = WritableState;
11870
11871 /*<replacement>*/
11872 var util = require('core-util-is');
11873 util.inherits = require('inherits');
11874 /*</replacement>*/
11875
11876 /*<replacement>*/
11877 var internalUtil = {
11878 deprecate: require('util-deprecate')
11879 };
11880 /*</replacement>*/
11881
11882 /*<replacement>*/
11883 var Stream = require('./internal/streams/stream');
11884 /*</replacement>*/
11885
11886 /*<replacement>*/
11887 var Buffer = require('safe-buffer').Buffer;
11888 var OurUint8Array = global.Uint8Array || function () {};
11889 function _uint8ArrayToBuffer(chunk) {
11890 return Buffer.from(chunk);
11891 }
11892 function _isUint8Array(obj) {
11893 return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
11894 }
11895 /*</replacement>*/
11896
11897 var destroyImpl = require('./internal/streams/destroy');
11898
11899 util.inherits(Writable, Stream);
11900
11901 function nop() {}
11902
11903 function WritableState(options, stream) {
11904 Duplex = Duplex || require('./_stream_duplex');
11905
11906 options = options || {};
11907
11908 // object stream flag to indicate whether or not this stream
11909 // contains buffers or objects.
11910 this.objectMode = !!options.objectMode;
11911
11912 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
11913
11914 // the point at which write() starts returning false
11915 // Note: 0 is a valid value, means that we always return false if
11916 // the entire buffer is not flushed immediately on write()
11917 var hwm = options.highWaterMark;
11918 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
11919 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
11920
11921 // cast to ints.
11922 this.highWaterMark = Math.floor(this.highWaterMark);
11923
11924 // if _final has been called
11925 this.finalCalled = false;
11926
11927 // drain event flag.
11928 this.needDrain = false;
11929 // at the start of calling end()
11930 this.ending = false;
11931 // when end() has been called, and returned
11932 this.ended = false;
11933 // when 'finish' is emitted
11934 this.finished = false;
11935
11936 // has it been destroyed
11937 this.destroyed = false;
11938
11939 // should we decode strings into buffers before passing to _write?
11940 // this is here so that some node-core streams can optimize string
11941 // handling at a lower level.
11942 var noDecode = options.decodeStrings === false;
11943 this.decodeStrings = !noDecode;
11944
11945 // Crypto is kind of old and crusty. Historically, its default string
11946 // encoding is 'binary' so we have to make this configurable.
11947 // Everything else in the universe uses 'utf8', though.
11948 this.defaultEncoding = options.defaultEncoding || 'utf8';
11949
11950 // not an actual buffer we keep track of, but a measurement
11951 // of how much we're waiting to get pushed to some underlying
11952 // socket or file.
11953 this.length = 0;
11954
11955 // a flag to see when we're in the middle of a write.
11956 this.writing = false;
11957
11958 // when true all writes will be buffered until .uncork() call
11959 this.corked = 0;
11960
11961 // a flag to be able to tell if the onwrite cb is called immediately,
11962 // or on a later tick. We set this to true at first, because any
11963 // actions that shouldn't happen until "later" should generally also
11964 // not happen before the first write call.
11965 this.sync = true;
11966
11967 // a flag to know if we're processing previously buffered items, which
11968 // may call the _write() callback in the same tick, so that we don't
11969 // end up in an overlapped onwrite situation.
11970 this.bufferProcessing = false;
11971
11972 // the callback that's passed to _write(chunk,cb)
11973 this.onwrite = function (er) {
11974 onwrite(stream, er);
11975 };
11976
11977 // the callback that the user supplies to write(chunk,encoding,cb)
11978 this.writecb = null;
11979
11980 // the amount that is being written when _write is called.
11981 this.writelen = 0;
11982
11983 this.bufferedRequest = null;
11984 this.lastBufferedRequest = null;
11985
11986 // number of pending user-supplied write callbacks
11987 // this must be 0 before 'finish' can be emitted
11988 this.pendingcb = 0;
11989
11990 // emit prefinish if the only thing we're waiting for is _write cbs
11991 // This is relevant for synchronous Transform streams
11992 this.prefinished = false;
11993
11994 // True if the error was already emitted and should not be thrown again
11995 this.errorEmitted = false;
11996
11997 // count buffered requests
11998 this.bufferedRequestCount = 0;
11999
12000 // allocate the first CorkedRequest, there is always
12001 // one allocated and free to use, and we maintain at most two
12002 this.corkedRequestsFree = new CorkedRequest(this);
12003 }
12004
12005 WritableState.prototype.getBuffer = function getBuffer() {
12006 var current = this.bufferedRequest;
12007 var out = [];
12008 while (current) {
12009 out.push(current);
12010 current = current.next;
12011 }
12012 return out;
12013 };
12014
12015 (function () {
12016 try {
12017 Object.defineProperty(WritableState.prototype, 'buffer', {
12018 get: internalUtil.deprecate(function () {
12019 return this.getBuffer();
12020 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
12021 });
12022 } catch (_) {}
12023 })();
12024
12025 // Test _writableState for inheritance to account for Duplex streams,
12026 // whose prototype chain only points to Readable.
12027 var realHasInstance;
12028 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
12029 realHasInstance = Function.prototype[Symbol.hasInstance];
12030 Object.defineProperty(Writable, Symbol.hasInstance, {
12031 value: function (object) {
12032 if (realHasInstance.call(this, object)) return true;
12033
12034 return object && object._writableState instanceof WritableState;
12035 }
12036 });
12037 } else {
12038 realHasInstance = function (object) {
12039 return object instanceof this;
12040 };
12041 }
12042
12043 function Writable(options) {
12044 Duplex = Duplex || require('./_stream_duplex');
12045
12046 // Writable ctor is applied to Duplexes, too.
12047 // `realHasInstance` is necessary because using plain `instanceof`
12048 // would return false, as no `_writableState` property is attached.
12049
12050 // Trying to use the custom `instanceof` for Writable here will also break the
12051 // Node.js LazyTransform implementation, which has a non-trivial getter for
12052 // `_writableState` that would lead to infinite recursion.
12053 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
12054 return new Writable(options);
12055 }
12056
12057 this._writableState = new WritableState(options, this);
12058
12059 // legacy.
12060 this.writable = true;
12061
12062 if (options) {
12063 if (typeof options.write === 'function') this._write = options.write;
12064
12065 if (typeof options.writev === 'function') this._writev = options.writev;
12066
12067 if (typeof options.destroy === 'function') this._destroy = options.destroy;
12068
12069 if (typeof options.final === 'function') this._final = options.final;
12070 }
12071
12072 Stream.call(this);
12073 }
12074
12075 // Otherwise people can pipe Writable streams, which is just wrong.
12076 Writable.prototype.pipe = function () {
12077 this.emit('error', new Error('Cannot pipe, not readable'));
12078 };
12079
12080 function writeAfterEnd(stream, cb) {
12081 var er = new Error('write after end');
12082 // TODO: defer error events consistently everywhere, not just the cb
12083 stream.emit('error', er);
12084 processNextTick(cb, er);
12085 }
12086
12087 // Checks that a user-supplied chunk is valid, especially for the particular
12088 // mode the stream is in. Currently this means that `null` is never accepted
12089 // and undefined/non-string values are only allowed in object mode.
12090 function validChunk(stream, state, chunk, cb) {
12091 var valid = true;
12092 var er = false;
12093
12094 if (chunk === null) {
12095 er = new TypeError('May not write null values to stream');
12096 } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
12097 er = new TypeError('Invalid non-string/buffer chunk');
12098 }
12099 if (er) {
12100 stream.emit('error', er);
12101 processNextTick(cb, er);
12102 valid = false;
12103 }
12104 return valid;
12105 }
12106
12107 Writable.prototype.write = function (chunk, encoding, cb) {
12108 var state = this._writableState;
12109 var ret = false;
12110 var isBuf = _isUint8Array(chunk) && !state.objectMode;
12111
12112 if (isBuf && !Buffer.isBuffer(chunk)) {
12113 chunk = _uint8ArrayToBuffer(chunk);
12114 }
12115
12116 if (typeof encoding === 'function') {
12117 cb = encoding;
12118 encoding = null;
12119 }
12120
12121 if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
12122
12123 if (typeof cb !== 'function') cb = nop;
12124
12125 if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
12126 state.pendingcb++;
12127 ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
12128 }
12129
12130 return ret;
12131 };
12132
12133 Writable.prototype.cork = function () {
12134 var state = this._writableState;
12135
12136 state.corked++;
12137 };
12138
12139 Writable.prototype.uncork = function () {
12140 var state = this._writableState;
12141
12142 if (state.corked) {
12143 state.corked--;
12144
12145 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
12146 }
12147 };
12148
12149 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
12150 // node::ParseEncoding() requires lower case.
12151 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
12152 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);
12153 this._writableState.defaultEncoding = encoding;
12154 return this;
12155 };
12156
12157 function decodeChunk(state, chunk, encoding) {
12158 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
12159 chunk = Buffer.from(chunk, encoding);
12160 }
12161 return chunk;
12162 }
12163
12164 // if we're already writing something, then just put this
12165 // in the queue, and wait our turn. Otherwise, call _write
12166 // If we return false, then we need a drain event, so set that flag.
12167 function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
12168 if (!isBuf) {
12169 var newChunk = decodeChunk(state, chunk, encoding);
12170 if (chunk !== newChunk) {
12171 isBuf = true;
12172 encoding = 'buffer';
12173 chunk = newChunk;
12174 }
12175 }
12176 var len = state.objectMode ? 1 : chunk.length;
12177
12178 state.length += len;
12179
12180 var ret = state.length < state.highWaterMark;
12181 // we must ensure that previous needDrain will not be reset to false.
12182 if (!ret) state.needDrain = true;
12183
12184 if (state.writing || state.corked) {
12185 var last = state.lastBufferedRequest;
12186 state.lastBufferedRequest = {
12187 chunk: chunk,
12188 encoding: encoding,
12189 isBuf: isBuf,
12190 callback: cb,
12191 next: null
12192 };
12193 if (last) {
12194 last.next = state.lastBufferedRequest;
12195 } else {
12196 state.bufferedRequest = state.lastBufferedRequest;
12197 }
12198 state.bufferedRequestCount += 1;
12199 } else {
12200 doWrite(stream, state, false, len, chunk, encoding, cb);
12201 }
12202
12203 return ret;
12204 }
12205
12206 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
12207 state.writelen = len;
12208 state.writecb = cb;
12209 state.writing = true;
12210 state.sync = true;
12211 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
12212 state.sync = false;
12213 }
12214
12215 function onwriteError(stream, state, sync, er, cb) {
12216 --state.pendingcb;
12217
12218 if (sync) {
12219 // defer the callback if we are being called synchronously
12220 // to avoid piling up things on the stack
12221 processNextTick(cb, er);
12222 // this can emit finish, and it will always happen
12223 // after error
12224 processNextTick(finishMaybe, stream, state);
12225 stream._writableState.errorEmitted = true;
12226 stream.emit('error', er);
12227 } else {
12228 // the caller expect this to happen before if
12229 // it is async
12230 cb(er);
12231 stream._writableState.errorEmitted = true;
12232 stream.emit('error', er);
12233 // this can emit finish, but finish must
12234 // always follow error
12235 finishMaybe(stream, state);
12236 }
12237 }
12238
12239 function onwriteStateUpdate(state) {
12240 state.writing = false;
12241 state.writecb = null;
12242 state.length -= state.writelen;
12243 state.writelen = 0;
12244 }
12245
12246 function onwrite(stream, er) {
12247 var state = stream._writableState;
12248 var sync = state.sync;
12249 var cb = state.writecb;
12250
12251 onwriteStateUpdate(state);
12252
12253 if (er) onwriteError(stream, state, sync, er, cb);else {
12254 // Check if we're actually ready to finish, but don't emit yet
12255 var finished = needFinish(state);
12256
12257 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
12258 clearBuffer(stream, state);
12259 }
12260
12261 if (sync) {
12262 /*<replacement>*/
12263 asyncWrite(afterWrite, stream, state, finished, cb);
12264 /*</replacement>*/
12265 } else {
12266 afterWrite(stream, state, finished, cb);
12267 }
12268 }
12269 }
12270
12271 function afterWrite(stream, state, finished, cb) {
12272 if (!finished) onwriteDrain(stream, state);
12273 state.pendingcb--;
12274 cb();
12275 finishMaybe(stream, state);
12276 }
12277
12278 // Must force callback to be called on nextTick, so that we don't
12279 // emit 'drain' before the write() consumer gets the 'false' return
12280 // value, and has a chance to attach a 'drain' listener.
12281 function onwriteDrain(stream, state) {
12282 if (state.length === 0 && state.needDrain) {
12283 state.needDrain = false;
12284 stream.emit('drain');
12285 }
12286 }
12287
12288 // if there's something in the buffer waiting, then process it
12289 function clearBuffer(stream, state) {
12290 state.bufferProcessing = true;
12291 var entry = state.bufferedRequest;
12292
12293 if (stream._writev && entry && entry.next) {
12294 // Fast case, write everything using _writev()
12295 var l = state.bufferedRequestCount;
12296 var buffer = new Array(l);
12297 var holder = state.corkedRequestsFree;
12298 holder.entry = entry;
12299
12300 var count = 0;
12301 var allBuffers = true;
12302 while (entry) {
12303 buffer[count] = entry;
12304 if (!entry.isBuf) allBuffers = false;
12305 entry = entry.next;
12306 count += 1;
12307 }
12308 buffer.allBuffers = allBuffers;
12309
12310 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
12311
12312 // doWrite is almost always async, defer these to save a bit of time
12313 // as the hot path ends with doWrite
12314 state.pendingcb++;
12315 state.lastBufferedRequest = null;
12316 if (holder.next) {
12317 state.corkedRequestsFree = holder.next;
12318 holder.next = null;
12319 } else {
12320 state.corkedRequestsFree = new CorkedRequest(state);
12321 }
12322 } else {
12323 // Slow case, write chunks one-by-one
12324 while (entry) {
12325 var chunk = entry.chunk;
12326 var encoding = entry.encoding;
12327 var cb = entry.callback;
12328 var len = state.objectMode ? 1 : chunk.length;
12329
12330 doWrite(stream, state, false, len, chunk, encoding, cb);
12331 entry = entry.next;
12332 // if we didn't call the onwrite immediately, then
12333 // it means that we need to wait until it does.
12334 // also, that means that the chunk and cb are currently
12335 // being processed, so move the buffer counter past them.
12336 if (state.writing) {
12337 break;
12338 }
12339 }
12340
12341 if (entry === null) state.lastBufferedRequest = null;
12342 }
12343
12344 state.bufferedRequestCount = 0;
12345 state.bufferedRequest = entry;
12346 state.bufferProcessing = false;
12347 }
12348
12349 Writable.prototype._write = function (chunk, encoding, cb) {
12350 cb(new Error('_write() is not implemented'));
12351 };
12352
12353 Writable.prototype._writev = null;
12354
12355 Writable.prototype.end = function (chunk, encoding, cb) {
12356 var state = this._writableState;
12357
12358 if (typeof chunk === 'function') {
12359 cb = chunk;
12360 chunk = null;
12361 encoding = null;
12362 } else if (typeof encoding === 'function') {
12363 cb = encoding;
12364 encoding = null;
12365 }
12366
12367 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
12368
12369 // .end() fully uncorks
12370 if (state.corked) {
12371 state.corked = 1;
12372 this.uncork();
12373 }
12374
12375 // ignore unnecessary end() calls.
12376 if (!state.ending && !state.finished) endWritable(this, state, cb);
12377 };
12378
12379 function needFinish(state) {
12380 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
12381 }
12382 function callFinal(stream, state) {
12383 stream._final(function (err) {
12384 state.pendingcb--;
12385 if (err) {
12386 stream.emit('error', err);
12387 }
12388 state.prefinished = true;
12389 stream.emit('prefinish');
12390 finishMaybe(stream, state);
12391 });
12392 }
12393 function prefinish(stream, state) {
12394 if (!state.prefinished && !state.finalCalled) {
12395 if (typeof stream._final === 'function') {
12396 state.pendingcb++;
12397 state.finalCalled = true;
12398 processNextTick(callFinal, stream, state);
12399 } else {
12400 state.prefinished = true;
12401 stream.emit('prefinish');
12402 }
12403 }
12404 }
12405
12406 function finishMaybe(stream, state) {
12407 var need = needFinish(state);
12408 if (need) {
12409 prefinish(stream, state);
12410 if (state.pendingcb === 0) {
12411 state.finished = true;
12412 stream.emit('finish');
12413 }
12414 }
12415 return need;
12416 }
12417
12418 function endWritable(stream, state, cb) {
12419 state.ending = true;
12420 finishMaybe(stream, state);
12421 if (cb) {
12422 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
12423 }
12424 state.ended = true;
12425 stream.writable = false;
12426 }
12427
12428 function onCorkedFinish(corkReq, state, err) {
12429 var entry = corkReq.entry;
12430 corkReq.entry = null;
12431 while (entry) {
12432 var cb = entry.callback;
12433 state.pendingcb--;
12434 cb(err);
12435 entry = entry.next;
12436 }
12437 if (state.corkedRequestsFree) {
12438 state.corkedRequestsFree.next = corkReq;
12439 } else {
12440 state.corkedRequestsFree = corkReq;
12441 }
12442 }
12443
12444 Object.defineProperty(Writable.prototype, 'destroyed', {
12445 get: function () {
12446 if (this._writableState === undefined) {
12447 return false;
12448 }
12449 return this._writableState.destroyed;
12450 },
12451 set: function (value) {
12452 // we ignore the value if the stream
12453 // has not been initialized yet
12454 if (!this._writableState) {
12455 return;
12456 }
12457
12458 // backward compatibility, the user is explicitly
12459 // managing destroyed
12460 this._writableState.destroyed = value;
12461 }
12462 });
12463
12464 Writable.prototype.destroy = destroyImpl.destroy;
12465 Writable.prototype._undestroy = destroyImpl.undestroy;
12466 Writable.prototype._destroy = function (err, cb) {
12467 this.end();
12468 cb(err);
12469 };
12470 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
12471 },{"./_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){
12472 'use strict';
12473
12474 /*<replacement>*/
12475
12476 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12477
12478 var Buffer = require('safe-buffer').Buffer;
12479 /*</replacement>*/
12480
12481 function copyBuffer(src, target, offset) {
12482 src.copy(target, offset);
12483 }
12484
12485 module.exports = function () {
12486 function BufferList() {
12487 _classCallCheck(this, BufferList);
12488
12489 this.head = null;
12490 this.tail = null;
12491 this.length = 0;
12492 }
12493
12494 BufferList.prototype.push = function push(v) {
12495 var entry = { data: v, next: null };
12496 if (this.length > 0) this.tail.next = entry;else this.head = entry;
12497 this.tail = entry;
12498 ++this.length;
12499 };
12500
12501 BufferList.prototype.unshift = function unshift(v) {
12502 var entry = { data: v, next: this.head };
12503 if (this.length === 0) this.tail = entry;
12504 this.head = entry;
12505 ++this.length;
12506 };
12507
12508 BufferList.prototype.shift = function shift() {
12509 if (this.length === 0) return;
12510 var ret = this.head.data;
12511 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
12512 --this.length;
12513 return ret;
12514 };
12515
12516 BufferList.prototype.clear = function clear() {
12517 this.head = this.tail = null;
12518 this.length = 0;
12519 };
12520
12521 BufferList.prototype.join = function join(s) {
12522 if (this.length === 0) return '';
12523 var p = this.head;
12524 var ret = '' + p.data;
12525 while (p = p.next) {
12526 ret += s + p.data;
12527 }return ret;
12528 };
12529
12530 BufferList.prototype.concat = function concat(n) {
12531 if (this.length === 0) return Buffer.alloc(0);
12532 if (this.length === 1) return this.head.data;
12533 var ret = Buffer.allocUnsafe(n >>> 0);
12534 var p = this.head;
12535 var i = 0;
12536 while (p) {
12537 copyBuffer(p.data, ret, i);
12538 i += p.data.length;
12539 p = p.next;
12540 }
12541 return ret;
12542 };
12543
12544 return BufferList;
12545 }();
12546 },{"safe-buffer":26}],20:[function(require,module,exports){
12547 'use strict';
12548
12549 /*<replacement>*/
12550
12551 var processNextTick = require('process-nextick-args');
12552 /*</replacement>*/
12553
12554 // undocumented cb() API, needed for core, not for public API
12555 function destroy(err, cb) {
12556 var _this = this;
12557
12558 var readableDestroyed = this._readableState && this._readableState.destroyed;
12559 var writableDestroyed = this._writableState && this._writableState.destroyed;
12560
12561 if (readableDestroyed || writableDestroyed) {
12562 if (cb) {
12563 cb(err);
12564 } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
12565 processNextTick(emitErrorNT, this, err);
12566 }
12567 return;
12568 }
12569
12570 // we set destroyed to true before firing error callbacks in order
12571 // to make it re-entrance safe in case destroy() is called within callbacks
12572
12573 if (this._readableState) {
12574 this._readableState.destroyed = true;
12575 }
12576
12577 // if this is a duplex stream mark the writable part as destroyed as well
12578 if (this._writableState) {
12579 this._writableState.destroyed = true;
12580 }
12581
12582 this._destroy(err || null, function (err) {
12583 if (!cb && err) {
12584 processNextTick(emitErrorNT, _this, err);
12585 if (_this._writableState) {
12586 _this._writableState.errorEmitted = true;
12587 }
12588 } else if (cb) {
12589 cb(err);
12590 }
12591 });
12592 }
12593
12594 function undestroy() {
12595 if (this._readableState) {
12596 this._readableState.destroyed = false;
12597 this._readableState.reading = false;
12598 this._readableState.ended = false;
12599 this._readableState.endEmitted = false;
12600 }
12601
12602 if (this._writableState) {
12603 this._writableState.destroyed = false;
12604 this._writableState.ended = false;
12605 this._writableState.ending = false;
12606 this._writableState.finished = false;
12607 this._writableState.errorEmitted = false;
12608 }
12609 }
12610
12611 function emitErrorNT(self, err) {
12612 self.emit('error', err);
12613 }
12614
12615 module.exports = {
12616 destroy: destroy,
12617 undestroy: undestroy
12618 };
12619 },{"process-nextick-args":11}],21:[function(require,module,exports){
12620 module.exports = require('events').EventEmitter;
12621
12622 },{"events":6}],22:[function(require,module,exports){
12623 module.exports = require('./readable').PassThrough
12624
12625 },{"./readable":23}],23:[function(require,module,exports){
12626 exports = module.exports = require('./lib/_stream_readable.js');
12627 exports.Stream = exports;
12628 exports.Readable = exports;
12629 exports.Writable = require('./lib/_stream_writable.js');
12630 exports.Duplex = require('./lib/_stream_duplex.js');
12631 exports.Transform = require('./lib/_stream_transform.js');
12632 exports.PassThrough = require('./lib/_stream_passthrough.js');
12633
12634 },{"./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){
12635 module.exports = require('./readable').Transform
12636
12637 },{"./readable":23}],25:[function(require,module,exports){
12638 module.exports = require('./lib/_stream_writable.js');
12639
12640 },{"./lib/_stream_writable.js":18}],26:[function(require,module,exports){
12641 /* eslint-disable node/no-deprecated-api */
12642 var buffer = require('buffer')
12643 var Buffer = buffer.Buffer
12644
12645 // alternative to using Object.keys for old browsers
12646 function copyProps (src, dst) {
12647 for (var key in src) {
12648 dst[key] = src[key]
12649 }
12650 }
12651 if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
12652 module.exports = buffer
12653 } else {
12654 // Copy properties from require('buffer')
12655 copyProps(buffer, exports)
12656 exports.Buffer = SafeBuffer
12657 }
12658
12659 function SafeBuffer (arg, encodingOrOffset, length) {
12660 return Buffer(arg, encodingOrOffset, length)
12661 }
12662
12663 // Copy static methods from Buffer
12664 copyProps(Buffer, SafeBuffer)
12665
12666 SafeBuffer.from = function (arg, encodingOrOffset, length) {
12667 if (typeof arg === 'number') {
12668 throw new TypeError('Argument must not be a number')
12669 }
12670 return Buffer(arg, encodingOrOffset, length)
12671 }
12672
12673 SafeBuffer.alloc = function (size, fill, encoding) {
12674 if (typeof size !== 'number') {
12675 throw new TypeError('Argument must be a number')
12676 }
12677 var buf = Buffer(size)
12678 if (fill !== undefined) {
12679 if (typeof encoding === 'string') {
12680 buf.fill(fill, encoding)
12681 } else {
12682 buf.fill(fill)
12683 }
12684 } else {
12685 buf.fill(0)
12686 }
12687 return buf
12688 }
12689
12690 SafeBuffer.allocUnsafe = function (size) {
12691 if (typeof size !== 'number') {
12692 throw new TypeError('Argument must be a number')
12693 }
12694 return Buffer(size)
12695 }
12696
12697 SafeBuffer.allocUnsafeSlow = function (size) {
12698 if (typeof size !== 'number') {
12699 throw new TypeError('Argument must be a number')
12700 }
12701 return buffer.SlowBuffer(size)
12702 }
12703
12704 },{"buffer":4}],27:[function(require,module,exports){
12705 // Copyright Joyent, Inc. and other Node contributors.
12706 //
12707 // Permission is hereby granted, free of charge, to any person obtaining a
12708 // copy of this software and associated documentation files (the
12709 // "Software"), to deal in the Software without restriction, including
12710 // without limitation the rights to use, copy, modify, merge, publish,
12711 // distribute, sublicense, and/or sell copies of the Software, and to permit
12712 // persons to whom the Software is furnished to do so, subject to the
12713 // following conditions:
12714 //
12715 // The above copyright notice and this permission notice shall be included
12716 // in all copies or substantial portions of the Software.
12717 //
12718 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12719 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12720 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12721 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12722 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12723 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12724 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12725
12726 module.exports = Stream;
12727
12728 var EE = require('events').EventEmitter;
12729 var inherits = require('inherits');
12730
12731 inherits(Stream, EE);
12732 Stream.Readable = require('readable-stream/readable.js');
12733 Stream.Writable = require('readable-stream/writable.js');
12734 Stream.Duplex = require('readable-stream/duplex.js');
12735 Stream.Transform = require('readable-stream/transform.js');
12736 Stream.PassThrough = require('readable-stream/passthrough.js');
12737
12738 // Backwards-compat with node 0.4.x
12739 Stream.Stream = Stream;
12740
12741
12742
12743 // old-style streams. Note that the pipe method (the only relevant
12744 // part of this class) is overridden in the Readable class.
12745
12746 function Stream() {
12747 EE.call(this);
12748 }
12749
12750 Stream.prototype.pipe = function(dest, options) {
12751 var source = this;
12752
12753 function ondata(chunk) {
12754 if (dest.writable) {
12755 if (false === dest.write(chunk) && source.pause) {
12756 source.pause();
12757 }
12758 }
12759 }
12760
12761 source.on('data', ondata);
12762
12763 function ondrain() {
12764 if (source.readable && source.resume) {
12765 source.resume();
12766 }
12767 }
12768
12769 dest.on('drain', ondrain);
12770
12771 // If the 'end' option is not supplied, dest.end() will be called when
12772 // source gets the 'end' or 'close' events. Only dest.end() once.
12773 if (!dest._isStdio && (!options || options.end !== false)) {
12774 source.on('end', onend);
12775 source.on('close', onclose);
12776 }
12777
12778 var didOnEnd = false;
12779 function onend() {
12780 if (didOnEnd) return;
12781 didOnEnd = true;
12782
12783 dest.end();
12784 }
12785
12786
12787 function onclose() {
12788 if (didOnEnd) return;
12789 didOnEnd = true;
12790
12791 if (typeof dest.destroy === 'function') dest.destroy();
12792 }
12793
12794 // don't leave dangling pipes when there are errors.
12795 function onerror(er) {
12796 cleanup();
12797 if (EE.listenerCount(this, 'error') === 0) {
12798 throw er; // Unhandled stream error in pipe.
12799 }
12800 }
12801
12802 source.on('error', onerror);
12803 dest.on('error', onerror);
12804
12805 // remove all the event listeners that were added.
12806 function cleanup() {
12807 source.removeListener('data', ondata);
12808 dest.removeListener('drain', ondrain);
12809
12810 source.removeListener('end', onend);
12811 source.removeListener('close', onclose);
12812
12813 source.removeListener('error', onerror);
12814 dest.removeListener('error', onerror);
12815
12816 source.removeListener('end', cleanup);
12817 source.removeListener('close', cleanup);
12818
12819 dest.removeListener('close', cleanup);
12820 }
12821
12822 source.on('end', cleanup);
12823 source.on('close', cleanup);
12824
12825 dest.on('close', cleanup);
12826
12827 dest.emit('pipe', source);
12828
12829 // Allow for unix-like usage: A.pipe(B).pipe(C)
12830 return dest;
12831 };
12832
12833 },{"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){
12834 'use strict';
12835
12836 var Buffer = require('safe-buffer').Buffer;
12837
12838 var isEncoding = Buffer.isEncoding || function (encoding) {
12839 encoding = '' + encoding;
12840 switch (encoding && encoding.toLowerCase()) {
12841 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':
12842 return true;
12843 default:
12844 return false;
12845 }
12846 };
12847
12848 function _normalizeEncoding(enc) {
12849 if (!enc) return 'utf8';
12850 var retried;
12851 while (true) {
12852 switch (enc) {
12853 case 'utf8':
12854 case 'utf-8':
12855 return 'utf8';
12856 case 'ucs2':
12857 case 'ucs-2':
12858 case 'utf16le':
12859 case 'utf-16le':
12860 return 'utf16le';
12861 case 'latin1':
12862 case 'binary':
12863 return 'latin1';
12864 case 'base64':
12865 case 'ascii':
12866 case 'hex':
12867 return enc;
12868 default:
12869 if (retried) return; // undefined
12870 enc = ('' + enc).toLowerCase();
12871 retried = true;
12872 }
12873 }
12874 };
12875
12876 // Do not cache `Buffer.isEncoding` when checking encoding names as some
12877 // modules monkey-patch it to support additional encodings
12878 function normalizeEncoding(enc) {
12879 var nenc = _normalizeEncoding(enc);
12880 if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
12881 return nenc || enc;
12882 }
12883
12884 // StringDecoder provides an interface for efficiently splitting a series of
12885 // buffers into a series of JS strings without breaking apart multi-byte
12886 // characters.
12887 exports.StringDecoder = StringDecoder;
12888 function StringDecoder(encoding) {
12889 this.encoding = normalizeEncoding(encoding);
12890 var nb;
12891 switch (this.encoding) {
12892 case 'utf16le':
12893 this.text = utf16Text;
12894 this.end = utf16End;
12895 nb = 4;
12896 break;
12897 case 'utf8':
12898 this.fillLast = utf8FillLast;
12899 nb = 4;
12900 break;
12901 case 'base64':
12902 this.text = base64Text;
12903 this.end = base64End;
12904 nb = 3;
12905 break;
12906 default:
12907 this.write = simpleWrite;
12908 this.end = simpleEnd;
12909 return;
12910 }
12911 this.lastNeed = 0;
12912 this.lastTotal = 0;
12913 this.lastChar = Buffer.allocUnsafe(nb);
12914 }
12915
12916 StringDecoder.prototype.write = function (buf) {
12917 if (buf.length === 0) return '';
12918 var r;
12919 var i;
12920 if (this.lastNeed) {
12921 r = this.fillLast(buf);
12922 if (r === undefined) return '';
12923 i = this.lastNeed;
12924 this.lastNeed = 0;
12925 } else {
12926 i = 0;
12927 }
12928 if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
12929 return r || '';
12930 };
12931
12932 StringDecoder.prototype.end = utf8End;
12933
12934 // Returns only complete characters in a Buffer
12935 StringDecoder.prototype.text = utf8Text;
12936
12937 // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
12938 StringDecoder.prototype.fillLast = function (buf) {
12939 if (this.lastNeed <= buf.length) {
12940 buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
12941 return this.lastChar.toString(this.encoding, 0, this.lastTotal);
12942 }
12943 buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
12944 this.lastNeed -= buf.length;
12945 };
12946
12947 // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
12948 // continuation byte.
12949 function utf8CheckByte(byte) {
12950 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;
12951 return -1;
12952 }
12953
12954 // Checks at most 3 bytes at the end of a Buffer in order to detect an
12955 // incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
12956 // needed to complete the UTF-8 character (if applicable) are returned.
12957 function utf8CheckIncomplete(self, buf, i) {
12958 var j = buf.length - 1;
12959 if (j < i) return 0;
12960 var nb = utf8CheckByte(buf[j]);
12961 if (nb >= 0) {
12962 if (nb > 0) self.lastNeed = nb - 1;
12963 return nb;
12964 }
12965 if (--j < i) return 0;
12966 nb = utf8CheckByte(buf[j]);
12967 if (nb >= 0) {
12968 if (nb > 0) self.lastNeed = nb - 2;
12969 return nb;
12970 }
12971 if (--j < i) return 0;
12972 nb = utf8CheckByte(buf[j]);
12973 if (nb >= 0) {
12974 if (nb > 0) {
12975 if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
12976 }
12977 return nb;
12978 }
12979 return 0;
12980 }
12981
12982 // Validates as many continuation bytes for a multi-byte UTF-8 character as
12983 // needed or are available. If we see a non-continuation byte where we expect
12984 // one, we "replace" the validated continuation bytes we've seen so far with
12985 // UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding
12986 // behavior. The continuation byte check is included three times in the case
12987 // where all of the continuation bytes for a character exist in the same buffer.
12988 // It is also done this way as a slight performance increase instead of using a
12989 // loop.
12990 function utf8CheckExtraBytes(self, buf, p) {
12991 if ((buf[0] & 0xC0) !== 0x80) {
12992 self.lastNeed = 0;
12993 return '\ufffd'.repeat(p);
12994 }
12995 if (self.lastNeed > 1 && buf.length > 1) {
12996 if ((buf[1] & 0xC0) !== 0x80) {
12997 self.lastNeed = 1;
12998 return '\ufffd'.repeat(p + 1);
12999 }
13000 if (self.lastNeed > 2 && buf.length > 2) {
13001 if ((buf[2] & 0xC0) !== 0x80) {
13002 self.lastNeed = 2;
13003 return '\ufffd'.repeat(p + 2);
13004 }
13005 }
13006 }
13007 }
13008
13009 // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
13010 function utf8FillLast(buf) {
13011 var p = this.lastTotal - this.lastNeed;
13012 var r = utf8CheckExtraBytes(this, buf, p);
13013 if (r !== undefined) return r;
13014 if (this.lastNeed <= buf.length) {
13015 buf.copy(this.lastChar, p, 0, this.lastNeed);
13016 return this.lastChar.toString(this.encoding, 0, this.lastTotal);
13017 }
13018 buf.copy(this.lastChar, p, 0, buf.length);
13019 this.lastNeed -= buf.length;
13020 }
13021
13022 // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
13023 // partial character, the character's bytes are buffered until the required
13024 // number of bytes are available.
13025 function utf8Text(buf, i) {
13026 var total = utf8CheckIncomplete(this, buf, i);
13027 if (!this.lastNeed) return buf.toString('utf8', i);
13028 this.lastTotal = total;
13029 var end = buf.length - (total - this.lastNeed);
13030 buf.copy(this.lastChar, 0, end);
13031 return buf.toString('utf8', i, end);
13032 }
13033
13034 // For UTF-8, a replacement character for each buffered byte of a (partial)
13035 // character needs to be added to the output.
13036 function utf8End(buf) {
13037 var r = buf && buf.length ? this.write(buf) : '';
13038 if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed);
13039 return r;
13040 }
13041
13042 // UTF-16LE typically needs two bytes per character, but even if we have an even
13043 // number of bytes available, we need to check if we end on a leading/high
13044 // surrogate. In that case, we need to wait for the next two bytes in order to
13045 // decode the last character properly.
13046 function utf16Text(buf, i) {
13047 if ((buf.length - i) % 2 === 0) {
13048 var r = buf.toString('utf16le', i);
13049 if (r) {
13050 var c = r.charCodeAt(r.length - 1);
13051 if (c >= 0xD800 && c <= 0xDBFF) {
13052 this.lastNeed = 2;
13053 this.lastTotal = 4;
13054 this.lastChar[0] = buf[buf.length - 2];
13055 this.lastChar[1] = buf[buf.length - 1];
13056 return r.slice(0, -1);
13057 }
13058 }
13059 return r;
13060 }
13061 this.lastNeed = 1;
13062 this.lastTotal = 2;
13063 this.lastChar[0] = buf[buf.length - 1];
13064 return buf.toString('utf16le', i, buf.length - 1);
13065 }
13066
13067 // For UTF-16LE we do not explicitly append special replacement characters if we
13068 // end on a partial character, we simply let v8 handle that.
13069 function utf16End(buf) {
13070 var r = buf && buf.length ? this.write(buf) : '';
13071 if (this.lastNeed) {
13072 var end = this.lastTotal - this.lastNeed;
13073 return r + this.lastChar.toString('utf16le', 0, end);
13074 }
13075 return r;
13076 }
13077
13078 function base64Text(buf, i) {
13079 var n = (buf.length - i) % 3;
13080 if (n === 0) return buf.toString('base64', i);
13081 this.lastNeed = 3 - n;
13082 this.lastTotal = 3;
13083 if (n === 1) {
13084 this.lastChar[0] = buf[buf.length - 1];
13085 } else {
13086 this.lastChar[0] = buf[buf.length - 2];
13087 this.lastChar[1] = buf[buf.length - 1];
13088 }
13089 return buf.toString('base64', i, buf.length - n);
13090 }
13091
13092 function base64End(buf) {
13093 var r = buf && buf.length ? this.write(buf) : '';
13094 if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
13095 return r;
13096 }
13097
13098 // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
13099 function simpleWrite(buf) {
13100 return buf.toString(this.encoding);
13101 }
13102
13103 function simpleEnd(buf) {
13104 return buf && buf.length ? this.write(buf) : '';
13105 }
13106 },{"safe-buffer":26}],29:[function(require,module,exports){
13107 (function (global){
13108
13109 /**
13110 * Module exports.
13111 */
13112
13113 module.exports = deprecate;
13114
13115 /**
13116 * Mark that a method should not be used.
13117 * Returns a modified function which warns once by default.
13118 *
13119 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
13120 *
13121 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
13122 * will throw an Error when invoked.
13123 *
13124 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
13125 * will invoke `console.trace()` instead of `console.error()`.
13126 *
13127 * @param {Function} fn - the function to deprecate
13128 * @param {String} msg - the string to print to the console when `fn` is invoked
13129 * @returns {Function} a new "deprecated" version of `fn`
13130 * @api public
13131 */
13132
13133 function deprecate (fn, msg) {
13134 if (config('noDeprecation')) {
13135 return fn;
13136 }
13137
13138 var warned = false;
13139 function deprecated() {
13140 if (!warned) {
13141 if (config('throwDeprecation')) {
13142 throw new Error(msg);
13143 } else if (config('traceDeprecation')) {
13144 console.trace(msg);
13145 } else {
13146 console.warn(msg);
13147 }
13148 warned = true;
13149 }
13150 return fn.apply(this, arguments);
13151 }
13152
13153 return deprecated;
13154 }
13155
13156 /**
13157 * Checks `localStorage` for boolean values for the given `name`.
13158 *
13159 * @param {String} name
13160 * @returns {Boolean}
13161 * @api private
13162 */
13163
13164 function config (name) {
13165 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
13166 try {
13167 if (!global.localStorage) return false;
13168 } catch (_) {
13169 return false;
13170 }
13171 var val = global.localStorage[name];
13172 if (null == val) return false;
13173 return String(val).toLowerCase() === 'true';
13174 }
13175
13176 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
13177 },{}],30:[function(require,module,exports){
13178 arguments[4][8][0].apply(exports,arguments)
13179 },{"dup":8}],31:[function(require,module,exports){
13180 module.exports = function isBuffer(arg) {
13181 return arg && typeof arg === 'object'
13182 && typeof arg.copy === 'function'
13183 && typeof arg.fill === 'function'
13184 && typeof arg.readUInt8 === 'function';
13185 }
13186 },{}],32:[function(require,module,exports){
13187 (function (process,global){
13188 // Copyright Joyent, Inc. and other Node contributors.
13189 //
13190 // Permission is hereby granted, free of charge, to any person obtaining a
13191 // copy of this software and associated documentation files (the
13192 // "Software"), to deal in the Software without restriction, including
13193 // without limitation the rights to use, copy, modify, merge, publish,
13194 // distribute, sublicense, and/or sell copies of the Software, and to permit
13195 // persons to whom the Software is furnished to do so, subject to the
13196 // following conditions:
13197 //
13198 // The above copyright notice and this permission notice shall be included
13199 // in all copies or substantial portions of the Software.
13200 //
13201 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13202 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13203 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13204 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13205 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13206 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13207 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13208
13209 var formatRegExp = /%[sdj%]/g;
13210 exports.format = function(f) {
13211 if (!isString(f)) {
13212 var objects = [];
13213 for (var i = 0; i < arguments.length; i++) {
13214 objects.push(inspect(arguments[i]));
13215 }
13216 return objects.join(' ');
13217 }
13218
13219 var i = 1;
13220 var args = arguments;
13221 var len = args.length;
13222 var str = String(f).replace(formatRegExp, function(x) {
13223 if (x === '%%') return '%';
13224 if (i >= len) return x;
13225 switch (x) {
13226 case '%s': return String(args[i++]);
13227 case '%d': return Number(args[i++]);
13228 case '%j':
13229 try {
13230 return JSON.stringify(args[i++]);
13231 } catch (_) {
13232 return '[Circular]';
13233 }
13234 default:
13235 return x;
13236 }
13237 });
13238 for (var x = args[i]; i < len; x = args[++i]) {
13239 if (isNull(x) || !isObject(x)) {
13240 str += ' ' + x;
13241 } else {
13242 str += ' ' + inspect(x);
13243 }
13244 }
13245 return str;
13246 };
13247
13248
13249 // Mark that a method should not be used.
13250 // Returns a modified function which warns once by default.
13251 // If --no-deprecation is set, then it is a no-op.
13252 exports.deprecate = function(fn, msg) {
13253 // Allow for deprecating things in the process of starting up.
13254 if (isUndefined(global.process)) {
13255 return function() {
13256 return exports.deprecate(fn, msg).apply(this, arguments);
13257 };
13258 }
13259
13260 if (process.noDeprecation === true) {
13261 return fn;
13262 }
13263
13264 var warned = false;
13265 function deprecated() {
13266 if (!warned) {
13267 if (process.throwDeprecation) {
13268 throw new Error(msg);
13269 } else if (process.traceDeprecation) {
13270 console.trace(msg);
13271 } else {
13272 console.error(msg);
13273 }
13274 warned = true;
13275 }
13276 return fn.apply(this, arguments);
13277 }
13278
13279 return deprecated;
13280 };
13281
13282
13283 var debugs = {};
13284 var debugEnviron;
13285 exports.debuglog = function(set) {
13286 if (isUndefined(debugEnviron))
13287 debugEnviron = process.env.NODE_DEBUG || '';
13288 set = set.toUpperCase();
13289 if (!debugs[set]) {
13290 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
13291 var pid = process.pid;
13292 debugs[set] = function() {
13293 var msg = exports.format.apply(exports, arguments);
13294 console.error('%s %d: %s', set, pid, msg);
13295 };
13296 } else {
13297 debugs[set] = function() {};
13298 }
13299 }
13300 return debugs[set];
13301 };
13302
13303
13304 /**
13305 * Echos the value of a value. Trys to print the value out
13306 * in the best way possible given the different types.
13307 *
13308 * @param {Object} obj The object to print out.
13309 * @param {Object} opts Optional options object that alters the output.
13310 */
13311 /* legacy: obj, showHidden, depth, colors*/
13312 function inspect(obj, opts) {
13313 // default options
13314 var ctx = {
13315 seen: [],
13316 stylize: stylizeNoColor
13317 };
13318 // legacy...
13319 if (arguments.length >= 3) ctx.depth = arguments[2];
13320 if (arguments.length >= 4) ctx.colors = arguments[3];
13321 if (isBoolean(opts)) {
13322 // legacy...
13323 ctx.showHidden = opts;
13324 } else if (opts) {
13325 // got an "options" object
13326 exports._extend(ctx, opts);
13327 }
13328 // set default options
13329 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
13330 if (isUndefined(ctx.depth)) ctx.depth = 2;
13331 if (isUndefined(ctx.colors)) ctx.colors = false;
13332 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
13333 if (ctx.colors) ctx.stylize = stylizeWithColor;
13334 return formatValue(ctx, obj, ctx.depth);
13335 }
13336 exports.inspect = inspect;
13337
13338
13339 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
13340 inspect.colors = {
13341 'bold' : [1, 22],
13342 'italic' : [3, 23],
13343 'underline' : [4, 24],
13344 'inverse' : [7, 27],
13345 'white' : [37, 39],
13346 'grey' : [90, 39],
13347 'black' : [30, 39],
13348 'blue' : [34, 39],
13349 'cyan' : [36, 39],
13350 'green' : [32, 39],
13351 'magenta' : [35, 39],
13352 'red' : [31, 39],
13353 'yellow' : [33, 39]
13354 };
13355
13356 // Don't use 'blue' not visible on cmd.exe
13357 inspect.styles = {
13358 'special': 'cyan',
13359 'number': 'yellow',
13360 'boolean': 'yellow',
13361 'undefined': 'grey',
13362 'null': 'bold',
13363 'string': 'green',
13364 'date': 'magenta',
13365 // "name": intentionally not styling
13366 'regexp': 'red'
13367 };
13368
13369
13370 function stylizeWithColor(str, styleType) {
13371 var style = inspect.styles[styleType];
13372
13373 if (style) {
13374 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
13375 '\u001b[' + inspect.colors[style][1] + 'm';
13376 } else {
13377 return str;
13378 }
13379 }
13380
13381
13382 function stylizeNoColor(str, styleType) {
13383 return str;
13384 }
13385
13386
13387 function arrayToHash(array) {
13388 var hash = {};
13389
13390 array.forEach(function(val, idx) {
13391 hash[val] = true;
13392 });
13393
13394 return hash;
13395 }
13396
13397
13398 function formatValue(ctx, value, recurseTimes) {
13399 // Provide a hook for user-specified inspect functions.
13400 // Check that value is an object with an inspect function on it
13401 if (ctx.customInspect &&
13402 value &&
13403 isFunction(value.inspect) &&
13404 // Filter out the util module, it's inspect function is special
13405 value.inspect !== exports.inspect &&
13406 // Also filter out any prototype objects using the circular check.
13407 !(value.constructor && value.constructor.prototype === value)) {
13408 var ret = value.inspect(recurseTimes, ctx);
13409 if (!isString(ret)) {
13410 ret = formatValue(ctx, ret, recurseTimes);
13411 }
13412 return ret;
13413 }
13414
13415 // Primitive types cannot have properties
13416 var primitive = formatPrimitive(ctx, value);
13417 if (primitive) {
13418 return primitive;
13419 }
13420
13421 // Look up the keys of the object.
13422 var keys = Object.keys(value);
13423 var visibleKeys = arrayToHash(keys);
13424
13425 if (ctx.showHidden) {
13426 keys = Object.getOwnPropertyNames(value);
13427 }
13428
13429 // IE doesn't make error fields non-enumerable
13430 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
13431 if (isError(value)
13432 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
13433 return formatError(value);
13434 }
13435
13436 // Some type of object without properties can be shortcutted.
13437 if (keys.length === 0) {
13438 if (isFunction(value)) {
13439 var name = value.name ? ': ' + value.name : '';
13440 return ctx.stylize('[Function' + name + ']', 'special');
13441 }
13442 if (isRegExp(value)) {
13443 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13444 }
13445 if (isDate(value)) {
13446 return ctx.stylize(Date.prototype.toString.call(value), 'date');
13447 }
13448 if (isError(value)) {
13449 return formatError(value);
13450 }
13451 }
13452
13453 var base = '', array = false, braces = ['{', '}'];
13454
13455 // Make Array say that they are Array
13456 if (isArray(value)) {
13457 array = true;
13458 braces = ['[', ']'];
13459 }
13460
13461 // Make functions say that they are functions
13462 if (isFunction(value)) {
13463 var n = value.name ? ': ' + value.name : '';
13464 base = ' [Function' + n + ']';
13465 }
13466
13467 // Make RegExps say that they are RegExps
13468 if (isRegExp(value)) {
13469 base = ' ' + RegExp.prototype.toString.call(value);
13470 }
13471
13472 // Make dates with properties first say the date
13473 if (isDate(value)) {
13474 base = ' ' + Date.prototype.toUTCString.call(value);
13475 }
13476
13477 // Make error with message first say the error
13478 if (isError(value)) {
13479 base = ' ' + formatError(value);
13480 }
13481
13482 if (keys.length === 0 && (!array || value.length == 0)) {
13483 return braces[0] + base + braces[1];
13484 }
13485
13486 if (recurseTimes < 0) {
13487 if (isRegExp(value)) {
13488 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13489 } else {
13490 return ctx.stylize('[Object]', 'special');
13491 }
13492 }
13493
13494 ctx.seen.push(value);
13495
13496 var output;
13497 if (array) {
13498 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
13499 } else {
13500 output = keys.map(function(key) {
13501 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
13502 });
13503 }
13504
13505 ctx.seen.pop();
13506
13507 return reduceToSingleString(output, base, braces);
13508 }
13509
13510
13511 function formatPrimitive(ctx, value) {
13512 if (isUndefined(value))
13513 return ctx.stylize('undefined', 'undefined');
13514 if (isString(value)) {
13515 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
13516 .replace(/'/g, "\\'")
13517 .replace(/\\"/g, '"') + '\'';
13518 return ctx.stylize(simple, 'string');
13519 }
13520 if (isNumber(value))
13521 return ctx.stylize('' + value, 'number');
13522 if (isBoolean(value))
13523 return ctx.stylize('' + value, 'boolean');
13524 // For some reason typeof null is "object", so special case here.
13525 if (isNull(value))
13526 return ctx.stylize('null', 'null');
13527 }
13528
13529
13530 function formatError(value) {
13531 return '[' + Error.prototype.toString.call(value) + ']';
13532 }
13533
13534
13535 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
13536 var output = [];
13537 for (var i = 0, l = value.length; i < l; ++i) {
13538 if (hasOwnProperty(value, String(i))) {
13539 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13540 String(i), true));
13541 } else {
13542 output.push('');
13543 }
13544 }
13545 keys.forEach(function(key) {
13546 if (!key.match(/^\d+$/)) {
13547 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13548 key, true));
13549 }
13550 });
13551 return output;
13552 }
13553
13554
13555 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
13556 var name, str, desc;
13557 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
13558 if (desc.get) {
13559 if (desc.set) {
13560 str = ctx.stylize('[Getter/Setter]', 'special');
13561 } else {
13562 str = ctx.stylize('[Getter]', 'special');
13563 }
13564 } else {
13565 if (desc.set) {
13566 str = ctx.stylize('[Setter]', 'special');
13567 }
13568 }
13569 if (!hasOwnProperty(visibleKeys, key)) {
13570 name = '[' + key + ']';
13571 }
13572 if (!str) {
13573 if (ctx.seen.indexOf(desc.value) < 0) {
13574 if (isNull(recurseTimes)) {
13575 str = formatValue(ctx, desc.value, null);
13576 } else {
13577 str = formatValue(ctx, desc.value, recurseTimes - 1);
13578 }
13579 if (str.indexOf('\n') > -1) {
13580 if (array) {
13581 str = str.split('\n').map(function(line) {
13582 return ' ' + line;
13583 }).join('\n').substr(2);
13584 } else {
13585 str = '\n' + str.split('\n').map(function(line) {
13586 return ' ' + line;
13587 }).join('\n');
13588 }
13589 }
13590 } else {
13591 str = ctx.stylize('[Circular]', 'special');
13592 }
13593 }
13594 if (isUndefined(name)) {
13595 if (array && key.match(/^\d+$/)) {
13596 return str;
13597 }
13598 name = JSON.stringify('' + key);
13599 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
13600 name = name.substr(1, name.length - 2);
13601 name = ctx.stylize(name, 'name');
13602 } else {
13603 name = name.replace(/'/g, "\\'")
13604 .replace(/\\"/g, '"')
13605 .replace(/(^"|"$)/g, "'");
13606 name = ctx.stylize(name, 'string');
13607 }
13608 }
13609
13610 return name + ': ' + str;
13611 }
13612
13613
13614 function reduceToSingleString(output, base, braces) {
13615 var numLinesEst = 0;
13616 var length = output.reduce(function(prev, cur) {
13617 numLinesEst++;
13618 if (cur.indexOf('\n') >= 0) numLinesEst++;
13619 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
13620 }, 0);
13621
13622 if (length > 60) {
13623 return braces[0] +
13624 (base === '' ? '' : base + '\n ') +
13625 ' ' +
13626 output.join(',\n ') +
13627 ' ' +
13628 braces[1];
13629 }
13630
13631 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
13632 }
13633
13634
13635 // NOTE: These type checking functions intentionally don't use `instanceof`
13636 // because it is fragile and can be easily faked with `Object.create()`.
13637 function isArray(ar) {
13638 return Array.isArray(ar);
13639 }
13640 exports.isArray = isArray;
13641
13642 function isBoolean(arg) {
13643 return typeof arg === 'boolean';
13644 }
13645 exports.isBoolean = isBoolean;
13646
13647 function isNull(arg) {
13648 return arg === null;
13649 }
13650 exports.isNull = isNull;
13651
13652 function isNullOrUndefined(arg) {
13653 return arg == null;
13654 }
13655 exports.isNullOrUndefined = isNullOrUndefined;
13656
13657 function isNumber(arg) {
13658 return typeof arg === 'number';
13659 }
13660 exports.isNumber = isNumber;
13661
13662 function isString(arg) {
13663 return typeof arg === 'string';
13664 }
13665 exports.isString = isString;
13666
13667 function isSymbol(arg) {
13668 return typeof arg === 'symbol';
13669 }
13670 exports.isSymbol = isSymbol;
13671
13672 function isUndefined(arg) {
13673 return arg === void 0;
13674 }
13675 exports.isUndefined = isUndefined;
13676
13677 function isRegExp(re) {
13678 return isObject(re) && objectToString(re) === '[object RegExp]';
13679 }
13680 exports.isRegExp = isRegExp;
13681
13682 function isObject(arg) {
13683 return typeof arg === 'object' && arg !== null;
13684 }
13685 exports.isObject = isObject;
13686
13687 function isDate(d) {
13688 return isObject(d) && objectToString(d) === '[object Date]';
13689 }
13690 exports.isDate = isDate;
13691
13692 function isError(e) {
13693 return isObject(e) &&
13694 (objectToString(e) === '[object Error]' || e instanceof Error);
13695 }
13696 exports.isError = isError;
13697
13698 function isFunction(arg) {
13699 return typeof arg === 'function';
13700 }
13701 exports.isFunction = isFunction;
13702
13703 function isPrimitive(arg) {
13704 return arg === null ||
13705 typeof arg === 'boolean' ||
13706 typeof arg === 'number' ||
13707 typeof arg === 'string' ||
13708 typeof arg === 'symbol' || // ES6 symbol
13709 typeof arg === 'undefined';
13710 }
13711 exports.isPrimitive = isPrimitive;
13712
13713 exports.isBuffer = require('./support/isBuffer');
13714
13715 function objectToString(o) {
13716 return Object.prototype.toString.call(o);
13717 }
13718
13719
13720 function pad(n) {
13721 return n < 10 ? '0' + n.toString(10) : n.toString(10);
13722 }
13723
13724
13725 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
13726 'Oct', 'Nov', 'Dec'];
13727
13728 // 26 Feb 16:19:34
13729 function timestamp() {
13730 var d = new Date();
13731 var time = [pad(d.getHours()),
13732 pad(d.getMinutes()),
13733 pad(d.getSeconds())].join(':');
13734 return [d.getDate(), months[d.getMonth()], time].join(' ');
13735 }
13736
13737
13738 // log is just a thin wrapper to console.log that prepends a timestamp
13739 exports.log = function() {
13740 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
13741 };
13742
13743
13744 /**
13745 * Inherit the prototype methods from one constructor into another.
13746 *
13747 * The Function.prototype.inherits from lang.js rewritten as a standalone
13748 * function (not on Function.prototype). NOTE: If this file is to be loaded
13749 * during bootstrapping this function needs to be rewritten using some native
13750 * functions as prototype setup using normal JavaScript does not work as
13751 * expected during bootstrapping (see mirror.js in r114903).
13752 *
13753 * @param {function} ctor Constructor function which needs to inherit the
13754 * prototype.
13755 * @param {function} superCtor Constructor function to inherit prototype from.
13756 */
13757 exports.inherits = require('inherits');
13758
13759 exports._extend = function(origin, add) {
13760 // Don't do anything if add isn't an object
13761 if (!add || !isObject(add)) return origin;
13762
13763 var keys = Object.keys(add);
13764 var i = keys.length;
13765 while (i--) {
13766 origin[keys[i]] = add[keys[i]];
13767 }
13768 return origin;
13769 };
13770
13771 function hasOwnProperty(obj, prop) {
13772 return Object.prototype.hasOwnProperty.call(obj, prop);
13773 }
13774
13775 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
13776 },{"./support/isBuffer":31,"_process":12,"inherits":30}],33:[function(require,module,exports){
13777 module.exports = {
13778 base58: require('bs58'),
13779 bitcoin: require('bitcoinjs-lib'),
13780 ecurve: require('ecurve'),
13781 BigInteger: require('bigi')
13782 }
13783
13784 },{"bigi":37,"bitcoinjs-lib":50,"bs58":79,"ecurve":89}],34:[function(require,module,exports){
13785 // base-x encoding
13786 // Forked from https://github.com/cryptocoinjs/bs58
13787 // Originally written by Mike Hearn for BitcoinJ
13788 // Copyright (c) 2011 Google Inc
13789 // Ported to JavaScript by Stefan Thomas
13790 // Merged Buffer refactorings from base58-native by Stephen Pair
13791 // Copyright (c) 2013 BitPay Inc
13792
13793 var Buffer = require('safe-buffer').Buffer
13794
13795 module.exports = function base (ALPHABET) {
13796 var ALPHABET_MAP = {}
13797 var BASE = ALPHABET.length
13798 var LEADER = ALPHABET.charAt(0)
13799
13800 // pre-compute lookup table
13801 for (var z = 0; z < ALPHABET.length; z++) {
13802 var x = ALPHABET.charAt(z)
13803
13804 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
13805 ALPHABET_MAP[x] = z
13806 }
13807
13808 function encode (source) {
13809 if (source.length === 0) return ''
13810
13811 var digits = [0]
13812 for (var i = 0; i < source.length; ++i) {
13813 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
13814 carry += digits[j] << 8
13815 digits[j] = carry % BASE
13816 carry = (carry / BASE) | 0
13817 }
13818
13819 while (carry > 0) {
13820 digits.push(carry % BASE)
13821 carry = (carry / BASE) | 0
13822 }
13823 }
13824
13825 var string = ''
13826
13827 // deal with leading zeros
13828 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
13829 // convert digits to a string
13830 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
13831
13832 return string
13833 }
13834
13835 function decodeUnsafe (string) {
13836 if (string.length === 0) return Buffer.allocUnsafe(0)
13837
13838 var bytes = [0]
13839 for (var i = 0; i < string.length; i++) {
13840 var value = ALPHABET_MAP[string[i]]
13841 if (value === undefined) return
13842
13843 for (var j = 0, carry = value; j < bytes.length; ++j) {
13844 carry += bytes[j] * BASE
13845 bytes[j] = carry & 0xff
13846 carry >>= 8
13847 }
13848
13849 while (carry > 0) {
13850 bytes.push(carry & 0xff)
13851 carry >>= 8
13852 }
13853 }
13854
13855 // deal with leading zeros
13856 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
13857 bytes.push(0)
13858 }
13859
13860 return Buffer.from(bytes.reverse())
13861 }
13862
13863 function decode (string) {
13864 var buffer = decodeUnsafe(string)
13865 if (buffer) return buffer
13866
13867 throw new Error('Non-base' + BASE + ' character')
13868 }
13869
13870 return {
13871 encode: encode,
13872 decodeUnsafe: decodeUnsafe,
13873 decode: decode
13874 }
13875 }
13876
13877 },{"safe-buffer":98}],35:[function(require,module,exports){
13878 // (public) Constructor
13879 function BigInteger(a, b, c) {
13880 if (!(this instanceof BigInteger))
13881 return new BigInteger(a, b, c)
13882
13883 if (a != null) {
13884 if ("number" == typeof a) this.fromNumber(a, b, c)
13885 else if (b == null && "string" != typeof a) this.fromString(a, 256)
13886 else this.fromString(a, b)
13887 }
13888 }
13889
13890 var proto = BigInteger.prototype
13891
13892 // duck-typed isBigInteger
13893 proto.__bigi = require('../package.json').version
13894 BigInteger.isBigInteger = function (obj, check_ver) {
13895 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
13896 }
13897
13898 // Bits per digit
13899 var dbits
13900
13901 // am: Compute w_j += (x*this_i), propagate carries,
13902 // c is initial carry, returns final carry.
13903 // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
13904 // We need to select the fastest one that works in this environment.
13905
13906 // am1: use a single mult and divide to get the high bits,
13907 // max digit bits should be 26 because
13908 // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
13909 function am1(i, x, w, j, c, n) {
13910 while (--n >= 0) {
13911 var v = x * this[i++] + w[j] + c
13912 c = Math.floor(v / 0x4000000)
13913 w[j++] = v & 0x3ffffff
13914 }
13915 return c
13916 }
13917 // am2 avoids a big mult-and-extract completely.
13918 // Max digit bits should be <= 30 because we do bitwise ops
13919 // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
13920 function am2(i, x, w, j, c, n) {
13921 var xl = x & 0x7fff,
13922 xh = x >> 15
13923 while (--n >= 0) {
13924 var l = this[i] & 0x7fff
13925 var h = this[i++] >> 15
13926 var m = xh * l + h * xl
13927 l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
13928 c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
13929 w[j++] = l & 0x3fffffff
13930 }
13931 return c
13932 }
13933 // Alternately, set max digit bits to 28 since some
13934 // browsers slow down when dealing with 32-bit numbers.
13935 function am3(i, x, w, j, c, n) {
13936 var xl = x & 0x3fff,
13937 xh = x >> 14
13938 while (--n >= 0) {
13939 var l = this[i] & 0x3fff
13940 var h = this[i++] >> 14
13941 var m = xh * l + h * xl
13942 l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
13943 c = (l >> 28) + (m >> 14) + xh * h
13944 w[j++] = l & 0xfffffff
13945 }
13946 return c
13947 }
13948
13949 // wtf?
13950 BigInteger.prototype.am = am1
13951 dbits = 26
13952
13953 BigInteger.prototype.DB = dbits
13954 BigInteger.prototype.DM = ((1 << dbits) - 1)
13955 var DV = BigInteger.prototype.DV = (1 << dbits)
13956
13957 var BI_FP = 52
13958 BigInteger.prototype.FV = Math.pow(2, BI_FP)
13959 BigInteger.prototype.F1 = BI_FP - dbits
13960 BigInteger.prototype.F2 = 2 * dbits - BI_FP
13961
13962 // Digit conversions
13963 var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
13964 var BI_RC = new Array()
13965 var rr, vv
13966 rr = "0".charCodeAt(0)
13967 for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
13968 rr = "a".charCodeAt(0)
13969 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
13970 rr = "A".charCodeAt(0)
13971 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
13972
13973 function int2char(n) {
13974 return BI_RM.charAt(n)
13975 }
13976
13977 function intAt(s, i) {
13978 var c = BI_RC[s.charCodeAt(i)]
13979 return (c == null) ? -1 : c
13980 }
13981
13982 // (protected) copy this to r
13983 function bnpCopyTo(r) {
13984 for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]
13985 r.t = this.t
13986 r.s = this.s
13987 }
13988
13989 // (protected) set from integer value x, -DV <= x < DV
13990 function bnpFromInt(x) {
13991 this.t = 1
13992 this.s = (x < 0) ? -1 : 0
13993 if (x > 0) this[0] = x
13994 else if (x < -1) this[0] = x + DV
13995 else this.t = 0
13996 }
13997
13998 // return bigint initialized to value
13999 function nbv(i) {
14000 var r = new BigInteger()
14001 r.fromInt(i)
14002 return r
14003 }
14004
14005 // (protected) set from string and radix
14006 function bnpFromString(s, b) {
14007 var self = this
14008
14009 var k
14010 if (b == 16) k = 4
14011 else if (b == 8) k = 3
14012 else if (b == 256) k = 8; // byte array
14013 else if (b == 2) k = 1
14014 else if (b == 32) k = 5
14015 else if (b == 4) k = 2
14016 else {
14017 self.fromRadix(s, b)
14018 return
14019 }
14020 self.t = 0
14021 self.s = 0
14022 var i = s.length,
14023 mi = false,
14024 sh = 0
14025 while (--i >= 0) {
14026 var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
14027 if (x < 0) {
14028 if (s.charAt(i) == "-") mi = true
14029 continue
14030 }
14031 mi = false
14032 if (sh == 0)
14033 self[self.t++] = x
14034 else if (sh + k > self.DB) {
14035 self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh
14036 self[self.t++] = (x >> (self.DB - sh))
14037 } else
14038 self[self.t - 1] |= x << sh
14039 sh += k
14040 if (sh >= self.DB) sh -= self.DB
14041 }
14042 if (k == 8 && (s[0] & 0x80) != 0) {
14043 self.s = -1
14044 if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh
14045 }
14046 self.clamp()
14047 if (mi) BigInteger.ZERO.subTo(self, self)
14048 }
14049
14050 // (protected) clamp off excess high words
14051 function bnpClamp() {
14052 var c = this.s & this.DM
14053 while (this.t > 0 && this[this.t - 1] == c)--this.t
14054 }
14055
14056 // (public) return string representation in given radix
14057 function bnToString(b) {
14058 var self = this
14059 if (self.s < 0) return "-" + self.negate()
14060 .toString(b)
14061 var k
14062 if (b == 16) k = 4
14063 else if (b == 8) k = 3
14064 else if (b == 2) k = 1
14065 else if (b == 32) k = 5
14066 else if (b == 4) k = 2
14067 else return self.toRadix(b)
14068 var km = (1 << k) - 1,
14069 d, m = false,
14070 r = "",
14071 i = self.t
14072 var p = self.DB - (i * self.DB) % k
14073 if (i-- > 0) {
14074 if (p < self.DB && (d = self[i] >> p) > 0) {
14075 m = true
14076 r = int2char(d)
14077 }
14078 while (i >= 0) {
14079 if (p < k) {
14080 d = (self[i] & ((1 << p) - 1)) << (k - p)
14081 d |= self[--i] >> (p += self.DB - k)
14082 } else {
14083 d = (self[i] >> (p -= k)) & km
14084 if (p <= 0) {
14085 p += self.DB
14086 --i
14087 }
14088 }
14089 if (d > 0) m = true
14090 if (m) r += int2char(d)
14091 }
14092 }
14093 return m ? r : "0"
14094 }
14095
14096 // (public) -this
14097 function bnNegate() {
14098 var r = new BigInteger()
14099 BigInteger.ZERO.subTo(this, r)
14100 return r
14101 }
14102
14103 // (public) |this|
14104 function bnAbs() {
14105 return (this.s < 0) ? this.negate() : this
14106 }
14107
14108 // (public) return + if this > a, - if this < a, 0 if equal
14109 function bnCompareTo(a) {
14110 var r = this.s - a.s
14111 if (r != 0) return r
14112 var i = this.t
14113 r = i - a.t
14114 if (r != 0) return (this.s < 0) ? -r : r
14115 while (--i >= 0)
14116 if ((r = this[i] - a[i]) != 0) return r
14117 return 0
14118 }
14119
14120 // returns bit length of the integer x
14121 function nbits(x) {
14122 var r = 1,
14123 t
14124 if ((t = x >>> 16) != 0) {
14125 x = t
14126 r += 16
14127 }
14128 if ((t = x >> 8) != 0) {
14129 x = t
14130 r += 8
14131 }
14132 if ((t = x >> 4) != 0) {
14133 x = t
14134 r += 4
14135 }
14136 if ((t = x >> 2) != 0) {
14137 x = t
14138 r += 2
14139 }
14140 if ((t = x >> 1) != 0) {
14141 x = t
14142 r += 1
14143 }
14144 return r
14145 }
14146
14147 // (public) return the number of bits in "this"
14148 function bnBitLength() {
14149 if (this.t <= 0) return 0
14150 return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
14151 }
14152
14153 // (public) return the number of bytes in "this"
14154 function bnByteLength() {
14155 return this.bitLength() >> 3
14156 }
14157
14158 // (protected) r = this << n*DB
14159 function bnpDLShiftTo(n, r) {
14160 var i
14161 for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]
14162 for (i = n - 1; i >= 0; --i) r[i] = 0
14163 r.t = this.t + n
14164 r.s = this.s
14165 }
14166
14167 // (protected) r = this >> n*DB
14168 function bnpDRShiftTo(n, r) {
14169 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
14170 r.t = Math.max(this.t - n, 0)
14171 r.s = this.s
14172 }
14173
14174 // (protected) r = this << n
14175 function bnpLShiftTo(n, r) {
14176 var self = this
14177 var bs = n % self.DB
14178 var cbs = self.DB - bs
14179 var bm = (1 << cbs) - 1
14180 var ds = Math.floor(n / self.DB),
14181 c = (self.s << bs) & self.DM,
14182 i
14183 for (i = self.t - 1; i >= 0; --i) {
14184 r[i + ds + 1] = (self[i] >> cbs) | c
14185 c = (self[i] & bm) << bs
14186 }
14187 for (i = ds - 1; i >= 0; --i) r[i] = 0
14188 r[ds] = c
14189 r.t = self.t + ds + 1
14190 r.s = self.s
14191 r.clamp()
14192 }
14193
14194 // (protected) r = this >> n
14195 function bnpRShiftTo(n, r) {
14196 var self = this
14197 r.s = self.s
14198 var ds = Math.floor(n / self.DB)
14199 if (ds >= self.t) {
14200 r.t = 0
14201 return
14202 }
14203 var bs = n % self.DB
14204 var cbs = self.DB - bs
14205 var bm = (1 << bs) - 1
14206 r[0] = self[ds] >> bs
14207 for (var i = ds + 1; i < self.t; ++i) {
14208 r[i - ds - 1] |= (self[i] & bm) << cbs
14209 r[i - ds] = self[i] >> bs
14210 }
14211 if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs
14212 r.t = self.t - ds
14213 r.clamp()
14214 }
14215
14216 // (protected) r = this - a
14217 function bnpSubTo(a, r) {
14218 var self = this
14219 var i = 0,
14220 c = 0,
14221 m = Math.min(a.t, self.t)
14222 while (i < m) {
14223 c += self[i] - a[i]
14224 r[i++] = c & self.DM
14225 c >>= self.DB
14226 }
14227 if (a.t < self.t) {
14228 c -= a.s
14229 while (i < self.t) {
14230 c += self[i]
14231 r[i++] = c & self.DM
14232 c >>= self.DB
14233 }
14234 c += self.s
14235 } else {
14236 c += self.s
14237 while (i < a.t) {
14238 c -= a[i]
14239 r[i++] = c & self.DM
14240 c >>= self.DB
14241 }
14242 c -= a.s
14243 }
14244 r.s = (c < 0) ? -1 : 0
14245 if (c < -1) r[i++] = self.DV + c
14246 else if (c > 0) r[i++] = c
14247 r.t = i
14248 r.clamp()
14249 }
14250
14251 // (protected) r = this * a, r != this,a (HAC 14.12)
14252 // "this" should be the larger one if appropriate.
14253 function bnpMultiplyTo(a, r) {
14254 var x = this.abs(),
14255 y = a.abs()
14256 var i = x.t
14257 r.t = i + y.t
14258 while (--i >= 0) r[i] = 0
14259 for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)
14260 r.s = 0
14261 r.clamp()
14262 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
14263 }
14264
14265 // (protected) r = this^2, r != this (HAC 14.16)
14266 function bnpSquareTo(r) {
14267 var x = this.abs()
14268 var i = r.t = 2 * x.t
14269 while (--i >= 0) r[i] = 0
14270 for (i = 0; i < x.t - 1; ++i) {
14271 var c = x.am(i, x[i], r, 2 * i, 0, 1)
14272 if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
14273 r[i + x.t] -= x.DV
14274 r[i + x.t + 1] = 1
14275 }
14276 }
14277 if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)
14278 r.s = 0
14279 r.clamp()
14280 }
14281
14282 // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
14283 // r != q, this != m. q or r may be null.
14284 function bnpDivRemTo(m, q, r) {
14285 var self = this
14286 var pm = m.abs()
14287 if (pm.t <= 0) return
14288 var pt = self.abs()
14289 if (pt.t < pm.t) {
14290 if (q != null) q.fromInt(0)
14291 if (r != null) self.copyTo(r)
14292 return
14293 }
14294 if (r == null) r = new BigInteger()
14295 var y = new BigInteger(),
14296 ts = self.s,
14297 ms = m.s
14298 var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus
14299 if (nsh > 0) {
14300 pm.lShiftTo(nsh, y)
14301 pt.lShiftTo(nsh, r)
14302 } else {
14303 pm.copyTo(y)
14304 pt.copyTo(r)
14305 }
14306 var ys = y.t
14307 var y0 = y[ys - 1]
14308 if (y0 == 0) return
14309 var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)
14310 var d1 = self.FV / yt,
14311 d2 = (1 << self.F1) / yt,
14312 e = 1 << self.F2
14313 var i = r.t,
14314 j = i - ys,
14315 t = (q == null) ? new BigInteger() : q
14316 y.dlShiftTo(j, t)
14317 if (r.compareTo(t) >= 0) {
14318 r[r.t++] = 1
14319 r.subTo(t, r)
14320 }
14321 BigInteger.ONE.dlShiftTo(ys, t)
14322 t.subTo(y, y); // "negative" y so we can replace sub with am later
14323 while (y.t < ys) y[y.t++] = 0
14324 while (--j >= 0) {
14325 // Estimate quotient digit
14326 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)
14327 if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
14328 y.dlShiftTo(j, t)
14329 r.subTo(t, r)
14330 while (r[i] < --qd) r.subTo(t, r)
14331 }
14332 }
14333 if (q != null) {
14334 r.drShiftTo(ys, q)
14335 if (ts != ms) BigInteger.ZERO.subTo(q, q)
14336 }
14337 r.t = ys
14338 r.clamp()
14339 if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
14340 if (ts < 0) BigInteger.ZERO.subTo(r, r)
14341 }
14342
14343 // (public) this mod a
14344 function bnMod(a) {
14345 var r = new BigInteger()
14346 this.abs()
14347 .divRemTo(a, null, r)
14348 if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)
14349 return r
14350 }
14351
14352 // Modular reduction using "classic" algorithm
14353 function Classic(m) {
14354 this.m = m
14355 }
14356
14357 function cConvert(x) {
14358 if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)
14359 else return x
14360 }
14361
14362 function cRevert(x) {
14363 return x
14364 }
14365
14366 function cReduce(x) {
14367 x.divRemTo(this.m, null, x)
14368 }
14369
14370 function cMulTo(x, y, r) {
14371 x.multiplyTo(y, r)
14372 this.reduce(r)
14373 }
14374
14375 function cSqrTo(x, r) {
14376 x.squareTo(r)
14377 this.reduce(r)
14378 }
14379
14380 Classic.prototype.convert = cConvert
14381 Classic.prototype.revert = cRevert
14382 Classic.prototype.reduce = cReduce
14383 Classic.prototype.mulTo = cMulTo
14384 Classic.prototype.sqrTo = cSqrTo
14385
14386 // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
14387 // justification:
14388 // xy == 1 (mod m)
14389 // xy = 1+km
14390 // xy(2-xy) = (1+km)(1-km)
14391 // x[y(2-xy)] = 1-k^2m^2
14392 // x[y(2-xy)] == 1 (mod m^2)
14393 // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
14394 // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
14395 // JS multiply "overflows" differently from C/C++, so care is needed here.
14396 function bnpInvDigit() {
14397 if (this.t < 1) return 0
14398 var x = this[0]
14399 if ((x & 1) == 0) return 0
14400 var y = x & 3; // y == 1/x mod 2^2
14401 y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
14402 y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
14403 y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
14404 // last step - calculate inverse mod DV directly
14405 // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
14406 y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
14407 // we really want the negative inverse, and -DV < y < DV
14408 return (y > 0) ? this.DV - y : -y
14409 }
14410
14411 // Montgomery reduction
14412 function Montgomery(m) {
14413 this.m = m
14414 this.mp = m.invDigit()
14415 this.mpl = this.mp & 0x7fff
14416 this.mph = this.mp >> 15
14417 this.um = (1 << (m.DB - 15)) - 1
14418 this.mt2 = 2 * m.t
14419 }
14420
14421 // xR mod m
14422 function montConvert(x) {
14423 var r = new BigInteger()
14424 x.abs()
14425 .dlShiftTo(this.m.t, r)
14426 r.divRemTo(this.m, null, r)
14427 if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)
14428 return r
14429 }
14430
14431 // x/R mod m
14432 function montRevert(x) {
14433 var r = new BigInteger()
14434 x.copyTo(r)
14435 this.reduce(r)
14436 return r
14437 }
14438
14439 // x = x/R mod m (HAC 14.32)
14440 function montReduce(x) {
14441 while (x.t <= this.mt2) // pad x so am has enough room later
14442 x[x.t++] = 0
14443 for (var i = 0; i < this.m.t; ++i) {
14444 // faster way of calculating u0 = x[i]*mp mod DV
14445 var j = x[i] & 0x7fff
14446 var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM
14447 // use am to combine the multiply-shift-add into one call
14448 j = i + this.m.t
14449 x[j] += this.m.am(0, u0, x, i, 0, this.m.t)
14450 // propagate carry
14451 while (x[j] >= x.DV) {
14452 x[j] -= x.DV
14453 x[++j]++
14454 }
14455 }
14456 x.clamp()
14457 x.drShiftTo(this.m.t, x)
14458 if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)
14459 }
14460
14461 // r = "x^2/R mod m"; x != r
14462 function montSqrTo(x, r) {
14463 x.squareTo(r)
14464 this.reduce(r)
14465 }
14466
14467 // r = "xy/R mod m"; x,y != r
14468 function montMulTo(x, y, r) {
14469 x.multiplyTo(y, r)
14470 this.reduce(r)
14471 }
14472
14473 Montgomery.prototype.convert = montConvert
14474 Montgomery.prototype.revert = montRevert
14475 Montgomery.prototype.reduce = montReduce
14476 Montgomery.prototype.mulTo = montMulTo
14477 Montgomery.prototype.sqrTo = montSqrTo
14478
14479 // (protected) true iff this is even
14480 function bnpIsEven() {
14481 return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
14482 }
14483
14484 // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
14485 function bnpExp(e, z) {
14486 if (e > 0xffffffff || e < 1) return BigInteger.ONE
14487 var r = new BigInteger(),
14488 r2 = new BigInteger(),
14489 g = z.convert(this),
14490 i = nbits(e) - 1
14491 g.copyTo(r)
14492 while (--i >= 0) {
14493 z.sqrTo(r, r2)
14494 if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)
14495 else {
14496 var t = r
14497 r = r2
14498 r2 = t
14499 }
14500 }
14501 return z.revert(r)
14502 }
14503
14504 // (public) this^e % m, 0 <= e < 2^32
14505 function bnModPowInt(e, m) {
14506 var z
14507 if (e < 256 || m.isEven()) z = new Classic(m)
14508 else z = new Montgomery(m)
14509 return this.exp(e, z)
14510 }
14511
14512 // protected
14513 proto.copyTo = bnpCopyTo
14514 proto.fromInt = bnpFromInt
14515 proto.fromString = bnpFromString
14516 proto.clamp = bnpClamp
14517 proto.dlShiftTo = bnpDLShiftTo
14518 proto.drShiftTo = bnpDRShiftTo
14519 proto.lShiftTo = bnpLShiftTo
14520 proto.rShiftTo = bnpRShiftTo
14521 proto.subTo = bnpSubTo
14522 proto.multiplyTo = bnpMultiplyTo
14523 proto.squareTo = bnpSquareTo
14524 proto.divRemTo = bnpDivRemTo
14525 proto.invDigit = bnpInvDigit
14526 proto.isEven = bnpIsEven
14527 proto.exp = bnpExp
14528
14529 // public
14530 proto.toString = bnToString
14531 proto.negate = bnNegate
14532 proto.abs = bnAbs
14533 proto.compareTo = bnCompareTo
14534 proto.bitLength = bnBitLength
14535 proto.byteLength = bnByteLength
14536 proto.mod = bnMod
14537 proto.modPowInt = bnModPowInt
14538
14539 // (public)
14540 function bnClone() {
14541 var r = new BigInteger()
14542 this.copyTo(r)
14543 return r
14544 }
14545
14546 // (public) return value as integer
14547 function bnIntValue() {
14548 if (this.s < 0) {
14549 if (this.t == 1) return this[0] - this.DV
14550 else if (this.t == 0) return -1
14551 } else if (this.t == 1) return this[0]
14552 else if (this.t == 0) return 0
14553 // assumes 16 < DB < 32
14554 return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
14555 }
14556
14557 // (public) return value as byte
14558 function bnByteValue() {
14559 return (this.t == 0) ? this.s : (this[0] << 24) >> 24
14560 }
14561
14562 // (public) return value as short (assumes DB>=16)
14563 function bnShortValue() {
14564 return (this.t == 0) ? this.s : (this[0] << 16) >> 16
14565 }
14566
14567 // (protected) return x s.t. r^x < DV
14568 function bnpChunkSize(r) {
14569 return Math.floor(Math.LN2 * this.DB / Math.log(r))
14570 }
14571
14572 // (public) 0 if this == 0, 1 if this > 0
14573 function bnSigNum() {
14574 if (this.s < 0) return -1
14575 else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0
14576 else return 1
14577 }
14578
14579 // (protected) convert to radix string
14580 function bnpToRadix(b) {
14581 if (b == null) b = 10
14582 if (this.signum() == 0 || b < 2 || b > 36) return "0"
14583 var cs = this.chunkSize(b)
14584 var a = Math.pow(b, cs)
14585 var d = nbv(a),
14586 y = new BigInteger(),
14587 z = new BigInteger(),
14588 r = ""
14589 this.divRemTo(d, y, z)
14590 while (y.signum() > 0) {
14591 r = (a + z.intValue())
14592 .toString(b)
14593 .substr(1) + r
14594 y.divRemTo(d, y, z)
14595 }
14596 return z.intValue()
14597 .toString(b) + r
14598 }
14599
14600 // (protected) convert from radix string
14601 function bnpFromRadix(s, b) {
14602 var self = this
14603 self.fromInt(0)
14604 if (b == null) b = 10
14605 var cs = self.chunkSize(b)
14606 var d = Math.pow(b, cs),
14607 mi = false,
14608 j = 0,
14609 w = 0
14610 for (var i = 0; i < s.length; ++i) {
14611 var x = intAt(s, i)
14612 if (x < 0) {
14613 if (s.charAt(i) == "-" && self.signum() == 0) mi = true
14614 continue
14615 }
14616 w = b * w + x
14617 if (++j >= cs) {
14618 self.dMultiply(d)
14619 self.dAddOffset(w, 0)
14620 j = 0
14621 w = 0
14622 }
14623 }
14624 if (j > 0) {
14625 self.dMultiply(Math.pow(b, j))
14626 self.dAddOffset(w, 0)
14627 }
14628 if (mi) BigInteger.ZERO.subTo(self, self)
14629 }
14630
14631 // (protected) alternate constructor
14632 function bnpFromNumber(a, b, c) {
14633 var self = this
14634 if ("number" == typeof b) {
14635 // new BigInteger(int,int,RNG)
14636 if (a < 2) self.fromInt(1)
14637 else {
14638 self.fromNumber(a, c)
14639 if (!self.testBit(a - 1)) // force MSB set
14640 self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)
14641 if (self.isEven()) self.dAddOffset(1, 0); // force odd
14642 while (!self.isProbablePrime(b)) {
14643 self.dAddOffset(2, 0)
14644 if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)
14645 }
14646 }
14647 } else {
14648 // new BigInteger(int,RNG)
14649 var x = new Array(),
14650 t = a & 7
14651 x.length = (a >> 3) + 1
14652 b.nextBytes(x)
14653 if (t > 0) x[0] &= ((1 << t) - 1)
14654 else x[0] = 0
14655 self.fromString(x, 256)
14656 }
14657 }
14658
14659 // (public) convert to bigendian byte array
14660 function bnToByteArray() {
14661 var self = this
14662 var i = self.t,
14663 r = new Array()
14664 r[0] = self.s
14665 var p = self.DB - (i * self.DB) % 8,
14666 d, k = 0
14667 if (i-- > 0) {
14668 if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)
14669 r[k++] = d | (self.s << (self.DB - p))
14670 while (i >= 0) {
14671 if (p < 8) {
14672 d = (self[i] & ((1 << p) - 1)) << (8 - p)
14673 d |= self[--i] >> (p += self.DB - 8)
14674 } else {
14675 d = (self[i] >> (p -= 8)) & 0xff
14676 if (p <= 0) {
14677 p += self.DB
14678 --i
14679 }
14680 }
14681 if ((d & 0x80) != 0) d |= -256
14682 if (k === 0 && (self.s & 0x80) != (d & 0x80))++k
14683 if (k > 0 || d != self.s) r[k++] = d
14684 }
14685 }
14686 return r
14687 }
14688
14689 function bnEquals(a) {
14690 return (this.compareTo(a) == 0)
14691 }
14692
14693 function bnMin(a) {
14694 return (this.compareTo(a) < 0) ? this : a
14695 }
14696
14697 function bnMax(a) {
14698 return (this.compareTo(a) > 0) ? this : a
14699 }
14700
14701 // (protected) r = this op a (bitwise)
14702 function bnpBitwiseTo(a, op, r) {
14703 var self = this
14704 var i, f, m = Math.min(a.t, self.t)
14705 for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])
14706 if (a.t < self.t) {
14707 f = a.s & self.DM
14708 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
14709 r.t = self.t
14710 } else {
14711 f = self.s & self.DM
14712 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
14713 r.t = a.t
14714 }
14715 r.s = op(self.s, a.s)
14716 r.clamp()
14717 }
14718
14719 // (public) this & a
14720 function op_and(x, y) {
14721 return x & y
14722 }
14723
14724 function bnAnd(a) {
14725 var r = new BigInteger()
14726 this.bitwiseTo(a, op_and, r)
14727 return r
14728 }
14729
14730 // (public) this | a
14731 function op_or(x, y) {
14732 return x | y
14733 }
14734
14735 function bnOr(a) {
14736 var r = new BigInteger()
14737 this.bitwiseTo(a, op_or, r)
14738 return r
14739 }
14740
14741 // (public) this ^ a
14742 function op_xor(x, y) {
14743 return x ^ y
14744 }
14745
14746 function bnXor(a) {
14747 var r = new BigInteger()
14748 this.bitwiseTo(a, op_xor, r)
14749 return r
14750 }
14751
14752 // (public) this & ~a
14753 function op_andnot(x, y) {
14754 return x & ~y
14755 }
14756
14757 function bnAndNot(a) {
14758 var r = new BigInteger()
14759 this.bitwiseTo(a, op_andnot, r)
14760 return r
14761 }
14762
14763 // (public) ~this
14764 function bnNot() {
14765 var r = new BigInteger()
14766 for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]
14767 r.t = this.t
14768 r.s = ~this.s
14769 return r
14770 }
14771
14772 // (public) this << n
14773 function bnShiftLeft(n) {
14774 var r = new BigInteger()
14775 if (n < 0) this.rShiftTo(-n, r)
14776 else this.lShiftTo(n, r)
14777 return r
14778 }
14779
14780 // (public) this >> n
14781 function bnShiftRight(n) {
14782 var r = new BigInteger()
14783 if (n < 0) this.lShiftTo(-n, r)
14784 else this.rShiftTo(n, r)
14785 return r
14786 }
14787
14788 // return index of lowest 1-bit in x, x < 2^31
14789 function lbit(x) {
14790 if (x == 0) return -1
14791 var r = 0
14792 if ((x & 0xffff) == 0) {
14793 x >>= 16
14794 r += 16
14795 }
14796 if ((x & 0xff) == 0) {
14797 x >>= 8
14798 r += 8
14799 }
14800 if ((x & 0xf) == 0) {
14801 x >>= 4
14802 r += 4
14803 }
14804 if ((x & 3) == 0) {
14805 x >>= 2
14806 r += 2
14807 }
14808 if ((x & 1) == 0)++r
14809 return r
14810 }
14811
14812 // (public) returns index of lowest 1-bit (or -1 if none)
14813 function bnGetLowestSetBit() {
14814 for (var i = 0; i < this.t; ++i)
14815 if (this[i] != 0) return i * this.DB + lbit(this[i])
14816 if (this.s < 0) return this.t * this.DB
14817 return -1
14818 }
14819
14820 // return number of 1 bits in x
14821 function cbit(x) {
14822 var r = 0
14823 while (x != 0) {
14824 x &= x - 1
14825 ++r
14826 }
14827 return r
14828 }
14829
14830 // (public) return number of set bits
14831 function bnBitCount() {
14832 var r = 0,
14833 x = this.s & this.DM
14834 for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)
14835 return r
14836 }
14837
14838 // (public) true iff nth bit is set
14839 function bnTestBit(n) {
14840 var j = Math.floor(n / this.DB)
14841 if (j >= this.t) return (this.s != 0)
14842 return ((this[j] & (1 << (n % this.DB))) != 0)
14843 }
14844
14845 // (protected) this op (1<<n)
14846 function bnpChangeBit(n, op) {
14847 var r = BigInteger.ONE.shiftLeft(n)
14848 this.bitwiseTo(r, op, r)
14849 return r
14850 }
14851
14852 // (public) this | (1<<n)
14853 function bnSetBit(n) {
14854 return this.changeBit(n, op_or)
14855 }
14856
14857 // (public) this & ~(1<<n)
14858 function bnClearBit(n) {
14859 return this.changeBit(n, op_andnot)
14860 }
14861
14862 // (public) this ^ (1<<n)
14863 function bnFlipBit(n) {
14864 return this.changeBit(n, op_xor)
14865 }
14866
14867 // (protected) r = this + a
14868 function bnpAddTo(a, r) {
14869 var self = this
14870
14871 var i = 0,
14872 c = 0,
14873 m = Math.min(a.t, self.t)
14874 while (i < m) {
14875 c += self[i] + a[i]
14876 r[i++] = c & self.DM
14877 c >>= self.DB
14878 }
14879 if (a.t < self.t) {
14880 c += a.s
14881 while (i < self.t) {
14882 c += self[i]
14883 r[i++] = c & self.DM
14884 c >>= self.DB
14885 }
14886 c += self.s
14887 } else {
14888 c += self.s
14889 while (i < a.t) {
14890 c += a[i]
14891 r[i++] = c & self.DM
14892 c >>= self.DB
14893 }
14894 c += a.s
14895 }
14896 r.s = (c < 0) ? -1 : 0
14897 if (c > 0) r[i++] = c
14898 else if (c < -1) r[i++] = self.DV + c
14899 r.t = i
14900 r.clamp()
14901 }
14902
14903 // (public) this + a
14904 function bnAdd(a) {
14905 var r = new BigInteger()
14906 this.addTo(a, r)
14907 return r
14908 }
14909
14910 // (public) this - a
14911 function bnSubtract(a) {
14912 var r = new BigInteger()
14913 this.subTo(a, r)
14914 return r
14915 }
14916
14917 // (public) this * a
14918 function bnMultiply(a) {
14919 var r = new BigInteger()
14920 this.multiplyTo(a, r)
14921 return r
14922 }
14923
14924 // (public) this^2
14925 function bnSquare() {
14926 var r = new BigInteger()
14927 this.squareTo(r)
14928 return r
14929 }
14930
14931 // (public) this / a
14932 function bnDivide(a) {
14933 var r = new BigInteger()
14934 this.divRemTo(a, r, null)
14935 return r
14936 }
14937
14938 // (public) this % a
14939 function bnRemainder(a) {
14940 var r = new BigInteger()
14941 this.divRemTo(a, null, r)
14942 return r
14943 }
14944
14945 // (public) [this/a,this%a]
14946 function bnDivideAndRemainder(a) {
14947 var q = new BigInteger(),
14948 r = new BigInteger()
14949 this.divRemTo(a, q, r)
14950 return new Array(q, r)
14951 }
14952
14953 // (protected) this *= n, this >= 0, 1 < n < DV
14954 function bnpDMultiply(n) {
14955 this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)
14956 ++this.t
14957 this.clamp()
14958 }
14959
14960 // (protected) this += n << w words, this >= 0
14961 function bnpDAddOffset(n, w) {
14962 if (n == 0) return
14963 while (this.t <= w) this[this.t++] = 0
14964 this[w] += n
14965 while (this[w] >= this.DV) {
14966 this[w] -= this.DV
14967 if (++w >= this.t) this[this.t++] = 0
14968 ++this[w]
14969 }
14970 }
14971
14972 // A "null" reducer
14973 function NullExp() {}
14974
14975 function nNop(x) {
14976 return x
14977 }
14978
14979 function nMulTo(x, y, r) {
14980 x.multiplyTo(y, r)
14981 }
14982
14983 function nSqrTo(x, r) {
14984 x.squareTo(r)
14985 }
14986
14987 NullExp.prototype.convert = nNop
14988 NullExp.prototype.revert = nNop
14989 NullExp.prototype.mulTo = nMulTo
14990 NullExp.prototype.sqrTo = nSqrTo
14991
14992 // (public) this^e
14993 function bnPow(e) {
14994 return this.exp(e, new NullExp())
14995 }
14996
14997 // (protected) r = lower n words of "this * a", a.t <= n
14998 // "this" should be the larger one if appropriate.
14999 function bnpMultiplyLowerTo(a, n, r) {
15000 var i = Math.min(this.t + a.t, n)
15001 r.s = 0; // assumes a,this >= 0
15002 r.t = i
15003 while (i > 0) r[--i] = 0
15004 var j
15005 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)
15006 for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)
15007 r.clamp()
15008 }
15009
15010 // (protected) r = "this * a" without lower n words, n > 0
15011 // "this" should be the larger one if appropriate.
15012 function bnpMultiplyUpperTo(a, n, r) {
15013 --n
15014 var i = r.t = this.t + a.t - n
15015 r.s = 0; // assumes a,this >= 0
15016 while (--i >= 0) r[i] = 0
15017 for (i = Math.max(n - this.t, 0); i < a.t; ++i)
15018 r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)
15019 r.clamp()
15020 r.drShiftTo(1, r)
15021 }
15022
15023 // Barrett modular reduction
15024 function Barrett(m) {
15025 // setup Barrett
15026 this.r2 = new BigInteger()
15027 this.q3 = new BigInteger()
15028 BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)
15029 this.mu = this.r2.divide(m)
15030 this.m = m
15031 }
15032
15033 function barrettConvert(x) {
15034 if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)
15035 else if (x.compareTo(this.m) < 0) return x
15036 else {
15037 var r = new BigInteger()
15038 x.copyTo(r)
15039 this.reduce(r)
15040 return r
15041 }
15042 }
15043
15044 function barrettRevert(x) {
15045 return x
15046 }
15047
15048 // x = x mod m (HAC 14.42)
15049 function barrettReduce(x) {
15050 var self = this
15051 x.drShiftTo(self.m.t - 1, self.r2)
15052 if (x.t > self.m.t + 1) {
15053 x.t = self.m.t + 1
15054 x.clamp()
15055 }
15056 self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)
15057 self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)
15058 while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)
15059 x.subTo(self.r2, x)
15060 while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)
15061 }
15062
15063 // r = x^2 mod m; x != r
15064 function barrettSqrTo(x, r) {
15065 x.squareTo(r)
15066 this.reduce(r)
15067 }
15068
15069 // r = x*y mod m; x,y != r
15070 function barrettMulTo(x, y, r) {
15071 x.multiplyTo(y, r)
15072 this.reduce(r)
15073 }
15074
15075 Barrett.prototype.convert = barrettConvert
15076 Barrett.prototype.revert = barrettRevert
15077 Barrett.prototype.reduce = barrettReduce
15078 Barrett.prototype.mulTo = barrettMulTo
15079 Barrett.prototype.sqrTo = barrettSqrTo
15080
15081 // (public) this^e % m (HAC 14.85)
15082 function bnModPow(e, m) {
15083 var i = e.bitLength(),
15084 k, r = nbv(1),
15085 z
15086 if (i <= 0) return r
15087 else if (i < 18) k = 1
15088 else if (i < 48) k = 3
15089 else if (i < 144) k = 4
15090 else if (i < 768) k = 5
15091 else k = 6
15092 if (i < 8)
15093 z = new Classic(m)
15094 else if (m.isEven())
15095 z = new Barrett(m)
15096 else
15097 z = new Montgomery(m)
15098
15099 // precomputation
15100 var g = new Array(),
15101 n = 3,
15102 k1 = k - 1,
15103 km = (1 << k) - 1
15104 g[1] = z.convert(this)
15105 if (k > 1) {
15106 var g2 = new BigInteger()
15107 z.sqrTo(g[1], g2)
15108 while (n <= km) {
15109 g[n] = new BigInteger()
15110 z.mulTo(g2, g[n - 2], g[n])
15111 n += 2
15112 }
15113 }
15114
15115 var j = e.t - 1,
15116 w, is1 = true,
15117 r2 = new BigInteger(),
15118 t
15119 i = nbits(e[j]) - 1
15120 while (j >= 0) {
15121 if (i >= k1) w = (e[j] >> (i - k1)) & km
15122 else {
15123 w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
15124 if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)
15125 }
15126
15127 n = k
15128 while ((w & 1) == 0) {
15129 w >>= 1
15130 --n
15131 }
15132 if ((i -= n) < 0) {
15133 i += this.DB
15134 --j
15135 }
15136 if (is1) { // ret == 1, don't bother squaring or multiplying it
15137 g[w].copyTo(r)
15138 is1 = false
15139 } else {
15140 while (n > 1) {
15141 z.sqrTo(r, r2)
15142 z.sqrTo(r2, r)
15143 n -= 2
15144 }
15145 if (n > 0) z.sqrTo(r, r2)
15146 else {
15147 t = r
15148 r = r2
15149 r2 = t
15150 }
15151 z.mulTo(r2, g[w], r)
15152 }
15153
15154 while (j >= 0 && (e[j] & (1 << i)) == 0) {
15155 z.sqrTo(r, r2)
15156 t = r
15157 r = r2
15158 r2 = t
15159 if (--i < 0) {
15160 i = this.DB - 1
15161 --j
15162 }
15163 }
15164 }
15165 return z.revert(r)
15166 }
15167
15168 // (public) gcd(this,a) (HAC 14.54)
15169 function bnGCD(a) {
15170 var x = (this.s < 0) ? this.negate() : this.clone()
15171 var y = (a.s < 0) ? a.negate() : a.clone()
15172 if (x.compareTo(y) < 0) {
15173 var t = x
15174 x = y
15175 y = t
15176 }
15177 var i = x.getLowestSetBit(),
15178 g = y.getLowestSetBit()
15179 if (g < 0) return x
15180 if (i < g) g = i
15181 if (g > 0) {
15182 x.rShiftTo(g, x)
15183 y.rShiftTo(g, y)
15184 }
15185 while (x.signum() > 0) {
15186 if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)
15187 if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)
15188 if (x.compareTo(y) >= 0) {
15189 x.subTo(y, x)
15190 x.rShiftTo(1, x)
15191 } else {
15192 y.subTo(x, y)
15193 y.rShiftTo(1, y)
15194 }
15195 }
15196 if (g > 0) y.lShiftTo(g, y)
15197 return y
15198 }
15199
15200 // (protected) this % n, n < 2^26
15201 function bnpModInt(n) {
15202 if (n <= 0) return 0
15203 var d = this.DV % n,
15204 r = (this.s < 0) ? n - 1 : 0
15205 if (this.t > 0)
15206 if (d == 0) r = this[0] % n
15207 else
15208 for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n
15209 return r
15210 }
15211
15212 // (public) 1/this % m (HAC 14.61)
15213 function bnModInverse(m) {
15214 var ac = m.isEven()
15215 if (this.signum() === 0) throw new Error('division by zero')
15216 if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO
15217 var u = m.clone(),
15218 v = this.clone()
15219 var a = nbv(1),
15220 b = nbv(0),
15221 c = nbv(0),
15222 d = nbv(1)
15223 while (u.signum() != 0) {
15224 while (u.isEven()) {
15225 u.rShiftTo(1, u)
15226 if (ac) {
15227 if (!a.isEven() || !b.isEven()) {
15228 a.addTo(this, a)
15229 b.subTo(m, b)
15230 }
15231 a.rShiftTo(1, a)
15232 } else if (!b.isEven()) b.subTo(m, b)
15233 b.rShiftTo(1, b)
15234 }
15235 while (v.isEven()) {
15236 v.rShiftTo(1, v)
15237 if (ac) {
15238 if (!c.isEven() || !d.isEven()) {
15239 c.addTo(this, c)
15240 d.subTo(m, d)
15241 }
15242 c.rShiftTo(1, c)
15243 } else if (!d.isEven()) d.subTo(m, d)
15244 d.rShiftTo(1, d)
15245 }
15246 if (u.compareTo(v) >= 0) {
15247 u.subTo(v, u)
15248 if (ac) a.subTo(c, a)
15249 b.subTo(d, b)
15250 } else {
15251 v.subTo(u, v)
15252 if (ac) c.subTo(a, c)
15253 d.subTo(b, d)
15254 }
15255 }
15256 if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO
15257 while (d.compareTo(m) >= 0) d.subTo(m, d)
15258 while (d.signum() < 0) d.addTo(m, d)
15259 return d
15260 }
15261
15262 var lowprimes = [
15263 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
15264 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
15265 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
15266 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
15267 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
15268 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
15269 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
15270 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
15271 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
15272 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
15273 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
15274 ]
15275
15276 var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
15277
15278 // (public) test primality with certainty >= 1-.5^t
15279 function bnIsProbablePrime(t) {
15280 var i, x = this.abs()
15281 if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
15282 for (i = 0; i < lowprimes.length; ++i)
15283 if (x[0] == lowprimes[i]) return true
15284 return false
15285 }
15286 if (x.isEven()) return false
15287 i = 1
15288 while (i < lowprimes.length) {
15289 var m = lowprimes[i],
15290 j = i + 1
15291 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
15292 m = x.modInt(m)
15293 while (i < j) if (m % lowprimes[i++] == 0) return false
15294 }
15295 return x.millerRabin(t)
15296 }
15297
15298 // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
15299 function bnpMillerRabin(t) {
15300 var n1 = this.subtract(BigInteger.ONE)
15301 var k = n1.getLowestSetBit()
15302 if (k <= 0) return false
15303 var r = n1.shiftRight(k)
15304 t = (t + 1) >> 1
15305 if (t > lowprimes.length) t = lowprimes.length
15306 var a = new BigInteger(null)
15307 var j, bases = []
15308 for (var i = 0; i < t; ++i) {
15309 for (;;) {
15310 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
15311 if (bases.indexOf(j) == -1) break
15312 }
15313 bases.push(j)
15314 a.fromInt(j)
15315 var y = a.modPow(r, this)
15316 if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
15317 var j = 1
15318 while (j++ < k && y.compareTo(n1) != 0) {
15319 y = y.modPowInt(2, this)
15320 if (y.compareTo(BigInteger.ONE) == 0) return false
15321 }
15322 if (y.compareTo(n1) != 0) return false
15323 }
15324 }
15325 return true
15326 }
15327
15328 // protected
15329 proto.chunkSize = bnpChunkSize
15330 proto.toRadix = bnpToRadix
15331 proto.fromRadix = bnpFromRadix
15332 proto.fromNumber = bnpFromNumber
15333 proto.bitwiseTo = bnpBitwiseTo
15334 proto.changeBit = bnpChangeBit
15335 proto.addTo = bnpAddTo
15336 proto.dMultiply = bnpDMultiply
15337 proto.dAddOffset = bnpDAddOffset
15338 proto.multiplyLowerTo = bnpMultiplyLowerTo
15339 proto.multiplyUpperTo = bnpMultiplyUpperTo
15340 proto.modInt = bnpModInt
15341 proto.millerRabin = bnpMillerRabin
15342
15343 // public
15344 proto.clone = bnClone
15345 proto.intValue = bnIntValue
15346 proto.byteValue = bnByteValue
15347 proto.shortValue = bnShortValue
15348 proto.signum = bnSigNum
15349 proto.toByteArray = bnToByteArray
15350 proto.equals = bnEquals
15351 proto.min = bnMin
15352 proto.max = bnMax
15353 proto.and = bnAnd
15354 proto.or = bnOr
15355 proto.xor = bnXor
15356 proto.andNot = bnAndNot
15357 proto.not = bnNot
15358 proto.shiftLeft = bnShiftLeft
15359 proto.shiftRight = bnShiftRight
15360 proto.getLowestSetBit = bnGetLowestSetBit
15361 proto.bitCount = bnBitCount
15362 proto.testBit = bnTestBit
15363 proto.setBit = bnSetBit
15364 proto.clearBit = bnClearBit
15365 proto.flipBit = bnFlipBit
15366 proto.add = bnAdd
15367 proto.subtract = bnSubtract
15368 proto.multiply = bnMultiply
15369 proto.divide = bnDivide
15370 proto.remainder = bnRemainder
15371 proto.divideAndRemainder = bnDivideAndRemainder
15372 proto.modPow = bnModPow
15373 proto.modInverse = bnModInverse
15374 proto.pow = bnPow
15375 proto.gcd = bnGCD
15376 proto.isProbablePrime = bnIsProbablePrime
15377
15378 // JSBN-specific extension
15379 proto.square = bnSquare
15380
15381 // constants
15382 BigInteger.ZERO = nbv(0)
15383 BigInteger.ONE = nbv(1)
15384 BigInteger.valueOf = nbv
15385
15386 module.exports = BigInteger
15387
15388 },{"../package.json":38}],36:[function(require,module,exports){
15389 (function (Buffer){
15390 // FIXME: Kind of a weird way to throw exceptions, consider removing
15391 var assert = require('assert')
15392 var BigInteger = require('./bigi')
15393
15394 /**
15395 * Turns a byte array into a big integer.
15396 *
15397 * This function will interpret a byte array as a big integer in big
15398 * endian notation.
15399 */
15400 BigInteger.fromByteArrayUnsigned = function(byteArray) {
15401 // BigInteger expects a DER integer conformant byte array
15402 if (byteArray[0] & 0x80) {
15403 return new BigInteger([0].concat(byteArray))
15404 }
15405
15406 return new BigInteger(byteArray)
15407 }
15408
15409 /**
15410 * Returns a byte array representation of the big integer.
15411 *
15412 * This returns the absolute of the contained value in big endian
15413 * form. A value of zero results in an empty array.
15414 */
15415 BigInteger.prototype.toByteArrayUnsigned = function() {
15416 var byteArray = this.toByteArray()
15417 return byteArray[0] === 0 ? byteArray.slice(1) : byteArray
15418 }
15419
15420 BigInteger.fromDERInteger = function(byteArray) {
15421 return new BigInteger(byteArray)
15422 }
15423
15424 /*
15425 * Converts BigInteger to a DER integer representation.
15426 *
15427 * The format for this value uses the most significant bit as a sign
15428 * bit. If the most significant bit is already set and the integer is
15429 * positive, a 0x00 is prepended.
15430 *
15431 * Examples:
15432 *
15433 * 0 => 0x00
15434 * 1 => 0x01
15435 * -1 => 0xff
15436 * 127 => 0x7f
15437 * -127 => 0x81
15438 * 128 => 0x0080
15439 * -128 => 0x80
15440 * 255 => 0x00ff
15441 * -255 => 0xff01
15442 * 16300 => 0x3fac
15443 * -16300 => 0xc054
15444 * 62300 => 0x00f35c
15445 * -62300 => 0xff0ca4
15446 */
15447 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
15448
15449 BigInteger.fromBuffer = function(buffer) {
15450 // BigInteger expects a DER integer conformant byte array
15451 if (buffer[0] & 0x80) {
15452 var byteArray = Array.prototype.slice.call(buffer)
15453
15454 return new BigInteger([0].concat(byteArray))
15455 }
15456
15457 return new BigInteger(buffer)
15458 }
15459
15460 BigInteger.fromHex = function(hex) {
15461 if (hex === '') return BigInteger.ZERO
15462
15463 assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')
15464 assert.equal(hex.length % 2, 0, 'Incomplete hex')
15465 return new BigInteger(hex, 16)
15466 }
15467
15468 BigInteger.prototype.toBuffer = function(size) {
15469 var byteArray = this.toByteArrayUnsigned()
15470 var zeros = []
15471
15472 var padding = size - byteArray.length
15473 while (zeros.length < padding) zeros.push(0)
15474
15475 return new Buffer(zeros.concat(byteArray))
15476 }
15477
15478 BigInteger.prototype.toHex = function(size) {
15479 return this.toBuffer(size).toString('hex')
15480 }
15481
15482 }).call(this,require("buffer").Buffer)
15483 },{"./bigi":35,"assert":1,"buffer":4}],37:[function(require,module,exports){
15484 var BigInteger = require('./bigi')
15485
15486 //addons
15487 require('./convert')
15488
15489 module.exports = BigInteger
15490 },{"./bigi":35,"./convert":36}],38:[function(require,module,exports){
15491 module.exports={
15492 "_args": [
15493 [
15494 "bigi",
15495 "/home/ian/git/bitcoin/bitcoinjs-lib-browser"
15496 ]
15497 ],
15498 "_from": "bigi@latest",
15499 "_id": "bigi@1.4.2",
15500 "_inCache": true,
15501 "_installable": true,
15502 "_location": "/bigi",
15503 "_nodeVersion": "6.1.0",
15504 "_npmOperationalInternal": {
15505 "host": "packages-12-west.internal.npmjs.com",
15506 "tmp": "tmp/bigi-1.4.2.tgz_1469584192413_0.6801238611806184"
15507 },
15508 "_npmUser": {
15509 "email": "jprichardson@gmail.com",
15510 "name": "jprichardson"
15511 },
15512 "_npmVersion": "3.8.6",
15513 "_phantomChildren": {},
15514 "_requested": {
15515 "name": "bigi",
15516 "raw": "bigi",
15517 "rawSpec": "",
15518 "scope": null,
15519 "spec": "latest",
15520 "type": "tag"
15521 },
15522 "_requiredBy": [
15523 "#USER",
15524 "/bitcoinjs-lib",
15525 "/ecurve"
15526 ],
15527 "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz",
15528 "_shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
15529 "_shrinkwrap": null,
15530 "_spec": "bigi",
15531 "_where": "/home/ian/git/bitcoin/bitcoinjs-lib-browser",
15532 "bugs": {
15533 "url": "https://github.com/cryptocoinjs/bigi/issues"
15534 },
15535 "dependencies": {},
15536 "description": "Big integers.",
15537 "devDependencies": {
15538 "coveralls": "^2.11.2",
15539 "istanbul": "^0.3.5",
15540 "jshint": "^2.5.1",
15541 "mocha": "^2.1.0",
15542 "mochify": "^2.1.0"
15543 },
15544 "directories": {},
15545 "dist": {
15546 "shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
15547 "tarball": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz"
15548 },
15549 "gitHead": "c25308081c896ff84702303722bf5ecd8b3f78e3",
15550 "homepage": "https://github.com/cryptocoinjs/bigi#readme",
15551 "keywords": [
15552 "cryptography",
15553 "math",
15554 "bitcoin",
15555 "arbitrary",
15556 "precision",
15557 "arithmetic",
15558 "big",
15559 "integer",
15560 "int",
15561 "number",
15562 "biginteger",
15563 "bigint",
15564 "bignumber",
15565 "decimal",
15566 "float"
15567 ],
15568 "main": "./lib/index.js",
15569 "maintainers": [
15570 {
15571 "email": "boydb@midnightdesign.ws",
15572 "name": "midnightlightning"
15573 },
15574 {
15575 "email": "sidazhang89@gmail.com",
15576 "name": "sidazhang"
15577 },
15578 {
15579 "email": "npm@shesek.info",
15580 "name": "nadav"
15581 },
15582 {
15583 "email": "jprichardson@gmail.com",
15584 "name": "jprichardson"
15585 }
15586 ],
15587 "name": "bigi",
15588 "optionalDependencies": {},
15589 "readme": "ERROR: No README data found!",
15590 "repository": {
15591 "type": "git",
15592 "url": "git+https://github.com/cryptocoinjs/bigi.git"
15593 },
15594 "scripts": {
15595 "browser-test": "mochify --wd -R spec",
15596 "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
15597 "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info",
15598 "jshint": "jshint --config jshint.json lib/*.js ; true",
15599 "test": "_mocha -- test/*.js",
15600 "unit": "mocha"
15601 },
15602 "testling": {
15603 "browsers": [
15604 "ie/9..latest",
15605 "firefox/latest",
15606 "chrome/latest",
15607 "safari/6.0..latest",
15608 "iphone/6.0..latest",
15609 "android-browser/4.2..latest"
15610 ],
15611 "files": "test/*.js",
15612 "harness": "mocha"
15613 },
15614 "version": "1.4.2"
15615 }
15616
15617 },{}],39:[function(require,module,exports){
15618 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
15619 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
15620 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
15621
15622 var Buffer = require('safe-buffer').Buffer
15623
15624 function check (buffer) {
15625 if (buffer.length < 8) return false
15626 if (buffer.length > 72) return false
15627 if (buffer[0] !== 0x30) return false
15628 if (buffer[1] !== buffer.length - 2) return false
15629 if (buffer[2] !== 0x02) return false
15630
15631 var lenR = buffer[3]
15632 if (lenR === 0) return false
15633 if (5 + lenR >= buffer.length) return false
15634 if (buffer[4 + lenR] !== 0x02) return false
15635
15636 var lenS = buffer[5 + lenR]
15637 if (lenS === 0) return false
15638 if ((6 + lenR + lenS) !== buffer.length) return false
15639
15640 if (buffer[4] & 0x80) return false
15641 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
15642
15643 if (buffer[lenR + 6] & 0x80) return false
15644 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
15645 return true
15646 }
15647
15648 function decode (buffer) {
15649 if (buffer.length < 8) throw new Error('DER sequence length is too short')
15650 if (buffer.length > 72) throw new Error('DER sequence length is too long')
15651 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
15652 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
15653 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
15654
15655 var lenR = buffer[3]
15656 if (lenR === 0) throw new Error('R length is zero')
15657 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
15658 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
15659
15660 var lenS = buffer[5 + lenR]
15661 if (lenS === 0) throw new Error('S length is zero')
15662 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
15663
15664 if (buffer[4] & 0x80) throw new Error('R value is negative')
15665 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
15666
15667 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
15668 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
15669
15670 // non-BIP66 - extract R, S values
15671 return {
15672 r: buffer.slice(4, 4 + lenR),
15673 s: buffer.slice(6 + lenR)
15674 }
15675 }
15676
15677 /*
15678 * Expects r and s to be positive DER integers.
15679 *
15680 * The DER format uses the most significant bit as a sign bit (& 0x80).
15681 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
15682 *
15683 * Examples:
15684 *
15685 * 0 => 0x00
15686 * 1 => 0x01
15687 * -1 => 0xff
15688 * 127 => 0x7f
15689 * -127 => 0x81
15690 * 128 => 0x0080
15691 * -128 => 0x80
15692 * 255 => 0x00ff
15693 * -255 => 0xff01
15694 * 16300 => 0x3fac
15695 * -16300 => 0xc054
15696 * 62300 => 0x00f35c
15697 * -62300 => 0xff0ca4
15698 */
15699 function encode (r, s) {
15700 var lenR = r.length
15701 var lenS = s.length
15702 if (lenR === 0) throw new Error('R length is zero')
15703 if (lenS === 0) throw new Error('S length is zero')
15704 if (lenR > 33) throw new Error('R length is too long')
15705 if (lenS > 33) throw new Error('S length is too long')
15706 if (r[0] & 0x80) throw new Error('R value is negative')
15707 if (s[0] & 0x80) throw new Error('S value is negative')
15708 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
15709 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
15710
15711 var signature = Buffer.allocUnsafe(6 + lenR + lenS)
15712
15713 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
15714 signature[0] = 0x30
15715 signature[1] = signature.length - 2
15716 signature[2] = 0x02
15717 signature[3] = r.length
15718 r.copy(signature, 4)
15719 signature[4 + lenR] = 0x02
15720 signature[5 + lenR] = s.length
15721 s.copy(signature, 6 + lenR)
15722
15723 return signature
15724 }
15725
15726 module.exports = {
15727 check: check,
15728 decode: decode,
15729 encode: encode
15730 }
15731
15732 },{"safe-buffer":98}],40:[function(require,module,exports){
15733 module.exports={
15734 "OP_FALSE": 0,
15735 "OP_0": 0,
15736 "OP_PUSHDATA1": 76,
15737 "OP_PUSHDATA2": 77,
15738 "OP_PUSHDATA4": 78,
15739 "OP_1NEGATE": 79,
15740 "OP_RESERVED": 80,
15741 "OP_1": 81,
15742 "OP_TRUE": 81,
15743 "OP_2": 82,
15744 "OP_3": 83,
15745 "OP_4": 84,
15746 "OP_5": 85,
15747 "OP_6": 86,
15748 "OP_7": 87,
15749 "OP_8": 88,
15750 "OP_9": 89,
15751 "OP_10": 90,
15752 "OP_11": 91,
15753 "OP_12": 92,
15754 "OP_13": 93,
15755 "OP_14": 94,
15756 "OP_15": 95,
15757 "OP_16": 96,
15758
15759 "OP_NOP": 97,
15760 "OP_VER": 98,
15761 "OP_IF": 99,
15762 "OP_NOTIF": 100,
15763 "OP_VERIF": 101,
15764 "OP_VERNOTIF": 102,
15765 "OP_ELSE": 103,
15766 "OP_ENDIF": 104,
15767 "OP_VERIFY": 105,
15768 "OP_RETURN": 106,
15769
15770 "OP_TOALTSTACK": 107,
15771 "OP_FROMALTSTACK": 108,
15772 "OP_2DROP": 109,
15773 "OP_2DUP": 110,
15774 "OP_3DUP": 111,
15775 "OP_2OVER": 112,
15776 "OP_2ROT": 113,
15777 "OP_2SWAP": 114,
15778 "OP_IFDUP": 115,
15779 "OP_DEPTH": 116,
15780 "OP_DROP": 117,
15781 "OP_DUP": 118,
15782 "OP_NIP": 119,
15783 "OP_OVER": 120,
15784 "OP_PICK": 121,
15785 "OP_ROLL": 122,
15786 "OP_ROT": 123,
15787 "OP_SWAP": 124,
15788 "OP_TUCK": 125,
15789
15790 "OP_CAT": 126,
15791 "OP_SUBSTR": 127,
15792 "OP_LEFT": 128,
15793 "OP_RIGHT": 129,
15794 "OP_SIZE": 130,
15795
15796 "OP_INVERT": 131,
15797 "OP_AND": 132,
15798 "OP_OR": 133,
15799 "OP_XOR": 134,
15800 "OP_EQUAL": 135,
15801 "OP_EQUALVERIFY": 136,
15802 "OP_RESERVED1": 137,
15803 "OP_RESERVED2": 138,
15804
15805 "OP_1ADD": 139,
15806 "OP_1SUB": 140,
15807 "OP_2MUL": 141,
15808 "OP_2DIV": 142,
15809 "OP_NEGATE": 143,
15810 "OP_ABS": 144,
15811 "OP_NOT": 145,
15812 "OP_0NOTEQUAL": 146,
15813 "OP_ADD": 147,
15814 "OP_SUB": 148,
15815 "OP_MUL": 149,
15816 "OP_DIV": 150,
15817 "OP_MOD": 151,
15818 "OP_LSHIFT": 152,
15819 "OP_RSHIFT": 153,
15820
15821 "OP_BOOLAND": 154,
15822 "OP_BOOLOR": 155,
15823 "OP_NUMEQUAL": 156,
15824 "OP_NUMEQUALVERIFY": 157,
15825 "OP_NUMNOTEQUAL": 158,
15826 "OP_LESSTHAN": 159,
15827 "OP_GREATERTHAN": 160,
15828 "OP_LESSTHANOREQUAL": 161,
15829 "OP_GREATERTHANOREQUAL": 162,
15830 "OP_MIN": 163,
15831 "OP_MAX": 164,
15832
15833 "OP_WITHIN": 165,
15834
15835 "OP_RIPEMD160": 166,
15836 "OP_SHA1": 167,
15837 "OP_SHA256": 168,
15838 "OP_HASH160": 169,
15839 "OP_HASH256": 170,
15840 "OP_CODESEPARATOR": 171,
15841 "OP_CHECKSIG": 172,
15842 "OP_CHECKSIGVERIFY": 173,
15843 "OP_CHECKMULTISIG": 174,
15844 "OP_CHECKMULTISIGVERIFY": 175,
15845
15846 "OP_NOP1": 176,
15847 "OP_NOP2": 177,
15848 "OP_CHECKLOCKTIMEVERIFY": 177,
15849
15850 "OP_NOP3": 178,
15851 "OP_NOP4": 179,
15852 "OP_NOP5": 180,
15853 "OP_NOP6": 181,
15854 "OP_NOP7": 182,
15855 "OP_NOP8": 183,
15856 "OP_NOP9": 184,
15857 "OP_NOP10": 185,
15858
15859 "OP_PUBKEYHASH": 253,
15860 "OP_PUBKEY": 254,
15861 "OP_INVALIDOPCODE": 255
15862 }
15863
15864 },{}],41:[function(require,module,exports){
15865 var OPS = require('./index.json')
15866
15867 var map = {}
15868 for (var op in OPS) {
15869 var code = OPS[op]
15870 map[code] = op
15871 }
15872
15873 module.exports = map
15874
15875 },{"./index.json":40}],42:[function(require,module,exports){
15876 var Buffer = require('safe-buffer').Buffer
15877 var bs58check = require('bs58check')
15878 var bscript = require('./script')
15879 var networks = require('./networks')
15880 var typeforce = require('typeforce')
15881 var types = require('./types')
15882
15883 function fromBase58Check (address) {
15884 var payload = bs58check.decode(address)
15885 if (payload.length < 21) throw new TypeError(address + ' is too short')
15886 if (payload.length > 21) throw new TypeError(address + ' is too long')
15887
15888 var version = payload.readUInt8(0)
15889 var hash = payload.slice(1)
15890
15891 return { hash: hash, version: version }
15892 }
15893
15894 function toBase58Check (hash, version) {
15895 typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments)
15896
15897 var payload = Buffer.allocUnsafe(21)
15898 payload.writeUInt8(version, 0)
15899 hash.copy(payload, 1)
15900
15901 return bs58check.encode(payload)
15902 }
15903
15904 function fromOutputScript (outputScript, network) {
15905 network = network || networks.bitcoin
15906
15907 if (bscript.pubKeyHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(3, 23), network.pubKeyHash)
15908 if (bscript.scriptHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(2, 22), network.scriptHash)
15909
15910 throw new Error(bscript.toASM(outputScript) + ' has no matching Address')
15911 }
15912
15913 function toOutputScript (address, network) {
15914 network = network || networks.bitcoin
15915
15916 var decode = fromBase58Check(address)
15917 if (decode.version === network.pubKeyHash) return bscript.pubKeyHash.output.encode(decode.hash)
15918 if (decode.version === network.scriptHash) return bscript.scriptHash.output.encode(decode.hash)
15919
15920 throw new Error(address + ' has no matching Script')
15921 }
15922
15923 module.exports = {
15924 fromBase58Check: fromBase58Check,
15925 fromOutputScript: fromOutputScript,
15926 toBase58Check: toBase58Check,
15927 toOutputScript: toOutputScript
15928 }
15929
15930 },{"./networks":51,"./script":52,"./types":78,"bs58check":80,"safe-buffer":98,"typeforce":109}],43:[function(require,module,exports){
15931 var Buffer = require('safe-buffer').Buffer
15932 var bcrypto = require('./crypto')
15933 var fastMerkleRoot = require('merkle-lib/fastRoot')
15934 var typeforce = require('typeforce')
15935 var types = require('./types')
15936 var varuint = require('varuint-bitcoin')
15937
15938 var Transaction = require('./transaction')
15939
15940 function Block () {
15941 this.version = 1
15942 this.prevHash = null
15943 this.merkleRoot = null
15944 this.timestamp = 0
15945 this.bits = 0
15946 this.nonce = 0
15947 }
15948
15949 Block.fromBuffer = function (buffer) {
15950 if (buffer.length < 80) throw new Error('Buffer too small (< 80 bytes)')
15951
15952 var offset = 0
15953 function readSlice (n) {
15954 offset += n
15955 return buffer.slice(offset - n, offset)
15956 }
15957
15958 function readUInt32 () {
15959 var i = buffer.readUInt32LE(offset)
15960 offset += 4
15961 return i
15962 }
15963
15964 function readInt32 () {
15965 var i = buffer.readInt32LE(offset)
15966 offset += 4
15967 return i
15968 }
15969
15970 var block = new Block()
15971 block.version = readInt32()
15972 block.prevHash = readSlice(32)
15973 block.merkleRoot = readSlice(32)
15974 block.timestamp = readUInt32()
15975 block.bits = readUInt32()
15976 block.nonce = readUInt32()
15977
15978 if (buffer.length === 80) return block
15979
15980 function readVarInt () {
15981 var vi = varuint.decode(buffer, offset)
15982 offset += varuint.decode.bytes
15983 return vi
15984 }
15985
15986 function readTransaction () {
15987 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
15988 offset += tx.byteLength()
15989 return tx
15990 }
15991
15992 var nTransactions = readVarInt()
15993 block.transactions = []
15994
15995 for (var i = 0; i < nTransactions; ++i) {
15996 var tx = readTransaction()
15997 block.transactions.push(tx)
15998 }
15999
16000 return block
16001 }
16002
16003 Block.prototype.byteLength = function (headersOnly) {
16004 if (headersOnly || !this.transactions) return 80
16005
16006 return 80 + varuint.encodingLength(this.transactions.length) + this.transactions.reduce(function (a, x) {
16007 return a + x.byteLength()
16008 }, 0)
16009 }
16010
16011 Block.fromHex = function (hex) {
16012 return Block.fromBuffer(Buffer.from(hex, 'hex'))
16013 }
16014
16015 Block.prototype.getHash = function () {
16016 return bcrypto.hash256(this.toBuffer(true))
16017 }
16018
16019 Block.prototype.getId = function () {
16020 return this.getHash().reverse().toString('hex')
16021 }
16022
16023 Block.prototype.getUTCDate = function () {
16024 var date = new Date(0) // epoch
16025 date.setUTCSeconds(this.timestamp)
16026
16027 return date
16028 }
16029
16030 // TODO: buffer, offset compatibility
16031 Block.prototype.toBuffer = function (headersOnly) {
16032 var buffer = Buffer.allocUnsafe(this.byteLength(headersOnly))
16033
16034 var offset = 0
16035 function writeSlice (slice) {
16036 slice.copy(buffer, offset)
16037 offset += slice.length
16038 }
16039
16040 function writeInt32 (i) {
16041 buffer.writeInt32LE(i, offset)
16042 offset += 4
16043 }
16044 function writeUInt32 (i) {
16045 buffer.writeUInt32LE(i, offset)
16046 offset += 4
16047 }
16048
16049 writeInt32(this.version)
16050 writeSlice(this.prevHash)
16051 writeSlice(this.merkleRoot)
16052 writeUInt32(this.timestamp)
16053 writeUInt32(this.bits)
16054 writeUInt32(this.nonce)
16055
16056 if (headersOnly || !this.transactions) return buffer
16057
16058 varuint.encode(this.transactions.length, buffer, offset)
16059 offset += varuint.encode.bytes
16060
16061 this.transactions.forEach(function (tx) {
16062 var txSize = tx.byteLength() // TODO: extract from toBuffer?
16063 tx.toBuffer(buffer, offset)
16064 offset += txSize
16065 })
16066
16067 return buffer
16068 }
16069
16070 Block.prototype.toHex = function (headersOnly) {
16071 return this.toBuffer(headersOnly).toString('hex')
16072 }
16073
16074 Block.calculateTarget = function (bits) {
16075 var exponent = ((bits & 0xff000000) >> 24) - 3
16076 var mantissa = bits & 0x007fffff
16077 var target = Buffer.alloc(32, 0)
16078 target.writeUInt32BE(mantissa, 28 - exponent)
16079 return target
16080 }
16081
16082 Block.calculateMerkleRoot = function (transactions) {
16083 typeforce([{ getHash: types.Function }], transactions)
16084 if (transactions.length === 0) throw TypeError('Cannot compute merkle root for zero transactions')
16085
16086 var hashes = transactions.map(function (transaction) {
16087 return transaction.getHash()
16088 })
16089
16090 return fastMerkleRoot(hashes, bcrypto.hash256)
16091 }
16092
16093 Block.prototype.checkMerkleRoot = function () {
16094 if (!this.transactions) return false
16095
16096 var actualMerkleRoot = Block.calculateMerkleRoot(this.transactions)
16097 return this.merkleRoot.compare(actualMerkleRoot) === 0
16098 }
16099
16100 Block.prototype.checkProofOfWork = function () {
16101 var hash = this.getHash().reverse()
16102 var target = Block.calculateTarget(this.bits)
16103
16104 return hash.compare(target) <= 0
16105 }
16106
16107 module.exports = Block
16108
16109 },{"./crypto":45,"./transaction":76,"./types":78,"merkle-lib/fastRoot":94,"safe-buffer":98,"typeforce":109,"varuint-bitcoin":111}],44:[function(require,module,exports){
16110 var pushdata = require('pushdata-bitcoin')
16111 var varuint = require('varuint-bitcoin')
16112
16113 // https://github.com/feross/buffer/blob/master/index.js#L1127
16114 function verifuint (value, max) {
16115 if (typeof value !== 'number') throw new Error('cannot write a non-number as a number')
16116 if (value < 0) throw new Error('specified a negative value for writing an unsigned value')
16117 if (value > max) throw new Error('RangeError: value out of range')
16118 if (Math.floor(value) !== value) throw new Error('value has a fractional component')
16119 }
16120
16121 function readUInt64LE (buffer, offset) {
16122 var a = buffer.readUInt32LE(offset)
16123 var b = buffer.readUInt32LE(offset + 4)
16124 b *= 0x100000000
16125
16126 verifuint(b + a, 0x001fffffffffffff)
16127
16128 return b + a
16129 }
16130
16131 function writeUInt64LE (buffer, value, offset) {
16132 verifuint(value, 0x001fffffffffffff)
16133
16134 buffer.writeInt32LE(value & -1, offset)
16135 buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4)
16136 return offset + 8
16137 }
16138
16139 // TODO: remove in 4.0.0?
16140 function readVarInt (buffer, offset) {
16141 var result = varuint.decode(buffer, offset)
16142
16143 return {
16144 number: result,
16145 size: varuint.decode.bytes
16146 }
16147 }
16148
16149 // TODO: remove in 4.0.0?
16150 function writeVarInt (buffer, number, offset) {
16151 varuint.encode(number, buffer, offset)
16152 return varuint.encode.bytes
16153 }
16154
16155 module.exports = {
16156 pushDataSize: pushdata.encodingLength,
16157 readPushDataInt: pushdata.decode,
16158 readUInt64LE: readUInt64LE,
16159 readVarInt: readVarInt,
16160 varIntBuffer: varuint.encode,
16161 varIntSize: varuint.encodingLength,
16162 writePushDataInt: pushdata.encode,
16163 writeUInt64LE: writeUInt64LE,
16164 writeVarInt: writeVarInt
16165 }
16166
16167 },{"pushdata-bitcoin":95,"varuint-bitcoin":111}],45:[function(require,module,exports){
16168 var createHash = require('create-hash')
16169
16170 function ripemd160 (buffer) {
16171 return createHash('rmd160').update(buffer).digest()
16172 }
16173
16174 function sha1 (buffer) {
16175 return createHash('sha1').update(buffer).digest()
16176 }
16177
16178 function sha256 (buffer) {
16179 return createHash('sha256').update(buffer).digest()
16180 }
16181
16182 function hash160 (buffer) {
16183 return ripemd160(sha256(buffer))
16184 }
16185
16186 function hash256 (buffer) {
16187 return sha256(sha256(buffer))
16188 }
16189
16190 module.exports = {
16191 hash160: hash160,
16192 hash256: hash256,
16193 ripemd160: ripemd160,
16194 sha1: sha1,
16195 sha256: sha256
16196 }
16197
16198 },{"create-hash":82}],46:[function(require,module,exports){
16199 var Buffer = require('safe-buffer').Buffer
16200 var createHmac = require('create-hmac')
16201 var typeforce = require('typeforce')
16202 var types = require('./types')
16203
16204 var BigInteger = require('bigi')
16205 var ECSignature = require('./ecsignature')
16206
16207 var ZERO = Buffer.alloc(1, 0)
16208 var ONE = Buffer.alloc(1, 1)
16209
16210 var ecurve = require('ecurve')
16211 var secp256k1 = ecurve.getCurveByName('secp256k1')
16212
16213 // https://tools.ietf.org/html/rfc6979#section-3.2
16214 function deterministicGenerateK (hash, x, checkSig) {
16215 typeforce(types.tuple(
16216 types.Hash256bit,
16217 types.Buffer256bit,
16218 types.Function
16219 ), arguments)
16220
16221 // Step A, ignored as hash already provided
16222 // Step B
16223 // Step C
16224 var k = Buffer.alloc(32, 0)
16225 var v = Buffer.alloc(32, 1)
16226
16227 // Step D
16228 k = createHmac('sha256', k)
16229 .update(v)
16230 .update(ZERO)
16231 .update(x)
16232 .update(hash)
16233 .digest()
16234
16235 // Step E
16236 v = createHmac('sha256', k).update(v).digest()
16237
16238 // Step F
16239 k = createHmac('sha256', k)
16240 .update(v)
16241 .update(ONE)
16242 .update(x)
16243 .update(hash)
16244 .digest()
16245
16246 // Step G
16247 v = createHmac('sha256', k).update(v).digest()
16248
16249 // Step H1/H2a, ignored as tlen === qlen (256 bit)
16250 // Step H2b
16251 v = createHmac('sha256', k).update(v).digest()
16252
16253 var T = BigInteger.fromBuffer(v)
16254
16255 // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA
16256 while (T.signum() <= 0 || T.compareTo(secp256k1.n) >= 0 || !checkSig(T)) {
16257 k = createHmac('sha256', k)
16258 .update(v)
16259 .update(ZERO)
16260 .digest()
16261
16262 v = createHmac('sha256', k).update(v).digest()
16263
16264 // Step H1/H2a, again, ignored as tlen === qlen (256 bit)
16265 // Step H2b again
16266 v = createHmac('sha256', k).update(v).digest()
16267 T = BigInteger.fromBuffer(v)
16268 }
16269
16270 return T
16271 }
16272
16273 var N_OVER_TWO = secp256k1.n.shiftRight(1)
16274
16275 function sign (hash, d) {
16276 typeforce(types.tuple(types.Hash256bit, types.BigInt), arguments)
16277
16278 var x = d.toBuffer(32)
16279 var e = BigInteger.fromBuffer(hash)
16280 var n = secp256k1.n
16281 var G = secp256k1.G
16282
16283 var r, s
16284 deterministicGenerateK(hash, x, function (k) {
16285 var Q = G.multiply(k)
16286
16287 if (secp256k1.isInfinity(Q)) return false
16288
16289 r = Q.affineX.mod(n)
16290 if (r.signum() === 0) return false
16291
16292 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
16293 if (s.signum() === 0) return false
16294
16295 return true
16296 })
16297
16298 // enforce low S values, see bip62: 'low s values in signatures'
16299 if (s.compareTo(N_OVER_TWO) > 0) {
16300 s = n.subtract(s)
16301 }
16302
16303 return new ECSignature(r, s)
16304 }
16305
16306 function verify (hash, signature, Q) {
16307 typeforce(types.tuple(
16308 types.Hash256bit,
16309 types.ECSignature,
16310 types.ECPoint
16311 ), arguments)
16312
16313 var n = secp256k1.n
16314 var G = secp256k1.G
16315
16316 var r = signature.r
16317 var s = signature.s
16318
16319 // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]
16320 if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
16321 if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
16322
16323 // 1.4.2 H = Hash(M), already done by the user
16324 // 1.4.3 e = H
16325 var e = BigInteger.fromBuffer(hash)
16326
16327 // Compute s^-1
16328 var sInv = s.modInverse(n)
16329
16330 // 1.4.4 Compute u1 = es^−1 mod n
16331 // u2 = rs^−1 mod n
16332 var u1 = e.multiply(sInv).mod(n)
16333 var u2 = r.multiply(sInv).mod(n)
16334
16335 // 1.4.5 Compute R = (xR, yR)
16336 // R = u1G + u2Q
16337 var R = G.multiplyTwo(u1, Q, u2)
16338
16339 // 1.4.5 (cont.) Enforce R is not at infinity
16340 if (secp256k1.isInfinity(R)) return false
16341
16342 // 1.4.6 Convert the field element R.x to an integer
16343 var xR = R.affineX
16344
16345 // 1.4.7 Set v = xR mod n
16346 var v = xR.mod(n)
16347
16348 // 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
16349 return v.equals(r)
16350 }
16351
16352 module.exports = {
16353 deterministicGenerateK: deterministicGenerateK,
16354 sign: sign,
16355 verify: verify,
16356
16357 // TODO: remove
16358 __curve: secp256k1
16359 }
16360
16361 },{"./ecsignature":48,"./types":78,"bigi":37,"create-hmac":85,"ecurve":89,"safe-buffer":98,"typeforce":109}],47:[function(require,module,exports){
16362 var baddress = require('./address')
16363 var bcrypto = require('./crypto')
16364 var ecdsa = require('./ecdsa')
16365 var randomBytes = require('randombytes')
16366 var typeforce = require('typeforce')
16367 var types = require('./types')
16368 var wif = require('wif')
16369
16370 var NETWORKS = require('./networks')
16371 var BigInteger = require('bigi')
16372
16373 var ecurve = require('ecurve')
16374 var secp256k1 = ecdsa.__curve
16375
16376 function ECPair (d, Q, options) {
16377 if (options) {
16378 typeforce({
16379 compressed: types.maybe(types.Boolean),
16380 network: types.maybe(types.Network)
16381 }, options)
16382 }
16383
16384 options = options || {}
16385
16386 if (d) {
16387 if (d.signum() <= 0) throw new Error('Private key must be greater than 0')
16388 if (d.compareTo(secp256k1.n) >= 0) throw new Error('Private key must be less than the curve order')
16389 if (Q) throw new TypeError('Unexpected publicKey parameter')
16390
16391 this.d = d
16392 } else {
16393 typeforce(types.ECPoint, Q)
16394
16395 this.__Q = Q
16396 }
16397
16398 this.compressed = options.compressed === undefined ? true : options.compressed
16399 this.network = options.network || NETWORKS.bitcoin
16400 }
16401
16402 Object.defineProperty(ECPair.prototype, 'Q', {
16403 get: function () {
16404 if (!this.__Q && this.d) {
16405 this.__Q = secp256k1.G.multiply(this.d)
16406 }
16407
16408 return this.__Q
16409 }
16410 })
16411
16412 ECPair.fromPublicKeyBuffer = function (buffer, network) {
16413 var Q = ecurve.Point.decodeFrom(secp256k1, buffer)
16414
16415 return new ECPair(null, Q, {
16416 compressed: Q.compressed,
16417 network: network
16418 })
16419 }
16420
16421 ECPair.fromWIF = function (string, network) {
16422 var decoded = wif.decode(string)
16423 var version = decoded.version
16424
16425 // list of networks?
16426 if (types.Array(network)) {
16427 network = network.filter(function (x) {
16428 return version === x.wif
16429 }).pop()
16430
16431 if (!network) throw new Error('Unknown network version')
16432
16433 // otherwise, assume a network object (or default to bitcoin)
16434 } else {
16435 network = network || NETWORKS.bitcoin
16436
16437 if (version !== network.wif) throw new Error('Invalid network version')
16438 }
16439
16440 var d = BigInteger.fromBuffer(decoded.privateKey)
16441
16442 return new ECPair(d, null, {
16443 compressed: decoded.compressed,
16444 network: network
16445 })
16446 }
16447
16448 ECPair.makeRandom = function (options) {
16449 options = options || {}
16450
16451 var rng = options.rng || randomBytes
16452
16453 var d
16454 do {
16455 var buffer = rng(32)
16456 typeforce(types.Buffer256bit, buffer)
16457
16458 d = BigInteger.fromBuffer(buffer)
16459 } while (d.signum() <= 0 || d.compareTo(secp256k1.n) >= 0)
16460
16461 return new ECPair(d, null, options)
16462 }
16463
16464 ECPair.prototype.getAddress = function () {
16465 return baddress.toBase58Check(bcrypto.hash160(this.getPublicKeyBuffer()), this.getNetwork().pubKeyHash)
16466 }
16467
16468 ECPair.prototype.getNetwork = function () {
16469 return this.network
16470 }
16471
16472 ECPair.prototype.getPublicKeyBuffer = function () {
16473 return this.Q.getEncoded(this.compressed)
16474 }
16475
16476 ECPair.prototype.sign = function (hash) {
16477 if (!this.d) throw new Error('Missing private key')
16478
16479 return ecdsa.sign(hash, this.d)
16480 }
16481
16482 ECPair.prototype.toWIF = function () {
16483 if (!this.d) throw new Error('Missing private key')
16484
16485 return wif.encode(this.network.wif, this.d.toBuffer(32), this.compressed)
16486 }
16487
16488 ECPair.prototype.verify = function (hash, signature) {
16489 return ecdsa.verify(hash, signature, this.Q)
16490 }
16491
16492 module.exports = ECPair
16493
16494 },{"./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){
16495 (function (Buffer){
16496 var bip66 = require('bip66')
16497 var typeforce = require('typeforce')
16498 var types = require('./types')
16499
16500 var BigInteger = require('bigi')
16501
16502 function ECSignature (r, s) {
16503 typeforce(types.tuple(types.BigInt, types.BigInt), arguments)
16504
16505 this.r = r
16506 this.s = s
16507 }
16508
16509 ECSignature.parseCompact = function (buffer) {
16510 if (buffer.length !== 65) throw new Error('Invalid signature length')
16511
16512 var flagByte = buffer.readUInt8(0) - 27
16513 if (flagByte !== (flagByte & 7)) throw new Error('Invalid signature parameter')
16514
16515 var compressed = !!(flagByte & 4)
16516 var recoveryParam = flagByte & 3
16517
16518 var r = BigInteger.fromBuffer(buffer.slice(1, 33))
16519 var s = BigInteger.fromBuffer(buffer.slice(33))
16520
16521 return {
16522 compressed: compressed,
16523 i: recoveryParam,
16524 signature: new ECSignature(r, s)
16525 }
16526 }
16527
16528 ECSignature.fromDER = function (buffer) {
16529 var decode = bip66.decode(buffer)
16530 var r = BigInteger.fromDERInteger(decode.r)
16531 var s = BigInteger.fromDERInteger(decode.s)
16532
16533 return new ECSignature(r, s)
16534 }
16535
16536 // BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
16537 ECSignature.parseScriptSignature = function (buffer) {
16538 var hashType = buffer.readUInt8(buffer.length - 1)
16539 var hashTypeMod = hashType & ~0x80
16540
16541 if (hashTypeMod <= 0x00 || hashTypeMod >= 0x04) throw new Error('Invalid hashType ' + hashType)
16542
16543 return {
16544 signature: ECSignature.fromDER(buffer.slice(0, -1)),
16545 hashType: hashType
16546 }
16547 }
16548
16549 ECSignature.prototype.toCompact = function (i, compressed) {
16550 if (compressed) {
16551 i += 4
16552 }
16553
16554 i += 27
16555
16556 var buffer = Buffer.alloc(65)
16557 buffer.writeUInt8(i, 0)
16558 this.r.toBuffer(32).copy(buffer, 1)
16559 this.s.toBuffer(32).copy(buffer, 33)
16560
16561 return buffer
16562 }
16563
16564 ECSignature.prototype.toDER = function () {
16565 var r = Buffer.from(this.r.toDERInteger())
16566 var s = Buffer.from(this.s.toDERInteger())
16567
16568 return bip66.encode(r, s)
16569 }
16570
16571 ECSignature.prototype.toScriptSignature = function (hashType) {
16572 var hashTypeMod = hashType & ~0x80
16573 if (hashTypeMod <= 0 || hashTypeMod >= 4) throw new Error('Invalid hashType ' + hashType)
16574
16575 var hashTypeBuffer = Buffer.alloc(1)
16576 hashTypeBuffer.writeUInt8(hashType, 0)
16577
16578 return Buffer.concat([this.toDER(), hashTypeBuffer])
16579 }
16580
16581 module.exports = ECSignature
16582
16583 }).call(this,require("buffer").Buffer)
16584 },{"./types":78,"bigi":37,"bip66":39,"buffer":4,"typeforce":109}],49:[function(require,module,exports){
16585 var Buffer = require('safe-buffer').Buffer
16586 var base58check = require('bs58check')
16587 var bcrypto = require('./crypto')
16588 var createHmac = require('create-hmac')
16589 var typeforce = require('typeforce')
16590 var types = require('./types')
16591 var NETWORKS = require('./networks')
16592
16593 var BigInteger = require('bigi')
16594 var ECPair = require('./ecpair')
16595
16596 var ecurve = require('ecurve')
16597 var curve = ecurve.getCurveByName('secp256k1')
16598
16599 function HDNode (keyPair, chainCode) {
16600 typeforce(types.tuple('ECPair', types.Buffer256bit), arguments)
16601
16602 if (!keyPair.compressed) throw new TypeError('BIP32 only allows compressed keyPairs')
16603
16604 this.keyPair = keyPair
16605 this.chainCode = chainCode
16606 this.depth = 0
16607 this.index = 0
16608 this.parentFingerprint = 0x00000000
16609 }
16610
16611 HDNode.HIGHEST_BIT = 0x80000000
16612 HDNode.LENGTH = 78
16613 HDNode.MASTER_SECRET = Buffer.from('Bitcoin seed', 'utf8')
16614
16615 HDNode.fromSeedBuffer = function (seed, network) {
16616 typeforce(types.tuple(types.Buffer, types.maybe(types.Network)), arguments)
16617
16618 if (seed.length < 16) throw new TypeError('Seed should be at least 128 bits')
16619 if (seed.length > 64) throw new TypeError('Seed should be at most 512 bits')
16620
16621 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
16622 var IL = I.slice(0, 32)
16623 var IR = I.slice(32)
16624
16625 // In case IL is 0 or >= n, the master key is invalid
16626 // This is handled by the ECPair constructor
16627 var pIL = BigInteger.fromBuffer(IL)
16628 var keyPair = new ECPair(pIL, null, {
16629 network: network
16630 })
16631
16632 return new HDNode(keyPair, IR)
16633 }
16634
16635 HDNode.fromSeedHex = function (hex, network) {
16636 return HDNode.fromSeedBuffer(Buffer.from(hex, 'hex'), network)
16637 }
16638
16639 HDNode.fromBase58 = function (string, networks) {
16640 var buffer = base58check.decode(string)
16641 if (buffer.length !== 78) throw new Error('Invalid buffer length')
16642
16643 // 4 bytes: version bytes
16644 var version = buffer.readUInt32BE(0)
16645 var network
16646
16647 // list of networks?
16648 if (Array.isArray(networks)) {
16649 network = networks.filter(function (x) {
16650 return version === x.bip32.private ||
16651 version === x.bip32.public
16652 }).pop()
16653
16654 if (!network) throw new Error('Unknown network version')
16655
16656 // otherwise, assume a network object (or default to bitcoin)
16657 } else {
16658 network = networks || NETWORKS.bitcoin
16659 }
16660
16661 if (version !== network.bip32.private &&
16662 version !== network.bip32.public) throw new Error('Invalid network version')
16663
16664 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
16665 var depth = buffer[4]
16666
16667 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
16668 var parentFingerprint = buffer.readUInt32BE(5)
16669 if (depth === 0) {
16670 if (parentFingerprint !== 0x00000000) throw new Error('Invalid parent fingerprint')
16671 }
16672
16673 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16674 // This is encoded in MSB order. (0x00000000 if master key)
16675 var index = buffer.readUInt32BE(9)
16676 if (depth === 0 && index !== 0) throw new Error('Invalid index')
16677
16678 // 32 bytes: the chain code
16679 var chainCode = buffer.slice(13, 45)
16680 var keyPair
16681
16682 // 33 bytes: private key data (0x00 + k)
16683 if (version === network.bip32.private) {
16684 if (buffer.readUInt8(45) !== 0x00) throw new Error('Invalid private key')
16685
16686 var d = BigInteger.fromBuffer(buffer.slice(46, 78))
16687 keyPair = new ECPair(d, null, { network: network })
16688
16689 // 33 bytes: public key data (0x02 + X or 0x03 + X)
16690 } else {
16691 var Q = ecurve.Point.decodeFrom(curve, buffer.slice(45, 78))
16692 // Q.compressed is assumed, if somehow this assumption is broken, `new HDNode` will throw
16693
16694 // Verify that the X coordinate in the public point corresponds to a point on the curve.
16695 // If not, the extended public key is invalid.
16696 curve.validate(Q)
16697
16698 keyPair = new ECPair(null, Q, { network: network })
16699 }
16700
16701 var hd = new HDNode(keyPair, chainCode)
16702 hd.depth = depth
16703 hd.index = index
16704 hd.parentFingerprint = parentFingerprint
16705
16706 return hd
16707 }
16708
16709 HDNode.prototype.getAddress = function () {
16710 return this.keyPair.getAddress()
16711 }
16712
16713 HDNode.prototype.getIdentifier = function () {
16714 return bcrypto.hash160(this.keyPair.getPublicKeyBuffer())
16715 }
16716
16717 HDNode.prototype.getFingerprint = function () {
16718 return this.getIdentifier().slice(0, 4)
16719 }
16720
16721 HDNode.prototype.getNetwork = function () {
16722 return this.keyPair.getNetwork()
16723 }
16724
16725 HDNode.prototype.getPublicKeyBuffer = function () {
16726 return this.keyPair.getPublicKeyBuffer()
16727 }
16728
16729 HDNode.prototype.neutered = function () {
16730 var neuteredKeyPair = new ECPair(null, this.keyPair.Q, {
16731 network: this.keyPair.network
16732 })
16733
16734 var neutered = new HDNode(neuteredKeyPair, this.chainCode)
16735 neutered.depth = this.depth
16736 neutered.index = this.index
16737 neutered.parentFingerprint = this.parentFingerprint
16738
16739 return neutered
16740 }
16741
16742 HDNode.prototype.sign = function (hash) {
16743 return this.keyPair.sign(hash)
16744 }
16745
16746 HDNode.prototype.verify = function (hash, signature) {
16747 return this.keyPair.verify(hash, signature)
16748 }
16749
16750 HDNode.prototype.toBase58 = function (__isPrivate) {
16751 if (__isPrivate !== undefined) throw new TypeError('Unsupported argument in 2.0.0')
16752
16753 // Version
16754 var network = this.keyPair.network
16755 var version = (!this.isNeutered()) ? network.bip32.private : network.bip32.public
16756 var buffer = Buffer.allocUnsafe(78)
16757
16758 // 4 bytes: version bytes
16759 buffer.writeUInt32BE(version, 0)
16760
16761 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
16762 buffer.writeUInt8(this.depth, 4)
16763
16764 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
16765 buffer.writeUInt32BE(this.parentFingerprint, 5)
16766
16767 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16768 // This is encoded in big endian. (0x00000000 if master key)
16769 buffer.writeUInt32BE(this.index, 9)
16770
16771 // 32 bytes: the chain code
16772 this.chainCode.copy(buffer, 13)
16773
16774 // 33 bytes: the public key or private key data
16775 if (!this.isNeutered()) {
16776 // 0x00 + k for private keys
16777 buffer.writeUInt8(0, 45)
16778 this.keyPair.d.toBuffer(32).copy(buffer, 46)
16779
16780 // 33 bytes: the public key
16781 } else {
16782 // X9.62 encoding for public keys
16783 this.keyPair.getPublicKeyBuffer().copy(buffer, 45)
16784 }
16785
16786 return base58check.encode(buffer)
16787 }
16788
16789 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions
16790 HDNode.prototype.derive = function (index) {
16791 typeforce(types.UInt32, index)
16792
16793 var isHardened = index >= HDNode.HIGHEST_BIT
16794 var data = Buffer.allocUnsafe(37)
16795
16796 // Hardened child
16797 if (isHardened) {
16798 if (this.isNeutered()) throw new TypeError('Could not derive hardened child key')
16799
16800 // data = 0x00 || ser256(kpar) || ser32(index)
16801 data[0] = 0x00
16802 this.keyPair.d.toBuffer(32).copy(data, 1)
16803 data.writeUInt32BE(index, 33)
16804
16805 // Normal child
16806 } else {
16807 // data = serP(point(kpar)) || ser32(index)
16808 // = serP(Kpar) || ser32(index)
16809 this.keyPair.getPublicKeyBuffer().copy(data, 0)
16810 data.writeUInt32BE(index, 33)
16811 }
16812
16813 var I = createHmac('sha512', this.chainCode).update(data).digest()
16814 var IL = I.slice(0, 32)
16815 var IR = I.slice(32)
16816
16817 var pIL = BigInteger.fromBuffer(IL)
16818
16819 // In case parse256(IL) >= n, proceed with the next value for i
16820 if (pIL.compareTo(curve.n) >= 0) {
16821 return this.derive(index + 1)
16822 }
16823
16824 // Private parent key -> private child key
16825 var derivedKeyPair
16826 if (!this.isNeutered()) {
16827 // ki = parse256(IL) + kpar (mod n)
16828 var ki = pIL.add(this.keyPair.d).mod(curve.n)
16829
16830 // In case ki == 0, proceed with the next value for i
16831 if (ki.signum() === 0) {
16832 return this.derive(index + 1)
16833 }
16834
16835 derivedKeyPair = new ECPair(ki, null, {
16836 network: this.keyPair.network
16837 })
16838
16839 // Public parent key -> public child key
16840 } else {
16841 // Ki = point(parse256(IL)) + Kpar
16842 // = G*IL + Kpar
16843 var Ki = curve.G.multiply(pIL).add(this.keyPair.Q)
16844
16845 // In case Ki is the point at infinity, proceed with the next value for i
16846 if (curve.isInfinity(Ki)) {
16847 return this.derive(index + 1)
16848 }
16849
16850 derivedKeyPair = new ECPair(null, Ki, {
16851 network: this.keyPair.network
16852 })
16853 }
16854
16855 var hd = new HDNode(derivedKeyPair, IR)
16856 hd.depth = this.depth + 1
16857 hd.index = index
16858 hd.parentFingerprint = this.getFingerprint().readUInt32BE(0)
16859
16860 return hd
16861 }
16862
16863 HDNode.prototype.deriveHardened = function (index) {
16864 typeforce(types.UInt31, index)
16865
16866 // Only derives hardened private keys by default
16867 return this.derive(index + HDNode.HIGHEST_BIT)
16868 }
16869
16870 // Private === not neutered
16871 // Public === neutered
16872 HDNode.prototype.isNeutered = function () {
16873 return !(this.keyPair.d)
16874 }
16875
16876 HDNode.prototype.derivePath = function (path) {
16877 typeforce(types.BIP32Path, path)
16878
16879 var splitPath = path.split('/')
16880 if (splitPath[0] === 'm') {
16881 if (this.parentFingerprint) {
16882 throw new Error('Not a master node')
16883 }
16884
16885 splitPath = splitPath.slice(1)
16886 }
16887
16888 return splitPath.reduce(function (prevHd, indexStr) {
16889 var index
16890 if (indexStr.slice(-1) === "'") {
16891 index = parseInt(indexStr.slice(0, -1), 10)
16892 return prevHd.deriveHardened(index)
16893 } else {
16894 index = parseInt(indexStr, 10)
16895 return prevHd.derive(index)
16896 }
16897 }, this)
16898 }
16899
16900 module.exports = HDNode
16901
16902 },{"./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){
16903 module.exports = {
16904 Block: require('./block'),
16905 ECPair: require('./ecpair'),
16906 ECSignature: require('./ecsignature'),
16907 HDNode: require('./hdnode'),
16908 Transaction: require('./transaction'),
16909 TransactionBuilder: require('./transaction_builder'),
16910
16911 address: require('./address'),
16912 bufferutils: require('./bufferutils'), // TODO: remove in 4.0.0
16913 crypto: require('./crypto'),
16914 networks: require('./networks'),
16915 opcodes: require('bitcoin-ops'),
16916 script: require('./script')
16917 }
16918
16919 },{"./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){
16920 // https://en.bitcoin.it/wiki/List_of_address_prefixes
16921 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
16922
16923 module.exports = {
16924 bitcoin: {
16925 messagePrefix: '\x18Bitcoin Signed Message:\n',
16926 bip32: {
16927 public: 0x0488b21e,
16928 private: 0x0488ade4
16929 },
16930 pubKeyHash: 0x00,
16931 scriptHash: 0x05,
16932 wif: 0x80
16933 },
16934 testnet: {
16935 messagePrefix: '\x18Bitcoin Signed Message:\n',
16936 bip32: {
16937 public: 0x043587cf,
16938 private: 0x04358394
16939 },
16940 pubKeyHash: 0x6f,
16941 scriptHash: 0xc4,
16942 wif: 0xef
16943 },
16944 litecoin: {
16945 messagePrefix: '\x19Litecoin Signed Message:\n',
16946 bip32: {
16947 public: 0x0488b21e,
16948 private: 0x0488ade4,
16949 },
16950 pubKeyHash: 0x30,
16951 scriptHash: 0x32,
16952 wif: 0xb0
16953 },
16954 litecoinLtub: {
16955 messagePrefix: '\x19Litecoin Signed Message:\n',
16956 bip32: {
16957 public: 0x019da462,
16958 private: 0x019d9cfe
16959 },
16960 pubKeyHash: 0x30,
16961 scriptHash: 0x32,
16962 wif: 0xb0
16963 }
16964 }
16965
16966 },{}],52:[function(require,module,exports){
16967 var Buffer = require('safe-buffer').Buffer
16968 var bip66 = require('bip66')
16969 var pushdata = require('pushdata-bitcoin')
16970 var typeforce = require('typeforce')
16971 var types = require('./types')
16972 var scriptNumber = require('./script_number')
16973
16974 var OPS = require('bitcoin-ops')
16975 var REVERSE_OPS = require('bitcoin-ops/map')
16976 var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
16977
16978 function isOPInt (value) {
16979 return types.Number(value) &&
16980 ((value === OPS.OP_0) ||
16981 (value >= OPS.OP_1 && value <= OPS.OP_16) ||
16982 (value === OPS.OP_1NEGATE))
16983 }
16984
16985 function isPushOnlyChunk (value) {
16986 return types.Buffer(value) || isOPInt(value)
16987 }
16988
16989 function isPushOnly (value) {
16990 return types.Array(value) && value.every(isPushOnlyChunk)
16991 }
16992
16993 function compile (chunks) {
16994 // TODO: remove me
16995 if (Buffer.isBuffer(chunks)) return chunks
16996
16997 typeforce(types.Array, chunks)
16998
16999 var bufferSize = chunks.reduce(function (accum, chunk) {
17000 // data chunk
17001 if (Buffer.isBuffer(chunk)) {
17002 // adhere to BIP62.3, minimal push policy
17003 if (chunk.length === 1 && (chunk[0] === 0x81 || (chunk[0] >= 1 && chunk[0] <= 16))) {
17004 return accum + 1
17005 }
17006
17007 return accum + pushdata.encodingLength(chunk.length) + chunk.length
17008 }
17009
17010 // opcode
17011 return accum + 1
17012 }, 0.0)
17013
17014 var buffer = Buffer.allocUnsafe(bufferSize)
17015 var offset = 0
17016
17017 chunks.forEach(function (chunk) {
17018 // data chunk
17019 if (Buffer.isBuffer(chunk)) {
17020 // adhere to BIP62.3, minimal push policy
17021 if (chunk.length === 1 && chunk[0] >= 1 && chunk[0] <= 16) {
17022 var opcode = OP_INT_BASE + chunk[0]
17023 buffer.writeUInt8(opcode, offset)
17024 offset += 1
17025 return
17026 }
17027
17028 if (chunk.length === 1 && chunk[0] === 0x81) {
17029 buffer.writeUInt8(OPS.OP_1NEGATE, offset)
17030 offset += 1
17031 return
17032 }
17033
17034 offset += pushdata.encode(buffer, chunk.length, offset)
17035
17036 chunk.copy(buffer, offset)
17037 offset += chunk.length
17038
17039 // opcode
17040 } else {
17041 buffer.writeUInt8(chunk, offset)
17042 offset += 1
17043 }
17044 })
17045
17046 if (offset !== buffer.length) throw new Error('Could not decode chunks')
17047 return buffer
17048 }
17049
17050 function decompile (buffer) {
17051 // TODO: remove me
17052 if (types.Array(buffer)) return buffer
17053
17054 typeforce(types.Buffer, buffer)
17055
17056 var chunks = []
17057 var i = 0
17058
17059 while (i < buffer.length) {
17060 var opcode = buffer[i]
17061
17062 // data chunk
17063 if ((opcode > OPS.OP_0) && (opcode <= OPS.OP_PUSHDATA4)) {
17064 var d = pushdata.decode(buffer, i)
17065
17066 // did reading a pushDataInt fail? empty script
17067 if (d === null) return []
17068 i += d.size
17069
17070 // attempt to read too much data? empty script
17071 if (i + d.number > buffer.length) return []
17072
17073 var data = buffer.slice(i, i + d.number)
17074 i += d.number
17075
17076 chunks.push(data)
17077
17078 // opcode
17079 } else {
17080 chunks.push(opcode)
17081
17082 i += 1
17083 }
17084 }
17085
17086 return chunks
17087 }
17088
17089 function toASM (chunks) {
17090 if (Buffer.isBuffer(chunks)) {
17091 chunks = decompile(chunks)
17092 }
17093
17094 return chunks.map(function (chunk) {
17095 // data?
17096 if (Buffer.isBuffer(chunk)) return chunk.toString('hex')
17097
17098 // opcode!
17099 return REVERSE_OPS[chunk]
17100 }).join(' ')
17101 }
17102
17103 function fromASM (asm) {
17104 typeforce(types.String, asm)
17105
17106 return compile(asm.split(' ').map(function (chunkStr) {
17107 // opcode?
17108 if (OPS[chunkStr] !== undefined) return OPS[chunkStr]
17109 typeforce(types.Hex, chunkStr)
17110
17111 // data!
17112 return Buffer.from(chunkStr, 'hex')
17113 }))
17114 }
17115
17116 function toStack (chunks) {
17117 chunks = decompile(chunks)
17118 typeforce(isPushOnly, chunks)
17119
17120 return chunks.map(function (op) {
17121 if (Buffer.isBuffer(op)) return op
17122 if (op === OPS.OP_0) return Buffer.allocUnsafe(0)
17123
17124 return scriptNumber.encode(op - OP_INT_BASE)
17125 })
17126 }
17127
17128 function isCanonicalPubKey (buffer) {
17129 if (!Buffer.isBuffer(buffer)) return false
17130 if (buffer.length < 33) return false
17131
17132 switch (buffer[0]) {
17133 case 0x02:
17134 case 0x03:
17135 return buffer.length === 33
17136 case 0x04:
17137 return buffer.length === 65
17138 }
17139
17140 return false
17141 }
17142
17143 function isDefinedHashType (hashType) {
17144 var hashTypeMod = hashType & ~0x80
17145
17146 // return hashTypeMod > SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE
17147 return hashTypeMod > 0x00 && hashTypeMod < 0x04
17148 }
17149
17150 function isCanonicalSignature (buffer) {
17151 if (!Buffer.isBuffer(buffer)) return false
17152 if (!isDefinedHashType(buffer[buffer.length - 1])) return false
17153
17154 return bip66.check(buffer.slice(0, -1))
17155 }
17156
17157 module.exports = {
17158 compile: compile,
17159 decompile: decompile,
17160 fromASM: fromASM,
17161 toASM: toASM,
17162 toStack: toStack,
17163
17164 number: require('./script_number'),
17165
17166 isCanonicalPubKey: isCanonicalPubKey,
17167 isCanonicalSignature: isCanonicalSignature,
17168 isPushOnly: isPushOnly,
17169 isDefinedHashType: isDefinedHashType
17170 }
17171
17172 var templates = require('./templates')
17173 for (var key in templates) {
17174 module.exports[key] = templates[key]
17175 }
17176
17177 },{"./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){
17178 var Buffer = require('safe-buffer').Buffer
17179
17180 function decode (buffer, maxLength, minimal) {
17181 maxLength = maxLength || 4
17182 minimal = minimal === undefined ? true : minimal
17183
17184 var length = buffer.length
17185 if (length === 0) return 0
17186 if (length > maxLength) throw new TypeError('Script number overflow')
17187 if (minimal) {
17188 if ((buffer[length - 1] & 0x7f) === 0) {
17189 if (length <= 1 || (buffer[length - 2] & 0x80) === 0) throw new Error('Non-minimally encoded script number')
17190 }
17191 }
17192
17193 // 40-bit
17194 if (length === 5) {
17195 var a = buffer.readUInt32LE(0)
17196 var b = buffer.readUInt8(4)
17197
17198 if (b & 0x80) return -(((b & ~0x80) * 0x100000000) + a)
17199 return (b * 0x100000000) + a
17200 }
17201
17202 var result = 0
17203
17204 // 32-bit / 24-bit / 16-bit / 8-bit
17205 for (var i = 0; i < length; ++i) {
17206 result |= buffer[i] << (8 * i)
17207 }
17208
17209 if (buffer[length - 1] & 0x80) return -(result & ~(0x80 << (8 * (length - 1))))
17210 return result
17211 }
17212
17213 function scriptNumSize (i) {
17214 return i > 0x7fffffff ? 5
17215 : i > 0x7fffff ? 4
17216 : i > 0x7fff ? 3
17217 : i > 0x7f ? 2
17218 : i > 0x00 ? 1
17219 : 0
17220 }
17221
17222 function encode (number) {
17223 var value = Math.abs(number)
17224 var size = scriptNumSize(value)
17225 var buffer = Buffer.allocUnsafe(size)
17226 var negative = number < 0
17227
17228 for (var i = 0; i < size; ++i) {
17229 buffer.writeUInt8(value & 0xff, i)
17230 value >>= 8
17231 }
17232
17233 if (buffer[size - 1] & 0x80) {
17234 buffer.writeUInt8(negative ? 0x80 : 0x00, size - 1)
17235 } else if (negative) {
17236 buffer[size - 1] |= 0x80
17237 }
17238
17239 return buffer
17240 }
17241
17242 module.exports = {
17243 decode: decode,
17244 encode: encode
17245 }
17246
17247 },{"safe-buffer":98}],54:[function(require,module,exports){
17248 var decompile = require('../script').decompile
17249 var multisig = require('./multisig')
17250 var nullData = require('./nulldata')
17251 var pubKey = require('./pubkey')
17252 var pubKeyHash = require('./pubkeyhash')
17253 var scriptHash = require('./scripthash')
17254 var witnessPubKeyHash = require('./witnesspubkeyhash')
17255 var witnessScriptHash = require('./witnessscripthash')
17256 var witnessCommitment = require('./witnesscommitment')
17257
17258 var types = {
17259 MULTISIG: 'multisig',
17260 NONSTANDARD: 'nonstandard',
17261 NULLDATA: 'nulldata',
17262 P2PK: 'pubkey',
17263 P2PKH: 'pubkeyhash',
17264 P2SH: 'scripthash',
17265 P2WPKH: 'witnesspubkeyhash',
17266 P2WSH: 'witnessscripthash',
17267 WITNESS_COMMITMENT: 'witnesscommitment'
17268 }
17269
17270 function classifyOutput (script) {
17271 if (witnessPubKeyHash.output.check(script)) return types.P2WPKH
17272 if (witnessScriptHash.output.check(script)) return types.P2WSH
17273 if (pubKeyHash.output.check(script)) return types.P2PKH
17274 if (scriptHash.output.check(script)) return types.P2SH
17275
17276 // XXX: optimization, below functions .decompile before use
17277 var chunks = decompile(script)
17278 if (multisig.output.check(chunks)) return types.MULTISIG
17279 if (pubKey.output.check(chunks)) return types.P2PK
17280 if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT
17281 if (nullData.output.check(chunks)) return types.NULLDATA
17282
17283 return types.NONSTANDARD
17284 }
17285
17286 function classifyInput (script, allowIncomplete) {
17287 // XXX: optimization, below functions .decompile before use
17288 var chunks = decompile(script)
17289
17290 if (pubKeyHash.input.check(chunks)) return types.P2PKH
17291 if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH
17292 if (multisig.input.check(chunks, allowIncomplete)) return types.MULTISIG
17293 if (pubKey.input.check(chunks)) return types.P2PK
17294
17295 return types.NONSTANDARD
17296 }
17297
17298 function classifyWitness (script, allowIncomplete) {
17299 // XXX: optimization, below functions .decompile before use
17300 var chunks = decompile(script)
17301
17302 if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH
17303 if (witnessScriptHash.input.check(chunks, allowIncomplete)) return types.P2WSH
17304
17305 return types.NONSTANDARD
17306 }
17307
17308 module.exports = {
17309 classifyInput: classifyInput,
17310 classifyOutput: classifyOutput,
17311 classifyWitness: classifyWitness,
17312 multisig: multisig,
17313 nullData: nullData,
17314 pubKey: pubKey,
17315 pubKeyHash: pubKeyHash,
17316 scriptHash: scriptHash,
17317 witnessPubKeyHash: witnessPubKeyHash,
17318 witnessScriptHash: witnessScriptHash,
17319 witnessCommitment: witnessCommitment,
17320 types: types
17321 }
17322
17323 },{"../script":52,"./multisig":55,"./nulldata":58,"./pubkey":59,"./pubkeyhash":62,"./scripthash":65,"./witnesscommitment":68,"./witnesspubkeyhash":70,"./witnessscripthash":73}],55:[function(require,module,exports){
17324 module.exports = {
17325 input: require('./input'),
17326 output: require('./output')
17327 }
17328
17329 },{"./input":56,"./output":57}],56:[function(require,module,exports){
17330 // OP_0 [signatures ...]
17331
17332 var Buffer = require('safe-buffer').Buffer
17333 var bscript = require('../../script')
17334 var typeforce = require('typeforce')
17335 var OPS = require('bitcoin-ops')
17336
17337 function partialSignature (value) {
17338 return value === OPS.OP_0 || bscript.isCanonicalSignature(value)
17339 }
17340
17341 function check (script, allowIncomplete) {
17342 var chunks = bscript.decompile(script)
17343 if (chunks.length < 2) return false
17344 if (chunks[0] !== OPS.OP_0) return false
17345
17346 if (allowIncomplete) {
17347 return chunks.slice(1).every(partialSignature)
17348 }
17349
17350 return chunks.slice(1).every(bscript.isCanonicalSignature)
17351 }
17352 check.toJSON = function () { return 'multisig input' }
17353
17354 var EMPTY_BUFFER = Buffer.allocUnsafe(0)
17355
17356 function encodeStack (signatures, scriptPubKey) {
17357 typeforce([partialSignature], signatures)
17358
17359 if (scriptPubKey) {
17360 var scriptData = bscript.multisig.output.decode(scriptPubKey)
17361
17362 if (signatures.length < scriptData.m) {
17363 throw new TypeError('Not enough signatures provided')
17364 }
17365
17366 if (signatures.length > scriptData.pubKeys.length) {
17367 throw new TypeError('Too many signatures provided')
17368 }
17369 }
17370
17371 return [].concat(EMPTY_BUFFER, signatures)
17372 }
17373
17374 function encode (signatures, scriptPubKey) {
17375 return bscript.compile(encodeStack(signatures, scriptPubKey))
17376 }
17377
17378 function decodeStack (stack, allowIncomplete) {
17379 typeforce(check, stack, allowIncomplete)
17380 return stack.slice(1)
17381 }
17382
17383 function decode (buffer, allowIncomplete) {
17384 var stack = bscript.decompile(buffer)
17385 return decodeStack(stack, allowIncomplete)
17386 }
17387
17388 module.exports = {
17389 check: check,
17390 decode: decode,
17391 decodeStack: decodeStack,
17392 encode: encode,
17393 encodeStack: encodeStack
17394 }
17395
17396 },{"../../script":52,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],57:[function(require,module,exports){
17397 // m [pubKeys ...] n OP_CHECKMULTISIG
17398
17399 var bscript = require('../../script')
17400 var types = require('../../types')
17401 var typeforce = require('typeforce')
17402 var OPS = require('bitcoin-ops')
17403 var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
17404
17405 function check (script, allowIncomplete) {
17406 var chunks = bscript.decompile(script)
17407
17408 if (chunks.length < 4) return false
17409 if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG) return false
17410 if (!types.Number(chunks[0])) return false
17411 if (!types.Number(chunks[chunks.length - 2])) return false
17412 var m = chunks[0] - OP_INT_BASE
17413 var n = chunks[chunks.length - 2] - OP_INT_BASE
17414
17415 if (m <= 0) return false
17416 if (n > 16) return false
17417 if (m > n) return false
17418 if (n !== chunks.length - 3) return false
17419 if (allowIncomplete) return true
17420
17421 var keys = chunks.slice(1, -2)
17422 return keys.every(bscript.isCanonicalPubKey)
17423 }
17424 check.toJSON = function () { return 'multi-sig output' }
17425
17426 function encode (m, pubKeys) {
17427 typeforce({
17428 m: types.Number,
17429 pubKeys: [bscript.isCanonicalPubKey]
17430 }, {
17431 m: m,
17432 pubKeys: pubKeys
17433 })
17434
17435 var n = pubKeys.length
17436 if (n < m) throw new TypeError('Not enough pubKeys provided')
17437
17438 return bscript.compile([].concat(
17439 OP_INT_BASE + m,
17440 pubKeys,
17441 OP_INT_BASE + n,
17442 OPS.OP_CHECKMULTISIG
17443 ))
17444 }
17445
17446 function decode (buffer, allowIncomplete) {
17447 var chunks = bscript.decompile(buffer)
17448 typeforce(check, chunks, allowIncomplete)
17449
17450 return {
17451 m: chunks[0] - OP_INT_BASE,
17452 pubKeys: chunks.slice(1, -2)
17453 }
17454 }
17455
17456 module.exports = {
17457 check: check,
17458 decode: decode,
17459 encode: encode
17460 }
17461
17462 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],58:[function(require,module,exports){
17463 // OP_RETURN {data}
17464
17465 var bscript = require('../script')
17466 var types = require('../types')
17467 var typeforce = require('typeforce')
17468 var OPS = require('bitcoin-ops')
17469
17470 function check (script) {
17471 var buffer = bscript.compile(script)
17472
17473 return buffer.length > 1 &&
17474 buffer[0] === OPS.OP_RETURN
17475 }
17476 check.toJSON = function () { return 'null data output' }
17477
17478 function encode (data) {
17479 typeforce(types.Buffer, data)
17480
17481 return bscript.compile([OPS.OP_RETURN, data])
17482 }
17483
17484 function decode (buffer) {
17485 typeforce(check, buffer)
17486
17487 return buffer.slice(2)
17488 }
17489
17490 module.exports = {
17491 output: {
17492 check: check,
17493 decode: decode,
17494 encode: encode
17495 }
17496 }
17497
17498 },{"../script":52,"../types":78,"bitcoin-ops":40,"typeforce":109}],59:[function(require,module,exports){
17499 arguments[4][55][0].apply(exports,arguments)
17500 },{"./input":60,"./output":61,"dup":55}],60:[function(require,module,exports){
17501 // {signature}
17502
17503 var bscript = require('../../script')
17504 var types = require('../../types')
17505 var typeforce = require('typeforce')
17506
17507 function check (script) {
17508 var chunks = bscript.decompile(script)
17509
17510 return chunks.length === 1 &&
17511 bscript.isCanonicalSignature(chunks[0])
17512 }
17513 check.toJSON = function () { return 'pubKey input' }
17514
17515 function encodeStack (signature) {
17516 typeforce(types.Buffer, signature)
17517 return [signature]
17518 }
17519
17520 function encode (signature) {
17521 return bscript.compile(encodeStack(signature))
17522 }
17523
17524 function decodeStack (stack) {
17525 typeforce(check, stack)
17526 return stack[0]
17527 }
17528
17529 function decode (buffer) {
17530 var stack = bscript.decompile(buffer)
17531 return decodeStack(stack)
17532 }
17533
17534 module.exports = {
17535 check: check,
17536 decode: decode,
17537 decodeStack: decodeStack,
17538 encode: encode,
17539 encodeStack: encodeStack
17540 }
17541
17542 },{"../../script":52,"../../types":78,"typeforce":109}],61:[function(require,module,exports){
17543 // {pubKey} OP_CHECKSIG
17544
17545 var bscript = require('../../script')
17546 var typeforce = require('typeforce')
17547 var OPS = require('bitcoin-ops')
17548
17549 function check (script) {
17550 var chunks = bscript.decompile(script)
17551
17552 return chunks.length === 2 &&
17553 bscript.isCanonicalPubKey(chunks[0]) &&
17554 chunks[1] === OPS.OP_CHECKSIG
17555 }
17556 check.toJSON = function () { return 'pubKey output' }
17557
17558 function encode (pubKey) {
17559 typeforce(bscript.isCanonicalPubKey, pubKey)
17560
17561 return bscript.compile([pubKey, OPS.OP_CHECKSIG])
17562 }
17563
17564 function decode (buffer) {
17565 var chunks = bscript.decompile(buffer)
17566 typeforce(check, chunks)
17567
17568 return chunks[0]
17569 }
17570
17571 module.exports = {
17572 check: check,
17573 decode: decode,
17574 encode: encode
17575 }
17576
17577 },{"../../script":52,"bitcoin-ops":40,"typeforce":109}],62:[function(require,module,exports){
17578 arguments[4][55][0].apply(exports,arguments)
17579 },{"./input":63,"./output":64,"dup":55}],63:[function(require,module,exports){
17580 // {signature} {pubKey}
17581
17582 var bscript = require('../../script')
17583 var types = require('../../types')
17584 var typeforce = require('typeforce')
17585
17586 function check (script) {
17587 var chunks = bscript.decompile(script)
17588
17589 return chunks.length === 2 &&
17590 bscript.isCanonicalSignature(chunks[0]) &&
17591 bscript.isCanonicalPubKey(chunks[1])
17592 }
17593 check.toJSON = function () { return 'pubKeyHash input' }
17594
17595 function encodeStack (signature, pubKey) {
17596 typeforce({
17597 signature: types.Buffer, pubKey: types.Buffer
17598 }, {
17599 signature: signature, pubKey: pubKey
17600 })
17601
17602 return [signature, pubKey]
17603 }
17604
17605 function encode (signature, pubKey) {
17606 return bscript.compile(encodeStack(signature, pubKey))
17607 }
17608
17609 function decodeStack (stack) {
17610 typeforce(check, stack)
17611
17612 return {
17613 signature: stack[0],
17614 pubKey: stack[1]
17615 }
17616 }
17617
17618 function decode (buffer) {
17619 var stack = bscript.decompile(buffer)
17620 return decodeStack(stack)
17621 }
17622
17623 module.exports = {
17624 check: check,
17625 decode: decode,
17626 decodeStack: decodeStack,
17627 encode: encode,
17628 encodeStack: encodeStack
17629 }
17630
17631 },{"../../script":52,"../../types":78,"typeforce":109}],64:[function(require,module,exports){
17632 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
17633
17634 var bscript = require('../../script')
17635 var types = require('../../types')
17636 var typeforce = require('typeforce')
17637 var OPS = require('bitcoin-ops')
17638
17639 function check (script) {
17640 var buffer = bscript.compile(script)
17641
17642 return buffer.length === 25 &&
17643 buffer[0] === OPS.OP_DUP &&
17644 buffer[1] === OPS.OP_HASH160 &&
17645 buffer[2] === 0x14 &&
17646 buffer[23] === OPS.OP_EQUALVERIFY &&
17647 buffer[24] === OPS.OP_CHECKSIG
17648 }
17649 check.toJSON = function () { return 'pubKeyHash output' }
17650
17651 function encode (pubKeyHash) {
17652 typeforce(types.Hash160bit, pubKeyHash)
17653
17654 return bscript.compile([
17655 OPS.OP_DUP,
17656 OPS.OP_HASH160,
17657 pubKeyHash,
17658 OPS.OP_EQUALVERIFY,
17659 OPS.OP_CHECKSIG
17660 ])
17661 }
17662
17663 function decode (buffer) {
17664 typeforce(check, buffer)
17665
17666 return buffer.slice(3, 23)
17667 }
17668
17669 module.exports = {
17670 check: check,
17671 decode: decode,
17672 encode: encode
17673 }
17674
17675 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],65:[function(require,module,exports){
17676 arguments[4][55][0].apply(exports,arguments)
17677 },{"./input":66,"./output":67,"dup":55}],66:[function(require,module,exports){
17678 // <scriptSig> {serialized scriptPubKey script}
17679
17680 var Buffer = require('safe-buffer').Buffer
17681 var bscript = require('../../script')
17682 var typeforce = require('typeforce')
17683
17684 function check (script, allowIncomplete) {
17685 var chunks = bscript.decompile(script)
17686 if (chunks.length < 1) return false
17687
17688 var lastChunk = chunks[chunks.length - 1]
17689 if (!Buffer.isBuffer(lastChunk)) return false
17690
17691 var scriptSigChunks = bscript.decompile(bscript.compile(chunks.slice(0, -1)))
17692 var redeemScriptChunks = bscript.decompile(lastChunk)
17693
17694 // is redeemScript a valid script?
17695 if (redeemScriptChunks.length === 0) return false
17696
17697 // is redeemScriptSig push only?
17698 if (!bscript.isPushOnly(scriptSigChunks)) return false
17699
17700 var inputType = bscript.classifyInput(scriptSigChunks, allowIncomplete)
17701 var outputType = bscript.classifyOutput(redeemScriptChunks)
17702 if (chunks.length === 1) {
17703 return outputType === bscript.types.P2WSH || outputType === bscript.types.P2WPKH
17704 }
17705 return inputType === outputType
17706 }
17707 check.toJSON = function () { return 'scriptHash input' }
17708
17709 function encodeStack (redeemScriptStack, redeemScript) {
17710 var serializedScriptPubKey = bscript.compile(redeemScript)
17711
17712 return [].concat(redeemScriptStack, serializedScriptPubKey)
17713 }
17714
17715 function encode (redeemScriptSig, redeemScript) {
17716 var redeemScriptStack = bscript.decompile(redeemScriptSig)
17717
17718 return bscript.compile(encodeStack(redeemScriptStack, redeemScript))
17719 }
17720
17721 function decodeStack (stack) {
17722 typeforce(check, stack)
17723
17724 return {
17725 redeemScriptStack: stack.slice(0, -1),
17726 redeemScript: stack[stack.length - 1]
17727 }
17728 }
17729
17730 function decode (buffer) {
17731 var stack = bscript.decompile(buffer)
17732 var result = decodeStack(stack)
17733 result.redeemScriptSig = bscript.compile(result.redeemScriptStack)
17734 delete result.redeemScriptStack
17735 return result
17736 }
17737
17738 module.exports = {
17739 check: check,
17740 decode: decode,
17741 decodeStack: decodeStack,
17742 encode: encode,
17743 encodeStack: encodeStack
17744 }
17745
17746 },{"../../script":52,"safe-buffer":98,"typeforce":109}],67:[function(require,module,exports){
17747 // OP_HASH160 {scriptHash} OP_EQUAL
17748
17749 var bscript = require('../../script')
17750 var types = require('../../types')
17751 var typeforce = require('typeforce')
17752 var OPS = require('bitcoin-ops')
17753
17754 function check (script) {
17755 var buffer = bscript.compile(script)
17756
17757 return buffer.length === 23 &&
17758 buffer[0] === OPS.OP_HASH160 &&
17759 buffer[1] === 0x14 &&
17760 buffer[22] === OPS.OP_EQUAL
17761 }
17762 check.toJSON = function () { return 'scriptHash output' }
17763
17764 function encode (scriptHash) {
17765 typeforce(types.Hash160bit, scriptHash)
17766
17767 return bscript.compile([OPS.OP_HASH160, scriptHash, OPS.OP_EQUAL])
17768 }
17769
17770 function decode (buffer) {
17771 typeforce(check, buffer)
17772
17773 return buffer.slice(2, 22)
17774 }
17775
17776 module.exports = {
17777 check: check,
17778 decode: decode,
17779 encode: encode
17780 }
17781
17782 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],68:[function(require,module,exports){
17783 module.exports = {
17784 output: require('./output')
17785 }
17786
17787 },{"./output":69}],69:[function(require,module,exports){
17788 // OP_RETURN {aa21a9ed} {commitment}
17789
17790 var Buffer = require('safe-buffer').Buffer
17791 var bscript = require('../../script')
17792 var types = require('../../types')
17793 var typeforce = require('typeforce')
17794 var OPS = require('bitcoin-ops')
17795
17796 var HEADER = Buffer.from('aa21a9ed', 'hex')
17797
17798 function check (script) {
17799 var buffer = bscript.compile(script)
17800
17801 return buffer.length > 37 &&
17802 buffer[0] === OPS.OP_RETURN &&
17803 buffer[1] === 0x24 &&
17804 buffer.slice(2, 6).equals(HEADER)
17805 }
17806
17807 check.toJSON = function () { return 'Witness commitment output' }
17808
17809 function encode (commitment) {
17810 typeforce(types.Hash256bit, commitment)
17811
17812 var buffer = Buffer.allocUnsafe(36)
17813 HEADER.copy(buffer, 0)
17814 commitment.copy(buffer, 4)
17815
17816 return bscript.compile([OPS.OP_RETURN, buffer])
17817 }
17818
17819 function decode (buffer) {
17820 typeforce(check, buffer)
17821
17822 return bscript.decompile(buffer)[1].slice(4, 36)
17823 }
17824
17825 module.exports = {
17826 check: check,
17827 decode: decode,
17828 encode: encode
17829 }
17830
17831 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],70:[function(require,module,exports){
17832 arguments[4][55][0].apply(exports,arguments)
17833 },{"./input":71,"./output":72,"dup":55}],71:[function(require,module,exports){
17834 // {signature} {pubKey}
17835
17836 var pkh = require('../pubkeyhash/input')
17837
17838 module.exports = {
17839 check: pkh.check,
17840 decodeStack: pkh.decodeStack,
17841 encodeStack: pkh.encodeStack
17842 }
17843
17844 },{"../pubkeyhash/input":63}],72:[function(require,module,exports){
17845 // OP_0 {pubKeyHash}
17846
17847 var bscript = require('../../script')
17848 var types = require('../../types')
17849 var typeforce = require('typeforce')
17850 var OPS = require('bitcoin-ops')
17851
17852 function check (script) {
17853 var buffer = bscript.compile(script)
17854
17855 return buffer.length === 22 &&
17856 buffer[0] === OPS.OP_0 &&
17857 buffer[1] === 0x14
17858 }
17859 check.toJSON = function () { return 'Witness pubKeyHash output' }
17860
17861 function encode (pubKeyHash) {
17862 typeforce(types.Hash160bit, pubKeyHash)
17863
17864 return bscript.compile([OPS.OP_0, pubKeyHash])
17865 }
17866
17867 function decode (buffer) {
17868 typeforce(check, buffer)
17869
17870 return buffer.slice(2)
17871 }
17872
17873 module.exports = {
17874 check: check,
17875 decode: decode,
17876 encode: encode
17877 }
17878
17879 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],73:[function(require,module,exports){
17880 arguments[4][55][0].apply(exports,arguments)
17881 },{"./input":74,"./output":75,"dup":55}],74:[function(require,module,exports){
17882 // {signature} {pubKey}
17883
17884 var p2sh = require('../scripthash/input')
17885
17886 module.exports = {
17887 check: p2sh.check,
17888 decodeStack: p2sh.decodeStack,
17889 encodeStack: p2sh.encodeStack
17890 }
17891
17892 },{"../scripthash/input":66}],75:[function(require,module,exports){
17893 // OP_0 {scriptHash}
17894
17895 var bscript = require('../../script')
17896 var types = require('../../types')
17897 var typeforce = require('typeforce')
17898 var OPS = require('bitcoin-ops')
17899
17900 function check (script) {
17901 var buffer = bscript.compile(script)
17902
17903 return buffer.length === 34 &&
17904 buffer[0] === OPS.OP_0 &&
17905 buffer[1] === 0x20
17906 }
17907 check.toJSON = function () { return 'Witness scriptHash output' }
17908
17909 function encode (scriptHash) {
17910 typeforce(types.Hash256bit, scriptHash)
17911
17912 return bscript.compile([OPS.OP_0, scriptHash])
17913 }
17914
17915 function decode (buffer) {
17916 typeforce(check, buffer)
17917
17918 return buffer.slice(2)
17919 }
17920
17921 module.exports = {
17922 check: check,
17923 decode: decode,
17924 encode: encode
17925 }
17926
17927 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],76:[function(require,module,exports){
17928 var Buffer = require('safe-buffer').Buffer
17929 var bcrypto = require('./crypto')
17930 var bscript = require('./script')
17931 var bufferutils = require('./bufferutils')
17932 var opcodes = require('bitcoin-ops')
17933 var typeforce = require('typeforce')
17934 var types = require('./types')
17935 var varuint = require('varuint-bitcoin')
17936
17937 function varSliceSize (someScript) {
17938 var length = someScript.length
17939
17940 return varuint.encodingLength(length) + length
17941 }
17942
17943 function vectorSize (someVector) {
17944 var length = someVector.length
17945
17946 return varuint.encodingLength(length) + someVector.reduce(function (sum, witness) {
17947 return sum + varSliceSize(witness)
17948 }, 0)
17949 }
17950
17951 function Transaction () {
17952 this.version = 1
17953 this.locktime = 0
17954 this.ins = []
17955 this.outs = []
17956 }
17957
17958 Transaction.DEFAULT_SEQUENCE = 0xffffffff
17959 Transaction.SIGHASH_ALL = 0x01
17960 Transaction.SIGHASH_NONE = 0x02
17961 Transaction.SIGHASH_SINGLE = 0x03
17962 Transaction.SIGHASH_ANYONECANPAY = 0x80
17963 Transaction.ADVANCED_TRANSACTION_MARKER = 0x00
17964 Transaction.ADVANCED_TRANSACTION_FLAG = 0x01
17965
17966 var EMPTY_SCRIPT = Buffer.allocUnsafe(0)
17967 var EMPTY_WITNESS = []
17968 var ZERO = Buffer.from('0000000000000000000000000000000000000000000000000000000000000000', 'hex')
17969 var ONE = Buffer.from('0000000000000000000000000000000000000000000000000000000000000001', 'hex')
17970 var VALUE_UINT64_MAX = Buffer.from('ffffffffffffffff', 'hex')
17971 var BLANK_OUTPUT = {
17972 script: EMPTY_SCRIPT,
17973 valueBuffer: VALUE_UINT64_MAX
17974 }
17975
17976 Transaction.fromBuffer = function (buffer, __noStrict) {
17977 var offset = 0
17978 function readSlice (n) {
17979 offset += n
17980 return buffer.slice(offset - n, offset)
17981 }
17982
17983 function readUInt32 () {
17984 var i = buffer.readUInt32LE(offset)
17985 offset += 4
17986 return i
17987 }
17988
17989 function readInt32 () {
17990 var i = buffer.readInt32LE(offset)
17991 offset += 4
17992 return i
17993 }
17994
17995 function readUInt64 () {
17996 var i = bufferutils.readUInt64LE(buffer, offset)
17997 offset += 8
17998 return i
17999 }
18000
18001 function readVarInt () {
18002 var vi = varuint.decode(buffer, offset)
18003 offset += varuint.decode.bytes
18004 return vi
18005 }
18006
18007 function readVarSlice () {
18008 return readSlice(readVarInt())
18009 }
18010
18011 function readVector () {
18012 var count = readVarInt()
18013 var vector = []
18014 for (var i = 0; i < count; i++) vector.push(readVarSlice())
18015 return vector
18016 }
18017
18018 var tx = new Transaction()
18019 tx.version = readInt32()
18020
18021 var marker = buffer.readUInt8(offset)
18022 var flag = buffer.readUInt8(offset + 1)
18023
18024 var hasWitnesses = false
18025 if (marker === Transaction.ADVANCED_TRANSACTION_MARKER &&
18026 flag === Transaction.ADVANCED_TRANSACTION_FLAG) {
18027 offset += 2
18028 hasWitnesses = true
18029 }
18030
18031 var vinLen = readVarInt()
18032 for (var i = 0; i < vinLen; ++i) {
18033 tx.ins.push({
18034 hash: readSlice(32),
18035 index: readUInt32(),
18036 script: readVarSlice(),
18037 sequence: readUInt32(),
18038 witness: EMPTY_WITNESS
18039 })
18040 }
18041
18042 var voutLen = readVarInt()
18043 for (i = 0; i < voutLen; ++i) {
18044 tx.outs.push({
18045 value: readUInt64(),
18046 script: readVarSlice()
18047 })
18048 }
18049
18050 if (hasWitnesses) {
18051 for (i = 0; i < vinLen; ++i) {
18052 tx.ins[i].witness = readVector()
18053 }
18054
18055 // was this pointless?
18056 if (!tx.hasWitnesses()) throw new Error('Transaction has superfluous witness data')
18057 }
18058
18059 tx.locktime = readUInt32()
18060
18061 if (__noStrict) return tx
18062 if (offset !== buffer.length) throw new Error('Transaction has unexpected data')
18063
18064 return tx
18065 }
18066
18067 Transaction.fromHex = function (hex) {
18068 return Transaction.fromBuffer(Buffer.from(hex, 'hex'))
18069 }
18070
18071 Transaction.isCoinbaseHash = function (buffer) {
18072 typeforce(types.Hash256bit, buffer)
18073 for (var i = 0; i < 32; ++i) {
18074 if (buffer[i] !== 0) return false
18075 }
18076 return true
18077 }
18078
18079 Transaction.prototype.isCoinbase = function () {
18080 return this.ins.length === 1 && Transaction.isCoinbaseHash(this.ins[0].hash)
18081 }
18082
18083 Transaction.prototype.addInput = function (hash, index, sequence, scriptSig) {
18084 typeforce(types.tuple(
18085 types.Hash256bit,
18086 types.UInt32,
18087 types.maybe(types.UInt32),
18088 types.maybe(types.Buffer)
18089 ), arguments)
18090
18091 if (types.Null(sequence)) {
18092 sequence = Transaction.DEFAULT_SEQUENCE
18093 }
18094
18095 // Add the input and return the input's index
18096 return (this.ins.push({
18097 hash: hash,
18098 index: index,
18099 script: scriptSig || EMPTY_SCRIPT,
18100 sequence: sequence,
18101 witness: EMPTY_WITNESS
18102 }) - 1)
18103 }
18104
18105 Transaction.prototype.addOutput = function (scriptPubKey, value) {
18106 typeforce(types.tuple(types.Buffer, types.Satoshi), arguments)
18107
18108 // Add the output and return the output's index
18109 return (this.outs.push({
18110 script: scriptPubKey,
18111 value: value
18112 }) - 1)
18113 }
18114
18115 Transaction.prototype.hasWitnesses = function () {
18116 return this.ins.some(function (x) {
18117 return x.witness.length !== 0
18118 })
18119 }
18120
18121 Transaction.prototype.weight = function () {
18122 var base = this.__byteLength(false)
18123 var total = this.__byteLength(true)
18124 return base * 3 + total
18125 }
18126
18127 Transaction.prototype.virtualSize = function () {
18128 return Math.ceil(this.weight() / 4)
18129 }
18130
18131 Transaction.prototype.byteLength = function () {
18132 return this.__byteLength(true)
18133 }
18134
18135 Transaction.prototype.__byteLength = function (__allowWitness) {
18136 var hasWitnesses = __allowWitness && this.hasWitnesses()
18137
18138 return (
18139 (hasWitnesses ? 10 : 8) +
18140 varuint.encodingLength(this.ins.length) +
18141 varuint.encodingLength(this.outs.length) +
18142 this.ins.reduce(function (sum, input) { return sum + 40 + varSliceSize(input.script) }, 0) +
18143 this.outs.reduce(function (sum, output) { return sum + 8 + varSliceSize(output.script) }, 0) +
18144 (hasWitnesses ? this.ins.reduce(function (sum, input) { return sum + vectorSize(input.witness) }, 0) : 0)
18145 )
18146 }
18147
18148 Transaction.prototype.clone = function () {
18149 var newTx = new Transaction()
18150 newTx.version = this.version
18151 newTx.locktime = this.locktime
18152
18153 newTx.ins = this.ins.map(function (txIn) {
18154 return {
18155 hash: txIn.hash,
18156 index: txIn.index,
18157 script: txIn.script,
18158 sequence: txIn.sequence,
18159 witness: txIn.witness
18160 }
18161 })
18162
18163 newTx.outs = this.outs.map(function (txOut) {
18164 return {
18165 script: txOut.script,
18166 value: txOut.value
18167 }
18168 })
18169
18170 return newTx
18171 }
18172
18173 /**
18174 * Hash transaction for signing a specific input.
18175 *
18176 * Bitcoin uses a different hash for each signed transaction input.
18177 * This method copies the transaction, makes the necessary changes based on the
18178 * hashType, and then hashes the result.
18179 * This hash can then be used to sign the provided transaction input.
18180 */
18181 Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
18182 typeforce(types.tuple(types.UInt32, types.Buffer, /* types.UInt8 */ types.Number), arguments)
18183
18184 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L29
18185 if (inIndex >= this.ins.length) return ONE
18186
18187 // ignore OP_CODESEPARATOR
18188 var ourScript = bscript.compile(bscript.decompile(prevOutScript).filter(function (x) {
18189 return x !== opcodes.OP_CODESEPARATOR
18190 }))
18191
18192 var txTmp = this.clone()
18193
18194 // SIGHASH_NONE: ignore all outputs? (wildcard payee)
18195 if ((hashType & 0x1f) === Transaction.SIGHASH_NONE) {
18196 txTmp.outs = []
18197
18198 // ignore sequence numbers (except at inIndex)
18199 txTmp.ins.forEach(function (input, i) {
18200 if (i === inIndex) return
18201
18202 input.sequence = 0
18203 })
18204
18205 // SIGHASH_SINGLE: ignore all outputs, except at the same index?
18206 } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE) {
18207 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L60
18208 if (inIndex >= this.outs.length) return ONE
18209
18210 // truncate outputs after
18211 txTmp.outs.length = inIndex + 1
18212
18213 // "blank" outputs before
18214 for (var i = 0; i < inIndex; i++) {
18215 txTmp.outs[i] = BLANK_OUTPUT
18216 }
18217
18218 // ignore sequence numbers (except at inIndex)
18219 txTmp.ins.forEach(function (input, y) {
18220 if (y === inIndex) return
18221
18222 input.sequence = 0
18223 })
18224 }
18225
18226 // SIGHASH_ANYONECANPAY: ignore inputs entirely?
18227 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
18228 txTmp.ins = [txTmp.ins[inIndex]]
18229 txTmp.ins[0].script = ourScript
18230
18231 // SIGHASH_ALL: only ignore input scripts
18232 } else {
18233 // "blank" others input scripts
18234 txTmp.ins.forEach(function (input) { input.script = EMPTY_SCRIPT })
18235 txTmp.ins[inIndex].script = ourScript
18236 }
18237
18238 // serialize and hash
18239 var buffer = Buffer.allocUnsafe(txTmp.__byteLength(false) + 4)
18240 buffer.writeInt32LE(hashType, buffer.length - 4)
18241 txTmp.__toBuffer(buffer, 0, false)
18242
18243 return bcrypto.hash256(buffer)
18244 }
18245
18246 Transaction.prototype.hashForWitnessV0 = function (inIndex, prevOutScript, value, hashType) {
18247 typeforce(types.tuple(types.UInt32, types.Buffer, types.Satoshi, types.UInt32), arguments)
18248
18249 var tbuffer, toffset
18250 function writeSlice (slice) { toffset += slice.copy(tbuffer, toffset) }
18251 function writeUInt32 (i) { toffset = tbuffer.writeUInt32LE(i, toffset) }
18252 function writeUInt64 (i) { toffset = bufferutils.writeUInt64LE(tbuffer, i, toffset) }
18253 function writeVarInt (i) {
18254 varuint.encode(i, tbuffer, toffset)
18255 toffset += varuint.encode.bytes
18256 }
18257 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18258
18259 var hashOutputs = ZERO
18260 var hashPrevouts = ZERO
18261 var hashSequence = ZERO
18262
18263 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY)) {
18264 tbuffer = Buffer.allocUnsafe(36 * this.ins.length)
18265 toffset = 0
18266
18267 this.ins.forEach(function (txIn) {
18268 writeSlice(txIn.hash)
18269 writeUInt32(txIn.index)
18270 })
18271
18272 hashPrevouts = bcrypto.hash256(tbuffer)
18273 }
18274
18275 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY) &&
18276 (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&
18277 (hashType & 0x1f) !== Transaction.SIGHASH_NONE) {
18278 tbuffer = Buffer.allocUnsafe(4 * this.ins.length)
18279 toffset = 0
18280
18281 this.ins.forEach(function (txIn) {
18282 writeUInt32(txIn.sequence)
18283 })
18284
18285 hashSequence = bcrypto.hash256(tbuffer)
18286 }
18287
18288 if ((hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&
18289 (hashType & 0x1f) !== Transaction.SIGHASH_NONE) {
18290 var txOutsSize = this.outs.reduce(function (sum, output) {
18291 return sum + 8 + varSliceSize(output.script)
18292 }, 0)
18293
18294 tbuffer = Buffer.allocUnsafe(txOutsSize)
18295 toffset = 0
18296
18297 this.outs.forEach(function (out) {
18298 writeUInt64(out.value)
18299 writeVarSlice(out.script)
18300 })
18301
18302 hashOutputs = bcrypto.hash256(tbuffer)
18303 } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE && inIndex < this.outs.length) {
18304 var output = this.outs[inIndex]
18305
18306 tbuffer = Buffer.allocUnsafe(8 + varSliceSize(output.script))
18307 toffset = 0
18308 writeUInt64(output.value)
18309 writeVarSlice(output.script)
18310
18311 hashOutputs = bcrypto.hash256(tbuffer)
18312 }
18313
18314 tbuffer = Buffer.allocUnsafe(156 + varSliceSize(prevOutScript))
18315 toffset = 0
18316
18317 var input = this.ins[inIndex]
18318 writeUInt32(this.version)
18319 writeSlice(hashPrevouts)
18320 writeSlice(hashSequence)
18321 writeSlice(input.hash)
18322 writeUInt32(input.index)
18323 writeVarSlice(prevOutScript)
18324 writeUInt64(value)
18325 writeUInt32(input.sequence)
18326 writeSlice(hashOutputs)
18327 writeUInt32(this.locktime)
18328 writeUInt32(hashType)
18329 return bcrypto.hash256(tbuffer)
18330 }
18331
18332 Transaction.prototype.getHash = function () {
18333 return bcrypto.hash256(this.__toBuffer(undefined, undefined, false))
18334 }
18335
18336 Transaction.prototype.getId = function () {
18337 // transaction hash's are displayed in reverse order
18338 return this.getHash().reverse().toString('hex')
18339 }
18340
18341 Transaction.prototype.toBuffer = function (buffer, initialOffset) {
18342 return this.__toBuffer(buffer, initialOffset, true)
18343 }
18344
18345 Transaction.prototype.__toBuffer = function (buffer, initialOffset, __allowWitness) {
18346 if (!buffer) buffer = Buffer.allocUnsafe(this.__byteLength(__allowWitness))
18347
18348 var offset = initialOffset || 0
18349 function writeSlice (slice) { offset += slice.copy(buffer, offset) }
18350 function writeUInt8 (i) { offset = buffer.writeUInt8(i, offset) }
18351 function writeUInt32 (i) { offset = buffer.writeUInt32LE(i, offset) }
18352 function writeInt32 (i) { offset = buffer.writeInt32LE(i, offset) }
18353 function writeUInt64 (i) { offset = bufferutils.writeUInt64LE(buffer, i, offset) }
18354 function writeVarInt (i) {
18355 varuint.encode(i, buffer, offset)
18356 offset += varuint.encode.bytes
18357 }
18358 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18359 function writeVector (vector) { writeVarInt(vector.length); vector.forEach(writeVarSlice) }
18360
18361 writeInt32(this.version)
18362
18363 var hasWitnesses = __allowWitness && this.hasWitnesses()
18364
18365 if (hasWitnesses) {
18366 writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER)
18367 writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG)
18368 }
18369
18370 writeVarInt(this.ins.length)
18371
18372 this.ins.forEach(function (txIn) {
18373 writeSlice(txIn.hash)
18374 writeUInt32(txIn.index)
18375 writeVarSlice(txIn.script)
18376 writeUInt32(txIn.sequence)
18377 })
18378
18379 writeVarInt(this.outs.length)
18380 this.outs.forEach(function (txOut) {
18381 if (!txOut.valueBuffer) {
18382 writeUInt64(txOut.value)
18383 } else {
18384 writeSlice(txOut.valueBuffer)
18385 }
18386
18387 writeVarSlice(txOut.script)
18388 })
18389
18390 if (hasWitnesses) {
18391 this.ins.forEach(function (input) {
18392 writeVector(input.witness)
18393 })
18394 }
18395
18396 writeUInt32(this.locktime)
18397
18398 // avoid slicing unless necessary
18399 if (initialOffset !== undefined) return buffer.slice(initialOffset, offset)
18400 return buffer
18401 }
18402
18403 Transaction.prototype.toHex = function () {
18404 return this.toBuffer().toString('hex')
18405 }
18406
18407 Transaction.prototype.setInputScript = function (index, scriptSig) {
18408 typeforce(types.tuple(types.Number, types.Buffer), arguments)
18409
18410 this.ins[index].script = scriptSig
18411 }
18412
18413 Transaction.prototype.setWitness = function (index, witness) {
18414 typeforce(types.tuple(types.Number, [types.Buffer]), arguments)
18415
18416 this.ins[index].witness = witness
18417 }
18418
18419 module.exports = Transaction
18420
18421 },{"./bufferutils":44,"./crypto":45,"./script":52,"./types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109,"varuint-bitcoin":111}],77:[function(require,module,exports){
18422 var Buffer = require('safe-buffer').Buffer
18423 var baddress = require('./address')
18424 var bcrypto = require('./crypto')
18425 var bscript = require('./script')
18426 var networks = require('./networks')
18427 var ops = require('bitcoin-ops')
18428 var typeforce = require('typeforce')
18429 var types = require('./types')
18430 var scriptTypes = bscript.types
18431 var SIGNABLE = [bscript.types.P2PKH, bscript.types.P2PK, bscript.types.MULTISIG]
18432 var P2SH = SIGNABLE.concat([bscript.types.P2WPKH, bscript.types.P2WSH])
18433
18434 var ECPair = require('./ecpair')
18435 var ECSignature = require('./ecsignature')
18436 var Transaction = require('./transaction')
18437
18438 function extractChunks (type, chunks, script) {
18439 var pubKeys = []
18440 var signatures = []
18441 switch (type) {
18442 case scriptTypes.P2PKH:
18443 // if (redeemScript) throw new Error('Nonstandard... P2SH(P2PKH)')
18444 pubKeys = chunks.slice(1)
18445 signatures = chunks.slice(0, 1)
18446 break
18447
18448 case scriptTypes.P2PK:
18449 pubKeys[0] = script ? bscript.pubKey.output.decode(script) : undefined
18450 signatures = chunks.slice(0, 1)
18451 break
18452
18453 case scriptTypes.MULTISIG:
18454 if (script) {
18455 var multisig = bscript.multisig.output.decode(script)
18456 pubKeys = multisig.pubKeys
18457 }
18458
18459 signatures = chunks.slice(1).map(function (chunk) {
18460 return chunk.length === 0 ? undefined : chunk
18461 })
18462 break
18463 }
18464
18465 return {
18466 pubKeys: pubKeys,
18467 signatures: signatures
18468 }
18469 }
18470 function expandInput (scriptSig, witnessStack) {
18471 if (scriptSig.length === 0 && witnessStack.length === 0) return {}
18472
18473 var prevOutScript
18474 var prevOutType
18475 var scriptType
18476 var script
18477 var redeemScript
18478 var witnessScript
18479 var witnessScriptType
18480 var redeemScriptType
18481 var witness = false
18482 var p2wsh = false
18483 var p2sh = false
18484 var witnessProgram
18485 var chunks
18486
18487 var scriptSigChunks = bscript.decompile(scriptSig)
18488 var sigType = bscript.classifyInput(scriptSigChunks, true)
18489 if (sigType === scriptTypes.P2SH) {
18490 p2sh = true
18491 redeemScript = scriptSigChunks[scriptSigChunks.length - 1]
18492 redeemScriptType = bscript.classifyOutput(redeemScript)
18493 prevOutScript = bscript.scriptHash.output.encode(bcrypto.hash160(redeemScript))
18494 prevOutType = scriptTypes.P2SH
18495 script = redeemScript
18496 }
18497
18498 var classifyWitness = bscript.classifyWitness(witnessStack)
18499 if (classifyWitness === scriptTypes.P2WSH) {
18500 witnessScript = witnessStack[witnessStack.length - 1]
18501 witnessScriptType = bscript.classifyOutput(witnessScript)
18502 p2wsh = true
18503 if (scriptSig.length === 0) {
18504 prevOutScript = bscript.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18505 prevOutType = scriptTypes.P2WSH
18506 if (typeof redeemScript !== 'undefined') {
18507 throw new Error('Redeem script given when unnecessary')
18508 }
18509 // bare witness
18510 } else {
18511 if (!redeemScript) {
18512 throw new Error('No redeemScript provided for P2WSH, but scriptSig non-empty')
18513 }
18514 witnessProgram = bscript.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18515 if (!redeemScript.equals(witnessProgram)) {
18516 throw new Error('Redeem script didn\'t match witnessScript')
18517 }
18518 }
18519
18520 if (SIGNABLE.indexOf(bscript.classifyOutput(witnessScript)) === -1) {
18521 throw new Error('unsupported witness script')
18522 }
18523 script = witnessScript
18524 scriptType = witnessScriptType
18525 chunks = witnessStack.slice(0, -1)
18526 } else if (classifyWitness === scriptTypes.P2WPKH) {
18527 var key = witnessStack[witnessStack.length - 1]
18528 var keyHash = bcrypto.hash160(key)
18529 if (scriptSig.length === 0) {
18530 prevOutScript = bscript.witnessPubKeyHash.output.encode(keyHash)
18531 prevOutType = scriptTypes.P2WPKH
18532 if (typeof redeemScript !== 'undefined') {
18533 throw new Error('Redeem script given when unnecessary')
18534 }
18535 } else {
18536 if (!redeemScript) {
18537 throw new Error('No redeemScript provided for P2WPKH, but scriptSig wasn\'t empty')
18538 }
18539 witnessProgram = bscript.witnessPubKeyHash.output.encode(keyHash)
18540 if (!redeemScript.equals(witnessProgram)) {
18541 throw new Error('Redeem script did not have the right witness program')
18542 }
18543 }
18544
18545 scriptType = scriptTypes.P2PKH
18546 chunks = witnessStack
18547 } else if (redeemScript) {
18548 if (P2SH.indexOf(redeemScriptType) === -1) {
18549 throw new Error('Bad redeemscript!')
18550 }
18551
18552 script = redeemScript
18553 scriptType = redeemScriptType
18554 chunks = scriptSigChunks.slice(0, -1)
18555 } else {
18556 prevOutType = scriptType = bscript.classifyInput(scriptSig)
18557 chunks = scriptSigChunks
18558 }
18559
18560 var expanded = extractChunks(scriptType, chunks, script)
18561
18562 var result = {
18563 pubKeys: expanded.pubKeys,
18564 signatures: expanded.signatures,
18565 prevOutScript: prevOutScript,
18566 prevOutType: prevOutType,
18567 signType: scriptType,
18568 signScript: script,
18569 witness: Boolean(witness)
18570 }
18571
18572 if (p2sh) {
18573 result.redeemScript = redeemScript
18574 result.redeemScriptType = redeemScriptType
18575 }
18576
18577 if (p2wsh) {
18578 result.witnessScript = witnessScript
18579 result.witnessScriptType = witnessScriptType
18580 }
18581
18582 return result
18583 }
18584
18585 // could be done in expandInput, but requires the original Transaction for hashForSignature
18586 function fixMultisigOrder (input, transaction, vin) {
18587 if (input.redeemScriptType !== scriptTypes.MULTISIG || !input.redeemScript) return
18588 if (input.pubKeys.length === input.signatures.length) return
18589
18590 var unmatched = input.signatures.concat()
18591
18592 input.signatures = input.pubKeys.map(function (pubKey) {
18593 var keyPair = ECPair.fromPublicKeyBuffer(pubKey)
18594 var match
18595
18596 // check for a signature
18597 unmatched.some(function (signature, i) {
18598 // skip if undefined || OP_0
18599 if (!signature) return false
18600
18601 // TODO: avoid O(n) hashForSignature
18602 var parsed = ECSignature.parseScriptSignature(signature)
18603 var hash = transaction.hashForSignature(vin, input.redeemScript, parsed.hashType)
18604
18605 // skip if signature does not match pubKey
18606 if (!keyPair.verify(hash, parsed.signature)) return false
18607
18608 // remove matched signature from unmatched
18609 unmatched[i] = undefined
18610 match = signature
18611
18612 return true
18613 })
18614
18615 return match
18616 })
18617 }
18618
18619 function expandOutput (script, scriptType, ourPubKey) {
18620 typeforce(types.Buffer, script)
18621
18622 var scriptChunks = bscript.decompile(script)
18623 if (!scriptType) {
18624 scriptType = bscript.classifyOutput(script)
18625 }
18626
18627 var pubKeys = []
18628
18629 switch (scriptType) {
18630 // does our hash160(pubKey) match the output scripts?
18631 case scriptTypes.P2PKH:
18632 if (!ourPubKey) break
18633
18634 var pkh1 = scriptChunks[2]
18635 var pkh2 = bcrypto.hash160(ourPubKey)
18636 if (pkh1.equals(pkh2)) pubKeys = [ourPubKey]
18637 break
18638
18639 // does our hash160(pubKey) match the output scripts?
18640 case scriptTypes.P2WPKH:
18641 if (!ourPubKey) break
18642
18643 var wpkh1 = scriptChunks[1]
18644 var wpkh2 = bcrypto.hash160(ourPubKey)
18645 if (wpkh1.equals(wpkh2)) pubKeys = [ourPubKey]
18646 break
18647
18648 case scriptTypes.P2PK:
18649 pubKeys = scriptChunks.slice(0, 1)
18650 break
18651
18652 case scriptTypes.MULTISIG:
18653 pubKeys = scriptChunks.slice(1, -2)
18654 break
18655
18656 default: return { scriptType: scriptType }
18657 }
18658
18659 return {
18660 pubKeys: pubKeys,
18661 scriptType: scriptType,
18662 signatures: pubKeys.map(function () { return undefined })
18663 }
18664 }
18665
18666 function checkP2shInput (input, redeemScriptHash) {
18667 if (input.prevOutType) {
18668 if (input.prevOutType !== scriptTypes.P2SH) throw new Error('PrevOutScript must be P2SH')
18669
18670 var prevOutScriptScriptHash = bscript.decompile(input.prevOutScript)[1]
18671 if (!prevOutScriptScriptHash.equals(redeemScriptHash)) throw new Error('Inconsistent hash160(RedeemScript)')
18672 }
18673 }
18674
18675 function checkP2WSHInput (input, witnessScriptHash) {
18676 if (input.prevOutType) {
18677 if (input.prevOutType !== scriptTypes.P2WSH) throw new Error('PrevOutScript must be P2WSH')
18678
18679 var scriptHash = bscript.decompile(input.prevOutScript)[1]
18680 if (!scriptHash.equals(witnessScriptHash)) throw new Error('Inconsistent sha25(WitnessScript)')
18681 }
18682 }
18683
18684 function prepareInput (input, kpPubKey, redeemScript, witnessValue, witnessScript) {
18685 var expanded
18686 var prevOutType
18687 var prevOutScript
18688
18689 var p2sh = false
18690 var p2shType
18691 var redeemScriptHash
18692
18693 var witness = false
18694 var p2wsh = false
18695 var witnessType
18696 var witnessScriptHash
18697
18698 var signType
18699 var signScript
18700
18701 if (redeemScript && witnessScript) {
18702 redeemScriptHash = bcrypto.hash160(redeemScript)
18703 witnessScriptHash = bcrypto.sha256(witnessScript)
18704 checkP2shInput(input, redeemScriptHash)
18705
18706 if (!redeemScript.equals(bscript.witnessScriptHash.output.encode(witnessScriptHash))) throw new Error('Witness script inconsistent with redeem script')
18707
18708 expanded = expandOutput(witnessScript, undefined, kpPubKey)
18709 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
18710 prevOutType = bscript.types.P2SH
18711 prevOutScript = bscript.scriptHash.output.encode(redeemScriptHash)
18712 p2sh = witness = p2wsh = true
18713 p2shType = bscript.types.P2WSH
18714 signType = witnessType = expanded.scriptType
18715 signScript = witnessScript
18716 } else if (redeemScript) {
18717 redeemScriptHash = bcrypto.hash160(redeemScript)
18718 checkP2shInput(input, redeemScriptHash)
18719
18720 expanded = expandOutput(redeemScript, undefined, kpPubKey)
18721 if (!expanded.pubKeys) throw new Error('RedeemScript not supported "' + bscript.toASM(redeemScript) + '"')
18722
18723 prevOutType = bscript.types.P2SH
18724 prevOutScript = bscript.scriptHash.output.encode(redeemScriptHash)
18725 p2sh = true
18726 signType = p2shType = expanded.scriptType
18727 signScript = redeemScript
18728 witness = signType === bscript.types.P2WPKH
18729 } else if (witnessScript) {
18730 witnessScriptHash = bcrypto.sha256(witnessScript)
18731 checkP2WSHInput(input, witnessScriptHash)
18732
18733 expanded = expandOutput(witnessScript, undefined, kpPubKey)
18734 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
18735
18736 prevOutType = bscript.types.P2WSH
18737 prevOutScript = bscript.witnessScriptHash.output.encode(witnessScriptHash)
18738 witness = p2wsh = true
18739 signType = witnessType = expanded.scriptType
18740 signScript = witnessScript
18741 } else if (input.prevOutType) {
18742 // embedded scripts are not possible without a redeemScript
18743 if (input.prevOutType === scriptTypes.P2SH ||
18744 input.prevOutType === scriptTypes.P2WSH) {
18745 throw new Error('PrevOutScript is ' + input.prevOutType + ', requires redeemScript')
18746 }
18747
18748 prevOutType = input.prevOutType
18749 prevOutScript = input.prevOutScript
18750 expanded = expandOutput(input.prevOutScript, input.prevOutType, kpPubKey)
18751 if (!expanded.pubKeys) return
18752
18753 witness = (input.prevOutType === scriptTypes.P2WPKH)
18754 signType = prevOutType
18755 signScript = prevOutScript
18756 } else {
18757 prevOutScript = bscript.pubKeyHash.output.encode(bcrypto.hash160(kpPubKey))
18758 expanded = expandOutput(prevOutScript, scriptTypes.P2PKH, kpPubKey)
18759 prevOutType = scriptTypes.P2PKH
18760 witness = false
18761 signType = prevOutType
18762 signScript = prevOutScript
18763 }
18764
18765 if (witness && !types.Satoshi(witnessValue)) {
18766 throw new Error('Input was witness but not given witness value')
18767 }
18768
18769 if (signType === scriptTypes.P2WPKH) {
18770 signScript = bscript.pubKeyHash.output.encode(bscript.witnessPubKeyHash.output.decode(signScript))
18771 }
18772
18773 if (p2sh) {
18774 input.redeemScript = redeemScript
18775 input.redeemScriptType = p2shType
18776 }
18777
18778 if (p2wsh) {
18779 input.witnessScript = witnessScript
18780 input.witnessScriptType = witnessType
18781 }
18782
18783 input.pubKeys = expanded.pubKeys
18784 input.signatures = expanded.signatures
18785 input.signScript = signScript
18786 input.signType = signType
18787 input.prevOutScript = prevOutScript
18788 input.prevOutType = prevOutType
18789 input.witness = witness
18790 }
18791
18792 function buildStack (type, signatures, pubKeys, allowIncomplete) {
18793 if (type === scriptTypes.P2PKH) {
18794 if (signatures.length === 1 && Buffer.isBuffer(signatures[0]) && pubKeys.length === 1) return bscript.pubKeyHash.input.encodeStack(signatures[0], pubKeys[0])
18795 } else if (type === scriptTypes.P2PK) {
18796 if (signatures.length === 1 && Buffer.isBuffer(signatures[0])) return bscript.pubKey.input.encodeStack(signatures[0])
18797 } else if (type === scriptTypes.MULTISIG) {
18798 if (signatures.length > 0) {
18799 signatures = signatures.map(function (signature) {
18800 return signature || ops.OP_0
18801 })
18802 if (!allowIncomplete) {
18803 // remove blank signatures
18804 signatures = signatures.filter(function (x) { return x !== ops.OP_0 })
18805 }
18806
18807 return bscript.multisig.input.encodeStack(signatures /* see if it's necessary first */)
18808 }
18809 } else {
18810 throw new Error('Not yet supported')
18811 }
18812
18813 if (!allowIncomplete) throw new Error('Not enough signatures provided')
18814
18815 return []
18816 }
18817
18818 function buildInput (input, allowIncomplete) {
18819 var scriptType = input.prevOutType
18820 var sig = []
18821 var witness = []
18822 if (SIGNABLE.indexOf(scriptType) !== -1) {
18823 sig = buildStack(scriptType, input.signatures, input.pubKeys, allowIncomplete)
18824 }
18825
18826 var p2sh = false
18827 if (scriptType === bscript.types.P2SH) {
18828 // We can remove this error later when we have a guarantee prepareInput
18829 // rejects unsignable scripts - it MUST be signable at this point.
18830 if (P2SH.indexOf(input.redeemScriptType) === -1) {
18831 throw new Error('Impossible to sign this type')
18832 }
18833 p2sh = true
18834 if (SIGNABLE.indexOf(input.redeemScriptType) !== -1) {
18835 sig = buildStack(input.redeemScriptType, input.signatures, input.pubKeys, allowIncomplete)
18836 }
18837 // If it wasn't SIGNABLE, it's witness, defer to that
18838 scriptType = input.redeemScriptType
18839 }
18840
18841 if (scriptType === bscript.types.P2WPKH) {
18842 // P2WPKH is a special case of P2PKH
18843 witness = buildStack(bscript.types.P2PKH, input.signatures, input.pubKeys, allowIncomplete)
18844 } else if (scriptType === bscript.types.P2WSH) {
18845 // We can remove this check later
18846 if (SIGNABLE.indexOf(input.witnessScriptType) !== -1) {
18847 witness = buildStack(input.witnessScriptType, input.signatures, input.pubKeys, allowIncomplete)
18848 witness.push(input.witnessScript)
18849 } else {
18850 // We can remove this error later when we have a guarantee prepareInput
18851 // rejects unsignble scripts - it MUST be signable at this point.
18852 throw new Error()
18853 }
18854
18855 scriptType = input.witnessScriptType
18856 }
18857
18858 // append redeemScript if necessary
18859 if (p2sh) {
18860 sig.push(input.redeemScript)
18861 }
18862
18863 return {
18864 type: scriptType,
18865 script: bscript.compile(sig),
18866 witness: witness
18867 }
18868 }
18869
18870 function TransactionBuilder (network, maximumFeeRate) {
18871 this.prevTxMap = {}
18872 this.network = network || networks.bitcoin
18873
18874 // WARNING: This is __NOT__ to be relied on, its just another potential safety mechanism (safety in-depth)
18875 this.maximumFeeRate = maximumFeeRate || 1000
18876
18877 this.inputs = []
18878 this.tx = new Transaction()
18879 }
18880
18881 TransactionBuilder.prototype.setLockTime = function (locktime) {
18882 typeforce(types.UInt32, locktime)
18883
18884 // if any signatures exist, throw
18885 if (this.inputs.some(function (input) {
18886 if (!input.signatures) return false
18887
18888 return input.signatures.some(function (s) { return s })
18889 })) {
18890 throw new Error('No, this would invalidate signatures')
18891 }
18892
18893 this.tx.locktime = locktime
18894 }
18895
18896 TransactionBuilder.prototype.setVersion = function (version) {
18897 typeforce(types.UInt32, version)
18898
18899 // XXX: this might eventually become more complex depending on what the versions represent
18900 this.tx.version = version
18901 }
18902
18903 TransactionBuilder.fromTransaction = function (transaction, network) {
18904 var txb = new TransactionBuilder(network)
18905
18906 // Copy transaction fields
18907 txb.setVersion(transaction.version)
18908 txb.setLockTime(transaction.locktime)
18909
18910 // Copy outputs (done first to avoid signature invalidation)
18911 transaction.outs.forEach(function (txOut) {
18912 txb.addOutput(txOut.script, txOut.value)
18913 })
18914
18915 // Copy inputs
18916 transaction.ins.forEach(function (txIn) {
18917 txb.__addInputUnsafe(txIn.hash, txIn.index, {
18918 sequence: txIn.sequence,
18919 script: txIn.script,
18920 witness: txIn.witness
18921 })
18922 })
18923
18924 // fix some things not possible through the public API
18925 txb.inputs.forEach(function (input, i) {
18926 fixMultisigOrder(input, transaction, i)
18927 })
18928
18929 return txb
18930 }
18931
18932 TransactionBuilder.prototype.addInput = function (txHash, vout, sequence, prevOutScript) {
18933 if (!this.__canModifyInputs()) {
18934 throw new Error('No, this would invalidate signatures')
18935 }
18936
18937 var value
18938
18939 // is it a hex string?
18940 if (typeof txHash === 'string') {
18941 // transaction hashs's are displayed in reverse order, un-reverse it
18942 txHash = Buffer.from(txHash, 'hex').reverse()
18943
18944 // is it a Transaction object?
18945 } else if (txHash instanceof Transaction) {
18946 var txOut = txHash.outs[vout]
18947 prevOutScript = txOut.script
18948 value = txOut.value
18949
18950 txHash = txHash.getHash()
18951 }
18952
18953 return this.__addInputUnsafe(txHash, vout, {
18954 sequence: sequence,
18955 prevOutScript: prevOutScript,
18956 value: value
18957 })
18958 }
18959
18960 TransactionBuilder.prototype.__addInputUnsafe = function (txHash, vout, options) {
18961 if (Transaction.isCoinbaseHash(txHash)) {
18962 throw new Error('coinbase inputs not supported')
18963 }
18964
18965 var prevTxOut = txHash.toString('hex') + ':' + vout
18966 if (this.prevTxMap[prevTxOut] !== undefined) throw new Error('Duplicate TxOut: ' + prevTxOut)
18967
18968 var input = {}
18969
18970 // derive what we can from the scriptSig
18971 if (options.script !== undefined) {
18972 input = expandInput(options.script, options.witness || [])
18973 }
18974
18975 // if an input value was given, retain it
18976 if (options.value !== undefined) {
18977 input.value = options.value
18978 }
18979
18980 // derive what we can from the previous transactions output script
18981 if (!input.prevOutScript && options.prevOutScript) {
18982 var prevOutType
18983
18984 if (!input.pubKeys && !input.signatures) {
18985 var expanded = expandOutput(options.prevOutScript)
18986
18987 if (expanded.pubKeys) {
18988 input.pubKeys = expanded.pubKeys
18989 input.signatures = expanded.signatures
18990 }
18991
18992 prevOutType = expanded.scriptType
18993 }
18994
18995 input.prevOutScript = options.prevOutScript
18996 input.prevOutType = prevOutType || bscript.classifyOutput(options.prevOutScript)
18997 }
18998
18999 var vin = this.tx.addInput(txHash, vout, options.sequence, options.scriptSig)
19000 this.inputs[vin] = input
19001 this.prevTxMap[prevTxOut] = vin
19002
19003 return vin
19004 }
19005
19006 TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
19007 if (!this.__canModifyOutputs()) {
19008 throw new Error('No, this would invalidate signatures')
19009 }
19010
19011 // Attempt to get a script if it's a base58 address string
19012 if (typeof scriptPubKey === 'string') {
19013 scriptPubKey = baddress.toOutputScript(scriptPubKey, this.network)
19014 }
19015
19016 return this.tx.addOutput(scriptPubKey, value)
19017 }
19018
19019 TransactionBuilder.prototype.build = function () {
19020 return this.__build(false)
19021 }
19022 TransactionBuilder.prototype.buildIncomplete = function () {
19023 return this.__build(true)
19024 }
19025
19026 TransactionBuilder.prototype.__build = function (allowIncomplete) {
19027 if (!allowIncomplete) {
19028 if (!this.tx.ins.length) throw new Error('Transaction has no inputs')
19029 if (!this.tx.outs.length) throw new Error('Transaction has no outputs')
19030 }
19031
19032 var tx = this.tx.clone()
19033 // Create script signatures from inputs
19034 this.inputs.forEach(function (input, i) {
19035 var scriptType = input.witnessScriptType || input.redeemScriptType || input.prevOutType
19036 if (!scriptType && !allowIncomplete) throw new Error('Transaction is not complete')
19037 var result = buildInput(input, allowIncomplete)
19038
19039 // skip if no result
19040 if (!allowIncomplete) {
19041 if (SIGNABLE.indexOf(result.type) === -1 && result.type !== bscript.types.P2WPKH) {
19042 throw new Error(result.type + ' not supported')
19043 }
19044 }
19045
19046 tx.setInputScript(i, result.script)
19047 tx.setWitness(i, result.witness)
19048 })
19049
19050 if (!allowIncomplete) {
19051 // do not rely on this, its merely a last resort
19052 if (this.__overMaximumFees(tx.byteLength())) {
19053 throw new Error('Transaction has absurd fees')
19054 }
19055 }
19056
19057 return tx
19058 }
19059
19060 function canSign (input) {
19061 return input.prevOutScript !== undefined &&
19062 input.signScript !== undefined &&
19063 input.pubKeys !== undefined &&
19064 input.signatures !== undefined &&
19065 input.signatures.length === input.pubKeys.length &&
19066 input.pubKeys.length > 0 &&
19067 input.witness !== undefined
19068 }
19069
19070 TransactionBuilder.prototype.sign = function (vin, keyPair, redeemScript, hashType, witnessValue, witnessScript) {
19071 if (keyPair.network !== this.network) throw new Error('Inconsistent network')
19072 if (!this.inputs[vin]) throw new Error('No input at index: ' + vin)
19073 hashType = hashType || Transaction.SIGHASH_ALL
19074
19075 var input = this.inputs[vin]
19076
19077 // if redeemScript was previously provided, enforce consistency
19078 if (input.redeemScript !== undefined &&
19079 redeemScript &&
19080 !input.redeemScript.equals(redeemScript)) {
19081 throw new Error('Inconsistent redeemScript')
19082 }
19083
19084 var kpPubKey = keyPair.getPublicKeyBuffer()
19085 if (!canSign(input)) {
19086 prepareInput(input, kpPubKey, redeemScript, witnessValue, witnessScript)
19087 if (!canSign(input)) throw Error(input.prevOutType + ' not supported')
19088 }
19089
19090 // ready to sign
19091 var signatureHash
19092 if (input.witness) {
19093 signatureHash = this.tx.hashForWitnessV0(vin, input.signScript, witnessValue, hashType)
19094 } else {
19095 signatureHash = this.tx.hashForSignature(vin, input.signScript, hashType)
19096 }
19097 // enforce in order signing of public keys
19098 var signed = input.pubKeys.some(function (pubKey, i) {
19099 if (!kpPubKey.equals(pubKey)) return false
19100 if (input.signatures[i]) throw new Error('Signature already exists')
19101
19102 input.signatures[i] = keyPair.sign(signatureHash).toScriptSignature(hashType)
19103 return true
19104 })
19105
19106 if (!signed) throw new Error('Key pair cannot sign for this input')
19107 }
19108
19109 function signatureHashType (buffer) {
19110 return buffer.readUInt8(buffer.length - 1)
19111 }
19112
19113 TransactionBuilder.prototype.__canModifyInputs = function () {
19114 return this.inputs.every(function (input) {
19115 // any signatures?
19116 if (input.signatures === undefined) return true
19117
19118 return input.signatures.every(function (signature) {
19119 if (!signature) return true
19120 var hashType = signatureHashType(signature)
19121
19122 // if SIGHASH_ANYONECANPAY is set, signatures would not
19123 // be invalidated by more inputs
19124 return hashType & Transaction.SIGHASH_ANYONECANPAY
19125 })
19126 })
19127 }
19128
19129 TransactionBuilder.prototype.__canModifyOutputs = function () {
19130 var nInputs = this.tx.ins.length
19131 var nOutputs = this.tx.outs.length
19132
19133 return this.inputs.every(function (input) {
19134 if (input.signatures === undefined) return true
19135
19136 return input.signatures.every(function (signature) {
19137 if (!signature) return true
19138 var hashType = signatureHashType(signature)
19139
19140 var hashTypeMod = hashType & 0x1f
19141 if (hashTypeMod === Transaction.SIGHASH_NONE) return true
19142 if (hashTypeMod === Transaction.SIGHASH_SINGLE) {
19143 // if SIGHASH_SINGLE is set, and nInputs > nOutputs
19144 // some signatures would be invalidated by the addition
19145 // of more outputs
19146 return nInputs <= nOutputs
19147 }
19148 })
19149 })
19150 }
19151
19152 TransactionBuilder.prototype.__overMaximumFees = function (bytes) {
19153 // not all inputs will have .value defined
19154 var incoming = this.inputs.reduce(function (a, x) { return a + (x.value >>> 0) }, 0)
19155
19156 // but all outputs do, and if we have any input value
19157 // we can immediately determine if the outputs are too small
19158 var outgoing = this.tx.outs.reduce(function (a, x) { return a + x.value }, 0)
19159 var fee = incoming - outgoing
19160 var feeRate = fee / bytes
19161
19162 return feeRate > this.maximumFeeRate
19163 }
19164
19165 module.exports = TransactionBuilder
19166
19167 },{"./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){
19168 var typeforce = require('typeforce')
19169
19170 var UINT31_MAX = Math.pow(2, 31) - 1
19171 function UInt31 (value) {
19172 return typeforce.UInt32(value) && value <= UINT31_MAX
19173 }
19174
19175 function BIP32Path (value) {
19176 return typeforce.String(value) && value.match(/^(m\/)?(\d+'?\/)*\d+'?$/)
19177 }
19178 BIP32Path.toJSON = function () { return 'BIP32 derivation path' }
19179
19180 var SATOSHI_MAX = 21 * 1e14
19181 function Satoshi (value) {
19182 return typeforce.UInt53(value) && value <= SATOSHI_MAX
19183 }
19184
19185 // external dependent types
19186 var BigInt = typeforce.quacksLike('BigInteger')
19187 var ECPoint = typeforce.quacksLike('Point')
19188
19189 // exposed, external API
19190 var ECSignature = typeforce.compile({ r: BigInt, s: BigInt })
19191 var Network = typeforce.compile({
19192 messagePrefix: typeforce.oneOf(typeforce.Buffer, typeforce.String),
19193 bip32: {
19194 public: typeforce.UInt32,
19195 private: typeforce.UInt32
19196 },
19197 pubKeyHash: typeforce.UInt8,
19198 scriptHash: typeforce.UInt8,
19199 wif: typeforce.UInt8
19200 })
19201
19202 // extend typeforce types with ours
19203 var types = {
19204 BigInt: BigInt,
19205 BIP32Path: BIP32Path,
19206 Buffer256bit: typeforce.BufferN(32),
19207 ECPoint: ECPoint,
19208 ECSignature: ECSignature,
19209 Hash160bit: typeforce.BufferN(20),
19210 Hash256bit: typeforce.BufferN(32),
19211 Network: Network,
19212 Satoshi: Satoshi,
19213 UInt31: UInt31
19214 }
19215
19216 for (var typeName in typeforce) {
19217 types[typeName] = typeforce[typeName]
19218 }
19219
19220 module.exports = types
19221
19222 },{"typeforce":109}],79:[function(require,module,exports){
19223 var basex = require('base-x')
19224 var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
19225
19226 module.exports = basex(ALPHABET)
19227
19228 },{"base-x":34}],80:[function(require,module,exports){
19229 (function (Buffer){
19230 'use strict'
19231
19232 var base58 = require('bs58')
19233 var createHash = require('create-hash')
19234
19235 // SHA256(SHA256(buffer))
19236 function sha256x2 (buffer) {
19237 var tmp = createHash('sha256').update(buffer).digest()
19238 return createHash('sha256').update(tmp).digest()
19239 }
19240
19241 // Encode a buffer as a base58-check encoded string
19242 function encode (payload) {
19243 var checksum = sha256x2(payload)
19244
19245 return base58.encode(Buffer.concat([
19246 payload,
19247 checksum
19248 ], payload.length + 4))
19249 }
19250
19251 function decodeRaw (buffer) {
19252 var payload = buffer.slice(0, -4)
19253 var checksum = buffer.slice(-4)
19254 var newChecksum = sha256x2(payload)
19255
19256 if (checksum[0] ^ newChecksum[0] |
19257 checksum[1] ^ newChecksum[1] |
19258 checksum[2] ^ newChecksum[2] |
19259 checksum[3] ^ newChecksum[3]) return
19260
19261 return payload
19262 }
19263
19264 // Decode a base58-check encoded string to a buffer, no result if checksum is wrong
19265 function decodeUnsafe (string) {
19266 var buffer = base58.decodeUnsafe(string)
19267 if (!buffer) return
19268
19269 return decodeRaw(buffer)
19270 }
19271
19272 function decode (string) {
19273 var buffer = base58.decode(string)
19274 var payload = decodeRaw(buffer)
19275 if (!payload) throw new Error('Invalid checksum')
19276 return payload
19277 }
19278
19279 module.exports = {
19280 encode: encode,
19281 decode: decode,
19282 decodeUnsafe: decodeUnsafe
19283 }
19284
19285 }).call(this,require("buffer").Buffer)
19286 },{"bs58":79,"buffer":4,"create-hash":82}],81:[function(require,module,exports){
19287 var Buffer = require('safe-buffer').Buffer
19288 var Transform = require('stream').Transform
19289 var StringDecoder = require('string_decoder').StringDecoder
19290 var inherits = require('inherits')
19291
19292 function CipherBase (hashMode) {
19293 Transform.call(this)
19294 this.hashMode = typeof hashMode === 'string'
19295 if (this.hashMode) {
19296 this[hashMode] = this._finalOrDigest
19297 } else {
19298 this.final = this._finalOrDigest
19299 }
19300 if (this._final) {
19301 this.__final = this._final
19302 this._final = null
19303 }
19304 this._decoder = null
19305 this._encoding = null
19306 }
19307 inherits(CipherBase, Transform)
19308
19309 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
19310 if (typeof data === 'string') {
19311 data = Buffer.from(data, inputEnc)
19312 }
19313
19314 var outData = this._update(data)
19315 if (this.hashMode) return this
19316
19317 if (outputEnc) {
19318 outData = this._toString(outData, outputEnc)
19319 }
19320
19321 return outData
19322 }
19323
19324 CipherBase.prototype.setAutoPadding = function () {}
19325 CipherBase.prototype.getAuthTag = function () {
19326 throw new Error('trying to get auth tag in unsupported state')
19327 }
19328
19329 CipherBase.prototype.setAuthTag = function () {
19330 throw new Error('trying to set auth tag in unsupported state')
19331 }
19332
19333 CipherBase.prototype.setAAD = function () {
19334 throw new Error('trying to set aad in unsupported state')
19335 }
19336
19337 CipherBase.prototype._transform = function (data, _, next) {
19338 var err
19339 try {
19340 if (this.hashMode) {
19341 this._update(data)
19342 } else {
19343 this.push(this._update(data))
19344 }
19345 } catch (e) {
19346 err = e
19347 } finally {
19348 next(err)
19349 }
19350 }
19351 CipherBase.prototype._flush = function (done) {
19352 var err
19353 try {
19354 this.push(this.__final())
19355 } catch (e) {
19356 err = e
19357 }
19358
19359 done(err)
19360 }
19361 CipherBase.prototype._finalOrDigest = function (outputEnc) {
19362 var outData = this.__final() || Buffer.alloc(0)
19363 if (outputEnc) {
19364 outData = this._toString(outData, outputEnc, true)
19365 }
19366 return outData
19367 }
19368
19369 CipherBase.prototype._toString = function (value, enc, fin) {
19370 if (!this._decoder) {
19371 this._decoder = new StringDecoder(enc)
19372 this._encoding = enc
19373 }
19374
19375 if (this._encoding !== enc) throw new Error('can\'t switch encodings')
19376
19377 var out = this._decoder.write(value)
19378 if (fin) {
19379 out += this._decoder.end()
19380 }
19381
19382 return out
19383 }
19384
19385 module.exports = CipherBase
19386
19387 },{"inherits":93,"safe-buffer":98,"stream":27,"string_decoder":28}],82:[function(require,module,exports){
19388 (function (Buffer){
19389 'use strict'
19390 var inherits = require('inherits')
19391 var md5 = require('./md5')
19392 var RIPEMD160 = require('ripemd160')
19393 var sha = require('sha.js')
19394
19395 var Base = require('cipher-base')
19396
19397 function HashNoConstructor (hash) {
19398 Base.call(this, 'digest')
19399
19400 this._hash = hash
19401 this.buffers = []
19402 }
19403
19404 inherits(HashNoConstructor, Base)
19405
19406 HashNoConstructor.prototype._update = function (data) {
19407 this.buffers.push(data)
19408 }
19409
19410 HashNoConstructor.prototype._final = function () {
19411 var buf = Buffer.concat(this.buffers)
19412 var r = this._hash(buf)
19413 this.buffers = null
19414
19415 return r
19416 }
19417
19418 function Hash (hash) {
19419 Base.call(this, 'digest')
19420
19421 this._hash = hash
19422 }
19423
19424 inherits(Hash, Base)
19425
19426 Hash.prototype._update = function (data) {
19427 this._hash.update(data)
19428 }
19429
19430 Hash.prototype._final = function () {
19431 return this._hash.digest()
19432 }
19433
19434 module.exports = function createHash (alg) {
19435 alg = alg.toLowerCase()
19436 if (alg === 'md5') return new HashNoConstructor(md5)
19437 if (alg === 'rmd160' || alg === 'ripemd160') return new Hash(new RIPEMD160())
19438
19439 return new Hash(sha(alg))
19440 }
19441
19442 }).call(this,require("buffer").Buffer)
19443 },{"./md5":84,"buffer":4,"cipher-base":81,"inherits":93,"ripemd160":97,"sha.js":100}],83:[function(require,module,exports){
19444 (function (Buffer){
19445 'use strict'
19446 var intSize = 4
19447 var zeroBuffer = new Buffer(intSize)
19448 zeroBuffer.fill(0)
19449
19450 var charSize = 8
19451 var hashSize = 16
19452
19453 function toArray (buf) {
19454 if ((buf.length % intSize) !== 0) {
19455 var len = buf.length + (intSize - (buf.length % intSize))
19456 buf = Buffer.concat([buf, zeroBuffer], len)
19457 }
19458
19459 var arr = new Array(buf.length >>> 2)
19460 for (var i = 0, j = 0; i < buf.length; i += intSize, j++) {
19461 arr[j] = buf.readInt32LE(i)
19462 }
19463
19464 return arr
19465 }
19466
19467 module.exports = function hash (buf, fn) {
19468 var arr = fn(toArray(buf), buf.length * charSize)
19469 buf = new Buffer(hashSize)
19470 for (var i = 0; i < arr.length; i++) {
19471 buf.writeInt32LE(arr[i], i << 2, true)
19472 }
19473 return buf
19474 }
19475
19476 }).call(this,require("buffer").Buffer)
19477 },{"buffer":4}],84:[function(require,module,exports){
19478 'use strict'
19479 /*
19480 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
19481 * Digest Algorithm, as defined in RFC 1321.
19482 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
19483 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
19484 * Distributed under the BSD License
19485 * See http://pajhome.org.uk/crypt/md5 for more info.
19486 */
19487
19488 var makeHash = require('./make-hash')
19489
19490 /*
19491 * Calculate the MD5 of an array of little-endian words, and a bit length
19492 */
19493 function core_md5 (x, len) {
19494 /* append padding */
19495 x[len >> 5] |= 0x80 << ((len) % 32)
19496 x[(((len + 64) >>> 9) << 4) + 14] = len
19497
19498 var a = 1732584193
19499 var b = -271733879
19500 var c = -1732584194
19501 var d = 271733878
19502
19503 for (var i = 0; i < x.length; i += 16) {
19504 var olda = a
19505 var oldb = b
19506 var oldc = c
19507 var oldd = d
19508
19509 a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936)
19510 d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586)
19511 c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819)
19512 b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330)
19513 a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897)
19514 d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426)
19515 c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341)
19516 b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983)
19517 a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416)
19518 d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417)
19519 c = md5_ff(c, d, a, b, x[i + 10], 17, -42063)
19520 b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162)
19521 a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682)
19522 d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101)
19523 c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290)
19524 b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329)
19525
19526 a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510)
19527 d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632)
19528 c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713)
19529 b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302)
19530 a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691)
19531 d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083)
19532 c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335)
19533 b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848)
19534 a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438)
19535 d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690)
19536 c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961)
19537 b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501)
19538 a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467)
19539 d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784)
19540 c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473)
19541 b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734)
19542
19543 a = md5_hh(a, b, c, d, x[i + 5], 4, -378558)
19544 d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463)
19545 c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562)
19546 b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556)
19547 a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060)
19548 d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353)
19549 c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632)
19550 b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640)
19551 a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174)
19552 d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222)
19553 c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979)
19554 b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189)
19555 a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487)
19556 d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835)
19557 c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520)
19558 b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651)
19559
19560 a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844)
19561 d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415)
19562 c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905)
19563 b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055)
19564 a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571)
19565 d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606)
19566 c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523)
19567 b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799)
19568 a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359)
19569 d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744)
19570 c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380)
19571 b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649)
19572 a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070)
19573 d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379)
19574 c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259)
19575 b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551)
19576
19577 a = safe_add(a, olda)
19578 b = safe_add(b, oldb)
19579 c = safe_add(c, oldc)
19580 d = safe_add(d, oldd)
19581 }
19582
19583 return [a, b, c, d]
19584 }
19585
19586 /*
19587 * These functions implement the four basic operations the algorithm uses.
19588 */
19589 function md5_cmn (q, a, b, x, s, t) {
19590 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
19591 }
19592
19593 function md5_ff (a, b, c, d, x, s, t) {
19594 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)
19595 }
19596
19597 function md5_gg (a, b, c, d, x, s, t) {
19598 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)
19599 }
19600
19601 function md5_hh (a, b, c, d, x, s, t) {
19602 return md5_cmn(b ^ c ^ d, a, b, x, s, t)
19603 }
19604
19605 function md5_ii (a, b, c, d, x, s, t) {
19606 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)
19607 }
19608
19609 /*
19610 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
19611 * to work around bugs in some JS interpreters.
19612 */
19613 function safe_add (x, y) {
19614 var lsw = (x & 0xFFFF) + (y & 0xFFFF)
19615 var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
19616 return (msw << 16) | (lsw & 0xFFFF)
19617 }
19618
19619 /*
19620 * Bitwise rotate a 32-bit number to the left.
19621 */
19622 function bit_rol (num, cnt) {
19623 return (num << cnt) | (num >>> (32 - cnt))
19624 }
19625
19626 module.exports = function md5 (buf) {
19627 return makeHash(buf, core_md5)
19628 }
19629
19630 },{"./make-hash":83}],85:[function(require,module,exports){
19631 'use strict'
19632 var inherits = require('inherits')
19633 var Legacy = require('./legacy')
19634 var Base = require('cipher-base')
19635 var Buffer = require('safe-buffer').Buffer
19636 var md5 = require('create-hash/md5')
19637 var RIPEMD160 = require('ripemd160')
19638
19639 var sha = require('sha.js')
19640
19641 var ZEROS = Buffer.alloc(128)
19642
19643 function Hmac (alg, key) {
19644 Base.call(this, 'digest')
19645 if (typeof key === 'string') {
19646 key = Buffer.from(key)
19647 }
19648
19649 var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
19650
19651 this._alg = alg
19652 this._key = key
19653 if (key.length > blocksize) {
19654 var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
19655 key = hash.update(key).digest()
19656 } else if (key.length < blocksize) {
19657 key = Buffer.concat([key, ZEROS], blocksize)
19658 }
19659
19660 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
19661 var opad = this._opad = Buffer.allocUnsafe(blocksize)
19662
19663 for (var i = 0; i < blocksize; i++) {
19664 ipad[i] = key[i] ^ 0x36
19665 opad[i] = key[i] ^ 0x5C
19666 }
19667 this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
19668 this._hash.update(ipad)
19669 }
19670
19671 inherits(Hmac, Base)
19672
19673 Hmac.prototype._update = function (data) {
19674 this._hash.update(data)
19675 }
19676
19677 Hmac.prototype._final = function () {
19678 var h = this._hash.digest()
19679 var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)
19680 return hash.update(this._opad).update(h).digest()
19681 }
19682
19683 module.exports = function createHmac (alg, key) {
19684 alg = alg.toLowerCase()
19685 if (alg === 'rmd160' || alg === 'ripemd160') {
19686 return new Hmac('rmd160', key)
19687 }
19688 if (alg === 'md5') {
19689 return new Legacy(md5, key)
19690 }
19691 return new Hmac(alg, key)
19692 }
19693
19694 },{"./legacy":86,"cipher-base":81,"create-hash/md5":84,"inherits":93,"ripemd160":97,"safe-buffer":98,"sha.js":100}],86:[function(require,module,exports){
19695 'use strict'
19696 var inherits = require('inherits')
19697 var Buffer = require('safe-buffer').Buffer
19698
19699 var Base = require('cipher-base')
19700
19701 var ZEROS = Buffer.alloc(128)
19702 var blocksize = 64
19703
19704 function Hmac (alg, key) {
19705 Base.call(this, 'digest')
19706 if (typeof key === 'string') {
19707 key = Buffer.from(key)
19708 }
19709
19710 this._alg = alg
19711 this._key = key
19712
19713 if (key.length > blocksize) {
19714 key = alg(key)
19715 } else if (key.length < blocksize) {
19716 key = Buffer.concat([key, ZEROS], blocksize)
19717 }
19718
19719 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
19720 var opad = this._opad = Buffer.allocUnsafe(blocksize)
19721
19722 for (var i = 0; i < blocksize; i++) {
19723 ipad[i] = key[i] ^ 0x36
19724 opad[i] = key[i] ^ 0x5C
19725 }
19726
19727 this._hash = [ipad]
19728 }
19729
19730 inherits(Hmac, Base)
19731
19732 Hmac.prototype._update = function (data) {
19733 this._hash.push(data)
19734 }
19735
19736 Hmac.prototype._final = function () {
19737 var h = this._alg(Buffer.concat(this._hash))
19738 return this._alg(Buffer.concat([this._opad, h]))
19739 }
19740 module.exports = Hmac
19741
19742 },{"cipher-base":81,"inherits":93,"safe-buffer":98}],87:[function(require,module,exports){
19743 var assert = require('assert')
19744 var BigInteger = require('bigi')
19745
19746 var Point = require('./point')
19747
19748 function Curve (p, a, b, Gx, Gy, n, h) {
19749 this.p = p
19750 this.a = a
19751 this.b = b
19752 this.G = Point.fromAffine(this, Gx, Gy)
19753 this.n = n
19754 this.h = h
19755
19756 this.infinity = new Point(this, null, null, BigInteger.ZERO)
19757
19758 // result caching
19759 this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)
19760
19761 // determine size of p in bytes
19762 this.pLength = Math.floor((this.p.bitLength() + 7) / 8)
19763 }
19764
19765 Curve.prototype.pointFromX = function (isOdd, x) {
19766 var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)
19767 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
19768
19769 var y = beta
19770 if (beta.isEven() ^ !isOdd) {
19771 y = this.p.subtract(y) // -y % p
19772 }
19773
19774 return Point.fromAffine(this, x, y)
19775 }
19776
19777 Curve.prototype.isInfinity = function (Q) {
19778 if (Q === this.infinity) return true
19779
19780 return Q.z.signum() === 0 && Q.y.signum() !== 0
19781 }
19782
19783 Curve.prototype.isOnCurve = function (Q) {
19784 if (this.isInfinity(Q)) return true
19785
19786 var x = Q.affineX
19787 var y = Q.affineY
19788 var a = this.a
19789 var b = this.b
19790 var p = this.p
19791
19792 // Check that xQ and yQ are integers in the interval [0, p - 1]
19793 if (x.signum() < 0 || x.compareTo(p) >= 0) return false
19794 if (y.signum() < 0 || y.compareTo(p) >= 0) return false
19795
19796 // and check that y^2 = x^3 + ax + b (mod p)
19797 var lhs = y.square().mod(p)
19798 var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)
19799 return lhs.equals(rhs)
19800 }
19801
19802 /**
19803 * Validate an elliptic curve point.
19804 *
19805 * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive
19806 */
19807 Curve.prototype.validate = function (Q) {
19808 // Check Q != O
19809 assert(!this.isInfinity(Q), 'Point is at infinity')
19810 assert(this.isOnCurve(Q), 'Point is not on the curve')
19811
19812 // Check nQ = O (where Q is a scalar multiple of G)
19813 var nQ = Q.multiply(this.n)
19814 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
19815
19816 return true
19817 }
19818
19819 module.exports = Curve
19820
19821 },{"./point":91,"assert":1,"bigi":37}],88:[function(require,module,exports){
19822 module.exports={
19823 "secp128r1": {
19824 "p": "fffffffdffffffffffffffffffffffff",
19825 "a": "fffffffdfffffffffffffffffffffffc",
19826 "b": "e87579c11079f43dd824993c2cee5ed3",
19827 "n": "fffffffe0000000075a30d1b9038a115",
19828 "h": "01",
19829 "Gx": "161ff7528b899b2d0c28607ca52c5b86",
19830 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
19831 },
19832 "secp160k1": {
19833 "p": "fffffffffffffffffffffffffffffffeffffac73",
19834 "a": "00",
19835 "b": "07",
19836 "n": "0100000000000000000001b8fa16dfab9aca16b6b3",
19837 "h": "01",
19838 "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
19839 "Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
19840 },
19841 "secp160r1": {
19842 "p": "ffffffffffffffffffffffffffffffff7fffffff",
19843 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
19844 "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
19845 "n": "0100000000000000000001f4c8f927aed3ca752257",
19846 "h": "01",
19847 "Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
19848 "Gy": "23a628553168947d59dcc912042351377ac5fb32"
19849 },
19850 "secp192k1": {
19851 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
19852 "a": "00",
19853 "b": "03",
19854 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
19855 "h": "01",
19856 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
19857 "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
19858 },
19859 "secp192r1": {
19860 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
19861 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
19862 "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
19863 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
19864 "h": "01",
19865 "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
19866 "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
19867 },
19868 "secp256k1": {
19869 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
19870 "a": "00",
19871 "b": "07",
19872 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
19873 "h": "01",
19874 "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
19875 "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
19876 },
19877 "secp256r1": {
19878 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
19879 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
19880 "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
19881 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
19882 "h": "01",
19883 "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
19884 "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
19885 }
19886 }
19887
19888 },{}],89:[function(require,module,exports){
19889 var Point = require('./point')
19890 var Curve = require('./curve')
19891
19892 var getCurveByName = require('./names')
19893
19894 module.exports = {
19895 Curve: Curve,
19896 Point: Point,
19897 getCurveByName: getCurveByName
19898 }
19899
19900 },{"./curve":87,"./names":90,"./point":91}],90:[function(require,module,exports){
19901 var BigInteger = require('bigi')
19902
19903 var curves = require('./curves.json')
19904 var Curve = require('./curve')
19905
19906 function getCurveByName (name) {
19907 var curve = curves[name]
19908 if (!curve) return null
19909
19910 var p = new BigInteger(curve.p, 16)
19911 var a = new BigInteger(curve.a, 16)
19912 var b = new BigInteger(curve.b, 16)
19913 var n = new BigInteger(curve.n, 16)
19914 var h = new BigInteger(curve.h, 16)
19915 var Gx = new BigInteger(curve.Gx, 16)
19916 var Gy = new BigInteger(curve.Gy, 16)
19917
19918 return new Curve(p, a, b, Gx, Gy, n, h)
19919 }
19920
19921 module.exports = getCurveByName
19922
19923 },{"./curve":87,"./curves.json":88,"bigi":37}],91:[function(require,module,exports){
19924 (function (Buffer){
19925 var assert = require('assert')
19926 var BigInteger = require('bigi')
19927
19928 var THREE = BigInteger.valueOf(3)
19929
19930 function Point (curve, x, y, z) {
19931 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
19932
19933 this.curve = curve
19934 this.x = x
19935 this.y = y
19936 this.z = z
19937 this._zInv = null
19938
19939 this.compressed = true
19940 }
19941
19942 Object.defineProperty(Point.prototype, 'zInv', {
19943 get: function () {
19944 if (this._zInv === null) {
19945 this._zInv = this.z.modInverse(this.curve.p)
19946 }
19947
19948 return this._zInv
19949 }
19950 })
19951
19952 Object.defineProperty(Point.prototype, 'affineX', {
19953 get: function () {
19954 return this.x.multiply(this.zInv).mod(this.curve.p)
19955 }
19956 })
19957
19958 Object.defineProperty(Point.prototype, 'affineY', {
19959 get: function () {
19960 return this.y.multiply(this.zInv).mod(this.curve.p)
19961 }
19962 })
19963
19964 Point.fromAffine = function (curve, x, y) {
19965 return new Point(curve, x, y, BigInteger.ONE)
19966 }
19967
19968 Point.prototype.equals = function (other) {
19969 if (other === this) return true
19970 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
19971 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
19972
19973 // u = Y2 * Z1 - Y1 * Z2
19974 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
19975
19976 if (u.signum() !== 0) return false
19977
19978 // v = X2 * Z1 - X1 * Z2
19979 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
19980
19981 return v.signum() === 0
19982 }
19983
19984 Point.prototype.negate = function () {
19985 var y = this.curve.p.subtract(this.y)
19986
19987 return new Point(this.curve, this.x, y, this.z)
19988 }
19989
19990 Point.prototype.add = function (b) {
19991 if (this.curve.isInfinity(this)) return b
19992 if (this.curve.isInfinity(b)) return this
19993
19994 var x1 = this.x
19995 var y1 = this.y
19996 var x2 = b.x
19997 var y2 = b.y
19998
19999 // u = Y2 * Z1 - Y1 * Z2
20000 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
20001 // v = X2 * Z1 - X1 * Z2
20002 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
20003
20004 if (v.signum() === 0) {
20005 if (u.signum() === 0) {
20006 return this.twice() // this == b, so double
20007 }
20008
20009 return this.curve.infinity // this = -b, so infinity
20010 }
20011
20012 var v2 = v.square()
20013 var v3 = v2.multiply(v)
20014 var x1v2 = x1.multiply(v2)
20015 var zu2 = u.square().multiply(this.z)
20016
20017 // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
20018 var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
20019 // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
20020 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)
20021 // z3 = v^3 * z1 * z2
20022 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
20023
20024 return new Point(this.curve, x3, y3, z3)
20025 }
20026
20027 Point.prototype.twice = function () {
20028 if (this.curve.isInfinity(this)) return this
20029 if (this.y.signum() === 0) return this.curve.infinity
20030
20031 var x1 = this.x
20032 var y1 = this.y
20033
20034 var y1z1 = y1.multiply(this.z).mod(this.curve.p)
20035 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
20036 var a = this.curve.a
20037
20038 // w = 3 * x1^2 + a * z1^2
20039 var w = x1.square().multiply(THREE)
20040
20041 if (a.signum() !== 0) {
20042 w = w.add(this.z.square().multiply(a))
20043 }
20044
20045 w = w.mod(this.curve.p)
20046 // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
20047 var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)
20048 // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
20049 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)
20050 // z3 = 8 * (y1 * z1)^3
20051 var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)
20052
20053 return new Point(this.curve, x3, y3, z3)
20054 }
20055
20056 // Simple NAF (Non-Adjacent Form) multiplication algorithm
20057 // TODO: modularize the multiplication algorithm
20058 Point.prototype.multiply = function (k) {
20059 if (this.curve.isInfinity(this)) return this
20060 if (k.signum() === 0) return this.curve.infinity
20061
20062 var e = k
20063 var h = e.multiply(THREE)
20064
20065 var neg = this.negate()
20066 var R = this
20067
20068 for (var i = h.bitLength() - 2; i > 0; --i) {
20069 var hBit = h.testBit(i)
20070 var eBit = e.testBit(i)
20071
20072 R = R.twice()
20073
20074 if (hBit !== eBit) {
20075 R = R.add(hBit ? this : neg)
20076 }
20077 }
20078
20079 return R
20080 }
20081
20082 // Compute this*j + x*k (simultaneous multiplication)
20083 Point.prototype.multiplyTwo = function (j, x, k) {
20084 var i = Math.max(j.bitLength(), k.bitLength()) - 1
20085 var R = this.curve.infinity
20086 var both = this.add(x)
20087
20088 while (i >= 0) {
20089 var jBit = j.testBit(i)
20090 var kBit = k.testBit(i)
20091
20092 R = R.twice()
20093
20094 if (jBit) {
20095 if (kBit) {
20096 R = R.add(both)
20097 } else {
20098 R = R.add(this)
20099 }
20100 } else if (kBit) {
20101 R = R.add(x)
20102 }
20103 --i
20104 }
20105
20106 return R
20107 }
20108
20109 Point.prototype.getEncoded = function (compressed) {
20110 if (compressed == null) compressed = this.compressed
20111 if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'
20112
20113 var x = this.affineX
20114 var y = this.affineY
20115 var byteLength = this.curve.pLength
20116 var buffer
20117
20118 // 0x02/0x03 | X
20119 if (compressed) {
20120 buffer = new Buffer(1 + byteLength)
20121 buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)
20122
20123 // 0x04 | X | Y
20124 } else {
20125 buffer = new Buffer(1 + byteLength + byteLength)
20126 buffer.writeUInt8(0x04, 0)
20127
20128 y.toBuffer(byteLength).copy(buffer, 1 + byteLength)
20129 }
20130
20131 x.toBuffer(byteLength).copy(buffer, 1)
20132
20133 return buffer
20134 }
20135
20136 Point.decodeFrom = function (curve, buffer) {
20137 var type = buffer.readUInt8(0)
20138 var compressed = (type !== 4)
20139
20140 var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)
20141 var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))
20142
20143 var Q
20144 if (compressed) {
20145 assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')
20146 assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
20147
20148 var isOdd = (type === 0x03)
20149 Q = curve.pointFromX(isOdd, x)
20150 } else {
20151 assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')
20152
20153 var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))
20154 Q = Point.fromAffine(curve, x, y)
20155 }
20156
20157 Q.compressed = compressed
20158 return Q
20159 }
20160
20161 Point.prototype.toString = function () {
20162 if (this.curve.isInfinity(this)) return '(INFINITY)'
20163
20164 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
20165 }
20166
20167 module.exports = Point
20168
20169 }).call(this,require("buffer").Buffer)
20170 },{"assert":1,"bigi":37,"buffer":4}],92:[function(require,module,exports){
20171 (function (Buffer){
20172 'use strict'
20173 var Transform = require('stream').Transform
20174 var inherits = require('inherits')
20175
20176 function HashBase (blockSize) {
20177 Transform.call(this)
20178
20179 this._block = new Buffer(blockSize)
20180 this._blockSize = blockSize
20181 this._blockOffset = 0
20182 this._length = [0, 0, 0, 0]
20183
20184 this._finalized = false
20185 }
20186
20187 inherits(HashBase, Transform)
20188
20189 HashBase.prototype._transform = function (chunk, encoding, callback) {
20190 var error = null
20191 try {
20192 if (encoding !== 'buffer') chunk = new Buffer(chunk, encoding)
20193 this.update(chunk)
20194 } catch (err) {
20195 error = err
20196 }
20197
20198 callback(error)
20199 }
20200
20201 HashBase.prototype._flush = function (callback) {
20202 var error = null
20203 try {
20204 this.push(this._digest())
20205 } catch (err) {
20206 error = err
20207 }
20208
20209 callback(error)
20210 }
20211
20212 HashBase.prototype.update = function (data, encoding) {
20213 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
20214 if (this._finalized) throw new Error('Digest already called')
20215 if (!Buffer.isBuffer(data)) data = new Buffer(data, encoding || 'binary')
20216
20217 // consume data
20218 var block = this._block
20219 var offset = 0
20220 while (this._blockOffset + data.length - offset >= this._blockSize) {
20221 for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]
20222 this._update()
20223 this._blockOffset = 0
20224 }
20225 while (offset < data.length) block[this._blockOffset++] = data[offset++]
20226
20227 // update length
20228 for (var j = 0, carry = data.length * 8; carry > 0; ++j) {
20229 this._length[j] += carry
20230 carry = (this._length[j] / 0x0100000000) | 0
20231 if (carry > 0) this._length[j] -= 0x0100000000 * carry
20232 }
20233
20234 return this
20235 }
20236
20237 HashBase.prototype._update = function (data) {
20238 throw new Error('_update is not implemented')
20239 }
20240
20241 HashBase.prototype.digest = function (encoding) {
20242 if (this._finalized) throw new Error('Digest already called')
20243 this._finalized = true
20244
20245 var digest = this._digest()
20246 if (encoding !== undefined) digest = digest.toString(encoding)
20247 return digest
20248 }
20249
20250 HashBase.prototype._digest = function () {
20251 throw new Error('_digest is not implemented')
20252 }
20253
20254 module.exports = HashBase
20255
20256 }).call(this,require("buffer").Buffer)
20257 },{"buffer":4,"inherits":93,"stream":27}],93:[function(require,module,exports){
20258 arguments[4][8][0].apply(exports,arguments)
20259 },{"dup":8}],94:[function(require,module,exports){
20260 (function (Buffer){
20261 // constant-space merkle root calculation algorithm
20262 module.exports = function fastRoot (values, digestFn) {
20263 if (!Array.isArray(values)) throw TypeError('Expected values Array')
20264 if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')
20265
20266 var length = values.length
20267 var results = values.concat()
20268
20269 while (length > 1) {
20270 var j = 0
20271
20272 for (var i = 0; i < length; i += 2, ++j) {
20273 var left = results[i]
20274 var right = i + 1 === length ? left : results[i + 1]
20275 var data = Buffer.concat([left, right])
20276
20277 results[j] = digestFn(data)
20278 }
20279
20280 length = j
20281 }
20282
20283 return results[0]
20284 }
20285
20286 }).call(this,require("buffer").Buffer)
20287 },{"buffer":4}],95:[function(require,module,exports){
20288 var OPS = require('bitcoin-ops')
20289
20290 function encodingLength (i) {
20291 return i < OPS.OP_PUSHDATA1 ? 1
20292 : i <= 0xff ? 2
20293 : i <= 0xffff ? 3
20294 : 5
20295 }
20296
20297 function encode (buffer, number, offset) {
20298 var size = encodingLength(number)
20299
20300 // ~6 bit
20301 if (size === 1) {
20302 buffer.writeUInt8(number, offset)
20303
20304 // 8 bit
20305 } else if (size === 2) {
20306 buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)
20307 buffer.writeUInt8(number, offset + 1)
20308
20309 // 16 bit
20310 } else if (size === 3) {
20311 buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)
20312 buffer.writeUInt16LE(number, offset + 1)
20313
20314 // 32 bit
20315 } else {
20316 buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)
20317 buffer.writeUInt32LE(number, offset + 1)
20318 }
20319
20320 return size
20321 }
20322
20323 function decode (buffer, offset) {
20324 var opcode = buffer.readUInt8(offset)
20325 var number, size
20326
20327 // ~6 bit
20328 if (opcode < OPS.OP_PUSHDATA1) {
20329 number = opcode
20330 size = 1
20331
20332 // 8 bit
20333 } else if (opcode === OPS.OP_PUSHDATA1) {
20334 if (offset + 2 > buffer.length) return null
20335 number = buffer.readUInt8(offset + 1)
20336 size = 2
20337
20338 // 16 bit
20339 } else if (opcode === OPS.OP_PUSHDATA2) {
20340 if (offset + 3 > buffer.length) return null
20341 number = buffer.readUInt16LE(offset + 1)
20342 size = 3
20343
20344 // 32 bit
20345 } else {
20346 if (offset + 5 > buffer.length) return null
20347 if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')
20348
20349 number = buffer.readUInt32LE(offset + 1)
20350 size = 5
20351 }
20352
20353 return {
20354 opcode: opcode,
20355 number: number,
20356 size: size
20357 }
20358 }
20359
20360 module.exports = {
20361 encodingLength: encodingLength,
20362 encode: encode,
20363 decode: decode
20364 }
20365
20366 },{"bitcoin-ops":40}],96:[function(require,module,exports){
20367 (function (process,global){
20368 'use strict'
20369
20370 function oldBrowser () {
20371 throw new Error('secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11')
20372 }
20373
20374 var Buffer = require('safe-buffer').Buffer
20375 var crypto = global.crypto || global.msCrypto
20376
20377 if (crypto && crypto.getRandomValues) {
20378 module.exports = randomBytes
20379 } else {
20380 module.exports = oldBrowser
20381 }
20382
20383 function randomBytes (size, cb) {
20384 // phantomjs needs to throw
20385 if (size > 65536) throw new Error('requested too many random bytes')
20386 // in case browserify isn't using the Uint8Array version
20387 var rawBytes = new global.Uint8Array(size)
20388
20389 // This will not work in older browsers.
20390 // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
20391 if (size > 0) { // getRandomValues fails on IE if size == 0
20392 crypto.getRandomValues(rawBytes)
20393 }
20394
20395 // XXX: phantomjs doesn't like a buffer being passed here
20396 var bytes = Buffer.from(rawBytes.buffer)
20397
20398 if (typeof cb === 'function') {
20399 return process.nextTick(function () {
20400 cb(null, bytes)
20401 })
20402 }
20403
20404 return bytes
20405 }
20406
20407 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20408 },{"_process":12,"safe-buffer":98}],97:[function(require,module,exports){
20409 (function (Buffer){
20410 'use strict'
20411 var inherits = require('inherits')
20412 var HashBase = require('hash-base')
20413
20414 function RIPEMD160 () {
20415 HashBase.call(this, 64)
20416
20417 // state
20418 this._a = 0x67452301
20419 this._b = 0xefcdab89
20420 this._c = 0x98badcfe
20421 this._d = 0x10325476
20422 this._e = 0xc3d2e1f0
20423 }
20424
20425 inherits(RIPEMD160, HashBase)
20426
20427 RIPEMD160.prototype._update = function () {
20428 var m = new Array(16)
20429 for (var i = 0; i < 16; ++i) m[i] = this._block.readInt32LE(i * 4)
20430
20431 var al = this._a
20432 var bl = this._b
20433 var cl = this._c
20434 var dl = this._d
20435 var el = this._e
20436
20437 // Mj = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
20438 // K = 0x00000000
20439 // Sj = 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8
20440 al = fn1(al, bl, cl, dl, el, m[0], 0x00000000, 11); cl = rotl(cl, 10)
20441 el = fn1(el, al, bl, cl, dl, m[1], 0x00000000, 14); bl = rotl(bl, 10)
20442 dl = fn1(dl, el, al, bl, cl, m[2], 0x00000000, 15); al = rotl(al, 10)
20443 cl = fn1(cl, dl, el, al, bl, m[3], 0x00000000, 12); el = rotl(el, 10)
20444 bl = fn1(bl, cl, dl, el, al, m[4], 0x00000000, 5); dl = rotl(dl, 10)
20445 al = fn1(al, bl, cl, dl, el, m[5], 0x00000000, 8); cl = rotl(cl, 10)
20446 el = fn1(el, al, bl, cl, dl, m[6], 0x00000000, 7); bl = rotl(bl, 10)
20447 dl = fn1(dl, el, al, bl, cl, m[7], 0x00000000, 9); al = rotl(al, 10)
20448 cl = fn1(cl, dl, el, al, bl, m[8], 0x00000000, 11); el = rotl(el, 10)
20449 bl = fn1(bl, cl, dl, el, al, m[9], 0x00000000, 13); dl = rotl(dl, 10)
20450 al = fn1(al, bl, cl, dl, el, m[10], 0x00000000, 14); cl = rotl(cl, 10)
20451 el = fn1(el, al, bl, cl, dl, m[11], 0x00000000, 15); bl = rotl(bl, 10)
20452 dl = fn1(dl, el, al, bl, cl, m[12], 0x00000000, 6); al = rotl(al, 10)
20453 cl = fn1(cl, dl, el, al, bl, m[13], 0x00000000, 7); el = rotl(el, 10)
20454 bl = fn1(bl, cl, dl, el, al, m[14], 0x00000000, 9); dl = rotl(dl, 10)
20455 al = fn1(al, bl, cl, dl, el, m[15], 0x00000000, 8); cl = rotl(cl, 10)
20456
20457 // Mj = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8
20458 // K = 0x5a827999
20459 // Sj = 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12
20460 el = fn2(el, al, bl, cl, dl, m[7], 0x5a827999, 7); bl = rotl(bl, 10)
20461 dl = fn2(dl, el, al, bl, cl, m[4], 0x5a827999, 6); al = rotl(al, 10)
20462 cl = fn2(cl, dl, el, al, bl, m[13], 0x5a827999, 8); el = rotl(el, 10)
20463 bl = fn2(bl, cl, dl, el, al, m[1], 0x5a827999, 13); dl = rotl(dl, 10)
20464 al = fn2(al, bl, cl, dl, el, m[10], 0x5a827999, 11); cl = rotl(cl, 10)
20465 el = fn2(el, al, bl, cl, dl, m[6], 0x5a827999, 9); bl = rotl(bl, 10)
20466 dl = fn2(dl, el, al, bl, cl, m[15], 0x5a827999, 7); al = rotl(al, 10)
20467 cl = fn2(cl, dl, el, al, bl, m[3], 0x5a827999, 15); el = rotl(el, 10)
20468 bl = fn2(bl, cl, dl, el, al, m[12], 0x5a827999, 7); dl = rotl(dl, 10)
20469 al = fn2(al, bl, cl, dl, el, m[0], 0x5a827999, 12); cl = rotl(cl, 10)
20470 el = fn2(el, al, bl, cl, dl, m[9], 0x5a827999, 15); bl = rotl(bl, 10)
20471 dl = fn2(dl, el, al, bl, cl, m[5], 0x5a827999, 9); al = rotl(al, 10)
20472 cl = fn2(cl, dl, el, al, bl, m[2], 0x5a827999, 11); el = rotl(el, 10)
20473 bl = fn2(bl, cl, dl, el, al, m[14], 0x5a827999, 7); dl = rotl(dl, 10)
20474 al = fn2(al, bl, cl, dl, el, m[11], 0x5a827999, 13); cl = rotl(cl, 10)
20475 el = fn2(el, al, bl, cl, dl, m[8], 0x5a827999, 12); bl = rotl(bl, 10)
20476
20477 // Mj = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12
20478 // K = 0x6ed9eba1
20479 // Sj = 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5
20480 dl = fn3(dl, el, al, bl, cl, m[3], 0x6ed9eba1, 11); al = rotl(al, 10)
20481 cl = fn3(cl, dl, el, al, bl, m[10], 0x6ed9eba1, 13); el = rotl(el, 10)
20482 bl = fn3(bl, cl, dl, el, al, m[14], 0x6ed9eba1, 6); dl = rotl(dl, 10)
20483 al = fn3(al, bl, cl, dl, el, m[4], 0x6ed9eba1, 7); cl = rotl(cl, 10)
20484 el = fn3(el, al, bl, cl, dl, m[9], 0x6ed9eba1, 14); bl = rotl(bl, 10)
20485 dl = fn3(dl, el, al, bl, cl, m[15], 0x6ed9eba1, 9); al = rotl(al, 10)
20486 cl = fn3(cl, dl, el, al, bl, m[8], 0x6ed9eba1, 13); el = rotl(el, 10)
20487 bl = fn3(bl, cl, dl, el, al, m[1], 0x6ed9eba1, 15); dl = rotl(dl, 10)
20488 al = fn3(al, bl, cl, dl, el, m[2], 0x6ed9eba1, 14); cl = rotl(cl, 10)
20489 el = fn3(el, al, bl, cl, dl, m[7], 0x6ed9eba1, 8); bl = rotl(bl, 10)
20490 dl = fn3(dl, el, al, bl, cl, m[0], 0x6ed9eba1, 13); al = rotl(al, 10)
20491 cl = fn3(cl, dl, el, al, bl, m[6], 0x6ed9eba1, 6); el = rotl(el, 10)
20492 bl = fn3(bl, cl, dl, el, al, m[13], 0x6ed9eba1, 5); dl = rotl(dl, 10)
20493 al = fn3(al, bl, cl, dl, el, m[11], 0x6ed9eba1, 12); cl = rotl(cl, 10)
20494 el = fn3(el, al, bl, cl, dl, m[5], 0x6ed9eba1, 7); bl = rotl(bl, 10)
20495 dl = fn3(dl, el, al, bl, cl, m[12], 0x6ed9eba1, 5); al = rotl(al, 10)
20496
20497 // Mj = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2
20498 // K = 0x8f1bbcdc
20499 // Sj = 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12
20500 cl = fn4(cl, dl, el, al, bl, m[1], 0x8f1bbcdc, 11); el = rotl(el, 10)
20501 bl = fn4(bl, cl, dl, el, al, m[9], 0x8f1bbcdc, 12); dl = rotl(dl, 10)
20502 al = fn4(al, bl, cl, dl, el, m[11], 0x8f1bbcdc, 14); cl = rotl(cl, 10)
20503 el = fn4(el, al, bl, cl, dl, m[10], 0x8f1bbcdc, 15); bl = rotl(bl, 10)
20504 dl = fn4(dl, el, al, bl, cl, m[0], 0x8f1bbcdc, 14); al = rotl(al, 10)
20505 cl = fn4(cl, dl, el, al, bl, m[8], 0x8f1bbcdc, 15); el = rotl(el, 10)
20506 bl = fn4(bl, cl, dl, el, al, m[12], 0x8f1bbcdc, 9); dl = rotl(dl, 10)
20507 al = fn4(al, bl, cl, dl, el, m[4], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
20508 el = fn4(el, al, bl, cl, dl, m[13], 0x8f1bbcdc, 9); bl = rotl(bl, 10)
20509 dl = fn4(dl, el, al, bl, cl, m[3], 0x8f1bbcdc, 14); al = rotl(al, 10)
20510 cl = fn4(cl, dl, el, al, bl, m[7], 0x8f1bbcdc, 5); el = rotl(el, 10)
20511 bl = fn4(bl, cl, dl, el, al, m[15], 0x8f1bbcdc, 6); dl = rotl(dl, 10)
20512 al = fn4(al, bl, cl, dl, el, m[14], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
20513 el = fn4(el, al, bl, cl, dl, m[5], 0x8f1bbcdc, 6); bl = rotl(bl, 10)
20514 dl = fn4(dl, el, al, bl, cl, m[6], 0x8f1bbcdc, 5); al = rotl(al, 10)
20515 cl = fn4(cl, dl, el, al, bl, m[2], 0x8f1bbcdc, 12); el = rotl(el, 10)
20516
20517 // Mj = 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
20518 // K = 0xa953fd4e
20519 // Sj = 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
20520 bl = fn5(bl, cl, dl, el, al, m[4], 0xa953fd4e, 9); dl = rotl(dl, 10)
20521 al = fn5(al, bl, cl, dl, el, m[0], 0xa953fd4e, 15); cl = rotl(cl, 10)
20522 el = fn5(el, al, bl, cl, dl, m[5], 0xa953fd4e, 5); bl = rotl(bl, 10)
20523 dl = fn5(dl, el, al, bl, cl, m[9], 0xa953fd4e, 11); al = rotl(al, 10)
20524 cl = fn5(cl, dl, el, al, bl, m[7], 0xa953fd4e, 6); el = rotl(el, 10)
20525 bl = fn5(bl, cl, dl, el, al, m[12], 0xa953fd4e, 8); dl = rotl(dl, 10)
20526 al = fn5(al, bl, cl, dl, el, m[2], 0xa953fd4e, 13); cl = rotl(cl, 10)
20527 el = fn5(el, al, bl, cl, dl, m[10], 0xa953fd4e, 12); bl = rotl(bl, 10)
20528 dl = fn5(dl, el, al, bl, cl, m[14], 0xa953fd4e, 5); al = rotl(al, 10)
20529 cl = fn5(cl, dl, el, al, bl, m[1], 0xa953fd4e, 12); el = rotl(el, 10)
20530 bl = fn5(bl, cl, dl, el, al, m[3], 0xa953fd4e, 13); dl = rotl(dl, 10)
20531 al = fn5(al, bl, cl, dl, el, m[8], 0xa953fd4e, 14); cl = rotl(cl, 10)
20532 el = fn5(el, al, bl, cl, dl, m[11], 0xa953fd4e, 11); bl = rotl(bl, 10)
20533 dl = fn5(dl, el, al, bl, cl, m[6], 0xa953fd4e, 8); al = rotl(al, 10)
20534 cl = fn5(cl, dl, el, al, bl, m[15], 0xa953fd4e, 5); el = rotl(el, 10)
20535 bl = fn5(bl, cl, dl, el, al, m[13], 0xa953fd4e, 6); dl = rotl(dl, 10)
20536
20537 var ar = this._a
20538 var br = this._b
20539 var cr = this._c
20540 var dr = this._d
20541 var er = this._e
20542
20543 // M'j = 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12
20544 // K' = 0x50a28be6
20545 // S'j = 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6
20546 ar = fn5(ar, br, cr, dr, er, m[5], 0x50a28be6, 8); cr = rotl(cr, 10)
20547 er = fn5(er, ar, br, cr, dr, m[14], 0x50a28be6, 9); br = rotl(br, 10)
20548 dr = fn5(dr, er, ar, br, cr, m[7], 0x50a28be6, 9); ar = rotl(ar, 10)
20549 cr = fn5(cr, dr, er, ar, br, m[0], 0x50a28be6, 11); er = rotl(er, 10)
20550 br = fn5(br, cr, dr, er, ar, m[9], 0x50a28be6, 13); dr = rotl(dr, 10)
20551 ar = fn5(ar, br, cr, dr, er, m[2], 0x50a28be6, 15); cr = rotl(cr, 10)
20552 er = fn5(er, ar, br, cr, dr, m[11], 0x50a28be6, 15); br = rotl(br, 10)
20553 dr = fn5(dr, er, ar, br, cr, m[4], 0x50a28be6, 5); ar = rotl(ar, 10)
20554 cr = fn5(cr, dr, er, ar, br, m[13], 0x50a28be6, 7); er = rotl(er, 10)
20555 br = fn5(br, cr, dr, er, ar, m[6], 0x50a28be6, 7); dr = rotl(dr, 10)
20556 ar = fn5(ar, br, cr, dr, er, m[15], 0x50a28be6, 8); cr = rotl(cr, 10)
20557 er = fn5(er, ar, br, cr, dr, m[8], 0x50a28be6, 11); br = rotl(br, 10)
20558 dr = fn5(dr, er, ar, br, cr, m[1], 0x50a28be6, 14); ar = rotl(ar, 10)
20559 cr = fn5(cr, dr, er, ar, br, m[10], 0x50a28be6, 14); er = rotl(er, 10)
20560 br = fn5(br, cr, dr, er, ar, m[3], 0x50a28be6, 12); dr = rotl(dr, 10)
20561 ar = fn5(ar, br, cr, dr, er, m[12], 0x50a28be6, 6); cr = rotl(cr, 10)
20562
20563 // M'j = 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2
20564 // K' = 0x5c4dd124
20565 // S'j = 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11
20566 er = fn4(er, ar, br, cr, dr, m[6], 0x5c4dd124, 9); br = rotl(br, 10)
20567 dr = fn4(dr, er, ar, br, cr, m[11], 0x5c4dd124, 13); ar = rotl(ar, 10)
20568 cr = fn4(cr, dr, er, ar, br, m[3], 0x5c4dd124, 15); er = rotl(er, 10)
20569 br = fn4(br, cr, dr, er, ar, m[7], 0x5c4dd124, 7); dr = rotl(dr, 10)
20570 ar = fn4(ar, br, cr, dr, er, m[0], 0x5c4dd124, 12); cr = rotl(cr, 10)
20571 er = fn4(er, ar, br, cr, dr, m[13], 0x5c4dd124, 8); br = rotl(br, 10)
20572 dr = fn4(dr, er, ar, br, cr, m[5], 0x5c4dd124, 9); ar = rotl(ar, 10)
20573 cr = fn4(cr, dr, er, ar, br, m[10], 0x5c4dd124, 11); er = rotl(er, 10)
20574 br = fn4(br, cr, dr, er, ar, m[14], 0x5c4dd124, 7); dr = rotl(dr, 10)
20575 ar = fn4(ar, br, cr, dr, er, m[15], 0x5c4dd124, 7); cr = rotl(cr, 10)
20576 er = fn4(er, ar, br, cr, dr, m[8], 0x5c4dd124, 12); br = rotl(br, 10)
20577 dr = fn4(dr, er, ar, br, cr, m[12], 0x5c4dd124, 7); ar = rotl(ar, 10)
20578 cr = fn4(cr, dr, er, ar, br, m[4], 0x5c4dd124, 6); er = rotl(er, 10)
20579 br = fn4(br, cr, dr, er, ar, m[9], 0x5c4dd124, 15); dr = rotl(dr, 10)
20580 ar = fn4(ar, br, cr, dr, er, m[1], 0x5c4dd124, 13); cr = rotl(cr, 10)
20581 er = fn4(er, ar, br, cr, dr, m[2], 0x5c4dd124, 11); br = rotl(br, 10)
20582
20583 // M'j = 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13
20584 // K' = 0x6d703ef3
20585 // S'j = 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5
20586 dr = fn3(dr, er, ar, br, cr, m[15], 0x6d703ef3, 9); ar = rotl(ar, 10)
20587 cr = fn3(cr, dr, er, ar, br, m[5], 0x6d703ef3, 7); er = rotl(er, 10)
20588 br = fn3(br, cr, dr, er, ar, m[1], 0x6d703ef3, 15); dr = rotl(dr, 10)
20589 ar = fn3(ar, br, cr, dr, er, m[3], 0x6d703ef3, 11); cr = rotl(cr, 10)
20590 er = fn3(er, ar, br, cr, dr, m[7], 0x6d703ef3, 8); br = rotl(br, 10)
20591 dr = fn3(dr, er, ar, br, cr, m[14], 0x6d703ef3, 6); ar = rotl(ar, 10)
20592 cr = fn3(cr, dr, er, ar, br, m[6], 0x6d703ef3, 6); er = rotl(er, 10)
20593 br = fn3(br, cr, dr, er, ar, m[9], 0x6d703ef3, 14); dr = rotl(dr, 10)
20594 ar = fn3(ar, br, cr, dr, er, m[11], 0x6d703ef3, 12); cr = rotl(cr, 10)
20595 er = fn3(er, ar, br, cr, dr, m[8], 0x6d703ef3, 13); br = rotl(br, 10)
20596 dr = fn3(dr, er, ar, br, cr, m[12], 0x6d703ef3, 5); ar = rotl(ar, 10)
20597 cr = fn3(cr, dr, er, ar, br, m[2], 0x6d703ef3, 14); er = rotl(er, 10)
20598 br = fn3(br, cr, dr, er, ar, m[10], 0x6d703ef3, 13); dr = rotl(dr, 10)
20599 ar = fn3(ar, br, cr, dr, er, m[0], 0x6d703ef3, 13); cr = rotl(cr, 10)
20600 er = fn3(er, ar, br, cr, dr, m[4], 0x6d703ef3, 7); br = rotl(br, 10)
20601 dr = fn3(dr, er, ar, br, cr, m[13], 0x6d703ef3, 5); ar = rotl(ar, 10)
20602
20603 // M'j = 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14
20604 // K' = 0x7a6d76e9
20605 // S'j = 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8
20606 cr = fn2(cr, dr, er, ar, br, m[8], 0x7a6d76e9, 15); er = rotl(er, 10)
20607 br = fn2(br, cr, dr, er, ar, m[6], 0x7a6d76e9, 5); dr = rotl(dr, 10)
20608 ar = fn2(ar, br, cr, dr, er, m[4], 0x7a6d76e9, 8); cr = rotl(cr, 10)
20609 er = fn2(er, ar, br, cr, dr, m[1], 0x7a6d76e9, 11); br = rotl(br, 10)
20610 dr = fn2(dr, er, ar, br, cr, m[3], 0x7a6d76e9, 14); ar = rotl(ar, 10)
20611 cr = fn2(cr, dr, er, ar, br, m[11], 0x7a6d76e9, 14); er = rotl(er, 10)
20612 br = fn2(br, cr, dr, er, ar, m[15], 0x7a6d76e9, 6); dr = rotl(dr, 10)
20613 ar = fn2(ar, br, cr, dr, er, m[0], 0x7a6d76e9, 14); cr = rotl(cr, 10)
20614 er = fn2(er, ar, br, cr, dr, m[5], 0x7a6d76e9, 6); br = rotl(br, 10)
20615 dr = fn2(dr, er, ar, br, cr, m[12], 0x7a6d76e9, 9); ar = rotl(ar, 10)
20616 cr = fn2(cr, dr, er, ar, br, m[2], 0x7a6d76e9, 12); er = rotl(er, 10)
20617 br = fn2(br, cr, dr, er, ar, m[13], 0x7a6d76e9, 9); dr = rotl(dr, 10)
20618 ar = fn2(ar, br, cr, dr, er, m[9], 0x7a6d76e9, 12); cr = rotl(cr, 10)
20619 er = fn2(er, ar, br, cr, dr, m[7], 0x7a6d76e9, 5); br = rotl(br, 10)
20620 dr = fn2(dr, er, ar, br, cr, m[10], 0x7a6d76e9, 15); ar = rotl(ar, 10)
20621 cr = fn2(cr, dr, er, ar, br, m[14], 0x7a6d76e9, 8); er = rotl(er, 10)
20622
20623 // M'j = 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
20624 // K' = 0x00000000
20625 // S'j = 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
20626 br = fn1(br, cr, dr, er, ar, m[12], 0x00000000, 8); dr = rotl(dr, 10)
20627 ar = fn1(ar, br, cr, dr, er, m[15], 0x00000000, 5); cr = rotl(cr, 10)
20628 er = fn1(er, ar, br, cr, dr, m[10], 0x00000000, 12); br = rotl(br, 10)
20629 dr = fn1(dr, er, ar, br, cr, m[4], 0x00000000, 9); ar = rotl(ar, 10)
20630 cr = fn1(cr, dr, er, ar, br, m[1], 0x00000000, 12); er = rotl(er, 10)
20631 br = fn1(br, cr, dr, er, ar, m[5], 0x00000000, 5); dr = rotl(dr, 10)
20632 ar = fn1(ar, br, cr, dr, er, m[8], 0x00000000, 14); cr = rotl(cr, 10)
20633 er = fn1(er, ar, br, cr, dr, m[7], 0x00000000, 6); br = rotl(br, 10)
20634 dr = fn1(dr, er, ar, br, cr, m[6], 0x00000000, 8); ar = rotl(ar, 10)
20635 cr = fn1(cr, dr, er, ar, br, m[2], 0x00000000, 13); er = rotl(er, 10)
20636 br = fn1(br, cr, dr, er, ar, m[13], 0x00000000, 6); dr = rotl(dr, 10)
20637 ar = fn1(ar, br, cr, dr, er, m[14], 0x00000000, 5); cr = rotl(cr, 10)
20638 er = fn1(er, ar, br, cr, dr, m[0], 0x00000000, 15); br = rotl(br, 10)
20639 dr = fn1(dr, er, ar, br, cr, m[3], 0x00000000, 13); ar = rotl(ar, 10)
20640 cr = fn1(cr, dr, er, ar, br, m[9], 0x00000000, 11); er = rotl(er, 10)
20641 br = fn1(br, cr, dr, er, ar, m[11], 0x00000000, 11); dr = rotl(dr, 10)
20642
20643 // change state
20644 var t = (this._b + cl + dr) | 0
20645 this._b = (this._c + dl + er) | 0
20646 this._c = (this._d + el + ar) | 0
20647 this._d = (this._e + al + br) | 0
20648 this._e = (this._a + bl + cr) | 0
20649 this._a = t
20650 }
20651
20652 RIPEMD160.prototype._digest = function () {
20653 // create padding and handle blocks
20654 this._block[this._blockOffset++] = 0x80
20655 if (this._blockOffset > 56) {
20656 this._block.fill(0, this._blockOffset, 64)
20657 this._update()
20658 this._blockOffset = 0
20659 }
20660
20661 this._block.fill(0, this._blockOffset, 56)
20662 this._block.writeUInt32LE(this._length[0], 56)
20663 this._block.writeUInt32LE(this._length[1], 60)
20664 this._update()
20665
20666 // produce result
20667 var buffer = new Buffer(20)
20668 buffer.writeInt32LE(this._a, 0)
20669 buffer.writeInt32LE(this._b, 4)
20670 buffer.writeInt32LE(this._c, 8)
20671 buffer.writeInt32LE(this._d, 12)
20672 buffer.writeInt32LE(this._e, 16)
20673 return buffer
20674 }
20675
20676 function rotl (x, n) {
20677 return (x << n) | (x >>> (32 - n))
20678 }
20679
20680 function fn1 (a, b, c, d, e, m, k, s) {
20681 return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0
20682 }
20683
20684 function fn2 (a, b, c, d, e, m, k, s) {
20685 return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0
20686 }
20687
20688 function fn3 (a, b, c, d, e, m, k, s) {
20689 return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0
20690 }
20691
20692 function fn4 (a, b, c, d, e, m, k, s) {
20693 return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0
20694 }
20695
20696 function fn5 (a, b, c, d, e, m, k, s) {
20697 return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0
20698 }
20699
20700 module.exports = RIPEMD160
20701
20702 }).call(this,require("buffer").Buffer)
20703 },{"buffer":4,"hash-base":92,"inherits":93}],98:[function(require,module,exports){
20704 arguments[4][26][0].apply(exports,arguments)
20705 },{"buffer":4,"dup":26}],99:[function(require,module,exports){
20706 (function (Buffer){
20707 // prototype class for hash functions
20708 function Hash (blockSize, finalSize) {
20709 this._block = new Buffer(blockSize)
20710 this._finalSize = finalSize
20711 this._blockSize = blockSize
20712 this._len = 0
20713 this._s = 0
20714 }
20715
20716 Hash.prototype.update = function (data, enc) {
20717 if (typeof data === 'string') {
20718 enc = enc || 'utf8'
20719 data = new Buffer(data, enc)
20720 }
20721
20722 var l = this._len += data.length
20723 var s = this._s || 0
20724 var f = 0
20725 var buffer = this._block
20726
20727 while (s < l) {
20728 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
20729 var ch = (t - f)
20730
20731 for (var i = 0; i < ch; i++) {
20732 buffer[(s % this._blockSize) + i] = data[i + f]
20733 }
20734
20735 s += ch
20736 f += ch
20737
20738 if ((s % this._blockSize) === 0) {
20739 this._update(buffer)
20740 }
20741 }
20742 this._s = s
20743
20744 return this
20745 }
20746
20747 Hash.prototype.digest = function (enc) {
20748 // Suppose the length of the message M, in bits, is l
20749 var l = this._len * 8
20750
20751 // Append the bit 1 to the end of the message
20752 this._block[this._len % this._blockSize] = 0x80
20753
20754 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
20755 this._block.fill(0, this._len % this._blockSize + 1)
20756
20757 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
20758 this._update(this._block)
20759 this._block.fill(0)
20760 }
20761
20762 // to this append the block which is equal to the number l written in binary
20763 // TODO: handle case where l is > Math.pow(2, 29)
20764 this._block.writeInt32BE(l, this._blockSize - 4)
20765
20766 var hash = this._update(this._block) || this._hash()
20767
20768 return enc ? hash.toString(enc) : hash
20769 }
20770
20771 Hash.prototype._update = function () {
20772 throw new Error('_update must be implemented by subclass')
20773 }
20774
20775 module.exports = Hash
20776
20777 }).call(this,require("buffer").Buffer)
20778 },{"buffer":4}],100:[function(require,module,exports){
20779 var exports = module.exports = function SHA (algorithm) {
20780 algorithm = algorithm.toLowerCase()
20781
20782 var Algorithm = exports[algorithm]
20783 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
20784
20785 return new Algorithm()
20786 }
20787
20788 exports.sha = require('./sha')
20789 exports.sha1 = require('./sha1')
20790 exports.sha224 = require('./sha224')
20791 exports.sha256 = require('./sha256')
20792 exports.sha384 = require('./sha384')
20793 exports.sha512 = require('./sha512')
20794
20795 },{"./sha":101,"./sha1":102,"./sha224":103,"./sha256":104,"./sha384":105,"./sha512":106}],101:[function(require,module,exports){
20796 (function (Buffer){
20797 /*
20798 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
20799 * in FIPS PUB 180-1
20800 * This source code is derived from sha1.js of the same repository.
20801 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
20802 * operation was added.
20803 */
20804
20805 var inherits = require('inherits')
20806 var Hash = require('./hash')
20807
20808 var K = [
20809 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
20810 ]
20811
20812 var W = new Array(80)
20813
20814 function Sha () {
20815 this.init()
20816 this._w = W
20817
20818 Hash.call(this, 64, 56)
20819 }
20820
20821 inherits(Sha, Hash)
20822
20823 Sha.prototype.init = function () {
20824 this._a = 0x67452301
20825 this._b = 0xefcdab89
20826 this._c = 0x98badcfe
20827 this._d = 0x10325476
20828 this._e = 0xc3d2e1f0
20829
20830 return this
20831 }
20832
20833 function rotl5 (num) {
20834 return (num << 5) | (num >>> 27)
20835 }
20836
20837 function rotl30 (num) {
20838 return (num << 30) | (num >>> 2)
20839 }
20840
20841 function ft (s, b, c, d) {
20842 if (s === 0) return (b & c) | ((~b) & d)
20843 if (s === 2) return (b & c) | (b & d) | (c & d)
20844 return b ^ c ^ d
20845 }
20846
20847 Sha.prototype._update = function (M) {
20848 var W = this._w
20849
20850 var a = this._a | 0
20851 var b = this._b | 0
20852 var c = this._c | 0
20853 var d = this._d | 0
20854 var e = this._e | 0
20855
20856 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
20857 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
20858
20859 for (var j = 0; j < 80; ++j) {
20860 var s = ~~(j / 20)
20861 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
20862
20863 e = d
20864 d = c
20865 c = rotl30(b)
20866 b = a
20867 a = t
20868 }
20869
20870 this._a = (a + this._a) | 0
20871 this._b = (b + this._b) | 0
20872 this._c = (c + this._c) | 0
20873 this._d = (d + this._d) | 0
20874 this._e = (e + this._e) | 0
20875 }
20876
20877 Sha.prototype._hash = function () {
20878 var H = new Buffer(20)
20879
20880 H.writeInt32BE(this._a | 0, 0)
20881 H.writeInt32BE(this._b | 0, 4)
20882 H.writeInt32BE(this._c | 0, 8)
20883 H.writeInt32BE(this._d | 0, 12)
20884 H.writeInt32BE(this._e | 0, 16)
20885
20886 return H
20887 }
20888
20889 module.exports = Sha
20890
20891 }).call(this,require("buffer").Buffer)
20892 },{"./hash":99,"buffer":4,"inherits":93}],102:[function(require,module,exports){
20893 (function (Buffer){
20894 /*
20895 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
20896 * in FIPS PUB 180-1
20897 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
20898 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
20899 * Distributed under the BSD License
20900 * See http://pajhome.org.uk/crypt/md5 for details.
20901 */
20902
20903 var inherits = require('inherits')
20904 var Hash = require('./hash')
20905
20906 var K = [
20907 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
20908 ]
20909
20910 var W = new Array(80)
20911
20912 function Sha1 () {
20913 this.init()
20914 this._w = W
20915
20916 Hash.call(this, 64, 56)
20917 }
20918
20919 inherits(Sha1, Hash)
20920
20921 Sha1.prototype.init = function () {
20922 this._a = 0x67452301
20923 this._b = 0xefcdab89
20924 this._c = 0x98badcfe
20925 this._d = 0x10325476
20926 this._e = 0xc3d2e1f0
20927
20928 return this
20929 }
20930
20931 function rotl1 (num) {
20932 return (num << 1) | (num >>> 31)
20933 }
20934
20935 function rotl5 (num) {
20936 return (num << 5) | (num >>> 27)
20937 }
20938
20939 function rotl30 (num) {
20940 return (num << 30) | (num >>> 2)
20941 }
20942
20943 function ft (s, b, c, d) {
20944 if (s === 0) return (b & c) | ((~b) & d)
20945 if (s === 2) return (b & c) | (b & d) | (c & d)
20946 return b ^ c ^ d
20947 }
20948
20949 Sha1.prototype._update = function (M) {
20950 var W = this._w
20951
20952 var a = this._a | 0
20953 var b = this._b | 0
20954 var c = this._c | 0
20955 var d = this._d | 0
20956 var e = this._e | 0
20957
20958 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
20959 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
20960
20961 for (var j = 0; j < 80; ++j) {
20962 var s = ~~(j / 20)
20963 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
20964
20965 e = d
20966 d = c
20967 c = rotl30(b)
20968 b = a
20969 a = t
20970 }
20971
20972 this._a = (a + this._a) | 0
20973 this._b = (b + this._b) | 0
20974 this._c = (c + this._c) | 0
20975 this._d = (d + this._d) | 0
20976 this._e = (e + this._e) | 0
20977 }
20978
20979 Sha1.prototype._hash = function () {
20980 var H = new Buffer(20)
20981
20982 H.writeInt32BE(this._a | 0, 0)
20983 H.writeInt32BE(this._b | 0, 4)
20984 H.writeInt32BE(this._c | 0, 8)
20985 H.writeInt32BE(this._d | 0, 12)
20986 H.writeInt32BE(this._e | 0, 16)
20987
20988 return H
20989 }
20990
20991 module.exports = Sha1
20992
20993 }).call(this,require("buffer").Buffer)
20994 },{"./hash":99,"buffer":4,"inherits":93}],103:[function(require,module,exports){
20995 (function (Buffer){
20996 /**
20997 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
20998 * in FIPS 180-2
20999 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
21000 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
21001 *
21002 */
21003
21004 var inherits = require('inherits')
21005 var Sha256 = require('./sha256')
21006 var Hash = require('./hash')
21007
21008 var W = new Array(64)
21009
21010 function Sha224 () {
21011 this.init()
21012
21013 this._w = W // new Array(64)
21014
21015 Hash.call(this, 64, 56)
21016 }
21017
21018 inherits(Sha224, Sha256)
21019
21020 Sha224.prototype.init = function () {
21021 this._a = 0xc1059ed8
21022 this._b = 0x367cd507
21023 this._c = 0x3070dd17
21024 this._d = 0xf70e5939
21025 this._e = 0xffc00b31
21026 this._f = 0x68581511
21027 this._g = 0x64f98fa7
21028 this._h = 0xbefa4fa4
21029
21030 return this
21031 }
21032
21033 Sha224.prototype._hash = function () {
21034 var H = new Buffer(28)
21035
21036 H.writeInt32BE(this._a, 0)
21037 H.writeInt32BE(this._b, 4)
21038 H.writeInt32BE(this._c, 8)
21039 H.writeInt32BE(this._d, 12)
21040 H.writeInt32BE(this._e, 16)
21041 H.writeInt32BE(this._f, 20)
21042 H.writeInt32BE(this._g, 24)
21043
21044 return H
21045 }
21046
21047 module.exports = Sha224
21048
21049 }).call(this,require("buffer").Buffer)
21050 },{"./hash":99,"./sha256":104,"buffer":4,"inherits":93}],104:[function(require,module,exports){
21051 (function (Buffer){
21052 /**
21053 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
21054 * in FIPS 180-2
21055 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
21056 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
21057 *
21058 */
21059
21060 var inherits = require('inherits')
21061 var Hash = require('./hash')
21062
21063 var K = [
21064 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
21065 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
21066 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
21067 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
21068 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
21069 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
21070 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
21071 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
21072 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
21073 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
21074 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
21075 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
21076 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
21077 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
21078 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
21079 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
21080 ]
21081
21082 var W = new Array(64)
21083
21084 function Sha256 () {
21085 this.init()
21086
21087 this._w = W // new Array(64)
21088
21089 Hash.call(this, 64, 56)
21090 }
21091
21092 inherits(Sha256, Hash)
21093
21094 Sha256.prototype.init = function () {
21095 this._a = 0x6a09e667
21096 this._b = 0xbb67ae85
21097 this._c = 0x3c6ef372
21098 this._d = 0xa54ff53a
21099 this._e = 0x510e527f
21100 this._f = 0x9b05688c
21101 this._g = 0x1f83d9ab
21102 this._h = 0x5be0cd19
21103
21104 return this
21105 }
21106
21107 function ch (x, y, z) {
21108 return z ^ (x & (y ^ z))
21109 }
21110
21111 function maj (x, y, z) {
21112 return (x & y) | (z & (x | y))
21113 }
21114
21115 function sigma0 (x) {
21116 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
21117 }
21118
21119 function sigma1 (x) {
21120 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
21121 }
21122
21123 function gamma0 (x) {
21124 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
21125 }
21126
21127 function gamma1 (x) {
21128 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
21129 }
21130
21131 Sha256.prototype._update = function (M) {
21132 var W = this._w
21133
21134 var a = this._a | 0
21135 var b = this._b | 0
21136 var c = this._c | 0
21137 var d = this._d | 0
21138 var e = this._e | 0
21139 var f = this._f | 0
21140 var g = this._g | 0
21141 var h = this._h | 0
21142
21143 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
21144 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
21145
21146 for (var j = 0; j < 64; ++j) {
21147 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
21148 var T2 = (sigma0(a) + maj(a, b, c)) | 0
21149
21150 h = g
21151 g = f
21152 f = e
21153 e = (d + T1) | 0
21154 d = c
21155 c = b
21156 b = a
21157 a = (T1 + T2) | 0
21158 }
21159
21160 this._a = (a + this._a) | 0
21161 this._b = (b + this._b) | 0
21162 this._c = (c + this._c) | 0
21163 this._d = (d + this._d) | 0
21164 this._e = (e + this._e) | 0
21165 this._f = (f + this._f) | 0
21166 this._g = (g + this._g) | 0
21167 this._h = (h + this._h) | 0
21168 }
21169
21170 Sha256.prototype._hash = function () {
21171 var H = new Buffer(32)
21172
21173 H.writeInt32BE(this._a, 0)
21174 H.writeInt32BE(this._b, 4)
21175 H.writeInt32BE(this._c, 8)
21176 H.writeInt32BE(this._d, 12)
21177 H.writeInt32BE(this._e, 16)
21178 H.writeInt32BE(this._f, 20)
21179 H.writeInt32BE(this._g, 24)
21180 H.writeInt32BE(this._h, 28)
21181
21182 return H
21183 }
21184
21185 module.exports = Sha256
21186
21187 }).call(this,require("buffer").Buffer)
21188 },{"./hash":99,"buffer":4,"inherits":93}],105:[function(require,module,exports){
21189 (function (Buffer){
21190 var inherits = require('inherits')
21191 var SHA512 = require('./sha512')
21192 var Hash = require('./hash')
21193
21194 var W = new Array(160)
21195
21196 function Sha384 () {
21197 this.init()
21198 this._w = W
21199
21200 Hash.call(this, 128, 112)
21201 }
21202
21203 inherits(Sha384, SHA512)
21204
21205 Sha384.prototype.init = function () {
21206 this._ah = 0xcbbb9d5d
21207 this._bh = 0x629a292a
21208 this._ch = 0x9159015a
21209 this._dh = 0x152fecd8
21210 this._eh = 0x67332667
21211 this._fh = 0x8eb44a87
21212 this._gh = 0xdb0c2e0d
21213 this._hh = 0x47b5481d
21214
21215 this._al = 0xc1059ed8
21216 this._bl = 0x367cd507
21217 this._cl = 0x3070dd17
21218 this._dl = 0xf70e5939
21219 this._el = 0xffc00b31
21220 this._fl = 0x68581511
21221 this._gl = 0x64f98fa7
21222 this._hl = 0xbefa4fa4
21223
21224 return this
21225 }
21226
21227 Sha384.prototype._hash = function () {
21228 var H = new Buffer(48)
21229
21230 function writeInt64BE (h, l, offset) {
21231 H.writeInt32BE(h, offset)
21232 H.writeInt32BE(l, offset + 4)
21233 }
21234
21235 writeInt64BE(this._ah, this._al, 0)
21236 writeInt64BE(this._bh, this._bl, 8)
21237 writeInt64BE(this._ch, this._cl, 16)
21238 writeInt64BE(this._dh, this._dl, 24)
21239 writeInt64BE(this._eh, this._el, 32)
21240 writeInt64BE(this._fh, this._fl, 40)
21241
21242 return H
21243 }
21244
21245 module.exports = Sha384
21246
21247 }).call(this,require("buffer").Buffer)
21248 },{"./hash":99,"./sha512":106,"buffer":4,"inherits":93}],106:[function(require,module,exports){
21249 (function (Buffer){
21250 var inherits = require('inherits')
21251 var Hash = require('./hash')
21252
21253 var K = [
21254 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
21255 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
21256 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
21257 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
21258 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
21259 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
21260 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
21261 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
21262 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
21263 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
21264 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
21265 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
21266 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
21267 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
21268 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
21269 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
21270 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
21271 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
21272 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
21273 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
21274 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
21275 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
21276 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
21277 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
21278 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
21279 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
21280 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
21281 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
21282 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
21283 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
21284 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
21285 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
21286 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
21287 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
21288 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
21289 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
21290 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
21291 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
21292 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
21293 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
21294 ]
21295
21296 var W = new Array(160)
21297
21298 function Sha512 () {
21299 this.init()
21300 this._w = W
21301
21302 Hash.call(this, 128, 112)
21303 }
21304
21305 inherits(Sha512, Hash)
21306
21307 Sha512.prototype.init = function () {
21308 this._ah = 0x6a09e667
21309 this._bh = 0xbb67ae85
21310 this._ch = 0x3c6ef372
21311 this._dh = 0xa54ff53a
21312 this._eh = 0x510e527f
21313 this._fh = 0x9b05688c
21314 this._gh = 0x1f83d9ab
21315 this._hh = 0x5be0cd19
21316
21317 this._al = 0xf3bcc908
21318 this._bl = 0x84caa73b
21319 this._cl = 0xfe94f82b
21320 this._dl = 0x5f1d36f1
21321 this._el = 0xade682d1
21322 this._fl = 0x2b3e6c1f
21323 this._gl = 0xfb41bd6b
21324 this._hl = 0x137e2179
21325
21326 return this
21327 }
21328
21329 function Ch (x, y, z) {
21330 return z ^ (x & (y ^ z))
21331 }
21332
21333 function maj (x, y, z) {
21334 return (x & y) | (z & (x | y))
21335 }
21336
21337 function sigma0 (x, xl) {
21338 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
21339 }
21340
21341 function sigma1 (x, xl) {
21342 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
21343 }
21344
21345 function Gamma0 (x, xl) {
21346 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
21347 }
21348
21349 function Gamma0l (x, xl) {
21350 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
21351 }
21352
21353 function Gamma1 (x, xl) {
21354 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
21355 }
21356
21357 function Gamma1l (x, xl) {
21358 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
21359 }
21360
21361 function getCarry (a, b) {
21362 return (a >>> 0) < (b >>> 0) ? 1 : 0
21363 }
21364
21365 Sha512.prototype._update = function (M) {
21366 var W = this._w
21367
21368 var ah = this._ah | 0
21369 var bh = this._bh | 0
21370 var ch = this._ch | 0
21371 var dh = this._dh | 0
21372 var eh = this._eh | 0
21373 var fh = this._fh | 0
21374 var gh = this._gh | 0
21375 var hh = this._hh | 0
21376
21377 var al = this._al | 0
21378 var bl = this._bl | 0
21379 var cl = this._cl | 0
21380 var dl = this._dl | 0
21381 var el = this._el | 0
21382 var fl = this._fl | 0
21383 var gl = this._gl | 0
21384 var hl = this._hl | 0
21385
21386 for (var i = 0; i < 32; i += 2) {
21387 W[i] = M.readInt32BE(i * 4)
21388 W[i + 1] = M.readInt32BE(i * 4 + 4)
21389 }
21390 for (; i < 160; i += 2) {
21391 var xh = W[i - 15 * 2]
21392 var xl = W[i - 15 * 2 + 1]
21393 var gamma0 = Gamma0(xh, xl)
21394 var gamma0l = Gamma0l(xl, xh)
21395
21396 xh = W[i - 2 * 2]
21397 xl = W[i - 2 * 2 + 1]
21398 var gamma1 = Gamma1(xh, xl)
21399 var gamma1l = Gamma1l(xl, xh)
21400
21401 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
21402 var Wi7h = W[i - 7 * 2]
21403 var Wi7l = W[i - 7 * 2 + 1]
21404
21405 var Wi16h = W[i - 16 * 2]
21406 var Wi16l = W[i - 16 * 2 + 1]
21407
21408 var Wil = (gamma0l + Wi7l) | 0
21409 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
21410 Wil = (Wil + gamma1l) | 0
21411 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
21412 Wil = (Wil + Wi16l) | 0
21413 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
21414
21415 W[i] = Wih
21416 W[i + 1] = Wil
21417 }
21418
21419 for (var j = 0; j < 160; j += 2) {
21420 Wih = W[j]
21421 Wil = W[j + 1]
21422
21423 var majh = maj(ah, bh, ch)
21424 var majl = maj(al, bl, cl)
21425
21426 var sigma0h = sigma0(ah, al)
21427 var sigma0l = sigma0(al, ah)
21428 var sigma1h = sigma1(eh, el)
21429 var sigma1l = sigma1(el, eh)
21430
21431 // t1 = h + sigma1 + ch + K[j] + W[j]
21432 var Kih = K[j]
21433 var Kil = K[j + 1]
21434
21435 var chh = Ch(eh, fh, gh)
21436 var chl = Ch(el, fl, gl)
21437
21438 var t1l = (hl + sigma1l) | 0
21439 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
21440 t1l = (t1l + chl) | 0
21441 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
21442 t1l = (t1l + Kil) | 0
21443 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
21444 t1l = (t1l + Wil) | 0
21445 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
21446
21447 // t2 = sigma0 + maj
21448 var t2l = (sigma0l + majl) | 0
21449 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
21450
21451 hh = gh
21452 hl = gl
21453 gh = fh
21454 gl = fl
21455 fh = eh
21456 fl = el
21457 el = (dl + t1l) | 0
21458 eh = (dh + t1h + getCarry(el, dl)) | 0
21459 dh = ch
21460 dl = cl
21461 ch = bh
21462 cl = bl
21463 bh = ah
21464 bl = al
21465 al = (t1l + t2l) | 0
21466 ah = (t1h + t2h + getCarry(al, t1l)) | 0
21467 }
21468
21469 this._al = (this._al + al) | 0
21470 this._bl = (this._bl + bl) | 0
21471 this._cl = (this._cl + cl) | 0
21472 this._dl = (this._dl + dl) | 0
21473 this._el = (this._el + el) | 0
21474 this._fl = (this._fl + fl) | 0
21475 this._gl = (this._gl + gl) | 0
21476 this._hl = (this._hl + hl) | 0
21477
21478 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
21479 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
21480 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
21481 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
21482 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
21483 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
21484 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
21485 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
21486 }
21487
21488 Sha512.prototype._hash = function () {
21489 var H = new Buffer(64)
21490
21491 function writeInt64BE (h, l, offset) {
21492 H.writeInt32BE(h, offset)
21493 H.writeInt32BE(l, offset + 4)
21494 }
21495
21496 writeInt64BE(this._ah, this._al, 0)
21497 writeInt64BE(this._bh, this._bl, 8)
21498 writeInt64BE(this._ch, this._cl, 16)
21499 writeInt64BE(this._dh, this._dl, 24)
21500 writeInt64BE(this._eh, this._el, 32)
21501 writeInt64BE(this._fh, this._fl, 40)
21502 writeInt64BE(this._gh, this._gl, 48)
21503 writeInt64BE(this._hh, this._hl, 56)
21504
21505 return H
21506 }
21507
21508 module.exports = Sha512
21509
21510 }).call(this,require("buffer").Buffer)
21511 },{"./hash":99,"buffer":4,"inherits":93}],107:[function(require,module,exports){
21512 var inherits = require('inherits')
21513 var native = require('./native')
21514
21515 function TfTypeError (type, value, valueTypeName) {
21516 this.__error = Error.call(this)
21517 this.__type = type
21518 this.__value = value
21519 this.__valueTypeName = valueTypeName
21520
21521 var message
21522 Object.defineProperty(this, 'message', {
21523 enumerable: true,
21524 get: function () {
21525 if (message) return message
21526
21527 valueTypeName = valueTypeName || getValueTypeName(value)
21528 message = tfErrorString(type, value, valueTypeName)
21529
21530 return message
21531 }
21532 })
21533 }
21534
21535 function TfPropertyTypeError (type, property, label, value, error, valueTypeName) {
21536 this.__error = error || Error.call(this)
21537 this.__label = label
21538 this.__property = property
21539 this.__type = type
21540 this.__value = value
21541 this.__valueTypeName = valueTypeName
21542
21543 var message
21544 Object.defineProperty(this, 'message', {
21545 enumerable: true,
21546 get: function () {
21547 if (message) return message
21548 if (type) {
21549 valueTypeName = valueTypeName || getValueTypeName(value)
21550 message = tfPropertyErrorString(type, label, property, value, valueTypeName)
21551 } else {
21552 message = 'Unexpected property "' + property + '"'
21553 }
21554
21555 return message
21556 }
21557 })
21558 }
21559
21560 // inherit from Error, assign stack
21561 [TfTypeError, TfPropertyTypeError].forEach(function (tfErrorType) {
21562 inherits(tfErrorType, Error)
21563 Object.defineProperty(tfErrorType, 'stack', {
21564 get: function () { return this.__error.stack }
21565 })
21566 })
21567
21568 function tfCustomError (expected, actual) {
21569 return new TfTypeError(expected, {}, actual)
21570 }
21571
21572 function tfSubError (e, property, label) {
21573 // sub child?
21574 if (e instanceof TfPropertyTypeError) {
21575 property = property + '.' + e.__property
21576 label = e.__label
21577
21578 return new TfPropertyTypeError(
21579 e.__type, property, label, e.__value, e.__error, e.__valueTypeName
21580 )
21581 }
21582
21583 // child?
21584 if (e instanceof TfTypeError) {
21585 return new TfPropertyTypeError(
21586 e.__type, property, label, e.__value, e.__error, e.__valueTypeName
21587 )
21588 }
21589
21590 return e
21591 }
21592
21593 function getTypeName (fn) {
21594 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1]
21595 }
21596
21597 function getValueTypeName (value) {
21598 return native.Nil(value) ? '' : getTypeName(value.constructor)
21599 }
21600
21601 function getValue (value) {
21602 if (native.Function(value)) return ''
21603 if (native.String(value)) return JSON.stringify(value)
21604 if (value && native.Object(value)) return ''
21605 return value
21606 }
21607
21608 function tfJSON (type) {
21609 if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type)
21610 if (native.Array(type)) return 'Array'
21611 if (type && native.Object(type)) return 'Object'
21612
21613 return type !== undefined ? type : ''
21614 }
21615
21616 function tfErrorString (type, value, valueTypeName) {
21617 var valueJson = getValue(value)
21618
21619 return 'Expected ' + tfJSON(type) + ', got' +
21620 (valueTypeName !== '' ? ' ' + valueTypeName : '') +
21621 (valueJson !== '' ? ' ' + valueJson : '')
21622 }
21623
21624 function tfPropertyErrorString (type, label, name, value, valueTypeName) {
21625 var description = '" of type '
21626 if (label === 'key') description = '" with key type '
21627
21628 return tfErrorString('property "' + tfJSON(name) + description + tfJSON(type), value, valueTypeName)
21629 }
21630
21631 module.exports = {
21632 TfTypeError: TfTypeError,
21633 TfPropertyTypeError: TfPropertyTypeError,
21634 tfCustomError: tfCustomError,
21635 tfSubError: tfSubError,
21636 tfJSON: tfJSON,
21637 getValueTypeName: getValueTypeName
21638 }
21639
21640 },{"./native":110,"inherits":93}],108:[function(require,module,exports){
21641 (function (Buffer){
21642 var NATIVE = require('./native')
21643 var ERRORS = require('./errors')
21644
21645 function _Buffer (value) {
21646 return Buffer.isBuffer(value)
21647 }
21648
21649 function Hex (value) {
21650 return typeof value === 'string' && /^([0-9a-f]{2})+$/i.test(value)
21651 }
21652
21653 function _LengthN (type, length) {
21654 var name = type.toJSON()
21655
21656 function Length (value) {
21657 if (!type(value)) return false
21658 if (value.length === length) return true
21659
21660 throw ERRORS.tfCustomError(name + '(Length: ' + length + ')', name + '(Length: ' + value.length + ')')
21661 }
21662 Length.toJSON = function () { return name }
21663
21664 return Length
21665 }
21666
21667 var _ArrayN = _LengthN.bind(null, NATIVE.Array)
21668 var _BufferN = _LengthN.bind(null, _Buffer)
21669 var _HexN = _LengthN.bind(null, Hex)
21670
21671 var UINT53_MAX = Math.pow(2, 53) - 1
21672
21673 function Finite (value) {
21674 return typeof value === 'number' && isFinite(value)
21675 }
21676 function Int8 (value) { return ((value << 24) >> 24) === value }
21677 function Int16 (value) { return ((value << 16) >> 16) === value }
21678 function Int32 (value) { return (value | 0) === value }
21679 function UInt8 (value) { return (value & 0xff) === value }
21680 function UInt16 (value) { return (value & 0xffff) === value }
21681 function UInt32 (value) { return (value >>> 0) === value }
21682 function UInt53 (value) {
21683 return typeof value === 'number' &&
21684 value >= 0 &&
21685 value <= UINT53_MAX &&
21686 Math.floor(value) === value
21687 }
21688
21689 var types = {
21690 ArrayN: _ArrayN,
21691 Buffer: _Buffer,
21692 BufferN: _BufferN,
21693 Finite: Finite,
21694 Hex: Hex,
21695 HexN: _HexN,
21696 Int8: Int8,
21697 Int16: Int16,
21698 Int32: Int32,
21699 UInt8: UInt8,
21700 UInt16: UInt16,
21701 UInt32: UInt32,
21702 UInt53: UInt53
21703 }
21704
21705 for (var typeName in types) {
21706 types[typeName].toJSON = function (t) {
21707 return t
21708 }.bind(null, typeName)
21709 }
21710
21711 module.exports = types
21712
21713 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v6.0.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
21714 },{"../../../../../.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){
21715 var ERRORS = require('./errors')
21716 var NATIVE = require('./native')
21717
21718 // short-hand
21719 var tfJSON = ERRORS.tfJSON
21720 var TfTypeError = ERRORS.TfTypeError
21721 var TfPropertyTypeError = ERRORS.TfPropertyTypeError
21722 var tfSubError = ERRORS.tfSubError
21723 var getValueTypeName = ERRORS.getValueTypeName
21724
21725 var TYPES = {
21726 arrayOf: function arrayOf (type) {
21727 type = compile(type)
21728
21729 function _arrayOf (array, strict) {
21730 if (!NATIVE.Array(array)) return false
21731
21732 return array.every(function (value, i) {
21733 try {
21734 return typeforce(type, value, strict)
21735 } catch (e) {
21736 throw tfSubError(e, i)
21737 }
21738 })
21739 }
21740 _arrayOf.toJSON = function () { return '[' + tfJSON(type) + ']' }
21741
21742 return _arrayOf
21743 },
21744
21745 maybe: function maybe (type) {
21746 type = compile(type)
21747
21748 function _maybe (value, strict) {
21749 return NATIVE.Nil(value) || type(value, strict, maybe)
21750 }
21751 _maybe.toJSON = function () { return '?' + tfJSON(type) }
21752
21753 return _maybe
21754 },
21755
21756 map: function map (propertyType, propertyKeyType) {
21757 propertyType = compile(propertyType)
21758 if (propertyKeyType) propertyKeyType = compile(propertyKeyType)
21759
21760 function _map (value, strict) {
21761 if (!NATIVE.Object(value, strict)) return false
21762 if (NATIVE.Nil(value, strict)) return false
21763
21764 for (var propertyName in value) {
21765 try {
21766 if (propertyKeyType) {
21767 typeforce(propertyKeyType, propertyName, strict)
21768 }
21769 } catch (e) {
21770 throw tfSubError(e, propertyName, 'key')
21771 }
21772
21773 try {
21774 var propertyValue = value[propertyName]
21775 typeforce(propertyType, propertyValue, strict)
21776 } catch (e) {
21777 throw tfSubError(e, propertyName)
21778 }
21779 }
21780
21781 return true
21782 }
21783
21784 if (propertyKeyType) {
21785 _map.toJSON = function () {
21786 return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'
21787 }
21788 } else {
21789 _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }
21790 }
21791
21792 return _map
21793 },
21794
21795 object: function object (uncompiled) {
21796 var type = {}
21797
21798 for (var typePropertyName in uncompiled) {
21799 type[typePropertyName] = compile(uncompiled[typePropertyName])
21800 }
21801
21802 function _object (value, strict) {
21803 if (!NATIVE.Object(value)) return false
21804 if (NATIVE.Nil(value)) return false
21805
21806 var propertyName
21807
21808 try {
21809 for (propertyName in type) {
21810 var propertyType = type[propertyName]
21811 var propertyValue = value[propertyName]
21812
21813 typeforce(propertyType, propertyValue, strict)
21814 }
21815 } catch (e) {
21816 throw tfSubError(e, propertyName)
21817 }
21818
21819 if (strict) {
21820 for (propertyName in value) {
21821 if (type[propertyName]) continue
21822
21823 throw new TfPropertyTypeError(undefined, propertyName)
21824 }
21825 }
21826
21827 return true
21828 }
21829 _object.toJSON = function () { return tfJSON(type) }
21830
21831 return _object
21832 },
21833
21834 oneOf: function oneOf () {
21835 var types = [].slice.call(arguments).map(compile)
21836
21837 function _oneOf (value, strict) {
21838 return types.some(function (type) {
21839 try {
21840 return typeforce(type, value, strict)
21841 } catch (e) {
21842 return false
21843 }
21844 })
21845 }
21846 _oneOf.toJSON = function () { return types.map(tfJSON).join('|') }
21847
21848 return _oneOf
21849 },
21850
21851 quacksLike: function quacksLike (type) {
21852 function _quacksLike (value) {
21853 return type === getValueTypeName(value)
21854 }
21855 _quacksLike.toJSON = function () { return type }
21856
21857 return _quacksLike
21858 },
21859
21860 tuple: function tuple () {
21861 var types = [].slice.call(arguments).map(compile)
21862
21863 function _tuple (values, strict) {
21864 return types.every(function (type, i) {
21865 try {
21866 return typeforce(type, values[i], strict)
21867 } catch (e) {
21868 throw tfSubError(e, i)
21869 }
21870 }) && (!strict || values.length === arguments.length)
21871 }
21872 _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' }
21873
21874 return _tuple
21875 },
21876
21877 value: function value (expected) {
21878 function _value (actual) {
21879 return actual === expected
21880 }
21881 _value.toJSON = function () { return expected }
21882
21883 return _value
21884 }
21885 }
21886
21887 function compile (type) {
21888 if (NATIVE.String(type)) {
21889 if (type[0] === '?') return TYPES.maybe(compile(type.slice(1)))
21890
21891 return NATIVE[type] || TYPES.quacksLike(type)
21892 } else if (type && NATIVE.Object(type)) {
21893 if (NATIVE.Array(type)) return TYPES.arrayOf(compile(type[0]))
21894
21895 return TYPES.object(type)
21896 } else if (NATIVE.Function(type)) {
21897 return type
21898 }
21899
21900 return TYPES.value(type)
21901 }
21902
21903 function typeforce (type, value, strict, surrogate) {
21904 if (NATIVE.Function(type)) {
21905 if (type(value, strict)) return true
21906
21907 throw new TfTypeError(surrogate || type, value)
21908 }
21909
21910 // JIT
21911 return typeforce(compile(type), value, strict)
21912 }
21913
21914 // assign types to typeforce function
21915 for (var typeName in NATIVE) {
21916 typeforce[typeName] = NATIVE[typeName]
21917 }
21918
21919 for (typeName in TYPES) {
21920 typeforce[typeName] = TYPES[typeName]
21921 }
21922
21923 var EXTRA = require('./extra')
21924 for (typeName in EXTRA) {
21925 typeforce[typeName] = EXTRA[typeName]
21926 }
21927
21928 // async wrapper
21929 function __async (type, value, strict, callback) {
21930 // default to falsy strict if using shorthand overload
21931 if (typeof strict === 'function') return __async(type, value, false, strict)
21932
21933 try {
21934 typeforce(type, value, strict)
21935 } catch (e) {
21936 return callback(e)
21937 }
21938
21939 callback()
21940 }
21941
21942 typeforce.async = __async
21943 typeforce.compile = compile
21944 typeforce.TfTypeError = TfTypeError
21945 typeforce.TfPropertyTypeError = TfPropertyTypeError
21946
21947 module.exports = typeforce
21948
21949 },{"./errors":107,"./extra":108,"./native":110}],110:[function(require,module,exports){
21950 var types = {
21951 Array: function (value) { return value !== null && value !== undefined && value.constructor === Array },
21952 Boolean: function (value) { return typeof value === 'boolean' },
21953 Function: function (value) { return typeof value === 'function' },
21954 Nil: function (value) { return value === undefined || value === null },
21955 Number: function (value) { return typeof value === 'number' },
21956 Object: function (value) { return typeof value === 'object' },
21957 String: function (value) { return typeof value === 'string' },
21958 '': function () { return true }
21959 }
21960
21961 // TODO: deprecate
21962 types.Null = types.Nil
21963
21964 for (var typeName in types) {
21965 types[typeName].toJSON = function (t) {
21966 return t
21967 }.bind(null, typeName)
21968 }
21969
21970 module.exports = types
21971
21972 },{}],111:[function(require,module,exports){
21973 (function (Buffer){
21974 'use strict'
21975
21976 // Number.MAX_SAFE_INTEGER
21977 var MAX_SAFE_INTEGER = 9007199254740991
21978
21979 function checkUInt53 (n) {
21980 if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0) throw new RangeError('value out of range')
21981 }
21982
21983 function encode (number, buffer, offset) {
21984 checkUInt53(number)
21985
21986 if (!buffer) buffer = new Buffer(encodingLength(number))
21987 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
21988 if (!offset) offset = 0
21989
21990 // 8 bit
21991 if (number < 0xfd) {
21992 buffer.writeUInt8(number, offset)
21993 encode.bytes = 1
21994
21995 // 16 bit
21996 } else if (number <= 0xffff) {
21997 buffer.writeUInt8(0xfd, offset)
21998 buffer.writeUInt16LE(number, offset + 1)
21999 encode.bytes = 3
22000
22001 // 32 bit
22002 } else if (number <= 0xffffffff) {
22003 buffer.writeUInt8(0xfe, offset)
22004 buffer.writeUInt32LE(number, offset + 1)
22005 encode.bytes = 5
22006
22007 // 64 bit
22008 } else {
22009 buffer.writeUInt8(0xff, offset)
22010 buffer.writeUInt32LE(number >>> 0, offset + 1)
22011 buffer.writeUInt32LE((number / 0x100000000) | 0, offset + 5)
22012 encode.bytes = 9
22013 }
22014
22015 return buffer
22016 }
22017
22018 function decode (buffer, offset) {
22019 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
22020 if (!offset) offset = 0
22021
22022 var first = buffer.readUInt8(offset)
22023
22024 // 8 bit
22025 if (first < 0xfd) {
22026 decode.bytes = 1
22027 return first
22028
22029 // 16 bit
22030 } else if (first === 0xfd) {
22031 decode.bytes = 3
22032 return buffer.readUInt16LE(offset + 1)
22033
22034 // 32 bit
22035 } else if (first === 0xfe) {
22036 decode.bytes = 5
22037 return buffer.readUInt32LE(offset + 1)
22038
22039 // 64 bit
22040 } else {
22041 decode.bytes = 9
22042 var lo = buffer.readUInt32LE(offset + 1)
22043 var hi = buffer.readUInt32LE(offset + 5)
22044 var number = hi * 0x0100000000 + lo
22045 checkUInt53(number)
22046
22047 return number
22048 }
22049 }
22050
22051 function encodingLength (number) {
22052 checkUInt53(number)
22053
22054 return (
22055 number < 0xfd ? 1
22056 : number <= 0xffff ? 3
22057 : number <= 0xffffffff ? 5
22058 : 9
22059 )
22060 }
22061
22062 module.exports = { encode: encode, decode: decode, encodingLength: encodingLength }
22063
22064 }).call(this,require("buffer").Buffer)
22065 },{"buffer":4}],112:[function(require,module,exports){
22066 (function (Buffer){
22067 var bs58check = require('bs58check')
22068
22069 function decodeRaw (buffer, version) {
22070 // check version only if defined
22071 if (version !== undefined && buffer[0] !== version) throw new Error('Invalid network version')
22072
22073 // uncompressed
22074 if (buffer.length === 33) {
22075 return {
22076 version: buffer[0],
22077 privateKey: buffer.slice(1, 33),
22078 compressed: false
22079 }
22080 }
22081
22082 // invalid length
22083 if (buffer.length !== 34) throw new Error('Invalid WIF length')
22084
22085 // invalid compression flag
22086 if (buffer[33] !== 0x01) throw new Error('Invalid compression flag')
22087
22088 return {
22089 version: buffer[0],
22090 privateKey: buffer.slice(1, 33),
22091 compressed: true
22092 }
22093 }
22094
22095 function encodeRaw (version, privateKey, compressed) {
22096 var result = new Buffer(compressed ? 34 : 33)
22097
22098 result.writeUInt8(version, 0)
22099 privateKey.copy(result, 1)
22100
22101 if (compressed) {
22102 result[33] = 0x01
22103 }
22104
22105 return result
22106 }
22107
22108 function decode (string, version) {
22109 return decodeRaw(bs58check.decode(string), version)
22110 }
22111
22112 function encode (version, privateKey, compressed) {
22113 if (typeof version === 'number') return bs58check.encode(encodeRaw(version, privateKey, compressed))
22114
22115 return bs58check.encode(
22116 encodeRaw(
22117 version.version,
22118 version.privateKey,
22119 version.compressed
22120 )
22121 )
22122 }
22123
22124 module.exports = {
22125 decode: decode,
22126 decodeRaw: decodeRaw,
22127 encode: encode,
22128 encodeRaw: encodeRaw
22129 }
22130
22131 }).call(this,require("buffer").Buffer)
22132 },{"bs58check":80,"buffer":4}]},{},[33])(33)
22133 });
22134 </script>
22135 <script>bitcoinjs.bitcoin.networks.shadow = {
22136 messagePrefix: "unused",
22137 bip32: {
22138 public: 0xEE80286A,
22139 private: 0xEE8031E8
22140 },
22141 pubKeyHash: 0x3f,
22142 scriptHash: 0x7d,
22143 wif: 0xbf,
22144 };
22145
22146 bitcoinjs.bitcoin.networks.shadowtn = {
22147 messagePrefix: "unused",
22148 bip32: {
22149 public: 0x76C0FDFB,
22150 private: 0x76C1077A
22151 },
22152 pubKeyHash: 0x7f,
22153 scriptHash: 0xc4,
22154 wif: 0xff,
22155 };
22156
22157 bitcoinjs.bitcoin.networks.clam = {
22158 messagePrefix: "unused",
22159 bip32: {
22160 public: 0xa8c26d64,
22161 private: 0xa8c17826
22162 },
22163 pubKeyHash: 0x89,
22164 scriptHash: 0x00, // TODO set this correctly
22165 wif: 0x85,
22166 };
22167
22168 bitcoinjs.bitcoin.networks.crown = {
22169 messagePrefix: "unused",
22170 bip32: {
22171 public: 0x0488b21e,
22172 private: 0x0488ade4
22173 },
22174 pubKeyHash: 0x00,
22175 scriptHash: 0x05,
22176 wif: 0x80,
22177 };
22178
22179 bitcoinjs.bitcoin.networks.dash = {
22180 messagePrefix: "unused",
22181 bip32: {
22182 public: 0x0488b21e,
22183 private: 0x0488ade4
22184 },
22185 pubKeyHash: 0x4c,
22186 scriptHash: 0x10,
22187 wif: 0xcc,
22188 };
22189
22190 bitcoinjs.bitcoin.networks.maza = {
22191 messagePrefix: "unused",
22192 bip32: {
22193 public: 0x0488b21e,
22194 private: 0x0488ade4
22195 },
22196 pubKeyHash: 0x32,
22197 scriptHash: 0x09,
22198 wif: 0xe0,
22199 };
22200
22201 bitcoinjs.bitcoin.networks.dashtn = {
22202 messagePrefix: "unused",
22203 bip32: {
22204 public: 0x043587cf,
22205 private: 0x04358394
22206 },
22207 pubKeyHash: 0x8c,
22208 scriptHash: 0x13,
22209 wif: 0xef,
22210 };
22211
22212 bitcoinjs.bitcoin.networks.game = {
22213 messagePrefix: "unused",
22214 bip32: {
22215 public: 0x0488b21e,
22216 private: 0x0488ade4
22217 },
22218 pubKeyHash: 0x26,
22219 scriptHash: 0x05,
22220 wif: 0xa6,
22221 };
22222
22223 bitcoinjs.bitcoin.networks.namecoin = {
22224 messagePrefix: "unused",
22225 bip32: {
22226 public: 0x0488b21e,
22227 private: 0x0488ade4
22228 },
22229 pubKeyHash: 0x34,
22230 scriptHash: 0x00, // TODO set this correctly
22231 wif: 0x80,
22232 };
22233
22234 bitcoinjs.bitcoin.networks.peercoin = {
22235 messagePrefix: "unused",
22236 bip32: {
22237 public: 0x0488b21e,
22238 private: 0x0488ade4
22239 },
22240 pubKeyHash: 0x37,
22241 scriptHash: 0x00, // TODO set this correctly
22242 wif: 0xb7,
22243 };
22244
22245 bitcoinjs.bitcoin.networks.slimcoin = {
22246 messagePrefix: "unused",
22247 bip32: {
22248 public: 0xef6adf10,
22249 private: 0xef69ea80
22250 },
22251 pubKeyHash: 0x3f,
22252 scriptHash: 0x7d,
22253 wif: 0x46,
22254 };
22255
22256 bitcoinjs.bitcoin.networks.slimcointn = {
22257 messagePrefix: "unused",
22258 bip32: {
22259 public: 0x043587CF,
22260 private: 0x04358394
22261 },
22262 pubKeyHash: 0x6f,
22263 scriptHash: 0xc4,
22264 wif: 0x57,
22265 };
22266
22267 bitcoinjs.bitcoin.networks.dogecoin = {
22268 messagePrefix: '\x19Dogecoin Signed Message:\n',
22269 bip32: {
22270 public: 0x02facafd,
22271 private: 0x02fac398
22272 },
22273 pubKeyHash: 0x1e,
22274 scriptHash: 0x16,
22275 wif: 0x9e,
22276 },
22277
22278 bitcoinjs.bitcoin.networks.viacoin = {
22279 messagePrefix: '\x18Viacoin Signed Message:\n',
22280 bip32: {
22281 public: 0x0488b21e,
22282 private: 0x0488ade4
22283 },
22284 pubKeyHash: 0x47,
22285 scriptHash: 0x21,
22286 wif: 0xc7,
22287 },
22288
22289 bitcoinjs.bitcoin.networks.viacointestnet = {
22290 messagePrefix: '\x18Viacoin Signed Message:\n',
22291 bip32: {
22292 public: 0x043587cf,
22293 private: 0x04358394
22294 },
22295 pubKeyHash: 0x7f,
22296 scriptHash: 0xc4,
22297 wif: 0xff,
22298 },
22299
22300 bitcoinjs.bitcoin.networks.gamerscoin = {
22301 messagePrefix: '\x19Gamerscoin Signed Message:\n',
22302 bip32: {
22303 public: 0x019da462,
22304 private: 0x019d9cfe
22305 },
22306 pubKeyHash: 0x26,
22307 scriptHash: 0x05,
22308 wif: 0xA6,
22309 },
22310
22311 bitcoinjs.bitcoin.networks.jumbucks = {
22312 messagePrefix: '\x19Jumbucks Signed Message:\n',
22313 bip32: {
22314 public: 0x037a689a,
22315 private: 0x037a6460
22316 },
22317 pubKeyHash: 0x2b,
22318 scriptHash: 0x05,
22319 wif: 0xab,
22320 },
22321
22322 bitcoinjs.bitcoin.networks.zetacoin = {
22323 messagePrefix: '\x18Zetacoin Signed Message:\n',
22324 bip32: {
22325 public: 0x0488b21e,
22326 private: 0x0488ade4
22327 },
22328 pubKeyHash: 0x50,
22329 scriptHash: 0x09,
22330 wif: 0xe0,
22331 }
22332
22333 bitcoinjs.bitcoin.networks.myriadcoin = {
22334 messagePrefix: "unused",
22335 bip32: {
22336 public: 0x0488b21e,
22337 private: 0x0488ade4
22338 },
22339 pubKeyHash: 0x32,
22340 scriptHash: 0x00, // TODO set this correctly
22341 wif: 0xb2,
22342 };
22343
22344 bitcoinjs.bitcoin.networks.pivx = {
22345 messagePrefix: "unused",
22346 bip32: {
22347 public: 0x022d2533,
22348 private: 0x0221312b
22349 },
22350 pubKeyHash: 0x1e,
22351 scriptHash: 0x0d,
22352 wif: 0xd4,
22353 };
22354
22355 bitcoinjs.bitcoin.networks.pivxtestnet = {
22356 messagePrefix: "unused",
22357 bip32: {
22358 public: 0x3a8061a0,
22359 private: 0x3a805837
22360 },
22361 pubKeyHash: 0x8b,
22362 scriptHash: 0x13,
22363 wif: 0xef,
22364 };
22365 </script>
22366 <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){
22367 (function (global){
22368 'use strict';
22369
22370 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
22371 // original notice:
22372
22373 /*!
22374 * The buffer module from node.js, for the browser.
22375 *
22376 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
22377 * @license MIT
22378 */
22379 function compare(a, b) {
22380 if (a === b) {
22381 return 0;
22382 }
22383
22384 var x = a.length;
22385 var y = b.length;
22386
22387 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
22388 if (a[i] !== b[i]) {
22389 x = a[i];
22390 y = b[i];
22391 break;
22392 }
22393 }
22394
22395 if (x < y) {
22396 return -1;
22397 }
22398 if (y < x) {
22399 return 1;
22400 }
22401 return 0;
22402 }
22403 function isBuffer(b) {
22404 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
22405 return global.Buffer.isBuffer(b);
22406 }
22407 return !!(b != null && b._isBuffer);
22408 }
22409
22410 // based on node assert, original notice:
22411
22412 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
22413 //
22414 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
22415 //
22416 // Originally from narwhal.js (http://narwhaljs.org)
22417 // Copyright (c) 2009 Thomas Robinson <280north.com>
22418 //
22419 // Permission is hereby granted, free of charge, to any person obtaining a copy
22420 // of this software and associated documentation files (the 'Software'), to
22421 // deal in the Software without restriction, including without limitation the
22422 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
22423 // sell copies of the Software, and to permit persons to whom the Software is
22424 // furnished to do so, subject to the following conditions:
22425 //
22426 // The above copyright notice and this permission notice shall be included in
22427 // all copies or substantial portions of the Software.
22428 //
22429 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22430 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22431 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22432 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22433 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22434 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22435
22436 var util = require('util/');
22437 var hasOwn = Object.prototype.hasOwnProperty;
22438 var pSlice = Array.prototype.slice;
22439 var functionsHaveNames = (function () {
22440 return function foo() {}.name === 'foo';
22441 }());
22442 function pToString (obj) {
22443 return Object.prototype.toString.call(obj);
22444 }
22445 function isView(arrbuf) {
22446 if (isBuffer(arrbuf)) {
22447 return false;
22448 }
22449 if (typeof global.ArrayBuffer !== 'function') {
22450 return false;
22451 }
22452 if (typeof ArrayBuffer.isView === 'function') {
22453 return ArrayBuffer.isView(arrbuf);
22454 }
22455 if (!arrbuf) {
22456 return false;
22457 }
22458 if (arrbuf instanceof DataView) {
22459 return true;
22460 }
22461 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
22462 return true;
22463 }
22464 return false;
22465 }
22466 // 1. The assert module provides functions that throw
22467 // AssertionError's when particular conditions are not met. The
22468 // assert module must conform to the following interface.
22469
22470 var assert = module.exports = ok;
22471
22472 // 2. The AssertionError is defined in assert.
22473 // new assert.AssertionError({ message: message,
22474 // actual: actual,
22475 // expected: expected })
22476
22477 var regex = /\s*function\s+([^\(\s]*)\s*/;
22478 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
22479 function getName(func) {
22480 if (!util.isFunction(func)) {
22481 return;
22482 }
22483 if (functionsHaveNames) {
22484 return func.name;
22485 }
22486 var str = func.toString();
22487 var match = str.match(regex);
22488 return match && match[1];
22489 }
22490 assert.AssertionError = function AssertionError(options) {
22491 this.name = 'AssertionError';
22492 this.actual = options.actual;
22493 this.expected = options.expected;
22494 this.operator = options.operator;
22495 if (options.message) {
22496 this.message = options.message;
22497 this.generatedMessage = false;
22498 } else {
22499 this.message = getMessage(this);
22500 this.generatedMessage = true;
22501 }
22502 var stackStartFunction = options.stackStartFunction || fail;
22503 if (Error.captureStackTrace) {
22504 Error.captureStackTrace(this, stackStartFunction);
22505 } else {
22506 // non v8 browsers so we can have a stacktrace
22507 var err = new Error();
22508 if (err.stack) {
22509 var out = err.stack;
22510
22511 // try to strip useless frames
22512 var fn_name = getName(stackStartFunction);
22513 var idx = out.indexOf('\n' + fn_name);
22514 if (idx >= 0) {
22515 // once we have located the function frame
22516 // we need to strip out everything before it (and its line)
22517 var next_line = out.indexOf('\n', idx + 1);
22518 out = out.substring(next_line + 1);
22519 }
22520
22521 this.stack = out;
22522 }
22523 }
22524 };
22525
22526 // assert.AssertionError instanceof Error
22527 util.inherits(assert.AssertionError, Error);
22528
22529 function truncate(s, n) {
22530 if (typeof s === 'string') {
22531 return s.length < n ? s : s.slice(0, n);
22532 } else {
22533 return s;
22534 }
22535 }
22536 function inspect(something) {
22537 if (functionsHaveNames || !util.isFunction(something)) {
22538 return util.inspect(something);
22539 }
22540 var rawname = getName(something);
22541 var name = rawname ? ': ' + rawname : '';
22542 return '[Function' + name + ']';
22543 }
22544 function getMessage(self) {
22545 return truncate(inspect(self.actual), 128) + ' ' +
22546 self.operator + ' ' +
22547 truncate(inspect(self.expected), 128);
22548 }
22549
22550 // At present only the three keys mentioned above are used and
22551 // understood by the spec. Implementations or sub modules can pass
22552 // other keys to the AssertionError's constructor - they will be
22553 // ignored.
22554
22555 // 3. All of the following functions must throw an AssertionError
22556 // when a corresponding condition is not met, with a message that
22557 // may be undefined if not provided. All assertion methods provide
22558 // both the actual and expected values to the assertion error for
22559 // display purposes.
22560
22561 function fail(actual, expected, message, operator, stackStartFunction) {
22562 throw new assert.AssertionError({
22563 message: message,
22564 actual: actual,
22565 expected: expected,
22566 operator: operator,
22567 stackStartFunction: stackStartFunction
22568 });
22569 }
22570
22571 // EXTENSION! allows for well behaved errors defined elsewhere.
22572 assert.fail = fail;
22573
22574 // 4. Pure assertion tests whether a value is truthy, as determined
22575 // by !!guard.
22576 // assert.ok(guard, message_opt);
22577 // This statement is equivalent to assert.equal(true, !!guard,
22578 // message_opt);. To test strictly for the value true, use
22579 // assert.strictEqual(true, guard, message_opt);.
22580
22581 function ok(value, message) {
22582 if (!value) fail(value, true, message, '==', assert.ok);
22583 }
22584 assert.ok = ok;
22585
22586 // 5. The equality assertion tests shallow, coercive equality with
22587 // ==.
22588 // assert.equal(actual, expected, message_opt);
22589
22590 assert.equal = function equal(actual, expected, message) {
22591 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
22592 };
22593
22594 // 6. The non-equality assertion tests for whether two objects are not equal
22595 // with != assert.notEqual(actual, expected, message_opt);
22596
22597 assert.notEqual = function notEqual(actual, expected, message) {
22598 if (actual == expected) {
22599 fail(actual, expected, message, '!=', assert.notEqual);
22600 }
22601 };
22602
22603 // 7. The equivalence assertion tests a deep equality relation.
22604 // assert.deepEqual(actual, expected, message_opt);
22605
22606 assert.deepEqual = function deepEqual(actual, expected, message) {
22607 if (!_deepEqual(actual, expected, false)) {
22608 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
22609 }
22610 };
22611
22612 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
22613 if (!_deepEqual(actual, expected, true)) {
22614 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
22615 }
22616 };
22617
22618 function _deepEqual(actual, expected, strict, memos) {
22619 // 7.1. All identical values are equivalent, as determined by ===.
22620 if (actual === expected) {
22621 return true;
22622 } else if (isBuffer(actual) && isBuffer(expected)) {
22623 return compare(actual, expected) === 0;
22624
22625 // 7.2. If the expected value is a Date object, the actual value is
22626 // equivalent if it is also a Date object that refers to the same time.
22627 } else if (util.isDate(actual) && util.isDate(expected)) {
22628 return actual.getTime() === expected.getTime();
22629
22630 // 7.3 If the expected value is a RegExp object, the actual value is
22631 // equivalent if it is also a RegExp object with the same source and
22632 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
22633 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
22634 return actual.source === expected.source &&
22635 actual.global === expected.global &&
22636 actual.multiline === expected.multiline &&
22637 actual.lastIndex === expected.lastIndex &&
22638 actual.ignoreCase === expected.ignoreCase;
22639
22640 // 7.4. Other pairs that do not both pass typeof value == 'object',
22641 // equivalence is determined by ==.
22642 } else if ((actual === null || typeof actual !== 'object') &&
22643 (expected === null || typeof expected !== 'object')) {
22644 return strict ? actual === expected : actual == expected;
22645
22646 // If both values are instances of typed arrays, wrap their underlying
22647 // ArrayBuffers in a Buffer each to increase performance
22648 // This optimization requires the arrays to have the same type as checked by
22649 // Object.prototype.toString (aka pToString). Never perform binary
22650 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
22651 // bit patterns are not identical.
22652 } else if (isView(actual) && isView(expected) &&
22653 pToString(actual) === pToString(expected) &&
22654 !(actual instanceof Float32Array ||
22655 actual instanceof Float64Array)) {
22656 return compare(new Uint8Array(actual.buffer),
22657 new Uint8Array(expected.buffer)) === 0;
22658
22659 // 7.5 For all other Object pairs, including Array objects, equivalence is
22660 // determined by having the same number of owned properties (as verified
22661 // with Object.prototype.hasOwnProperty.call), the same set of keys
22662 // (although not necessarily the same order), equivalent values for every
22663 // corresponding key, and an identical 'prototype' property. Note: this
22664 // accounts for both named and indexed properties on Arrays.
22665 } else if (isBuffer(actual) !== isBuffer(expected)) {
22666 return false;
22667 } else {
22668 memos = memos || {actual: [], expected: []};
22669
22670 var actualIndex = memos.actual.indexOf(actual);
22671 if (actualIndex !== -1) {
22672 if (actualIndex === memos.expected.indexOf(expected)) {
22673 return true;
22674 }
22675 }
22676
22677 memos.actual.push(actual);
22678 memos.expected.push(expected);
22679
22680 return objEquiv(actual, expected, strict, memos);
22681 }
22682 }
22683
22684 function isArguments(object) {
22685 return Object.prototype.toString.call(object) == '[object Arguments]';
22686 }
22687
22688 function objEquiv(a, b, strict, actualVisitedObjects) {
22689 if (a === null || a === undefined || b === null || b === undefined)
22690 return false;
22691 // if one is a primitive, the other must be same
22692 if (util.isPrimitive(a) || util.isPrimitive(b))
22693 return a === b;
22694 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
22695 return false;
22696 var aIsArgs = isArguments(a);
22697 var bIsArgs = isArguments(b);
22698 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
22699 return false;
22700 if (aIsArgs) {
22701 a = pSlice.call(a);
22702 b = pSlice.call(b);
22703 return _deepEqual(a, b, strict);
22704 }
22705 var ka = objectKeys(a);
22706 var kb = objectKeys(b);
22707 var key, i;
22708 // having the same number of owned properties (keys incorporates
22709 // hasOwnProperty)
22710 if (ka.length !== kb.length)
22711 return false;
22712 //the same set of keys (although not necessarily the same order),
22713 ka.sort();
22714 kb.sort();
22715 //~~~cheap key test
22716 for (i = ka.length - 1; i >= 0; i--) {
22717 if (ka[i] !== kb[i])
22718 return false;
22719 }
22720 //equivalent values for every corresponding key, and
22721 //~~~possibly expensive deep test
22722 for (i = ka.length - 1; i >= 0; i--) {
22723 key = ka[i];
22724 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
22725 return false;
22726 }
22727 return true;
22728 }
22729
22730 // 8. The non-equivalence assertion tests for any deep inequality.
22731 // assert.notDeepEqual(actual, expected, message_opt);
22732
22733 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
22734 if (_deepEqual(actual, expected, false)) {
22735 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
22736 }
22737 };
22738
22739 assert.notDeepStrictEqual = notDeepStrictEqual;
22740 function notDeepStrictEqual(actual, expected, message) {
22741 if (_deepEqual(actual, expected, true)) {
22742 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
22743 }
22744 }
22745
22746
22747 // 9. The strict equality assertion tests strict equality, as determined by ===.
22748 // assert.strictEqual(actual, expected, message_opt);
22749
22750 assert.strictEqual = function strictEqual(actual, expected, message) {
22751 if (actual !== expected) {
22752 fail(actual, expected, message, '===', assert.strictEqual);
22753 }
22754 };
22755
22756 // 10. The strict non-equality assertion tests for strict inequality, as
22757 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
22758
22759 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
22760 if (actual === expected) {
22761 fail(actual, expected, message, '!==', assert.notStrictEqual);
22762 }
22763 };
22764
22765 function expectedException(actual, expected) {
22766 if (!actual || !expected) {
22767 return false;
22768 }
22769
22770 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
22771 return expected.test(actual);
22772 }
22773
22774 try {
22775 if (actual instanceof expected) {
22776 return true;
22777 }
22778 } catch (e) {
22779 // Ignore. The instanceof check doesn't work for arrow functions.
22780 }
22781
22782 if (Error.isPrototypeOf(expected)) {
22783 return false;
22784 }
22785
22786 return expected.call({}, actual) === true;
22787 }
22788
22789 function _tryBlock(block) {
22790 var error;
22791 try {
22792 block();
22793 } catch (e) {
22794 error = e;
22795 }
22796 return error;
22797 }
22798
22799 function _throws(shouldThrow, block, expected, message) {
22800 var actual;
22801
22802 if (typeof block !== 'function') {
22803 throw new TypeError('"block" argument must be a function');
22804 }
22805
22806 if (typeof expected === 'string') {
22807 message = expected;
22808 expected = null;
22809 }
22810
22811 actual = _tryBlock(block);
22812
22813 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
22814 (message ? ' ' + message : '.');
22815
22816 if (shouldThrow && !actual) {
22817 fail(actual, expected, 'Missing expected exception' + message);
22818 }
22819
22820 var userProvidedMessage = typeof message === 'string';
22821 var isUnwantedException = !shouldThrow && util.isError(actual);
22822 var isUnexpectedException = !shouldThrow && actual && !expected;
22823
22824 if ((isUnwantedException &&
22825 userProvidedMessage &&
22826 expectedException(actual, expected)) ||
22827 isUnexpectedException) {
22828 fail(actual, expected, 'Got unwanted exception' + message);
22829 }
22830
22831 if ((shouldThrow && actual && expected &&
22832 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
22833 throw actual;
22834 }
22835 }
22836
22837 // 11. Expected to throw an error:
22838 // assert.throws(block, Error_opt, message_opt);
22839
22840 assert.throws = function(block, /*optional*/error, /*optional*/message) {
22841 _throws(true, block, error, message);
22842 };
22843
22844 // EXTENSION! This is annoying to write outside this module.
22845 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
22846 _throws(false, block, error, message);
22847 };
22848
22849 assert.ifError = function(err) { if (err) throw err; };
22850
22851 var objectKeys = Object.keys || function (obj) {
22852 var keys = [];
22853 for (var key in obj) {
22854 if (hasOwn.call(obj, key)) keys.push(key);
22855 }
22856 return keys;
22857 };
22858
22859 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
22860 },{"util/":30}],2:[function(require,module,exports){
22861 'use strict'
22862
22863 exports.byteLength = byteLength
22864 exports.toByteArray = toByteArray
22865 exports.fromByteArray = fromByteArray
22866
22867 var lookup = []
22868 var revLookup = []
22869 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
22870
22871 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
22872 for (var i = 0, len = code.length; i < len; ++i) {
22873 lookup[i] = code[i]
22874 revLookup[code.charCodeAt(i)] = i
22875 }
22876
22877 revLookup['-'.charCodeAt(0)] = 62
22878 revLookup['_'.charCodeAt(0)] = 63
22879
22880 function placeHoldersCount (b64) {
22881 var len = b64.length
22882 if (len % 4 > 0) {
22883 throw new Error('Invalid string. Length must be a multiple of 4')
22884 }
22885
22886 // the number of equal signs (place holders)
22887 // if there are two placeholders, than the two characters before it
22888 // represent one byte
22889 // if there is only one, then the three characters before it represent 2 bytes
22890 // this is just a cheap hack to not do indexOf twice
22891 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
22892 }
22893
22894 function byteLength (b64) {
22895 // base64 is 4/3 + up to two characters of the original data
22896 return b64.length * 3 / 4 - placeHoldersCount(b64)
22897 }
22898
22899 function toByteArray (b64) {
22900 var i, j, l, tmp, placeHolders, arr
22901 var len = b64.length
22902 placeHolders = placeHoldersCount(b64)
22903
22904 arr = new Arr(len * 3 / 4 - placeHolders)
22905
22906 // if there are placeholders, only get up to the last complete 4 chars
22907 l = placeHolders > 0 ? len - 4 : len
22908
22909 var L = 0
22910
22911 for (i = 0, j = 0; i < l; i += 4, j += 3) {
22912 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
22913 arr[L++] = (tmp >> 16) & 0xFF
22914 arr[L++] = (tmp >> 8) & 0xFF
22915 arr[L++] = tmp & 0xFF
22916 }
22917
22918 if (placeHolders === 2) {
22919 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
22920 arr[L++] = tmp & 0xFF
22921 } else if (placeHolders === 1) {
22922 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
22923 arr[L++] = (tmp >> 8) & 0xFF
22924 arr[L++] = tmp & 0xFF
22925 }
22926
22927 return arr
22928 }
22929
22930 function tripletToBase64 (num) {
22931 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
22932 }
22933
22934 function encodeChunk (uint8, start, end) {
22935 var tmp
22936 var output = []
22937 for (var i = start; i < end; i += 3) {
22938 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
22939 output.push(tripletToBase64(tmp))
22940 }
22941 return output.join('')
22942 }
22943
22944 function fromByteArray (uint8) {
22945 var tmp
22946 var len = uint8.length
22947 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
22948 var output = ''
22949 var parts = []
22950 var maxChunkLength = 16383 // must be multiple of 3
22951
22952 // go through the array every three bytes, we'll deal with trailing stuff later
22953 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
22954 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
22955 }
22956
22957 // pad the end with zeros, but make sure to not forget the extra bytes
22958 if (extraBytes === 1) {
22959 tmp = uint8[len - 1]
22960 output += lookup[tmp >> 2]
22961 output += lookup[(tmp << 4) & 0x3F]
22962 output += '=='
22963 } else if (extraBytes === 2) {
22964 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
22965 output += lookup[tmp >> 10]
22966 output += lookup[(tmp >> 4) & 0x3F]
22967 output += lookup[(tmp << 2) & 0x3F]
22968 output += '='
22969 }
22970
22971 parts.push(output)
22972
22973 return parts.join('')
22974 }
22975
22976 },{}],3:[function(require,module,exports){
22977
22978 },{}],4:[function(require,module,exports){
22979 (function (global){
22980 'use strict';
22981
22982 var buffer = require('buffer');
22983 var Buffer = buffer.Buffer;
22984 var SlowBuffer = buffer.SlowBuffer;
22985 var MAX_LEN = buffer.kMaxLength || 2147483647;
22986 exports.alloc = function alloc(size, fill, encoding) {
22987 if (typeof Buffer.alloc === 'function') {
22988 return Buffer.alloc(size, fill, encoding);
22989 }
22990 if (typeof encoding === 'number') {
22991 throw new TypeError('encoding must not be number');
22992 }
22993 if (typeof size !== 'number') {
22994 throw new TypeError('size must be a number');
22995 }
22996 if (size > MAX_LEN) {
22997 throw new RangeError('size is too large');
22998 }
22999 var enc = encoding;
23000 var _fill = fill;
23001 if (_fill === undefined) {
23002 enc = undefined;
23003 _fill = 0;
23004 }
23005 var buf = new Buffer(size);
23006 if (typeof _fill === 'string') {
23007 var fillBuf = new Buffer(_fill, enc);
23008 var flen = fillBuf.length;
23009 var i = -1;
23010 while (++i < size) {
23011 buf[i] = fillBuf[i % flen];
23012 }
23013 } else {
23014 buf.fill(_fill);
23015 }
23016 return buf;
23017 }
23018 exports.allocUnsafe = function allocUnsafe(size) {
23019 if (typeof Buffer.allocUnsafe === 'function') {
23020 return Buffer.allocUnsafe(size);
23021 }
23022 if (typeof size !== 'number') {
23023 throw new TypeError('size must be a number');
23024 }
23025 if (size > MAX_LEN) {
23026 throw new RangeError('size is too large');
23027 }
23028 return new Buffer(size);
23029 }
23030 exports.from = function from(value, encodingOrOffset, length) {
23031 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
23032 return Buffer.from(value, encodingOrOffset, length);
23033 }
23034 if (typeof value === 'number') {
23035 throw new TypeError('"value" argument must not be a number');
23036 }
23037 if (typeof value === 'string') {
23038 return new Buffer(value, encodingOrOffset);
23039 }
23040 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
23041 var offset = encodingOrOffset;
23042 if (arguments.length === 1) {
23043 return new Buffer(value);
23044 }
23045 if (typeof offset === 'undefined') {
23046 offset = 0;
23047 }
23048 var len = length;
23049 if (typeof len === 'undefined') {
23050 len = value.byteLength - offset;
23051 }
23052 if (offset >= value.byteLength) {
23053 throw new RangeError('\'offset\' is out of bounds');
23054 }
23055 if (len > value.byteLength - offset) {
23056 throw new RangeError('\'length\' is out of bounds');
23057 }
23058 return new Buffer(value.slice(offset, offset + len));
23059 }
23060 if (Buffer.isBuffer(value)) {
23061 var out = new Buffer(value.length);
23062 value.copy(out, 0, 0, value.length);
23063 return out;
23064 }
23065 if (value) {
23066 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
23067 return new Buffer(value);
23068 }
23069 if (value.type === 'Buffer' && Array.isArray(value.data)) {
23070 return new Buffer(value.data);
23071 }
23072 }
23073
23074 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
23075 }
23076 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
23077 if (typeof Buffer.allocUnsafeSlow === 'function') {
23078 return Buffer.allocUnsafeSlow(size);
23079 }
23080 if (typeof size !== 'number') {
23081 throw new TypeError('size must be a number');
23082 }
23083 if (size >= MAX_LEN) {
23084 throw new RangeError('size is too large');
23085 }
23086 return new SlowBuffer(size);
23087 }
23088
23089 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
23090 },{"buffer":5}],5:[function(require,module,exports){
23091 /*!
23092 * The buffer module from node.js, for the browser.
23093 *
23094 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
23095 * @license MIT
23096 */
23097 /* eslint-disable no-proto */
23098
23099 'use strict'
23100
23101 var base64 = require('base64-js')
23102 var ieee754 = require('ieee754')
23103
23104 exports.Buffer = Buffer
23105 exports.SlowBuffer = SlowBuffer
23106 exports.INSPECT_MAX_BYTES = 50
23107
23108 var K_MAX_LENGTH = 0x7fffffff
23109 exports.kMaxLength = K_MAX_LENGTH
23110
23111 /**
23112 * If `Buffer.TYPED_ARRAY_SUPPORT`:
23113 * === true Use Uint8Array implementation (fastest)
23114 * === false Print warning and recommend using `buffer` v4.x which has an Object
23115 * implementation (most compatible, even IE6)
23116 *
23117 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
23118 * Opera 11.6+, iOS 4.2+.
23119 *
23120 * We report that the browser does not support typed arrays if the are not subclassable
23121 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
23122 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
23123 * for __proto__ and has a buggy typed array implementation.
23124 */
23125 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
23126
23127 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
23128 typeof console.error === 'function') {
23129 console.error(
23130 'This browser lacks typed array (Uint8Array) support which is required by ' +
23131 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
23132 )
23133 }
23134
23135 function typedArraySupport () {
23136 // Can typed array instances can be augmented?
23137 try {
23138 var arr = new Uint8Array(1)
23139 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
23140 return arr.foo() === 42
23141 } catch (e) {
23142 return false
23143 }
23144 }
23145
23146 function createBuffer (length) {
23147 if (length > K_MAX_LENGTH) {
23148 throw new RangeError('Invalid typed array length')
23149 }
23150 // Return an augmented `Uint8Array` instance
23151 var buf = new Uint8Array(length)
23152 buf.__proto__ = Buffer.prototype
23153 return buf
23154 }
23155
23156 /**
23157 * The Buffer constructor returns instances of `Uint8Array` that have their
23158 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
23159 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
23160 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
23161 * returns a single octet.
23162 *
23163 * The `Uint8Array` prototype remains unmodified.
23164 */
23165
23166 function Buffer (arg, encodingOrOffset, length) {
23167 // Common case.
23168 if (typeof arg === 'number') {
23169 if (typeof encodingOrOffset === 'string') {
23170 throw new Error(
23171 'If encoding is specified then the first argument must be a string'
23172 )
23173 }
23174 return allocUnsafe(arg)
23175 }
23176 return from(arg, encodingOrOffset, length)
23177 }
23178
23179 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
23180 if (typeof Symbol !== 'undefined' && Symbol.species &&
23181 Buffer[Symbol.species] === Buffer) {
23182 Object.defineProperty(Buffer, Symbol.species, {
23183 value: null,
23184 configurable: true,
23185 enumerable: false,
23186 writable: false
23187 })
23188 }
23189
23190 Buffer.poolSize = 8192 // not used by this implementation
23191
23192 function from (value, encodingOrOffset, length) {
23193 if (typeof value === 'number') {
23194 throw new TypeError('"value" argument must not be a number')
23195 }
23196
23197 if (value instanceof ArrayBuffer) {
23198 return fromArrayBuffer(value, encodingOrOffset, length)
23199 }
23200
23201 if (typeof value === 'string') {
23202 return fromString(value, encodingOrOffset)
23203 }
23204
23205 return fromObject(value)
23206 }
23207
23208 /**
23209 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
23210 * if value is a number.
23211 * Buffer.from(str[, encoding])
23212 * Buffer.from(array)
23213 * Buffer.from(buffer)
23214 * Buffer.from(arrayBuffer[, byteOffset[, length]])
23215 **/
23216 Buffer.from = function (value, encodingOrOffset, length) {
23217 return from(value, encodingOrOffset, length)
23218 }
23219
23220 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
23221 // https://github.com/feross/buffer/pull/148
23222 Buffer.prototype.__proto__ = Uint8Array.prototype
23223 Buffer.__proto__ = Uint8Array
23224
23225 function assertSize (size) {
23226 if (typeof size !== 'number') {
23227 throw new TypeError('"size" argument must be a number')
23228 } else if (size < 0) {
23229 throw new RangeError('"size" argument must not be negative')
23230 }
23231 }
23232
23233 function alloc (size, fill, encoding) {
23234 assertSize(size)
23235 if (size <= 0) {
23236 return createBuffer(size)
23237 }
23238 if (fill !== undefined) {
23239 // Only pay attention to encoding if it's a string. This
23240 // prevents accidentally sending in a number that would
23241 // be interpretted as a start offset.
23242 return typeof encoding === 'string'
23243 ? createBuffer(size).fill(fill, encoding)
23244 : createBuffer(size).fill(fill)
23245 }
23246 return createBuffer(size)
23247 }
23248
23249 /**
23250 * Creates a new filled Buffer instance.
23251 * alloc(size[, fill[, encoding]])
23252 **/
23253 Buffer.alloc = function (size, fill, encoding) {
23254 return alloc(size, fill, encoding)
23255 }
23256
23257 function allocUnsafe (size) {
23258 assertSize(size)
23259 return createBuffer(size < 0 ? 0 : checked(size) | 0)
23260 }
23261
23262 /**
23263 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
23264 * */
23265 Buffer.allocUnsafe = function (size) {
23266 return allocUnsafe(size)
23267 }
23268 /**
23269 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
23270 */
23271 Buffer.allocUnsafeSlow = function (size) {
23272 return allocUnsafe(size)
23273 }
23274
23275 function fromString (string, encoding) {
23276 if (typeof encoding !== 'string' || encoding === '') {
23277 encoding = 'utf8'
23278 }
23279
23280 if (!Buffer.isEncoding(encoding)) {
23281 throw new TypeError('"encoding" must be a valid string encoding')
23282 }
23283
23284 var length = byteLength(string, encoding) | 0
23285 var buf = createBuffer(length)
23286
23287 var actual = buf.write(string, encoding)
23288
23289 if (actual !== length) {
23290 // Writing a hex string, for example, that contains invalid characters will
23291 // cause everything after the first invalid character to be ignored. (e.g.
23292 // 'abxxcd' will be treated as 'ab')
23293 buf = buf.slice(0, actual)
23294 }
23295
23296 return buf
23297 }
23298
23299 function fromArrayLike (array) {
23300 var length = array.length < 0 ? 0 : checked(array.length) | 0
23301 var buf = createBuffer(length)
23302 for (var i = 0; i < length; i += 1) {
23303 buf[i] = array[i] & 255
23304 }
23305 return buf
23306 }
23307
23308 function fromArrayBuffer (array, byteOffset, length) {
23309 if (byteOffset < 0 || array.byteLength < byteOffset) {
23310 throw new RangeError('\'offset\' is out of bounds')
23311 }
23312
23313 if (array.byteLength < byteOffset + (length || 0)) {
23314 throw new RangeError('\'length\' is out of bounds')
23315 }
23316
23317 var buf
23318 if (byteOffset === undefined && length === undefined) {
23319 buf = new Uint8Array(array)
23320 } else if (length === undefined) {
23321 buf = new Uint8Array(array, byteOffset)
23322 } else {
23323 buf = new Uint8Array(array, byteOffset, length)
23324 }
23325
23326 // Return an augmented `Uint8Array` instance
23327 buf.__proto__ = Buffer.prototype
23328 return buf
23329 }
23330
23331 function fromObject (obj) {
23332 if (Buffer.isBuffer(obj)) {
23333 var len = checked(obj.length) | 0
23334 var buf = createBuffer(len)
23335
23336 if (buf.length === 0) {
23337 return buf
23338 }
23339
23340 obj.copy(buf, 0, 0, len)
23341 return buf
23342 }
23343
23344 if (obj) {
23345 if (ArrayBuffer.isView(obj) || 'length' in obj) {
23346 if (typeof obj.length !== 'number' || isnan(obj.length)) {
23347 return createBuffer(0)
23348 }
23349 return fromArrayLike(obj)
23350 }
23351
23352 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
23353 return fromArrayLike(obj.data)
23354 }
23355 }
23356
23357 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
23358 }
23359
23360 function checked (length) {
23361 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
23362 // length is NaN (which is otherwise coerced to zero.)
23363 if (length >= K_MAX_LENGTH) {
23364 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
23365 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
23366 }
23367 return length | 0
23368 }
23369
23370 function SlowBuffer (length) {
23371 if (+length != length) { // eslint-disable-line eqeqeq
23372 length = 0
23373 }
23374 return Buffer.alloc(+length)
23375 }
23376
23377 Buffer.isBuffer = function isBuffer (b) {
23378 return b != null && b._isBuffer === true
23379 }
23380
23381 Buffer.compare = function compare (a, b) {
23382 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
23383 throw new TypeError('Arguments must be Buffers')
23384 }
23385
23386 if (a === b) return 0
23387
23388 var x = a.length
23389 var y = b.length
23390
23391 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
23392 if (a[i] !== b[i]) {
23393 x = a[i]
23394 y = b[i]
23395 break
23396 }
23397 }
23398
23399 if (x < y) return -1
23400 if (y < x) return 1
23401 return 0
23402 }
23403
23404 Buffer.isEncoding = function isEncoding (encoding) {
23405 switch (String(encoding).toLowerCase()) {
23406 case 'hex':
23407 case 'utf8':
23408 case 'utf-8':
23409 case 'ascii':
23410 case 'latin1':
23411 case 'binary':
23412 case 'base64':
23413 case 'ucs2':
23414 case 'ucs-2':
23415 case 'utf16le':
23416 case 'utf-16le':
23417 return true
23418 default:
23419 return false
23420 }
23421 }
23422
23423 Buffer.concat = function concat (list, length) {
23424 if (!Array.isArray(list)) {
23425 throw new TypeError('"list" argument must be an Array of Buffers')
23426 }
23427
23428 if (list.length === 0) {
23429 return Buffer.alloc(0)
23430 }
23431
23432 var i
23433 if (length === undefined) {
23434 length = 0
23435 for (i = 0; i < list.length; ++i) {
23436 length += list[i].length
23437 }
23438 }
23439
23440 var buffer = Buffer.allocUnsafe(length)
23441 var pos = 0
23442 for (i = 0; i < list.length; ++i) {
23443 var buf = list[i]
23444 if (!Buffer.isBuffer(buf)) {
23445 throw new TypeError('"list" argument must be an Array of Buffers')
23446 }
23447 buf.copy(buffer, pos)
23448 pos += buf.length
23449 }
23450 return buffer
23451 }
23452
23453 function byteLength (string, encoding) {
23454 if (Buffer.isBuffer(string)) {
23455 return string.length
23456 }
23457 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
23458 return string.byteLength
23459 }
23460 if (typeof string !== 'string') {
23461 string = '' + string
23462 }
23463
23464 var len = string.length
23465 if (len === 0) return 0
23466
23467 // Use a for loop to avoid recursion
23468 var loweredCase = false
23469 for (;;) {
23470 switch (encoding) {
23471 case 'ascii':
23472 case 'latin1':
23473 case 'binary':
23474 return len
23475 case 'utf8':
23476 case 'utf-8':
23477 case undefined:
23478 return utf8ToBytes(string).length
23479 case 'ucs2':
23480 case 'ucs-2':
23481 case 'utf16le':
23482 case 'utf-16le':
23483 return len * 2
23484 case 'hex':
23485 return len >>> 1
23486 case 'base64':
23487 return base64ToBytes(string).length
23488 default:
23489 if (loweredCase) return utf8ToBytes(string).length // assume utf8
23490 encoding = ('' + encoding).toLowerCase()
23491 loweredCase = true
23492 }
23493 }
23494 }
23495 Buffer.byteLength = byteLength
23496
23497 function slowToString (encoding, start, end) {
23498 var loweredCase = false
23499
23500 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
23501 // property of a typed array.
23502
23503 // This behaves neither like String nor Uint8Array in that we set start/end
23504 // to their upper/lower bounds if the value passed is out of range.
23505 // undefined is handled specially as per ECMA-262 6th Edition,
23506 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
23507 if (start === undefined || start < 0) {
23508 start = 0
23509 }
23510 // Return early if start > this.length. Done here to prevent potential uint32
23511 // coercion fail below.
23512 if (start > this.length) {
23513 return ''
23514 }
23515
23516 if (end === undefined || end > this.length) {
23517 end = this.length
23518 }
23519
23520 if (end <= 0) {
23521 return ''
23522 }
23523
23524 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
23525 end >>>= 0
23526 start >>>= 0
23527
23528 if (end <= start) {
23529 return ''
23530 }
23531
23532 if (!encoding) encoding = 'utf8'
23533
23534 while (true) {
23535 switch (encoding) {
23536 case 'hex':
23537 return hexSlice(this, start, end)
23538
23539 case 'utf8':
23540 case 'utf-8':
23541 return utf8Slice(this, start, end)
23542
23543 case 'ascii':
23544 return asciiSlice(this, start, end)
23545
23546 case 'latin1':
23547 case 'binary':
23548 return latin1Slice(this, start, end)
23549
23550 case 'base64':
23551 return base64Slice(this, start, end)
23552
23553 case 'ucs2':
23554 case 'ucs-2':
23555 case 'utf16le':
23556 case 'utf-16le':
23557 return utf16leSlice(this, start, end)
23558
23559 default:
23560 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
23561 encoding = (encoding + '').toLowerCase()
23562 loweredCase = true
23563 }
23564 }
23565 }
23566
23567 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
23568 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
23569 // reliably in a browserify context because there could be multiple different
23570 // copies of the 'buffer' package in use. This method works even for Buffer
23571 // instances that were created from another copy of the `buffer` package.
23572 // See: https://github.com/feross/buffer/issues/154
23573 Buffer.prototype._isBuffer = true
23574
23575 function swap (b, n, m) {
23576 var i = b[n]
23577 b[n] = b[m]
23578 b[m] = i
23579 }
23580
23581 Buffer.prototype.swap16 = function swap16 () {
23582 var len = this.length
23583 if (len % 2 !== 0) {
23584 throw new RangeError('Buffer size must be a multiple of 16-bits')
23585 }
23586 for (var i = 0; i < len; i += 2) {
23587 swap(this, i, i + 1)
23588 }
23589 return this
23590 }
23591
23592 Buffer.prototype.swap32 = function swap32 () {
23593 var len = this.length
23594 if (len % 4 !== 0) {
23595 throw new RangeError('Buffer size must be a multiple of 32-bits')
23596 }
23597 for (var i = 0; i < len; i += 4) {
23598 swap(this, i, i + 3)
23599 swap(this, i + 1, i + 2)
23600 }
23601 return this
23602 }
23603
23604 Buffer.prototype.swap64 = function swap64 () {
23605 var len = this.length
23606 if (len % 8 !== 0) {
23607 throw new RangeError('Buffer size must be a multiple of 64-bits')
23608 }
23609 for (var i = 0; i < len; i += 8) {
23610 swap(this, i, i + 7)
23611 swap(this, i + 1, i + 6)
23612 swap(this, i + 2, i + 5)
23613 swap(this, i + 3, i + 4)
23614 }
23615 return this
23616 }
23617
23618 Buffer.prototype.toString = function toString () {
23619 var length = this.length
23620 if (length === 0) return ''
23621 if (arguments.length === 0) return utf8Slice(this, 0, length)
23622 return slowToString.apply(this, arguments)
23623 }
23624
23625 Buffer.prototype.equals = function equals (b) {
23626 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
23627 if (this === b) return true
23628 return Buffer.compare(this, b) === 0
23629 }
23630
23631 Buffer.prototype.inspect = function inspect () {
23632 var str = ''
23633 var max = exports.INSPECT_MAX_BYTES
23634 if (this.length > 0) {
23635 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
23636 if (this.length > max) str += ' ... '
23637 }
23638 return '<Buffer ' + str + '>'
23639 }
23640
23641 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
23642 if (!Buffer.isBuffer(target)) {
23643 throw new TypeError('Argument must be a Buffer')
23644 }
23645
23646 if (start === undefined) {
23647 start = 0
23648 }
23649 if (end === undefined) {
23650 end = target ? target.length : 0
23651 }
23652 if (thisStart === undefined) {
23653 thisStart = 0
23654 }
23655 if (thisEnd === undefined) {
23656 thisEnd = this.length
23657 }
23658
23659 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
23660 throw new RangeError('out of range index')
23661 }
23662
23663 if (thisStart >= thisEnd && start >= end) {
23664 return 0
23665 }
23666 if (thisStart >= thisEnd) {
23667 return -1
23668 }
23669 if (start >= end) {
23670 return 1
23671 }
23672
23673 start >>>= 0
23674 end >>>= 0
23675 thisStart >>>= 0
23676 thisEnd >>>= 0
23677
23678 if (this === target) return 0
23679
23680 var x = thisEnd - thisStart
23681 var y = end - start
23682 var len = Math.min(x, y)
23683
23684 var thisCopy = this.slice(thisStart, thisEnd)
23685 var targetCopy = target.slice(start, end)
23686
23687 for (var i = 0; i < len; ++i) {
23688 if (thisCopy[i] !== targetCopy[i]) {
23689 x = thisCopy[i]
23690 y = targetCopy[i]
23691 break
23692 }
23693 }
23694
23695 if (x < y) return -1
23696 if (y < x) return 1
23697 return 0
23698 }
23699
23700 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
23701 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
23702 //
23703 // Arguments:
23704 // - buffer - a Buffer to search
23705 // - val - a string, Buffer, or number
23706 // - byteOffset - an index into `buffer`; will be clamped to an int32
23707 // - encoding - an optional encoding, relevant is val is a string
23708 // - dir - true for indexOf, false for lastIndexOf
23709 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
23710 // Empty buffer means no match
23711 if (buffer.length === 0) return -1
23712
23713 // Normalize byteOffset
23714 if (typeof byteOffset === 'string') {
23715 encoding = byteOffset
23716 byteOffset = 0
23717 } else if (byteOffset > 0x7fffffff) {
23718 byteOffset = 0x7fffffff
23719 } else if (byteOffset < -0x80000000) {
23720 byteOffset = -0x80000000
23721 }
23722 byteOffset = +byteOffset // Coerce to Number.
23723 if (isNaN(byteOffset)) {
23724 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
23725 byteOffset = dir ? 0 : (buffer.length - 1)
23726 }
23727
23728 // Normalize byteOffset: negative offsets start from the end of the buffer
23729 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
23730 if (byteOffset >= buffer.length) {
23731 if (dir) return -1
23732 else byteOffset = buffer.length - 1
23733 } else if (byteOffset < 0) {
23734 if (dir) byteOffset = 0
23735 else return -1
23736 }
23737
23738 // Normalize val
23739 if (typeof val === 'string') {
23740 val = Buffer.from(val, encoding)
23741 }
23742
23743 // Finally, search either indexOf (if dir is true) or lastIndexOf
23744 if (Buffer.isBuffer(val)) {
23745 // Special case: looking for empty string/buffer always fails
23746 if (val.length === 0) {
23747 return -1
23748 }
23749 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
23750 } else if (typeof val === 'number') {
23751 val = val & 0xFF // Search for a byte value [0-255]
23752 if (typeof Uint8Array.prototype.indexOf === 'function') {
23753 if (dir) {
23754 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
23755 } else {
23756 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
23757 }
23758 }
23759 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
23760 }
23761
23762 throw new TypeError('val must be string, number or Buffer')
23763 }
23764
23765 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
23766 var indexSize = 1
23767 var arrLength = arr.length
23768 var valLength = val.length
23769
23770 if (encoding !== undefined) {
23771 encoding = String(encoding).toLowerCase()
23772 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
23773 encoding === 'utf16le' || encoding === 'utf-16le') {
23774 if (arr.length < 2 || val.length < 2) {
23775 return -1
23776 }
23777 indexSize = 2
23778 arrLength /= 2
23779 valLength /= 2
23780 byteOffset /= 2
23781 }
23782 }
23783
23784 function read (buf, i) {
23785 if (indexSize === 1) {
23786 return buf[i]
23787 } else {
23788 return buf.readUInt16BE(i * indexSize)
23789 }
23790 }
23791
23792 var i
23793 if (dir) {
23794 var foundIndex = -1
23795 for (i = byteOffset; i < arrLength; i++) {
23796 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
23797 if (foundIndex === -1) foundIndex = i
23798 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
23799 } else {
23800 if (foundIndex !== -1) i -= i - foundIndex
23801 foundIndex = -1
23802 }
23803 }
23804 } else {
23805 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
23806 for (i = byteOffset; i >= 0; i--) {
23807 var found = true
23808 for (var j = 0; j < valLength; j++) {
23809 if (read(arr, i + j) !== read(val, j)) {
23810 found = false
23811 break
23812 }
23813 }
23814 if (found) return i
23815 }
23816 }
23817
23818 return -1
23819 }
23820
23821 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
23822 return this.indexOf(val, byteOffset, encoding) !== -1
23823 }
23824
23825 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
23826 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
23827 }
23828
23829 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
23830 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
23831 }
23832
23833 function hexWrite (buf, string, offset, length) {
23834 offset = Number(offset) || 0
23835 var remaining = buf.length - offset
23836 if (!length) {
23837 length = remaining
23838 } else {
23839 length = Number(length)
23840 if (length > remaining) {
23841 length = remaining
23842 }
23843 }
23844
23845 // must be an even number of digits
23846 var strLen = string.length
23847 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
23848
23849 if (length > strLen / 2) {
23850 length = strLen / 2
23851 }
23852 for (var i = 0; i < length; ++i) {
23853 var parsed = parseInt(string.substr(i * 2, 2), 16)
23854 if (isNaN(parsed)) return i
23855 buf[offset + i] = parsed
23856 }
23857 return i
23858 }
23859
23860 function utf8Write (buf, string, offset, length) {
23861 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
23862 }
23863
23864 function asciiWrite (buf, string, offset, length) {
23865 return blitBuffer(asciiToBytes(string), buf, offset, length)
23866 }
23867
23868 function latin1Write (buf, string, offset, length) {
23869 return asciiWrite(buf, string, offset, length)
23870 }
23871
23872 function base64Write (buf, string, offset, length) {
23873 return blitBuffer(base64ToBytes(string), buf, offset, length)
23874 }
23875
23876 function ucs2Write (buf, string, offset, length) {
23877 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
23878 }
23879
23880 Buffer.prototype.write = function write (string, offset, length, encoding) {
23881 // Buffer#write(string)
23882 if (offset === undefined) {
23883 encoding = 'utf8'
23884 length = this.length
23885 offset = 0
23886 // Buffer#write(string, encoding)
23887 } else if (length === undefined && typeof offset === 'string') {
23888 encoding = offset
23889 length = this.length
23890 offset = 0
23891 // Buffer#write(string, offset[, length][, encoding])
23892 } else if (isFinite(offset)) {
23893 offset = offset >>> 0
23894 if (isFinite(length)) {
23895 length = length >>> 0
23896 if (encoding === undefined) encoding = 'utf8'
23897 } else {
23898 encoding = length
23899 length = undefined
23900 }
23901 } else {
23902 throw new Error(
23903 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
23904 )
23905 }
23906
23907 var remaining = this.length - offset
23908 if (length === undefined || length > remaining) length = remaining
23909
23910 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
23911 throw new RangeError('Attempt to write outside buffer bounds')
23912 }
23913
23914 if (!encoding) encoding = 'utf8'
23915
23916 var loweredCase = false
23917 for (;;) {
23918 switch (encoding) {
23919 case 'hex':
23920 return hexWrite(this, string, offset, length)
23921
23922 case 'utf8':
23923 case 'utf-8':
23924 return utf8Write(this, string, offset, length)
23925
23926 case 'ascii':
23927 return asciiWrite(this, string, offset, length)
23928
23929 case 'latin1':
23930 case 'binary':
23931 return latin1Write(this, string, offset, length)
23932
23933 case 'base64':
23934 // Warning: maxLength not taken into account in base64Write
23935 return base64Write(this, string, offset, length)
23936
23937 case 'ucs2':
23938 case 'ucs-2':
23939 case 'utf16le':
23940 case 'utf-16le':
23941 return ucs2Write(this, string, offset, length)
23942
23943 default:
23944 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
23945 encoding = ('' + encoding).toLowerCase()
23946 loweredCase = true
23947 }
23948 }
23949 }
23950
23951 Buffer.prototype.toJSON = function toJSON () {
23952 return {
23953 type: 'Buffer',
23954 data: Array.prototype.slice.call(this._arr || this, 0)
23955 }
23956 }
23957
23958 function base64Slice (buf, start, end) {
23959 if (start === 0 && end === buf.length) {
23960 return base64.fromByteArray(buf)
23961 } else {
23962 return base64.fromByteArray(buf.slice(start, end))
23963 }
23964 }
23965
23966 function utf8Slice (buf, start, end) {
23967 end = Math.min(buf.length, end)
23968 var res = []
23969
23970 var i = start
23971 while (i < end) {
23972 var firstByte = buf[i]
23973 var codePoint = null
23974 var bytesPerSequence = (firstByte > 0xEF) ? 4
23975 : (firstByte > 0xDF) ? 3
23976 : (firstByte > 0xBF) ? 2
23977 : 1
23978
23979 if (i + bytesPerSequence <= end) {
23980 var secondByte, thirdByte, fourthByte, tempCodePoint
23981
23982 switch (bytesPerSequence) {
23983 case 1:
23984 if (firstByte < 0x80) {
23985 codePoint = firstByte
23986 }
23987 break
23988 case 2:
23989 secondByte = buf[i + 1]
23990 if ((secondByte & 0xC0) === 0x80) {
23991 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
23992 if (tempCodePoint > 0x7F) {
23993 codePoint = tempCodePoint
23994 }
23995 }
23996 break
23997 case 3:
23998 secondByte = buf[i + 1]
23999 thirdByte = buf[i + 2]
24000 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
24001 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
24002 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
24003 codePoint = tempCodePoint
24004 }
24005 }
24006 break
24007 case 4:
24008 secondByte = buf[i + 1]
24009 thirdByte = buf[i + 2]
24010 fourthByte = buf[i + 3]
24011 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
24012 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
24013 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
24014 codePoint = tempCodePoint
24015 }
24016 }
24017 }
24018 }
24019
24020 if (codePoint === null) {
24021 // we did not generate a valid codePoint so insert a
24022 // replacement char (U+FFFD) and advance only 1 byte
24023 codePoint = 0xFFFD
24024 bytesPerSequence = 1
24025 } else if (codePoint > 0xFFFF) {
24026 // encode to utf16 (surrogate pair dance)
24027 codePoint -= 0x10000
24028 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
24029 codePoint = 0xDC00 | codePoint & 0x3FF
24030 }
24031
24032 res.push(codePoint)
24033 i += bytesPerSequence
24034 }
24035
24036 return decodeCodePointsArray(res)
24037 }
24038
24039 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
24040 // the lowest limit is Chrome, with 0x10000 args.
24041 // We go 1 magnitude less, for safety
24042 var MAX_ARGUMENTS_LENGTH = 0x1000
24043
24044 function decodeCodePointsArray (codePoints) {
24045 var len = codePoints.length
24046 if (len <= MAX_ARGUMENTS_LENGTH) {
24047 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
24048 }
24049
24050 // Decode in chunks to avoid "call stack size exceeded".
24051 var res = ''
24052 var i = 0
24053 while (i < len) {
24054 res += String.fromCharCode.apply(
24055 String,
24056 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
24057 )
24058 }
24059 return res
24060 }
24061
24062 function asciiSlice (buf, start, end) {
24063 var ret = ''
24064 end = Math.min(buf.length, end)
24065
24066 for (var i = start; i < end; ++i) {
24067 ret += String.fromCharCode(buf[i] & 0x7F)
24068 }
24069 return ret
24070 }
24071
24072 function latin1Slice (buf, start, end) {
24073 var ret = ''
24074 end = Math.min(buf.length, end)
24075
24076 for (var i = start; i < end; ++i) {
24077 ret += String.fromCharCode(buf[i])
24078 }
24079 return ret
24080 }
24081
24082 function hexSlice (buf, start, end) {
24083 var len = buf.length
24084
24085 if (!start || start < 0) start = 0
24086 if (!end || end < 0 || end > len) end = len
24087
24088 var out = ''
24089 for (var i = start; i < end; ++i) {
24090 out += toHex(buf[i])
24091 }
24092 return out
24093 }
24094
24095 function utf16leSlice (buf, start, end) {
24096 var bytes = buf.slice(start, end)
24097 var res = ''
24098 for (var i = 0; i < bytes.length; i += 2) {
24099 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
24100 }
24101 return res
24102 }
24103
24104 Buffer.prototype.slice = function slice (start, end) {
24105 var len = this.length
24106 start = ~~start
24107 end = end === undefined ? len : ~~end
24108
24109 if (start < 0) {
24110 start += len
24111 if (start < 0) start = 0
24112 } else if (start > len) {
24113 start = len
24114 }
24115
24116 if (end < 0) {
24117 end += len
24118 if (end < 0) end = 0
24119 } else if (end > len) {
24120 end = len
24121 }
24122
24123 if (end < start) end = start
24124
24125 var newBuf = this.subarray(start, end)
24126 // Return an augmented `Uint8Array` instance
24127 newBuf.__proto__ = Buffer.prototype
24128 return newBuf
24129 }
24130
24131 /*
24132 * Need to make sure that buffer isn't trying to write out of bounds.
24133 */
24134 function checkOffset (offset, ext, length) {
24135 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
24136 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
24137 }
24138
24139 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
24140 offset = offset >>> 0
24141 byteLength = byteLength >>> 0
24142 if (!noAssert) checkOffset(offset, byteLength, this.length)
24143
24144 var val = this[offset]
24145 var mul = 1
24146 var i = 0
24147 while (++i < byteLength && (mul *= 0x100)) {
24148 val += this[offset + i] * mul
24149 }
24150
24151 return val
24152 }
24153
24154 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
24155 offset = offset >>> 0
24156 byteLength = byteLength >>> 0
24157 if (!noAssert) {
24158 checkOffset(offset, byteLength, this.length)
24159 }
24160
24161 var val = this[offset + --byteLength]
24162 var mul = 1
24163 while (byteLength > 0 && (mul *= 0x100)) {
24164 val += this[offset + --byteLength] * mul
24165 }
24166
24167 return val
24168 }
24169
24170 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
24171 offset = offset >>> 0
24172 if (!noAssert) checkOffset(offset, 1, this.length)
24173 return this[offset]
24174 }
24175
24176 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
24177 offset = offset >>> 0
24178 if (!noAssert) checkOffset(offset, 2, this.length)
24179 return this[offset] | (this[offset + 1] << 8)
24180 }
24181
24182 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
24183 offset = offset >>> 0
24184 if (!noAssert) checkOffset(offset, 2, this.length)
24185 return (this[offset] << 8) | this[offset + 1]
24186 }
24187
24188 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
24189 offset = offset >>> 0
24190 if (!noAssert) checkOffset(offset, 4, this.length)
24191
24192 return ((this[offset]) |
24193 (this[offset + 1] << 8) |
24194 (this[offset + 2] << 16)) +
24195 (this[offset + 3] * 0x1000000)
24196 }
24197
24198 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
24199 offset = offset >>> 0
24200 if (!noAssert) checkOffset(offset, 4, this.length)
24201
24202 return (this[offset] * 0x1000000) +
24203 ((this[offset + 1] << 16) |
24204 (this[offset + 2] << 8) |
24205 this[offset + 3])
24206 }
24207
24208 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
24209 offset = offset >>> 0
24210 byteLength = byteLength >>> 0
24211 if (!noAssert) checkOffset(offset, byteLength, this.length)
24212
24213 var val = this[offset]
24214 var mul = 1
24215 var i = 0
24216 while (++i < byteLength && (mul *= 0x100)) {
24217 val += this[offset + i] * mul
24218 }
24219 mul *= 0x80
24220
24221 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
24222
24223 return val
24224 }
24225
24226 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
24227 offset = offset >>> 0
24228 byteLength = byteLength >>> 0
24229 if (!noAssert) checkOffset(offset, byteLength, this.length)
24230
24231 var i = byteLength
24232 var mul = 1
24233 var val = this[offset + --i]
24234 while (i > 0 && (mul *= 0x100)) {
24235 val += this[offset + --i] * mul
24236 }
24237 mul *= 0x80
24238
24239 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
24240
24241 return val
24242 }
24243
24244 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
24245 offset = offset >>> 0
24246 if (!noAssert) checkOffset(offset, 1, this.length)
24247 if (!(this[offset] & 0x80)) return (this[offset])
24248 return ((0xff - this[offset] + 1) * -1)
24249 }
24250
24251 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
24252 offset = offset >>> 0
24253 if (!noAssert) checkOffset(offset, 2, this.length)
24254 var val = this[offset] | (this[offset + 1] << 8)
24255 return (val & 0x8000) ? val | 0xFFFF0000 : val
24256 }
24257
24258 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
24259 offset = offset >>> 0
24260 if (!noAssert) checkOffset(offset, 2, this.length)
24261 var val = this[offset + 1] | (this[offset] << 8)
24262 return (val & 0x8000) ? val | 0xFFFF0000 : val
24263 }
24264
24265 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
24266 offset = offset >>> 0
24267 if (!noAssert) checkOffset(offset, 4, this.length)
24268
24269 return (this[offset]) |
24270 (this[offset + 1] << 8) |
24271 (this[offset + 2] << 16) |
24272 (this[offset + 3] << 24)
24273 }
24274
24275 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
24276 offset = offset >>> 0
24277 if (!noAssert) checkOffset(offset, 4, this.length)
24278
24279 return (this[offset] << 24) |
24280 (this[offset + 1] << 16) |
24281 (this[offset + 2] << 8) |
24282 (this[offset + 3])
24283 }
24284
24285 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
24286 offset = offset >>> 0
24287 if (!noAssert) checkOffset(offset, 4, this.length)
24288 return ieee754.read(this, offset, true, 23, 4)
24289 }
24290
24291 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
24292 offset = offset >>> 0
24293 if (!noAssert) checkOffset(offset, 4, this.length)
24294 return ieee754.read(this, offset, false, 23, 4)
24295 }
24296
24297 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
24298 offset = offset >>> 0
24299 if (!noAssert) checkOffset(offset, 8, this.length)
24300 return ieee754.read(this, offset, true, 52, 8)
24301 }
24302
24303 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
24304 offset = offset >>> 0
24305 if (!noAssert) checkOffset(offset, 8, this.length)
24306 return ieee754.read(this, offset, false, 52, 8)
24307 }
24308
24309 function checkInt (buf, value, offset, ext, max, min) {
24310 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
24311 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
24312 if (offset + ext > buf.length) throw new RangeError('Index out of range')
24313 }
24314
24315 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
24316 value = +value
24317 offset = offset >>> 0
24318 byteLength = byteLength >>> 0
24319 if (!noAssert) {
24320 var maxBytes = Math.pow(2, 8 * byteLength) - 1
24321 checkInt(this, value, offset, byteLength, maxBytes, 0)
24322 }
24323
24324 var mul = 1
24325 var i = 0
24326 this[offset] = value & 0xFF
24327 while (++i < byteLength && (mul *= 0x100)) {
24328 this[offset + i] = (value / mul) & 0xFF
24329 }
24330
24331 return offset + byteLength
24332 }
24333
24334 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
24335 value = +value
24336 offset = offset >>> 0
24337 byteLength = byteLength >>> 0
24338 if (!noAssert) {
24339 var maxBytes = Math.pow(2, 8 * byteLength) - 1
24340 checkInt(this, value, offset, byteLength, maxBytes, 0)
24341 }
24342
24343 var i = byteLength - 1
24344 var mul = 1
24345 this[offset + i] = value & 0xFF
24346 while (--i >= 0 && (mul *= 0x100)) {
24347 this[offset + i] = (value / mul) & 0xFF
24348 }
24349
24350 return offset + byteLength
24351 }
24352
24353 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
24354 value = +value
24355 offset = offset >>> 0
24356 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
24357 this[offset] = (value & 0xff)
24358 return offset + 1
24359 }
24360
24361 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
24362 value = +value
24363 offset = offset >>> 0
24364 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
24365 this[offset] = (value & 0xff)
24366 this[offset + 1] = (value >>> 8)
24367 return offset + 2
24368 }
24369
24370 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
24371 value = +value
24372 offset = offset >>> 0
24373 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
24374 this[offset] = (value >>> 8)
24375 this[offset + 1] = (value & 0xff)
24376 return offset + 2
24377 }
24378
24379 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
24380 value = +value
24381 offset = offset >>> 0
24382 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
24383 this[offset + 3] = (value >>> 24)
24384 this[offset + 2] = (value >>> 16)
24385 this[offset + 1] = (value >>> 8)
24386 this[offset] = (value & 0xff)
24387 return offset + 4
24388 }
24389
24390 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
24391 value = +value
24392 offset = offset >>> 0
24393 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
24394 this[offset] = (value >>> 24)
24395 this[offset + 1] = (value >>> 16)
24396 this[offset + 2] = (value >>> 8)
24397 this[offset + 3] = (value & 0xff)
24398 return offset + 4
24399 }
24400
24401 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
24402 value = +value
24403 offset = offset >>> 0
24404 if (!noAssert) {
24405 var limit = Math.pow(2, (8 * byteLength) - 1)
24406
24407 checkInt(this, value, offset, byteLength, limit - 1, -limit)
24408 }
24409
24410 var i = 0
24411 var mul = 1
24412 var sub = 0
24413 this[offset] = value & 0xFF
24414 while (++i < byteLength && (mul *= 0x100)) {
24415 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
24416 sub = 1
24417 }
24418 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
24419 }
24420
24421 return offset + byteLength
24422 }
24423
24424 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
24425 value = +value
24426 offset = offset >>> 0
24427 if (!noAssert) {
24428 var limit = Math.pow(2, (8 * byteLength) - 1)
24429
24430 checkInt(this, value, offset, byteLength, limit - 1, -limit)
24431 }
24432
24433 var i = byteLength - 1
24434 var mul = 1
24435 var sub = 0
24436 this[offset + i] = value & 0xFF
24437 while (--i >= 0 && (mul *= 0x100)) {
24438 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
24439 sub = 1
24440 }
24441 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
24442 }
24443
24444 return offset + byteLength
24445 }
24446
24447 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
24448 value = +value
24449 offset = offset >>> 0
24450 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
24451 if (value < 0) value = 0xff + value + 1
24452 this[offset] = (value & 0xff)
24453 return offset + 1
24454 }
24455
24456 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
24457 value = +value
24458 offset = offset >>> 0
24459 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
24460 this[offset] = (value & 0xff)
24461 this[offset + 1] = (value >>> 8)
24462 return offset + 2
24463 }
24464
24465 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
24466 value = +value
24467 offset = offset >>> 0
24468 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
24469 this[offset] = (value >>> 8)
24470 this[offset + 1] = (value & 0xff)
24471 return offset + 2
24472 }
24473
24474 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
24475 value = +value
24476 offset = offset >>> 0
24477 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
24478 this[offset] = (value & 0xff)
24479 this[offset + 1] = (value >>> 8)
24480 this[offset + 2] = (value >>> 16)
24481 this[offset + 3] = (value >>> 24)
24482 return offset + 4
24483 }
24484
24485 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
24486 value = +value
24487 offset = offset >>> 0
24488 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
24489 if (value < 0) value = 0xffffffff + value + 1
24490 this[offset] = (value >>> 24)
24491 this[offset + 1] = (value >>> 16)
24492 this[offset + 2] = (value >>> 8)
24493 this[offset + 3] = (value & 0xff)
24494 return offset + 4
24495 }
24496
24497 function checkIEEE754 (buf, value, offset, ext, max, min) {
24498 if (offset + ext > buf.length) throw new RangeError('Index out of range')
24499 if (offset < 0) throw new RangeError('Index out of range')
24500 }
24501
24502 function writeFloat (buf, value, offset, littleEndian, noAssert) {
24503 value = +value
24504 offset = offset >>> 0
24505 if (!noAssert) {
24506 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
24507 }
24508 ieee754.write(buf, value, offset, littleEndian, 23, 4)
24509 return offset + 4
24510 }
24511
24512 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
24513 return writeFloat(this, value, offset, true, noAssert)
24514 }
24515
24516 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
24517 return writeFloat(this, value, offset, false, noAssert)
24518 }
24519
24520 function writeDouble (buf, value, offset, littleEndian, noAssert) {
24521 value = +value
24522 offset = offset >>> 0
24523 if (!noAssert) {
24524 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
24525 }
24526 ieee754.write(buf, value, offset, littleEndian, 52, 8)
24527 return offset + 8
24528 }
24529
24530 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
24531 return writeDouble(this, value, offset, true, noAssert)
24532 }
24533
24534 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
24535 return writeDouble(this, value, offset, false, noAssert)
24536 }
24537
24538 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
24539 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
24540 if (!start) start = 0
24541 if (!end && end !== 0) end = this.length
24542 if (targetStart >= target.length) targetStart = target.length
24543 if (!targetStart) targetStart = 0
24544 if (end > 0 && end < start) end = start
24545
24546 // Copy 0 bytes; we're done
24547 if (end === start) return 0
24548 if (target.length === 0 || this.length === 0) return 0
24549
24550 // Fatal error conditions
24551 if (targetStart < 0) {
24552 throw new RangeError('targetStart out of bounds')
24553 }
24554 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
24555 if (end < 0) throw new RangeError('sourceEnd out of bounds')
24556
24557 // Are we oob?
24558 if (end > this.length) end = this.length
24559 if (target.length - targetStart < end - start) {
24560 end = target.length - targetStart + start
24561 }
24562
24563 var len = end - start
24564 var i
24565
24566 if (this === target && start < targetStart && targetStart < end) {
24567 // descending copy from end
24568 for (i = len - 1; i >= 0; --i) {
24569 target[i + targetStart] = this[i + start]
24570 }
24571 } else if (len < 1000) {
24572 // ascending copy from start
24573 for (i = 0; i < len; ++i) {
24574 target[i + targetStart] = this[i + start]
24575 }
24576 } else {
24577 Uint8Array.prototype.set.call(
24578 target,
24579 this.subarray(start, start + len),
24580 targetStart
24581 )
24582 }
24583
24584 return len
24585 }
24586
24587 // Usage:
24588 // buffer.fill(number[, offset[, end]])
24589 // buffer.fill(buffer[, offset[, end]])
24590 // buffer.fill(string[, offset[, end]][, encoding])
24591 Buffer.prototype.fill = function fill (val, start, end, encoding) {
24592 // Handle string cases:
24593 if (typeof val === 'string') {
24594 if (typeof start === 'string') {
24595 encoding = start
24596 start = 0
24597 end = this.length
24598 } else if (typeof end === 'string') {
24599 encoding = end
24600 end = this.length
24601 }
24602 if (val.length === 1) {
24603 var code = val.charCodeAt(0)
24604 if (code < 256) {
24605 val = code
24606 }
24607 }
24608 if (encoding !== undefined && typeof encoding !== 'string') {
24609 throw new TypeError('encoding must be a string')
24610 }
24611 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
24612 throw new TypeError('Unknown encoding: ' + encoding)
24613 }
24614 } else if (typeof val === 'number') {
24615 val = val & 255
24616 }
24617
24618 // Invalid ranges are not set to a default, so can range check early.
24619 if (start < 0 || this.length < start || this.length < end) {
24620 throw new RangeError('Out of range index')
24621 }
24622
24623 if (end <= start) {
24624 return this
24625 }
24626
24627 start = start >>> 0
24628 end = end === undefined ? this.length : end >>> 0
24629
24630 if (!val) val = 0
24631
24632 var i
24633 if (typeof val === 'number') {
24634 for (i = start; i < end; ++i) {
24635 this[i] = val
24636 }
24637 } else {
24638 var bytes = Buffer.isBuffer(val)
24639 ? val
24640 : new Buffer(val, encoding)
24641 var len = bytes.length
24642 for (i = 0; i < end - start; ++i) {
24643 this[i + start] = bytes[i % len]
24644 }
24645 }
24646
24647 return this
24648 }
24649
24650 // HELPER FUNCTIONS
24651 // ================
24652
24653 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
24654
24655 function base64clean (str) {
24656 // Node strips out invalid characters like \n and \t from the string, base64-js does not
24657 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
24658 // Node converts strings with length < 2 to ''
24659 if (str.length < 2) return ''
24660 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
24661 while (str.length % 4 !== 0) {
24662 str = str + '='
24663 }
24664 return str
24665 }
24666
24667 function stringtrim (str) {
24668 if (str.trim) return str.trim()
24669 return str.replace(/^\s+|\s+$/g, '')
24670 }
24671
24672 function toHex (n) {
24673 if (n < 16) return '0' + n.toString(16)
24674 return n.toString(16)
24675 }
24676
24677 function utf8ToBytes (string, units) {
24678 units = units || Infinity
24679 var codePoint
24680 var length = string.length
24681 var leadSurrogate = null
24682 var bytes = []
24683
24684 for (var i = 0; i < length; ++i) {
24685 codePoint = string.charCodeAt(i)
24686
24687 // is surrogate component
24688 if (codePoint > 0xD7FF && codePoint < 0xE000) {
24689 // last char was a lead
24690 if (!leadSurrogate) {
24691 // no lead yet
24692 if (codePoint > 0xDBFF) {
24693 // unexpected trail
24694 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24695 continue
24696 } else if (i + 1 === length) {
24697 // unpaired lead
24698 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24699 continue
24700 }
24701
24702 // valid lead
24703 leadSurrogate = codePoint
24704
24705 continue
24706 }
24707
24708 // 2 leads in a row
24709 if (codePoint < 0xDC00) {
24710 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24711 leadSurrogate = codePoint
24712 continue
24713 }
24714
24715 // valid surrogate pair
24716 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
24717 } else if (leadSurrogate) {
24718 // valid bmp char, but last char was a lead
24719 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24720 }
24721
24722 leadSurrogate = null
24723
24724 // encode utf8
24725 if (codePoint < 0x80) {
24726 if ((units -= 1) < 0) break
24727 bytes.push(codePoint)
24728 } else if (codePoint < 0x800) {
24729 if ((units -= 2) < 0) break
24730 bytes.push(
24731 codePoint >> 0x6 | 0xC0,
24732 codePoint & 0x3F | 0x80
24733 )
24734 } else if (codePoint < 0x10000) {
24735 if ((units -= 3) < 0) break
24736 bytes.push(
24737 codePoint >> 0xC | 0xE0,
24738 codePoint >> 0x6 & 0x3F | 0x80,
24739 codePoint & 0x3F | 0x80
24740 )
24741 } else if (codePoint < 0x110000) {
24742 if ((units -= 4) < 0) break
24743 bytes.push(
24744 codePoint >> 0x12 | 0xF0,
24745 codePoint >> 0xC & 0x3F | 0x80,
24746 codePoint >> 0x6 & 0x3F | 0x80,
24747 codePoint & 0x3F | 0x80
24748 )
24749 } else {
24750 throw new Error('Invalid code point')
24751 }
24752 }
24753
24754 return bytes
24755 }
24756
24757 function asciiToBytes (str) {
24758 var byteArray = []
24759 for (var i = 0; i < str.length; ++i) {
24760 // Node's code seems to be doing this and not & 0x7F..
24761 byteArray.push(str.charCodeAt(i) & 0xFF)
24762 }
24763 return byteArray
24764 }
24765
24766 function utf16leToBytes (str, units) {
24767 var c, hi, lo
24768 var byteArray = []
24769 for (var i = 0; i < str.length; ++i) {
24770 if ((units -= 2) < 0) break
24771
24772 c = str.charCodeAt(i)
24773 hi = c >> 8
24774 lo = c % 256
24775 byteArray.push(lo)
24776 byteArray.push(hi)
24777 }
24778
24779 return byteArray
24780 }
24781
24782 function base64ToBytes (str) {
24783 return base64.toByteArray(base64clean(str))
24784 }
24785
24786 function blitBuffer (src, dst, offset, length) {
24787 for (var i = 0; i < length; ++i) {
24788 if ((i + offset >= dst.length) || (i >= src.length)) break
24789 dst[i + offset] = src[i]
24790 }
24791 return i
24792 }
24793
24794 function isnan (val) {
24795 return val !== val // eslint-disable-line no-self-compare
24796 }
24797
24798 },{"base64-js":2,"ieee754":8}],6:[function(require,module,exports){
24799 (function (Buffer){
24800 // Copyright Joyent, Inc. and other Node contributors.
24801 //
24802 // Permission is hereby granted, free of charge, to any person obtaining a
24803 // copy of this software and associated documentation files (the
24804 // "Software"), to deal in the Software without restriction, including
24805 // without limitation the rights to use, copy, modify, merge, publish,
24806 // distribute, sublicense, and/or sell copies of the Software, and to permit
24807 // persons to whom the Software is furnished to do so, subject to the
24808 // following conditions:
24809 //
24810 // The above copyright notice and this permission notice shall be included
24811 // in all copies or substantial portions of the Software.
24812 //
24813 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24814 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24815 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
24816 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
24817 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24818 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24819 // USE OR OTHER DEALINGS IN THE SOFTWARE.
24820
24821 // NOTE: These type checking functions intentionally don't use `instanceof`
24822 // because it is fragile and can be easily faked with `Object.create()`.
24823
24824 function isArray(arg) {
24825 if (Array.isArray) {
24826 return Array.isArray(arg);
24827 }
24828 return objectToString(arg) === '[object Array]';
24829 }
24830 exports.isArray = isArray;
24831
24832 function isBoolean(arg) {
24833 return typeof arg === 'boolean';
24834 }
24835 exports.isBoolean = isBoolean;
24836
24837 function isNull(arg) {
24838 return arg === null;
24839 }
24840 exports.isNull = isNull;
24841
24842 function isNullOrUndefined(arg) {
24843 return arg == null;
24844 }
24845 exports.isNullOrUndefined = isNullOrUndefined;
24846
24847 function isNumber(arg) {
24848 return typeof arg === 'number';
24849 }
24850 exports.isNumber = isNumber;
24851
24852 function isString(arg) {
24853 return typeof arg === 'string';
24854 }
24855 exports.isString = isString;
24856
24857 function isSymbol(arg) {
24858 return typeof arg === 'symbol';
24859 }
24860 exports.isSymbol = isSymbol;
24861
24862 function isUndefined(arg) {
24863 return arg === void 0;
24864 }
24865 exports.isUndefined = isUndefined;
24866
24867 function isRegExp(re) {
24868 return objectToString(re) === '[object RegExp]';
24869 }
24870 exports.isRegExp = isRegExp;
24871
24872 function isObject(arg) {
24873 return typeof arg === 'object' && arg !== null;
24874 }
24875 exports.isObject = isObject;
24876
24877 function isDate(d) {
24878 return objectToString(d) === '[object Date]';
24879 }
24880 exports.isDate = isDate;
24881
24882 function isError(e) {
24883 return (objectToString(e) === '[object Error]' || e instanceof Error);
24884 }
24885 exports.isError = isError;
24886
24887 function isFunction(arg) {
24888 return typeof arg === 'function';
24889 }
24890 exports.isFunction = isFunction;
24891
24892 function isPrimitive(arg) {
24893 return arg === null ||
24894 typeof arg === 'boolean' ||
24895 typeof arg === 'number' ||
24896 typeof arg === 'string' ||
24897 typeof arg === 'symbol' || // ES6 symbol
24898 typeof arg === 'undefined';
24899 }
24900 exports.isPrimitive = isPrimitive;
24901
24902 exports.isBuffer = Buffer.isBuffer;
24903
24904 function objectToString(o) {
24905 return Object.prototype.toString.call(o);
24906 }
24907
24908 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
24909 },{"../../is-buffer/index.js":10}],7:[function(require,module,exports){
24910 // Copyright Joyent, Inc. and other Node contributors.
24911 //
24912 // Permission is hereby granted, free of charge, to any person obtaining a
24913 // copy of this software and associated documentation files (the
24914 // "Software"), to deal in the Software without restriction, including
24915 // without limitation the rights to use, copy, modify, merge, publish,
24916 // distribute, sublicense, and/or sell copies of the Software, and to permit
24917 // persons to whom the Software is furnished to do so, subject to the
24918 // following conditions:
24919 //
24920 // The above copyright notice and this permission notice shall be included
24921 // in all copies or substantial portions of the Software.
24922 //
24923 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24924 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24925 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
24926 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
24927 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24928 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24929 // USE OR OTHER DEALINGS IN THE SOFTWARE.
24930
24931 function EventEmitter() {
24932 this._events = this._events || {};
24933 this._maxListeners = this._maxListeners || undefined;
24934 }
24935 module.exports = EventEmitter;
24936
24937 // Backwards-compat with node 0.10.x
24938 EventEmitter.EventEmitter = EventEmitter;
24939
24940 EventEmitter.prototype._events = undefined;
24941 EventEmitter.prototype._maxListeners = undefined;
24942
24943 // By default EventEmitters will print a warning if more than 10 listeners are
24944 // added to it. This is a useful default which helps finding memory leaks.
24945 EventEmitter.defaultMaxListeners = 10;
24946
24947 // Obviously not all Emitters should be limited to 10. This function allows
24948 // that to be increased. Set to zero for unlimited.
24949 EventEmitter.prototype.setMaxListeners = function(n) {
24950 if (!isNumber(n) || n < 0 || isNaN(n))
24951 throw TypeError('n must be a positive number');
24952 this._maxListeners = n;
24953 return this;
24954 };
24955
24956 EventEmitter.prototype.emit = function(type) {
24957 var er, handler, len, args, i, listeners;
24958
24959 if (!this._events)
24960 this._events = {};
24961
24962 // If there is no 'error' event listener then throw.
24963 if (type === 'error') {
24964 if (!this._events.error ||
24965 (isObject(this._events.error) && !this._events.error.length)) {
24966 er = arguments[1];
24967 if (er instanceof Error) {
24968 throw er; // Unhandled 'error' event
24969 } else {
24970 // At least give some kind of context to the user
24971 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
24972 err.context = er;
24973 throw err;
24974 }
24975 }
24976 }
24977
24978 handler = this._events[type];
24979
24980 if (isUndefined(handler))
24981 return false;
24982
24983 if (isFunction(handler)) {
24984 switch (arguments.length) {
24985 // fast cases
24986 case 1:
24987 handler.call(this);
24988 break;
24989 case 2:
24990 handler.call(this, arguments[1]);
24991 break;
24992 case 3:
24993 handler.call(this, arguments[1], arguments[2]);
24994 break;
24995 // slower
24996 default:
24997 args = Array.prototype.slice.call(arguments, 1);
24998 handler.apply(this, args);
24999 }
25000 } else if (isObject(handler)) {
25001 args = Array.prototype.slice.call(arguments, 1);
25002 listeners = handler.slice();
25003 len = listeners.length;
25004 for (i = 0; i < len; i++)
25005 listeners[i].apply(this, args);
25006 }
25007
25008 return true;
25009 };
25010
25011 EventEmitter.prototype.addListener = function(type, listener) {
25012 var m;
25013
25014 if (!isFunction(listener))
25015 throw TypeError('listener must be a function');
25016
25017 if (!this._events)
25018 this._events = {};
25019
25020 // To avoid recursion in the case that type === "newListener"! Before
25021 // adding it to the listeners, first emit "newListener".
25022 if (this._events.newListener)
25023 this.emit('newListener', type,
25024 isFunction(listener.listener) ?
25025 listener.listener : listener);
25026
25027 if (!this._events[type])
25028 // Optimize the case of one listener. Don't need the extra array object.
25029 this._events[type] = listener;
25030 else if (isObject(this._events[type]))
25031 // If we've already got an array, just append.
25032 this._events[type].push(listener);
25033 else
25034 // Adding the second element, need to change to array.
25035 this._events[type] = [this._events[type], listener];
25036
25037 // Check for listener leak
25038 if (isObject(this._events[type]) && !this._events[type].warned) {
25039 if (!isUndefined(this._maxListeners)) {
25040 m = this._maxListeners;
25041 } else {
25042 m = EventEmitter.defaultMaxListeners;
25043 }
25044
25045 if (m && m > 0 && this._events[type].length > m) {
25046 this._events[type].warned = true;
25047 console.error('(node) warning: possible EventEmitter memory ' +
25048 'leak detected. %d listeners added. ' +
25049 'Use emitter.setMaxListeners() to increase limit.',
25050 this._events[type].length);
25051 if (typeof console.trace === 'function') {
25052 // not supported in IE 10
25053 console.trace();
25054 }
25055 }
25056 }
25057
25058 return this;
25059 };
25060
25061 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
25062
25063 EventEmitter.prototype.once = function(type, listener) {
25064 if (!isFunction(listener))
25065 throw TypeError('listener must be a function');
25066
25067 var fired = false;
25068
25069 function g() {
25070 this.removeListener(type, g);
25071
25072 if (!fired) {
25073 fired = true;
25074 listener.apply(this, arguments);
25075 }
25076 }
25077
25078 g.listener = listener;
25079 this.on(type, g);
25080
25081 return this;
25082 };
25083
25084 // emits a 'removeListener' event iff the listener was removed
25085 EventEmitter.prototype.removeListener = function(type, listener) {
25086 var list, position, length, i;
25087
25088 if (!isFunction(listener))
25089 throw TypeError('listener must be a function');
25090
25091 if (!this._events || !this._events[type])
25092 return this;
25093
25094 list = this._events[type];
25095 length = list.length;
25096 position = -1;
25097
25098 if (list === listener ||
25099 (isFunction(list.listener) && list.listener === listener)) {
25100 delete this._events[type];
25101 if (this._events.removeListener)
25102 this.emit('removeListener', type, listener);
25103
25104 } else if (isObject(list)) {
25105 for (i = length; i-- > 0;) {
25106 if (list[i] === listener ||
25107 (list[i].listener && list[i].listener === listener)) {
25108 position = i;
25109 break;
25110 }
25111 }
25112
25113 if (position < 0)
25114 return this;
25115
25116 if (list.length === 1) {
25117 list.length = 0;
25118 delete this._events[type];
25119 } else {
25120 list.splice(position, 1);
25121 }
25122
25123 if (this._events.removeListener)
25124 this.emit('removeListener', type, listener);
25125 }
25126
25127 return this;
25128 };
25129
25130 EventEmitter.prototype.removeAllListeners = function(type) {
25131 var key, listeners;
25132
25133 if (!this._events)
25134 return this;
25135
25136 // not listening for removeListener, no need to emit
25137 if (!this._events.removeListener) {
25138 if (arguments.length === 0)
25139 this._events = {};
25140 else if (this._events[type])
25141 delete this._events[type];
25142 return this;
25143 }
25144
25145 // emit removeListener for all listeners on all events
25146 if (arguments.length === 0) {
25147 for (key in this._events) {
25148 if (key === 'removeListener') continue;
25149 this.removeAllListeners(key);
25150 }
25151 this.removeAllListeners('removeListener');
25152 this._events = {};
25153 return this;
25154 }
25155
25156 listeners = this._events[type];
25157
25158 if (isFunction(listeners)) {
25159 this.removeListener(type, listeners);
25160 } else if (listeners) {
25161 // LIFO order
25162 while (listeners.length)
25163 this.removeListener(type, listeners[listeners.length - 1]);
25164 }
25165 delete this._events[type];
25166
25167 return this;
25168 };
25169
25170 EventEmitter.prototype.listeners = function(type) {
25171 var ret;
25172 if (!this._events || !this._events[type])
25173 ret = [];
25174 else if (isFunction(this._events[type]))
25175 ret = [this._events[type]];
25176 else
25177 ret = this._events[type].slice();
25178 return ret;
25179 };
25180
25181 EventEmitter.prototype.listenerCount = function(type) {
25182 if (this._events) {
25183 var evlistener = this._events[type];
25184
25185 if (isFunction(evlistener))
25186 return 1;
25187 else if (evlistener)
25188 return evlistener.length;
25189 }
25190 return 0;
25191 };
25192
25193 EventEmitter.listenerCount = function(emitter, type) {
25194 return emitter.listenerCount(type);
25195 };
25196
25197 function isFunction(arg) {
25198 return typeof arg === 'function';
25199 }
25200
25201 function isNumber(arg) {
25202 return typeof arg === 'number';
25203 }
25204
25205 function isObject(arg) {
25206 return typeof arg === 'object' && arg !== null;
25207 }
25208
25209 function isUndefined(arg) {
25210 return arg === void 0;
25211 }
25212
25213 },{}],8:[function(require,module,exports){
25214 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
25215 var e, m
25216 var eLen = nBytes * 8 - mLen - 1
25217 var eMax = (1 << eLen) - 1
25218 var eBias = eMax >> 1
25219 var nBits = -7
25220 var i = isLE ? (nBytes - 1) : 0
25221 var d = isLE ? -1 : 1
25222 var s = buffer[offset + i]
25223
25224 i += d
25225
25226 e = s & ((1 << (-nBits)) - 1)
25227 s >>= (-nBits)
25228 nBits += eLen
25229 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
25230
25231 m = e & ((1 << (-nBits)) - 1)
25232 e >>= (-nBits)
25233 nBits += mLen
25234 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
25235
25236 if (e === 0) {
25237 e = 1 - eBias
25238 } else if (e === eMax) {
25239 return m ? NaN : ((s ? -1 : 1) * Infinity)
25240 } else {
25241 m = m + Math.pow(2, mLen)
25242 e = e - eBias
25243 }
25244 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
25245 }
25246
25247 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
25248 var e, m, c
25249 var eLen = nBytes * 8 - mLen - 1
25250 var eMax = (1 << eLen) - 1
25251 var eBias = eMax >> 1
25252 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
25253 var i = isLE ? 0 : (nBytes - 1)
25254 var d = isLE ? 1 : -1
25255 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
25256
25257 value = Math.abs(value)
25258
25259 if (isNaN(value) || value === Infinity) {
25260 m = isNaN(value) ? 1 : 0
25261 e = eMax
25262 } else {
25263 e = Math.floor(Math.log(value) / Math.LN2)
25264 if (value * (c = Math.pow(2, -e)) < 1) {
25265 e--
25266 c *= 2
25267 }
25268 if (e + eBias >= 1) {
25269 value += rt / c
25270 } else {
25271 value += rt * Math.pow(2, 1 - eBias)
25272 }
25273 if (value * c >= 2) {
25274 e++
25275 c /= 2
25276 }
25277
25278 if (e + eBias >= eMax) {
25279 m = 0
25280 e = eMax
25281 } else if (e + eBias >= 1) {
25282 m = (value * c - 1) * Math.pow(2, mLen)
25283 e = e + eBias
25284 } else {
25285 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
25286 e = 0
25287 }
25288 }
25289
25290 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
25291
25292 e = (e << mLen) | m
25293 eLen += mLen
25294 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
25295
25296 buffer[offset + i - d] |= s * 128
25297 }
25298
25299 },{}],9:[function(require,module,exports){
25300 if (typeof Object.create === 'function') {
25301 // implementation from standard node.js 'util' module
25302 module.exports = function inherits(ctor, superCtor) {
25303 ctor.super_ = superCtor
25304 ctor.prototype = Object.create(superCtor.prototype, {
25305 constructor: {
25306 value: ctor,
25307 enumerable: false,
25308 writable: true,
25309 configurable: true
25310 }
25311 });
25312 };
25313 } else {
25314 // old school shim for old browsers
25315 module.exports = function inherits(ctor, superCtor) {
25316 ctor.super_ = superCtor
25317 var TempCtor = function () {}
25318 TempCtor.prototype = superCtor.prototype
25319 ctor.prototype = new TempCtor()
25320 ctor.prototype.constructor = ctor
25321 }
25322 }
25323
25324 },{}],10:[function(require,module,exports){
25325 /*!
25326 * Determine if an object is a Buffer
25327 *
25328 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
25329 * @license MIT
25330 */
25331
25332 // The _isBuffer check is for Safari 5-7 support, because it's missing
25333 // Object.prototype.constructor. Remove this eventually
25334 module.exports = function (obj) {
25335 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
25336 }
25337
25338 function isBuffer (obj) {
25339 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
25340 }
25341
25342 // For Node v0.10 support. Remove this eventually.
25343 function isSlowBuffer (obj) {
25344 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
25345 }
25346
25347 },{}],11:[function(require,module,exports){
25348 var toString = {}.toString;
25349
25350 module.exports = Array.isArray || function (arr) {
25351 return toString.call(arr) == '[object Array]';
25352 };
25353
25354 },{}],12:[function(require,module,exports){
25355 (function (process){
25356 'use strict';
25357
25358 if (!process.version ||
25359 process.version.indexOf('v0.') === 0 ||
25360 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
25361 module.exports = nextTick;
25362 } else {
25363 module.exports = process.nextTick;
25364 }
25365
25366 function nextTick(fn, arg1, arg2, arg3) {
25367 if (typeof fn !== 'function') {
25368 throw new TypeError('"callback" argument must be a function');
25369 }
25370 var len = arguments.length;
25371 var args, i;
25372 switch (len) {
25373 case 0:
25374 case 1:
25375 return process.nextTick(fn);
25376 case 2:
25377 return process.nextTick(function afterTickOne() {
25378 fn.call(null, arg1);
25379 });
25380 case 3:
25381 return process.nextTick(function afterTickTwo() {
25382 fn.call(null, arg1, arg2);
25383 });
25384 case 4:
25385 return process.nextTick(function afterTickThree() {
25386 fn.call(null, arg1, arg2, arg3);
25387 });
25388 default:
25389 args = new Array(len - 1);
25390 i = 0;
25391 while (i < args.length) {
25392 args[i++] = arguments[i];
25393 }
25394 return process.nextTick(function afterTick() {
25395 fn.apply(null, args);
25396 });
25397 }
25398 }
25399
25400 }).call(this,require('_process'))
25401 },{"_process":13}],13:[function(require,module,exports){
25402 // shim for using process in browser
25403 var process = module.exports = {};
25404
25405 // cached from whatever global is present so that test runners that stub it
25406 // don't break things. But we need to wrap it in a try catch in case it is
25407 // wrapped in strict mode code which doesn't define any globals. It's inside a
25408 // function because try/catches deoptimize in certain engines.
25409
25410 var cachedSetTimeout;
25411 var cachedClearTimeout;
25412
25413 function defaultSetTimout() {
25414 throw new Error('setTimeout has not been defined');
25415 }
25416 function defaultClearTimeout () {
25417 throw new Error('clearTimeout has not been defined');
25418 }
25419 (function () {
25420 try {
25421 if (typeof setTimeout === 'function') {
25422 cachedSetTimeout = setTimeout;
25423 } else {
25424 cachedSetTimeout = defaultSetTimout;
25425 }
25426 } catch (e) {
25427 cachedSetTimeout = defaultSetTimout;
25428 }
25429 try {
25430 if (typeof clearTimeout === 'function') {
25431 cachedClearTimeout = clearTimeout;
25432 } else {
25433 cachedClearTimeout = defaultClearTimeout;
25434 }
25435 } catch (e) {
25436 cachedClearTimeout = defaultClearTimeout;
25437 }
25438 } ())
25439 function runTimeout(fun) {
25440 if (cachedSetTimeout === setTimeout) {
25441 //normal enviroments in sane situations
25442 return setTimeout(fun, 0);
25443 }
25444 // if setTimeout wasn't available but was latter defined
25445 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
25446 cachedSetTimeout = setTimeout;
25447 return setTimeout(fun, 0);
25448 }
25449 try {
25450 // when when somebody has screwed with setTimeout but no I.E. maddness
25451 return cachedSetTimeout(fun, 0);
25452 } catch(e){
25453 try {
25454 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
25455 return cachedSetTimeout.call(null, fun, 0);
25456 } catch(e){
25457 // 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
25458 return cachedSetTimeout.call(this, fun, 0);
25459 }
25460 }
25461
25462
25463 }
25464 function runClearTimeout(marker) {
25465 if (cachedClearTimeout === clearTimeout) {
25466 //normal enviroments in sane situations
25467 return clearTimeout(marker);
25468 }
25469 // if clearTimeout wasn't available but was latter defined
25470 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
25471 cachedClearTimeout = clearTimeout;
25472 return clearTimeout(marker);
25473 }
25474 try {
25475 // when when somebody has screwed with setTimeout but no I.E. maddness
25476 return cachedClearTimeout(marker);
25477 } catch (e){
25478 try {
25479 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
25480 return cachedClearTimeout.call(null, marker);
25481 } catch (e){
25482 // 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.
25483 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
25484 return cachedClearTimeout.call(this, marker);
25485 }
25486 }
25487
25488
25489
25490 }
25491 var queue = [];
25492 var draining = false;
25493 var currentQueue;
25494 var queueIndex = -1;
25495
25496 function cleanUpNextTick() {
25497 if (!draining || !currentQueue) {
25498 return;
25499 }
25500 draining = false;
25501 if (currentQueue.length) {
25502 queue = currentQueue.concat(queue);
25503 } else {
25504 queueIndex = -1;
25505 }
25506 if (queue.length) {
25507 drainQueue();
25508 }
25509 }
25510
25511 function drainQueue() {
25512 if (draining) {
25513 return;
25514 }
25515 var timeout = runTimeout(cleanUpNextTick);
25516 draining = true;
25517
25518 var len = queue.length;
25519 while(len) {
25520 currentQueue = queue;
25521 queue = [];
25522 while (++queueIndex < len) {
25523 if (currentQueue) {
25524 currentQueue[queueIndex].run();
25525 }
25526 }
25527 queueIndex = -1;
25528 len = queue.length;
25529 }
25530 currentQueue = null;
25531 draining = false;
25532 runClearTimeout(timeout);
25533 }
25534
25535 process.nextTick = function (fun) {
25536 var args = new Array(arguments.length - 1);
25537 if (arguments.length > 1) {
25538 for (var i = 1; i < arguments.length; i++) {
25539 args[i - 1] = arguments[i];
25540 }
25541 }
25542 queue.push(new Item(fun, args));
25543 if (queue.length === 1 && !draining) {
25544 runTimeout(drainQueue);
25545 }
25546 };
25547
25548 // v8 likes predictible objects
25549 function Item(fun, array) {
25550 this.fun = fun;
25551 this.array = array;
25552 }
25553 Item.prototype.run = function () {
25554 this.fun.apply(null, this.array);
25555 };
25556 process.title = 'browser';
25557 process.browser = true;
25558 process.env = {};
25559 process.argv = [];
25560 process.version = ''; // empty string to avoid regexp issues
25561 process.versions = {};
25562
25563 function noop() {}
25564
25565 process.on = noop;
25566 process.addListener = noop;
25567 process.once = noop;
25568 process.off = noop;
25569 process.removeListener = noop;
25570 process.removeAllListeners = noop;
25571 process.emit = noop;
25572
25573 process.binding = function (name) {
25574 throw new Error('process.binding is not supported');
25575 };
25576
25577 process.cwd = function () { return '/' };
25578 process.chdir = function (dir) {
25579 throw new Error('process.chdir is not supported');
25580 };
25581 process.umask = function() { return 0; };
25582
25583 },{}],14:[function(require,module,exports){
25584 module.exports = require("./lib/_stream_duplex.js")
25585
25586 },{"./lib/_stream_duplex.js":15}],15:[function(require,module,exports){
25587 // a duplex stream is just a stream that is both readable and writable.
25588 // Since JS doesn't have multiple prototypal inheritance, this class
25589 // prototypally inherits from Readable, and then parasitically from
25590 // Writable.
25591
25592 'use strict';
25593
25594 /*<replacement>*/
25595
25596 var objectKeys = Object.keys || function (obj) {
25597 var keys = [];
25598 for (var key in obj) {
25599 keys.push(key);
25600 }return keys;
25601 };
25602 /*</replacement>*/
25603
25604 module.exports = Duplex;
25605
25606 /*<replacement>*/
25607 var processNextTick = require('process-nextick-args');
25608 /*</replacement>*/
25609
25610 /*<replacement>*/
25611 var util = require('core-util-is');
25612 util.inherits = require('inherits');
25613 /*</replacement>*/
25614
25615 var Readable = require('./_stream_readable');
25616 var Writable = require('./_stream_writable');
25617
25618 util.inherits(Duplex, Readable);
25619
25620 var keys = objectKeys(Writable.prototype);
25621 for (var v = 0; v < keys.length; v++) {
25622 var method = keys[v];
25623 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
25624 }
25625
25626 function Duplex(options) {
25627 if (!(this instanceof Duplex)) return new Duplex(options);
25628
25629 Readable.call(this, options);
25630 Writable.call(this, options);
25631
25632 if (options && options.readable === false) this.readable = false;
25633
25634 if (options && options.writable === false) this.writable = false;
25635
25636 this.allowHalfOpen = true;
25637 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
25638
25639 this.once('end', onend);
25640 }
25641
25642 // the no-half-open enforcer
25643 function onend() {
25644 // if we allow half-open state, or if the writable side ended,
25645 // then we're ok.
25646 if (this.allowHalfOpen || this._writableState.ended) return;
25647
25648 // no more data can be written.
25649 // But allow more writes to happen in this tick.
25650 processNextTick(onEndNT, this);
25651 }
25652
25653 function onEndNT(self) {
25654 self.end();
25655 }
25656
25657 function forEach(xs, f) {
25658 for (var i = 0, l = xs.length; i < l; i++) {
25659 f(xs[i], i);
25660 }
25661 }
25662 },{"./_stream_readable":17,"./_stream_writable":19,"core-util-is":6,"inherits":9,"process-nextick-args":12}],16:[function(require,module,exports){
25663 // a passthrough stream.
25664 // basically just the most minimal sort of Transform stream.
25665 // Every written chunk gets output as-is.
25666
25667 'use strict';
25668
25669 module.exports = PassThrough;
25670
25671 var Transform = require('./_stream_transform');
25672
25673 /*<replacement>*/
25674 var util = require('core-util-is');
25675 util.inherits = require('inherits');
25676 /*</replacement>*/
25677
25678 util.inherits(PassThrough, Transform);
25679
25680 function PassThrough(options) {
25681 if (!(this instanceof PassThrough)) return new PassThrough(options);
25682
25683 Transform.call(this, options);
25684 }
25685
25686 PassThrough.prototype._transform = function (chunk, encoding, cb) {
25687 cb(null, chunk);
25688 };
25689 },{"./_stream_transform":18,"core-util-is":6,"inherits":9}],17:[function(require,module,exports){
25690 (function (process){
25691 'use strict';
25692
25693 module.exports = Readable;
25694
25695 /*<replacement>*/
25696 var processNextTick = require('process-nextick-args');
25697 /*</replacement>*/
25698
25699 /*<replacement>*/
25700 var isArray = require('isarray');
25701 /*</replacement>*/
25702
25703 /*<replacement>*/
25704 var Duplex;
25705 /*</replacement>*/
25706
25707 Readable.ReadableState = ReadableState;
25708
25709 /*<replacement>*/
25710 var EE = require('events').EventEmitter;
25711
25712 var EElistenerCount = function (emitter, type) {
25713 return emitter.listeners(type).length;
25714 };
25715 /*</replacement>*/
25716
25717 /*<replacement>*/
25718 var Stream;
25719 (function () {
25720 try {
25721 Stream = require('st' + 'ream');
25722 } catch (_) {} finally {
25723 if (!Stream) Stream = require('events').EventEmitter;
25724 }
25725 })();
25726 /*</replacement>*/
25727
25728 var Buffer = require('buffer').Buffer;
25729 /*<replacement>*/
25730 var bufferShim = require('buffer-shims');
25731 /*</replacement>*/
25732
25733 /*<replacement>*/
25734 var util = require('core-util-is');
25735 util.inherits = require('inherits');
25736 /*</replacement>*/
25737
25738 /*<replacement>*/
25739 var debugUtil = require('util');
25740 var debug = void 0;
25741 if (debugUtil && debugUtil.debuglog) {
25742 debug = debugUtil.debuglog('stream');
25743 } else {
25744 debug = function () {};
25745 }
25746 /*</replacement>*/
25747
25748 var BufferList = require('./internal/streams/BufferList');
25749 var StringDecoder;
25750
25751 util.inherits(Readable, Stream);
25752
25753 function prependListener(emitter, event, fn) {
25754 // Sadly this is not cacheable as some libraries bundle their own
25755 // event emitter implementation with them.
25756 if (typeof emitter.prependListener === 'function') {
25757 return emitter.prependListener(event, fn);
25758 } else {
25759 // This is a hack to make sure that our error handler is attached before any
25760 // userland ones. NEVER DO THIS. This is here only because this code needs
25761 // to continue to work with older versions of Node.js that do not include
25762 // the prependListener() method. The goal is to eventually remove this hack.
25763 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]];
25764 }
25765 }
25766
25767 function ReadableState(options, stream) {
25768 Duplex = Duplex || require('./_stream_duplex');
25769
25770 options = options || {};
25771
25772 // object stream flag. Used to make read(n) ignore n and to
25773 // make all the buffer merging and length checks go away
25774 this.objectMode = !!options.objectMode;
25775
25776 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
25777
25778 // the point at which it stops calling _read() to fill the buffer
25779 // Note: 0 is a valid value, means "don't call _read preemptively ever"
25780 var hwm = options.highWaterMark;
25781 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
25782 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
25783
25784 // cast to ints.
25785 this.highWaterMark = ~ ~this.highWaterMark;
25786
25787 // A linked list is used to store data chunks instead of an array because the
25788 // linked list can remove elements from the beginning faster than
25789 // array.shift()
25790 this.buffer = new BufferList();
25791 this.length = 0;
25792 this.pipes = null;
25793 this.pipesCount = 0;
25794 this.flowing = null;
25795 this.ended = false;
25796 this.endEmitted = false;
25797 this.reading = false;
25798
25799 // a flag to be able to tell if the onwrite cb is called immediately,
25800 // or on a later tick. We set this to true at first, because any
25801 // actions that shouldn't happen until "later" should generally also
25802 // not happen before the first write call.
25803 this.sync = true;
25804
25805 // whenever we return null, then we set a flag to say
25806 // that we're awaiting a 'readable' event emission.
25807 this.needReadable = false;
25808 this.emittedReadable = false;
25809 this.readableListening = false;
25810 this.resumeScheduled = false;
25811
25812 // Crypto is kind of old and crusty. Historically, its default string
25813 // encoding is 'binary' so we have to make this configurable.
25814 // Everything else in the universe uses 'utf8', though.
25815 this.defaultEncoding = options.defaultEncoding || 'utf8';
25816
25817 // when piping, we only care about 'readable' events that happen
25818 // after read()ing all the bytes and not getting any pushback.
25819 this.ranOut = false;
25820
25821 // the number of writers that are awaiting a drain event in .pipe()s
25822 this.awaitDrain = 0;
25823
25824 // if true, a maybeReadMore has been scheduled
25825 this.readingMore = false;
25826
25827 this.decoder = null;
25828 this.encoding = null;
25829 if (options.encoding) {
25830 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
25831 this.decoder = new StringDecoder(options.encoding);
25832 this.encoding = options.encoding;
25833 }
25834 }
25835
25836 function Readable(options) {
25837 Duplex = Duplex || require('./_stream_duplex');
25838
25839 if (!(this instanceof Readable)) return new Readable(options);
25840
25841 this._readableState = new ReadableState(options, this);
25842
25843 // legacy
25844 this.readable = true;
25845
25846 if (options && typeof options.read === 'function') this._read = options.read;
25847
25848 Stream.call(this);
25849 }
25850
25851 // Manually shove something into the read() buffer.
25852 // This returns true if the highWaterMark has not been hit yet,
25853 // similar to how Writable.write() returns true if you should
25854 // write() some more.
25855 Readable.prototype.push = function (chunk, encoding) {
25856 var state = this._readableState;
25857
25858 if (!state.objectMode && typeof chunk === 'string') {
25859 encoding = encoding || state.defaultEncoding;
25860 if (encoding !== state.encoding) {
25861 chunk = bufferShim.from(chunk, encoding);
25862 encoding = '';
25863 }
25864 }
25865
25866 return readableAddChunk(this, state, chunk, encoding, false);
25867 };
25868
25869 // Unshift should *always* be something directly out of read()
25870 Readable.prototype.unshift = function (chunk) {
25871 var state = this._readableState;
25872 return readableAddChunk(this, state, chunk, '', true);
25873 };
25874
25875 Readable.prototype.isPaused = function () {
25876 return this._readableState.flowing === false;
25877 };
25878
25879 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
25880 var er = chunkInvalid(state, chunk);
25881 if (er) {
25882 stream.emit('error', er);
25883 } else if (chunk === null) {
25884 state.reading = false;
25885 onEofChunk(stream, state);
25886 } else if (state.objectMode || chunk && chunk.length > 0) {
25887 if (state.ended && !addToFront) {
25888 var e = new Error('stream.push() after EOF');
25889 stream.emit('error', e);
25890 } else if (state.endEmitted && addToFront) {
25891 var _e = new Error('stream.unshift() after end event');
25892 stream.emit('error', _e);
25893 } else {
25894 var skipAdd;
25895 if (state.decoder && !addToFront && !encoding) {
25896 chunk = state.decoder.write(chunk);
25897 skipAdd = !state.objectMode && chunk.length === 0;
25898 }
25899
25900 if (!addToFront) state.reading = false;
25901
25902 // Don't add to the buffer if we've decoded to an empty string chunk and
25903 // we're not in object mode
25904 if (!skipAdd) {
25905 // if we want the data now, just emit it.
25906 if (state.flowing && state.length === 0 && !state.sync) {
25907 stream.emit('data', chunk);
25908 stream.read(0);
25909 } else {
25910 // update the buffer info.
25911 state.length += state.objectMode ? 1 : chunk.length;
25912 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
25913
25914 if (state.needReadable) emitReadable(stream);
25915 }
25916 }
25917
25918 maybeReadMore(stream, state);
25919 }
25920 } else if (!addToFront) {
25921 state.reading = false;
25922 }
25923
25924 return needMoreData(state);
25925 }
25926
25927 // if it's past the high water mark, we can push in some more.
25928 // Also, if we have no data yet, we can stand some
25929 // more bytes. This is to work around cases where hwm=0,
25930 // such as the repl. Also, if the push() triggered a
25931 // readable event, and the user called read(largeNumber) such that
25932 // needReadable was set, then we ought to push more, so that another
25933 // 'readable' event will be triggered.
25934 function needMoreData(state) {
25935 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
25936 }
25937
25938 // backwards compatibility.
25939 Readable.prototype.setEncoding = function (enc) {
25940 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
25941 this._readableState.decoder = new StringDecoder(enc);
25942 this._readableState.encoding = enc;
25943 return this;
25944 };
25945
25946 // Don't raise the hwm > 8MB
25947 var MAX_HWM = 0x800000;
25948 function computeNewHighWaterMark(n) {
25949 if (n >= MAX_HWM) {
25950 n = MAX_HWM;
25951 } else {
25952 // Get the next highest power of 2 to prevent increasing hwm excessively in
25953 // tiny amounts
25954 n--;
25955 n |= n >>> 1;
25956 n |= n >>> 2;
25957 n |= n >>> 4;
25958 n |= n >>> 8;
25959 n |= n >>> 16;
25960 n++;
25961 }
25962 return n;
25963 }
25964
25965 // This function is designed to be inlinable, so please take care when making
25966 // changes to the function body.
25967 function howMuchToRead(n, state) {
25968 if (n <= 0 || state.length === 0 && state.ended) return 0;
25969 if (state.objectMode) return 1;
25970 if (n !== n) {
25971 // Only flow one buffer at a time
25972 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
25973 }
25974 // If we're asking for more than the current hwm, then raise the hwm.
25975 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
25976 if (n <= state.length) return n;
25977 // Don't have enough
25978 if (!state.ended) {
25979 state.needReadable = true;
25980 return 0;
25981 }
25982 return state.length;
25983 }
25984
25985 // you can override either this method, or the async _read(n) below.
25986 Readable.prototype.read = function (n) {
25987 debug('read', n);
25988 n = parseInt(n, 10);
25989 var state = this._readableState;
25990 var nOrig = n;
25991
25992 if (n !== 0) state.emittedReadable = false;
25993
25994 // if we're doing read(0) to trigger a readable event, but we
25995 // already have a bunch of data in the buffer, then just trigger
25996 // the 'readable' event and move on.
25997 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
25998 debug('read: emitReadable', state.length, state.ended);
25999 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
26000 return null;
26001 }
26002
26003 n = howMuchToRead(n, state);
26004
26005 // if we've ended, and we're now clear, then finish it up.
26006 if (n === 0 && state.ended) {
26007 if (state.length === 0) endReadable(this);
26008 return null;
26009 }
26010
26011 // All the actual chunk generation logic needs to be
26012 // *below* the call to _read. The reason is that in certain
26013 // synthetic stream cases, such as passthrough streams, _read
26014 // may be a completely synchronous operation which may change
26015 // the state of the read buffer, providing enough data when
26016 // before there was *not* enough.
26017 //
26018 // So, the steps are:
26019 // 1. Figure out what the state of things will be after we do
26020 // a read from the buffer.
26021 //
26022 // 2. If that resulting state will trigger a _read, then call _read.
26023 // Note that this may be asynchronous, or synchronous. Yes, it is
26024 // deeply ugly to write APIs this way, but that still doesn't mean
26025 // that the Readable class should behave improperly, as streams are
26026 // designed to be sync/async agnostic.
26027 // Take note if the _read call is sync or async (ie, if the read call
26028 // has returned yet), so that we know whether or not it's safe to emit
26029 // 'readable' etc.
26030 //
26031 // 3. Actually pull the requested chunks out of the buffer and return.
26032
26033 // if we need a readable event, then we need to do some reading.
26034 var doRead = state.needReadable;
26035 debug('need readable', doRead);
26036
26037 // if we currently have less than the highWaterMark, then also read some
26038 if (state.length === 0 || state.length - n < state.highWaterMark) {
26039 doRead = true;
26040 debug('length less than watermark', doRead);
26041 }
26042
26043 // however, if we've ended, then there's no point, and if we're already
26044 // reading, then it's unnecessary.
26045 if (state.ended || state.reading) {
26046 doRead = false;
26047 debug('reading or ended', doRead);
26048 } else if (doRead) {
26049 debug('do read');
26050 state.reading = true;
26051 state.sync = true;
26052 // if the length is currently zero, then we *need* a readable event.
26053 if (state.length === 0) state.needReadable = true;
26054 // call internal read method
26055 this._read(state.highWaterMark);
26056 state.sync = false;
26057 // If _read pushed data synchronously, then `reading` will be false,
26058 // and we need to re-evaluate how much data we can return to the user.
26059 if (!state.reading) n = howMuchToRead(nOrig, state);
26060 }
26061
26062 var ret;
26063 if (n > 0) ret = fromList(n, state);else ret = null;
26064
26065 if (ret === null) {
26066 state.needReadable = true;
26067 n = 0;
26068 } else {
26069 state.length -= n;
26070 }
26071
26072 if (state.length === 0) {
26073 // If we have nothing in the buffer, then we want to know
26074 // as soon as we *do* get something into the buffer.
26075 if (!state.ended) state.needReadable = true;
26076
26077 // If we tried to read() past the EOF, then emit end on the next tick.
26078 if (nOrig !== n && state.ended) endReadable(this);
26079 }
26080
26081 if (ret !== null) this.emit('data', ret);
26082
26083 return ret;
26084 };
26085
26086 function chunkInvalid(state, chunk) {
26087 var er = null;
26088 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
26089 er = new TypeError('Invalid non-string/buffer chunk');
26090 }
26091 return er;
26092 }
26093
26094 function onEofChunk(stream, state) {
26095 if (state.ended) return;
26096 if (state.decoder) {
26097 var chunk = state.decoder.end();
26098 if (chunk && chunk.length) {
26099 state.buffer.push(chunk);
26100 state.length += state.objectMode ? 1 : chunk.length;
26101 }
26102 }
26103 state.ended = true;
26104
26105 // emit 'readable' now to make sure it gets picked up.
26106 emitReadable(stream);
26107 }
26108
26109 // Don't emit readable right away in sync mode, because this can trigger
26110 // another read() call => stack overflow. This way, it might trigger
26111 // a nextTick recursion warning, but that's not so bad.
26112 function emitReadable(stream) {
26113 var state = stream._readableState;
26114 state.needReadable = false;
26115 if (!state.emittedReadable) {
26116 debug('emitReadable', state.flowing);
26117 state.emittedReadable = true;
26118 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
26119 }
26120 }
26121
26122 function emitReadable_(stream) {
26123 debug('emit readable');
26124 stream.emit('readable');
26125 flow(stream);
26126 }
26127
26128 // at this point, the user has presumably seen the 'readable' event,
26129 // and called read() to consume some data. that may have triggered
26130 // in turn another _read(n) call, in which case reading = true if
26131 // it's in progress.
26132 // However, if we're not ended, or reading, and the length < hwm,
26133 // then go ahead and try to read some more preemptively.
26134 function maybeReadMore(stream, state) {
26135 if (!state.readingMore) {
26136 state.readingMore = true;
26137 processNextTick(maybeReadMore_, stream, state);
26138 }
26139 }
26140
26141 function maybeReadMore_(stream, state) {
26142 var len = state.length;
26143 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
26144 debug('maybeReadMore read 0');
26145 stream.read(0);
26146 if (len === state.length)
26147 // didn't get any data, stop spinning.
26148 break;else len = state.length;
26149 }
26150 state.readingMore = false;
26151 }
26152
26153 // abstract method. to be overridden in specific implementation classes.
26154 // call cb(er, data) where data is <= n in length.
26155 // for virtual (non-string, non-buffer) streams, "length" is somewhat
26156 // arbitrary, and perhaps not very meaningful.
26157 Readable.prototype._read = function (n) {
26158 this.emit('error', new Error('_read() is not implemented'));
26159 };
26160
26161 Readable.prototype.pipe = function (dest, pipeOpts) {
26162 var src = this;
26163 var state = this._readableState;
26164
26165 switch (state.pipesCount) {
26166 case 0:
26167 state.pipes = dest;
26168 break;
26169 case 1:
26170 state.pipes = [state.pipes, dest];
26171 break;
26172 default:
26173 state.pipes.push(dest);
26174 break;
26175 }
26176 state.pipesCount += 1;
26177 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
26178
26179 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
26180
26181 var endFn = doEnd ? onend : cleanup;
26182 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
26183
26184 dest.on('unpipe', onunpipe);
26185 function onunpipe(readable) {
26186 debug('onunpipe');
26187 if (readable === src) {
26188 cleanup();
26189 }
26190 }
26191
26192 function onend() {
26193 debug('onend');
26194 dest.end();
26195 }
26196
26197 // when the dest drains, it reduces the awaitDrain counter
26198 // on the source. This would be more elegant with a .once()
26199 // handler in flow(), but adding and removing repeatedly is
26200 // too slow.
26201 var ondrain = pipeOnDrain(src);
26202 dest.on('drain', ondrain);
26203
26204 var cleanedUp = false;
26205 function cleanup() {
26206 debug('cleanup');
26207 // cleanup event handlers once the pipe is broken
26208 dest.removeListener('close', onclose);
26209 dest.removeListener('finish', onfinish);
26210 dest.removeListener('drain', ondrain);
26211 dest.removeListener('error', onerror);
26212 dest.removeListener('unpipe', onunpipe);
26213 src.removeListener('end', onend);
26214 src.removeListener('end', cleanup);
26215 src.removeListener('data', ondata);
26216
26217 cleanedUp = true;
26218
26219 // if the reader is waiting for a drain event from this
26220 // specific writer, then it would cause it to never start
26221 // flowing again.
26222 // So, if this is awaiting a drain, then we just call it now.
26223 // If we don't know, then assume that we are waiting for one.
26224 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
26225 }
26226
26227 // If the user pushes more data while we're writing to dest then we'll end up
26228 // in ondata again. However, we only want to increase awaitDrain once because
26229 // dest will only emit one 'drain' event for the multiple writes.
26230 // => Introduce a guard on increasing awaitDrain.
26231 var increasedAwaitDrain = false;
26232 src.on('data', ondata);
26233 function ondata(chunk) {
26234 debug('ondata');
26235 increasedAwaitDrain = false;
26236 var ret = dest.write(chunk);
26237 if (false === ret && !increasedAwaitDrain) {
26238 // If the user unpiped during `dest.write()`, it is possible
26239 // to get stuck in a permanently paused state if that write
26240 // also returned false.
26241 // => Check whether `dest` is still a piping destination.
26242 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
26243 debug('false write response, pause', src._readableState.awaitDrain);
26244 src._readableState.awaitDrain++;
26245 increasedAwaitDrain = true;
26246 }
26247 src.pause();
26248 }
26249 }
26250
26251 // if the dest has an error, then stop piping into it.
26252 // however, don't suppress the throwing behavior for this.
26253 function onerror(er) {
26254 debug('onerror', er);
26255 unpipe();
26256 dest.removeListener('error', onerror);
26257 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
26258 }
26259
26260 // Make sure our error handler is attached before userland ones.
26261 prependListener(dest, 'error', onerror);
26262
26263 // Both close and finish should trigger unpipe, but only once.
26264 function onclose() {
26265 dest.removeListener('finish', onfinish);
26266 unpipe();
26267 }
26268 dest.once('close', onclose);
26269 function onfinish() {
26270 debug('onfinish');
26271 dest.removeListener('close', onclose);
26272 unpipe();
26273 }
26274 dest.once('finish', onfinish);
26275
26276 function unpipe() {
26277 debug('unpipe');
26278 src.unpipe(dest);
26279 }
26280
26281 // tell the dest that it's being piped to
26282 dest.emit('pipe', src);
26283
26284 // start the flow if it hasn't been started already.
26285 if (!state.flowing) {
26286 debug('pipe resume');
26287 src.resume();
26288 }
26289
26290 return dest;
26291 };
26292
26293 function pipeOnDrain(src) {
26294 return function () {
26295 var state = src._readableState;
26296 debug('pipeOnDrain', state.awaitDrain);
26297 if (state.awaitDrain) state.awaitDrain--;
26298 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
26299 state.flowing = true;
26300 flow(src);
26301 }
26302 };
26303 }
26304
26305 Readable.prototype.unpipe = function (dest) {
26306 var state = this._readableState;
26307
26308 // if we're not piping anywhere, then do nothing.
26309 if (state.pipesCount === 0) return this;
26310
26311 // just one destination. most common case.
26312 if (state.pipesCount === 1) {
26313 // passed in one, but it's not the right one.
26314 if (dest && dest !== state.pipes) return this;
26315
26316 if (!dest) dest = state.pipes;
26317
26318 // got a match.
26319 state.pipes = null;
26320 state.pipesCount = 0;
26321 state.flowing = false;
26322 if (dest) dest.emit('unpipe', this);
26323 return this;
26324 }
26325
26326 // slow case. multiple pipe destinations.
26327
26328 if (!dest) {
26329 // remove all.
26330 var dests = state.pipes;
26331 var len = state.pipesCount;
26332 state.pipes = null;
26333 state.pipesCount = 0;
26334 state.flowing = false;
26335
26336 for (var i = 0; i < len; i++) {
26337 dests[i].emit('unpipe', this);
26338 }return this;
26339 }
26340
26341 // try to find the right one.
26342 var index = indexOf(state.pipes, dest);
26343 if (index === -1) return this;
26344
26345 state.pipes.splice(index, 1);
26346 state.pipesCount -= 1;
26347 if (state.pipesCount === 1) state.pipes = state.pipes[0];
26348
26349 dest.emit('unpipe', this);
26350
26351 return this;
26352 };
26353
26354 // set up data events if they are asked for
26355 // Ensure readable listeners eventually get something
26356 Readable.prototype.on = function (ev, fn) {
26357 var res = Stream.prototype.on.call(this, ev, fn);
26358
26359 if (ev === 'data') {
26360 // Start flowing on next tick if stream isn't explicitly paused
26361 if (this._readableState.flowing !== false) this.resume();
26362 } else if (ev === 'readable') {
26363 var state = this._readableState;
26364 if (!state.endEmitted && !state.readableListening) {
26365 state.readableListening = state.needReadable = true;
26366 state.emittedReadable = false;
26367 if (!state.reading) {
26368 processNextTick(nReadingNextTick, this);
26369 } else if (state.length) {
26370 emitReadable(this, state);
26371 }
26372 }
26373 }
26374
26375 return res;
26376 };
26377 Readable.prototype.addListener = Readable.prototype.on;
26378
26379 function nReadingNextTick(self) {
26380 debug('readable nexttick read 0');
26381 self.read(0);
26382 }
26383
26384 // pause() and resume() are remnants of the legacy readable stream API
26385 // If the user uses them, then switch into old mode.
26386 Readable.prototype.resume = function () {
26387 var state = this._readableState;
26388 if (!state.flowing) {
26389 debug('resume');
26390 state.flowing = true;
26391 resume(this, state);
26392 }
26393 return this;
26394 };
26395
26396 function resume(stream, state) {
26397 if (!state.resumeScheduled) {
26398 state.resumeScheduled = true;
26399 processNextTick(resume_, stream, state);
26400 }
26401 }
26402
26403 function resume_(stream, state) {
26404 if (!state.reading) {
26405 debug('resume read 0');
26406 stream.read(0);
26407 }
26408
26409 state.resumeScheduled = false;
26410 state.awaitDrain = 0;
26411 stream.emit('resume');
26412 flow(stream);
26413 if (state.flowing && !state.reading) stream.read(0);
26414 }
26415
26416 Readable.prototype.pause = function () {
26417 debug('call pause flowing=%j', this._readableState.flowing);
26418 if (false !== this._readableState.flowing) {
26419 debug('pause');
26420 this._readableState.flowing = false;
26421 this.emit('pause');
26422 }
26423 return this;
26424 };
26425
26426 function flow(stream) {
26427 var state = stream._readableState;
26428 debug('flow', state.flowing);
26429 while (state.flowing && stream.read() !== null) {}
26430 }
26431
26432 // wrap an old-style stream as the async data source.
26433 // This is *not* part of the readable stream interface.
26434 // It is an ugly unfortunate mess of history.
26435 Readable.prototype.wrap = function (stream) {
26436 var state = this._readableState;
26437 var paused = false;
26438
26439 var self = this;
26440 stream.on('end', function () {
26441 debug('wrapped end');
26442 if (state.decoder && !state.ended) {
26443 var chunk = state.decoder.end();
26444 if (chunk && chunk.length) self.push(chunk);
26445 }
26446
26447 self.push(null);
26448 });
26449
26450 stream.on('data', function (chunk) {
26451 debug('wrapped data');
26452 if (state.decoder) chunk = state.decoder.write(chunk);
26453
26454 // don't skip over falsy values in objectMode
26455 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
26456
26457 var ret = self.push(chunk);
26458 if (!ret) {
26459 paused = true;
26460 stream.pause();
26461 }
26462 });
26463
26464 // proxy all the other methods.
26465 // important when wrapping filters and duplexes.
26466 for (var i in stream) {
26467 if (this[i] === undefined && typeof stream[i] === 'function') {
26468 this[i] = function (method) {
26469 return function () {
26470 return stream[method].apply(stream, arguments);
26471 };
26472 }(i);
26473 }
26474 }
26475
26476 // proxy certain important events.
26477 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
26478 forEach(events, function (ev) {
26479 stream.on(ev, self.emit.bind(self, ev));
26480 });
26481
26482 // when we try to consume some more bytes, simply unpause the
26483 // underlying stream.
26484 self._read = function (n) {
26485 debug('wrapped _read', n);
26486 if (paused) {
26487 paused = false;
26488 stream.resume();
26489 }
26490 };
26491
26492 return self;
26493 };
26494
26495 // exposed for testing purposes only.
26496 Readable._fromList = fromList;
26497
26498 // Pluck off n bytes from an array of buffers.
26499 // Length is the combined lengths of all the buffers in the list.
26500 // This function is designed to be inlinable, so please take care when making
26501 // changes to the function body.
26502 function fromList(n, state) {
26503 // nothing buffered
26504 if (state.length === 0) return null;
26505
26506 var ret;
26507 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
26508 // read it all, truncate the list
26509 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);
26510 state.buffer.clear();
26511 } else {
26512 // read part of list
26513 ret = fromListPartial(n, state.buffer, state.decoder);
26514 }
26515
26516 return ret;
26517 }
26518
26519 // Extracts only enough buffered data to satisfy the amount requested.
26520 // This function is designed to be inlinable, so please take care when making
26521 // changes to the function body.
26522 function fromListPartial(n, list, hasStrings) {
26523 var ret;
26524 if (n < list.head.data.length) {
26525 // slice is the same for buffers and strings
26526 ret = list.head.data.slice(0, n);
26527 list.head.data = list.head.data.slice(n);
26528 } else if (n === list.head.data.length) {
26529 // first chunk is a perfect match
26530 ret = list.shift();
26531 } else {
26532 // result spans more than one buffer
26533 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
26534 }
26535 return ret;
26536 }
26537
26538 // Copies a specified amount of characters from the list of buffered data
26539 // chunks.
26540 // This function is designed to be inlinable, so please take care when making
26541 // changes to the function body.
26542 function copyFromBufferString(n, list) {
26543 var p = list.head;
26544 var c = 1;
26545 var ret = p.data;
26546 n -= ret.length;
26547 while (p = p.next) {
26548 var str = p.data;
26549 var nb = n > str.length ? str.length : n;
26550 if (nb === str.length) ret += str;else ret += str.slice(0, n);
26551 n -= nb;
26552 if (n === 0) {
26553 if (nb === str.length) {
26554 ++c;
26555 if (p.next) list.head = p.next;else list.head = list.tail = null;
26556 } else {
26557 list.head = p;
26558 p.data = str.slice(nb);
26559 }
26560 break;
26561 }
26562 ++c;
26563 }
26564 list.length -= c;
26565 return ret;
26566 }
26567
26568 // Copies a specified amount of bytes from the list of buffered data chunks.
26569 // This function is designed to be inlinable, so please take care when making
26570 // changes to the function body.
26571 function copyFromBuffer(n, list) {
26572 var ret = bufferShim.allocUnsafe(n);
26573 var p = list.head;
26574 var c = 1;
26575 p.data.copy(ret);
26576 n -= p.data.length;
26577 while (p = p.next) {
26578 var buf = p.data;
26579 var nb = n > buf.length ? buf.length : n;
26580 buf.copy(ret, ret.length - n, 0, nb);
26581 n -= nb;
26582 if (n === 0) {
26583 if (nb === buf.length) {
26584 ++c;
26585 if (p.next) list.head = p.next;else list.head = list.tail = null;
26586 } else {
26587 list.head = p;
26588 p.data = buf.slice(nb);
26589 }
26590 break;
26591 }
26592 ++c;
26593 }
26594 list.length -= c;
26595 return ret;
26596 }
26597
26598 function endReadable(stream) {
26599 var state = stream._readableState;
26600
26601 // If we get here before consuming all the bytes, then that is a
26602 // bug in node. Should never happen.
26603 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
26604
26605 if (!state.endEmitted) {
26606 state.ended = true;
26607 processNextTick(endReadableNT, state, stream);
26608 }
26609 }
26610
26611 function endReadableNT(state, stream) {
26612 // Check that we didn't get one last unshift.
26613 if (!state.endEmitted && state.length === 0) {
26614 state.endEmitted = true;
26615 stream.readable = false;
26616 stream.emit('end');
26617 }
26618 }
26619
26620 function forEach(xs, f) {
26621 for (var i = 0, l = xs.length; i < l; i++) {
26622 f(xs[i], i);
26623 }
26624 }
26625
26626 function indexOf(xs, x) {
26627 for (var i = 0, l = xs.length; i < l; i++) {
26628 if (xs[i] === x) return i;
26629 }
26630 return -1;
26631 }
26632 }).call(this,require('_process'))
26633 },{"./_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){
26634 // a transform stream is a readable/writable stream where you do
26635 // something with the data. Sometimes it's called a "filter",
26636 // but that's not a great name for it, since that implies a thing where
26637 // some bits pass through, and others are simply ignored. (That would
26638 // be a valid example of a transform, of course.)
26639 //
26640 // While the output is causally related to the input, it's not a
26641 // necessarily symmetric or synchronous transformation. For example,
26642 // a zlib stream might take multiple plain-text writes(), and then
26643 // emit a single compressed chunk some time in the future.
26644 //
26645 // Here's how this works:
26646 //
26647 // The Transform stream has all the aspects of the readable and writable
26648 // stream classes. When you write(chunk), that calls _write(chunk,cb)
26649 // internally, and returns false if there's a lot of pending writes
26650 // buffered up. When you call read(), that calls _read(n) until
26651 // there's enough pending readable data buffered up.
26652 //
26653 // In a transform stream, the written data is placed in a buffer. When
26654 // _read(n) is called, it transforms the queued up data, calling the
26655 // buffered _write cb's as it consumes chunks. If consuming a single
26656 // written chunk would result in multiple output chunks, then the first
26657 // outputted bit calls the readcb, and subsequent chunks just go into
26658 // the read buffer, and will cause it to emit 'readable' if necessary.
26659 //
26660 // This way, back-pressure is actually determined by the reading side,
26661 // since _read has to be called to start processing a new chunk. However,
26662 // a pathological inflate type of transform can cause excessive buffering
26663 // here. For example, imagine a stream where every byte of input is
26664 // interpreted as an integer from 0-255, and then results in that many
26665 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
26666 // 1kb of data being output. In this case, you could write a very small
26667 // amount of input, and end up with a very large amount of output. In
26668 // such a pathological inflating mechanism, there'd be no way to tell
26669 // the system to stop doing the transform. A single 4MB write could
26670 // cause the system to run out of memory.
26671 //
26672 // However, even in such a pathological case, only a single written chunk
26673 // would be consumed, and then the rest would wait (un-transformed) until
26674 // the results of the previous transformed chunk were consumed.
26675
26676 'use strict';
26677
26678 module.exports = Transform;
26679
26680 var Duplex = require('./_stream_duplex');
26681
26682 /*<replacement>*/
26683 var util = require('core-util-is');
26684 util.inherits = require('inherits');
26685 /*</replacement>*/
26686
26687 util.inherits(Transform, Duplex);
26688
26689 function TransformState(stream) {
26690 this.afterTransform = function (er, data) {
26691 return afterTransform(stream, er, data);
26692 };
26693
26694 this.needTransform = false;
26695 this.transforming = false;
26696 this.writecb = null;
26697 this.writechunk = null;
26698 this.writeencoding = null;
26699 }
26700
26701 function afterTransform(stream, er, data) {
26702 var ts = stream._transformState;
26703 ts.transforming = false;
26704
26705 var cb = ts.writecb;
26706
26707 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
26708
26709 ts.writechunk = null;
26710 ts.writecb = null;
26711
26712 if (data !== null && data !== undefined) stream.push(data);
26713
26714 cb(er);
26715
26716 var rs = stream._readableState;
26717 rs.reading = false;
26718 if (rs.needReadable || rs.length < rs.highWaterMark) {
26719 stream._read(rs.highWaterMark);
26720 }
26721 }
26722
26723 function Transform(options) {
26724 if (!(this instanceof Transform)) return new Transform(options);
26725
26726 Duplex.call(this, options);
26727
26728 this._transformState = new TransformState(this);
26729
26730 var stream = this;
26731
26732 // start out asking for a readable event once data is transformed.
26733 this._readableState.needReadable = true;
26734
26735 // we have implemented the _read method, and done the other things
26736 // that Readable wants before the first _read call, so unset the
26737 // sync guard flag.
26738 this._readableState.sync = false;
26739
26740 if (options) {
26741 if (typeof options.transform === 'function') this._transform = options.transform;
26742
26743 if (typeof options.flush === 'function') this._flush = options.flush;
26744 }
26745
26746 // When the writable side finishes, then flush out anything remaining.
26747 this.once('prefinish', function () {
26748 if (typeof this._flush === 'function') this._flush(function (er, data) {
26749 done(stream, er, data);
26750 });else done(stream);
26751 });
26752 }
26753
26754 Transform.prototype.push = function (chunk, encoding) {
26755 this._transformState.needTransform = false;
26756 return Duplex.prototype.push.call(this, chunk, encoding);
26757 };
26758
26759 // This is the part where you do stuff!
26760 // override this function in implementation classes.
26761 // 'chunk' is an input chunk.
26762 //
26763 // Call `push(newChunk)` to pass along transformed output
26764 // to the readable side. You may call 'push' zero or more times.
26765 //
26766 // Call `cb(err)` when you are done with this chunk. If you pass
26767 // an error, then that'll put the hurt on the whole operation. If you
26768 // never call cb(), then you'll never get another chunk.
26769 Transform.prototype._transform = function (chunk, encoding, cb) {
26770 throw new Error('_transform() is not implemented');
26771 };
26772
26773 Transform.prototype._write = function (chunk, encoding, cb) {
26774 var ts = this._transformState;
26775 ts.writecb = cb;
26776 ts.writechunk = chunk;
26777 ts.writeencoding = encoding;
26778 if (!ts.transforming) {
26779 var rs = this._readableState;
26780 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
26781 }
26782 };
26783
26784 // Doesn't matter what the args are here.
26785 // _transform does all the work.
26786 // That we got here means that the readable side wants more data.
26787 Transform.prototype._read = function (n) {
26788 var ts = this._transformState;
26789
26790 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
26791 ts.transforming = true;
26792 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
26793 } else {
26794 // mark that we need a transform, so that any data that comes in
26795 // will get processed, now that we've asked for it.
26796 ts.needTransform = true;
26797 }
26798 };
26799
26800 function done(stream, er, data) {
26801 if (er) return stream.emit('error', er);
26802
26803 if (data !== null && data !== undefined) stream.push(data);
26804
26805 // if there's nothing in the write buffer, then that means
26806 // that nothing more will ever be provided
26807 var ws = stream._writableState;
26808 var ts = stream._transformState;
26809
26810 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
26811
26812 if (ts.transforming) throw new Error('Calling transform done when still transforming');
26813
26814 return stream.push(null);
26815 }
26816 },{"./_stream_duplex":15,"core-util-is":6,"inherits":9}],19:[function(require,module,exports){
26817 (function (process){
26818 // A bit simpler than readable streams.
26819 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
26820 // the drain event emission and buffering.
26821
26822 'use strict';
26823
26824 module.exports = Writable;
26825
26826 /*<replacement>*/
26827 var processNextTick = require('process-nextick-args');
26828 /*</replacement>*/
26829
26830 /*<replacement>*/
26831 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
26832 /*</replacement>*/
26833
26834 /*<replacement>*/
26835 var Duplex;
26836 /*</replacement>*/
26837
26838 Writable.WritableState = WritableState;
26839
26840 /*<replacement>*/
26841 var util = require('core-util-is');
26842 util.inherits = require('inherits');
26843 /*</replacement>*/
26844
26845 /*<replacement>*/
26846 var internalUtil = {
26847 deprecate: require('util-deprecate')
26848 };
26849 /*</replacement>*/
26850
26851 /*<replacement>*/
26852 var Stream;
26853 (function () {
26854 try {
26855 Stream = require('st' + 'ream');
26856 } catch (_) {} finally {
26857 if (!Stream) Stream = require('events').EventEmitter;
26858 }
26859 })();
26860 /*</replacement>*/
26861
26862 var Buffer = require('buffer').Buffer;
26863 /*<replacement>*/
26864 var bufferShim = require('buffer-shims');
26865 /*</replacement>*/
26866
26867 util.inherits(Writable, Stream);
26868
26869 function nop() {}
26870
26871 function WriteReq(chunk, encoding, cb) {
26872 this.chunk = chunk;
26873 this.encoding = encoding;
26874 this.callback = cb;
26875 this.next = null;
26876 }
26877
26878 function WritableState(options, stream) {
26879 Duplex = Duplex || require('./_stream_duplex');
26880
26881 options = options || {};
26882
26883 // object stream flag to indicate whether or not this stream
26884 // contains buffers or objects.
26885 this.objectMode = !!options.objectMode;
26886
26887 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
26888
26889 // the point at which write() starts returning false
26890 // Note: 0 is a valid value, means that we always return false if
26891 // the entire buffer is not flushed immediately on write()
26892 var hwm = options.highWaterMark;
26893 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
26894 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
26895
26896 // cast to ints.
26897 this.highWaterMark = ~ ~this.highWaterMark;
26898
26899 // drain event flag.
26900 this.needDrain = false;
26901 // at the start of calling end()
26902 this.ending = false;
26903 // when end() has been called, and returned
26904 this.ended = false;
26905 // when 'finish' is emitted
26906 this.finished = false;
26907
26908 // should we decode strings into buffers before passing to _write?
26909 // this is here so that some node-core streams can optimize string
26910 // handling at a lower level.
26911 var noDecode = options.decodeStrings === false;
26912 this.decodeStrings = !noDecode;
26913
26914 // Crypto is kind of old and crusty. Historically, its default string
26915 // encoding is 'binary' so we have to make this configurable.
26916 // Everything else in the universe uses 'utf8', though.
26917 this.defaultEncoding = options.defaultEncoding || 'utf8';
26918
26919 // not an actual buffer we keep track of, but a measurement
26920 // of how much we're waiting to get pushed to some underlying
26921 // socket or file.
26922 this.length = 0;
26923
26924 // a flag to see when we're in the middle of a write.
26925 this.writing = false;
26926
26927 // when true all writes will be buffered until .uncork() call
26928 this.corked = 0;
26929
26930 // a flag to be able to tell if the onwrite cb is called immediately,
26931 // or on a later tick. We set this to true at first, because any
26932 // actions that shouldn't happen until "later" should generally also
26933 // not happen before the first write call.
26934 this.sync = true;
26935
26936 // a flag to know if we're processing previously buffered items, which
26937 // may call the _write() callback in the same tick, so that we don't
26938 // end up in an overlapped onwrite situation.
26939 this.bufferProcessing = false;
26940
26941 // the callback that's passed to _write(chunk,cb)
26942 this.onwrite = function (er) {
26943 onwrite(stream, er);
26944 };
26945
26946 // the callback that the user supplies to write(chunk,encoding,cb)
26947 this.writecb = null;
26948
26949 // the amount that is being written when _write is called.
26950 this.writelen = 0;
26951
26952 this.bufferedRequest = null;
26953 this.lastBufferedRequest = null;
26954
26955 // number of pending user-supplied write callbacks
26956 // this must be 0 before 'finish' can be emitted
26957 this.pendingcb = 0;
26958
26959 // emit prefinish if the only thing we're waiting for is _write cbs
26960 // This is relevant for synchronous Transform streams
26961 this.prefinished = false;
26962
26963 // True if the error was already emitted and should not be thrown again
26964 this.errorEmitted = false;
26965
26966 // count buffered requests
26967 this.bufferedRequestCount = 0;
26968
26969 // allocate the first CorkedRequest, there is always
26970 // one allocated and free to use, and we maintain at most two
26971 this.corkedRequestsFree = new CorkedRequest(this);
26972 }
26973
26974 WritableState.prototype.getBuffer = function getBuffer() {
26975 var current = this.bufferedRequest;
26976 var out = [];
26977 while (current) {
26978 out.push(current);
26979 current = current.next;
26980 }
26981 return out;
26982 };
26983
26984 (function () {
26985 try {
26986 Object.defineProperty(WritableState.prototype, 'buffer', {
26987 get: internalUtil.deprecate(function () {
26988 return this.getBuffer();
26989 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
26990 });
26991 } catch (_) {}
26992 })();
26993
26994 // Test _writableState for inheritance to account for Duplex streams,
26995 // whose prototype chain only points to Readable.
26996 var realHasInstance;
26997 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
26998 realHasInstance = Function.prototype[Symbol.hasInstance];
26999 Object.defineProperty(Writable, Symbol.hasInstance, {
27000 value: function (object) {
27001 if (realHasInstance.call(this, object)) return true;
27002
27003 return object && object._writableState instanceof WritableState;
27004 }
27005 });
27006 } else {
27007 realHasInstance = function (object) {
27008 return object instanceof this;
27009 };
27010 }
27011
27012 function Writable(options) {
27013 Duplex = Duplex || require('./_stream_duplex');
27014
27015 // Writable ctor is applied to Duplexes, too.
27016 // `realHasInstance` is necessary because using plain `instanceof`
27017 // would return false, as no `_writableState` property is attached.
27018
27019 // Trying to use the custom `instanceof` for Writable here will also break the
27020 // Node.js LazyTransform implementation, which has a non-trivial getter for
27021 // `_writableState` that would lead to infinite recursion.
27022 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
27023 return new Writable(options);
27024 }
27025
27026 this._writableState = new WritableState(options, this);
27027
27028 // legacy.
27029 this.writable = true;
27030
27031 if (options) {
27032 if (typeof options.write === 'function') this._write = options.write;
27033
27034 if (typeof options.writev === 'function') this._writev = options.writev;
27035 }
27036
27037 Stream.call(this);
27038 }
27039
27040 // Otherwise people can pipe Writable streams, which is just wrong.
27041 Writable.prototype.pipe = function () {
27042 this.emit('error', new Error('Cannot pipe, not readable'));
27043 };
27044
27045 function writeAfterEnd(stream, cb) {
27046 var er = new Error('write after end');
27047 // TODO: defer error events consistently everywhere, not just the cb
27048 stream.emit('error', er);
27049 processNextTick(cb, er);
27050 }
27051
27052 // If we get something that is not a buffer, string, null, or undefined,
27053 // and we're not in objectMode, then that's an error.
27054 // Otherwise stream chunks are all considered to be of length=1, and the
27055 // watermarks determine how many objects to keep in the buffer, rather than
27056 // how many bytes or characters.
27057 function validChunk(stream, state, chunk, cb) {
27058 var valid = true;
27059 var er = false;
27060 // Always throw error if a null is written
27061 // if we are not in object mode then throw
27062 // if it is not a buffer, string, or undefined.
27063 if (chunk === null) {
27064 er = new TypeError('May not write null values to stream');
27065 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
27066 er = new TypeError('Invalid non-string/buffer chunk');
27067 }
27068 if (er) {
27069 stream.emit('error', er);
27070 processNextTick(cb, er);
27071 valid = false;
27072 }
27073 return valid;
27074 }
27075
27076 Writable.prototype.write = function (chunk, encoding, cb) {
27077 var state = this._writableState;
27078 var ret = false;
27079
27080 if (typeof encoding === 'function') {
27081 cb = encoding;
27082 encoding = null;
27083 }
27084
27085 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
27086
27087 if (typeof cb !== 'function') cb = nop;
27088
27089 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
27090 state.pendingcb++;
27091 ret = writeOrBuffer(this, state, chunk, encoding, cb);
27092 }
27093
27094 return ret;
27095 };
27096
27097 Writable.prototype.cork = function () {
27098 var state = this._writableState;
27099
27100 state.corked++;
27101 };
27102
27103 Writable.prototype.uncork = function () {
27104 var state = this._writableState;
27105
27106 if (state.corked) {
27107 state.corked--;
27108
27109 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
27110 }
27111 };
27112
27113 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
27114 // node::ParseEncoding() requires lower case.
27115 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
27116 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);
27117 this._writableState.defaultEncoding = encoding;
27118 return this;
27119 };
27120
27121 function decodeChunk(state, chunk, encoding) {
27122 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
27123 chunk = bufferShim.from(chunk, encoding);
27124 }
27125 return chunk;
27126 }
27127
27128 // if we're already writing something, then just put this
27129 // in the queue, and wait our turn. Otherwise, call _write
27130 // If we return false, then we need a drain event, so set that flag.
27131 function writeOrBuffer(stream, state, chunk, encoding, cb) {
27132 chunk = decodeChunk(state, chunk, encoding);
27133
27134 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
27135 var len = state.objectMode ? 1 : chunk.length;
27136
27137 state.length += len;
27138
27139 var ret = state.length < state.highWaterMark;
27140 // we must ensure that previous needDrain will not be reset to false.
27141 if (!ret) state.needDrain = true;
27142
27143 if (state.writing || state.corked) {
27144 var last = state.lastBufferedRequest;
27145 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
27146 if (last) {
27147 last.next = state.lastBufferedRequest;
27148 } else {
27149 state.bufferedRequest = state.lastBufferedRequest;
27150 }
27151 state.bufferedRequestCount += 1;
27152 } else {
27153 doWrite(stream, state, false, len, chunk, encoding, cb);
27154 }
27155
27156 return ret;
27157 }
27158
27159 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
27160 state.writelen = len;
27161 state.writecb = cb;
27162 state.writing = true;
27163 state.sync = true;
27164 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
27165 state.sync = false;
27166 }
27167
27168 function onwriteError(stream, state, sync, er, cb) {
27169 --state.pendingcb;
27170 if (sync) processNextTick(cb, er);else cb(er);
27171
27172 stream._writableState.errorEmitted = true;
27173 stream.emit('error', er);
27174 }
27175
27176 function onwriteStateUpdate(state) {
27177 state.writing = false;
27178 state.writecb = null;
27179 state.length -= state.writelen;
27180 state.writelen = 0;
27181 }
27182
27183 function onwrite(stream, er) {
27184 var state = stream._writableState;
27185 var sync = state.sync;
27186 var cb = state.writecb;
27187
27188 onwriteStateUpdate(state);
27189
27190 if (er) onwriteError(stream, state, sync, er, cb);else {
27191 // Check if we're actually ready to finish, but don't emit yet
27192 var finished = needFinish(state);
27193
27194 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
27195 clearBuffer(stream, state);
27196 }
27197
27198 if (sync) {
27199 /*<replacement>*/
27200 asyncWrite(afterWrite, stream, state, finished, cb);
27201 /*</replacement>*/
27202 } else {
27203 afterWrite(stream, state, finished, cb);
27204 }
27205 }
27206 }
27207
27208 function afterWrite(stream, state, finished, cb) {
27209 if (!finished) onwriteDrain(stream, state);
27210 state.pendingcb--;
27211 cb();
27212 finishMaybe(stream, state);
27213 }
27214
27215 // Must force callback to be called on nextTick, so that we don't
27216 // emit 'drain' before the write() consumer gets the 'false' return
27217 // value, and has a chance to attach a 'drain' listener.
27218 function onwriteDrain(stream, state) {
27219 if (state.length === 0 && state.needDrain) {
27220 state.needDrain = false;
27221 stream.emit('drain');
27222 }
27223 }
27224
27225 // if there's something in the buffer waiting, then process it
27226 function clearBuffer(stream, state) {
27227 state.bufferProcessing = true;
27228 var entry = state.bufferedRequest;
27229
27230 if (stream._writev && entry && entry.next) {
27231 // Fast case, write everything using _writev()
27232 var l = state.bufferedRequestCount;
27233 var buffer = new Array(l);
27234 var holder = state.corkedRequestsFree;
27235 holder.entry = entry;
27236
27237 var count = 0;
27238 while (entry) {
27239 buffer[count] = entry;
27240 entry = entry.next;
27241 count += 1;
27242 }
27243
27244 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
27245
27246 // doWrite is almost always async, defer these to save a bit of time
27247 // as the hot path ends with doWrite
27248 state.pendingcb++;
27249 state.lastBufferedRequest = null;
27250 if (holder.next) {
27251 state.corkedRequestsFree = holder.next;
27252 holder.next = null;
27253 } else {
27254 state.corkedRequestsFree = new CorkedRequest(state);
27255 }
27256 } else {
27257 // Slow case, write chunks one-by-one
27258 while (entry) {
27259 var chunk = entry.chunk;
27260 var encoding = entry.encoding;
27261 var cb = entry.callback;
27262 var len = state.objectMode ? 1 : chunk.length;
27263
27264 doWrite(stream, state, false, len, chunk, encoding, cb);
27265 entry = entry.next;
27266 // if we didn't call the onwrite immediately, then
27267 // it means that we need to wait until it does.
27268 // also, that means that the chunk and cb are currently
27269 // being processed, so move the buffer counter past them.
27270 if (state.writing) {
27271 break;
27272 }
27273 }
27274
27275 if (entry === null) state.lastBufferedRequest = null;
27276 }
27277
27278 state.bufferedRequestCount = 0;
27279 state.bufferedRequest = entry;
27280 state.bufferProcessing = false;
27281 }
27282
27283 Writable.prototype._write = function (chunk, encoding, cb) {
27284 cb(new Error('_write() is not implemented'));
27285 };
27286
27287 Writable.prototype._writev = null;
27288
27289 Writable.prototype.end = function (chunk, encoding, cb) {
27290 var state = this._writableState;
27291
27292 if (typeof chunk === 'function') {
27293 cb = chunk;
27294 chunk = null;
27295 encoding = null;
27296 } else if (typeof encoding === 'function') {
27297 cb = encoding;
27298 encoding = null;
27299 }
27300
27301 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
27302
27303 // .end() fully uncorks
27304 if (state.corked) {
27305 state.corked = 1;
27306 this.uncork();
27307 }
27308
27309 // ignore unnecessary end() calls.
27310 if (!state.ending && !state.finished) endWritable(this, state, cb);
27311 };
27312
27313 function needFinish(state) {
27314 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
27315 }
27316
27317 function prefinish(stream, state) {
27318 if (!state.prefinished) {
27319 state.prefinished = true;
27320 stream.emit('prefinish');
27321 }
27322 }
27323
27324 function finishMaybe(stream, state) {
27325 var need = needFinish(state);
27326 if (need) {
27327 if (state.pendingcb === 0) {
27328 prefinish(stream, state);
27329 state.finished = true;
27330 stream.emit('finish');
27331 } else {
27332 prefinish(stream, state);
27333 }
27334 }
27335 return need;
27336 }
27337
27338 function endWritable(stream, state, cb) {
27339 state.ending = true;
27340 finishMaybe(stream, state);
27341 if (cb) {
27342 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
27343 }
27344 state.ended = true;
27345 stream.writable = false;
27346 }
27347
27348 // It seems a linked list but it is not
27349 // there will be only 2 of these for each stream
27350 function CorkedRequest(state) {
27351 var _this = this;
27352
27353 this.next = null;
27354 this.entry = null;
27355
27356 this.finish = function (err) {
27357 var entry = _this.entry;
27358 _this.entry = null;
27359 while (entry) {
27360 var cb = entry.callback;
27361 state.pendingcb--;
27362 cb(err);
27363 entry = entry.next;
27364 }
27365 if (state.corkedRequestsFree) {
27366 state.corkedRequestsFree.next = _this;
27367 } else {
27368 state.corkedRequestsFree = _this;
27369 }
27370 };
27371 }
27372 }).call(this,require('_process'))
27373 },{"./_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){
27374 'use strict';
27375
27376 var Buffer = require('buffer').Buffer;
27377 /*<replacement>*/
27378 var bufferShim = require('buffer-shims');
27379 /*</replacement>*/
27380
27381 module.exports = BufferList;
27382
27383 function BufferList() {
27384 this.head = null;
27385 this.tail = null;
27386 this.length = 0;
27387 }
27388
27389 BufferList.prototype.push = function (v) {
27390 var entry = { data: v, next: null };
27391 if (this.length > 0) this.tail.next = entry;else this.head = entry;
27392 this.tail = entry;
27393 ++this.length;
27394 };
27395
27396 BufferList.prototype.unshift = function (v) {
27397 var entry = { data: v, next: this.head };
27398 if (this.length === 0) this.tail = entry;
27399 this.head = entry;
27400 ++this.length;
27401 };
27402
27403 BufferList.prototype.shift = function () {
27404 if (this.length === 0) return;
27405 var ret = this.head.data;
27406 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
27407 --this.length;
27408 return ret;
27409 };
27410
27411 BufferList.prototype.clear = function () {
27412 this.head = this.tail = null;
27413 this.length = 0;
27414 };
27415
27416 BufferList.prototype.join = function (s) {
27417 if (this.length === 0) return '';
27418 var p = this.head;
27419 var ret = '' + p.data;
27420 while (p = p.next) {
27421 ret += s + p.data;
27422 }return ret;
27423 };
27424
27425 BufferList.prototype.concat = function (n) {
27426 if (this.length === 0) return bufferShim.alloc(0);
27427 if (this.length === 1) return this.head.data;
27428 var ret = bufferShim.allocUnsafe(n >>> 0);
27429 var p = this.head;
27430 var i = 0;
27431 while (p) {
27432 p.data.copy(ret, i);
27433 i += p.data.length;
27434 p = p.next;
27435 }
27436 return ret;
27437 };
27438 },{"buffer":5,"buffer-shims":4}],21:[function(require,module,exports){
27439 module.exports = require("./lib/_stream_passthrough.js")
27440
27441 },{"./lib/_stream_passthrough.js":16}],22:[function(require,module,exports){
27442 (function (process){
27443 var Stream = (function (){
27444 try {
27445 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
27446 } catch(_){}
27447 }());
27448 exports = module.exports = require('./lib/_stream_readable.js');
27449 exports.Stream = Stream || exports;
27450 exports.Readable = exports;
27451 exports.Writable = require('./lib/_stream_writable.js');
27452 exports.Duplex = require('./lib/_stream_duplex.js');
27453 exports.Transform = require('./lib/_stream_transform.js');
27454 exports.PassThrough = require('./lib/_stream_passthrough.js');
27455
27456 if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
27457 module.exports = Stream;
27458 }
27459
27460 }).call(this,require('_process'))
27461 },{"./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){
27462 module.exports = require("./lib/_stream_transform.js")
27463
27464 },{"./lib/_stream_transform.js":18}],24:[function(require,module,exports){
27465 module.exports = require("./lib/_stream_writable.js")
27466
27467 },{"./lib/_stream_writable.js":19}],25:[function(require,module,exports){
27468 // Copyright Joyent, Inc. and other Node contributors.
27469 //
27470 // Permission is hereby granted, free of charge, to any person obtaining a
27471 // copy of this software and associated documentation files (the
27472 // "Software"), to deal in the Software without restriction, including
27473 // without limitation the rights to use, copy, modify, merge, publish,
27474 // distribute, sublicense, and/or sell copies of the Software, and to permit
27475 // persons to whom the Software is furnished to do so, subject to the
27476 // following conditions:
27477 //
27478 // The above copyright notice and this permission notice shall be included
27479 // in all copies or substantial portions of the Software.
27480 //
27481 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27482 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27483 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27484 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27485 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27486 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27487 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27488
27489 module.exports = Stream;
27490
27491 var EE = require('events').EventEmitter;
27492 var inherits = require('inherits');
27493
27494 inherits(Stream, EE);
27495 Stream.Readable = require('readable-stream/readable.js');
27496 Stream.Writable = require('readable-stream/writable.js');
27497 Stream.Duplex = require('readable-stream/duplex.js');
27498 Stream.Transform = require('readable-stream/transform.js');
27499 Stream.PassThrough = require('readable-stream/passthrough.js');
27500
27501 // Backwards-compat with node 0.4.x
27502 Stream.Stream = Stream;
27503
27504
27505
27506 // old-style streams. Note that the pipe method (the only relevant
27507 // part of this class) is overridden in the Readable class.
27508
27509 function Stream() {
27510 EE.call(this);
27511 }
27512
27513 Stream.prototype.pipe = function(dest, options) {
27514 var source = this;
27515
27516 function ondata(chunk) {
27517 if (dest.writable) {
27518 if (false === dest.write(chunk) && source.pause) {
27519 source.pause();
27520 }
27521 }
27522 }
27523
27524 source.on('data', ondata);
27525
27526 function ondrain() {
27527 if (source.readable && source.resume) {
27528 source.resume();
27529 }
27530 }
27531
27532 dest.on('drain', ondrain);
27533
27534 // If the 'end' option is not supplied, dest.end() will be called when
27535 // source gets the 'end' or 'close' events. Only dest.end() once.
27536 if (!dest._isStdio && (!options || options.end !== false)) {
27537 source.on('end', onend);
27538 source.on('close', onclose);
27539 }
27540
27541 var didOnEnd = false;
27542 function onend() {
27543 if (didOnEnd) return;
27544 didOnEnd = true;
27545
27546 dest.end();
27547 }
27548
27549
27550 function onclose() {
27551 if (didOnEnd) return;
27552 didOnEnd = true;
27553
27554 if (typeof dest.destroy === 'function') dest.destroy();
27555 }
27556
27557 // don't leave dangling pipes when there are errors.
27558 function onerror(er) {
27559 cleanup();
27560 if (EE.listenerCount(this, 'error') === 0) {
27561 throw er; // Unhandled stream error in pipe.
27562 }
27563 }
27564
27565 source.on('error', onerror);
27566 dest.on('error', onerror);
27567
27568 // remove all the event listeners that were added.
27569 function cleanup() {
27570 source.removeListener('data', ondata);
27571 dest.removeListener('drain', ondrain);
27572
27573 source.removeListener('end', onend);
27574 source.removeListener('close', onclose);
27575
27576 source.removeListener('error', onerror);
27577 dest.removeListener('error', onerror);
27578
27579 source.removeListener('end', cleanup);
27580 source.removeListener('close', cleanup);
27581
27582 dest.removeListener('close', cleanup);
27583 }
27584
27585 source.on('end', cleanup);
27586 source.on('close', cleanup);
27587
27588 dest.on('close', cleanup);
27589
27590 dest.emit('pipe', source);
27591
27592 // Allow for unix-like usage: A.pipe(B).pipe(C)
27593 return dest;
27594 };
27595
27596 },{"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){
27597 // Copyright Joyent, Inc. and other Node contributors.
27598 //
27599 // Permission is hereby granted, free of charge, to any person obtaining a
27600 // copy of this software and associated documentation files (the
27601 // "Software"), to deal in the Software without restriction, including
27602 // without limitation the rights to use, copy, modify, merge, publish,
27603 // distribute, sublicense, and/or sell copies of the Software, and to permit
27604 // persons to whom the Software is furnished to do so, subject to the
27605 // following conditions:
27606 //
27607 // The above copyright notice and this permission notice shall be included
27608 // in all copies or substantial portions of the Software.
27609 //
27610 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27611 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27612 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27613 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27614 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27615 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27616 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27617
27618 var Buffer = require('buffer').Buffer;
27619
27620 var isBufferEncoding = Buffer.isEncoding
27621 || function(encoding) {
27622 switch (encoding && encoding.toLowerCase()) {
27623 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;
27624 default: return false;
27625 }
27626 }
27627
27628
27629 function assertEncoding(encoding) {
27630 if (encoding && !isBufferEncoding(encoding)) {
27631 throw new Error('Unknown encoding: ' + encoding);
27632 }
27633 }
27634
27635 // StringDecoder provides an interface for efficiently splitting a series of
27636 // buffers into a series of JS strings without breaking apart multi-byte
27637 // characters. CESU-8 is handled as part of the UTF-8 encoding.
27638 //
27639 // @TODO Handling all encodings inside a single object makes it very difficult
27640 // to reason about this code, so it should be split up in the future.
27641 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
27642 // points as used by CESU-8.
27643 var StringDecoder = exports.StringDecoder = function(encoding) {
27644 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
27645 assertEncoding(encoding);
27646 switch (this.encoding) {
27647 case 'utf8':
27648 // CESU-8 represents each of Surrogate Pair by 3-bytes
27649 this.surrogateSize = 3;
27650 break;
27651 case 'ucs2':
27652 case 'utf16le':
27653 // UTF-16 represents each of Surrogate Pair by 2-bytes
27654 this.surrogateSize = 2;
27655 this.detectIncompleteChar = utf16DetectIncompleteChar;
27656 break;
27657 case 'base64':
27658 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
27659 this.surrogateSize = 3;
27660 this.detectIncompleteChar = base64DetectIncompleteChar;
27661 break;
27662 default:
27663 this.write = passThroughWrite;
27664 return;
27665 }
27666
27667 // Enough space to store all bytes of a single character. UTF-8 needs 4
27668 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
27669 this.charBuffer = new Buffer(6);
27670 // Number of bytes received for the current incomplete multi-byte character.
27671 this.charReceived = 0;
27672 // Number of bytes expected for the current incomplete multi-byte character.
27673 this.charLength = 0;
27674 };
27675
27676
27677 // write decodes the given buffer and returns it as JS string that is
27678 // guaranteed to not contain any partial multi-byte characters. Any partial
27679 // character found at the end of the buffer is buffered up, and will be
27680 // returned when calling write again with the remaining bytes.
27681 //
27682 // Note: Converting a Buffer containing an orphan surrogate to a String
27683 // currently works, but converting a String to a Buffer (via `new Buffer`, or
27684 // Buffer#write) will replace incomplete surrogates with the unicode
27685 // replacement character. See https://codereview.chromium.org/121173009/ .
27686 StringDecoder.prototype.write = function(buffer) {
27687 var charStr = '';
27688 // if our last write ended with an incomplete multibyte character
27689 while (this.charLength) {
27690 // determine how many remaining bytes this buffer has to offer for this char
27691 var available = (buffer.length >= this.charLength - this.charReceived) ?
27692 this.charLength - this.charReceived :
27693 buffer.length;
27694
27695 // add the new bytes to the char buffer
27696 buffer.copy(this.charBuffer, this.charReceived, 0, available);
27697 this.charReceived += available;
27698
27699 if (this.charReceived < this.charLength) {
27700 // still not enough chars in this buffer? wait for more ...
27701 return '';
27702 }
27703
27704 // remove bytes belonging to the current character from the buffer
27705 buffer = buffer.slice(available, buffer.length);
27706
27707 // get the character that was split
27708 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
27709
27710 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
27711 var charCode = charStr.charCodeAt(charStr.length - 1);
27712 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
27713 this.charLength += this.surrogateSize;
27714 charStr = '';
27715 continue;
27716 }
27717 this.charReceived = this.charLength = 0;
27718
27719 // if there are no more bytes in this buffer, just emit our char
27720 if (buffer.length === 0) {
27721 return charStr;
27722 }
27723 break;
27724 }
27725
27726 // determine and set charLength / charReceived
27727 this.detectIncompleteChar(buffer);
27728
27729 var end = buffer.length;
27730 if (this.charLength) {
27731 // buffer the incomplete character bytes we got
27732 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
27733 end -= this.charReceived;
27734 }
27735
27736 charStr += buffer.toString(this.encoding, 0, end);
27737
27738 var end = charStr.length - 1;
27739 var charCode = charStr.charCodeAt(end);
27740 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
27741 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
27742 var size = this.surrogateSize;
27743 this.charLength += size;
27744 this.charReceived += size;
27745 this.charBuffer.copy(this.charBuffer, size, 0, size);
27746 buffer.copy(this.charBuffer, 0, 0, size);
27747 return charStr.substring(0, end);
27748 }
27749
27750 // or just emit the charStr
27751 return charStr;
27752 };
27753
27754 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
27755 // the end of the given buffer. If so, it sets this.charLength to the byte
27756 // length that character, and sets this.charReceived to the number of bytes
27757 // that are available for this character.
27758 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
27759 // determine how many bytes we have to check at the end of this buffer
27760 var i = (buffer.length >= 3) ? 3 : buffer.length;
27761
27762 // Figure out if one of the last i bytes of our buffer announces an
27763 // incomplete char.
27764 for (; i > 0; i--) {
27765 var c = buffer[buffer.length - i];
27766
27767 // See http://en.wikipedia.org/wiki/UTF-8#Description
27768
27769 // 110XXXXX
27770 if (i == 1 && c >> 5 == 0x06) {
27771 this.charLength = 2;
27772 break;
27773 }
27774
27775 // 1110XXXX
27776 if (i <= 2 && c >> 4 == 0x0E) {
27777 this.charLength = 3;
27778 break;
27779 }
27780
27781 // 11110XXX
27782 if (i <= 3 && c >> 3 == 0x1E) {
27783 this.charLength = 4;
27784 break;
27785 }
27786 }
27787 this.charReceived = i;
27788 };
27789
27790 StringDecoder.prototype.end = function(buffer) {
27791 var res = '';
27792 if (buffer && buffer.length)
27793 res = this.write(buffer);
27794
27795 if (this.charReceived) {
27796 var cr = this.charReceived;
27797 var buf = this.charBuffer;
27798 var enc = this.encoding;
27799 res += buf.slice(0, cr).toString(enc);
27800 }
27801
27802 return res;
27803 };
27804
27805 function passThroughWrite(buffer) {
27806 return buffer.toString(this.encoding);
27807 }
27808
27809 function utf16DetectIncompleteChar(buffer) {
27810 this.charReceived = buffer.length % 2;
27811 this.charLength = this.charReceived ? 2 : 0;
27812 }
27813
27814 function base64DetectIncompleteChar(buffer) {
27815 this.charReceived = buffer.length % 3;
27816 this.charLength = this.charReceived ? 3 : 0;
27817 }
27818
27819 },{"buffer":5}],27:[function(require,module,exports){
27820 (function (global){
27821
27822 /**
27823 * Module exports.
27824 */
27825
27826 module.exports = deprecate;
27827
27828 /**
27829 * Mark that a method should not be used.
27830 * Returns a modified function which warns once by default.
27831 *
27832 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
27833 *
27834 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
27835 * will throw an Error when invoked.
27836 *
27837 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
27838 * will invoke `console.trace()` instead of `console.error()`.
27839 *
27840 * @param {Function} fn - the function to deprecate
27841 * @param {String} msg - the string to print to the console when `fn` is invoked
27842 * @returns {Function} a new "deprecated" version of `fn`
27843 * @api public
27844 */
27845
27846 function deprecate (fn, msg) {
27847 if (config('noDeprecation')) {
27848 return fn;
27849 }
27850
27851 var warned = false;
27852 function deprecated() {
27853 if (!warned) {
27854 if (config('throwDeprecation')) {
27855 throw new Error(msg);
27856 } else if (config('traceDeprecation')) {
27857 console.trace(msg);
27858 } else {
27859 console.warn(msg);
27860 }
27861 warned = true;
27862 }
27863 return fn.apply(this, arguments);
27864 }
27865
27866 return deprecated;
27867 }
27868
27869 /**
27870 * Checks `localStorage` for boolean values for the given `name`.
27871 *
27872 * @param {String} name
27873 * @returns {Boolean}
27874 * @api private
27875 */
27876
27877 function config (name) {
27878 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
27879 try {
27880 if (!global.localStorage) return false;
27881 } catch (_) {
27882 return false;
27883 }
27884 var val = global.localStorage[name];
27885 if (null == val) return false;
27886 return String(val).toLowerCase() === 'true';
27887 }
27888
27889 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
27890 },{}],28:[function(require,module,exports){
27891 arguments[4][9][0].apply(exports,arguments)
27892 },{"dup":9}],29:[function(require,module,exports){
27893 module.exports = function isBuffer(arg) {
27894 return arg && typeof arg === 'object'
27895 && typeof arg.copy === 'function'
27896 && typeof arg.fill === 'function'
27897 && typeof arg.readUInt8 === 'function';
27898 }
27899 },{}],30:[function(require,module,exports){
27900 (function (process,global){
27901 // Copyright Joyent, Inc. and other Node contributors.
27902 //
27903 // Permission is hereby granted, free of charge, to any person obtaining a
27904 // copy of this software and associated documentation files (the
27905 // "Software"), to deal in the Software without restriction, including
27906 // without limitation the rights to use, copy, modify, merge, publish,
27907 // distribute, sublicense, and/or sell copies of the Software, and to permit
27908 // persons to whom the Software is furnished to do so, subject to the
27909 // following conditions:
27910 //
27911 // The above copyright notice and this permission notice shall be included
27912 // in all copies or substantial portions of the Software.
27913 //
27914 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27915 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27916 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27917 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27918 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27919 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27920 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27921
27922 var formatRegExp = /%[sdj%]/g;
27923 exports.format = function(f) {
27924 if (!isString(f)) {
27925 var objects = [];
27926 for (var i = 0; i < arguments.length; i++) {
27927 objects.push(inspect(arguments[i]));
27928 }
27929 return objects.join(' ');
27930 }
27931
27932 var i = 1;
27933 var args = arguments;
27934 var len = args.length;
27935 var str = String(f).replace(formatRegExp, function(x) {
27936 if (x === '%%') return '%';
27937 if (i >= len) return x;
27938 switch (x) {
27939 case '%s': return String(args[i++]);
27940 case '%d': return Number(args[i++]);
27941 case '%j':
27942 try {
27943 return JSON.stringify(args[i++]);
27944 } catch (_) {
27945 return '[Circular]';
27946 }
27947 default:
27948 return x;
27949 }
27950 });
27951 for (var x = args[i]; i < len; x = args[++i]) {
27952 if (isNull(x) || !isObject(x)) {
27953 str += ' ' + x;
27954 } else {
27955 str += ' ' + inspect(x);
27956 }
27957 }
27958 return str;
27959 };
27960
27961
27962 // Mark that a method should not be used.
27963 // Returns a modified function which warns once by default.
27964 // If --no-deprecation is set, then it is a no-op.
27965 exports.deprecate = function(fn, msg) {
27966 // Allow for deprecating things in the process of starting up.
27967 if (isUndefined(global.process)) {
27968 return function() {
27969 return exports.deprecate(fn, msg).apply(this, arguments);
27970 };
27971 }
27972
27973 if (process.noDeprecation === true) {
27974 return fn;
27975 }
27976
27977 var warned = false;
27978 function deprecated() {
27979 if (!warned) {
27980 if (process.throwDeprecation) {
27981 throw new Error(msg);
27982 } else if (process.traceDeprecation) {
27983 console.trace(msg);
27984 } else {
27985 console.error(msg);
27986 }
27987 warned = true;
27988 }
27989 return fn.apply(this, arguments);
27990 }
27991
27992 return deprecated;
27993 };
27994
27995
27996 var debugs = {};
27997 var debugEnviron;
27998 exports.debuglog = function(set) {
27999 if (isUndefined(debugEnviron))
28000 debugEnviron = process.env.NODE_DEBUG || '';
28001 set = set.toUpperCase();
28002 if (!debugs[set]) {
28003 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
28004 var pid = process.pid;
28005 debugs[set] = function() {
28006 var msg = exports.format.apply(exports, arguments);
28007 console.error('%s %d: %s', set, pid, msg);
28008 };
28009 } else {
28010 debugs[set] = function() {};
28011 }
28012 }
28013 return debugs[set];
28014 };
28015
28016
28017 /**
28018 * Echos the value of a value. Trys to print the value out
28019 * in the best way possible given the different types.
28020 *
28021 * @param {Object} obj The object to print out.
28022 * @param {Object} opts Optional options object that alters the output.
28023 */
28024 /* legacy: obj, showHidden, depth, colors*/
28025 function inspect(obj, opts) {
28026 // default options
28027 var ctx = {
28028 seen: [],
28029 stylize: stylizeNoColor
28030 };
28031 // legacy...
28032 if (arguments.length >= 3) ctx.depth = arguments[2];
28033 if (arguments.length >= 4) ctx.colors = arguments[3];
28034 if (isBoolean(opts)) {
28035 // legacy...
28036 ctx.showHidden = opts;
28037 } else if (opts) {
28038 // got an "options" object
28039 exports._extend(ctx, opts);
28040 }
28041 // set default options
28042 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
28043 if (isUndefined(ctx.depth)) ctx.depth = 2;
28044 if (isUndefined(ctx.colors)) ctx.colors = false;
28045 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
28046 if (ctx.colors) ctx.stylize = stylizeWithColor;
28047 return formatValue(ctx, obj, ctx.depth);
28048 }
28049 exports.inspect = inspect;
28050
28051
28052 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
28053 inspect.colors = {
28054 'bold' : [1, 22],
28055 'italic' : [3, 23],
28056 'underline' : [4, 24],
28057 'inverse' : [7, 27],
28058 'white' : [37, 39],
28059 'grey' : [90, 39],
28060 'black' : [30, 39],
28061 'blue' : [34, 39],
28062 'cyan' : [36, 39],
28063 'green' : [32, 39],
28064 'magenta' : [35, 39],
28065 'red' : [31, 39],
28066 'yellow' : [33, 39]
28067 };
28068
28069 // Don't use 'blue' not visible on cmd.exe
28070 inspect.styles = {
28071 'special': 'cyan',
28072 'number': 'yellow',
28073 'boolean': 'yellow',
28074 'undefined': 'grey',
28075 'null': 'bold',
28076 'string': 'green',
28077 'date': 'magenta',
28078 // "name": intentionally not styling
28079 'regexp': 'red'
28080 };
28081
28082
28083 function stylizeWithColor(str, styleType) {
28084 var style = inspect.styles[styleType];
28085
28086 if (style) {
28087 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
28088 '\u001b[' + inspect.colors[style][1] + 'm';
28089 } else {
28090 return str;
28091 }
28092 }
28093
28094
28095 function stylizeNoColor(str, styleType) {
28096 return str;
28097 }
28098
28099
28100 function arrayToHash(array) {
28101 var hash = {};
28102
28103 array.forEach(function(val, idx) {
28104 hash[val] = true;
28105 });
28106
28107 return hash;
28108 }
28109
28110
28111 function formatValue(ctx, value, recurseTimes) {
28112 // Provide a hook for user-specified inspect functions.
28113 // Check that value is an object with an inspect function on it
28114 if (ctx.customInspect &&
28115 value &&
28116 isFunction(value.inspect) &&
28117 // Filter out the util module, it's inspect function is special
28118 value.inspect !== exports.inspect &&
28119 // Also filter out any prototype objects using the circular check.
28120 !(value.constructor && value.constructor.prototype === value)) {
28121 var ret = value.inspect(recurseTimes, ctx);
28122 if (!isString(ret)) {
28123 ret = formatValue(ctx, ret, recurseTimes);
28124 }
28125 return ret;
28126 }
28127
28128 // Primitive types cannot have properties
28129 var primitive = formatPrimitive(ctx, value);
28130 if (primitive) {
28131 return primitive;
28132 }
28133
28134 // Look up the keys of the object.
28135 var keys = Object.keys(value);
28136 var visibleKeys = arrayToHash(keys);
28137
28138 if (ctx.showHidden) {
28139 keys = Object.getOwnPropertyNames(value);
28140 }
28141
28142 // IE doesn't make error fields non-enumerable
28143 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
28144 if (isError(value)
28145 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
28146 return formatError(value);
28147 }
28148
28149 // Some type of object without properties can be shortcutted.
28150 if (keys.length === 0) {
28151 if (isFunction(value)) {
28152 var name = value.name ? ': ' + value.name : '';
28153 return ctx.stylize('[Function' + name + ']', 'special');
28154 }
28155 if (isRegExp(value)) {
28156 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
28157 }
28158 if (isDate(value)) {
28159 return ctx.stylize(Date.prototype.toString.call(value), 'date');
28160 }
28161 if (isError(value)) {
28162 return formatError(value);
28163 }
28164 }
28165
28166 var base = '', array = false, braces = ['{', '}'];
28167
28168 // Make Array say that they are Array
28169 if (isArray(value)) {
28170 array = true;
28171 braces = ['[', ']'];
28172 }
28173
28174 // Make functions say that they are functions
28175 if (isFunction(value)) {
28176 var n = value.name ? ': ' + value.name : '';
28177 base = ' [Function' + n + ']';
28178 }
28179
28180 // Make RegExps say that they are RegExps
28181 if (isRegExp(value)) {
28182 base = ' ' + RegExp.prototype.toString.call(value);
28183 }
28184
28185 // Make dates with properties first say the date
28186 if (isDate(value)) {
28187 base = ' ' + Date.prototype.toUTCString.call(value);
28188 }
28189
28190 // Make error with message first say the error
28191 if (isError(value)) {
28192 base = ' ' + formatError(value);
28193 }
28194
28195 if (keys.length === 0 && (!array || value.length == 0)) {
28196 return braces[0] + base + braces[1];
28197 }
28198
28199 if (recurseTimes < 0) {
28200 if (isRegExp(value)) {
28201 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
28202 } else {
28203 return ctx.stylize('[Object]', 'special');
28204 }
28205 }
28206
28207 ctx.seen.push(value);
28208
28209 var output;
28210 if (array) {
28211 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
28212 } else {
28213 output = keys.map(function(key) {
28214 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
28215 });
28216 }
28217
28218 ctx.seen.pop();
28219
28220 return reduceToSingleString(output, base, braces);
28221 }
28222
28223
28224 function formatPrimitive(ctx, value) {
28225 if (isUndefined(value))
28226 return ctx.stylize('undefined', 'undefined');
28227 if (isString(value)) {
28228 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
28229 .replace(/'/g, "\\'")
28230 .replace(/\\"/g, '"') + '\'';
28231 return ctx.stylize(simple, 'string');
28232 }
28233 if (isNumber(value))
28234 return ctx.stylize('' + value, 'number');
28235 if (isBoolean(value))
28236 return ctx.stylize('' + value, 'boolean');
28237 // For some reason typeof null is "object", so special case here.
28238 if (isNull(value))
28239 return ctx.stylize('null', 'null');
28240 }
28241
28242
28243 function formatError(value) {
28244 return '[' + Error.prototype.toString.call(value) + ']';
28245 }
28246
28247
28248 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
28249 var output = [];
28250 for (var i = 0, l = value.length; i < l; ++i) {
28251 if (hasOwnProperty(value, String(i))) {
28252 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
28253 String(i), true));
28254 } else {
28255 output.push('');
28256 }
28257 }
28258 keys.forEach(function(key) {
28259 if (!key.match(/^\d+$/)) {
28260 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
28261 key, true));
28262 }
28263 });
28264 return output;
28265 }
28266
28267
28268 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
28269 var name, str, desc;
28270 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
28271 if (desc.get) {
28272 if (desc.set) {
28273 str = ctx.stylize('[Getter/Setter]', 'special');
28274 } else {
28275 str = ctx.stylize('[Getter]', 'special');
28276 }
28277 } else {
28278 if (desc.set) {
28279 str = ctx.stylize('[Setter]', 'special');
28280 }
28281 }
28282 if (!hasOwnProperty(visibleKeys, key)) {
28283 name = '[' + key + ']';
28284 }
28285 if (!str) {
28286 if (ctx.seen.indexOf(desc.value) < 0) {
28287 if (isNull(recurseTimes)) {
28288 str = formatValue(ctx, desc.value, null);
28289 } else {
28290 str = formatValue(ctx, desc.value, recurseTimes - 1);
28291 }
28292 if (str.indexOf('\n') > -1) {
28293 if (array) {
28294 str = str.split('\n').map(function(line) {
28295 return ' ' + line;
28296 }).join('\n').substr(2);
28297 } else {
28298 str = '\n' + str.split('\n').map(function(line) {
28299 return ' ' + line;
28300 }).join('\n');
28301 }
28302 }
28303 } else {
28304 str = ctx.stylize('[Circular]', 'special');
28305 }
28306 }
28307 if (isUndefined(name)) {
28308 if (array && key.match(/^\d+$/)) {
28309 return str;
28310 }
28311 name = JSON.stringify('' + key);
28312 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
28313 name = name.substr(1, name.length - 2);
28314 name = ctx.stylize(name, 'name');
28315 } else {
28316 name = name.replace(/'/g, "\\'")
28317 .replace(/\\"/g, '"')
28318 .replace(/(^"|"$)/g, "'");
28319 name = ctx.stylize(name, 'string');
28320 }
28321 }
28322
28323 return name + ': ' + str;
28324 }
28325
28326
28327 function reduceToSingleString(output, base, braces) {
28328 var numLinesEst = 0;
28329 var length = output.reduce(function(prev, cur) {
28330 numLinesEst++;
28331 if (cur.indexOf('\n') >= 0) numLinesEst++;
28332 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
28333 }, 0);
28334
28335 if (length > 60) {
28336 return braces[0] +
28337 (base === '' ? '' : base + '\n ') +
28338 ' ' +
28339 output.join(',\n ') +
28340 ' ' +
28341 braces[1];
28342 }
28343
28344 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
28345 }
28346
28347
28348 // NOTE: These type checking functions intentionally don't use `instanceof`
28349 // because it is fragile and can be easily faked with `Object.create()`.
28350 function isArray(ar) {
28351 return Array.isArray(ar);
28352 }
28353 exports.isArray = isArray;
28354
28355 function isBoolean(arg) {
28356 return typeof arg === 'boolean';
28357 }
28358 exports.isBoolean = isBoolean;
28359
28360 function isNull(arg) {
28361 return arg === null;
28362 }
28363 exports.isNull = isNull;
28364
28365 function isNullOrUndefined(arg) {
28366 return arg == null;
28367 }
28368 exports.isNullOrUndefined = isNullOrUndefined;
28369
28370 function isNumber(arg) {
28371 return typeof arg === 'number';
28372 }
28373 exports.isNumber = isNumber;
28374
28375 function isString(arg) {
28376 return typeof arg === 'string';
28377 }
28378 exports.isString = isString;
28379
28380 function isSymbol(arg) {
28381 return typeof arg === 'symbol';
28382 }
28383 exports.isSymbol = isSymbol;
28384
28385 function isUndefined(arg) {
28386 return arg === void 0;
28387 }
28388 exports.isUndefined = isUndefined;
28389
28390 function isRegExp(re) {
28391 return isObject(re) && objectToString(re) === '[object RegExp]';
28392 }
28393 exports.isRegExp = isRegExp;
28394
28395 function isObject(arg) {
28396 return typeof arg === 'object' && arg !== null;
28397 }
28398 exports.isObject = isObject;
28399
28400 function isDate(d) {
28401 return isObject(d) && objectToString(d) === '[object Date]';
28402 }
28403 exports.isDate = isDate;
28404
28405 function isError(e) {
28406 return isObject(e) &&
28407 (objectToString(e) === '[object Error]' || e instanceof Error);
28408 }
28409 exports.isError = isError;
28410
28411 function isFunction(arg) {
28412 return typeof arg === 'function';
28413 }
28414 exports.isFunction = isFunction;
28415
28416 function isPrimitive(arg) {
28417 return arg === null ||
28418 typeof arg === 'boolean' ||
28419 typeof arg === 'number' ||
28420 typeof arg === 'string' ||
28421 typeof arg === 'symbol' || // ES6 symbol
28422 typeof arg === 'undefined';
28423 }
28424 exports.isPrimitive = isPrimitive;
28425
28426 exports.isBuffer = require('./support/isBuffer');
28427
28428 function objectToString(o) {
28429 return Object.prototype.toString.call(o);
28430 }
28431
28432
28433 function pad(n) {
28434 return n < 10 ? '0' + n.toString(10) : n.toString(10);
28435 }
28436
28437
28438 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
28439 'Oct', 'Nov', 'Dec'];
28440
28441 // 26 Feb 16:19:34
28442 function timestamp() {
28443 var d = new Date();
28444 var time = [pad(d.getHours()),
28445 pad(d.getMinutes()),
28446 pad(d.getSeconds())].join(':');
28447 return [d.getDate(), months[d.getMonth()], time].join(' ');
28448 }
28449
28450
28451 // log is just a thin wrapper to console.log that prepends a timestamp
28452 exports.log = function() {
28453 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
28454 };
28455
28456
28457 /**
28458 * Inherit the prototype methods from one constructor into another.
28459 *
28460 * The Function.prototype.inherits from lang.js rewritten as a standalone
28461 * function (not on Function.prototype). NOTE: If this file is to be loaded
28462 * during bootstrapping this function needs to be rewritten using some native
28463 * functions as prototype setup using normal JavaScript does not work as
28464 * expected during bootstrapping (see mirror.js in r114903).
28465 *
28466 * @param {function} ctor Constructor function which needs to inherit the
28467 * prototype.
28468 * @param {function} superCtor Constructor function to inherit prototype from.
28469 */
28470 exports.inherits = require('inherits');
28471
28472 exports._extend = function(origin, add) {
28473 // Don't do anything if add isn't an object
28474 if (!add || !isObject(add)) return origin;
28475
28476 var keys = Object.keys(add);
28477 var i = keys.length;
28478 while (i--) {
28479 origin[keys[i]] = add[keys[i]];
28480 }
28481 return origin;
28482 };
28483
28484 function hasOwnProperty(obj, prop) {
28485 return Object.prototype.hasOwnProperty.call(obj, prop);
28486 }
28487
28488 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
28489 },{"./support/isBuffer":29,"_process":13,"inherits":28}],31:[function(require,module,exports){
28490 (function (Buffer){
28491 const createKeccakHash = require('keccak')
28492 const secp256k1 = require('secp256k1')
28493 const assert = require('assert')
28494 const rlp = require('rlp')
28495 const BN = require('bn.js')
28496 const createHash = require('create-hash')
28497 Object.assign(exports, require('ethjs-util'))
28498
28499 /**
28500 * the max integer that this VM can handle (a ```BN```)
28501 * @var {BN} MAX_INTEGER
28502 */
28503 exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)
28504
28505 /**
28506 * 2^256 (a ```BN```)
28507 * @var {BN} TWO_POW256
28508 */
28509 exports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16)
28510
28511 /**
28512 * SHA3-256 hash of null (a ```String```)
28513 * @var {String} SHA3_NULL_S
28514 */
28515 exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
28516
28517 /**
28518 * SHA3-256 hash of null (a ```Buffer```)
28519 * @var {Buffer} SHA3_NULL
28520 */
28521 exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
28522
28523 /**
28524 * SHA3-256 of an RLP of an empty array (a ```String```)
28525 * @var {String} SHA3_RLP_ARRAY_S
28526 */
28527 exports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
28528
28529 /**
28530 * SHA3-256 of an RLP of an empty array (a ```Buffer```)
28531 * @var {Buffer} SHA3_RLP_ARRAY
28532 */
28533 exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
28534
28535 /**
28536 * SHA3-256 hash of the RLP of null (a ```String```)
28537 * @var {String} SHA3_RLP_S
28538 */
28539 exports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
28540
28541 /**
28542 * SHA3-256 hash of the RLP of null (a ```Buffer```)
28543 * @var {Buffer} SHA3_RLP
28544 */
28545 exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
28546
28547 /**
28548 * [`BN`](https://github.com/indutny/bn.js)
28549 * @var {Function}
28550 */
28551 exports.BN = BN
28552
28553 /**
28554 * [`rlp`](https://github.com/ethereumjs/rlp)
28555 * @var {Function}
28556 */
28557 exports.rlp = rlp
28558
28559 /**
28560 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
28561 * @var {Object}
28562 */
28563 exports.secp256k1 = secp256k1
28564
28565 /**
28566 * Returns a buffer filled with 0s
28567 * @method zeros
28568 * @param {Number} bytes the number of bytes the buffer should be
28569 * @return {Buffer}
28570 */
28571 exports.zeros = function (bytes) {
28572 return Buffer.allocUnsafe(bytes).fill(0)
28573 }
28574
28575 /**
28576 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
28577 * Or it truncates the beginning if it exceeds.
28578 * @method lsetLength
28579 * @param {Buffer|Array} msg the value to pad
28580 * @param {Number} length the number of bytes the output should be
28581 * @param {Boolean} [right=false] whether to start padding form the left or right
28582 * @return {Buffer|Array}
28583 */
28584 exports.setLengthLeft = exports.setLength = function (msg, length, right) {
28585 var buf = exports.zeros(length)
28586 msg = exports.toBuffer(msg)
28587 if (right) {
28588 if (msg.length < length) {
28589 msg.copy(buf)
28590 return buf
28591 }
28592 return msg.slice(0, length)
28593 } else {
28594 if (msg.length < length) {
28595 msg.copy(buf, length - msg.length)
28596 return buf
28597 }
28598 return msg.slice(-length)
28599 }
28600 }
28601
28602 /**
28603 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
28604 * Or it truncates the beginning if it exceeds.
28605 * @param {Buffer|Array} msg the value to pad
28606 * @param {Number} length the number of bytes the output should be
28607 * @return {Buffer|Array}
28608 */
28609 exports.setLengthRight = function (msg, length) {
28610 return exports.setLength(msg, length, true)
28611 }
28612
28613 /**
28614 * Trims leading zeros from a `Buffer` or an `Array`
28615 * @param {Buffer|Array|String} a
28616 * @return {Buffer|Array|String}
28617 */
28618 exports.unpad = exports.stripZeros = function (a) {
28619 a = exports.stripHexPrefix(a)
28620 var first = a[0]
28621 while (a.length > 0 && first.toString() === '0') {
28622 a = a.slice(1)
28623 first = a[0]
28624 }
28625 return a
28626 }
28627 /**
28628 * 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.
28629 * @param {*} v the value
28630 */
28631 exports.toBuffer = function (v) {
28632 if (!Buffer.isBuffer(v)) {
28633 if (Array.isArray(v)) {
28634 v = Buffer.from(v)
28635 } else if (typeof v === 'string') {
28636 if (exports.isHexPrefixed(v)) {
28637 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
28638 } else {
28639 v = Buffer.from(v)
28640 }
28641 } else if (typeof v === 'number') {
28642 v = exports.intToBuffer(v)
28643 } else if (v === null || v === undefined) {
28644 v = Buffer.allocUnsafe(0)
28645 } else if (v.toArray) {
28646 // converts a BN to a Buffer
28647 v = Buffer.from(v.toArray())
28648 } else {
28649 throw new Error('invalid type')
28650 }
28651 }
28652 return v
28653 }
28654
28655 /**
28656 * Converts a `Buffer` to a `Number`
28657 * @param {Buffer} buf
28658 * @return {Number}
28659 * @throws If the input number exceeds 53 bits.
28660 */
28661 exports.bufferToInt = function (buf) {
28662 return new BN(exports.toBuffer(buf)).toNumber()
28663 }
28664
28665 /**
28666 * Converts a `Buffer` into a hex `String`
28667 * @param {Buffer} buf
28668 * @return {String}
28669 */
28670 exports.bufferToHex = function (buf) {
28671 buf = exports.toBuffer(buf)
28672 return '0x' + buf.toString('hex')
28673 }
28674
28675 /**
28676 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
28677 * @param {Buffer} num
28678 * @return {BN}
28679 */
28680 exports.fromSigned = function (num) {
28681 return new BN(num).fromTwos(256)
28682 }
28683
28684 /**
28685 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
28686 * @param {BN} num
28687 * @return {Buffer}
28688 */
28689 exports.toUnsigned = function (num) {
28690 return Buffer.from(num.toTwos(256).toArray())
28691 }
28692
28693 /**
28694 * Creates SHA-3 hash of the input
28695 * @param {Buffer|Array|String|Number} a the input data
28696 * @param {Number} [bits=256] the SHA width
28697 * @return {Buffer}
28698 */
28699 exports.sha3 = function (a, bits) {
28700 a = exports.toBuffer(a)
28701 if (!bits) bits = 256
28702
28703 return createKeccakHash('keccak' + bits).update(a).digest()
28704 }
28705
28706 /**
28707 * Creates SHA256 hash of the input
28708 * @param {Buffer|Array|String|Number} a the input data
28709 * @return {Buffer}
28710 */
28711 exports.sha256 = function (a) {
28712 a = exports.toBuffer(a)
28713 return createHash('sha256').update(a).digest()
28714 }
28715
28716 /**
28717 * Creates RIPEMD160 hash of the input
28718 * @param {Buffer|Array|String|Number} a the input data
28719 * @param {Boolean} padded whether it should be padded to 256 bits or not
28720 * @return {Buffer}
28721 */
28722 exports.ripemd160 = function (a, padded) {
28723 a = exports.toBuffer(a)
28724 var hash = createHash('rmd160').update(a).digest()
28725 if (padded === true) {
28726 return exports.setLength(hash, 32)
28727 } else {
28728 return hash
28729 }
28730 }
28731
28732 /**
28733 * Creates SHA-3 hash of the RLP encoded version of the input
28734 * @param {Buffer|Array|String|Number} a the input data
28735 * @return {Buffer}
28736 */
28737 exports.rlphash = function (a) {
28738 return exports.sha3(rlp.encode(a))
28739 }
28740
28741 /**
28742 * Checks if the private key satisfies the rules of the curve secp256k1.
28743 * @param {Buffer} privateKey
28744 * @return {Boolean}
28745 */
28746 exports.isValidPrivate = function (privateKey) {
28747 return secp256k1.privateKeyVerify(privateKey)
28748 }
28749
28750 /**
28751 * Checks if the public key satisfies the rules of the curve secp256k1
28752 * and the requirements of Ethereum.
28753 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
28754 * @param {Boolean} [sanitize=false] Accept public keys in other formats
28755 * @return {Boolean}
28756 */
28757 exports.isValidPublic = function (publicKey, sanitize) {
28758 if (publicKey.length === 64) {
28759 // Convert to SEC1 for secp256k1
28760 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([4]), publicKey ]))
28761 }
28762
28763 if (!sanitize) {
28764 return false
28765 }
28766
28767 return secp256k1.publicKeyVerify(publicKey)
28768 }
28769
28770 /**
28771 * Returns the ethereum address of a given public key.
28772 * Accepts "Ethereum public keys" and SEC1 encoded keys.
28773 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
28774 * @param {Boolean} [sanitize=false] Accept public keys in other formats
28775 * @return {Buffer}
28776 */
28777 exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
28778 pubKey = exports.toBuffer(pubKey)
28779 if (sanitize && (pubKey.length !== 64)) {
28780 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1)
28781 }
28782 assert(pubKey.length === 64)
28783 // Only take the lower 160bits of the hash
28784 return exports.sha3(pubKey).slice(-20)
28785 }
28786
28787 /**
28788 * Returns the ethereum public key of a given private key
28789 * @param {Buffer} privateKey A private key must be 256 bits wide
28790 * @return {Buffer}
28791 */
28792 var privateToPublic = exports.privateToPublic = function (privateKey) {
28793 privateKey = exports.toBuffer(privateKey)
28794 // skip the type flag and use the X, Y points
28795 return secp256k1.publicKeyCreate(privateKey, false).slice(1)
28796 }
28797
28798 /**
28799 * Converts a public key to the Ethereum format.
28800 * @param {Buffer} publicKey
28801 * @return {Buffer}
28802 */
28803 exports.importPublic = function (publicKey) {
28804 publicKey = exports.toBuffer(publicKey)
28805 if (publicKey.length !== 64) {
28806 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1)
28807 }
28808 return publicKey
28809 }
28810
28811 /**
28812 * ECDSA sign
28813 * @param {Buffer} msgHash
28814 * @param {Buffer} privateKey
28815 * @return {Object}
28816 */
28817 exports.ecsign = function (msgHash, privateKey) {
28818 var sig = secp256k1.sign(msgHash, privateKey)
28819
28820 var ret = {}
28821 ret.r = sig.signature.slice(0, 32)
28822 ret.s = sig.signature.slice(32, 64)
28823 ret.v = sig.recovery + 27
28824 return ret
28825 }
28826
28827 /**
28828 * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
28829 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
28830 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
28831 * used to produce the signature.
28832 * @param message
28833 * @returns {Buffer} hash
28834 */
28835 exports.hashPersonalMessage = function (message) {
28836 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
28837 return exports.sha3(Buffer.concat([prefix, message]))
28838 }
28839
28840 /**
28841 * ECDSA public key recovery from signature
28842 * @param {Buffer} msgHash
28843 * @param {Number} v
28844 * @param {Buffer} r
28845 * @param {Buffer} s
28846 * @return {Buffer} publicKey
28847 */
28848 exports.ecrecover = function (msgHash, v, r, s) {
28849 var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
28850 var recovery = v - 27
28851 if (recovery !== 0 && recovery !== 1) {
28852 throw new Error('Invalid signature v value')
28853 }
28854 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
28855 return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
28856 }
28857
28858 /**
28859 * Convert signature parameters into the format of `eth_sign` RPC method
28860 * @param {Number} v
28861 * @param {Buffer} r
28862 * @param {Buffer} s
28863 * @return {String} sig
28864 */
28865 exports.toRpcSig = function (v, r, s) {
28866 // NOTE: with potential introduction of chainId this might need to be updated
28867 if (v !== 27 && v !== 28) {
28868 throw new Error('Invalid recovery id')
28869 }
28870
28871 // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin
28872 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053
28873 return exports.bufferToHex(Buffer.concat([
28874 exports.setLengthLeft(r, 32),
28875 exports.setLengthLeft(s, 32),
28876 exports.toBuffer(v - 27)
28877 ]))
28878 }
28879
28880 /**
28881 * Convert signature format of the `eth_sign` RPC method to signature parameters
28882 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
28883 * @param {String} sig
28884 * @return {Object}
28885 */
28886 exports.fromRpcSig = function (sig) {
28887 sig = exports.toBuffer(sig)
28888
28889 // NOTE: with potential introduction of chainId this might need to be updated
28890 if (sig.length !== 65) {
28891 throw new Error('Invalid signature length')
28892 }
28893
28894 var v = sig[64]
28895 // support both versions of `eth_sign` responses
28896 if (v < 27) {
28897 v += 27
28898 }
28899
28900 return {
28901 v: v,
28902 r: sig.slice(0, 32),
28903 s: sig.slice(32, 64)
28904 }
28905 }
28906
28907 /**
28908 * Returns the ethereum address of a given private key
28909 * @param {Buffer} privateKey A private key must be 256 bits wide
28910 * @return {Buffer}
28911 */
28912 exports.privateToAddress = function (privateKey) {
28913 return exports.publicToAddress(privateToPublic(privateKey))
28914 }
28915
28916 /**
28917 * Checks if the address is a valid. Accepts checksummed addresses too
28918 * @param {String} address
28919 * @return {Boolean}
28920 */
28921 exports.isValidAddress = function (address) {
28922 return /^0x[0-9a-fA-F]{40}$/i.test(address)
28923 }
28924
28925 /**
28926 * Returns a checksummed address
28927 * @param {String} address
28928 * @return {String}
28929 */
28930 exports.toChecksumAddress = function (address) {
28931 address = exports.stripHexPrefix(address).toLowerCase()
28932 var hash = exports.sha3(address).toString('hex')
28933 var ret = '0x'
28934
28935 for (var i = 0; i < address.length; i++) {
28936 if (parseInt(hash[i], 16) >= 8) {
28937 ret += address[i].toUpperCase()
28938 } else {
28939 ret += address[i]
28940 }
28941 }
28942
28943 return ret
28944 }
28945
28946 /**
28947 * Checks if the address is a valid checksummed address
28948 * @param {Buffer} address
28949 * @return {Boolean}
28950 */
28951 exports.isValidChecksumAddress = function (address) {
28952 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
28953 }
28954
28955 /**
28956 * Generates an address of a newly created contract
28957 * @param {Buffer} from the address which is creating this new address
28958 * @param {Buffer} nonce the nonce of the from account
28959 * @return {Buffer}
28960 */
28961 exports.generateAddress = function (from, nonce) {
28962 from = exports.toBuffer(from)
28963 nonce = new BN(nonce)
28964
28965 if (nonce.isZero()) {
28966 // in RLP we want to encode null in the case of zero nonce
28967 // read the RLP documentation for an answer if you dare
28968 nonce = null
28969 } else {
28970 nonce = Buffer.from(nonce.toArray())
28971 }
28972
28973 // Only take the lower 160bits of the hash
28974 return exports.rlphash([from, nonce]).slice(-20)
28975 }
28976
28977 /**
28978 * Returns true if the supplied address belongs to a precompiled account
28979 * @param {Buffer|String} address
28980 * @return {Boolean}
28981 */
28982 exports.isPrecompiled = function (address) {
28983 var a = exports.unpad(address)
28984 return a.length === 1 && a[0] > 0 && a[0] < 5
28985 }
28986
28987 /**
28988 * Adds "0x" to a given `String` if it does not already start with "0x"
28989 * @param {String} str
28990 * @return {String}
28991 */
28992 exports.addHexPrefix = function (str) {
28993 if (typeof str !== 'string') {
28994 return str
28995 }
28996
28997 return exports.isHexPrefixed(str) ? str : '0x' + str
28998 }
28999
29000 /**
29001 * Validate ECDSA signature
29002 * @method isValidSignature
29003 * @param {Buffer} v
29004 * @param {Buffer} r
29005 * @param {Buffer} s
29006 * @param {Boolean} [homestead=true]
29007 * @return {Boolean}
29008 */
29009
29010 exports.isValidSignature = function (v, r, s, homestead) {
29011 const SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16)
29012 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)
29013
29014 if (r.length !== 32 || s.length !== 32) {
29015 return false
29016 }
29017
29018 if (v !== 27 && v !== 28) {
29019 return false
29020 }
29021
29022 r = new BN(r)
29023 s = new BN(s)
29024
29025 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
29026 return false
29027 }
29028
29029 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) === 1)) {
29030 return false
29031 }
29032
29033 return true
29034 }
29035
29036 /**
29037 * Converts a `Buffer` or `Array` to JSON
29038 * @param {Buffer|Array} ba
29039 * @return {Array|String|null}
29040 */
29041 exports.baToJSON = function (ba) {
29042 if (Buffer.isBuffer(ba)) {
29043 return '0x' + ba.toString('hex')
29044 } else if (ba instanceof Array) {
29045 var array = []
29046 for (var i = 0; i < ba.length; i++) {
29047 array.push(exports.baToJSON(ba[i]))
29048 }
29049 return array
29050 }
29051 }
29052
29053 /**
29054 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
29055 * @param {Object} self the `Object` to define properties on
29056 * @param {Array} fields an array fields to define. Fields can contain:
29057 * * `name` - the name of the properties
29058 * * `length` - the number of bytes the field can have
29059 * * `allowLess` - if the field can be less than the length
29060 * * `allowEmpty`
29061 * @param {*} data data to be validated against the definitions
29062 */
29063 exports.defineProperties = function (self, fields, data) {
29064 self.raw = []
29065 self._fields = []
29066
29067 // attach the `toJSON`
29068 self.toJSON = function (label) {
29069 if (label) {
29070 var obj = {}
29071 self._fields.forEach(function (field) {
29072 obj[field] = '0x' + self[field].toString('hex')
29073 })
29074 return obj
29075 }
29076 return exports.baToJSON(this.raw)
29077 }
29078
29079 self.serialize = function serialize () {
29080 return rlp.encode(self.raw)
29081 }
29082
29083 fields.forEach(function (field, i) {
29084 self._fields.push(field.name)
29085 function getter () {
29086 return self.raw[i]
29087 }
29088 function setter (v) {
29089 v = exports.toBuffer(v)
29090
29091 if (v.toString('hex') === '00' && !field.allowZero) {
29092 v = Buffer.allocUnsafe(0)
29093 }
29094
29095 if (field.allowLess && field.length) {
29096 v = exports.stripZeros(v)
29097 assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
29098 } else if (!(field.allowZero && v.length === 0) && field.length) {
29099 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
29100 }
29101
29102 self.raw[i] = v
29103 }
29104
29105 Object.defineProperty(self, field.name, {
29106 enumerable: true,
29107 configurable: true,
29108 get: getter,
29109 set: setter
29110 })
29111
29112 if (field.default) {
29113 self[field.name] = field.default
29114 }
29115
29116 // attach alias
29117 if (field.alias) {
29118 Object.defineProperty(self, field.alias, {
29119 enumerable: false,
29120 configurable: true,
29121 set: setter,
29122 get: getter
29123 })
29124 }
29125 })
29126
29127 // if the constuctor is passed data
29128 if (data) {
29129 if (typeof data === 'string') {
29130 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
29131 }
29132
29133 if (Buffer.isBuffer(data)) {
29134 data = rlp.decode(data)
29135 }
29136
29137 if (Array.isArray(data)) {
29138 if (data.length > self._fields.length) {
29139 throw (new Error('wrong number of fields in data'))
29140 }
29141
29142 // make sure all the items are buffers
29143 data.forEach(function (d, i) {
29144 self[self._fields[i]] = exports.toBuffer(d)
29145 })
29146 } else if (typeof data === 'object') {
29147 const keys = Object.keys(data)
29148 fields.forEach(function (field) {
29149 if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]
29150 if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]
29151 })
29152 } else {
29153 throw new Error('invalid data')
29154 }
29155 }
29156 }
29157
29158 }).call(this,require("buffer").Buffer)
29159 },{"assert":1,"bn.js":33,"buffer":5,"create-hash":36,"ethjs-util":56,"keccak":65,"rlp":72,"secp256k1":73}],32:[function(require,module,exports){
29160 (function (Buffer){
29161 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
29162 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
29163 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
29164
29165 function check (buffer) {
29166 if (buffer.length < 8) return false
29167 if (buffer.length > 72) return false
29168 if (buffer[0] !== 0x30) return false
29169 if (buffer[1] !== buffer.length - 2) return false
29170 if (buffer[2] !== 0x02) return false
29171
29172 var lenR = buffer[3]
29173 if (lenR === 0) return false
29174 if (5 + lenR >= buffer.length) return false
29175 if (buffer[4 + lenR] !== 0x02) return false
29176
29177 var lenS = buffer[5 + lenR]
29178 if (lenS === 0) return false
29179 if ((6 + lenR + lenS) !== buffer.length) return false
29180
29181 if (buffer[4] & 0x80) return false
29182 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
29183
29184 if (buffer[lenR + 6] & 0x80) return false
29185 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
29186 return true
29187 }
29188
29189 function decode (buffer) {
29190 if (buffer.length < 8) throw new Error('DER sequence length is too short')
29191 if (buffer.length > 72) throw new Error('DER sequence length is too long')
29192 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
29193 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
29194 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
29195
29196 var lenR = buffer[3]
29197 if (lenR === 0) throw new Error('R length is zero')
29198 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
29199 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
29200
29201 var lenS = buffer[5 + lenR]
29202 if (lenS === 0) throw new Error('S length is zero')
29203 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
29204
29205 if (buffer[4] & 0x80) throw new Error('R value is negative')
29206 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
29207
29208 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
29209 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
29210
29211 // non-BIP66 - extract R, S values
29212 return {
29213 r: buffer.slice(4, 4 + lenR),
29214 s: buffer.slice(6 + lenR)
29215 }
29216 }
29217
29218 /*
29219 * Expects r and s to be positive DER integers.
29220 *
29221 * The DER format uses the most significant bit as a sign bit (& 0x80).
29222 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
29223 *
29224 * Examples:
29225 *
29226 * 0 => 0x00
29227 * 1 => 0x01
29228 * -1 => 0xff
29229 * 127 => 0x7f
29230 * -127 => 0x81
29231 * 128 => 0x0080
29232 * -128 => 0x80
29233 * 255 => 0x00ff
29234 * -255 => 0xff01
29235 * 16300 => 0x3fac
29236 * -16300 => 0xc054
29237 * 62300 => 0x00f35c
29238 * -62300 => 0xff0ca4
29239 */
29240 function encode (r, s) {
29241 var lenR = r.length
29242 var lenS = s.length
29243 if (lenR === 0) throw new Error('R length is zero')
29244 if (lenS === 0) throw new Error('S length is zero')
29245 if (lenR > 33) throw new Error('R length is too long')
29246 if (lenS > 33) throw new Error('S length is too long')
29247 if (r[0] & 0x80) throw new Error('R value is negative')
29248 if (s[0] & 0x80) throw new Error('S value is negative')
29249 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
29250 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
29251
29252 var signature = new Buffer(6 + lenR + lenS)
29253
29254 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
29255 signature[0] = 0x30
29256 signature[1] = signature.length - 2
29257 signature[2] = 0x02
29258 signature[3] = r.length
29259 r.copy(signature, 4)
29260 signature[4 + lenR] = 0x02
29261 signature[5 + lenR] = s.length
29262 s.copy(signature, 6 + lenR)
29263
29264 return signature
29265 }
29266
29267 module.exports = {
29268 check: check,
29269 decode: decode,
29270 encode: encode
29271 }
29272
29273 }).call(this,require("buffer").Buffer)
29274 },{"buffer":5}],33:[function(require,module,exports){
29275 (function (module, exports) {
29276 'use strict';
29277
29278 // Utils
29279 function assert (val, msg) {
29280 if (!val) throw new Error(msg || 'Assertion failed');
29281 }
29282
29283 // Could use `inherits` module, but don't want to move from single file
29284 // architecture yet.
29285 function inherits (ctor, superCtor) {
29286 ctor.super_ = superCtor;
29287 var TempCtor = function () {};
29288 TempCtor.prototype = superCtor.prototype;
29289 ctor.prototype = new TempCtor();
29290 ctor.prototype.constructor = ctor;
29291 }
29292
29293 // BN
29294
29295 function BN (number, base, endian) {
29296 if (BN.isBN(number)) {
29297 return number;
29298 }
29299
29300 this.negative = 0;
29301 this.words = null;
29302 this.length = 0;
29303
29304 // Reduction context
29305 this.red = null;
29306
29307 if (number !== null) {
29308 if (base === 'le' || base === 'be') {
29309 endian = base;
29310 base = 10;
29311 }
29312
29313 this._init(number || 0, base || 10, endian || 'be');
29314 }
29315 }
29316 if (typeof module === 'object') {
29317 module.exports = BN;
29318 } else {
29319 exports.BN = BN;
29320 }
29321
29322 BN.BN = BN;
29323 BN.wordSize = 26;
29324
29325 var Buffer;
29326 try {
29327 Buffer = require('buf' + 'fer').Buffer;
29328 } catch (e) {
29329 }
29330
29331 BN.isBN = function isBN (num) {
29332 if (num instanceof BN) {
29333 return true;
29334 }
29335
29336 return num !== null && typeof num === 'object' &&
29337 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
29338 };
29339
29340 BN.max = function max (left, right) {
29341 if (left.cmp(right) > 0) return left;
29342 return right;
29343 };
29344
29345 BN.min = function min (left, right) {
29346 if (left.cmp(right) < 0) return left;
29347 return right;
29348 };
29349
29350 BN.prototype._init = function init (number, base, endian) {
29351 if (typeof number === 'number') {
29352 return this._initNumber(number, base, endian);
29353 }
29354
29355 if (typeof number === 'object') {
29356 return this._initArray(number, base, endian);
29357 }
29358
29359 if (base === 'hex') {
29360 base = 16;
29361 }
29362 assert(base === (base | 0) && base >= 2 && base <= 36);
29363
29364 number = number.toString().replace(/\s+/g, '');
29365 var start = 0;
29366 if (number[0] === '-') {
29367 start++;
29368 }
29369
29370 if (base === 16) {
29371 this._parseHex(number, start);
29372 } else {
29373 this._parseBase(number, base, start);
29374 }
29375
29376 if (number[0] === '-') {
29377 this.negative = 1;
29378 }
29379
29380 this.strip();
29381
29382 if (endian !== 'le') return;
29383
29384 this._initArray(this.toArray(), base, endian);
29385 };
29386
29387 BN.prototype._initNumber = function _initNumber (number, base, endian) {
29388 if (number < 0) {
29389 this.negative = 1;
29390 number = -number;
29391 }
29392 if (number < 0x4000000) {
29393 this.words = [ number & 0x3ffffff ];
29394 this.length = 1;
29395 } else if (number < 0x10000000000000) {
29396 this.words = [
29397 number & 0x3ffffff,
29398 (number / 0x4000000) & 0x3ffffff
29399 ];
29400 this.length = 2;
29401 } else {
29402 assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
29403 this.words = [
29404 number & 0x3ffffff,
29405 (number / 0x4000000) & 0x3ffffff,
29406 1
29407 ];
29408 this.length = 3;
29409 }
29410
29411 if (endian !== 'le') return;
29412
29413 // Reverse the bytes
29414 this._initArray(this.toArray(), base, endian);
29415 };
29416
29417 BN.prototype._initArray = function _initArray (number, base, endian) {
29418 // Perhaps a Uint8Array
29419 assert(typeof number.length === 'number');
29420 if (number.length <= 0) {
29421 this.words = [ 0 ];
29422 this.length = 1;
29423 return this;
29424 }
29425
29426 this.length = Math.ceil(number.length / 3);
29427 this.words = new Array(this.length);
29428 for (var i = 0; i < this.length; i++) {
29429 this.words[i] = 0;
29430 }
29431
29432 var j, w;
29433 var off = 0;
29434 if (endian === 'be') {
29435 for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
29436 w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
29437 this.words[j] |= (w << off) & 0x3ffffff;
29438 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
29439 off += 24;
29440 if (off >= 26) {
29441 off -= 26;
29442 j++;
29443 }
29444 }
29445 } else if (endian === 'le') {
29446 for (i = 0, j = 0; i < number.length; i += 3) {
29447 w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
29448 this.words[j] |= (w << off) & 0x3ffffff;
29449 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
29450 off += 24;
29451 if (off >= 26) {
29452 off -= 26;
29453 j++;
29454 }
29455 }
29456 }
29457 return this.strip();
29458 };
29459
29460 function parseHex (str, start, end) {
29461 var r = 0;
29462 var len = Math.min(str.length, end);
29463 for (var i = start; i < len; i++) {
29464 var c = str.charCodeAt(i) - 48;
29465
29466 r <<= 4;
29467
29468 // 'a' - 'f'
29469 if (c >= 49 && c <= 54) {
29470 r |= c - 49 + 0xa;
29471
29472 // 'A' - 'F'
29473 } else if (c >= 17 && c <= 22) {
29474 r |= c - 17 + 0xa;
29475
29476 // '0' - '9'
29477 } else {
29478 r |= c & 0xf;
29479 }
29480 }
29481 return r;
29482 }
29483
29484 BN.prototype._parseHex = function _parseHex (number, start) {
29485 // Create possibly bigger array to ensure that it fits the number
29486 this.length = Math.ceil((number.length - start) / 6);
29487 this.words = new Array(this.length);
29488 for (var i = 0; i < this.length; i++) {
29489 this.words[i] = 0;
29490 }
29491
29492 var j, w;
29493 // Scan 24-bit chunks and add them to the number
29494 var off = 0;
29495 for (i = number.length - 6, j = 0; i >= start; i -= 6) {
29496 w = parseHex(number, i, i + 6);
29497 this.words[j] |= (w << off) & 0x3ffffff;
29498 // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
29499 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
29500 off += 24;
29501 if (off >= 26) {
29502 off -= 26;
29503 j++;
29504 }
29505 }
29506 if (i + 6 !== start) {
29507 w = parseHex(number, start, i + 6);
29508 this.words[j] |= (w << off) & 0x3ffffff;
29509 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
29510 }
29511 this.strip();
29512 };
29513
29514 function parseBase (str, start, end, mul) {
29515 var r = 0;
29516 var len = Math.min(str.length, end);
29517 for (var i = start; i < len; i++) {
29518 var c = str.charCodeAt(i) - 48;
29519
29520 r *= mul;
29521
29522 // 'a'
29523 if (c >= 49) {
29524 r += c - 49 + 0xa;
29525
29526 // 'A'
29527 } else if (c >= 17) {
29528 r += c - 17 + 0xa;
29529
29530 // '0' - '9'
29531 } else {
29532 r += c;
29533 }
29534 }
29535 return r;
29536 }
29537
29538 BN.prototype._parseBase = function _parseBase (number, base, start) {
29539 // Initialize as zero
29540 this.words = [ 0 ];
29541 this.length = 1;
29542
29543 // Find length of limb in base
29544 for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
29545 limbLen++;
29546 }
29547 limbLen--;
29548 limbPow = (limbPow / base) | 0;
29549
29550 var total = number.length - start;
29551 var mod = total % limbLen;
29552 var end = Math.min(total, total - mod) + start;
29553
29554 var word = 0;
29555 for (var i = start; i < end; i += limbLen) {
29556 word = parseBase(number, i, i + limbLen, base);
29557
29558 this.imuln(limbPow);
29559 if (this.words[0] + word < 0x4000000) {
29560 this.words[0] += word;
29561 } else {
29562 this._iaddn(word);
29563 }
29564 }
29565
29566 if (mod !== 0) {
29567 var pow = 1;
29568 word = parseBase(number, i, number.length, base);
29569
29570 for (i = 0; i < mod; i++) {
29571 pow *= base;
29572 }
29573
29574 this.imuln(pow);
29575 if (this.words[0] + word < 0x4000000) {
29576 this.words[0] += word;
29577 } else {
29578 this._iaddn(word);
29579 }
29580 }
29581 };
29582
29583 BN.prototype.copy = function copy (dest) {
29584 dest.words = new Array(this.length);
29585 for (var i = 0; i < this.length; i++) {
29586 dest.words[i] = this.words[i];
29587 }
29588 dest.length = this.length;
29589 dest.negative = this.negative;
29590 dest.red = this.red;
29591 };
29592
29593 BN.prototype.clone = function clone () {
29594 var r = new BN(null);
29595 this.copy(r);
29596 return r;
29597 };
29598
29599 BN.prototype._expand = function _expand (size) {
29600 while (this.length < size) {
29601 this.words[this.length++] = 0;
29602 }
29603 return this;
29604 };
29605
29606 // Remove leading `0` from `this`
29607 BN.prototype.strip = function strip () {
29608 while (this.length > 1 && this.words[this.length - 1] === 0) {
29609 this.length--;
29610 }
29611 return this._normSign();
29612 };
29613
29614 BN.prototype._normSign = function _normSign () {
29615 // -0 = 0
29616 if (this.length === 1 && this.words[0] === 0) {
29617 this.negative = 0;
29618 }
29619 return this;
29620 };
29621
29622 BN.prototype.inspect = function inspect () {
29623 return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
29624 };
29625
29626 /*
29627
29628 var zeros = [];
29629 var groupSizes = [];
29630 var groupBases = [];
29631
29632 var s = '';
29633 var i = -1;
29634 while (++i < BN.wordSize) {
29635 zeros[i] = s;
29636 s += '0';
29637 }
29638 groupSizes[0] = 0;
29639 groupSizes[1] = 0;
29640 groupBases[0] = 0;
29641 groupBases[1] = 0;
29642 var base = 2 - 1;
29643 while (++base < 36 + 1) {
29644 var groupSize = 0;
29645 var groupBase = 1;
29646 while (groupBase < (1 << BN.wordSize) / base) {
29647 groupBase *= base;
29648 groupSize += 1;
29649 }
29650 groupSizes[base] = groupSize;
29651 groupBases[base] = groupBase;
29652 }
29653
29654 */
29655
29656 var zeros = [
29657 '',
29658 '0',
29659 '00',
29660 '000',
29661 '0000',
29662 '00000',
29663 '000000',
29664 '0000000',
29665 '00000000',
29666 '000000000',
29667 '0000000000',
29668 '00000000000',
29669 '000000000000',
29670 '0000000000000',
29671 '00000000000000',
29672 '000000000000000',
29673 '0000000000000000',
29674 '00000000000000000',
29675 '000000000000000000',
29676 '0000000000000000000',
29677 '00000000000000000000',
29678 '000000000000000000000',
29679 '0000000000000000000000',
29680 '00000000000000000000000',
29681 '000000000000000000000000',
29682 '0000000000000000000000000'
29683 ];
29684
29685 var groupSizes = [
29686 0, 0,
29687 25, 16, 12, 11, 10, 9, 8,
29688 8, 7, 7, 7, 7, 6, 6,
29689 6, 6, 6, 6, 6, 5, 5,
29690 5, 5, 5, 5, 5, 5, 5,
29691 5, 5, 5, 5, 5, 5, 5
29692 ];
29693
29694 var groupBases = [
29695 0, 0,
29696 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
29697 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
29698 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
29699 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
29700 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
29701 ];
29702
29703 BN.prototype.toString = function toString (base, padding) {
29704 base = base || 10;
29705 padding = padding | 0 || 1;
29706
29707 var out;
29708 if (base === 16 || base === 'hex') {
29709 out = '';
29710 var off = 0;
29711 var carry = 0;
29712 for (var i = 0; i < this.length; i++) {
29713 var w = this.words[i];
29714 var word = (((w << off) | carry) & 0xffffff).toString(16);
29715 carry = (w >>> (24 - off)) & 0xffffff;
29716 if (carry !== 0 || i !== this.length - 1) {
29717 out = zeros[6 - word.length] + word + out;
29718 } else {
29719 out = word + out;
29720 }
29721 off += 2;
29722 if (off >= 26) {
29723 off -= 26;
29724 i--;
29725 }
29726 }
29727 if (carry !== 0) {
29728 out = carry.toString(16) + out;
29729 }
29730 while (out.length % padding !== 0) {
29731 out = '0' + out;
29732 }
29733 if (this.negative !== 0) {
29734 out = '-' + out;
29735 }
29736 return out;
29737 }
29738
29739 if (base === (base | 0) && base >= 2 && base <= 36) {
29740 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
29741 var groupSize = groupSizes[base];
29742 // var groupBase = Math.pow(base, groupSize);
29743 var groupBase = groupBases[base];
29744 out = '';
29745 var c = this.clone();
29746 c.negative = 0;
29747 while (!c.isZero()) {
29748 var r = c.modn(groupBase).toString(base);
29749 c = c.idivn(groupBase);
29750
29751 if (!c.isZero()) {
29752 out = zeros[groupSize - r.length] + r + out;
29753 } else {
29754 out = r + out;
29755 }
29756 }
29757 if (this.isZero()) {
29758 out = '0' + out;
29759 }
29760 while (out.length % padding !== 0) {
29761 out = '0' + out;
29762 }
29763 if (this.negative !== 0) {
29764 out = '-' + out;
29765 }
29766 return out;
29767 }
29768
29769 assert(false, 'Base should be between 2 and 36');
29770 };
29771
29772 BN.prototype.toNumber = function toNumber () {
29773 var ret = this.words[0];
29774 if (this.length === 2) {
29775 ret += this.words[1] * 0x4000000;
29776 } else if (this.length === 3 && this.words[2] === 0x01) {
29777 // NOTE: at this stage it is known that the top bit is set
29778 ret += 0x10000000000000 + (this.words[1] * 0x4000000);
29779 } else if (this.length > 2) {
29780 assert(false, 'Number can only safely store up to 53 bits');
29781 }
29782 return (this.negative !== 0) ? -ret : ret;
29783 };
29784
29785 BN.prototype.toJSON = function toJSON () {
29786 return this.toString(16);
29787 };
29788
29789 BN.prototype.toBuffer = function toBuffer (endian, length) {
29790 assert(typeof Buffer !== 'undefined');
29791 return this.toArrayLike(Buffer, endian, length);
29792 };
29793
29794 BN.prototype.toArray = function toArray (endian, length) {
29795 return this.toArrayLike(Array, endian, length);
29796 };
29797
29798 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
29799 var byteLength = this.byteLength();
29800 var reqLength = length || Math.max(1, byteLength);
29801 assert(byteLength <= reqLength, 'byte array longer than desired length');
29802 assert(reqLength > 0, 'Requested array length <= 0');
29803
29804 this.strip();
29805 var littleEndian = endian === 'le';
29806 var res = new ArrayType(reqLength);
29807
29808 var b, i;
29809 var q = this.clone();
29810 if (!littleEndian) {
29811 // Assume big-endian
29812 for (i = 0; i < reqLength - byteLength; i++) {
29813 res[i] = 0;
29814 }
29815
29816 for (i = 0; !q.isZero(); i++) {
29817 b = q.andln(0xff);
29818 q.iushrn(8);
29819
29820 res[reqLength - i - 1] = b;
29821 }
29822 } else {
29823 for (i = 0; !q.isZero(); i++) {
29824 b = q.andln(0xff);
29825 q.iushrn(8);
29826
29827 res[i] = b;
29828 }
29829
29830 for (; i < reqLength; i++) {
29831 res[i] = 0;
29832 }
29833 }
29834
29835 return res;
29836 };
29837
29838 if (Math.clz32) {
29839 BN.prototype._countBits = function _countBits (w) {
29840 return 32 - Math.clz32(w);
29841 };
29842 } else {
29843 BN.prototype._countBits = function _countBits (w) {
29844 var t = w;
29845 var r = 0;
29846 if (t >= 0x1000) {
29847 r += 13;
29848 t >>>= 13;
29849 }
29850 if (t >= 0x40) {
29851 r += 7;
29852 t >>>= 7;
29853 }
29854 if (t >= 0x8) {
29855 r += 4;
29856 t >>>= 4;
29857 }
29858 if (t >= 0x02) {
29859 r += 2;
29860 t >>>= 2;
29861 }
29862 return r + t;
29863 };
29864 }
29865
29866 BN.prototype._zeroBits = function _zeroBits (w) {
29867 // Short-cut
29868 if (w === 0) return 26;
29869
29870 var t = w;
29871 var r = 0;
29872 if ((t & 0x1fff) === 0) {
29873 r += 13;
29874 t >>>= 13;
29875 }
29876 if ((t & 0x7f) === 0) {
29877 r += 7;
29878 t >>>= 7;
29879 }
29880 if ((t & 0xf) === 0) {
29881 r += 4;
29882 t >>>= 4;
29883 }
29884 if ((t & 0x3) === 0) {
29885 r += 2;
29886 t >>>= 2;
29887 }
29888 if ((t & 0x1) === 0) {
29889 r++;
29890 }
29891 return r;
29892 };
29893
29894 // Return number of used bits in a BN
29895 BN.prototype.bitLength = function bitLength () {
29896 var w = this.words[this.length - 1];
29897 var hi = this._countBits(w);
29898 return (this.length - 1) * 26 + hi;
29899 };
29900
29901 function toBitArray (num) {
29902 var w = new Array(num.bitLength());
29903
29904 for (var bit = 0; bit < w.length; bit++) {
29905 var off = (bit / 26) | 0;
29906 var wbit = bit % 26;
29907
29908 w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
29909 }
29910
29911 return w;
29912 }
29913
29914 // Number of trailing zero bits
29915 BN.prototype.zeroBits = function zeroBits () {
29916 if (this.isZero()) return 0;
29917
29918 var r = 0;
29919 for (var i = 0; i < this.length; i++) {
29920 var b = this._zeroBits(this.words[i]);
29921 r += b;
29922 if (b !== 26) break;
29923 }
29924 return r;
29925 };
29926
29927 BN.prototype.byteLength = function byteLength () {
29928 return Math.ceil(this.bitLength() / 8);
29929 };
29930
29931 BN.prototype.toTwos = function toTwos (width) {
29932 if (this.negative !== 0) {
29933 return this.abs().inotn(width).iaddn(1);
29934 }
29935 return this.clone();
29936 };
29937
29938 BN.prototype.fromTwos = function fromTwos (width) {
29939 if (this.testn(width - 1)) {
29940 return this.notn(width).iaddn(1).ineg();
29941 }
29942 return this.clone();
29943 };
29944
29945 BN.prototype.isNeg = function isNeg () {
29946 return this.negative !== 0;
29947 };
29948
29949 // Return negative clone of `this`
29950 BN.prototype.neg = function neg () {
29951 return this.clone().ineg();
29952 };
29953
29954 BN.prototype.ineg = function ineg () {
29955 if (!this.isZero()) {
29956 this.negative ^= 1;
29957 }
29958
29959 return this;
29960 };
29961
29962 // Or `num` with `this` in-place
29963 BN.prototype.iuor = function iuor (num) {
29964 while (this.length < num.length) {
29965 this.words[this.length++] = 0;
29966 }
29967
29968 for (var i = 0; i < num.length; i++) {
29969 this.words[i] = this.words[i] | num.words[i];
29970 }
29971
29972 return this.strip();
29973 };
29974
29975 BN.prototype.ior = function ior (num) {
29976 assert((this.negative | num.negative) === 0);
29977 return this.iuor(num);
29978 };
29979
29980 // Or `num` with `this`
29981 BN.prototype.or = function or (num) {
29982 if (this.length > num.length) return this.clone().ior(num);
29983 return num.clone().ior(this);
29984 };
29985
29986 BN.prototype.uor = function uor (num) {
29987 if (this.length > num.length) return this.clone().iuor(num);
29988 return num.clone().iuor(this);
29989 };
29990
29991 // And `num` with `this` in-place
29992 BN.prototype.iuand = function iuand (num) {
29993 // b = min-length(num, this)
29994 var b;
29995 if (this.length > num.length) {
29996 b = num;
29997 } else {
29998 b = this;
29999 }
30000
30001 for (var i = 0; i < b.length; i++) {
30002 this.words[i] = this.words[i] & num.words[i];
30003 }
30004
30005 this.length = b.length;
30006
30007 return this.strip();
30008 };
30009
30010 BN.prototype.iand = function iand (num) {
30011 assert((this.negative | num.negative) === 0);
30012 return this.iuand(num);
30013 };
30014
30015 // And `num` with `this`
30016 BN.prototype.and = function and (num) {
30017 if (this.length > num.length) return this.clone().iand(num);
30018 return num.clone().iand(this);
30019 };
30020
30021 BN.prototype.uand = function uand (num) {
30022 if (this.length > num.length) return this.clone().iuand(num);
30023 return num.clone().iuand(this);
30024 };
30025
30026 // Xor `num` with `this` in-place
30027 BN.prototype.iuxor = function iuxor (num) {
30028 // a.length > b.length
30029 var a;
30030 var b;
30031 if (this.length > num.length) {
30032 a = this;
30033 b = num;
30034 } else {
30035 a = num;
30036 b = this;
30037 }
30038
30039 for (var i = 0; i < b.length; i++) {
30040 this.words[i] = a.words[i] ^ b.words[i];
30041 }
30042
30043 if (this !== a) {
30044 for (; i < a.length; i++) {
30045 this.words[i] = a.words[i];
30046 }
30047 }
30048
30049 this.length = a.length;
30050
30051 return this.strip();
30052 };
30053
30054 BN.prototype.ixor = function ixor (num) {
30055 assert((this.negative | num.negative) === 0);
30056 return this.iuxor(num);
30057 };
30058
30059 // Xor `num` with `this`
30060 BN.prototype.xor = function xor (num) {
30061 if (this.length > num.length) return this.clone().ixor(num);
30062 return num.clone().ixor(this);
30063 };
30064
30065 BN.prototype.uxor = function uxor (num) {
30066 if (this.length > num.length) return this.clone().iuxor(num);
30067 return num.clone().iuxor(this);
30068 };
30069
30070 // Not ``this`` with ``width`` bitwidth
30071 BN.prototype.inotn = function inotn (width) {
30072 assert(typeof width === 'number' && width >= 0);
30073
30074 var bytesNeeded = Math.ceil(width / 26) | 0;
30075 var bitsLeft = width % 26;
30076
30077 // Extend the buffer with leading zeroes
30078 this._expand(bytesNeeded);
30079
30080 if (bitsLeft > 0) {
30081 bytesNeeded--;
30082 }
30083
30084 // Handle complete words
30085 for (var i = 0; i < bytesNeeded; i++) {
30086 this.words[i] = ~this.words[i] & 0x3ffffff;
30087 }
30088
30089 // Handle the residue
30090 if (bitsLeft > 0) {
30091 this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
30092 }
30093
30094 // And remove leading zeroes
30095 return this.strip();
30096 };
30097
30098 BN.prototype.notn = function notn (width) {
30099 return this.clone().inotn(width);
30100 };
30101
30102 // Set `bit` of `this`
30103 BN.prototype.setn = function setn (bit, val) {
30104 assert(typeof bit === 'number' && bit >= 0);
30105
30106 var off = (bit / 26) | 0;
30107 var wbit = bit % 26;
30108
30109 this._expand(off + 1);
30110
30111 if (val) {
30112 this.words[off] = this.words[off] | (1 << wbit);
30113 } else {
30114 this.words[off] = this.words[off] & ~(1 << wbit);
30115 }
30116
30117 return this.strip();
30118 };
30119
30120 // Add `num` to `this` in-place
30121 BN.prototype.iadd = function iadd (num) {
30122 var r;
30123
30124 // negative + positive
30125 if (this.negative !== 0 && num.negative === 0) {
30126 this.negative = 0;
30127 r = this.isub(num);
30128 this.negative ^= 1;
30129 return this._normSign();
30130
30131 // positive + negative
30132 } else if (this.negative === 0 && num.negative !== 0) {
30133 num.negative = 0;
30134 r = this.isub(num);
30135 num.negative = 1;
30136 return r._normSign();
30137 }
30138
30139 // a.length > b.length
30140 var a, b;
30141 if (this.length > num.length) {
30142 a = this;
30143 b = num;
30144 } else {
30145 a = num;
30146 b = this;
30147 }
30148
30149 var carry = 0;
30150 for (var i = 0; i < b.length; i++) {
30151 r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
30152 this.words[i] = r & 0x3ffffff;
30153 carry = r >>> 26;
30154 }
30155 for (; carry !== 0 && i < a.length; i++) {
30156 r = (a.words[i] | 0) + carry;
30157 this.words[i] = r & 0x3ffffff;
30158 carry = r >>> 26;
30159 }
30160
30161 this.length = a.length;
30162 if (carry !== 0) {
30163 this.words[this.length] = carry;
30164 this.length++;
30165 // Copy the rest of the words
30166 } else if (a !== this) {
30167 for (; i < a.length; i++) {
30168 this.words[i] = a.words[i];
30169 }
30170 }
30171
30172 return this;
30173 };
30174
30175 // Add `num` to `this`
30176 BN.prototype.add = function add (num) {
30177 var res;
30178 if (num.negative !== 0 && this.negative === 0) {
30179 num.negative = 0;
30180 res = this.sub(num);
30181 num.negative ^= 1;
30182 return res;
30183 } else if (num.negative === 0 && this.negative !== 0) {
30184 this.negative = 0;
30185 res = num.sub(this);
30186 this.negative = 1;
30187 return res;
30188 }
30189
30190 if (this.length > num.length) return this.clone().iadd(num);
30191
30192 return num.clone().iadd(this);
30193 };
30194
30195 // Subtract `num` from `this` in-place
30196 BN.prototype.isub = function isub (num) {
30197 // this - (-num) = this + num
30198 if (num.negative !== 0) {
30199 num.negative = 0;
30200 var r = this.iadd(num);
30201 num.negative = 1;
30202 return r._normSign();
30203
30204 // -this - num = -(this + num)
30205 } else if (this.negative !== 0) {
30206 this.negative = 0;
30207 this.iadd(num);
30208 this.negative = 1;
30209 return this._normSign();
30210 }
30211
30212 // At this point both numbers are positive
30213 var cmp = this.cmp(num);
30214
30215 // Optimization - zeroify
30216 if (cmp === 0) {
30217 this.negative = 0;
30218 this.length = 1;
30219 this.words[0] = 0;
30220 return this;
30221 }
30222
30223 // a > b
30224 var a, b;
30225 if (cmp > 0) {
30226 a = this;
30227 b = num;
30228 } else {
30229 a = num;
30230 b = this;
30231 }
30232
30233 var carry = 0;
30234 for (var i = 0; i < b.length; i++) {
30235 r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
30236 carry = r >> 26;
30237 this.words[i] = r & 0x3ffffff;
30238 }
30239 for (; carry !== 0 && i < a.length; i++) {
30240 r = (a.words[i] | 0) + carry;
30241 carry = r >> 26;
30242 this.words[i] = r & 0x3ffffff;
30243 }
30244
30245 // Copy rest of the words
30246 if (carry === 0 && i < a.length && a !== this) {
30247 for (; i < a.length; i++) {
30248 this.words[i] = a.words[i];
30249 }
30250 }
30251
30252 this.length = Math.max(this.length, i);
30253
30254 if (a !== this) {
30255 this.negative = 1;
30256 }
30257
30258 return this.strip();
30259 };
30260
30261 // Subtract `num` from `this`
30262 BN.prototype.sub = function sub (num) {
30263 return this.clone().isub(num);
30264 };
30265
30266 function smallMulTo (self, num, out) {
30267 out.negative = num.negative ^ self.negative;
30268 var len = (self.length + num.length) | 0;
30269 out.length = len;
30270 len = (len - 1) | 0;
30271
30272 // Peel one iteration (compiler can't do it, because of code complexity)
30273 var a = self.words[0] | 0;
30274 var b = num.words[0] | 0;
30275 var r = a * b;
30276
30277 var lo = r & 0x3ffffff;
30278 var carry = (r / 0x4000000) | 0;
30279 out.words[0] = lo;
30280
30281 for (var k = 1; k < len; k++) {
30282 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
30283 // note that ncarry could be >= 0x3ffffff
30284 var ncarry = carry >>> 26;
30285 var rword = carry & 0x3ffffff;
30286 var maxJ = Math.min(k, num.length - 1);
30287 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
30288 var i = (k - j) | 0;
30289 a = self.words[i] | 0;
30290 b = num.words[j] | 0;
30291 r = a * b + rword;
30292 ncarry += (r / 0x4000000) | 0;
30293 rword = r & 0x3ffffff;
30294 }
30295 out.words[k] = rword | 0;
30296 carry = ncarry | 0;
30297 }
30298 if (carry !== 0) {
30299 out.words[k] = carry | 0;
30300 } else {
30301 out.length--;
30302 }
30303
30304 return out.strip();
30305 }
30306
30307 // TODO(indutny): it may be reasonable to omit it for users who don't need
30308 // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
30309 // multiplication (like elliptic secp256k1).
30310 var comb10MulTo = function comb10MulTo (self, num, out) {
30311 var a = self.words;
30312 var b = num.words;
30313 var o = out.words;
30314 var c = 0;
30315 var lo;
30316 var mid;
30317 var hi;
30318 var a0 = a[0] | 0;
30319 var al0 = a0 & 0x1fff;
30320 var ah0 = a0 >>> 13;
30321 var a1 = a[1] | 0;
30322 var al1 = a1 & 0x1fff;
30323 var ah1 = a1 >>> 13;
30324 var a2 = a[2] | 0;
30325 var al2 = a2 & 0x1fff;
30326 var ah2 = a2 >>> 13;
30327 var a3 = a[3] | 0;
30328 var al3 = a3 & 0x1fff;
30329 var ah3 = a3 >>> 13;
30330 var a4 = a[4] | 0;
30331 var al4 = a4 & 0x1fff;
30332 var ah4 = a4 >>> 13;
30333 var a5 = a[5] | 0;
30334 var al5 = a5 & 0x1fff;
30335 var ah5 = a5 >>> 13;
30336 var a6 = a[6] | 0;
30337 var al6 = a6 & 0x1fff;
30338 var ah6 = a6 >>> 13;
30339 var a7 = a[7] | 0;
30340 var al7 = a7 & 0x1fff;
30341 var ah7 = a7 >>> 13;
30342 var a8 = a[8] | 0;
30343 var al8 = a8 & 0x1fff;
30344 var ah8 = a8 >>> 13;
30345 var a9 = a[9] | 0;
30346 var al9 = a9 & 0x1fff;
30347 var ah9 = a9 >>> 13;
30348 var b0 = b[0] | 0;
30349 var bl0 = b0 & 0x1fff;
30350 var bh0 = b0 >>> 13;
30351 var b1 = b[1] | 0;
30352 var bl1 = b1 & 0x1fff;
30353 var bh1 = b1 >>> 13;
30354 var b2 = b[2] | 0;
30355 var bl2 = b2 & 0x1fff;
30356 var bh2 = b2 >>> 13;
30357 var b3 = b[3] | 0;
30358 var bl3 = b3 & 0x1fff;
30359 var bh3 = b3 >>> 13;
30360 var b4 = b[4] | 0;
30361 var bl4 = b4 & 0x1fff;
30362 var bh4 = b4 >>> 13;
30363 var b5 = b[5] | 0;
30364 var bl5 = b5 & 0x1fff;
30365 var bh5 = b5 >>> 13;
30366 var b6 = b[6] | 0;
30367 var bl6 = b6 & 0x1fff;
30368 var bh6 = b6 >>> 13;
30369 var b7 = b[7] | 0;
30370 var bl7 = b7 & 0x1fff;
30371 var bh7 = b7 >>> 13;
30372 var b8 = b[8] | 0;
30373 var bl8 = b8 & 0x1fff;
30374 var bh8 = b8 >>> 13;
30375 var b9 = b[9] | 0;
30376 var bl9 = b9 & 0x1fff;
30377 var bh9 = b9 >>> 13;
30378
30379 out.negative = self.negative ^ num.negative;
30380 out.length = 19;
30381 /* k = 0 */
30382 lo = Math.imul(al0, bl0);
30383 mid = Math.imul(al0, bh0);
30384 mid = (mid + Math.imul(ah0, bl0)) | 0;
30385 hi = Math.imul(ah0, bh0);
30386 var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30387 c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
30388 w0 &= 0x3ffffff;
30389 /* k = 1 */
30390 lo = Math.imul(al1, bl0);
30391 mid = Math.imul(al1, bh0);
30392 mid = (mid + Math.imul(ah1, bl0)) | 0;
30393 hi = Math.imul(ah1, bh0);
30394 lo = (lo + Math.imul(al0, bl1)) | 0;
30395 mid = (mid + Math.imul(al0, bh1)) | 0;
30396 mid = (mid + Math.imul(ah0, bl1)) | 0;
30397 hi = (hi + Math.imul(ah0, bh1)) | 0;
30398 var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30399 c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
30400 w1 &= 0x3ffffff;
30401 /* k = 2 */
30402 lo = Math.imul(al2, bl0);
30403 mid = Math.imul(al2, bh0);
30404 mid = (mid + Math.imul(ah2, bl0)) | 0;
30405 hi = Math.imul(ah2, bh0);
30406 lo = (lo + Math.imul(al1, bl1)) | 0;
30407 mid = (mid + Math.imul(al1, bh1)) | 0;
30408 mid = (mid + Math.imul(ah1, bl1)) | 0;
30409 hi = (hi + Math.imul(ah1, bh1)) | 0;
30410 lo = (lo + Math.imul(al0, bl2)) | 0;
30411 mid = (mid + Math.imul(al0, bh2)) | 0;
30412 mid = (mid + Math.imul(ah0, bl2)) | 0;
30413 hi = (hi + Math.imul(ah0, bh2)) | 0;
30414 var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30415 c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
30416 w2 &= 0x3ffffff;
30417 /* k = 3 */
30418 lo = Math.imul(al3, bl0);
30419 mid = Math.imul(al3, bh0);
30420 mid = (mid + Math.imul(ah3, bl0)) | 0;
30421 hi = Math.imul(ah3, bh0);
30422 lo = (lo + Math.imul(al2, bl1)) | 0;
30423 mid = (mid + Math.imul(al2, bh1)) | 0;
30424 mid = (mid + Math.imul(ah2, bl1)) | 0;
30425 hi = (hi + Math.imul(ah2, bh1)) | 0;
30426 lo = (lo + Math.imul(al1, bl2)) | 0;
30427 mid = (mid + Math.imul(al1, bh2)) | 0;
30428 mid = (mid + Math.imul(ah1, bl2)) | 0;
30429 hi = (hi + Math.imul(ah1, bh2)) | 0;
30430 lo = (lo + Math.imul(al0, bl3)) | 0;
30431 mid = (mid + Math.imul(al0, bh3)) | 0;
30432 mid = (mid + Math.imul(ah0, bl3)) | 0;
30433 hi = (hi + Math.imul(ah0, bh3)) | 0;
30434 var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30435 c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
30436 w3 &= 0x3ffffff;
30437 /* k = 4 */
30438 lo = Math.imul(al4, bl0);
30439 mid = Math.imul(al4, bh0);
30440 mid = (mid + Math.imul(ah4, bl0)) | 0;
30441 hi = Math.imul(ah4, bh0);
30442 lo = (lo + Math.imul(al3, bl1)) | 0;
30443 mid = (mid + Math.imul(al3, bh1)) | 0;
30444 mid = (mid + Math.imul(ah3, bl1)) | 0;
30445 hi = (hi + Math.imul(ah3, bh1)) | 0;
30446 lo = (lo + Math.imul(al2, bl2)) | 0;
30447 mid = (mid + Math.imul(al2, bh2)) | 0;
30448 mid = (mid + Math.imul(ah2, bl2)) | 0;
30449 hi = (hi + Math.imul(ah2, bh2)) | 0;
30450 lo = (lo + Math.imul(al1, bl3)) | 0;
30451 mid = (mid + Math.imul(al1, bh3)) | 0;
30452 mid = (mid + Math.imul(ah1, bl3)) | 0;
30453 hi = (hi + Math.imul(ah1, bh3)) | 0;
30454 lo = (lo + Math.imul(al0, bl4)) | 0;
30455 mid = (mid + Math.imul(al0, bh4)) | 0;
30456 mid = (mid + Math.imul(ah0, bl4)) | 0;
30457 hi = (hi + Math.imul(ah0, bh4)) | 0;
30458 var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30459 c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
30460 w4 &= 0x3ffffff;
30461 /* k = 5 */
30462 lo = Math.imul(al5, bl0);
30463 mid = Math.imul(al5, bh0);
30464 mid = (mid + Math.imul(ah5, bl0)) | 0;
30465 hi = Math.imul(ah5, bh0);
30466 lo = (lo + Math.imul(al4, bl1)) | 0;
30467 mid = (mid + Math.imul(al4, bh1)) | 0;
30468 mid = (mid + Math.imul(ah4, bl1)) | 0;
30469 hi = (hi + Math.imul(ah4, bh1)) | 0;
30470 lo = (lo + Math.imul(al3, bl2)) | 0;
30471 mid = (mid + Math.imul(al3, bh2)) | 0;
30472 mid = (mid + Math.imul(ah3, bl2)) | 0;
30473 hi = (hi + Math.imul(ah3, bh2)) | 0;
30474 lo = (lo + Math.imul(al2, bl3)) | 0;
30475 mid = (mid + Math.imul(al2, bh3)) | 0;
30476 mid = (mid + Math.imul(ah2, bl3)) | 0;
30477 hi = (hi + Math.imul(ah2, bh3)) | 0;
30478 lo = (lo + Math.imul(al1, bl4)) | 0;
30479 mid = (mid + Math.imul(al1, bh4)) | 0;
30480 mid = (mid + Math.imul(ah1, bl4)) | 0;
30481 hi = (hi + Math.imul(ah1, bh4)) | 0;
30482 lo = (lo + Math.imul(al0, bl5)) | 0;
30483 mid = (mid + Math.imul(al0, bh5)) | 0;
30484 mid = (mid + Math.imul(ah0, bl5)) | 0;
30485 hi = (hi + Math.imul(ah0, bh5)) | 0;
30486 var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30487 c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
30488 w5 &= 0x3ffffff;
30489 /* k = 6 */
30490 lo = Math.imul(al6, bl0);
30491 mid = Math.imul(al6, bh0);
30492 mid = (mid + Math.imul(ah6, bl0)) | 0;
30493 hi = Math.imul(ah6, bh0);
30494 lo = (lo + Math.imul(al5, bl1)) | 0;
30495 mid = (mid + Math.imul(al5, bh1)) | 0;
30496 mid = (mid + Math.imul(ah5, bl1)) | 0;
30497 hi = (hi + Math.imul(ah5, bh1)) | 0;
30498 lo = (lo + Math.imul(al4, bl2)) | 0;
30499 mid = (mid + Math.imul(al4, bh2)) | 0;
30500 mid = (mid + Math.imul(ah4, bl2)) | 0;
30501 hi = (hi + Math.imul(ah4, bh2)) | 0;
30502 lo = (lo + Math.imul(al3, bl3)) | 0;
30503 mid = (mid + Math.imul(al3, bh3)) | 0;
30504 mid = (mid + Math.imul(ah3, bl3)) | 0;
30505 hi = (hi + Math.imul(ah3, bh3)) | 0;
30506 lo = (lo + Math.imul(al2, bl4)) | 0;
30507 mid = (mid + Math.imul(al2, bh4)) | 0;
30508 mid = (mid + Math.imul(ah2, bl4)) | 0;
30509 hi = (hi + Math.imul(ah2, bh4)) | 0;
30510 lo = (lo + Math.imul(al1, bl5)) | 0;
30511 mid = (mid + Math.imul(al1, bh5)) | 0;
30512 mid = (mid + Math.imul(ah1, bl5)) | 0;
30513 hi = (hi + Math.imul(ah1, bh5)) | 0;
30514 lo = (lo + Math.imul(al0, bl6)) | 0;
30515 mid = (mid + Math.imul(al0, bh6)) | 0;
30516 mid = (mid + Math.imul(ah0, bl6)) | 0;
30517 hi = (hi + Math.imul(ah0, bh6)) | 0;
30518 var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30519 c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
30520 w6 &= 0x3ffffff;
30521 /* k = 7 */
30522 lo = Math.imul(al7, bl0);
30523 mid = Math.imul(al7, bh0);
30524 mid = (mid + Math.imul(ah7, bl0)) | 0;
30525 hi = Math.imul(ah7, bh0);
30526 lo = (lo + Math.imul(al6, bl1)) | 0;
30527 mid = (mid + Math.imul(al6, bh1)) | 0;
30528 mid = (mid + Math.imul(ah6, bl1)) | 0;
30529 hi = (hi + Math.imul(ah6, bh1)) | 0;
30530 lo = (lo + Math.imul(al5, bl2)) | 0;
30531 mid = (mid + Math.imul(al5, bh2)) | 0;
30532 mid = (mid + Math.imul(ah5, bl2)) | 0;
30533 hi = (hi + Math.imul(ah5, bh2)) | 0;
30534 lo = (lo + Math.imul(al4, bl3)) | 0;
30535 mid = (mid + Math.imul(al4, bh3)) | 0;
30536 mid = (mid + Math.imul(ah4, bl3)) | 0;
30537 hi = (hi + Math.imul(ah4, bh3)) | 0;
30538 lo = (lo + Math.imul(al3, bl4)) | 0;
30539 mid = (mid + Math.imul(al3, bh4)) | 0;
30540 mid = (mid + Math.imul(ah3, bl4)) | 0;
30541 hi = (hi + Math.imul(ah3, bh4)) | 0;
30542 lo = (lo + Math.imul(al2, bl5)) | 0;
30543 mid = (mid + Math.imul(al2, bh5)) | 0;
30544 mid = (mid + Math.imul(ah2, bl5)) | 0;
30545 hi = (hi + Math.imul(ah2, bh5)) | 0;
30546 lo = (lo + Math.imul(al1, bl6)) | 0;
30547 mid = (mid + Math.imul(al1, bh6)) | 0;
30548 mid = (mid + Math.imul(ah1, bl6)) | 0;
30549 hi = (hi + Math.imul(ah1, bh6)) | 0;
30550 lo = (lo + Math.imul(al0, bl7)) | 0;
30551 mid = (mid + Math.imul(al0, bh7)) | 0;
30552 mid = (mid + Math.imul(ah0, bl7)) | 0;
30553 hi = (hi + Math.imul(ah0, bh7)) | 0;
30554 var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30555 c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
30556 w7 &= 0x3ffffff;
30557 /* k = 8 */
30558 lo = Math.imul(al8, bl0);
30559 mid = Math.imul(al8, bh0);
30560 mid = (mid + Math.imul(ah8, bl0)) | 0;
30561 hi = Math.imul(ah8, bh0);
30562 lo = (lo + Math.imul(al7, bl1)) | 0;
30563 mid = (mid + Math.imul(al7, bh1)) | 0;
30564 mid = (mid + Math.imul(ah7, bl1)) | 0;
30565 hi = (hi + Math.imul(ah7, bh1)) | 0;
30566 lo = (lo + Math.imul(al6, bl2)) | 0;
30567 mid = (mid + Math.imul(al6, bh2)) | 0;
30568 mid = (mid + Math.imul(ah6, bl2)) | 0;
30569 hi = (hi + Math.imul(ah6, bh2)) | 0;
30570 lo = (lo + Math.imul(al5, bl3)) | 0;
30571 mid = (mid + Math.imul(al5, bh3)) | 0;
30572 mid = (mid + Math.imul(ah5, bl3)) | 0;
30573 hi = (hi + Math.imul(ah5, bh3)) | 0;
30574 lo = (lo + Math.imul(al4, bl4)) | 0;
30575 mid = (mid + Math.imul(al4, bh4)) | 0;
30576 mid = (mid + Math.imul(ah4, bl4)) | 0;
30577 hi = (hi + Math.imul(ah4, bh4)) | 0;
30578 lo = (lo + Math.imul(al3, bl5)) | 0;
30579 mid = (mid + Math.imul(al3, bh5)) | 0;
30580 mid = (mid + Math.imul(ah3, bl5)) | 0;
30581 hi = (hi + Math.imul(ah3, bh5)) | 0;
30582 lo = (lo + Math.imul(al2, bl6)) | 0;
30583 mid = (mid + Math.imul(al2, bh6)) | 0;
30584 mid = (mid + Math.imul(ah2, bl6)) | 0;
30585 hi = (hi + Math.imul(ah2, bh6)) | 0;
30586 lo = (lo + Math.imul(al1, bl7)) | 0;
30587 mid = (mid + Math.imul(al1, bh7)) | 0;
30588 mid = (mid + Math.imul(ah1, bl7)) | 0;
30589 hi = (hi + Math.imul(ah1, bh7)) | 0;
30590 lo = (lo + Math.imul(al0, bl8)) | 0;
30591 mid = (mid + Math.imul(al0, bh8)) | 0;
30592 mid = (mid + Math.imul(ah0, bl8)) | 0;
30593 hi = (hi + Math.imul(ah0, bh8)) | 0;
30594 var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30595 c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
30596 w8 &= 0x3ffffff;
30597 /* k = 9 */
30598 lo = Math.imul(al9, bl0);
30599 mid = Math.imul(al9, bh0);
30600 mid = (mid + Math.imul(ah9, bl0)) | 0;
30601 hi = Math.imul(ah9, bh0);
30602 lo = (lo + Math.imul(al8, bl1)) | 0;
30603 mid = (mid + Math.imul(al8, bh1)) | 0;
30604 mid = (mid + Math.imul(ah8, bl1)) | 0;
30605 hi = (hi + Math.imul(ah8, bh1)) | 0;
30606 lo = (lo + Math.imul(al7, bl2)) | 0;
30607 mid = (mid + Math.imul(al7, bh2)) | 0;
30608 mid = (mid + Math.imul(ah7, bl2)) | 0;
30609 hi = (hi + Math.imul(ah7, bh2)) | 0;
30610 lo = (lo + Math.imul(al6, bl3)) | 0;
30611 mid = (mid + Math.imul(al6, bh3)) | 0;
30612 mid = (mid + Math.imul(ah6, bl3)) | 0;
30613 hi = (hi + Math.imul(ah6, bh3)) | 0;
30614 lo = (lo + Math.imul(al5, bl4)) | 0;
30615 mid = (mid + Math.imul(al5, bh4)) | 0;
30616 mid = (mid + Math.imul(ah5, bl4)) | 0;
30617 hi = (hi + Math.imul(ah5, bh4)) | 0;
30618 lo = (lo + Math.imul(al4, bl5)) | 0;
30619 mid = (mid + Math.imul(al4, bh5)) | 0;
30620 mid = (mid + Math.imul(ah4, bl5)) | 0;
30621 hi = (hi + Math.imul(ah4, bh5)) | 0;
30622 lo = (lo + Math.imul(al3, bl6)) | 0;
30623 mid = (mid + Math.imul(al3, bh6)) | 0;
30624 mid = (mid + Math.imul(ah3, bl6)) | 0;
30625 hi = (hi + Math.imul(ah3, bh6)) | 0;
30626 lo = (lo + Math.imul(al2, bl7)) | 0;
30627 mid = (mid + Math.imul(al2, bh7)) | 0;
30628 mid = (mid + Math.imul(ah2, bl7)) | 0;
30629 hi = (hi + Math.imul(ah2, bh7)) | 0;
30630 lo = (lo + Math.imul(al1, bl8)) | 0;
30631 mid = (mid + Math.imul(al1, bh8)) | 0;
30632 mid = (mid + Math.imul(ah1, bl8)) | 0;
30633 hi = (hi + Math.imul(ah1, bh8)) | 0;
30634 lo = (lo + Math.imul(al0, bl9)) | 0;
30635 mid = (mid + Math.imul(al0, bh9)) | 0;
30636 mid = (mid + Math.imul(ah0, bl9)) | 0;
30637 hi = (hi + Math.imul(ah0, bh9)) | 0;
30638 var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30639 c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
30640 w9 &= 0x3ffffff;
30641 /* k = 10 */
30642 lo = Math.imul(al9, bl1);
30643 mid = Math.imul(al9, bh1);
30644 mid = (mid + Math.imul(ah9, bl1)) | 0;
30645 hi = Math.imul(ah9, bh1);
30646 lo = (lo + Math.imul(al8, bl2)) | 0;
30647 mid = (mid + Math.imul(al8, bh2)) | 0;
30648 mid = (mid + Math.imul(ah8, bl2)) | 0;
30649 hi = (hi + Math.imul(ah8, bh2)) | 0;
30650 lo = (lo + Math.imul(al7, bl3)) | 0;
30651 mid = (mid + Math.imul(al7, bh3)) | 0;
30652 mid = (mid + Math.imul(ah7, bl3)) | 0;
30653 hi = (hi + Math.imul(ah7, bh3)) | 0;
30654 lo = (lo + Math.imul(al6, bl4)) | 0;
30655 mid = (mid + Math.imul(al6, bh4)) | 0;
30656 mid = (mid + Math.imul(ah6, bl4)) | 0;
30657 hi = (hi + Math.imul(ah6, bh4)) | 0;
30658 lo = (lo + Math.imul(al5, bl5)) | 0;
30659 mid = (mid + Math.imul(al5, bh5)) | 0;
30660 mid = (mid + Math.imul(ah5, bl5)) | 0;
30661 hi = (hi + Math.imul(ah5, bh5)) | 0;
30662 lo = (lo + Math.imul(al4, bl6)) | 0;
30663 mid = (mid + Math.imul(al4, bh6)) | 0;
30664 mid = (mid + Math.imul(ah4, bl6)) | 0;
30665 hi = (hi + Math.imul(ah4, bh6)) | 0;
30666 lo = (lo + Math.imul(al3, bl7)) | 0;
30667 mid = (mid + Math.imul(al3, bh7)) | 0;
30668 mid = (mid + Math.imul(ah3, bl7)) | 0;
30669 hi = (hi + Math.imul(ah3, bh7)) | 0;
30670 lo = (lo + Math.imul(al2, bl8)) | 0;
30671 mid = (mid + Math.imul(al2, bh8)) | 0;
30672 mid = (mid + Math.imul(ah2, bl8)) | 0;
30673 hi = (hi + Math.imul(ah2, bh8)) | 0;
30674 lo = (lo + Math.imul(al1, bl9)) | 0;
30675 mid = (mid + Math.imul(al1, bh9)) | 0;
30676 mid = (mid + Math.imul(ah1, bl9)) | 0;
30677 hi = (hi + Math.imul(ah1, bh9)) | 0;
30678 var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30679 c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
30680 w10 &= 0x3ffffff;
30681 /* k = 11 */
30682 lo = Math.imul(al9, bl2);
30683 mid = Math.imul(al9, bh2);
30684 mid = (mid + Math.imul(ah9, bl2)) | 0;
30685 hi = Math.imul(ah9, bh2);
30686 lo = (lo + Math.imul(al8, bl3)) | 0;
30687 mid = (mid + Math.imul(al8, bh3)) | 0;
30688 mid = (mid + Math.imul(ah8, bl3)) | 0;
30689 hi = (hi + Math.imul(ah8, bh3)) | 0;
30690 lo = (lo + Math.imul(al7, bl4)) | 0;
30691 mid = (mid + Math.imul(al7, bh4)) | 0;
30692 mid = (mid + Math.imul(ah7, bl4)) | 0;
30693 hi = (hi + Math.imul(ah7, bh4)) | 0;
30694 lo = (lo + Math.imul(al6, bl5)) | 0;
30695 mid = (mid + Math.imul(al6, bh5)) | 0;
30696 mid = (mid + Math.imul(ah6, bl5)) | 0;
30697 hi = (hi + Math.imul(ah6, bh5)) | 0;
30698 lo = (lo + Math.imul(al5, bl6)) | 0;
30699 mid = (mid + Math.imul(al5, bh6)) | 0;
30700 mid = (mid + Math.imul(ah5, bl6)) | 0;
30701 hi = (hi + Math.imul(ah5, bh6)) | 0;
30702 lo = (lo + Math.imul(al4, bl7)) | 0;
30703 mid = (mid + Math.imul(al4, bh7)) | 0;
30704 mid = (mid + Math.imul(ah4, bl7)) | 0;
30705 hi = (hi + Math.imul(ah4, bh7)) | 0;
30706 lo = (lo + Math.imul(al3, bl8)) | 0;
30707 mid = (mid + Math.imul(al3, bh8)) | 0;
30708 mid = (mid + Math.imul(ah3, bl8)) | 0;
30709 hi = (hi + Math.imul(ah3, bh8)) | 0;
30710 lo = (lo + Math.imul(al2, bl9)) | 0;
30711 mid = (mid + Math.imul(al2, bh9)) | 0;
30712 mid = (mid + Math.imul(ah2, bl9)) | 0;
30713 hi = (hi + Math.imul(ah2, bh9)) | 0;
30714 var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30715 c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
30716 w11 &= 0x3ffffff;
30717 /* k = 12 */
30718 lo = Math.imul(al9, bl3);
30719 mid = Math.imul(al9, bh3);
30720 mid = (mid + Math.imul(ah9, bl3)) | 0;
30721 hi = Math.imul(ah9, bh3);
30722 lo = (lo + Math.imul(al8, bl4)) | 0;
30723 mid = (mid + Math.imul(al8, bh4)) | 0;
30724 mid = (mid + Math.imul(ah8, bl4)) | 0;
30725 hi = (hi + Math.imul(ah8, bh4)) | 0;
30726 lo = (lo + Math.imul(al7, bl5)) | 0;
30727 mid = (mid + Math.imul(al7, bh5)) | 0;
30728 mid = (mid + Math.imul(ah7, bl5)) | 0;
30729 hi = (hi + Math.imul(ah7, bh5)) | 0;
30730 lo = (lo + Math.imul(al6, bl6)) | 0;
30731 mid = (mid + Math.imul(al6, bh6)) | 0;
30732 mid = (mid + Math.imul(ah6, bl6)) | 0;
30733 hi = (hi + Math.imul(ah6, bh6)) | 0;
30734 lo = (lo + Math.imul(al5, bl7)) | 0;
30735 mid = (mid + Math.imul(al5, bh7)) | 0;
30736 mid = (mid + Math.imul(ah5, bl7)) | 0;
30737 hi = (hi + Math.imul(ah5, bh7)) | 0;
30738 lo = (lo + Math.imul(al4, bl8)) | 0;
30739 mid = (mid + Math.imul(al4, bh8)) | 0;
30740 mid = (mid + Math.imul(ah4, bl8)) | 0;
30741 hi = (hi + Math.imul(ah4, bh8)) | 0;
30742 lo = (lo + Math.imul(al3, bl9)) | 0;
30743 mid = (mid + Math.imul(al3, bh9)) | 0;
30744 mid = (mid + Math.imul(ah3, bl9)) | 0;
30745 hi = (hi + Math.imul(ah3, bh9)) | 0;
30746 var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30747 c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
30748 w12 &= 0x3ffffff;
30749 /* k = 13 */
30750 lo = Math.imul(al9, bl4);
30751 mid = Math.imul(al9, bh4);
30752 mid = (mid + Math.imul(ah9, bl4)) | 0;
30753 hi = Math.imul(ah9, bh4);
30754 lo = (lo + Math.imul(al8, bl5)) | 0;
30755 mid = (mid + Math.imul(al8, bh5)) | 0;
30756 mid = (mid + Math.imul(ah8, bl5)) | 0;
30757 hi = (hi + Math.imul(ah8, bh5)) | 0;
30758 lo = (lo + Math.imul(al7, bl6)) | 0;
30759 mid = (mid + Math.imul(al7, bh6)) | 0;
30760 mid = (mid + Math.imul(ah7, bl6)) | 0;
30761 hi = (hi + Math.imul(ah7, bh6)) | 0;
30762 lo = (lo + Math.imul(al6, bl7)) | 0;
30763 mid = (mid + Math.imul(al6, bh7)) | 0;
30764 mid = (mid + Math.imul(ah6, bl7)) | 0;
30765 hi = (hi + Math.imul(ah6, bh7)) | 0;
30766 lo = (lo + Math.imul(al5, bl8)) | 0;
30767 mid = (mid + Math.imul(al5, bh8)) | 0;
30768 mid = (mid + Math.imul(ah5, bl8)) | 0;
30769 hi = (hi + Math.imul(ah5, bh8)) | 0;
30770 lo = (lo + Math.imul(al4, bl9)) | 0;
30771 mid = (mid + Math.imul(al4, bh9)) | 0;
30772 mid = (mid + Math.imul(ah4, bl9)) | 0;
30773 hi = (hi + Math.imul(ah4, bh9)) | 0;
30774 var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30775 c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
30776 w13 &= 0x3ffffff;
30777 /* k = 14 */
30778 lo = Math.imul(al9, bl5);
30779 mid = Math.imul(al9, bh5);
30780 mid = (mid + Math.imul(ah9, bl5)) | 0;
30781 hi = Math.imul(ah9, bh5);
30782 lo = (lo + Math.imul(al8, bl6)) | 0;
30783 mid = (mid + Math.imul(al8, bh6)) | 0;
30784 mid = (mid + Math.imul(ah8, bl6)) | 0;
30785 hi = (hi + Math.imul(ah8, bh6)) | 0;
30786 lo = (lo + Math.imul(al7, bl7)) | 0;
30787 mid = (mid + Math.imul(al7, bh7)) | 0;
30788 mid = (mid + Math.imul(ah7, bl7)) | 0;
30789 hi = (hi + Math.imul(ah7, bh7)) | 0;
30790 lo = (lo + Math.imul(al6, bl8)) | 0;
30791 mid = (mid + Math.imul(al6, bh8)) | 0;
30792 mid = (mid + Math.imul(ah6, bl8)) | 0;
30793 hi = (hi + Math.imul(ah6, bh8)) | 0;
30794 lo = (lo + Math.imul(al5, bl9)) | 0;
30795 mid = (mid + Math.imul(al5, bh9)) | 0;
30796 mid = (mid + Math.imul(ah5, bl9)) | 0;
30797 hi = (hi + Math.imul(ah5, bh9)) | 0;
30798 var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30799 c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
30800 w14 &= 0x3ffffff;
30801 /* k = 15 */
30802 lo = Math.imul(al9, bl6);
30803 mid = Math.imul(al9, bh6);
30804 mid = (mid + Math.imul(ah9, bl6)) | 0;
30805 hi = Math.imul(ah9, bh6);
30806 lo = (lo + Math.imul(al8, bl7)) | 0;
30807 mid = (mid + Math.imul(al8, bh7)) | 0;
30808 mid = (mid + Math.imul(ah8, bl7)) | 0;
30809 hi = (hi + Math.imul(ah8, bh7)) | 0;
30810 lo = (lo + Math.imul(al7, bl8)) | 0;
30811 mid = (mid + Math.imul(al7, bh8)) | 0;
30812 mid = (mid + Math.imul(ah7, bl8)) | 0;
30813 hi = (hi + Math.imul(ah7, bh8)) | 0;
30814 lo = (lo + Math.imul(al6, bl9)) | 0;
30815 mid = (mid + Math.imul(al6, bh9)) | 0;
30816 mid = (mid + Math.imul(ah6, bl9)) | 0;
30817 hi = (hi + Math.imul(ah6, bh9)) | 0;
30818 var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30819 c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
30820 w15 &= 0x3ffffff;
30821 /* k = 16 */
30822 lo = Math.imul(al9, bl7);
30823 mid = Math.imul(al9, bh7);
30824 mid = (mid + Math.imul(ah9, bl7)) | 0;
30825 hi = Math.imul(ah9, bh7);
30826 lo = (lo + Math.imul(al8, bl8)) | 0;
30827 mid = (mid + Math.imul(al8, bh8)) | 0;
30828 mid = (mid + Math.imul(ah8, bl8)) | 0;
30829 hi = (hi + Math.imul(ah8, bh8)) | 0;
30830 lo = (lo + Math.imul(al7, bl9)) | 0;
30831 mid = (mid + Math.imul(al7, bh9)) | 0;
30832 mid = (mid + Math.imul(ah7, bl9)) | 0;
30833 hi = (hi + Math.imul(ah7, bh9)) | 0;
30834 var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30835 c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
30836 w16 &= 0x3ffffff;
30837 /* k = 17 */
30838 lo = Math.imul(al9, bl8);
30839 mid = Math.imul(al9, bh8);
30840 mid = (mid + Math.imul(ah9, bl8)) | 0;
30841 hi = Math.imul(ah9, bh8);
30842 lo = (lo + Math.imul(al8, bl9)) | 0;
30843 mid = (mid + Math.imul(al8, bh9)) | 0;
30844 mid = (mid + Math.imul(ah8, bl9)) | 0;
30845 hi = (hi + Math.imul(ah8, bh9)) | 0;
30846 var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30847 c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
30848 w17 &= 0x3ffffff;
30849 /* k = 18 */
30850 lo = Math.imul(al9, bl9);
30851 mid = Math.imul(al9, bh9);
30852 mid = (mid + Math.imul(ah9, bl9)) | 0;
30853 hi = Math.imul(ah9, bh9);
30854 var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30855 c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
30856 w18 &= 0x3ffffff;
30857 o[0] = w0;
30858 o[1] = w1;
30859 o[2] = w2;
30860 o[3] = w3;
30861 o[4] = w4;
30862 o[5] = w5;
30863 o[6] = w6;
30864 o[7] = w7;
30865 o[8] = w8;
30866 o[9] = w9;
30867 o[10] = w10;
30868 o[11] = w11;
30869 o[12] = w12;
30870 o[13] = w13;
30871 o[14] = w14;
30872 o[15] = w15;
30873 o[16] = w16;
30874 o[17] = w17;
30875 o[18] = w18;
30876 if (c !== 0) {
30877 o[19] = c;
30878 out.length++;
30879 }
30880 return out;
30881 };
30882
30883 // Polyfill comb
30884 if (!Math.imul) {
30885 comb10MulTo = smallMulTo;
30886 }
30887
30888 function bigMulTo (self, num, out) {
30889 out.negative = num.negative ^ self.negative;
30890 out.length = self.length + num.length;
30891
30892 var carry = 0;
30893 var hncarry = 0;
30894 for (var k = 0; k < out.length - 1; k++) {
30895 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
30896 // note that ncarry could be >= 0x3ffffff
30897 var ncarry = hncarry;
30898 hncarry = 0;
30899 var rword = carry & 0x3ffffff;
30900 var maxJ = Math.min(k, num.length - 1);
30901 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
30902 var i = k - j;
30903 var a = self.words[i] | 0;
30904 var b = num.words[j] | 0;
30905 var r = a * b;
30906
30907 var lo = r & 0x3ffffff;
30908 ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
30909 lo = (lo + rword) | 0;
30910 rword = lo & 0x3ffffff;
30911 ncarry = (ncarry + (lo >>> 26)) | 0;
30912
30913 hncarry += ncarry >>> 26;
30914 ncarry &= 0x3ffffff;
30915 }
30916 out.words[k] = rword;
30917 carry = ncarry;
30918 ncarry = hncarry;
30919 }
30920 if (carry !== 0) {
30921 out.words[k] = carry;
30922 } else {
30923 out.length--;
30924 }
30925
30926 return out.strip();
30927 }
30928
30929 function jumboMulTo (self, num, out) {
30930 var fftm = new FFTM();
30931 return fftm.mulp(self, num, out);
30932 }
30933
30934 BN.prototype.mulTo = function mulTo (num, out) {
30935 var res;
30936 var len = this.length + num.length;
30937 if (this.length === 10 && num.length === 10) {
30938 res = comb10MulTo(this, num, out);
30939 } else if (len < 63) {
30940 res = smallMulTo(this, num, out);
30941 } else if (len < 1024) {
30942 res = bigMulTo(this, num, out);
30943 } else {
30944 res = jumboMulTo(this, num, out);
30945 }
30946
30947 return res;
30948 };
30949
30950 // Cooley-Tukey algorithm for FFT
30951 // slightly revisited to rely on looping instead of recursion
30952
30953 function FFTM (x, y) {
30954 this.x = x;
30955 this.y = y;
30956 }
30957
30958 FFTM.prototype.makeRBT = function makeRBT (N) {
30959 var t = new Array(N);
30960 var l = BN.prototype._countBits(N) - 1;
30961 for (var i = 0; i < N; i++) {
30962 t[i] = this.revBin(i, l, N);
30963 }
30964
30965 return t;
30966 };
30967
30968 // Returns binary-reversed representation of `x`
30969 FFTM.prototype.revBin = function revBin (x, l, N) {
30970 if (x === 0 || x === N - 1) return x;
30971
30972 var rb = 0;
30973 for (var i = 0; i < l; i++) {
30974 rb |= (x & 1) << (l - i - 1);
30975 x >>= 1;
30976 }
30977
30978 return rb;
30979 };
30980
30981 // Performs "tweedling" phase, therefore 'emulating'
30982 // behaviour of the recursive algorithm
30983 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
30984 for (var i = 0; i < N; i++) {
30985 rtws[i] = rws[rbt[i]];
30986 itws[i] = iws[rbt[i]];
30987 }
30988 };
30989
30990 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
30991 this.permute(rbt, rws, iws, rtws, itws, N);
30992
30993 for (var s = 1; s < N; s <<= 1) {
30994 var l = s << 1;
30995
30996 var rtwdf = Math.cos(2 * Math.PI / l);
30997 var itwdf = Math.sin(2 * Math.PI / l);
30998
30999 for (var p = 0; p < N; p += l) {
31000 var rtwdf_ = rtwdf;
31001 var itwdf_ = itwdf;
31002
31003 for (var j = 0; j < s; j++) {
31004 var re = rtws[p + j];
31005 var ie = itws[p + j];
31006
31007 var ro = rtws[p + j + s];
31008 var io = itws[p + j + s];
31009
31010 var rx = rtwdf_ * ro - itwdf_ * io;
31011
31012 io = rtwdf_ * io + itwdf_ * ro;
31013 ro = rx;
31014
31015 rtws[p + j] = re + ro;
31016 itws[p + j] = ie + io;
31017
31018 rtws[p + j + s] = re - ro;
31019 itws[p + j + s] = ie - io;
31020
31021 /* jshint maxdepth : false */
31022 if (j !== l) {
31023 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
31024
31025 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
31026 rtwdf_ = rx;
31027 }
31028 }
31029 }
31030 }
31031 };
31032
31033 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
31034 var N = Math.max(m, n) | 1;
31035 var odd = N & 1;
31036 var i = 0;
31037 for (N = N / 2 | 0; N; N = N >>> 1) {
31038 i++;
31039 }
31040
31041 return 1 << i + 1 + odd;
31042 };
31043
31044 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
31045 if (N <= 1) return;
31046
31047 for (var i = 0; i < N / 2; i++) {
31048 var t = rws[i];
31049
31050 rws[i] = rws[N - i - 1];
31051 rws[N - i - 1] = t;
31052
31053 t = iws[i];
31054
31055 iws[i] = -iws[N - i - 1];
31056 iws[N - i - 1] = -t;
31057 }
31058 };
31059
31060 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
31061 var carry = 0;
31062 for (var i = 0; i < N / 2; i++) {
31063 var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
31064 Math.round(ws[2 * i] / N) +
31065 carry;
31066
31067 ws[i] = w & 0x3ffffff;
31068
31069 if (w < 0x4000000) {
31070 carry = 0;
31071 } else {
31072 carry = w / 0x4000000 | 0;
31073 }
31074 }
31075
31076 return ws;
31077 };
31078
31079 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
31080 var carry = 0;
31081 for (var i = 0; i < len; i++) {
31082 carry = carry + (ws[i] | 0);
31083
31084 rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
31085 rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
31086 }
31087
31088 // Pad with zeroes
31089 for (i = 2 * len; i < N; ++i) {
31090 rws[i] = 0;
31091 }
31092
31093 assert(carry === 0);
31094 assert((carry & ~0x1fff) === 0);
31095 };
31096
31097 FFTM.prototype.stub = function stub (N) {
31098 var ph = new Array(N);
31099 for (var i = 0; i < N; i++) {
31100 ph[i] = 0;
31101 }
31102
31103 return ph;
31104 };
31105
31106 FFTM.prototype.mulp = function mulp (x, y, out) {
31107 var N = 2 * this.guessLen13b(x.length, y.length);
31108
31109 var rbt = this.makeRBT(N);
31110
31111 var _ = this.stub(N);
31112
31113 var rws = new Array(N);
31114 var rwst = new Array(N);
31115 var iwst = new Array(N);
31116
31117 var nrws = new Array(N);
31118 var nrwst = new Array(N);
31119 var niwst = new Array(N);
31120
31121 var rmws = out.words;
31122 rmws.length = N;
31123
31124 this.convert13b(x.words, x.length, rws, N);
31125 this.convert13b(y.words, y.length, nrws, N);
31126
31127 this.transform(rws, _, rwst, iwst, N, rbt);
31128 this.transform(nrws, _, nrwst, niwst, N, rbt);
31129
31130 for (var i = 0; i < N; i++) {
31131 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
31132 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
31133 rwst[i] = rx;
31134 }
31135
31136 this.conjugate(rwst, iwst, N);
31137 this.transform(rwst, iwst, rmws, _, N, rbt);
31138 this.conjugate(rmws, _, N);
31139 this.normalize13b(rmws, N);
31140
31141 out.negative = x.negative ^ y.negative;
31142 out.length = x.length + y.length;
31143 return out.strip();
31144 };
31145
31146 // Multiply `this` by `num`
31147 BN.prototype.mul = function mul (num) {
31148 var out = new BN(null);
31149 out.words = new Array(this.length + num.length);
31150 return this.mulTo(num, out);
31151 };
31152
31153 // Multiply employing FFT
31154 BN.prototype.mulf = function mulf (num) {
31155 var out = new BN(null);
31156 out.words = new Array(this.length + num.length);
31157 return jumboMulTo(this, num, out);
31158 };
31159
31160 // In-place Multiplication
31161 BN.prototype.imul = function imul (num) {
31162 return this.clone().mulTo(num, this);
31163 };
31164
31165 BN.prototype.imuln = function imuln (num) {
31166 assert(typeof num === 'number');
31167 assert(num < 0x4000000);
31168
31169 // Carry
31170 var carry = 0;
31171 for (var i = 0; i < this.length; i++) {
31172 var w = (this.words[i] | 0) * num;
31173 var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
31174 carry >>= 26;
31175 carry += (w / 0x4000000) | 0;
31176 // NOTE: lo is 27bit maximum
31177 carry += lo >>> 26;
31178 this.words[i] = lo & 0x3ffffff;
31179 }
31180
31181 if (carry !== 0) {
31182 this.words[i] = carry;
31183 this.length++;
31184 }
31185
31186 return this;
31187 };
31188
31189 BN.prototype.muln = function muln (num) {
31190 return this.clone().imuln(num);
31191 };
31192
31193 // `this` * `this`
31194 BN.prototype.sqr = function sqr () {
31195 return this.mul(this);
31196 };
31197
31198 // `this` * `this` in-place
31199 BN.prototype.isqr = function isqr () {
31200 return this.imul(this.clone());
31201 };
31202
31203 // Math.pow(`this`, `num`)
31204 BN.prototype.pow = function pow (num) {
31205 var w = toBitArray(num);
31206 if (w.length === 0) return new BN(1);
31207
31208 // Skip leading zeroes
31209 var res = this;
31210 for (var i = 0; i < w.length; i++, res = res.sqr()) {
31211 if (w[i] !== 0) break;
31212 }
31213
31214 if (++i < w.length) {
31215 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
31216 if (w[i] === 0) continue;
31217
31218 res = res.mul(q);
31219 }
31220 }
31221
31222 return res;
31223 };
31224
31225 // Shift-left in-place
31226 BN.prototype.iushln = function iushln (bits) {
31227 assert(typeof bits === 'number' && bits >= 0);
31228 var r = bits % 26;
31229 var s = (bits - r) / 26;
31230 var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
31231 var i;
31232
31233 if (r !== 0) {
31234 var carry = 0;
31235
31236 for (i = 0; i < this.length; i++) {
31237 var newCarry = this.words[i] & carryMask;
31238 var c = ((this.words[i] | 0) - newCarry) << r;
31239 this.words[i] = c | carry;
31240 carry = newCarry >>> (26 - r);
31241 }
31242
31243 if (carry) {
31244 this.words[i] = carry;
31245 this.length++;
31246 }
31247 }
31248
31249 if (s !== 0) {
31250 for (i = this.length - 1; i >= 0; i--) {
31251 this.words[i + s] = this.words[i];
31252 }
31253
31254 for (i = 0; i < s; i++) {
31255 this.words[i] = 0;
31256 }
31257
31258 this.length += s;
31259 }
31260
31261 return this.strip();
31262 };
31263
31264 BN.prototype.ishln = function ishln (bits) {
31265 // TODO(indutny): implement me
31266 assert(this.negative === 0);
31267 return this.iushln(bits);
31268 };
31269
31270 // Shift-right in-place
31271 // NOTE: `hint` is a lowest bit before trailing zeroes
31272 // NOTE: if `extended` is present - it will be filled with destroyed bits
31273 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
31274 assert(typeof bits === 'number' && bits >= 0);
31275 var h;
31276 if (hint) {
31277 h = (hint - (hint % 26)) / 26;
31278 } else {
31279 h = 0;
31280 }
31281
31282 var r = bits % 26;
31283 var s = Math.min((bits - r) / 26, this.length);
31284 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
31285 var maskedWords = extended;
31286
31287 h -= s;
31288 h = Math.max(0, h);
31289
31290 // Extended mode, copy masked part
31291 if (maskedWords) {
31292 for (var i = 0; i < s; i++) {
31293 maskedWords.words[i] = this.words[i];
31294 }
31295 maskedWords.length = s;
31296 }
31297
31298 if (s === 0) {
31299 // No-op, we should not move anything at all
31300 } else if (this.length > s) {
31301 this.length -= s;
31302 for (i = 0; i < this.length; i++) {
31303 this.words[i] = this.words[i + s];
31304 }
31305 } else {
31306 this.words[0] = 0;
31307 this.length = 1;
31308 }
31309
31310 var carry = 0;
31311 for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
31312 var word = this.words[i] | 0;
31313 this.words[i] = (carry << (26 - r)) | (word >>> r);
31314 carry = word & mask;
31315 }
31316
31317 // Push carried bits as a mask
31318 if (maskedWords && carry !== 0) {
31319 maskedWords.words[maskedWords.length++] = carry;
31320 }
31321
31322 if (this.length === 0) {
31323 this.words[0] = 0;
31324 this.length = 1;
31325 }
31326
31327 return this.strip();
31328 };
31329
31330 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
31331 // TODO(indutny): implement me
31332 assert(this.negative === 0);
31333 return this.iushrn(bits, hint, extended);
31334 };
31335
31336 // Shift-left
31337 BN.prototype.shln = function shln (bits) {
31338 return this.clone().ishln(bits);
31339 };
31340
31341 BN.prototype.ushln = function ushln (bits) {
31342 return this.clone().iushln(bits);
31343 };
31344
31345 // Shift-right
31346 BN.prototype.shrn = function shrn (bits) {
31347 return this.clone().ishrn(bits);
31348 };
31349
31350 BN.prototype.ushrn = function ushrn (bits) {
31351 return this.clone().iushrn(bits);
31352 };
31353
31354 // Test if n bit is set
31355 BN.prototype.testn = function testn (bit) {
31356 assert(typeof bit === 'number' && bit >= 0);
31357 var r = bit % 26;
31358 var s = (bit - r) / 26;
31359 var q = 1 << r;
31360
31361 // Fast case: bit is much higher than all existing words
31362 if (this.length <= s) return false;
31363
31364 // Check bit and return
31365 var w = this.words[s];
31366
31367 return !!(w & q);
31368 };
31369
31370 // Return only lowers bits of number (in-place)
31371 BN.prototype.imaskn = function imaskn (bits) {
31372 assert(typeof bits === 'number' && bits >= 0);
31373 var r = bits % 26;
31374 var s = (bits - r) / 26;
31375
31376 assert(this.negative === 0, 'imaskn works only with positive numbers');
31377
31378 if (this.length <= s) {
31379 return this;
31380 }
31381
31382 if (r !== 0) {
31383 s++;
31384 }
31385 this.length = Math.min(s, this.length);
31386
31387 if (r !== 0) {
31388 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
31389 this.words[this.length - 1] &= mask;
31390 }
31391
31392 return this.strip();
31393 };
31394
31395 // Return only lowers bits of number
31396 BN.prototype.maskn = function maskn (bits) {
31397 return this.clone().imaskn(bits);
31398 };
31399
31400 // Add plain number `num` to `this`
31401 BN.prototype.iaddn = function iaddn (num) {
31402 assert(typeof num === 'number');
31403 assert(num < 0x4000000);
31404 if (num < 0) return this.isubn(-num);
31405
31406 // Possible sign change
31407 if (this.negative !== 0) {
31408 if (this.length === 1 && (this.words[0] | 0) < num) {
31409 this.words[0] = num - (this.words[0] | 0);
31410 this.negative = 0;
31411 return this;
31412 }
31413
31414 this.negative = 0;
31415 this.isubn(num);
31416 this.negative = 1;
31417 return this;
31418 }
31419
31420 // Add without checks
31421 return this._iaddn(num);
31422 };
31423
31424 BN.prototype._iaddn = function _iaddn (num) {
31425 this.words[0] += num;
31426
31427 // Carry
31428 for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
31429 this.words[i] -= 0x4000000;
31430 if (i === this.length - 1) {
31431 this.words[i + 1] = 1;
31432 } else {
31433 this.words[i + 1]++;
31434 }
31435 }
31436 this.length = Math.max(this.length, i + 1);
31437
31438 return this;
31439 };
31440
31441 // Subtract plain number `num` from `this`
31442 BN.prototype.isubn = function isubn (num) {
31443 assert(typeof num === 'number');
31444 assert(num < 0x4000000);
31445 if (num < 0) return this.iaddn(-num);
31446
31447 if (this.negative !== 0) {
31448 this.negative = 0;
31449 this.iaddn(num);
31450 this.negative = 1;
31451 return this;
31452 }
31453
31454 this.words[0] -= num;
31455
31456 if (this.length === 1 && this.words[0] < 0) {
31457 this.words[0] = -this.words[0];
31458 this.negative = 1;
31459 } else {
31460 // Carry
31461 for (var i = 0; i < this.length && this.words[i] < 0; i++) {
31462 this.words[i] += 0x4000000;
31463 this.words[i + 1] -= 1;
31464 }
31465 }
31466
31467 return this.strip();
31468 };
31469
31470 BN.prototype.addn = function addn (num) {
31471 return this.clone().iaddn(num);
31472 };
31473
31474 BN.prototype.subn = function subn (num) {
31475 return this.clone().isubn(num);
31476 };
31477
31478 BN.prototype.iabs = function iabs () {
31479 this.negative = 0;
31480
31481 return this;
31482 };
31483
31484 BN.prototype.abs = function abs () {
31485 return this.clone().iabs();
31486 };
31487
31488 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
31489 var len = num.length + shift;
31490 var i;
31491
31492 this._expand(len);
31493
31494 var w;
31495 var carry = 0;
31496 for (i = 0; i < num.length; i++) {
31497 w = (this.words[i + shift] | 0) + carry;
31498 var right = (num.words[i] | 0) * mul;
31499 w -= right & 0x3ffffff;
31500 carry = (w >> 26) - ((right / 0x4000000) | 0);
31501 this.words[i + shift] = w & 0x3ffffff;
31502 }
31503 for (; i < this.length - shift; i++) {
31504 w = (this.words[i + shift] | 0) + carry;
31505 carry = w >> 26;
31506 this.words[i + shift] = w & 0x3ffffff;
31507 }
31508
31509 if (carry === 0) return this.strip();
31510
31511 // Subtraction overflow
31512 assert(carry === -1);
31513 carry = 0;
31514 for (i = 0; i < this.length; i++) {
31515 w = -(this.words[i] | 0) + carry;
31516 carry = w >> 26;
31517 this.words[i] = w & 0x3ffffff;
31518 }
31519 this.negative = 1;
31520
31521 return this.strip();
31522 };
31523
31524 BN.prototype._wordDiv = function _wordDiv (num, mode) {
31525 var shift = this.length - num.length;
31526
31527 var a = this.clone();
31528 var b = num;
31529
31530 // Normalize
31531 var bhi = b.words[b.length - 1] | 0;
31532 var bhiBits = this._countBits(bhi);
31533 shift = 26 - bhiBits;
31534 if (shift !== 0) {
31535 b = b.ushln(shift);
31536 a.iushln(shift);
31537 bhi = b.words[b.length - 1] | 0;
31538 }
31539
31540 // Initialize quotient
31541 var m = a.length - b.length;
31542 var q;
31543
31544 if (mode !== 'mod') {
31545 q = new BN(null);
31546 q.length = m + 1;
31547 q.words = new Array(q.length);
31548 for (var i = 0; i < q.length; i++) {
31549 q.words[i] = 0;
31550 }
31551 }
31552
31553 var diff = a.clone()._ishlnsubmul(b, 1, m);
31554 if (diff.negative === 0) {
31555 a = diff;
31556 if (q) {
31557 q.words[m] = 1;
31558 }
31559 }
31560
31561 for (var j = m - 1; j >= 0; j--) {
31562 var qj = (a.words[b.length + j] | 0) * 0x4000000 +
31563 (a.words[b.length + j - 1] | 0);
31564
31565 // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
31566 // (0x7ffffff)
31567 qj = Math.min((qj / bhi) | 0, 0x3ffffff);
31568
31569 a._ishlnsubmul(b, qj, j);
31570 while (a.negative !== 0) {
31571 qj--;
31572 a.negative = 0;
31573 a._ishlnsubmul(b, 1, j);
31574 if (!a.isZero()) {
31575 a.negative ^= 1;
31576 }
31577 }
31578 if (q) {
31579 q.words[j] = qj;
31580 }
31581 }
31582 if (q) {
31583 q.strip();
31584 }
31585 a.strip();
31586
31587 // Denormalize
31588 if (mode !== 'div' && shift !== 0) {
31589 a.iushrn(shift);
31590 }
31591
31592 return {
31593 div: q || null,
31594 mod: a
31595 };
31596 };
31597
31598 // NOTE: 1) `mode` can be set to `mod` to request mod only,
31599 // to `div` to request div only, or be absent to
31600 // request both div & mod
31601 // 2) `positive` is true if unsigned mod is requested
31602 BN.prototype.divmod = function divmod (num, mode, positive) {
31603 assert(!num.isZero());
31604
31605 if (this.isZero()) {
31606 return {
31607 div: new BN(0),
31608 mod: new BN(0)
31609 };
31610 }
31611
31612 var div, mod, res;
31613 if (this.negative !== 0 && num.negative === 0) {
31614 res = this.neg().divmod(num, mode);
31615
31616 if (mode !== 'mod') {
31617 div = res.div.neg();
31618 }
31619
31620 if (mode !== 'div') {
31621 mod = res.mod.neg();
31622 if (positive && mod.negative !== 0) {
31623 mod.iadd(num);
31624 }
31625 }
31626
31627 return {
31628 div: div,
31629 mod: mod
31630 };
31631 }
31632
31633 if (this.negative === 0 && num.negative !== 0) {
31634 res = this.divmod(num.neg(), mode);
31635
31636 if (mode !== 'mod') {
31637 div = res.div.neg();
31638 }
31639
31640 return {
31641 div: div,
31642 mod: res.mod
31643 };
31644 }
31645
31646 if ((this.negative & num.negative) !== 0) {
31647 res = this.neg().divmod(num.neg(), mode);
31648
31649 if (mode !== 'div') {
31650 mod = res.mod.neg();
31651 if (positive && mod.negative !== 0) {
31652 mod.isub(num);
31653 }
31654 }
31655
31656 return {
31657 div: res.div,
31658 mod: mod
31659 };
31660 }
31661
31662 // Both numbers are positive at this point
31663
31664 // Strip both numbers to approximate shift value
31665 if (num.length > this.length || this.cmp(num) < 0) {
31666 return {
31667 div: new BN(0),
31668 mod: this
31669 };
31670 }
31671
31672 // Very short reduction
31673 if (num.length === 1) {
31674 if (mode === 'div') {
31675 return {
31676 div: this.divn(num.words[0]),
31677 mod: null
31678 };
31679 }
31680
31681 if (mode === 'mod') {
31682 return {
31683 div: null,
31684 mod: new BN(this.modn(num.words[0]))
31685 };
31686 }
31687
31688 return {
31689 div: this.divn(num.words[0]),
31690 mod: new BN(this.modn(num.words[0]))
31691 };
31692 }
31693
31694 return this._wordDiv(num, mode);
31695 };
31696
31697 // Find `this` / `num`
31698 BN.prototype.div = function div (num) {
31699 return this.divmod(num, 'div', false).div;
31700 };
31701
31702 // Find `this` % `num`
31703 BN.prototype.mod = function mod (num) {
31704 return this.divmod(num, 'mod', false).mod;
31705 };
31706
31707 BN.prototype.umod = function umod (num) {
31708 return this.divmod(num, 'mod', true).mod;
31709 };
31710
31711 // Find Round(`this` / `num`)
31712 BN.prototype.divRound = function divRound (num) {
31713 var dm = this.divmod(num);
31714
31715 // Fast case - exact division
31716 if (dm.mod.isZero()) return dm.div;
31717
31718 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
31719
31720 var half = num.ushrn(1);
31721 var r2 = num.andln(1);
31722 var cmp = mod.cmp(half);
31723
31724 // Round down
31725 if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
31726
31727 // Round up
31728 return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
31729 };
31730
31731 BN.prototype.modn = function modn (num) {
31732 assert(num <= 0x3ffffff);
31733 var p = (1 << 26) % num;
31734
31735 var acc = 0;
31736 for (var i = this.length - 1; i >= 0; i--) {
31737 acc = (p * acc + (this.words[i] | 0)) % num;
31738 }
31739
31740 return acc;
31741 };
31742
31743 // In-place division by number
31744 BN.prototype.idivn = function idivn (num) {
31745 assert(num <= 0x3ffffff);
31746
31747 var carry = 0;
31748 for (var i = this.length - 1; i >= 0; i--) {
31749 var w = (this.words[i] | 0) + carry * 0x4000000;
31750 this.words[i] = (w / num) | 0;
31751 carry = w % num;
31752 }
31753
31754 return this.strip();
31755 };
31756
31757 BN.prototype.divn = function divn (num) {
31758 return this.clone().idivn(num);
31759 };
31760
31761 BN.prototype.egcd = function egcd (p) {
31762 assert(p.negative === 0);
31763 assert(!p.isZero());
31764
31765 var x = this;
31766 var y = p.clone();
31767
31768 if (x.negative !== 0) {
31769 x = x.umod(p);
31770 } else {
31771 x = x.clone();
31772 }
31773
31774 // A * x + B * y = x
31775 var A = new BN(1);
31776 var B = new BN(0);
31777
31778 // C * x + D * y = y
31779 var C = new BN(0);
31780 var D = new BN(1);
31781
31782 var g = 0;
31783
31784 while (x.isEven() && y.isEven()) {
31785 x.iushrn(1);
31786 y.iushrn(1);
31787 ++g;
31788 }
31789
31790 var yp = y.clone();
31791 var xp = x.clone();
31792
31793 while (!x.isZero()) {
31794 for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
31795 if (i > 0) {
31796 x.iushrn(i);
31797 while (i-- > 0) {
31798 if (A.isOdd() || B.isOdd()) {
31799 A.iadd(yp);
31800 B.isub(xp);
31801 }
31802
31803 A.iushrn(1);
31804 B.iushrn(1);
31805 }
31806 }
31807
31808 for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
31809 if (j > 0) {
31810 y.iushrn(j);
31811 while (j-- > 0) {
31812 if (C.isOdd() || D.isOdd()) {
31813 C.iadd(yp);
31814 D.isub(xp);
31815 }
31816
31817 C.iushrn(1);
31818 D.iushrn(1);
31819 }
31820 }
31821
31822 if (x.cmp(y) >= 0) {
31823 x.isub(y);
31824 A.isub(C);
31825 B.isub(D);
31826 } else {
31827 y.isub(x);
31828 C.isub(A);
31829 D.isub(B);
31830 }
31831 }
31832
31833 return {
31834 a: C,
31835 b: D,
31836 gcd: y.iushln(g)
31837 };
31838 };
31839
31840 // This is reduced incarnation of the binary EEA
31841 // above, designated to invert members of the
31842 // _prime_ fields F(p) at a maximal speed
31843 BN.prototype._invmp = function _invmp (p) {
31844 assert(p.negative === 0);
31845 assert(!p.isZero());
31846
31847 var a = this;
31848 var b = p.clone();
31849
31850 if (a.negative !== 0) {
31851 a = a.umod(p);
31852 } else {
31853 a = a.clone();
31854 }
31855
31856 var x1 = new BN(1);
31857 var x2 = new BN(0);
31858
31859 var delta = b.clone();
31860
31861 while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
31862 for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
31863 if (i > 0) {
31864 a.iushrn(i);
31865 while (i-- > 0) {
31866 if (x1.isOdd()) {
31867 x1.iadd(delta);
31868 }
31869
31870 x1.iushrn(1);
31871 }
31872 }
31873
31874 for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
31875 if (j > 0) {
31876 b.iushrn(j);
31877 while (j-- > 0) {
31878 if (x2.isOdd()) {
31879 x2.iadd(delta);
31880 }
31881
31882 x2.iushrn(1);
31883 }
31884 }
31885
31886 if (a.cmp(b) >= 0) {
31887 a.isub(b);
31888 x1.isub(x2);
31889 } else {
31890 b.isub(a);
31891 x2.isub(x1);
31892 }
31893 }
31894
31895 var res;
31896 if (a.cmpn(1) === 0) {
31897 res = x1;
31898 } else {
31899 res = x2;
31900 }
31901
31902 if (res.cmpn(0) < 0) {
31903 res.iadd(p);
31904 }
31905
31906 return res;
31907 };
31908
31909 BN.prototype.gcd = function gcd (num) {
31910 if (this.isZero()) return num.abs();
31911 if (num.isZero()) return this.abs();
31912
31913 var a = this.clone();
31914 var b = num.clone();
31915 a.negative = 0;
31916 b.negative = 0;
31917
31918 // Remove common factor of two
31919 for (var shift = 0; a.isEven() && b.isEven(); shift++) {
31920 a.iushrn(1);
31921 b.iushrn(1);
31922 }
31923
31924 do {
31925 while (a.isEven()) {
31926 a.iushrn(1);
31927 }
31928 while (b.isEven()) {
31929 b.iushrn(1);
31930 }
31931
31932 var r = a.cmp(b);
31933 if (r < 0) {
31934 // Swap `a` and `b` to make `a` always bigger than `b`
31935 var t = a;
31936 a = b;
31937 b = t;
31938 } else if (r === 0 || b.cmpn(1) === 0) {
31939 break;
31940 }
31941
31942 a.isub(b);
31943 } while (true);
31944
31945 return b.iushln(shift);
31946 };
31947
31948 // Invert number in the field F(num)
31949 BN.prototype.invm = function invm (num) {
31950 return this.egcd(num).a.umod(num);
31951 };
31952
31953 BN.prototype.isEven = function isEven () {
31954 return (this.words[0] & 1) === 0;
31955 };
31956
31957 BN.prototype.isOdd = function isOdd () {
31958 return (this.words[0] & 1) === 1;
31959 };
31960
31961 // And first word and num
31962 BN.prototype.andln = function andln (num) {
31963 return this.words[0] & num;
31964 };
31965
31966 // Increment at the bit position in-line
31967 BN.prototype.bincn = function bincn (bit) {
31968 assert(typeof bit === 'number');
31969 var r = bit % 26;
31970 var s = (bit - r) / 26;
31971 var q = 1 << r;
31972
31973 // Fast case: bit is much higher than all existing words
31974 if (this.length <= s) {
31975 this._expand(s + 1);
31976 this.words[s] |= q;
31977 return this;
31978 }
31979
31980 // Add bit and propagate, if needed
31981 var carry = q;
31982 for (var i = s; carry !== 0 && i < this.length; i++) {
31983 var w = this.words[i] | 0;
31984 w += carry;
31985 carry = w >>> 26;
31986 w &= 0x3ffffff;
31987 this.words[i] = w;
31988 }
31989 if (carry !== 0) {
31990 this.words[i] = carry;
31991 this.length++;
31992 }
31993 return this;
31994 };
31995
31996 BN.prototype.isZero = function isZero () {
31997 return this.length === 1 && this.words[0] === 0;
31998 };
31999
32000 BN.prototype.cmpn = function cmpn (num) {
32001 var negative = num < 0;
32002
32003 if (this.negative !== 0 && !negative) return -1;
32004 if (this.negative === 0 && negative) return 1;
32005
32006 this.strip();
32007
32008 var res;
32009 if (this.length > 1) {
32010 res = 1;
32011 } else {
32012 if (negative) {
32013 num = -num;
32014 }
32015
32016 assert(num <= 0x3ffffff, 'Number is too big');
32017
32018 var w = this.words[0] | 0;
32019 res = w === num ? 0 : w < num ? -1 : 1;
32020 }
32021 if (this.negative !== 0) return -res | 0;
32022 return res;
32023 };
32024
32025 // Compare two numbers and return:
32026 // 1 - if `this` > `num`
32027 // 0 - if `this` == `num`
32028 // -1 - if `this` < `num`
32029 BN.prototype.cmp = function cmp (num) {
32030 if (this.negative !== 0 && num.negative === 0) return -1;
32031 if (this.negative === 0 && num.negative !== 0) return 1;
32032
32033 var res = this.ucmp(num);
32034 if (this.negative !== 0) return -res | 0;
32035 return res;
32036 };
32037
32038 // Unsigned comparison
32039 BN.prototype.ucmp = function ucmp (num) {
32040 // At this point both numbers have the same sign
32041 if (this.length > num.length) return 1;
32042 if (this.length < num.length) return -1;
32043
32044 var res = 0;
32045 for (var i = this.length - 1; i >= 0; i--) {
32046 var a = this.words[i] | 0;
32047 var b = num.words[i] | 0;
32048
32049 if (a === b) continue;
32050 if (a < b) {
32051 res = -1;
32052 } else if (a > b) {
32053 res = 1;
32054 }
32055 break;
32056 }
32057 return res;
32058 };
32059
32060 BN.prototype.gtn = function gtn (num) {
32061 return this.cmpn(num) === 1;
32062 };
32063
32064 BN.prototype.gt = function gt (num) {
32065 return this.cmp(num) === 1;
32066 };
32067
32068 BN.prototype.gten = function gten (num) {
32069 return this.cmpn(num) >= 0;
32070 };
32071
32072 BN.prototype.gte = function gte (num) {
32073 return this.cmp(num) >= 0;
32074 };
32075
32076 BN.prototype.ltn = function ltn (num) {
32077 return this.cmpn(num) === -1;
32078 };
32079
32080 BN.prototype.lt = function lt (num) {
32081 return this.cmp(num) === -1;
32082 };
32083
32084 BN.prototype.lten = function lten (num) {
32085 return this.cmpn(num) <= 0;
32086 };
32087
32088 BN.prototype.lte = function lte (num) {
32089 return this.cmp(num) <= 0;
32090 };
32091
32092 BN.prototype.eqn = function eqn (num) {
32093 return this.cmpn(num) === 0;
32094 };
32095
32096 BN.prototype.eq = function eq (num) {
32097 return this.cmp(num) === 0;
32098 };
32099
32100 //
32101 // A reduce context, could be using montgomery or something better, depending
32102 // on the `m` itself.
32103 //
32104 BN.red = function red (num) {
32105 return new Red(num);
32106 };
32107
32108 BN.prototype.toRed = function toRed (ctx) {
32109 assert(!this.red, 'Already a number in reduction context');
32110 assert(this.negative === 0, 'red works only with positives');
32111 return ctx.convertTo(this)._forceRed(ctx);
32112 };
32113
32114 BN.prototype.fromRed = function fromRed () {
32115 assert(this.red, 'fromRed works only with numbers in reduction context');
32116 return this.red.convertFrom(this);
32117 };
32118
32119 BN.prototype._forceRed = function _forceRed (ctx) {
32120 this.red = ctx;
32121 return this;
32122 };
32123
32124 BN.prototype.forceRed = function forceRed (ctx) {
32125 assert(!this.red, 'Already a number in reduction context');
32126 return this._forceRed(ctx);
32127 };
32128
32129 BN.prototype.redAdd = function redAdd (num) {
32130 assert(this.red, 'redAdd works only with red numbers');
32131 return this.red.add(this, num);
32132 };
32133
32134 BN.prototype.redIAdd = function redIAdd (num) {
32135 assert(this.red, 'redIAdd works only with red numbers');
32136 return this.red.iadd(this, num);
32137 };
32138
32139 BN.prototype.redSub = function redSub (num) {
32140 assert(this.red, 'redSub works only with red numbers');
32141 return this.red.sub(this, num);
32142 };
32143
32144 BN.prototype.redISub = function redISub (num) {
32145 assert(this.red, 'redISub works only with red numbers');
32146 return this.red.isub(this, num);
32147 };
32148
32149 BN.prototype.redShl = function redShl (num) {
32150 assert(this.red, 'redShl works only with red numbers');
32151 return this.red.shl(this, num);
32152 };
32153
32154 BN.prototype.redMul = function redMul (num) {
32155 assert(this.red, 'redMul works only with red numbers');
32156 this.red._verify2(this, num);
32157 return this.red.mul(this, num);
32158 };
32159
32160 BN.prototype.redIMul = function redIMul (num) {
32161 assert(this.red, 'redMul works only with red numbers');
32162 this.red._verify2(this, num);
32163 return this.red.imul(this, num);
32164 };
32165
32166 BN.prototype.redSqr = function redSqr () {
32167 assert(this.red, 'redSqr works only with red numbers');
32168 this.red._verify1(this);
32169 return this.red.sqr(this);
32170 };
32171
32172 BN.prototype.redISqr = function redISqr () {
32173 assert(this.red, 'redISqr works only with red numbers');
32174 this.red._verify1(this);
32175 return this.red.isqr(this);
32176 };
32177
32178 // Square root over p
32179 BN.prototype.redSqrt = function redSqrt () {
32180 assert(this.red, 'redSqrt works only with red numbers');
32181 this.red._verify1(this);
32182 return this.red.sqrt(this);
32183 };
32184
32185 BN.prototype.redInvm = function redInvm () {
32186 assert(this.red, 'redInvm works only with red numbers');
32187 this.red._verify1(this);
32188 return this.red.invm(this);
32189 };
32190
32191 // Return negative clone of `this` % `red modulo`
32192 BN.prototype.redNeg = function redNeg () {
32193 assert(this.red, 'redNeg works only with red numbers');
32194 this.red._verify1(this);
32195 return this.red.neg(this);
32196 };
32197
32198 BN.prototype.redPow = function redPow (num) {
32199 assert(this.red && !num.red, 'redPow(normalNum)');
32200 this.red._verify1(this);
32201 return this.red.pow(this, num);
32202 };
32203
32204 // Prime numbers with efficient reduction
32205 var primes = {
32206 k256: null,
32207 p224: null,
32208 p192: null,
32209 p25519: null
32210 };
32211
32212 // Pseudo-Mersenne prime
32213 function MPrime (name, p) {
32214 // P = 2 ^ N - K
32215 this.name = name;
32216 this.p = new BN(p, 16);
32217 this.n = this.p.bitLength();
32218 this.k = new BN(1).iushln(this.n).isub(this.p);
32219
32220 this.tmp = this._tmp();
32221 }
32222
32223 MPrime.prototype._tmp = function _tmp () {
32224 var tmp = new BN(null);
32225 tmp.words = new Array(Math.ceil(this.n / 13));
32226 return tmp;
32227 };
32228
32229 MPrime.prototype.ireduce = function ireduce (num) {
32230 // Assumes that `num` is less than `P^2`
32231 // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
32232 var r = num;
32233 var rlen;
32234
32235 do {
32236 this.split(r, this.tmp);
32237 r = this.imulK(r);
32238 r = r.iadd(this.tmp);
32239 rlen = r.bitLength();
32240 } while (rlen > this.n);
32241
32242 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
32243 if (cmp === 0) {
32244 r.words[0] = 0;
32245 r.length = 1;
32246 } else if (cmp > 0) {
32247 r.isub(this.p);
32248 } else {
32249 r.strip();
32250 }
32251
32252 return r;
32253 };
32254
32255 MPrime.prototype.split = function split (input, out) {
32256 input.iushrn(this.n, 0, out);
32257 };
32258
32259 MPrime.prototype.imulK = function imulK (num) {
32260 return num.imul(this.k);
32261 };
32262
32263 function K256 () {
32264 MPrime.call(
32265 this,
32266 'k256',
32267 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
32268 }
32269 inherits(K256, MPrime);
32270
32271 K256.prototype.split = function split (input, output) {
32272 // 256 = 9 * 26 + 22
32273 var mask = 0x3fffff;
32274
32275 var outLen = Math.min(input.length, 9);
32276 for (var i = 0; i < outLen; i++) {
32277 output.words[i] = input.words[i];
32278 }
32279 output.length = outLen;
32280
32281 if (input.length <= 9) {
32282 input.words[0] = 0;
32283 input.length = 1;
32284 return;
32285 }
32286
32287 // Shift by 9 limbs
32288 var prev = input.words[9];
32289 output.words[output.length++] = prev & mask;
32290
32291 for (i = 10; i < input.length; i++) {
32292 var next = input.words[i] | 0;
32293 input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
32294 prev = next;
32295 }
32296 prev >>>= 22;
32297 input.words[i - 10] = prev;
32298 if (prev === 0 && input.length > 10) {
32299 input.length -= 10;
32300 } else {
32301 input.length -= 9;
32302 }
32303 };
32304
32305 K256.prototype.imulK = function imulK (num) {
32306 // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
32307 num.words[num.length] = 0;
32308 num.words[num.length + 1] = 0;
32309 num.length += 2;
32310
32311 // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
32312 var lo = 0;
32313 for (var i = 0; i < num.length; i++) {
32314 var w = num.words[i] | 0;
32315 lo += w * 0x3d1;
32316 num.words[i] = lo & 0x3ffffff;
32317 lo = w * 0x40 + ((lo / 0x4000000) | 0);
32318 }
32319
32320 // Fast length reduction
32321 if (num.words[num.length - 1] === 0) {
32322 num.length--;
32323 if (num.words[num.length - 1] === 0) {
32324 num.length--;
32325 }
32326 }
32327 return num;
32328 };
32329
32330 function P224 () {
32331 MPrime.call(
32332 this,
32333 'p224',
32334 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
32335 }
32336 inherits(P224, MPrime);
32337
32338 function P192 () {
32339 MPrime.call(
32340 this,
32341 'p192',
32342 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
32343 }
32344 inherits(P192, MPrime);
32345
32346 function P25519 () {
32347 // 2 ^ 255 - 19
32348 MPrime.call(
32349 this,
32350 '25519',
32351 '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
32352 }
32353 inherits(P25519, MPrime);
32354
32355 P25519.prototype.imulK = function imulK (num) {
32356 // K = 0x13
32357 var carry = 0;
32358 for (var i = 0; i < num.length; i++) {
32359 var hi = (num.words[i] | 0) * 0x13 + carry;
32360 var lo = hi & 0x3ffffff;
32361 hi >>>= 26;
32362
32363 num.words[i] = lo;
32364 carry = hi;
32365 }
32366 if (carry !== 0) {
32367 num.words[num.length++] = carry;
32368 }
32369 return num;
32370 };
32371
32372 // Exported mostly for testing purposes, use plain name instead
32373 BN._prime = function prime (name) {
32374 // Cached version of prime
32375 if (primes[name]) return primes[name];
32376
32377 var prime;
32378 if (name === 'k256') {
32379 prime = new K256();
32380 } else if (name === 'p224') {
32381 prime = new P224();
32382 } else if (name === 'p192') {
32383 prime = new P192();
32384 } else if (name === 'p25519') {
32385 prime = new P25519();
32386 } else {
32387 throw new Error('Unknown prime ' + name);
32388 }
32389 primes[name] = prime;
32390
32391 return prime;
32392 };
32393
32394 //
32395 // Base reduction engine
32396 //
32397 function Red (m) {
32398 if (typeof m === 'string') {
32399 var prime = BN._prime(m);
32400 this.m = prime.p;
32401 this.prime = prime;
32402 } else {
32403 assert(m.gtn(1), 'modulus must be greater than 1');
32404 this.m = m;
32405 this.prime = null;
32406 }
32407 }
32408
32409 Red.prototype._verify1 = function _verify1 (a) {
32410 assert(a.negative === 0, 'red works only with positives');
32411 assert(a.red, 'red works only with red numbers');
32412 };
32413
32414 Red.prototype._verify2 = function _verify2 (a, b) {
32415 assert((a.negative | b.negative) === 0, 'red works only with positives');
32416 assert(a.red && a.red === b.red,
32417 'red works only with red numbers');
32418 };
32419
32420 Red.prototype.imod = function imod (a) {
32421 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
32422 return a.umod(this.m)._forceRed(this);
32423 };
32424
32425 Red.prototype.neg = function neg (a) {
32426 if (a.isZero()) {
32427 return a.clone();
32428 }
32429
32430 return this.m.sub(a)._forceRed(this);
32431 };
32432
32433 Red.prototype.add = function add (a, b) {
32434 this._verify2(a, b);
32435
32436 var res = a.add(b);
32437 if (res.cmp(this.m) >= 0) {
32438 res.isub(this.m);
32439 }
32440 return res._forceRed(this);
32441 };
32442
32443 Red.prototype.iadd = function iadd (a, b) {
32444 this._verify2(a, b);
32445
32446 var res = a.iadd(b);
32447 if (res.cmp(this.m) >= 0) {
32448 res.isub(this.m);
32449 }
32450 return res;
32451 };
32452
32453 Red.prototype.sub = function sub (a, b) {
32454 this._verify2(a, b);
32455
32456 var res = a.sub(b);
32457 if (res.cmpn(0) < 0) {
32458 res.iadd(this.m);
32459 }
32460 return res._forceRed(this);
32461 };
32462
32463 Red.prototype.isub = function isub (a, b) {
32464 this._verify2(a, b);
32465
32466 var res = a.isub(b);
32467 if (res.cmpn(0) < 0) {
32468 res.iadd(this.m);
32469 }
32470 return res;
32471 };
32472
32473 Red.prototype.shl = function shl (a, num) {
32474 this._verify1(a);
32475 return this.imod(a.ushln(num));
32476 };
32477
32478 Red.prototype.imul = function imul (a, b) {
32479 this._verify2(a, b);
32480 return this.imod(a.imul(b));
32481 };
32482
32483 Red.prototype.mul = function mul (a, b) {
32484 this._verify2(a, b);
32485 return this.imod(a.mul(b));
32486 };
32487
32488 Red.prototype.isqr = function isqr (a) {
32489 return this.imul(a, a.clone());
32490 };
32491
32492 Red.prototype.sqr = function sqr (a) {
32493 return this.mul(a, a);
32494 };
32495
32496 Red.prototype.sqrt = function sqrt (a) {
32497 if (a.isZero()) return a.clone();
32498
32499 var mod3 = this.m.andln(3);
32500 assert(mod3 % 2 === 1);
32501
32502 // Fast case
32503 if (mod3 === 3) {
32504 var pow = this.m.add(new BN(1)).iushrn(2);
32505 return this.pow(a, pow);
32506 }
32507
32508 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
32509 //
32510 // Find Q and S, that Q * 2 ^ S = (P - 1)
32511 var q = this.m.subn(1);
32512 var s = 0;
32513 while (!q.isZero() && q.andln(1) === 0) {
32514 s++;
32515 q.iushrn(1);
32516 }
32517 assert(!q.isZero());
32518
32519 var one = new BN(1).toRed(this);
32520 var nOne = one.redNeg();
32521
32522 // Find quadratic non-residue
32523 // NOTE: Max is such because of generalized Riemann hypothesis.
32524 var lpow = this.m.subn(1).iushrn(1);
32525 var z = this.m.bitLength();
32526 z = new BN(2 * z * z).toRed(this);
32527
32528 while (this.pow(z, lpow).cmp(nOne) !== 0) {
32529 z.redIAdd(nOne);
32530 }
32531
32532 var c = this.pow(z, q);
32533 var r = this.pow(a, q.addn(1).iushrn(1));
32534 var t = this.pow(a, q);
32535 var m = s;
32536 while (t.cmp(one) !== 0) {
32537 var tmp = t;
32538 for (var i = 0; tmp.cmp(one) !== 0; i++) {
32539 tmp = tmp.redSqr();
32540 }
32541 assert(i < m);
32542 var b = this.pow(c, new BN(1).iushln(m - i - 1));
32543
32544 r = r.redMul(b);
32545 c = b.redSqr();
32546 t = t.redMul(c);
32547 m = i;
32548 }
32549
32550 return r;
32551 };
32552
32553 Red.prototype.invm = function invm (a) {
32554 var inv = a._invmp(this.m);
32555 if (inv.negative !== 0) {
32556 inv.negative = 0;
32557 return this.imod(inv).redNeg();
32558 } else {
32559 return this.imod(inv);
32560 }
32561 };
32562
32563 Red.prototype.pow = function pow (a, num) {
32564 if (num.isZero()) return new BN(1);
32565 if (num.cmpn(1) === 0) return a.clone();
32566
32567 var windowSize = 4;
32568 var wnd = new Array(1 << windowSize);
32569 wnd[0] = new BN(1).toRed(this);
32570 wnd[1] = a;
32571 for (var i = 2; i < wnd.length; i++) {
32572 wnd[i] = this.mul(wnd[i - 1], a);
32573 }
32574
32575 var res = wnd[0];
32576 var current = 0;
32577 var currentLen = 0;
32578 var start = num.bitLength() % 26;
32579 if (start === 0) {
32580 start = 26;
32581 }
32582
32583 for (i = num.length - 1; i >= 0; i--) {
32584 var word = num.words[i];
32585 for (var j = start - 1; j >= 0; j--) {
32586 var bit = (word >> j) & 1;
32587 if (res !== wnd[0]) {
32588 res = this.sqr(res);
32589 }
32590
32591 if (bit === 0 && current === 0) {
32592 currentLen = 0;
32593 continue;
32594 }
32595
32596 current <<= 1;
32597 current |= bit;
32598 currentLen++;
32599 if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
32600
32601 res = this.mul(res, wnd[current]);
32602 currentLen = 0;
32603 current = 0;
32604 }
32605 start = 26;
32606 }
32607
32608 return res;
32609 };
32610
32611 Red.prototype.convertTo = function convertTo (num) {
32612 var r = num.umod(this.m);
32613
32614 return r === num ? r.clone() : r;
32615 };
32616
32617 Red.prototype.convertFrom = function convertFrom (num) {
32618 var res = num.clone();
32619 res.red = null;
32620 return res;
32621 };
32622
32623 //
32624 // Montgomery method engine
32625 //
32626
32627 BN.mont = function mont (num) {
32628 return new Mont(num);
32629 };
32630
32631 function Mont (m) {
32632 Red.call(this, m);
32633
32634 this.shift = this.m.bitLength();
32635 if (this.shift % 26 !== 0) {
32636 this.shift += 26 - (this.shift % 26);
32637 }
32638
32639 this.r = new BN(1).iushln(this.shift);
32640 this.r2 = this.imod(this.r.sqr());
32641 this.rinv = this.r._invmp(this.m);
32642
32643 this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
32644 this.minv = this.minv.umod(this.r);
32645 this.minv = this.r.sub(this.minv);
32646 }
32647 inherits(Mont, Red);
32648
32649 Mont.prototype.convertTo = function convertTo (num) {
32650 return this.imod(num.ushln(this.shift));
32651 };
32652
32653 Mont.prototype.convertFrom = function convertFrom (num) {
32654 var r = this.imod(num.mul(this.rinv));
32655 r.red = null;
32656 return r;
32657 };
32658
32659 Mont.prototype.imul = function imul (a, b) {
32660 if (a.isZero() || b.isZero()) {
32661 a.words[0] = 0;
32662 a.length = 1;
32663 return a;
32664 }
32665
32666 var t = a.imul(b);
32667 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
32668 var u = t.isub(c).iushrn(this.shift);
32669 var res = u;
32670
32671 if (u.cmp(this.m) >= 0) {
32672 res = u.isub(this.m);
32673 } else if (u.cmpn(0) < 0) {
32674 res = u.iadd(this.m);
32675 }
32676
32677 return res._forceRed(this);
32678 };
32679
32680 Mont.prototype.mul = function mul (a, b) {
32681 if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
32682
32683 var t = a.mul(b);
32684 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
32685 var u = t.isub(c).iushrn(this.shift);
32686 var res = u;
32687 if (u.cmp(this.m) >= 0) {
32688 res = u.isub(this.m);
32689 } else if (u.cmpn(0) < 0) {
32690 res = u.iadd(this.m);
32691 }
32692
32693 return res._forceRed(this);
32694 };
32695
32696 Mont.prototype.invm = function invm (a) {
32697 // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
32698 var res = this.imod(a._invmp(this.m).mul(this.r2));
32699 return res._forceRed(this);
32700 };
32701 })(typeof module === 'undefined' || module, this);
32702
32703 },{}],34:[function(require,module,exports){
32704 var r;
32705
32706 module.exports = function rand(len) {
32707 if (!r)
32708 r = new Rand(null);
32709
32710 return r.generate(len);
32711 };
32712
32713 function Rand(rand) {
32714 this.rand = rand;
32715 }
32716 module.exports.Rand = Rand;
32717
32718 Rand.prototype.generate = function generate(len) {
32719 return this._rand(len);
32720 };
32721
32722 if (typeof self === 'object') {
32723 if (self.crypto && self.crypto.getRandomValues) {
32724 // Modern browsers
32725 Rand.prototype._rand = function _rand(n) {
32726 var arr = new Uint8Array(n);
32727 self.crypto.getRandomValues(arr);
32728 return arr;
32729 };
32730 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
32731 // IE
32732 Rand.prototype._rand = function _rand(n) {
32733 var arr = new Uint8Array(n);
32734 self.msCrypto.getRandomValues(arr);
32735 return arr;
32736 };
32737 } else {
32738 // Old junk
32739 Rand.prototype._rand = function() {
32740 throw new Error('Not implemented yet');
32741 };
32742 }
32743 } else {
32744 // Node.js or Web worker with no crypto support
32745 try {
32746 var crypto = require('crypto');
32747
32748 Rand.prototype._rand = function _rand(n) {
32749 return crypto.randomBytes(n);
32750 };
32751 } catch (e) {
32752 // Emulate crypto API using randy
32753 Rand.prototype._rand = function _rand(n) {
32754 var res = new Uint8Array(n);
32755 for (var i = 0; i < res.length; i++)
32756 res[i] = this.rand.getByte();
32757 return res;
32758 };
32759 }
32760 }
32761
32762 },{"crypto":3}],35:[function(require,module,exports){
32763 (function (Buffer){
32764 var Transform = require('stream').Transform
32765 var inherits = require('inherits')
32766 var StringDecoder = require('string_decoder').StringDecoder
32767 module.exports = CipherBase
32768 inherits(CipherBase, Transform)
32769 function CipherBase (hashMode) {
32770 Transform.call(this)
32771 this.hashMode = typeof hashMode === 'string'
32772 if (this.hashMode) {
32773 this[hashMode] = this._finalOrDigest
32774 } else {
32775 this.final = this._finalOrDigest
32776 }
32777 this._decoder = null
32778 this._encoding = null
32779 }
32780 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
32781 if (typeof data === 'string') {
32782 data = new Buffer(data, inputEnc)
32783 }
32784 var outData = this._update(data)
32785 if (this.hashMode) {
32786 return this
32787 }
32788 if (outputEnc) {
32789 outData = this._toString(outData, outputEnc)
32790 }
32791 return outData
32792 }
32793
32794 CipherBase.prototype.setAutoPadding = function () {}
32795
32796 CipherBase.prototype.getAuthTag = function () {
32797 throw new Error('trying to get auth tag in unsupported state')
32798 }
32799
32800 CipherBase.prototype.setAuthTag = function () {
32801 throw new Error('trying to set auth tag in unsupported state')
32802 }
32803
32804 CipherBase.prototype.setAAD = function () {
32805 throw new Error('trying to set aad in unsupported state')
32806 }
32807
32808 CipherBase.prototype._transform = function (data, _, next) {
32809 var err
32810 try {
32811 if (this.hashMode) {
32812 this._update(data)
32813 } else {
32814 this.push(this._update(data))
32815 }
32816 } catch (e) {
32817 err = e
32818 } finally {
32819 next(err)
32820 }
32821 }
32822 CipherBase.prototype._flush = function (done) {
32823 var err
32824 try {
32825 this.push(this._final())
32826 } catch (e) {
32827 err = e
32828 } finally {
32829 done(err)
32830 }
32831 }
32832 CipherBase.prototype._finalOrDigest = function (outputEnc) {
32833 var outData = this._final() || new Buffer('')
32834 if (outputEnc) {
32835 outData = this._toString(outData, outputEnc, true)
32836 }
32837 return outData
32838 }
32839
32840 CipherBase.prototype._toString = function (value, enc, fin) {
32841 if (!this._decoder) {
32842 this._decoder = new StringDecoder(enc)
32843 this._encoding = enc
32844 }
32845 if (this._encoding !== enc) {
32846 throw new Error('can\'t switch encodings')
32847 }
32848 var out = this._decoder.write(value)
32849 if (fin) {
32850 out += this._decoder.end()
32851 }
32852 return out
32853 }
32854
32855 }).call(this,require("buffer").Buffer)
32856 },{"buffer":5,"inherits":63,"stream":25,"string_decoder":26}],36:[function(require,module,exports){
32857 (function (Buffer){
32858 'use strict';
32859 var inherits = require('inherits')
32860 var md5 = require('./md5')
32861 var rmd160 = require('ripemd160')
32862 var sha = require('sha.js')
32863
32864 var Base = require('cipher-base')
32865
32866 function HashNoConstructor(hash) {
32867 Base.call(this, 'digest')
32868
32869 this._hash = hash
32870 this.buffers = []
32871 }
32872
32873 inherits(HashNoConstructor, Base)
32874
32875 HashNoConstructor.prototype._update = function (data) {
32876 this.buffers.push(data)
32877 }
32878
32879 HashNoConstructor.prototype._final = function () {
32880 var buf = Buffer.concat(this.buffers)
32881 var r = this._hash(buf)
32882 this.buffers = null
32883
32884 return r
32885 }
32886
32887 function Hash(hash) {
32888 Base.call(this, 'digest')
32889
32890 this._hash = hash
32891 }
32892
32893 inherits(Hash, Base)
32894
32895 Hash.prototype._update = function (data) {
32896 this._hash.update(data)
32897 }
32898
32899 Hash.prototype._final = function () {
32900 return this._hash.digest()
32901 }
32902
32903 module.exports = function createHash (alg) {
32904 alg = alg.toLowerCase()
32905 if ('md5' === alg) return new HashNoConstructor(md5)
32906 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
32907
32908 return new Hash(sha(alg))
32909 }
32910
32911 }).call(this,require("buffer").Buffer)
32912 },{"./md5":38,"buffer":5,"cipher-base":35,"inherits":63,"ripemd160":71,"sha.js":80}],37:[function(require,module,exports){
32913 (function (Buffer){
32914 'use strict';
32915 var intSize = 4;
32916 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
32917 var chrsz = 8;
32918
32919 function toArray(buf, bigEndian) {
32920 if ((buf.length % intSize) !== 0) {
32921 var len = buf.length + (intSize - (buf.length % intSize));
32922 buf = Buffer.concat([buf, zeroBuffer], len);
32923 }
32924
32925 var arr = [];
32926 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
32927 for (var i = 0; i < buf.length; i += intSize) {
32928 arr.push(fn.call(buf, i));
32929 }
32930 return arr;
32931 }
32932
32933 function toBuffer(arr, size, bigEndian) {
32934 var buf = new Buffer(size);
32935 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
32936 for (var i = 0; i < arr.length; i++) {
32937 fn.call(buf, arr[i], i * 4, true);
32938 }
32939 return buf;
32940 }
32941
32942 function hash(buf, fn, hashSize, bigEndian) {
32943 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
32944 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
32945 return toBuffer(arr, hashSize, bigEndian);
32946 }
32947 exports.hash = hash;
32948 }).call(this,require("buffer").Buffer)
32949 },{"buffer":5}],38:[function(require,module,exports){
32950 'use strict';
32951 /*
32952 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
32953 * Digest Algorithm, as defined in RFC 1321.
32954 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
32955 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
32956 * Distributed under the BSD License
32957 * See http://pajhome.org.uk/crypt/md5 for more info.
32958 */
32959
32960 var helpers = require('./helpers');
32961
32962 /*
32963 * Calculate the MD5 of an array of little-endian words, and a bit length
32964 */
32965 function core_md5(x, len)
32966 {
32967 /* append padding */
32968 x[len >> 5] |= 0x80 << ((len) % 32);
32969 x[(((len + 64) >>> 9) << 4) + 14] = len;
32970
32971 var a = 1732584193;
32972 var b = -271733879;
32973 var c = -1732584194;
32974 var d = 271733878;
32975
32976 for(var i = 0; i < x.length; i += 16)
32977 {
32978 var olda = a;
32979 var oldb = b;
32980 var oldc = c;
32981 var oldd = d;
32982
32983 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
32984 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
32985 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
32986 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
32987 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
32988 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
32989 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
32990 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
32991 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
32992 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
32993 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
32994 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
32995 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
32996 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
32997 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
32998 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
32999
33000 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
33001 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
33002 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
33003 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
33004 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
33005 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
33006 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
33007 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
33008 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
33009 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
33010 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
33011 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
33012 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
33013 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
33014 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
33015 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
33016
33017 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
33018 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
33019 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
33020 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
33021 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
33022 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
33023 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
33024 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
33025 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
33026 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
33027 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
33028 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
33029 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
33030 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
33031 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
33032 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
33033
33034 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
33035 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
33036 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
33037 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
33038 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
33039 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
33040 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
33041 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
33042 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
33043 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
33044 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
33045 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
33046 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
33047 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
33048 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
33049 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
33050
33051 a = safe_add(a, olda);
33052 b = safe_add(b, oldb);
33053 c = safe_add(c, oldc);
33054 d = safe_add(d, oldd);
33055 }
33056 return Array(a, b, c, d);
33057
33058 }
33059
33060 /*
33061 * These functions implement the four basic operations the algorithm uses.
33062 */
33063 function md5_cmn(q, a, b, x, s, t)
33064 {
33065 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
33066 }
33067 function md5_ff(a, b, c, d, x, s, t)
33068 {
33069 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
33070 }
33071 function md5_gg(a, b, c, d, x, s, t)
33072 {
33073 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
33074 }
33075 function md5_hh(a, b, c, d, x, s, t)
33076 {
33077 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
33078 }
33079 function md5_ii(a, b, c, d, x, s, t)
33080 {
33081 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
33082 }
33083
33084 /*
33085 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
33086 * to work around bugs in some JS interpreters.
33087 */
33088 function safe_add(x, y)
33089 {
33090 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
33091 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
33092 return (msw << 16) | (lsw & 0xFFFF);
33093 }
33094
33095 /*
33096 * Bitwise rotate a 32-bit number to the left.
33097 */
33098 function bit_rol(num, cnt)
33099 {
33100 return (num << cnt) | (num >>> (32 - cnt));
33101 }
33102
33103 module.exports = function md5(buf) {
33104 return helpers.hash(buf, core_md5, 16);
33105 };
33106 },{"./helpers":37}],39:[function(require,module,exports){
33107 'use strict';
33108
33109 var elliptic = exports;
33110
33111 elliptic.version = require('../package.json').version;
33112 elliptic.utils = require('./elliptic/utils');
33113 elliptic.rand = require('brorand');
33114 elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
33115 elliptic.curve = require('./elliptic/curve');
33116 elliptic.curves = require('./elliptic/curves');
33117
33118 // Protocols
33119 elliptic.ec = require('./elliptic/ec');
33120 elliptic.eddsa = require('./elliptic/eddsa');
33121
33122 },{"../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){
33123 'use strict';
33124
33125 var BN = require('bn.js');
33126 var elliptic = require('../../elliptic');
33127 var utils = elliptic.utils;
33128 var getNAF = utils.getNAF;
33129 var getJSF = utils.getJSF;
33130 var assert = utils.assert;
33131
33132 function BaseCurve(type, conf) {
33133 this.type = type;
33134 this.p = new BN(conf.p, 16);
33135
33136 // Use Montgomery, when there is no fast reduction for the prime
33137 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
33138
33139 // Useful for many curves
33140 this.zero = new BN(0).toRed(this.red);
33141 this.one = new BN(1).toRed(this.red);
33142 this.two = new BN(2).toRed(this.red);
33143
33144 // Curve configuration, optional
33145 this.n = conf.n && new BN(conf.n, 16);
33146 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
33147
33148 // Temporary arrays
33149 this._wnafT1 = new Array(4);
33150 this._wnafT2 = new Array(4);
33151 this._wnafT3 = new Array(4);
33152 this._wnafT4 = new Array(4);
33153
33154 // Generalized Greg Maxwell's trick
33155 var adjustCount = this.n && this.p.div(this.n);
33156 if (!adjustCount || adjustCount.cmpn(100) > 0) {
33157 this.redN = null;
33158 } else {
33159 this._maxwellTrick = true;
33160 this.redN = this.n.toRed(this.red);
33161 }
33162 }
33163 module.exports = BaseCurve;
33164
33165 BaseCurve.prototype.point = function point() {
33166 throw new Error('Not implemented');
33167 };
33168
33169 BaseCurve.prototype.validate = function validate() {
33170 throw new Error('Not implemented');
33171 };
33172
33173 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
33174 assert(p.precomputed);
33175 var doubles = p._getDoubles();
33176
33177 var naf = getNAF(k, 1);
33178 var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
33179 I /= 3;
33180
33181 // Translate into more windowed form
33182 var repr = [];
33183 for (var j = 0; j < naf.length; j += doubles.step) {
33184 var nafW = 0;
33185 for (var k = j + doubles.step - 1; k >= j; k--)
33186 nafW = (nafW << 1) + naf[k];
33187 repr.push(nafW);
33188 }
33189
33190 var a = this.jpoint(null, null, null);
33191 var b = this.jpoint(null, null, null);
33192 for (var i = I; i > 0; i--) {
33193 for (var j = 0; j < repr.length; j++) {
33194 var nafW = repr[j];
33195 if (nafW === i)
33196 b = b.mixedAdd(doubles.points[j]);
33197 else if (nafW === -i)
33198 b = b.mixedAdd(doubles.points[j].neg());
33199 }
33200 a = a.add(b);
33201 }
33202 return a.toP();
33203 };
33204
33205 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
33206 var w = 4;
33207
33208 // Precompute window
33209 var nafPoints = p._getNAFPoints(w);
33210 w = nafPoints.wnd;
33211 var wnd = nafPoints.points;
33212
33213 // Get NAF form
33214 var naf = getNAF(k, w);
33215
33216 // Add `this`*(N+1) for every w-NAF index
33217 var acc = this.jpoint(null, null, null);
33218 for (var i = naf.length - 1; i >= 0; i--) {
33219 // Count zeroes
33220 for (var k = 0; i >= 0 && naf[i] === 0; i--)
33221 k++;
33222 if (i >= 0)
33223 k++;
33224 acc = acc.dblp(k);
33225
33226 if (i < 0)
33227 break;
33228 var z = naf[i];
33229 assert(z !== 0);
33230 if (p.type === 'affine') {
33231 // J +- P
33232 if (z > 0)
33233 acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
33234 else
33235 acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
33236 } else {
33237 // J +- J
33238 if (z > 0)
33239 acc = acc.add(wnd[(z - 1) >> 1]);
33240 else
33241 acc = acc.add(wnd[(-z - 1) >> 1].neg());
33242 }
33243 }
33244 return p.type === 'affine' ? acc.toP() : acc;
33245 };
33246
33247 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
33248 points,
33249 coeffs,
33250 len,
33251 jacobianResult) {
33252 var wndWidth = this._wnafT1;
33253 var wnd = this._wnafT2;
33254 var naf = this._wnafT3;
33255
33256 // Fill all arrays
33257 var max = 0;
33258 for (var i = 0; i < len; i++) {
33259 var p = points[i];
33260 var nafPoints = p._getNAFPoints(defW);
33261 wndWidth[i] = nafPoints.wnd;
33262 wnd[i] = nafPoints.points;
33263 }
33264
33265 // Comb small window NAFs
33266 for (var i = len - 1; i >= 1; i -= 2) {
33267 var a = i - 1;
33268 var b = i;
33269 if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
33270 naf[a] = getNAF(coeffs[a], wndWidth[a]);
33271 naf[b] = getNAF(coeffs[b], wndWidth[b]);
33272 max = Math.max(naf[a].length, max);
33273 max = Math.max(naf[b].length, max);
33274 continue;
33275 }
33276
33277 var comb = [
33278 points[a], /* 1 */
33279 null, /* 3 */
33280 null, /* 5 */
33281 points[b] /* 7 */
33282 ];
33283
33284 // Try to avoid Projective points, if possible
33285 if (points[a].y.cmp(points[b].y) === 0) {
33286 comb[1] = points[a].add(points[b]);
33287 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
33288 } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
33289 comb[1] = points[a].toJ().mixedAdd(points[b]);
33290 comb[2] = points[a].add(points[b].neg());
33291 } else {
33292 comb[1] = points[a].toJ().mixedAdd(points[b]);
33293 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
33294 }
33295
33296 var index = [
33297 -3, /* -1 -1 */
33298 -1, /* -1 0 */
33299 -5, /* -1 1 */
33300 -7, /* 0 -1 */
33301 0, /* 0 0 */
33302 7, /* 0 1 */
33303 5, /* 1 -1 */
33304 1, /* 1 0 */
33305 3 /* 1 1 */
33306 ];
33307
33308 var jsf = getJSF(coeffs[a], coeffs[b]);
33309 max = Math.max(jsf[0].length, max);
33310 naf[a] = new Array(max);
33311 naf[b] = new Array(max);
33312 for (var j = 0; j < max; j++) {
33313 var ja = jsf[0][j] | 0;
33314 var jb = jsf[1][j] | 0;
33315
33316 naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
33317 naf[b][j] = 0;
33318 wnd[a] = comb;
33319 }
33320 }
33321
33322 var acc = this.jpoint(null, null, null);
33323 var tmp = this._wnafT4;
33324 for (var i = max; i >= 0; i--) {
33325 var k = 0;
33326
33327 while (i >= 0) {
33328 var zero = true;
33329 for (var j = 0; j < len; j++) {
33330 tmp[j] = naf[j][i] | 0;
33331 if (tmp[j] !== 0)
33332 zero = false;
33333 }
33334 if (!zero)
33335 break;
33336 k++;
33337 i--;
33338 }
33339 if (i >= 0)
33340 k++;
33341 acc = acc.dblp(k);
33342 if (i < 0)
33343 break;
33344
33345 for (var j = 0; j < len; j++) {
33346 var z = tmp[j];
33347 var p;
33348 if (z === 0)
33349 continue;
33350 else if (z > 0)
33351 p = wnd[j][(z - 1) >> 1];
33352 else if (z < 0)
33353 p = wnd[j][(-z - 1) >> 1].neg();
33354
33355 if (p.type === 'affine')
33356 acc = acc.mixedAdd(p);
33357 else
33358 acc = acc.add(p);
33359 }
33360 }
33361 // Zeroify references
33362 for (var i = 0; i < len; i++)
33363 wnd[i] = null;
33364
33365 if (jacobianResult)
33366 return acc;
33367 else
33368 return acc.toP();
33369 };
33370
33371 function BasePoint(curve, type) {
33372 this.curve = curve;
33373 this.type = type;
33374 this.precomputed = null;
33375 }
33376 BaseCurve.BasePoint = BasePoint;
33377
33378 BasePoint.prototype.eq = function eq(/*other*/) {
33379 throw new Error('Not implemented');
33380 };
33381
33382 BasePoint.prototype.validate = function validate() {
33383 return this.curve.validate(this);
33384 };
33385
33386 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
33387 bytes = utils.toArray(bytes, enc);
33388
33389 var len = this.p.byteLength();
33390
33391 // uncompressed, hybrid-odd, hybrid-even
33392 if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
33393 bytes.length - 1 === 2 * len) {
33394 if (bytes[0] === 0x06)
33395 assert(bytes[bytes.length - 1] % 2 === 0);
33396 else if (bytes[0] === 0x07)
33397 assert(bytes[bytes.length - 1] % 2 === 1);
33398
33399 var res = this.point(bytes.slice(1, 1 + len),
33400 bytes.slice(1 + len, 1 + 2 * len));
33401
33402 return res;
33403 } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
33404 bytes.length - 1 === len) {
33405 return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
33406 }
33407 throw new Error('Unknown point format');
33408 };
33409
33410 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
33411 return this.encode(enc, true);
33412 };
33413
33414 BasePoint.prototype._encode = function _encode(compact) {
33415 var len = this.curve.p.byteLength();
33416 var x = this.getX().toArray('be', len);
33417
33418 if (compact)
33419 return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
33420
33421 return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
33422 };
33423
33424 BasePoint.prototype.encode = function encode(enc, compact) {
33425 return utils.encode(this._encode(compact), enc);
33426 };
33427
33428 BasePoint.prototype.precompute = function precompute(power) {
33429 if (this.precomputed)
33430 return this;
33431
33432 var precomputed = {
33433 doubles: null,
33434 naf: null,
33435 beta: null
33436 };
33437 precomputed.naf = this._getNAFPoints(8);
33438 precomputed.doubles = this._getDoubles(4, power);
33439 precomputed.beta = this._getBeta();
33440 this.precomputed = precomputed;
33441
33442 return this;
33443 };
33444
33445 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
33446 if (!this.precomputed)
33447 return false;
33448
33449 var doubles = this.precomputed.doubles;
33450 if (!doubles)
33451 return false;
33452
33453 return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
33454 };
33455
33456 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
33457 if (this.precomputed && this.precomputed.doubles)
33458 return this.precomputed.doubles;
33459
33460 var doubles = [ this ];
33461 var acc = this;
33462 for (var i = 0; i < power; i += step) {
33463 for (var j = 0; j < step; j++)
33464 acc = acc.dbl();
33465 doubles.push(acc);
33466 }
33467 return {
33468 step: step,
33469 points: doubles
33470 };
33471 };
33472
33473 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
33474 if (this.precomputed && this.precomputed.naf)
33475 return this.precomputed.naf;
33476
33477 var res = [ this ];
33478 var max = (1 << wnd) - 1;
33479 var dbl = max === 1 ? null : this.dbl();
33480 for (var i = 1; i < max; i++)
33481 res[i] = res[i - 1].add(dbl);
33482 return {
33483 wnd: wnd,
33484 points: res
33485 };
33486 };
33487
33488 BasePoint.prototype._getBeta = function _getBeta() {
33489 return null;
33490 };
33491
33492 BasePoint.prototype.dblp = function dblp(k) {
33493 var r = this;
33494 for (var i = 0; i < k; i++)
33495 r = r.dbl();
33496 return r;
33497 };
33498
33499 },{"../../elliptic":39,"bn.js":33}],41:[function(require,module,exports){
33500 'use strict';
33501
33502 var curve = require('../curve');
33503 var elliptic = require('../../elliptic');
33504 var BN = require('bn.js');
33505 var inherits = require('inherits');
33506 var Base = curve.base;
33507
33508 var assert = elliptic.utils.assert;
33509
33510 function EdwardsCurve(conf) {
33511 // NOTE: Important as we are creating point in Base.call()
33512 this.twisted = (conf.a | 0) !== 1;
33513 this.mOneA = this.twisted && (conf.a | 0) === -1;
33514 this.extended = this.mOneA;
33515
33516 Base.call(this, 'edwards', conf);
33517
33518 this.a = new BN(conf.a, 16).umod(this.red.m);
33519 this.a = this.a.toRed(this.red);
33520 this.c = new BN(conf.c, 16).toRed(this.red);
33521 this.c2 = this.c.redSqr();
33522 this.d = new BN(conf.d, 16).toRed(this.red);
33523 this.dd = this.d.redAdd(this.d);
33524
33525 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
33526 this.oneC = (conf.c | 0) === 1;
33527 }
33528 inherits(EdwardsCurve, Base);
33529 module.exports = EdwardsCurve;
33530
33531 EdwardsCurve.prototype._mulA = function _mulA(num) {
33532 if (this.mOneA)
33533 return num.redNeg();
33534 else
33535 return this.a.redMul(num);
33536 };
33537
33538 EdwardsCurve.prototype._mulC = function _mulC(num) {
33539 if (this.oneC)
33540 return num;
33541 else
33542 return this.c.redMul(num);
33543 };
33544
33545 // Just for compatibility with Short curve
33546 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
33547 return this.point(x, y, z, t);
33548 };
33549
33550 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
33551 x = new BN(x, 16);
33552 if (!x.red)
33553 x = x.toRed(this.red);
33554
33555 var x2 = x.redSqr();
33556 var rhs = this.c2.redSub(this.a.redMul(x2));
33557 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
33558
33559 var y2 = rhs.redMul(lhs.redInvm());
33560 var y = y2.redSqrt();
33561 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
33562 throw new Error('invalid point');
33563
33564 var isOdd = y.fromRed().isOdd();
33565 if (odd && !isOdd || !odd && isOdd)
33566 y = y.redNeg();
33567
33568 return this.point(x, y);
33569 };
33570
33571 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
33572 y = new BN(y, 16);
33573 if (!y.red)
33574 y = y.toRed(this.red);
33575
33576 // x^2 = (y^2 - 1) / (d y^2 + 1)
33577 var y2 = y.redSqr();
33578 var lhs = y2.redSub(this.one);
33579 var rhs = y2.redMul(this.d).redAdd(this.one);
33580 var x2 = lhs.redMul(rhs.redInvm());
33581
33582 if (x2.cmp(this.zero) === 0) {
33583 if (odd)
33584 throw new Error('invalid point');
33585 else
33586 return this.point(this.zero, y);
33587 }
33588
33589 var x = x2.redSqrt();
33590 if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
33591 throw new Error('invalid point');
33592
33593 if (x.isOdd() !== odd)
33594 x = x.redNeg();
33595
33596 return this.point(x, y);
33597 };
33598
33599 EdwardsCurve.prototype.validate = function validate(point) {
33600 if (point.isInfinity())
33601 return true;
33602
33603 // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
33604 point.normalize();
33605
33606 var x2 = point.x.redSqr();
33607 var y2 = point.y.redSqr();
33608 var lhs = x2.redMul(this.a).redAdd(y2);
33609 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
33610
33611 return lhs.cmp(rhs) === 0;
33612 };
33613
33614 function Point(curve, x, y, z, t) {
33615 Base.BasePoint.call(this, curve, 'projective');
33616 if (x === null && y === null && z === null) {
33617 this.x = this.curve.zero;
33618 this.y = this.curve.one;
33619 this.z = this.curve.one;
33620 this.t = this.curve.zero;
33621 this.zOne = true;
33622 } else {
33623 this.x = new BN(x, 16);
33624 this.y = new BN(y, 16);
33625 this.z = z ? new BN(z, 16) : this.curve.one;
33626 this.t = t && new BN(t, 16);
33627 if (!this.x.red)
33628 this.x = this.x.toRed(this.curve.red);
33629 if (!this.y.red)
33630 this.y = this.y.toRed(this.curve.red);
33631 if (!this.z.red)
33632 this.z = this.z.toRed(this.curve.red);
33633 if (this.t && !this.t.red)
33634 this.t = this.t.toRed(this.curve.red);
33635 this.zOne = this.z === this.curve.one;
33636
33637 // Use extended coordinates
33638 if (this.curve.extended && !this.t) {
33639 this.t = this.x.redMul(this.y);
33640 if (!this.zOne)
33641 this.t = this.t.redMul(this.z.redInvm());
33642 }
33643 }
33644 }
33645 inherits(Point, Base.BasePoint);
33646
33647 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
33648 return Point.fromJSON(this, obj);
33649 };
33650
33651 EdwardsCurve.prototype.point = function point(x, y, z, t) {
33652 return new Point(this, x, y, z, t);
33653 };
33654
33655 Point.fromJSON = function fromJSON(curve, obj) {
33656 return new Point(curve, obj[0], obj[1], obj[2]);
33657 };
33658
33659 Point.prototype.inspect = function inspect() {
33660 if (this.isInfinity())
33661 return '<EC Point Infinity>';
33662 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
33663 ' y: ' + this.y.fromRed().toString(16, 2) +
33664 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
33665 };
33666
33667 Point.prototype.isInfinity = function isInfinity() {
33668 // XXX This code assumes that zero is always zero in red
33669 return this.x.cmpn(0) === 0 &&
33670 this.y.cmp(this.z) === 0;
33671 };
33672
33673 Point.prototype._extDbl = function _extDbl() {
33674 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
33675 // #doubling-dbl-2008-hwcd
33676 // 4M + 4S
33677
33678 // A = X1^2
33679 var a = this.x.redSqr();
33680 // B = Y1^2
33681 var b = this.y.redSqr();
33682 // C = 2 * Z1^2
33683 var c = this.z.redSqr();
33684 c = c.redIAdd(c);
33685 // D = a * A
33686 var d = this.curve._mulA(a);
33687 // E = (X1 + Y1)^2 - A - B
33688 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
33689 // G = D + B
33690 var g = d.redAdd(b);
33691 // F = G - C
33692 var f = g.redSub(c);
33693 // H = D - B
33694 var h = d.redSub(b);
33695 // X3 = E * F
33696 var nx = e.redMul(f);
33697 // Y3 = G * H
33698 var ny = g.redMul(h);
33699 // T3 = E * H
33700 var nt = e.redMul(h);
33701 // Z3 = F * G
33702 var nz = f.redMul(g);
33703 return this.curve.point(nx, ny, nz, nt);
33704 };
33705
33706 Point.prototype._projDbl = function _projDbl() {
33707 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
33708 // #doubling-dbl-2008-bbjlp
33709 // #doubling-dbl-2007-bl
33710 // and others
33711 // Generally 3M + 4S or 2M + 4S
33712
33713 // B = (X1 + Y1)^2
33714 var b = this.x.redAdd(this.y).redSqr();
33715 // C = X1^2
33716 var c = this.x.redSqr();
33717 // D = Y1^2
33718 var d = this.y.redSqr();
33719
33720 var nx;
33721 var ny;
33722 var nz;
33723 if (this.curve.twisted) {
33724 // E = a * C
33725 var e = this.curve._mulA(c);
33726 // F = E + D
33727 var f = e.redAdd(d);
33728 if (this.zOne) {
33729 // X3 = (B - C - D) * (F - 2)
33730 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
33731 // Y3 = F * (E - D)
33732 ny = f.redMul(e.redSub(d));
33733 // Z3 = F^2 - 2 * F
33734 nz = f.redSqr().redSub(f).redSub(f);
33735 } else {
33736 // H = Z1^2
33737 var h = this.z.redSqr();
33738 // J = F - 2 * H
33739 var j = f.redSub(h).redISub(h);
33740 // X3 = (B-C-D)*J
33741 nx = b.redSub(c).redISub(d).redMul(j);
33742 // Y3 = F * (E - D)
33743 ny = f.redMul(e.redSub(d));
33744 // Z3 = F * J
33745 nz = f.redMul(j);
33746 }
33747 } else {
33748 // E = C + D
33749 var e = c.redAdd(d);
33750 // H = (c * Z1)^2
33751 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
33752 // J = E - 2 * H
33753 var j = e.redSub(h).redSub(h);
33754 // X3 = c * (B - E) * J
33755 nx = this.curve._mulC(b.redISub(e)).redMul(j);
33756 // Y3 = c * E * (C - D)
33757 ny = this.curve._mulC(e).redMul(c.redISub(d));
33758 // Z3 = E * J
33759 nz = e.redMul(j);
33760 }
33761 return this.curve.point(nx, ny, nz);
33762 };
33763
33764 Point.prototype.dbl = function dbl() {
33765 if (this.isInfinity())
33766 return this;
33767
33768 // Double in extended coordinates
33769 if (this.curve.extended)
33770 return this._extDbl();
33771 else
33772 return this._projDbl();
33773 };
33774
33775 Point.prototype._extAdd = function _extAdd(p) {
33776 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
33777 // #addition-add-2008-hwcd-3
33778 // 8M
33779
33780 // A = (Y1 - X1) * (Y2 - X2)
33781 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
33782 // B = (Y1 + X1) * (Y2 + X2)
33783 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
33784 // C = T1 * k * T2
33785 var c = this.t.redMul(this.curve.dd).redMul(p.t);
33786 // D = Z1 * 2 * Z2
33787 var d = this.z.redMul(p.z.redAdd(p.z));
33788 // E = B - A
33789 var e = b.redSub(a);
33790 // F = D - C
33791 var f = d.redSub(c);
33792 // G = D + C
33793 var g = d.redAdd(c);
33794 // H = B + A
33795 var h = b.redAdd(a);
33796 // X3 = E * F
33797 var nx = e.redMul(f);
33798 // Y3 = G * H
33799 var ny = g.redMul(h);
33800 // T3 = E * H
33801 var nt = e.redMul(h);
33802 // Z3 = F * G
33803 var nz = f.redMul(g);
33804 return this.curve.point(nx, ny, nz, nt);
33805 };
33806
33807 Point.prototype._projAdd = function _projAdd(p) {
33808 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
33809 // #addition-add-2008-bbjlp
33810 // #addition-add-2007-bl
33811 // 10M + 1S
33812
33813 // A = Z1 * Z2
33814 var a = this.z.redMul(p.z);
33815 // B = A^2
33816 var b = a.redSqr();
33817 // C = X1 * X2
33818 var c = this.x.redMul(p.x);
33819 // D = Y1 * Y2
33820 var d = this.y.redMul(p.y);
33821 // E = d * C * D
33822 var e = this.curve.d.redMul(c).redMul(d);
33823 // F = B - E
33824 var f = b.redSub(e);
33825 // G = B + E
33826 var g = b.redAdd(e);
33827 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
33828 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
33829 var nx = a.redMul(f).redMul(tmp);
33830 var ny;
33831 var nz;
33832 if (this.curve.twisted) {
33833 // Y3 = A * G * (D - a * C)
33834 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
33835 // Z3 = F * G
33836 nz = f.redMul(g);
33837 } else {
33838 // Y3 = A * G * (D - C)
33839 ny = a.redMul(g).redMul(d.redSub(c));
33840 // Z3 = c * F * G
33841 nz = this.curve._mulC(f).redMul(g);
33842 }
33843 return this.curve.point(nx, ny, nz);
33844 };
33845
33846 Point.prototype.add = function add(p) {
33847 if (this.isInfinity())
33848 return p;
33849 if (p.isInfinity())
33850 return this;
33851
33852 if (this.curve.extended)
33853 return this._extAdd(p);
33854 else
33855 return this._projAdd(p);
33856 };
33857
33858 Point.prototype.mul = function mul(k) {
33859 if (this._hasDoubles(k))
33860 return this.curve._fixedNafMul(this, k);
33861 else
33862 return this.curve._wnafMul(this, k);
33863 };
33864
33865 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
33866 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
33867 };
33868
33869 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
33870 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
33871 };
33872
33873 Point.prototype.normalize = function normalize() {
33874 if (this.zOne)
33875 return this;
33876
33877 // Normalize coordinates
33878 var zi = this.z.redInvm();
33879 this.x = this.x.redMul(zi);
33880 this.y = this.y.redMul(zi);
33881 if (this.t)
33882 this.t = this.t.redMul(zi);
33883 this.z = this.curve.one;
33884 this.zOne = true;
33885 return this;
33886 };
33887
33888 Point.prototype.neg = function neg() {
33889 return this.curve.point(this.x.redNeg(),
33890 this.y,
33891 this.z,
33892 this.t && this.t.redNeg());
33893 };
33894
33895 Point.prototype.getX = function getX() {
33896 this.normalize();
33897 return this.x.fromRed();
33898 };
33899
33900 Point.prototype.getY = function getY() {
33901 this.normalize();
33902 return this.y.fromRed();
33903 };
33904
33905 Point.prototype.eq = function eq(other) {
33906 return this === other ||
33907 this.getX().cmp(other.getX()) === 0 &&
33908 this.getY().cmp(other.getY()) === 0;
33909 };
33910
33911 Point.prototype.eqXToP = function eqXToP(x) {
33912 var rx = x.toRed(this.curve.red).redMul(this.z);
33913 if (this.x.cmp(rx) === 0)
33914 return true;
33915
33916 var xc = x.clone();
33917 var t = this.curve.redN.redMul(this.z);
33918 for (;;) {
33919 xc.iadd(this.curve.n);
33920 if (xc.cmp(this.curve.p) >= 0)
33921 return false;
33922
33923 rx.redIAdd(t);
33924 if (this.x.cmp(rx) === 0)
33925 return true;
33926 }
33927 return false;
33928 };
33929
33930 // Compatibility with BaseCurve
33931 Point.prototype.toP = Point.prototype.normalize;
33932 Point.prototype.mixedAdd = Point.prototype.add;
33933
33934 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],42:[function(require,module,exports){
33935 'use strict';
33936
33937 var curve = exports;
33938
33939 curve.base = require('./base');
33940 curve.short = require('./short');
33941 curve.mont = require('./mont');
33942 curve.edwards = require('./edwards');
33943
33944 },{"./base":40,"./edwards":41,"./mont":43,"./short":44}],43:[function(require,module,exports){
33945 'use strict';
33946
33947 var curve = require('../curve');
33948 var BN = require('bn.js');
33949 var inherits = require('inherits');
33950 var Base = curve.base;
33951
33952 var elliptic = require('../../elliptic');
33953 var utils = elliptic.utils;
33954
33955 function MontCurve(conf) {
33956 Base.call(this, 'mont', conf);
33957
33958 this.a = new BN(conf.a, 16).toRed(this.red);
33959 this.b = new BN(conf.b, 16).toRed(this.red);
33960 this.i4 = new BN(4).toRed(this.red).redInvm();
33961 this.two = new BN(2).toRed(this.red);
33962 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
33963 }
33964 inherits(MontCurve, Base);
33965 module.exports = MontCurve;
33966
33967 MontCurve.prototype.validate = function validate(point) {
33968 var x = point.normalize().x;
33969 var x2 = x.redSqr();
33970 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
33971 var y = rhs.redSqrt();
33972
33973 return y.redSqr().cmp(rhs) === 0;
33974 };
33975
33976 function Point(curve, x, z) {
33977 Base.BasePoint.call(this, curve, 'projective');
33978 if (x === null && z === null) {
33979 this.x = this.curve.one;
33980 this.z = this.curve.zero;
33981 } else {
33982 this.x = new BN(x, 16);
33983 this.z = new BN(z, 16);
33984 if (!this.x.red)
33985 this.x = this.x.toRed(this.curve.red);
33986 if (!this.z.red)
33987 this.z = this.z.toRed(this.curve.red);
33988 }
33989 }
33990 inherits(Point, Base.BasePoint);
33991
33992 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
33993 return this.point(utils.toArray(bytes, enc), 1);
33994 };
33995
33996 MontCurve.prototype.point = function point(x, z) {
33997 return new Point(this, x, z);
33998 };
33999
34000 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
34001 return Point.fromJSON(this, obj);
34002 };
34003
34004 Point.prototype.precompute = function precompute() {
34005 // No-op
34006 };
34007
34008 Point.prototype._encode = function _encode() {
34009 return this.getX().toArray('be', this.curve.p.byteLength());
34010 };
34011
34012 Point.fromJSON = function fromJSON(curve, obj) {
34013 return new Point(curve, obj[0], obj[1] || curve.one);
34014 };
34015
34016 Point.prototype.inspect = function inspect() {
34017 if (this.isInfinity())
34018 return '<EC Point Infinity>';
34019 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
34020 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
34021 };
34022
34023 Point.prototype.isInfinity = function isInfinity() {
34024 // XXX This code assumes that zero is always zero in red
34025 return this.z.cmpn(0) === 0;
34026 };
34027
34028 Point.prototype.dbl = function dbl() {
34029 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
34030 // 2M + 2S + 4A
34031
34032 // A = X1 + Z1
34033 var a = this.x.redAdd(this.z);
34034 // AA = A^2
34035 var aa = a.redSqr();
34036 // B = X1 - Z1
34037 var b = this.x.redSub(this.z);
34038 // BB = B^2
34039 var bb = b.redSqr();
34040 // C = AA - BB
34041 var c = aa.redSub(bb);
34042 // X3 = AA * BB
34043 var nx = aa.redMul(bb);
34044 // Z3 = C * (BB + A24 * C)
34045 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
34046 return this.curve.point(nx, nz);
34047 };
34048
34049 Point.prototype.add = function add() {
34050 throw new Error('Not supported on Montgomery curve');
34051 };
34052
34053 Point.prototype.diffAdd = function diffAdd(p, diff) {
34054 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
34055 // 4M + 2S + 6A
34056
34057 // A = X2 + Z2
34058 var a = this.x.redAdd(this.z);
34059 // B = X2 - Z2
34060 var b = this.x.redSub(this.z);
34061 // C = X3 + Z3
34062 var c = p.x.redAdd(p.z);
34063 // D = X3 - Z3
34064 var d = p.x.redSub(p.z);
34065 // DA = D * A
34066 var da = d.redMul(a);
34067 // CB = C * B
34068 var cb = c.redMul(b);
34069 // X5 = Z1 * (DA + CB)^2
34070 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
34071 // Z5 = X1 * (DA - CB)^2
34072 var nz = diff.x.redMul(da.redISub(cb).redSqr());
34073 return this.curve.point(nx, nz);
34074 };
34075
34076 Point.prototype.mul = function mul(k) {
34077 var t = k.clone();
34078 var a = this; // (N / 2) * Q + Q
34079 var b = this.curve.point(null, null); // (N / 2) * Q
34080 var c = this; // Q
34081
34082 for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
34083 bits.push(t.andln(1));
34084
34085 for (var i = bits.length - 1; i >= 0; i--) {
34086 if (bits[i] === 0) {
34087 // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
34088 a = a.diffAdd(b, c);
34089 // N * Q = 2 * ((N / 2) * Q + Q))
34090 b = b.dbl();
34091 } else {
34092 // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
34093 b = a.diffAdd(b, c);
34094 // N * Q + Q = 2 * ((N / 2) * Q + Q)
34095 a = a.dbl();
34096 }
34097 }
34098 return b;
34099 };
34100
34101 Point.prototype.mulAdd = function mulAdd() {
34102 throw new Error('Not supported on Montgomery curve');
34103 };
34104
34105 Point.prototype.jumlAdd = function jumlAdd() {
34106 throw new Error('Not supported on Montgomery curve');
34107 };
34108
34109 Point.prototype.eq = function eq(other) {
34110 return this.getX().cmp(other.getX()) === 0;
34111 };
34112
34113 Point.prototype.normalize = function normalize() {
34114 this.x = this.x.redMul(this.z.redInvm());
34115 this.z = this.curve.one;
34116 return this;
34117 };
34118
34119 Point.prototype.getX = function getX() {
34120 // Normalize coordinates
34121 this.normalize();
34122
34123 return this.x.fromRed();
34124 };
34125
34126 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],44:[function(require,module,exports){
34127 'use strict';
34128
34129 var curve = require('../curve');
34130 var elliptic = require('../../elliptic');
34131 var BN = require('bn.js');
34132 var inherits = require('inherits');
34133 var Base = curve.base;
34134
34135 var assert = elliptic.utils.assert;
34136
34137 function ShortCurve(conf) {
34138 Base.call(this, 'short', conf);
34139
34140 this.a = new BN(conf.a, 16).toRed(this.red);
34141 this.b = new BN(conf.b, 16).toRed(this.red);
34142 this.tinv = this.two.redInvm();
34143
34144 this.zeroA = this.a.fromRed().cmpn(0) === 0;
34145 this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
34146
34147 // If the curve is endomorphic, precalculate beta and lambda
34148 this.endo = this._getEndomorphism(conf);
34149 this._endoWnafT1 = new Array(4);
34150 this._endoWnafT2 = new Array(4);
34151 }
34152 inherits(ShortCurve, Base);
34153 module.exports = ShortCurve;
34154
34155 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
34156 // No efficient endomorphism
34157 if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
34158 return;
34159
34160 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
34161 var beta;
34162 var lambda;
34163 if (conf.beta) {
34164 beta = new BN(conf.beta, 16).toRed(this.red);
34165 } else {
34166 var betas = this._getEndoRoots(this.p);
34167 // Choose the smallest beta
34168 beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
34169 beta = beta.toRed(this.red);
34170 }
34171 if (conf.lambda) {
34172 lambda = new BN(conf.lambda, 16);
34173 } else {
34174 // Choose the lambda that is matching selected beta
34175 var lambdas = this._getEndoRoots(this.n);
34176 if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
34177 lambda = lambdas[0];
34178 } else {
34179 lambda = lambdas[1];
34180 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
34181 }
34182 }
34183
34184 // Get basis vectors, used for balanced length-two representation
34185 var basis;
34186 if (conf.basis) {
34187 basis = conf.basis.map(function(vec) {
34188 return {
34189 a: new BN(vec.a, 16),
34190 b: new BN(vec.b, 16)
34191 };
34192 });
34193 } else {
34194 basis = this._getEndoBasis(lambda);
34195 }
34196
34197 return {
34198 beta: beta,
34199 lambda: lambda,
34200 basis: basis
34201 };
34202 };
34203
34204 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
34205 // Find roots of for x^2 + x + 1 in F
34206 // Root = (-1 +- Sqrt(-3)) / 2
34207 //
34208 var red = num === this.p ? this.red : BN.mont(num);
34209 var tinv = new BN(2).toRed(red).redInvm();
34210 var ntinv = tinv.redNeg();
34211
34212 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
34213
34214 var l1 = ntinv.redAdd(s).fromRed();
34215 var l2 = ntinv.redSub(s).fromRed();
34216 return [ l1, l2 ];
34217 };
34218
34219 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
34220 // aprxSqrt >= sqrt(this.n)
34221 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
34222
34223 // 3.74
34224 // Run EGCD, until r(L + 1) < aprxSqrt
34225 var u = lambda;
34226 var v = this.n.clone();
34227 var x1 = new BN(1);
34228 var y1 = new BN(0);
34229 var x2 = new BN(0);
34230 var y2 = new BN(1);
34231
34232 // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
34233 var a0;
34234 var b0;
34235 // First vector
34236 var a1;
34237 var b1;
34238 // Second vector
34239 var a2;
34240 var b2;
34241
34242 var prevR;
34243 var i = 0;
34244 var r;
34245 var x;
34246 while (u.cmpn(0) !== 0) {
34247 var q = v.div(u);
34248 r = v.sub(q.mul(u));
34249 x = x2.sub(q.mul(x1));
34250 var y = y2.sub(q.mul(y1));
34251
34252 if (!a1 && r.cmp(aprxSqrt) < 0) {
34253 a0 = prevR.neg();
34254 b0 = x1;
34255 a1 = r.neg();
34256 b1 = x;
34257 } else if (a1 && ++i === 2) {
34258 break;
34259 }
34260 prevR = r;
34261
34262 v = u;
34263 u = r;
34264 x2 = x1;
34265 x1 = x;
34266 y2 = y1;
34267 y1 = y;
34268 }
34269 a2 = r.neg();
34270 b2 = x;
34271
34272 var len1 = a1.sqr().add(b1.sqr());
34273 var len2 = a2.sqr().add(b2.sqr());
34274 if (len2.cmp(len1) >= 0) {
34275 a2 = a0;
34276 b2 = b0;
34277 }
34278
34279 // Normalize signs
34280 if (a1.negative) {
34281 a1 = a1.neg();
34282 b1 = b1.neg();
34283 }
34284 if (a2.negative) {
34285 a2 = a2.neg();
34286 b2 = b2.neg();
34287 }
34288
34289 return [
34290 { a: a1, b: b1 },
34291 { a: a2, b: b2 }
34292 ];
34293 };
34294
34295 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
34296 var basis = this.endo.basis;
34297 var v1 = basis[0];
34298 var v2 = basis[1];
34299
34300 var c1 = v2.b.mul(k).divRound(this.n);
34301 var c2 = v1.b.neg().mul(k).divRound(this.n);
34302
34303 var p1 = c1.mul(v1.a);
34304 var p2 = c2.mul(v2.a);
34305 var q1 = c1.mul(v1.b);
34306 var q2 = c2.mul(v2.b);
34307
34308 // Calculate answer
34309 var k1 = k.sub(p1).sub(p2);
34310 var k2 = q1.add(q2).neg();
34311 return { k1: k1, k2: k2 };
34312 };
34313
34314 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
34315 x = new BN(x, 16);
34316 if (!x.red)
34317 x = x.toRed(this.red);
34318
34319 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
34320 var y = y2.redSqrt();
34321 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
34322 throw new Error('invalid point');
34323
34324 // XXX Is there any way to tell if the number is odd without converting it
34325 // to non-red form?
34326 var isOdd = y.fromRed().isOdd();
34327 if (odd && !isOdd || !odd && isOdd)
34328 y = y.redNeg();
34329
34330 return this.point(x, y);
34331 };
34332
34333 ShortCurve.prototype.validate = function validate(point) {
34334 if (point.inf)
34335 return true;
34336
34337 var x = point.x;
34338 var y = point.y;
34339
34340 var ax = this.a.redMul(x);
34341 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
34342 return y.redSqr().redISub(rhs).cmpn(0) === 0;
34343 };
34344
34345 ShortCurve.prototype._endoWnafMulAdd =
34346 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
34347 var npoints = this._endoWnafT1;
34348 var ncoeffs = this._endoWnafT2;
34349 for (var i = 0; i < points.length; i++) {
34350 var split = this._endoSplit(coeffs[i]);
34351 var p = points[i];
34352 var beta = p._getBeta();
34353
34354 if (split.k1.negative) {
34355 split.k1.ineg();
34356 p = p.neg(true);
34357 }
34358 if (split.k2.negative) {
34359 split.k2.ineg();
34360 beta = beta.neg(true);
34361 }
34362
34363 npoints[i * 2] = p;
34364 npoints[i * 2 + 1] = beta;
34365 ncoeffs[i * 2] = split.k1;
34366 ncoeffs[i * 2 + 1] = split.k2;
34367 }
34368 var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
34369
34370 // Clean-up references to points and coefficients
34371 for (var j = 0; j < i * 2; j++) {
34372 npoints[j] = null;
34373 ncoeffs[j] = null;
34374 }
34375 return res;
34376 };
34377
34378 function Point(curve, x, y, isRed) {
34379 Base.BasePoint.call(this, curve, 'affine');
34380 if (x === null && y === null) {
34381 this.x = null;
34382 this.y = null;
34383 this.inf = true;
34384 } else {
34385 this.x = new BN(x, 16);
34386 this.y = new BN(y, 16);
34387 // Force redgomery representation when loading from JSON
34388 if (isRed) {
34389 this.x.forceRed(this.curve.red);
34390 this.y.forceRed(this.curve.red);
34391 }
34392 if (!this.x.red)
34393 this.x = this.x.toRed(this.curve.red);
34394 if (!this.y.red)
34395 this.y = this.y.toRed(this.curve.red);
34396 this.inf = false;
34397 }
34398 }
34399 inherits(Point, Base.BasePoint);
34400
34401 ShortCurve.prototype.point = function point(x, y, isRed) {
34402 return new Point(this, x, y, isRed);
34403 };
34404
34405 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
34406 return Point.fromJSON(this, obj, red);
34407 };
34408
34409 Point.prototype._getBeta = function _getBeta() {
34410 if (!this.curve.endo)
34411 return;
34412
34413 var pre = this.precomputed;
34414 if (pre && pre.beta)
34415 return pre.beta;
34416
34417 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
34418 if (pre) {
34419 var curve = this.curve;
34420 var endoMul = function(p) {
34421 return curve.point(p.x.redMul(curve.endo.beta), p.y);
34422 };
34423 pre.beta = beta;
34424 beta.precomputed = {
34425 beta: null,
34426 naf: pre.naf && {
34427 wnd: pre.naf.wnd,
34428 points: pre.naf.points.map(endoMul)
34429 },
34430 doubles: pre.doubles && {
34431 step: pre.doubles.step,
34432 points: pre.doubles.points.map(endoMul)
34433 }
34434 };
34435 }
34436 return beta;
34437 };
34438
34439 Point.prototype.toJSON = function toJSON() {
34440 if (!this.precomputed)
34441 return [ this.x, this.y ];
34442
34443 return [ this.x, this.y, this.precomputed && {
34444 doubles: this.precomputed.doubles && {
34445 step: this.precomputed.doubles.step,
34446 points: this.precomputed.doubles.points.slice(1)
34447 },
34448 naf: this.precomputed.naf && {
34449 wnd: this.precomputed.naf.wnd,
34450 points: this.precomputed.naf.points.slice(1)
34451 }
34452 } ];
34453 };
34454
34455 Point.fromJSON = function fromJSON(curve, obj, red) {
34456 if (typeof obj === 'string')
34457 obj = JSON.parse(obj);
34458 var res = curve.point(obj[0], obj[1], red);
34459 if (!obj[2])
34460 return res;
34461
34462 function obj2point(obj) {
34463 return curve.point(obj[0], obj[1], red);
34464 }
34465
34466 var pre = obj[2];
34467 res.precomputed = {
34468 beta: null,
34469 doubles: pre.doubles && {
34470 step: pre.doubles.step,
34471 points: [ res ].concat(pre.doubles.points.map(obj2point))
34472 },
34473 naf: pre.naf && {
34474 wnd: pre.naf.wnd,
34475 points: [ res ].concat(pre.naf.points.map(obj2point))
34476 }
34477 };
34478 return res;
34479 };
34480
34481 Point.prototype.inspect = function inspect() {
34482 if (this.isInfinity())
34483 return '<EC Point Infinity>';
34484 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
34485 ' y: ' + this.y.fromRed().toString(16, 2) + '>';
34486 };
34487
34488 Point.prototype.isInfinity = function isInfinity() {
34489 return this.inf;
34490 };
34491
34492 Point.prototype.add = function add(p) {
34493 // O + P = P
34494 if (this.inf)
34495 return p;
34496
34497 // P + O = P
34498 if (p.inf)
34499 return this;
34500
34501 // P + P = 2P
34502 if (this.eq(p))
34503 return this.dbl();
34504
34505 // P + (-P) = O
34506 if (this.neg().eq(p))
34507 return this.curve.point(null, null);
34508
34509 // P + Q = O
34510 if (this.x.cmp(p.x) === 0)
34511 return this.curve.point(null, null);
34512
34513 var c = this.y.redSub(p.y);
34514 if (c.cmpn(0) !== 0)
34515 c = c.redMul(this.x.redSub(p.x).redInvm());
34516 var nx = c.redSqr().redISub(this.x).redISub(p.x);
34517 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
34518 return this.curve.point(nx, ny);
34519 };
34520
34521 Point.prototype.dbl = function dbl() {
34522 if (this.inf)
34523 return this;
34524
34525 // 2P = O
34526 var ys1 = this.y.redAdd(this.y);
34527 if (ys1.cmpn(0) === 0)
34528 return this.curve.point(null, null);
34529
34530 var a = this.curve.a;
34531
34532 var x2 = this.x.redSqr();
34533 var dyinv = ys1.redInvm();
34534 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
34535
34536 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
34537 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
34538 return this.curve.point(nx, ny);
34539 };
34540
34541 Point.prototype.getX = function getX() {
34542 return this.x.fromRed();
34543 };
34544
34545 Point.prototype.getY = function getY() {
34546 return this.y.fromRed();
34547 };
34548
34549 Point.prototype.mul = function mul(k) {
34550 k = new BN(k, 16);
34551
34552 if (this._hasDoubles(k))
34553 return this.curve._fixedNafMul(this, k);
34554 else if (this.curve.endo)
34555 return this.curve._endoWnafMulAdd([ this ], [ k ]);
34556 else
34557 return this.curve._wnafMul(this, k);
34558 };
34559
34560 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
34561 var points = [ this, p2 ];
34562 var coeffs = [ k1, k2 ];
34563 if (this.curve.endo)
34564 return this.curve._endoWnafMulAdd(points, coeffs);
34565 else
34566 return this.curve._wnafMulAdd(1, points, coeffs, 2);
34567 };
34568
34569 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
34570 var points = [ this, p2 ];
34571 var coeffs = [ k1, k2 ];
34572 if (this.curve.endo)
34573 return this.curve._endoWnafMulAdd(points, coeffs, true);
34574 else
34575 return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
34576 };
34577
34578 Point.prototype.eq = function eq(p) {
34579 return this === p ||
34580 this.inf === p.inf &&
34581 (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
34582 };
34583
34584 Point.prototype.neg = function neg(_precompute) {
34585 if (this.inf)
34586 return this;
34587
34588 var res = this.curve.point(this.x, this.y.redNeg());
34589 if (_precompute && this.precomputed) {
34590 var pre = this.precomputed;
34591 var negate = function(p) {
34592 return p.neg();
34593 };
34594 res.precomputed = {
34595 naf: pre.naf && {
34596 wnd: pre.naf.wnd,
34597 points: pre.naf.points.map(negate)
34598 },
34599 doubles: pre.doubles && {
34600 step: pre.doubles.step,
34601 points: pre.doubles.points.map(negate)
34602 }
34603 };
34604 }
34605 return res;
34606 };
34607
34608 Point.prototype.toJ = function toJ() {
34609 if (this.inf)
34610 return this.curve.jpoint(null, null, null);
34611
34612 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
34613 return res;
34614 };
34615
34616 function JPoint(curve, x, y, z) {
34617 Base.BasePoint.call(this, curve, 'jacobian');
34618 if (x === null && y === null && z === null) {
34619 this.x = this.curve.one;
34620 this.y = this.curve.one;
34621 this.z = new BN(0);
34622 } else {
34623 this.x = new BN(x, 16);
34624 this.y = new BN(y, 16);
34625 this.z = new BN(z, 16);
34626 }
34627 if (!this.x.red)
34628 this.x = this.x.toRed(this.curve.red);
34629 if (!this.y.red)
34630 this.y = this.y.toRed(this.curve.red);
34631 if (!this.z.red)
34632 this.z = this.z.toRed(this.curve.red);
34633
34634 this.zOne = this.z === this.curve.one;
34635 }
34636 inherits(JPoint, Base.BasePoint);
34637
34638 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
34639 return new JPoint(this, x, y, z);
34640 };
34641
34642 JPoint.prototype.toP = function toP() {
34643 if (this.isInfinity())
34644 return this.curve.point(null, null);
34645
34646 var zinv = this.z.redInvm();
34647 var zinv2 = zinv.redSqr();
34648 var ax = this.x.redMul(zinv2);
34649 var ay = this.y.redMul(zinv2).redMul(zinv);
34650
34651 return this.curve.point(ax, ay);
34652 };
34653
34654 JPoint.prototype.neg = function neg() {
34655 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
34656 };
34657
34658 JPoint.prototype.add = function add(p) {
34659 // O + P = P
34660 if (this.isInfinity())
34661 return p;
34662
34663 // P + O = P
34664 if (p.isInfinity())
34665 return this;
34666
34667 // 12M + 4S + 7A
34668 var pz2 = p.z.redSqr();
34669 var z2 = this.z.redSqr();
34670 var u1 = this.x.redMul(pz2);
34671 var u2 = p.x.redMul(z2);
34672 var s1 = this.y.redMul(pz2.redMul(p.z));
34673 var s2 = p.y.redMul(z2.redMul(this.z));
34674
34675 var h = u1.redSub(u2);
34676 var r = s1.redSub(s2);
34677 if (h.cmpn(0) === 0) {
34678 if (r.cmpn(0) !== 0)
34679 return this.curve.jpoint(null, null, null);
34680 else
34681 return this.dbl();
34682 }
34683
34684 var h2 = h.redSqr();
34685 var h3 = h2.redMul(h);
34686 var v = u1.redMul(h2);
34687
34688 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
34689 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
34690 var nz = this.z.redMul(p.z).redMul(h);
34691
34692 return this.curve.jpoint(nx, ny, nz);
34693 };
34694
34695 JPoint.prototype.mixedAdd = function mixedAdd(p) {
34696 // O + P = P
34697 if (this.isInfinity())
34698 return p.toJ();
34699
34700 // P + O = P
34701 if (p.isInfinity())
34702 return this;
34703
34704 // 8M + 3S + 7A
34705 var z2 = this.z.redSqr();
34706 var u1 = this.x;
34707 var u2 = p.x.redMul(z2);
34708 var s1 = this.y;
34709 var s2 = p.y.redMul(z2).redMul(this.z);
34710
34711 var h = u1.redSub(u2);
34712 var r = s1.redSub(s2);
34713 if (h.cmpn(0) === 0) {
34714 if (r.cmpn(0) !== 0)
34715 return this.curve.jpoint(null, null, null);
34716 else
34717 return this.dbl();
34718 }
34719
34720 var h2 = h.redSqr();
34721 var h3 = h2.redMul(h);
34722 var v = u1.redMul(h2);
34723
34724 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
34725 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
34726 var nz = this.z.redMul(h);
34727
34728 return this.curve.jpoint(nx, ny, nz);
34729 };
34730
34731 JPoint.prototype.dblp = function dblp(pow) {
34732 if (pow === 0)
34733 return this;
34734 if (this.isInfinity())
34735 return this;
34736 if (!pow)
34737 return this.dbl();
34738
34739 if (this.curve.zeroA || this.curve.threeA) {
34740 var r = this;
34741 for (var i = 0; i < pow; i++)
34742 r = r.dbl();
34743 return r;
34744 }
34745
34746 // 1M + 2S + 1A + N * (4S + 5M + 8A)
34747 // N = 1 => 6M + 6S + 9A
34748 var a = this.curve.a;
34749 var tinv = this.curve.tinv;
34750
34751 var jx = this.x;
34752 var jy = this.y;
34753 var jz = this.z;
34754 var jz4 = jz.redSqr().redSqr();
34755
34756 // Reuse results
34757 var jyd = jy.redAdd(jy);
34758 for (var i = 0; i < pow; i++) {
34759 var jx2 = jx.redSqr();
34760 var jyd2 = jyd.redSqr();
34761 var jyd4 = jyd2.redSqr();
34762 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
34763
34764 var t1 = jx.redMul(jyd2);
34765 var nx = c.redSqr().redISub(t1.redAdd(t1));
34766 var t2 = t1.redISub(nx);
34767 var dny = c.redMul(t2);
34768 dny = dny.redIAdd(dny).redISub(jyd4);
34769 var nz = jyd.redMul(jz);
34770 if (i + 1 < pow)
34771 jz4 = jz4.redMul(jyd4);
34772
34773 jx = nx;
34774 jz = nz;
34775 jyd = dny;
34776 }
34777
34778 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
34779 };
34780
34781 JPoint.prototype.dbl = function dbl() {
34782 if (this.isInfinity())
34783 return this;
34784
34785 if (this.curve.zeroA)
34786 return this._zeroDbl();
34787 else if (this.curve.threeA)
34788 return this._threeDbl();
34789 else
34790 return this._dbl();
34791 };
34792
34793 JPoint.prototype._zeroDbl = function _zeroDbl() {
34794 var nx;
34795 var ny;
34796 var nz;
34797 // Z = 1
34798 if (this.zOne) {
34799 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
34800 // #doubling-mdbl-2007-bl
34801 // 1M + 5S + 14A
34802
34803 // XX = X1^2
34804 var xx = this.x.redSqr();
34805 // YY = Y1^2
34806 var yy = this.y.redSqr();
34807 // YYYY = YY^2
34808 var yyyy = yy.redSqr();
34809 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
34810 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34811 s = s.redIAdd(s);
34812 // M = 3 * XX + a; a = 0
34813 var m = xx.redAdd(xx).redIAdd(xx);
34814 // T = M ^ 2 - 2*S
34815 var t = m.redSqr().redISub(s).redISub(s);
34816
34817 // 8 * YYYY
34818 var yyyy8 = yyyy.redIAdd(yyyy);
34819 yyyy8 = yyyy8.redIAdd(yyyy8);
34820 yyyy8 = yyyy8.redIAdd(yyyy8);
34821
34822 // X3 = T
34823 nx = t;
34824 // Y3 = M * (S - T) - 8 * YYYY
34825 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
34826 // Z3 = 2*Y1
34827 nz = this.y.redAdd(this.y);
34828 } else {
34829 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
34830 // #doubling-dbl-2009-l
34831 // 2M + 5S + 13A
34832
34833 // A = X1^2
34834 var a = this.x.redSqr();
34835 // B = Y1^2
34836 var b = this.y.redSqr();
34837 // C = B^2
34838 var c = b.redSqr();
34839 // D = 2 * ((X1 + B)^2 - A - C)
34840 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
34841 d = d.redIAdd(d);
34842 // E = 3 * A
34843 var e = a.redAdd(a).redIAdd(a);
34844 // F = E^2
34845 var f = e.redSqr();
34846
34847 // 8 * C
34848 var c8 = c.redIAdd(c);
34849 c8 = c8.redIAdd(c8);
34850 c8 = c8.redIAdd(c8);
34851
34852 // X3 = F - 2 * D
34853 nx = f.redISub(d).redISub(d);
34854 // Y3 = E * (D - X3) - 8 * C
34855 ny = e.redMul(d.redISub(nx)).redISub(c8);
34856 // Z3 = 2 * Y1 * Z1
34857 nz = this.y.redMul(this.z);
34858 nz = nz.redIAdd(nz);
34859 }
34860
34861 return this.curve.jpoint(nx, ny, nz);
34862 };
34863
34864 JPoint.prototype._threeDbl = function _threeDbl() {
34865 var nx;
34866 var ny;
34867 var nz;
34868 // Z = 1
34869 if (this.zOne) {
34870 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
34871 // #doubling-mdbl-2007-bl
34872 // 1M + 5S + 15A
34873
34874 // XX = X1^2
34875 var xx = this.x.redSqr();
34876 // YY = Y1^2
34877 var yy = this.y.redSqr();
34878 // YYYY = YY^2
34879 var yyyy = yy.redSqr();
34880 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
34881 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34882 s = s.redIAdd(s);
34883 // M = 3 * XX + a
34884 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
34885 // T = M^2 - 2 * S
34886 var t = m.redSqr().redISub(s).redISub(s);
34887 // X3 = T
34888 nx = t;
34889 // Y3 = M * (S - T) - 8 * YYYY
34890 var yyyy8 = yyyy.redIAdd(yyyy);
34891 yyyy8 = yyyy8.redIAdd(yyyy8);
34892 yyyy8 = yyyy8.redIAdd(yyyy8);
34893 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
34894 // Z3 = 2 * Y1
34895 nz = this.y.redAdd(this.y);
34896 } else {
34897 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
34898 // 3M + 5S
34899
34900 // delta = Z1^2
34901 var delta = this.z.redSqr();
34902 // gamma = Y1^2
34903 var gamma = this.y.redSqr();
34904 // beta = X1 * gamma
34905 var beta = this.x.redMul(gamma);
34906 // alpha = 3 * (X1 - delta) * (X1 + delta)
34907 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
34908 alpha = alpha.redAdd(alpha).redIAdd(alpha);
34909 // X3 = alpha^2 - 8 * beta
34910 var beta4 = beta.redIAdd(beta);
34911 beta4 = beta4.redIAdd(beta4);
34912 var beta8 = beta4.redAdd(beta4);
34913 nx = alpha.redSqr().redISub(beta8);
34914 // Z3 = (Y1 + Z1)^2 - gamma - delta
34915 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
34916 // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
34917 var ggamma8 = gamma.redSqr();
34918 ggamma8 = ggamma8.redIAdd(ggamma8);
34919 ggamma8 = ggamma8.redIAdd(ggamma8);
34920 ggamma8 = ggamma8.redIAdd(ggamma8);
34921 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
34922 }
34923
34924 return this.curve.jpoint(nx, ny, nz);
34925 };
34926
34927 JPoint.prototype._dbl = function _dbl() {
34928 var a = this.curve.a;
34929
34930 // 4M + 6S + 10A
34931 var jx = this.x;
34932 var jy = this.y;
34933 var jz = this.z;
34934 var jz4 = jz.redSqr().redSqr();
34935
34936 var jx2 = jx.redSqr();
34937 var jy2 = jy.redSqr();
34938
34939 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
34940
34941 var jxd4 = jx.redAdd(jx);
34942 jxd4 = jxd4.redIAdd(jxd4);
34943 var t1 = jxd4.redMul(jy2);
34944 var nx = c.redSqr().redISub(t1.redAdd(t1));
34945 var t2 = t1.redISub(nx);
34946
34947 var jyd8 = jy2.redSqr();
34948 jyd8 = jyd8.redIAdd(jyd8);
34949 jyd8 = jyd8.redIAdd(jyd8);
34950 jyd8 = jyd8.redIAdd(jyd8);
34951 var ny = c.redMul(t2).redISub(jyd8);
34952 var nz = jy.redAdd(jy).redMul(jz);
34953
34954 return this.curve.jpoint(nx, ny, nz);
34955 };
34956
34957 JPoint.prototype.trpl = function trpl() {
34958 if (!this.curve.zeroA)
34959 return this.dbl().add(this);
34960
34961 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
34962 // 5M + 10S + ...
34963
34964 // XX = X1^2
34965 var xx = this.x.redSqr();
34966 // YY = Y1^2
34967 var yy = this.y.redSqr();
34968 // ZZ = Z1^2
34969 var zz = this.z.redSqr();
34970 // YYYY = YY^2
34971 var yyyy = yy.redSqr();
34972 // M = 3 * XX + a * ZZ2; a = 0
34973 var m = xx.redAdd(xx).redIAdd(xx);
34974 // MM = M^2
34975 var mm = m.redSqr();
34976 // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
34977 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34978 e = e.redIAdd(e);
34979 e = e.redAdd(e).redIAdd(e);
34980 e = e.redISub(mm);
34981 // EE = E^2
34982 var ee = e.redSqr();
34983 // T = 16*YYYY
34984 var t = yyyy.redIAdd(yyyy);
34985 t = t.redIAdd(t);
34986 t = t.redIAdd(t);
34987 t = t.redIAdd(t);
34988 // U = (M + E)^2 - MM - EE - T
34989 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
34990 // X3 = 4 * (X1 * EE - 4 * YY * U)
34991 var yyu4 = yy.redMul(u);
34992 yyu4 = yyu4.redIAdd(yyu4);
34993 yyu4 = yyu4.redIAdd(yyu4);
34994 var nx = this.x.redMul(ee).redISub(yyu4);
34995 nx = nx.redIAdd(nx);
34996 nx = nx.redIAdd(nx);
34997 // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
34998 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
34999 ny = ny.redIAdd(ny);
35000 ny = ny.redIAdd(ny);
35001 ny = ny.redIAdd(ny);
35002 // Z3 = (Z1 + E)^2 - ZZ - EE
35003 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
35004
35005 return this.curve.jpoint(nx, ny, nz);
35006 };
35007
35008 JPoint.prototype.mul = function mul(k, kbase) {
35009 k = new BN(k, kbase);
35010
35011 return this.curve._wnafMul(this, k);
35012 };
35013
35014 JPoint.prototype.eq = function eq(p) {
35015 if (p.type === 'affine')
35016 return this.eq(p.toJ());
35017
35018 if (this === p)
35019 return true;
35020
35021 // x1 * z2^2 == x2 * z1^2
35022 var z2 = this.z.redSqr();
35023 var pz2 = p.z.redSqr();
35024 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
35025 return false;
35026
35027 // y1 * z2^3 == y2 * z1^3
35028 var z3 = z2.redMul(this.z);
35029 var pz3 = pz2.redMul(p.z);
35030 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
35031 };
35032
35033 JPoint.prototype.eqXToP = function eqXToP(x) {
35034 var zs = this.z.redSqr();
35035 var rx = x.toRed(this.curve.red).redMul(zs);
35036 if (this.x.cmp(rx) === 0)
35037 return true;
35038
35039 var xc = x.clone();
35040 var t = this.curve.redN.redMul(zs);
35041 for (;;) {
35042 xc.iadd(this.curve.n);
35043 if (xc.cmp(this.curve.p) >= 0)
35044 return false;
35045
35046 rx.redIAdd(t);
35047 if (this.x.cmp(rx) === 0)
35048 return true;
35049 }
35050 return false;
35051 };
35052
35053 JPoint.prototype.inspect = function inspect() {
35054 if (this.isInfinity())
35055 return '<EC JPoint Infinity>';
35056 return '<EC JPoint x: ' + this.x.toString(16, 2) +
35057 ' y: ' + this.y.toString(16, 2) +
35058 ' z: ' + this.z.toString(16, 2) + '>';
35059 };
35060
35061 JPoint.prototype.isInfinity = function isInfinity() {
35062 // XXX This code assumes that zero is always zero in red
35063 return this.z.cmpn(0) === 0;
35064 };
35065
35066 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],45:[function(require,module,exports){
35067 'use strict';
35068
35069 var curves = exports;
35070
35071 var hash = require('hash.js');
35072 var elliptic = require('../elliptic');
35073
35074 var assert = elliptic.utils.assert;
35075
35076 function PresetCurve(options) {
35077 if (options.type === 'short')
35078 this.curve = new elliptic.curve.short(options);
35079 else if (options.type === 'edwards')
35080 this.curve = new elliptic.curve.edwards(options);
35081 else
35082 this.curve = new elliptic.curve.mont(options);
35083 this.g = this.curve.g;
35084 this.n = this.curve.n;
35085 this.hash = options.hash;
35086
35087 assert(this.g.validate(), 'Invalid curve');
35088 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
35089 }
35090 curves.PresetCurve = PresetCurve;
35091
35092 function defineCurve(name, options) {
35093 Object.defineProperty(curves, name, {
35094 configurable: true,
35095 enumerable: true,
35096 get: function() {
35097 var curve = new PresetCurve(options);
35098 Object.defineProperty(curves, name, {
35099 configurable: true,
35100 enumerable: true,
35101 value: curve
35102 });
35103 return curve;
35104 }
35105 });
35106 }
35107
35108 defineCurve('p192', {
35109 type: 'short',
35110 prime: 'p192',
35111 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
35112 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
35113 b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
35114 n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
35115 hash: hash.sha256,
35116 gRed: false,
35117 g: [
35118 '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
35119 '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
35120 ]
35121 });
35122
35123 defineCurve('p224', {
35124 type: 'short',
35125 prime: 'p224',
35126 p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
35127 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
35128 b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
35129 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
35130 hash: hash.sha256,
35131 gRed: false,
35132 g: [
35133 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
35134 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
35135 ]
35136 });
35137
35138 defineCurve('p256', {
35139 type: 'short',
35140 prime: null,
35141 p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
35142 a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
35143 b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
35144 n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
35145 hash: hash.sha256,
35146 gRed: false,
35147 g: [
35148 '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
35149 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
35150 ]
35151 });
35152
35153 defineCurve('p384', {
35154 type: 'short',
35155 prime: null,
35156 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35157 'fffffffe ffffffff 00000000 00000000 ffffffff',
35158 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35159 'fffffffe ffffffff 00000000 00000000 fffffffc',
35160 b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
35161 '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
35162 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
35163 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
35164 hash: hash.sha384,
35165 gRed: false,
35166 g: [
35167 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
35168 '5502f25d bf55296c 3a545e38 72760ab7',
35169 '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
35170 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
35171 ]
35172 });
35173
35174 defineCurve('p521', {
35175 type: 'short',
35176 prime: null,
35177 p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35178 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35179 'ffffffff ffffffff ffffffff ffffffff ffffffff',
35180 a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35181 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35182 'ffffffff ffffffff ffffffff ffffffff fffffffc',
35183 b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
35184 '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
35185 '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
35186 n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35187 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
35188 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
35189 hash: hash.sha512,
35190 gRed: false,
35191 g: [
35192 '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
35193 '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
35194 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
35195 '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
35196 '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
35197 '3fad0761 353c7086 a272c240 88be9476 9fd16650'
35198 ]
35199 });
35200
35201 defineCurve('curve25519', {
35202 type: 'mont',
35203 prime: 'p25519',
35204 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
35205 a: '76d06',
35206 b: '1',
35207 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
35208 hash: hash.sha256,
35209 gRed: false,
35210 g: [
35211 '9'
35212 ]
35213 });
35214
35215 defineCurve('ed25519', {
35216 type: 'edwards',
35217 prime: 'p25519',
35218 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
35219 a: '-1',
35220 c: '1',
35221 // -121665 * (121666^(-1)) (mod P)
35222 d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
35223 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
35224 hash: hash.sha256,
35225 gRed: false,
35226 g: [
35227 '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
35228
35229 // 4/5
35230 '6666666666666666666666666666666666666666666666666666666666666658'
35231 ]
35232 });
35233
35234 var pre;
35235 try {
35236 pre = require('./precomputed/secp256k1');
35237 } catch (e) {
35238 pre = undefined;
35239 }
35240
35241 defineCurve('secp256k1', {
35242 type: 'short',
35243 prime: 'k256',
35244 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
35245 a: '0',
35246 b: '7',
35247 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
35248 h: '1',
35249 hash: hash.sha256,
35250
35251 // Precomputed endomorphism
35252 beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
35253 lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
35254 basis: [
35255 {
35256 a: '3086d221a7d46bcde86c90e49284eb15',
35257 b: '-e4437ed6010e88286f547fa90abfe4c3'
35258 },
35259 {
35260 a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
35261 b: '3086d221a7d46bcde86c90e49284eb15'
35262 }
35263 ],
35264
35265 gRed: false,
35266 g: [
35267 '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
35268 '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
35269 pre
35270 ]
35271 });
35272
35273 },{"../elliptic":39,"./precomputed/secp256k1":53,"hash.js":57}],46:[function(require,module,exports){
35274 'use strict';
35275
35276 var BN = require('bn.js');
35277 var elliptic = require('../../elliptic');
35278 var utils = elliptic.utils;
35279 var assert = utils.assert;
35280
35281 var KeyPair = require('./key');
35282 var Signature = require('./signature');
35283
35284 function EC(options) {
35285 if (!(this instanceof EC))
35286 return new EC(options);
35287
35288 // Shortcut `elliptic.ec(curve-name)`
35289 if (typeof options === 'string') {
35290 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
35291
35292 options = elliptic.curves[options];
35293 }
35294
35295 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
35296 if (options instanceof elliptic.curves.PresetCurve)
35297 options = { curve: options };
35298
35299 this.curve = options.curve.curve;
35300 this.n = this.curve.n;
35301 this.nh = this.n.ushrn(1);
35302 this.g = this.curve.g;
35303
35304 // Point on curve
35305 this.g = options.curve.g;
35306 this.g.precompute(options.curve.n.bitLength() + 1);
35307
35308 // Hash for function for DRBG
35309 this.hash = options.hash || options.curve.hash;
35310 }
35311 module.exports = EC;
35312
35313 EC.prototype.keyPair = function keyPair(options) {
35314 return new KeyPair(this, options);
35315 };
35316
35317 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
35318 return KeyPair.fromPrivate(this, priv, enc);
35319 };
35320
35321 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
35322 return KeyPair.fromPublic(this, pub, enc);
35323 };
35324
35325 EC.prototype.genKeyPair = function genKeyPair(options) {
35326 if (!options)
35327 options = {};
35328
35329 // Instantiate Hmac_DRBG
35330 var drbg = new elliptic.hmacDRBG({
35331 hash: this.hash,
35332 pers: options.pers,
35333 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
35334 nonce: this.n.toArray()
35335 });
35336
35337 var bytes = this.n.byteLength();
35338 var ns2 = this.n.sub(new BN(2));
35339 do {
35340 var priv = new BN(drbg.generate(bytes));
35341 if (priv.cmp(ns2) > 0)
35342 continue;
35343
35344 priv.iaddn(1);
35345 return this.keyFromPrivate(priv);
35346 } while (true);
35347 };
35348
35349 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
35350 var delta = msg.byteLength() * 8 - this.n.bitLength();
35351 if (delta > 0)
35352 msg = msg.ushrn(delta);
35353 if (!truncOnly && msg.cmp(this.n) >= 0)
35354 return msg.sub(this.n);
35355 else
35356 return msg;
35357 };
35358
35359 EC.prototype.sign = function sign(msg, key, enc, options) {
35360 if (typeof enc === 'object') {
35361 options = enc;
35362 enc = null;
35363 }
35364 if (!options)
35365 options = {};
35366
35367 key = this.keyFromPrivate(key, enc);
35368 msg = this._truncateToN(new BN(msg, 16));
35369
35370 // Zero-extend key to provide enough entropy
35371 var bytes = this.n.byteLength();
35372 var bkey = key.getPrivate().toArray('be', bytes);
35373
35374 // Zero-extend nonce to have the same byte size as N
35375 var nonce = msg.toArray('be', bytes);
35376
35377 // Instantiate Hmac_DRBG
35378 var drbg = new elliptic.hmacDRBG({
35379 hash: this.hash,
35380 entropy: bkey,
35381 nonce: nonce,
35382 pers: options.pers,
35383 persEnc: options.persEnc
35384 });
35385
35386 // Number of bytes to generate
35387 var ns1 = this.n.sub(new BN(1));
35388
35389 for (var iter = 0; true; iter++) {
35390 var k = options.k ?
35391 options.k(iter) :
35392 new BN(drbg.generate(this.n.byteLength()));
35393 k = this._truncateToN(k, true);
35394 if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
35395 continue;
35396
35397 var kp = this.g.mul(k);
35398 if (kp.isInfinity())
35399 continue;
35400
35401 var kpX = kp.getX();
35402 var r = kpX.umod(this.n);
35403 if (r.cmpn(0) === 0)
35404 continue;
35405
35406 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
35407 s = s.umod(this.n);
35408 if (s.cmpn(0) === 0)
35409 continue;
35410
35411 var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
35412 (kpX.cmp(r) !== 0 ? 2 : 0);
35413
35414 // Use complement of `s`, if it is > `n / 2`
35415 if (options.canonical && s.cmp(this.nh) > 0) {
35416 s = this.n.sub(s);
35417 recoveryParam ^= 1;
35418 }
35419
35420 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
35421 }
35422 };
35423
35424 EC.prototype.verify = function verify(msg, signature, key, enc) {
35425 msg = this._truncateToN(new BN(msg, 16));
35426 key = this.keyFromPublic(key, enc);
35427 signature = new Signature(signature, 'hex');
35428
35429 // Perform primitive values validation
35430 var r = signature.r;
35431 var s = signature.s;
35432 if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
35433 return false;
35434 if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
35435 return false;
35436
35437 // Validate signature
35438 var sinv = s.invm(this.n);
35439 var u1 = sinv.mul(msg).umod(this.n);
35440 var u2 = sinv.mul(r).umod(this.n);
35441
35442 if (!this.curve._maxwellTrick) {
35443 var p = this.g.mulAdd(u1, key.getPublic(), u2);
35444 if (p.isInfinity())
35445 return false;
35446
35447 return p.getX().umod(this.n).cmp(r) === 0;
35448 }
35449
35450 // NOTE: Greg Maxwell's trick, inspired by:
35451 // https://git.io/vad3K
35452
35453 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
35454 if (p.isInfinity())
35455 return false;
35456
35457 // Compare `p.x` of Jacobian point with `r`,
35458 // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
35459 // inverse of `p.z^2`
35460 return p.eqXToP(r);
35461 };
35462
35463 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
35464 assert((3 & j) === j, 'The recovery param is more than two bits');
35465 signature = new Signature(signature, enc);
35466
35467 var n = this.n;
35468 var e = new BN(msg);
35469 var r = signature.r;
35470 var s = signature.s;
35471
35472 // A set LSB signifies that the y-coordinate is odd
35473 var isYOdd = j & 1;
35474 var isSecondKey = j >> 1;
35475 if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
35476 throw new Error('Unable to find sencond key candinate');
35477
35478 // 1.1. Let x = r + jn.
35479 if (isSecondKey)
35480 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
35481 else
35482 r = this.curve.pointFromX(r, isYOdd);
35483
35484 var rInv = signature.r.invm(n);
35485 var s1 = n.sub(e).mul(rInv).umod(n);
35486 var s2 = s.mul(rInv).umod(n);
35487
35488 // 1.6.1 Compute Q = r^-1 (sR - eG)
35489 // Q = r^-1 (sR + -eG)
35490 return this.g.mulAdd(s1, r, s2);
35491 };
35492
35493 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
35494 signature = new Signature(signature, enc);
35495 if (signature.recoveryParam !== null)
35496 return signature.recoveryParam;
35497
35498 for (var i = 0; i < 4; i++) {
35499 var Qprime;
35500 try {
35501 Qprime = this.recoverPubKey(e, signature, i);
35502 } catch (e) {
35503 continue;
35504 }
35505
35506 if (Qprime.eq(Q))
35507 return i;
35508 }
35509 throw new Error('Unable to find valid recovery factor');
35510 };
35511
35512 },{"../../elliptic":39,"./key":47,"./signature":48,"bn.js":33}],47:[function(require,module,exports){
35513 'use strict';
35514
35515 var BN = require('bn.js');
35516 var elliptic = require('../../elliptic');
35517 var utils = elliptic.utils;
35518 var assert = utils.assert;
35519
35520 function KeyPair(ec, options) {
35521 this.ec = ec;
35522 this.priv = null;
35523 this.pub = null;
35524
35525 // KeyPair(ec, { priv: ..., pub: ... })
35526 if (options.priv)
35527 this._importPrivate(options.priv, options.privEnc);
35528 if (options.pub)
35529 this._importPublic(options.pub, options.pubEnc);
35530 }
35531 module.exports = KeyPair;
35532
35533 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
35534 if (pub instanceof KeyPair)
35535 return pub;
35536
35537 return new KeyPair(ec, {
35538 pub: pub,
35539 pubEnc: enc
35540 });
35541 };
35542
35543 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
35544 if (priv instanceof KeyPair)
35545 return priv;
35546
35547 return new KeyPair(ec, {
35548 priv: priv,
35549 privEnc: enc
35550 });
35551 };
35552
35553 KeyPair.prototype.validate = function validate() {
35554 var pub = this.getPublic();
35555
35556 if (pub.isInfinity())
35557 return { result: false, reason: 'Invalid public key' };
35558 if (!pub.validate())
35559 return { result: false, reason: 'Public key is not a point' };
35560 if (!pub.mul(this.ec.curve.n).isInfinity())
35561 return { result: false, reason: 'Public key * N != O' };
35562
35563 return { result: true, reason: null };
35564 };
35565
35566 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
35567 // compact is optional argument
35568 if (typeof compact === 'string') {
35569 enc = compact;
35570 compact = null;
35571 }
35572
35573 if (!this.pub)
35574 this.pub = this.ec.g.mul(this.priv);
35575
35576 if (!enc)
35577 return this.pub;
35578
35579 return this.pub.encode(enc, compact);
35580 };
35581
35582 KeyPair.prototype.getPrivate = function getPrivate(enc) {
35583 if (enc === 'hex')
35584 return this.priv.toString(16, 2);
35585 else
35586 return this.priv;
35587 };
35588
35589 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
35590 this.priv = new BN(key, enc || 16);
35591
35592 // Ensure that the priv won't be bigger than n, otherwise we may fail
35593 // in fixed multiplication method
35594 this.priv = this.priv.umod(this.ec.curve.n);
35595 };
35596
35597 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
35598 if (key.x || key.y) {
35599 // Montgomery points only have an `x` coordinate.
35600 // Weierstrass/Edwards points on the other hand have both `x` and
35601 // `y` coordinates.
35602 if (this.ec.curve.type === 'mont') {
35603 assert(key.x, 'Need x coordinate');
35604 } else if (this.ec.curve.type === 'short' ||
35605 this.ec.curve.type === 'edwards') {
35606 assert(key.x && key.y, 'Need both x and y coordinate');
35607 }
35608 this.pub = this.ec.curve.point(key.x, key.y);
35609 return;
35610 }
35611 this.pub = this.ec.curve.decodePoint(key, enc);
35612 };
35613
35614 // ECDH
35615 KeyPair.prototype.derive = function derive(pub) {
35616 return pub.mul(this.priv).getX();
35617 };
35618
35619 // ECDSA
35620 KeyPair.prototype.sign = function sign(msg, enc, options) {
35621 return this.ec.sign(msg, this, enc, options);
35622 };
35623
35624 KeyPair.prototype.verify = function verify(msg, signature) {
35625 return this.ec.verify(msg, signature, this);
35626 };
35627
35628 KeyPair.prototype.inspect = function inspect() {
35629 return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
35630 ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
35631 };
35632
35633 },{"../../elliptic":39,"bn.js":33}],48:[function(require,module,exports){
35634 'use strict';
35635
35636 var BN = require('bn.js');
35637
35638 var elliptic = require('../../elliptic');
35639 var utils = elliptic.utils;
35640 var assert = utils.assert;
35641
35642 function Signature(options, enc) {
35643 if (options instanceof Signature)
35644 return options;
35645
35646 if (this._importDER(options, enc))
35647 return;
35648
35649 assert(options.r && options.s, 'Signature without r or s');
35650 this.r = new BN(options.r, 16);
35651 this.s = new BN(options.s, 16);
35652 if (options.recoveryParam === undefined)
35653 this.recoveryParam = null;
35654 else
35655 this.recoveryParam = options.recoveryParam;
35656 }
35657 module.exports = Signature;
35658
35659 function Position() {
35660 this.place = 0;
35661 }
35662
35663 function getLength(buf, p) {
35664 var initial = buf[p.place++];
35665 if (!(initial & 0x80)) {
35666 return initial;
35667 }
35668 var octetLen = initial & 0xf;
35669 var val = 0;
35670 for (var i = 0, off = p.place; i < octetLen; i++, off++) {
35671 val <<= 8;
35672 val |= buf[off];
35673 }
35674 p.place = off;
35675 return val;
35676 }
35677
35678 function rmPadding(buf) {
35679 var i = 0;
35680 var len = buf.length - 1;
35681 while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
35682 i++;
35683 }
35684 if (i === 0) {
35685 return buf;
35686 }
35687 return buf.slice(i);
35688 }
35689
35690 Signature.prototype._importDER = function _importDER(data, enc) {
35691 data = utils.toArray(data, enc);
35692 var p = new Position();
35693 if (data[p.place++] !== 0x30) {
35694 return false;
35695 }
35696 var len = getLength(data, p);
35697 if ((len + p.place) !== data.length) {
35698 return false;
35699 }
35700 if (data[p.place++] !== 0x02) {
35701 return false;
35702 }
35703 var rlen = getLength(data, p);
35704 var r = data.slice(p.place, rlen + p.place);
35705 p.place += rlen;
35706 if (data[p.place++] !== 0x02) {
35707 return false;
35708 }
35709 var slen = getLength(data, p);
35710 if (data.length !== slen + p.place) {
35711 return false;
35712 }
35713 var s = data.slice(p.place, slen + p.place);
35714 if (r[0] === 0 && (r[1] & 0x80)) {
35715 r = r.slice(1);
35716 }
35717 if (s[0] === 0 && (s[1] & 0x80)) {
35718 s = s.slice(1);
35719 }
35720
35721 this.r = new BN(r);
35722 this.s = new BN(s);
35723 this.recoveryParam = null;
35724
35725 return true;
35726 };
35727
35728 function constructLength(arr, len) {
35729 if (len < 0x80) {
35730 arr.push(len);
35731 return;
35732 }
35733 var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
35734 arr.push(octets | 0x80);
35735 while (--octets) {
35736 arr.push((len >>> (octets << 3)) & 0xff);
35737 }
35738 arr.push(len);
35739 }
35740
35741 Signature.prototype.toDER = function toDER(enc) {
35742 var r = this.r.toArray();
35743 var s = this.s.toArray();
35744
35745 // Pad values
35746 if (r[0] & 0x80)
35747 r = [ 0 ].concat(r);
35748 // Pad values
35749 if (s[0] & 0x80)
35750 s = [ 0 ].concat(s);
35751
35752 r = rmPadding(r);
35753 s = rmPadding(s);
35754
35755 while (!s[0] && !(s[1] & 0x80)) {
35756 s = s.slice(1);
35757 }
35758 var arr = [ 0x02 ];
35759 constructLength(arr, r.length);
35760 arr = arr.concat(r);
35761 arr.push(0x02);
35762 constructLength(arr, s.length);
35763 var backHalf = arr.concat(s);
35764 var res = [ 0x30 ];
35765 constructLength(res, backHalf.length);
35766 res = res.concat(backHalf);
35767 return utils.encode(res, enc);
35768 };
35769
35770 },{"../../elliptic":39,"bn.js":33}],49:[function(require,module,exports){
35771 'use strict';
35772
35773 var hash = require('hash.js');
35774 var elliptic = require('../../elliptic');
35775 var utils = elliptic.utils;
35776 var assert = utils.assert;
35777 var parseBytes = utils.parseBytes;
35778 var KeyPair = require('./key');
35779 var Signature = require('./signature');
35780
35781 function EDDSA(curve) {
35782 assert(curve === 'ed25519', 'only tested with ed25519 so far');
35783
35784 if (!(this instanceof EDDSA))
35785 return new EDDSA(curve);
35786
35787 var curve = elliptic.curves[curve].curve;
35788 this.curve = curve;
35789 this.g = curve.g;
35790 this.g.precompute(curve.n.bitLength() + 1);
35791
35792 this.pointClass = curve.point().constructor;
35793 this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
35794 this.hash = hash.sha512;
35795 }
35796
35797 module.exports = EDDSA;
35798
35799 /**
35800 * @param {Array|String} message - message bytes
35801 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
35802 * @returns {Signature} - signature
35803 */
35804 EDDSA.prototype.sign = function sign(message, secret) {
35805 message = parseBytes(message);
35806 var key = this.keyFromSecret(secret);
35807 var r = this.hashInt(key.messagePrefix(), message);
35808 var R = this.g.mul(r);
35809 var Rencoded = this.encodePoint(R);
35810 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
35811 .mul(key.priv());
35812 var S = r.add(s_).umod(this.curve.n);
35813 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
35814 };
35815
35816 /**
35817 * @param {Array} message - message bytes
35818 * @param {Array|String|Signature} sig - sig bytes
35819 * @param {Array|String|Point|KeyPair} pub - public key
35820 * @returns {Boolean} - true if public key matches sig of message
35821 */
35822 EDDSA.prototype.verify = function verify(message, sig, pub) {
35823 message = parseBytes(message);
35824 sig = this.makeSignature(sig);
35825 var key = this.keyFromPublic(pub);
35826 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
35827 var SG = this.g.mul(sig.S());
35828 var RplusAh = sig.R().add(key.pub().mul(h));
35829 return RplusAh.eq(SG);
35830 };
35831
35832 EDDSA.prototype.hashInt = function hashInt() {
35833 var hash = this.hash();
35834 for (var i = 0; i < arguments.length; i++)
35835 hash.update(arguments[i]);
35836 return utils.intFromLE(hash.digest()).umod(this.curve.n);
35837 };
35838
35839 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
35840 return KeyPair.fromPublic(this, pub);
35841 };
35842
35843 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
35844 return KeyPair.fromSecret(this, secret);
35845 };
35846
35847 EDDSA.prototype.makeSignature = function makeSignature(sig) {
35848 if (sig instanceof Signature)
35849 return sig;
35850 return new Signature(this, sig);
35851 };
35852
35853 /**
35854 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
35855 *
35856 * EDDSA defines methods for encoding and decoding points and integers. These are
35857 * helper convenience methods, that pass along to utility functions implied
35858 * parameters.
35859 *
35860 */
35861 EDDSA.prototype.encodePoint = function encodePoint(point) {
35862 var enc = point.getY().toArray('le', this.encodingLength);
35863 enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
35864 return enc;
35865 };
35866
35867 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
35868 bytes = utils.parseBytes(bytes);
35869
35870 var lastIx = bytes.length - 1;
35871 var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
35872 var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
35873
35874 var y = utils.intFromLE(normed);
35875 return this.curve.pointFromY(y, xIsOdd);
35876 };
35877
35878 EDDSA.prototype.encodeInt = function encodeInt(num) {
35879 return num.toArray('le', this.encodingLength);
35880 };
35881
35882 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
35883 return utils.intFromLE(bytes);
35884 };
35885
35886 EDDSA.prototype.isPoint = function isPoint(val) {
35887 return val instanceof this.pointClass;
35888 };
35889
35890 },{"../../elliptic":39,"./key":50,"./signature":51,"hash.js":57}],50:[function(require,module,exports){
35891 'use strict';
35892
35893 var elliptic = require('../../elliptic');
35894 var utils = elliptic.utils;
35895 var assert = utils.assert;
35896 var parseBytes = utils.parseBytes;
35897 var cachedProperty = utils.cachedProperty;
35898
35899 /**
35900 * @param {EDDSA} eddsa - instance
35901 * @param {Object} params - public/private key parameters
35902 *
35903 * @param {Array<Byte>} [params.secret] - secret seed bytes
35904 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
35905 * @param {Array<Byte>} [params.pub] - public key point encoded as bytes
35906 *
35907 */
35908 function KeyPair(eddsa, params) {
35909 this.eddsa = eddsa;
35910 this._secret = parseBytes(params.secret);
35911 if (eddsa.isPoint(params.pub))
35912 this._pub = params.pub;
35913 else
35914 this._pubBytes = parseBytes(params.pub);
35915 }
35916
35917 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
35918 if (pub instanceof KeyPair)
35919 return pub;
35920 return new KeyPair(eddsa, { pub: pub });
35921 };
35922
35923 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
35924 if (secret instanceof KeyPair)
35925 return secret;
35926 return new KeyPair(eddsa, { secret: secret });
35927 };
35928
35929 KeyPair.prototype.secret = function secret() {
35930 return this._secret;
35931 };
35932
35933 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
35934 return this.eddsa.encodePoint(this.pub());
35935 });
35936
35937 cachedProperty(KeyPair, 'pub', function pub() {
35938 if (this._pubBytes)
35939 return this.eddsa.decodePoint(this._pubBytes);
35940 return this.eddsa.g.mul(this.priv());
35941 });
35942
35943 cachedProperty(KeyPair, 'privBytes', function privBytes() {
35944 var eddsa = this.eddsa;
35945 var hash = this.hash();
35946 var lastIx = eddsa.encodingLength - 1;
35947
35948 var a = hash.slice(0, eddsa.encodingLength);
35949 a[0] &= 248;
35950 a[lastIx] &= 127;
35951 a[lastIx] |= 64;
35952
35953 return a;
35954 });
35955
35956 cachedProperty(KeyPair, 'priv', function priv() {
35957 return this.eddsa.decodeInt(this.privBytes());
35958 });
35959
35960 cachedProperty(KeyPair, 'hash', function hash() {
35961 return this.eddsa.hash().update(this.secret()).digest();
35962 });
35963
35964 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
35965 return this.hash().slice(this.eddsa.encodingLength);
35966 });
35967
35968 KeyPair.prototype.sign = function sign(message) {
35969 assert(this._secret, 'KeyPair can only verify');
35970 return this.eddsa.sign(message, this);
35971 };
35972
35973 KeyPair.prototype.verify = function verify(message, sig) {
35974 return this.eddsa.verify(message, sig, this);
35975 };
35976
35977 KeyPair.prototype.getSecret = function getSecret(enc) {
35978 assert(this._secret, 'KeyPair is public only');
35979 return utils.encode(this.secret(), enc);
35980 };
35981
35982 KeyPair.prototype.getPublic = function getPublic(enc) {
35983 return utils.encode(this.pubBytes(), enc);
35984 };
35985
35986 module.exports = KeyPair;
35987
35988 },{"../../elliptic":39}],51:[function(require,module,exports){
35989 'use strict';
35990
35991 var BN = require('bn.js');
35992 var elliptic = require('../../elliptic');
35993 var utils = elliptic.utils;
35994 var assert = utils.assert;
35995 var cachedProperty = utils.cachedProperty;
35996 var parseBytes = utils.parseBytes;
35997
35998 /**
35999 * @param {EDDSA} eddsa - eddsa instance
36000 * @param {Array<Bytes>|Object} sig -
36001 * @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
36002 * @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
36003 * @param {Array<Bytes>} [sig.Rencoded] - R point encoded
36004 * @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
36005 */
36006 function Signature(eddsa, sig) {
36007 this.eddsa = eddsa;
36008
36009 if (typeof sig !== 'object')
36010 sig = parseBytes(sig);
36011
36012 if (Array.isArray(sig)) {
36013 sig = {
36014 R: sig.slice(0, eddsa.encodingLength),
36015 S: sig.slice(eddsa.encodingLength)
36016 };
36017 }
36018
36019 assert(sig.R && sig.S, 'Signature without R or S');
36020
36021 if (eddsa.isPoint(sig.R))
36022 this._R = sig.R;
36023 if (sig.S instanceof BN)
36024 this._S = sig.S;
36025
36026 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
36027 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
36028 }
36029
36030 cachedProperty(Signature, 'S', function S() {
36031 return this.eddsa.decodeInt(this.Sencoded());
36032 });
36033
36034 cachedProperty(Signature, 'R', function R() {
36035 return this.eddsa.decodePoint(this.Rencoded());
36036 });
36037
36038 cachedProperty(Signature, 'Rencoded', function Rencoded() {
36039 return this.eddsa.encodePoint(this.R());
36040 });
36041
36042 cachedProperty(Signature, 'Sencoded', function Sencoded() {
36043 return this.eddsa.encodeInt(this.S());
36044 });
36045
36046 Signature.prototype.toBytes = function toBytes() {
36047 return this.Rencoded().concat(this.Sencoded());
36048 };
36049
36050 Signature.prototype.toHex = function toHex() {
36051 return utils.encode(this.toBytes(), 'hex').toUpperCase();
36052 };
36053
36054 module.exports = Signature;
36055
36056 },{"../../elliptic":39,"bn.js":33}],52:[function(require,module,exports){
36057 'use strict';
36058
36059 var hash = require('hash.js');
36060 var elliptic = require('../elliptic');
36061 var utils = elliptic.utils;
36062 var assert = utils.assert;
36063
36064 function HmacDRBG(options) {
36065 if (!(this instanceof HmacDRBG))
36066 return new HmacDRBG(options);
36067 this.hash = options.hash;
36068 this.predResist = !!options.predResist;
36069
36070 this.outLen = this.hash.outSize;
36071 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
36072
36073 this.reseed = null;
36074 this.reseedInterval = null;
36075 this.K = null;
36076 this.V = null;
36077
36078 var entropy = utils.toArray(options.entropy, options.entropyEnc);
36079 var nonce = utils.toArray(options.nonce, options.nonceEnc);
36080 var pers = utils.toArray(options.pers, options.persEnc);
36081 assert(entropy.length >= (this.minEntropy / 8),
36082 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
36083 this._init(entropy, nonce, pers);
36084 }
36085 module.exports = HmacDRBG;
36086
36087 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
36088 var seed = entropy.concat(nonce).concat(pers);
36089
36090 this.K = new Array(this.outLen / 8);
36091 this.V = new Array(this.outLen / 8);
36092 for (var i = 0; i < this.V.length; i++) {
36093 this.K[i] = 0x00;
36094 this.V[i] = 0x01;
36095 }
36096
36097 this._update(seed);
36098 this.reseed = 1;
36099 this.reseedInterval = 0x1000000000000; // 2^48
36100 };
36101
36102 HmacDRBG.prototype._hmac = function hmac() {
36103 return new hash.hmac(this.hash, this.K);
36104 };
36105
36106 HmacDRBG.prototype._update = function update(seed) {
36107 var kmac = this._hmac()
36108 .update(this.V)
36109 .update([ 0x00 ]);
36110 if (seed)
36111 kmac = kmac.update(seed);
36112 this.K = kmac.digest();
36113 this.V = this._hmac().update(this.V).digest();
36114 if (!seed)
36115 return;
36116
36117 this.K = this._hmac()
36118 .update(this.V)
36119 .update([ 0x01 ])
36120 .update(seed)
36121 .digest();
36122 this.V = this._hmac().update(this.V).digest();
36123 };
36124
36125 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
36126 // Optional entropy enc
36127 if (typeof entropyEnc !== 'string') {
36128 addEnc = add;
36129 add = entropyEnc;
36130 entropyEnc = null;
36131 }
36132
36133 entropy = utils.toBuffer(entropy, entropyEnc);
36134 add = utils.toBuffer(add, addEnc);
36135
36136 assert(entropy.length >= (this.minEntropy / 8),
36137 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
36138
36139 this._update(entropy.concat(add || []));
36140 this.reseed = 1;
36141 };
36142
36143 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
36144 if (this.reseed > this.reseedInterval)
36145 throw new Error('Reseed is required');
36146
36147 // Optional encoding
36148 if (typeof enc !== 'string') {
36149 addEnc = add;
36150 add = enc;
36151 enc = null;
36152 }
36153
36154 // Optional additional data
36155 if (add) {
36156 add = utils.toArray(add, addEnc);
36157 this._update(add);
36158 }
36159
36160 var temp = [];
36161 while (temp.length < len) {
36162 this.V = this._hmac().update(this.V).digest();
36163 temp = temp.concat(this.V);
36164 }
36165
36166 var res = temp.slice(0, len);
36167 this._update(add);
36168 this.reseed++;
36169 return utils.encode(res, enc);
36170 };
36171
36172 },{"../elliptic":39,"hash.js":57}],53:[function(require,module,exports){
36173 module.exports = {
36174 doubles: {
36175 step: 4,
36176 points: [
36177 [
36178 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
36179 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
36180 ],
36181 [
36182 '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
36183 '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
36184 ],
36185 [
36186 '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
36187 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
36188 ],
36189 [
36190 '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
36191 '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
36192 ],
36193 [
36194 '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
36195 '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
36196 ],
36197 [
36198 '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
36199 '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
36200 ],
36201 [
36202 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
36203 '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
36204 ],
36205 [
36206 '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
36207 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
36208 ],
36209 [
36210 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
36211 '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
36212 ],
36213 [
36214 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
36215 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
36216 ],
36217 [
36218 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
36219 '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
36220 ],
36221 [
36222 '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
36223 '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
36224 ],
36225 [
36226 '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
36227 '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
36228 ],
36229 [
36230 '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
36231 '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
36232 ],
36233 [
36234 '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
36235 '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
36236 ],
36237 [
36238 '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
36239 '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
36240 ],
36241 [
36242 '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
36243 '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
36244 ],
36245 [
36246 '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
36247 '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
36248 ],
36249 [
36250 '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
36251 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
36252 ],
36253 [
36254 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
36255 '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
36256 ],
36257 [
36258 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
36259 '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
36260 ],
36261 [
36262 '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
36263 '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
36264 ],
36265 [
36266 '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
36267 '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
36268 ],
36269 [
36270 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
36271 '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
36272 ],
36273 [
36274 '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
36275 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
36276 ],
36277 [
36278 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
36279 '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
36280 ],
36281 [
36282 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
36283 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
36284 ],
36285 [
36286 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
36287 '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
36288 ],
36289 [
36290 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
36291 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
36292 ],
36293 [
36294 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
36295 '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
36296 ],
36297 [
36298 '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
36299 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
36300 ],
36301 [
36302 '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
36303 '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
36304 ],
36305 [
36306 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
36307 '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
36308 ],
36309 [
36310 '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
36311 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
36312 ],
36313 [
36314 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
36315 '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
36316 ],
36317 [
36318 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
36319 '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
36320 ],
36321 [
36322 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
36323 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
36324 ],
36325 [
36326 '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
36327 '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
36328 ],
36329 [
36330 '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
36331 '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
36332 ],
36333 [
36334 '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
36335 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
36336 ],
36337 [
36338 '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
36339 '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
36340 ],
36341 [
36342 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
36343 '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
36344 ],
36345 [
36346 '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
36347 '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
36348 ],
36349 [
36350 '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
36351 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
36352 ],
36353 [
36354 '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
36355 '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
36356 ],
36357 [
36358 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
36359 '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
36360 ],
36361 [
36362 '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
36363 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
36364 ],
36365 [
36366 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
36367 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
36368 ],
36369 [
36370 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
36371 '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
36372 ],
36373 [
36374 '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
36375 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
36376 ],
36377 [
36378 '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
36379 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
36380 ],
36381 [
36382 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
36383 '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
36384 ],
36385 [
36386 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
36387 '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
36388 ],
36389 [
36390 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
36391 '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
36392 ],
36393 [
36394 '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
36395 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
36396 ],
36397 [
36398 '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
36399 '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
36400 ],
36401 [
36402 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
36403 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
36404 ],
36405 [
36406 '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
36407 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
36408 ],
36409 [
36410 '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
36411 '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
36412 ],
36413 [
36414 '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
36415 '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
36416 ],
36417 [
36418 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
36419 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
36420 ],
36421 [
36422 '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
36423 '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
36424 ],
36425 [
36426 '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
36427 '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
36428 ],
36429 [
36430 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
36431 '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
36432 ],
36433 [
36434 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
36435 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
36436 ]
36437 ]
36438 },
36439 naf: {
36440 wnd: 7,
36441 points: [
36442 [
36443 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
36444 '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
36445 ],
36446 [
36447 '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
36448 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
36449 ],
36450 [
36451 '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
36452 '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
36453 ],
36454 [
36455 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
36456 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
36457 ],
36458 [
36459 '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
36460 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
36461 ],
36462 [
36463 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
36464 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
36465 ],
36466 [
36467 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
36468 '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
36469 ],
36470 [
36471 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
36472 '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
36473 ],
36474 [
36475 '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
36476 '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
36477 ],
36478 [
36479 '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
36480 '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
36481 ],
36482 [
36483 '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
36484 '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
36485 ],
36486 [
36487 '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
36488 '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
36489 ],
36490 [
36491 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
36492 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
36493 ],
36494 [
36495 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
36496 '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
36497 ],
36498 [
36499 '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
36500 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
36501 ],
36502 [
36503 '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
36504 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
36505 ],
36506 [
36507 '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
36508 '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
36509 ],
36510 [
36511 '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
36512 '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
36513 ],
36514 [
36515 '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
36516 '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
36517 ],
36518 [
36519 '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
36520 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
36521 ],
36522 [
36523 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
36524 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
36525 ],
36526 [
36527 '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
36528 '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
36529 ],
36530 [
36531 '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
36532 '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
36533 ],
36534 [
36535 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
36536 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
36537 ],
36538 [
36539 '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
36540 '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
36541 ],
36542 [
36543 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
36544 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
36545 ],
36546 [
36547 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
36548 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
36549 ],
36550 [
36551 '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
36552 '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
36553 ],
36554 [
36555 '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
36556 '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
36557 ],
36558 [
36559 '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
36560 '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
36561 ],
36562 [
36563 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
36564 '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
36565 ],
36566 [
36567 '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
36568 '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
36569 ],
36570 [
36571 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
36572 '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
36573 ],
36574 [
36575 '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
36576 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
36577 ],
36578 [
36579 '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
36580 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
36581 ],
36582 [
36583 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
36584 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
36585 ],
36586 [
36587 '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
36588 '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
36589 ],
36590 [
36591 '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
36592 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
36593 ],
36594 [
36595 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
36596 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
36597 ],
36598 [
36599 '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
36600 '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
36601 ],
36602 [
36603 '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
36604 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
36605 ],
36606 [
36607 '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
36608 '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
36609 ],
36610 [
36611 '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
36612 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
36613 ],
36614 [
36615 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
36616 '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
36617 ],
36618 [
36619 '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
36620 '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
36621 ],
36622 [
36623 '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
36624 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
36625 ],
36626 [
36627 '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
36628 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
36629 ],
36630 [
36631 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
36632 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
36633 ],
36634 [
36635 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
36636 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
36637 ],
36638 [
36639 '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
36640 '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
36641 ],
36642 [
36643 '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
36644 '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
36645 ],
36646 [
36647 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
36648 '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
36649 ],
36650 [
36651 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
36652 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
36653 ],
36654 [
36655 '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
36656 '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
36657 ],
36658 [
36659 '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
36660 '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
36661 ],
36662 [
36663 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
36664 '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
36665 ],
36666 [
36667 '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
36668 '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
36669 ],
36670 [
36671 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
36672 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
36673 ],
36674 [
36675 '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
36676 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
36677 ],
36678 [
36679 '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
36680 '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
36681 ],
36682 [
36683 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
36684 '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
36685 ],
36686 [
36687 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
36688 '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
36689 ],
36690 [
36691 '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
36692 '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
36693 ],
36694 [
36695 '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
36696 '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
36697 ],
36698 [
36699 '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
36700 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
36701 ],
36702 [
36703 '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
36704 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
36705 ],
36706 [
36707 '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
36708 '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
36709 ],
36710 [
36711 '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
36712 '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
36713 ],
36714 [
36715 '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
36716 '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
36717 ],
36718 [
36719 '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
36720 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
36721 ],
36722 [
36723 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
36724 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
36725 ],
36726 [
36727 '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
36728 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
36729 ],
36730 [
36731 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
36732 '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
36733 ],
36734 [
36735 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
36736 '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
36737 ],
36738 [
36739 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
36740 '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
36741 ],
36742 [
36743 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
36744 '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
36745 ],
36746 [
36747 '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
36748 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
36749 ],
36750 [
36751 '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
36752 '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
36753 ],
36754 [
36755 '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
36756 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
36757 ],
36758 [
36759 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
36760 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
36761 ],
36762 [
36763 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
36764 '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
36765 ],
36766 [
36767 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
36768 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
36769 ],
36770 [
36771 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
36772 '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
36773 ],
36774 [
36775 '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
36776 '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
36777 ],
36778 [
36779 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
36780 '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
36781 ],
36782 [
36783 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
36784 '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
36785 ],
36786 [
36787 '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
36788 '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
36789 ],
36790 [
36791 '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
36792 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
36793 ],
36794 [
36795 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
36796 '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
36797 ],
36798 [
36799 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
36800 '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
36801 ],
36802 [
36803 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
36804 '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
36805 ],
36806 [
36807 '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
36808 '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
36809 ],
36810 [
36811 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
36812 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
36813 ],
36814 [
36815 '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
36816 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
36817 ],
36818 [
36819 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
36820 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
36821 ],
36822 [
36823 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
36824 '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
36825 ],
36826 [
36827 '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
36828 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
36829 ],
36830 [
36831 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
36832 '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
36833 ],
36834 [
36835 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
36836 '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
36837 ],
36838 [
36839 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
36840 '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
36841 ],
36842 [
36843 '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
36844 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
36845 ],
36846 [
36847 '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
36848 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
36849 ],
36850 [
36851 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
36852 '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
36853 ],
36854 [
36855 '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
36856 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
36857 ],
36858 [
36859 '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
36860 '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
36861 ],
36862 [
36863 '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
36864 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
36865 ],
36866 [
36867 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
36868 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
36869 ],
36870 [
36871 '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
36872 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
36873 ],
36874 [
36875 '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
36876 '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
36877 ],
36878 [
36879 '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
36880 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
36881 ],
36882 [
36883 '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
36884 '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
36885 ],
36886 [
36887 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
36888 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
36889 ],
36890 [
36891 '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
36892 '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
36893 ],
36894 [
36895 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
36896 '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
36897 ],
36898 [
36899 '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
36900 '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
36901 ],
36902 [
36903 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
36904 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
36905 ],
36906 [
36907 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
36908 '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
36909 ],
36910 [
36911 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
36912 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
36913 ],
36914 [
36915 '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
36916 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
36917 ],
36918 [
36919 '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
36920 '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
36921 ],
36922 [
36923 '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
36924 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
36925 ],
36926 [
36927 '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
36928 '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
36929 ],
36930 [
36931 '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
36932 '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
36933 ],
36934 [
36935 '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
36936 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
36937 ],
36938 [
36939 '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
36940 '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
36941 ],
36942 [
36943 '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
36944 '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
36945 ],
36946 [
36947 '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
36948 '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
36949 ]
36950 ]
36951 }
36952 };
36953
36954 },{}],54:[function(require,module,exports){
36955 'use strict';
36956
36957 var utils = exports;
36958 var BN = require('bn.js');
36959
36960 utils.assert = function assert(val, msg) {
36961 if (!val)
36962 throw new Error(msg || 'Assertion failed');
36963 };
36964
36965 function toArray(msg, enc) {
36966 if (Array.isArray(msg))
36967 return msg.slice();
36968 if (!msg)
36969 return [];
36970 var res = [];
36971 if (typeof msg !== 'string') {
36972 for (var i = 0; i < msg.length; i++)
36973 res[i] = msg[i] | 0;
36974 return res;
36975 }
36976 if (!enc) {
36977 for (var i = 0; i < msg.length; i++) {
36978 var c = msg.charCodeAt(i);
36979 var hi = c >> 8;
36980 var lo = c & 0xff;
36981 if (hi)
36982 res.push(hi, lo);
36983 else
36984 res.push(lo);
36985 }
36986 } else if (enc === 'hex') {
36987 msg = msg.replace(/[^a-z0-9]+/ig, '');
36988 if (msg.length % 2 !== 0)
36989 msg = '0' + msg;
36990 for (var i = 0; i < msg.length; i += 2)
36991 res.push(parseInt(msg[i] + msg[i + 1], 16));
36992 }
36993 return res;
36994 }
36995 utils.toArray = toArray;
36996
36997 function zero2(word) {
36998 if (word.length === 1)
36999 return '0' + word;
37000 else
37001 return word;
37002 }
37003 utils.zero2 = zero2;
37004
37005 function toHex(msg) {
37006 var res = '';
37007 for (var i = 0; i < msg.length; i++)
37008 res += zero2(msg[i].toString(16));
37009 return res;
37010 }
37011 utils.toHex = toHex;
37012
37013 utils.encode = function encode(arr, enc) {
37014 if (enc === 'hex')
37015 return toHex(arr);
37016 else
37017 return arr;
37018 };
37019
37020 // Represent num in a w-NAF form
37021 function getNAF(num, w) {
37022 var naf = [];
37023 var ws = 1 << (w + 1);
37024 var k = num.clone();
37025 while (k.cmpn(1) >= 0) {
37026 var z;
37027 if (k.isOdd()) {
37028 var mod = k.andln(ws - 1);
37029 if (mod > (ws >> 1) - 1)
37030 z = (ws >> 1) - mod;
37031 else
37032 z = mod;
37033 k.isubn(z);
37034 } else {
37035 z = 0;
37036 }
37037 naf.push(z);
37038
37039 // Optimization, shift by word if possible
37040 var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
37041 for (var i = 1; i < shift; i++)
37042 naf.push(0);
37043 k.iushrn(shift);
37044 }
37045
37046 return naf;
37047 }
37048 utils.getNAF = getNAF;
37049
37050 // Represent k1, k2 in a Joint Sparse Form
37051 function getJSF(k1, k2) {
37052 var jsf = [
37053 [],
37054 []
37055 ];
37056
37057 k1 = k1.clone();
37058 k2 = k2.clone();
37059 var d1 = 0;
37060 var d2 = 0;
37061 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
37062
37063 // First phase
37064 var m14 = (k1.andln(3) + d1) & 3;
37065 var m24 = (k2.andln(3) + d2) & 3;
37066 if (m14 === 3)
37067 m14 = -1;
37068 if (m24 === 3)
37069 m24 = -1;
37070 var u1;
37071 if ((m14 & 1) === 0) {
37072 u1 = 0;
37073 } else {
37074 var m8 = (k1.andln(7) + d1) & 7;
37075 if ((m8 === 3 || m8 === 5) && m24 === 2)
37076 u1 = -m14;
37077 else
37078 u1 = m14;
37079 }
37080 jsf[0].push(u1);
37081
37082 var u2;
37083 if ((m24 & 1) === 0) {
37084 u2 = 0;
37085 } else {
37086 var m8 = (k2.andln(7) + d2) & 7;
37087 if ((m8 === 3 || m8 === 5) && m14 === 2)
37088 u2 = -m24;
37089 else
37090 u2 = m24;
37091 }
37092 jsf[1].push(u2);
37093
37094 // Second phase
37095 if (2 * d1 === u1 + 1)
37096 d1 = 1 - d1;
37097 if (2 * d2 === u2 + 1)
37098 d2 = 1 - d2;
37099 k1.iushrn(1);
37100 k2.iushrn(1);
37101 }
37102
37103 return jsf;
37104 }
37105 utils.getJSF = getJSF;
37106
37107 function cachedProperty(obj, name, computer) {
37108 var key = '_' + name;
37109 obj.prototype[name] = function cachedProperty() {
37110 return this[key] !== undefined ? this[key] :
37111 this[key] = computer.call(this);
37112 };
37113 }
37114 utils.cachedProperty = cachedProperty;
37115
37116 function parseBytes(bytes) {
37117 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
37118 bytes;
37119 }
37120 utils.parseBytes = parseBytes;
37121
37122 function intFromLE(bytes) {
37123 return new BN(bytes, 'hex', 'le');
37124 }
37125 utils.intFromLE = intFromLE;
37126
37127
37128 },{"bn.js":33}],55:[function(require,module,exports){
37129 module.exports={
37130 "_args": [
37131 [
37132 {
37133 "raw": "elliptic@^6.2.3",
37134 "scope": null,
37135 "escapedName": "elliptic",
37136 "name": "elliptic",
37137 "rawSpec": "^6.2.3",
37138 "spec": ">=6.2.3 <7.0.0",
37139 "type": "range"
37140 },
37141 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
37142 ]
37143 ],
37144 "_from": "elliptic@>=6.2.3 <7.0.0",
37145 "_id": "elliptic@6.3.3",
37146 "_inCache": true,
37147 "_location": "/elliptic",
37148 "_nodeVersion": "7.0.0",
37149 "_npmOperationalInternal": {
37150 "host": "packages-18-east.internal.npmjs.com",
37151 "tmp": "tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
37152 },
37153 "_npmUser": {
37154 "name": "indutny",
37155 "email": "fedor@indutny.com"
37156 },
37157 "_npmVersion": "3.10.8",
37158 "_phantomChildren": {},
37159 "_requested": {
37160 "raw": "elliptic@^6.2.3",
37161 "scope": null,
37162 "escapedName": "elliptic",
37163 "name": "elliptic",
37164 "rawSpec": "^6.2.3",
37165 "spec": ">=6.2.3 <7.0.0",
37166 "type": "range"
37167 },
37168 "_requiredBy": [
37169 "/browserify-sign",
37170 "/create-ecdh",
37171 "/secp256k1"
37172 ],
37173 "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
37174 "_shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
37175 "_shrinkwrap": null,
37176 "_spec": "elliptic@^6.2.3",
37177 "_where": "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
37178 "author": {
37179 "name": "Fedor Indutny",
37180 "email": "fedor@indutny.com"
37181 },
37182 "bugs": {
37183 "url": "https://github.com/indutny/elliptic/issues"
37184 },
37185 "dependencies": {
37186 "bn.js": "^4.4.0",
37187 "brorand": "^1.0.1",
37188 "hash.js": "^1.0.0",
37189 "inherits": "^2.0.1"
37190 },
37191 "description": "EC cryptography",
37192 "devDependencies": {
37193 "brfs": "^1.4.3",
37194 "coveralls": "^2.11.3",
37195 "grunt": "^0.4.5",
37196 "grunt-browserify": "^5.0.0",
37197 "grunt-cli": "^1.2.0",
37198 "grunt-contrib-connect": "^1.0.0",
37199 "grunt-contrib-copy": "^1.0.0",
37200 "grunt-contrib-uglify": "^1.0.1",
37201 "grunt-mocha-istanbul": "^3.0.1",
37202 "grunt-saucelabs": "^8.6.2",
37203 "istanbul": "^0.4.2",
37204 "jscs": "^2.9.0",
37205 "jshint": "^2.6.0",
37206 "mocha": "^2.1.0"
37207 },
37208 "directories": {},
37209 "dist": {
37210 "shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
37211 "tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
37212 },
37213 "files": [
37214 "lib"
37215 ],
37216 "gitHead": "63aee8d697e9b7fac37ece24222029117a890a7e",
37217 "homepage": "https://github.com/indutny/elliptic",
37218 "keywords": [
37219 "EC",
37220 "Elliptic",
37221 "curve",
37222 "Cryptography"
37223 ],
37224 "license": "MIT",
37225 "main": "lib/elliptic.js",
37226 "maintainers": [
37227 {
37228 "name": "indutny",
37229 "email": "fedor@indutny.com"
37230 }
37231 ],
37232 "name": "elliptic",
37233 "optionalDependencies": {},
37234 "readme": "ERROR: No README data found!",
37235 "repository": {
37236 "type": "git",
37237 "url": "git+ssh://git@github.com/indutny/elliptic.git"
37238 },
37239 "scripts": {
37240 "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
37241 "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
37242 "lint": "npm run jscs && npm run jshint",
37243 "test": "npm run lint && npm run unit",
37244 "unit": "istanbul test _mocha --reporter=spec test/index.js",
37245 "version": "grunt dist && git add dist/"
37246 },
37247 "version": "6.3.3"
37248 }
37249
37250 },{}],56:[function(require,module,exports){
37251 (function (Buffer){
37252 'use strict';
37253
37254 var isHexPrefixed = require('is-hex-prefixed');
37255 var stripHexPrefix = require('strip-hex-prefix');
37256
37257 /**
37258 * Pads a `String` to have an even length
37259 * @param {String} value
37260 * @return {String} output
37261 */
37262 function padToEven(value) {
37263 var a = value; // eslint-disable-line
37264
37265 if (typeof a !== 'string') {
37266 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
37267 }
37268
37269 if (a.length % 2) {
37270 a = '0' + a;
37271 }
37272
37273 return a;
37274 }
37275
37276 /**
37277 * Converts a `Number` into a hex `String`
37278 * @param {Number} i
37279 * @return {String}
37280 */
37281 function intToHex(i) {
37282 var hex = i.toString(16); // eslint-disable-line
37283
37284 return '0x' + padToEven(hex);
37285 }
37286
37287 /**
37288 * Converts an `Number` to a `Buffer`
37289 * @param {Number} i
37290 * @return {Buffer}
37291 */
37292 function intToBuffer(i) {
37293 var hex = intToHex(i);
37294
37295 return new Buffer(hex.slice(2), 'hex');
37296 }
37297
37298 /**
37299 * Get the binary size of a string
37300 * @param {String} str
37301 * @return {Number}
37302 */
37303 function getBinarySize(str) {
37304 if (typeof str !== 'string') {
37305 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
37306 }
37307
37308 return Buffer.byteLength(str, 'utf8');
37309 }
37310
37311 /**
37312 * Returns TRUE if the first specified array contains all elements
37313 * from the second one. FALSE otherwise.
37314 *
37315 * @param {array} superset
37316 * @param {array} subset
37317 *
37318 * @returns {boolean}
37319 */
37320 function arrayContainsArray(superset, subset, some) {
37321 if (Array.isArray(superset) !== true) {
37322 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
37323 }
37324 if (Array.isArray(subset) !== true) {
37325 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
37326 }
37327
37328 return subset[Boolean(some) && 'some' || 'every'](function (value) {
37329 return superset.indexOf(value) >= 0;
37330 });
37331 }
37332
37333 /**
37334 * Should be called to get utf8 from it's hex representation
37335 *
37336 * @method toUtf8
37337 * @param {String} string in hex
37338 * @returns {String} ascii string representation of hex value
37339 */
37340 function toUtf8(hex) {
37341 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');
37342
37343 return bufferValue.toString('utf8');
37344 }
37345
37346 /**
37347 * Should be called to get ascii from it's hex representation
37348 *
37349 * @method toAscii
37350 * @param {String} string in hex
37351 * @returns {String} ascii string representation of hex value
37352 */
37353 function toAscii(hex) {
37354 var str = ''; // eslint-disable-line
37355 var i = 0,
37356 l = hex.length; // eslint-disable-line
37357
37358 if (hex.substring(0, 2) === '0x') {
37359 i = 2;
37360 }
37361
37362 for (; i < l; i += 2) {
37363 var code = parseInt(hex.substr(i, 2), 16);
37364 str += String.fromCharCode(code);
37365 }
37366
37367 return str;
37368 }
37369
37370 /**
37371 * Should be called to get hex representation (prefixed by 0x) of utf8 string
37372 *
37373 * @method fromUtf8
37374 * @param {String} string
37375 * @param {Number} optional padding
37376 * @returns {String} hex representation of input string
37377 */
37378 function fromUtf8(stringValue) {
37379 var str = new Buffer(stringValue, 'utf8');
37380
37381 return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');
37382 }
37383
37384 /**
37385 * Should be called to get hex representation (prefixed by 0x) of ascii string
37386 *
37387 * @method fromAscii
37388 * @param {String} string
37389 * @param {Number} optional padding
37390 * @returns {String} hex representation of input string
37391 */
37392 function fromAscii(stringValue) {
37393 var hex = ''; // eslint-disable-line
37394 for (var i = 0; i < stringValue.length; i++) {
37395 // eslint-disable-line
37396 var code = stringValue.charCodeAt(i);
37397 var n = code.toString(16);
37398 hex += n.length < 2 ? '0' + n : n;
37399 }
37400
37401 return '0x' + hex;
37402 }
37403
37404 /**
37405 * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]
37406 *
37407 * @method getKeys get specific key from inner object array of objects
37408 * @param {String} params
37409 * @param {String} key
37410 * @param {Boolean} allowEmpty
37411 * @returns {Array} output just a simple array of output keys
37412 */
37413 function getKeys(params, key, allowEmpty) {
37414 if (!Array.isArray(params)) {
37415 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
37416 }
37417 if (typeof key !== 'string') {
37418 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
37419 }
37420
37421 var result = []; // eslint-disable-line
37422
37423 for (var i = 0; i < params.length; i++) {
37424 // eslint-disable-line
37425 var value = params[i][key]; // eslint-disable-line
37426 if (allowEmpty && !value) {
37427 value = '';
37428 } else if (typeof value !== 'string') {
37429 throw new Error('invalid abi');
37430 }
37431 result.push(value);
37432 }
37433
37434 return result;
37435 }
37436
37437 /**
37438 * Is the string a hex string.
37439 *
37440 * @method check if string is hex string of specific length
37441 * @param {String} value
37442 * @param {Number} length
37443 * @returns {Boolean} output the string is a hex string
37444 */
37445 function isHexString(value, length) {
37446 if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
37447 return false;
37448 }
37449
37450 if (length && value.length !== 2 + 2 * length) {
37451 return false;
37452 }
37453
37454 return true;
37455 }
37456
37457 module.exports = {
37458 arrayContainsArray: arrayContainsArray,
37459 intToBuffer: intToBuffer,
37460 getBinarySize: getBinarySize,
37461 isHexPrefixed: isHexPrefixed,
37462 stripHexPrefix: stripHexPrefix,
37463 padToEven: padToEven,
37464 intToHex: intToHex,
37465 fromAscii: fromAscii,
37466 fromUtf8: fromUtf8,
37467 toAscii: toAscii,
37468 toUtf8: toUtf8,
37469 getKeys: getKeys,
37470 isHexString: isHexString
37471 };
37472 }).call(this,require("buffer").Buffer)
37473 },{"buffer":5,"is-hex-prefixed":64,"strip-hex-prefix":87}],57:[function(require,module,exports){
37474 var hash = exports;
37475
37476 hash.utils = require('./hash/utils');
37477 hash.common = require('./hash/common');
37478 hash.sha = require('./hash/sha');
37479 hash.ripemd = require('./hash/ripemd');
37480 hash.hmac = require('./hash/hmac');
37481
37482 // Proxy hash functions to the main object
37483 hash.sha1 = hash.sha.sha1;
37484 hash.sha256 = hash.sha.sha256;
37485 hash.sha224 = hash.sha.sha224;
37486 hash.sha384 = hash.sha.sha384;
37487 hash.sha512 = hash.sha.sha512;
37488 hash.ripemd160 = hash.ripemd.ripemd160;
37489
37490 },{"./hash/common":58,"./hash/hmac":59,"./hash/ripemd":60,"./hash/sha":61,"./hash/utils":62}],58:[function(require,module,exports){
37491 var hash = require('../hash');
37492 var utils = hash.utils;
37493 var assert = utils.assert;
37494
37495 function BlockHash() {
37496 this.pending = null;
37497 this.pendingTotal = 0;
37498 this.blockSize = this.constructor.blockSize;
37499 this.outSize = this.constructor.outSize;
37500 this.hmacStrength = this.constructor.hmacStrength;
37501 this.padLength = this.constructor.padLength / 8;
37502 this.endian = 'big';
37503
37504 this._delta8 = this.blockSize / 8;
37505 this._delta32 = this.blockSize / 32;
37506 }
37507 exports.BlockHash = BlockHash;
37508
37509 BlockHash.prototype.update = function update(msg, enc) {
37510 // Convert message to array, pad it, and join into 32bit blocks
37511 msg = utils.toArray(msg, enc);
37512 if (!this.pending)
37513 this.pending = msg;
37514 else
37515 this.pending = this.pending.concat(msg);
37516 this.pendingTotal += msg.length;
37517
37518 // Enough data, try updating
37519 if (this.pending.length >= this._delta8) {
37520 msg = this.pending;
37521
37522 // Process pending data in blocks
37523 var r = msg.length % this._delta8;
37524 this.pending = msg.slice(msg.length - r, msg.length);
37525 if (this.pending.length === 0)
37526 this.pending = null;
37527
37528 msg = utils.join32(msg, 0, msg.length - r, this.endian);
37529 for (var i = 0; i < msg.length; i += this._delta32)
37530 this._update(msg, i, i + this._delta32);
37531 }
37532
37533 return this;
37534 };
37535
37536 BlockHash.prototype.digest = function digest(enc) {
37537 this.update(this._pad());
37538 assert(this.pending === null);
37539
37540 return this._digest(enc);
37541 };
37542
37543 BlockHash.prototype._pad = function pad() {
37544 var len = this.pendingTotal;
37545 var bytes = this._delta8;
37546 var k = bytes - ((len + this.padLength) % bytes);
37547 var res = new Array(k + this.padLength);
37548 res[0] = 0x80;
37549 for (var i = 1; i < k; i++)
37550 res[i] = 0;
37551
37552 // Append length
37553 len <<= 3;
37554 if (this.endian === 'big') {
37555 for (var t = 8; t < this.padLength; t++)
37556 res[i++] = 0;
37557
37558 res[i++] = 0;
37559 res[i++] = 0;
37560 res[i++] = 0;
37561 res[i++] = 0;
37562 res[i++] = (len >>> 24) & 0xff;
37563 res[i++] = (len >>> 16) & 0xff;
37564 res[i++] = (len >>> 8) & 0xff;
37565 res[i++] = len & 0xff;
37566 } else {
37567 res[i++] = len & 0xff;
37568 res[i++] = (len >>> 8) & 0xff;
37569 res[i++] = (len >>> 16) & 0xff;
37570 res[i++] = (len >>> 24) & 0xff;
37571 res[i++] = 0;
37572 res[i++] = 0;
37573 res[i++] = 0;
37574 res[i++] = 0;
37575
37576 for (var t = 8; t < this.padLength; t++)
37577 res[i++] = 0;
37578 }
37579
37580 return res;
37581 };
37582
37583 },{"../hash":57}],59:[function(require,module,exports){
37584 var hmac = exports;
37585
37586 var hash = require('../hash');
37587 var utils = hash.utils;
37588 var assert = utils.assert;
37589
37590 function Hmac(hash, key, enc) {
37591 if (!(this instanceof Hmac))
37592 return new Hmac(hash, key, enc);
37593 this.Hash = hash;
37594 this.blockSize = hash.blockSize / 8;
37595 this.outSize = hash.outSize / 8;
37596 this.inner = null;
37597 this.outer = null;
37598
37599 this._init(utils.toArray(key, enc));
37600 }
37601 module.exports = Hmac;
37602
37603 Hmac.prototype._init = function init(key) {
37604 // Shorten key, if needed
37605 if (key.length > this.blockSize)
37606 key = new this.Hash().update(key).digest();
37607 assert(key.length <= this.blockSize);
37608
37609 // Add padding to key
37610 for (var i = key.length; i < this.blockSize; i++)
37611 key.push(0);
37612
37613 for (var i = 0; i < key.length; i++)
37614 key[i] ^= 0x36;
37615 this.inner = new this.Hash().update(key);
37616
37617 // 0x36 ^ 0x5c = 0x6a
37618 for (var i = 0; i < key.length; i++)
37619 key[i] ^= 0x6a;
37620 this.outer = new this.Hash().update(key);
37621 };
37622
37623 Hmac.prototype.update = function update(msg, enc) {
37624 this.inner.update(msg, enc);
37625 return this;
37626 };
37627
37628 Hmac.prototype.digest = function digest(enc) {
37629 this.outer.update(this.inner.digest());
37630 return this.outer.digest(enc);
37631 };
37632
37633 },{"../hash":57}],60:[function(require,module,exports){
37634 var hash = require('../hash');
37635 var utils = hash.utils;
37636
37637 var rotl32 = utils.rotl32;
37638 var sum32 = utils.sum32;
37639 var sum32_3 = utils.sum32_3;
37640 var sum32_4 = utils.sum32_4;
37641 var BlockHash = hash.common.BlockHash;
37642
37643 function RIPEMD160() {
37644 if (!(this instanceof RIPEMD160))
37645 return new RIPEMD160();
37646
37647 BlockHash.call(this);
37648
37649 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
37650 this.endian = 'little';
37651 }
37652 utils.inherits(RIPEMD160, BlockHash);
37653 exports.ripemd160 = RIPEMD160;
37654
37655 RIPEMD160.blockSize = 512;
37656 RIPEMD160.outSize = 160;
37657 RIPEMD160.hmacStrength = 192;
37658 RIPEMD160.padLength = 64;
37659
37660 RIPEMD160.prototype._update = function update(msg, start) {
37661 var A = this.h[0];
37662 var B = this.h[1];
37663 var C = this.h[2];
37664 var D = this.h[3];
37665 var E = this.h[4];
37666 var Ah = A;
37667 var Bh = B;
37668 var Ch = C;
37669 var Dh = D;
37670 var Eh = E;
37671 for (var j = 0; j < 80; j++) {
37672 var T = sum32(
37673 rotl32(
37674 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
37675 s[j]),
37676 E);
37677 A = E;
37678 E = D;
37679 D = rotl32(C, 10);
37680 C = B;
37681 B = T;
37682 T = sum32(
37683 rotl32(
37684 sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
37685 sh[j]),
37686 Eh);
37687 Ah = Eh;
37688 Eh = Dh;
37689 Dh = rotl32(Ch, 10);
37690 Ch = Bh;
37691 Bh = T;
37692 }
37693 T = sum32_3(this.h[1], C, Dh);
37694 this.h[1] = sum32_3(this.h[2], D, Eh);
37695 this.h[2] = sum32_3(this.h[3], E, Ah);
37696 this.h[3] = sum32_3(this.h[4], A, Bh);
37697 this.h[4] = sum32_3(this.h[0], B, Ch);
37698 this.h[0] = T;
37699 };
37700
37701 RIPEMD160.prototype._digest = function digest(enc) {
37702 if (enc === 'hex')
37703 return utils.toHex32(this.h, 'little');
37704 else
37705 return utils.split32(this.h, 'little');
37706 };
37707
37708 function f(j, x, y, z) {
37709 if (j <= 15)
37710 return x ^ y ^ z;
37711 else if (j <= 31)
37712 return (x & y) | ((~x) & z);
37713 else if (j <= 47)
37714 return (x | (~y)) ^ z;
37715 else if (j <= 63)
37716 return (x & z) | (y & (~z));
37717 else
37718 return x ^ (y | (~z));
37719 }
37720
37721 function K(j) {
37722 if (j <= 15)
37723 return 0x00000000;
37724 else if (j <= 31)
37725 return 0x5a827999;
37726 else if (j <= 47)
37727 return 0x6ed9eba1;
37728 else if (j <= 63)
37729 return 0x8f1bbcdc;
37730 else
37731 return 0xa953fd4e;
37732 }
37733
37734 function Kh(j) {
37735 if (j <= 15)
37736 return 0x50a28be6;
37737 else if (j <= 31)
37738 return 0x5c4dd124;
37739 else if (j <= 47)
37740 return 0x6d703ef3;
37741 else if (j <= 63)
37742 return 0x7a6d76e9;
37743 else
37744 return 0x00000000;
37745 }
37746
37747 var r = [
37748 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
37749 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
37750 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
37751 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
37752 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
37753 ];
37754
37755 var rh = [
37756 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
37757 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
37758 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
37759 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
37760 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
37761 ];
37762
37763 var s = [
37764 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
37765 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
37766 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
37767 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
37768 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
37769 ];
37770
37771 var sh = [
37772 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
37773 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
37774 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
37775 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
37776 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
37777 ];
37778
37779 },{"../hash":57}],61:[function(require,module,exports){
37780 var hash = require('../hash');
37781 var utils = hash.utils;
37782 var assert = utils.assert;
37783
37784 var rotr32 = utils.rotr32;
37785 var rotl32 = utils.rotl32;
37786 var sum32 = utils.sum32;
37787 var sum32_4 = utils.sum32_4;
37788 var sum32_5 = utils.sum32_5;
37789 var rotr64_hi = utils.rotr64_hi;
37790 var rotr64_lo = utils.rotr64_lo;
37791 var shr64_hi = utils.shr64_hi;
37792 var shr64_lo = utils.shr64_lo;
37793 var sum64 = utils.sum64;
37794 var sum64_hi = utils.sum64_hi;
37795 var sum64_lo = utils.sum64_lo;
37796 var sum64_4_hi = utils.sum64_4_hi;
37797 var sum64_4_lo = utils.sum64_4_lo;
37798 var sum64_5_hi = utils.sum64_5_hi;
37799 var sum64_5_lo = utils.sum64_5_lo;
37800 var BlockHash = hash.common.BlockHash;
37801
37802 var sha256_K = [
37803 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
37804 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
37805 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
37806 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
37807 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
37808 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
37809 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
37810 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
37811 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
37812 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
37813 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
37814 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
37815 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
37816 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
37817 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
37818 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
37819 ];
37820
37821 var sha512_K = [
37822 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
37823 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
37824 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
37825 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
37826 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
37827 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
37828 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
37829 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
37830 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
37831 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
37832 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
37833 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
37834 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
37835 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
37836 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
37837 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
37838 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
37839 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
37840 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
37841 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
37842 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
37843 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
37844 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
37845 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
37846 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
37847 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
37848 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
37849 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
37850 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
37851 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
37852 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
37853 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
37854 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
37855 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
37856 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
37857 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
37858 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
37859 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
37860 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
37861 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
37862 ];
37863
37864 var sha1_K = [
37865 0x5A827999, 0x6ED9EBA1,
37866 0x8F1BBCDC, 0xCA62C1D6
37867 ];
37868
37869 function SHA256() {
37870 if (!(this instanceof SHA256))
37871 return new SHA256();
37872
37873 BlockHash.call(this);
37874 this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
37875 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];
37876 this.k = sha256_K;
37877 this.W = new Array(64);
37878 }
37879 utils.inherits(SHA256, BlockHash);
37880 exports.sha256 = SHA256;
37881
37882 SHA256.blockSize = 512;
37883 SHA256.outSize = 256;
37884 SHA256.hmacStrength = 192;
37885 SHA256.padLength = 64;
37886
37887 SHA256.prototype._update = function _update(msg, start) {
37888 var W = this.W;
37889
37890 for (var i = 0; i < 16; i++)
37891 W[i] = msg[start + i];
37892 for (; i < W.length; i++)
37893 W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
37894
37895 var a = this.h[0];
37896 var b = this.h[1];
37897 var c = this.h[2];
37898 var d = this.h[3];
37899 var e = this.h[4];
37900 var f = this.h[5];
37901 var g = this.h[6];
37902 var h = this.h[7];
37903
37904 assert(this.k.length === W.length);
37905 for (var i = 0; i < W.length; i++) {
37906 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
37907 var T2 = sum32(s0_256(a), maj32(a, b, c));
37908 h = g;
37909 g = f;
37910 f = e;
37911 e = sum32(d, T1);
37912 d = c;
37913 c = b;
37914 b = a;
37915 a = sum32(T1, T2);
37916 }
37917
37918 this.h[0] = sum32(this.h[0], a);
37919 this.h[1] = sum32(this.h[1], b);
37920 this.h[2] = sum32(this.h[2], c);
37921 this.h[3] = sum32(this.h[3], d);
37922 this.h[4] = sum32(this.h[4], e);
37923 this.h[5] = sum32(this.h[5], f);
37924 this.h[6] = sum32(this.h[6], g);
37925 this.h[7] = sum32(this.h[7], h);
37926 };
37927
37928 SHA256.prototype._digest = function digest(enc) {
37929 if (enc === 'hex')
37930 return utils.toHex32(this.h, 'big');
37931 else
37932 return utils.split32(this.h, 'big');
37933 };
37934
37935 function SHA224() {
37936 if (!(this instanceof SHA224))
37937 return new SHA224();
37938
37939 SHA256.call(this);
37940 this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
37941 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
37942 }
37943 utils.inherits(SHA224, SHA256);
37944 exports.sha224 = SHA224;
37945
37946 SHA224.blockSize = 512;
37947 SHA224.outSize = 224;
37948 SHA224.hmacStrength = 192;
37949 SHA224.padLength = 64;
37950
37951 SHA224.prototype._digest = function digest(enc) {
37952 // Just truncate output
37953 if (enc === 'hex')
37954 return utils.toHex32(this.h.slice(0, 7), 'big');
37955 else
37956 return utils.split32(this.h.slice(0, 7), 'big');
37957 };
37958
37959 function SHA512() {
37960 if (!(this instanceof SHA512))
37961 return new SHA512();
37962
37963 BlockHash.call(this);
37964 this.h = [ 0x6a09e667, 0xf3bcc908,
37965 0xbb67ae85, 0x84caa73b,
37966 0x3c6ef372, 0xfe94f82b,
37967 0xa54ff53a, 0x5f1d36f1,
37968 0x510e527f, 0xade682d1,
37969 0x9b05688c, 0x2b3e6c1f,
37970 0x1f83d9ab, 0xfb41bd6b,
37971 0x5be0cd19, 0x137e2179 ];
37972 this.k = sha512_K;
37973 this.W = new Array(160);
37974 }
37975 utils.inherits(SHA512, BlockHash);
37976 exports.sha512 = SHA512;
37977
37978 SHA512.blockSize = 1024;
37979 SHA512.outSize = 512;
37980 SHA512.hmacStrength = 192;
37981 SHA512.padLength = 128;
37982
37983 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
37984 var W = this.W;
37985
37986 // 32 x 32bit words
37987 for (var i = 0; i < 32; i++)
37988 W[i] = msg[start + i];
37989 for (; i < W.length; i += 2) {
37990 var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
37991 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
37992 var c1_hi = W[i - 14]; // i - 7
37993 var c1_lo = W[i - 13];
37994 var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
37995 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
37996 var c3_hi = W[i - 32]; // i - 16
37997 var c3_lo = W[i - 31];
37998
37999 W[i] = sum64_4_hi(c0_hi, c0_lo,
38000 c1_hi, c1_lo,
38001 c2_hi, c2_lo,
38002 c3_hi, c3_lo);
38003 W[i + 1] = sum64_4_lo(c0_hi, c0_lo,
38004 c1_hi, c1_lo,
38005 c2_hi, c2_lo,
38006 c3_hi, c3_lo);
38007 }
38008 };
38009
38010 SHA512.prototype._update = function _update(msg, start) {
38011 this._prepareBlock(msg, start);
38012
38013 var W = this.W;
38014
38015 var ah = this.h[0];
38016 var al = this.h[1];
38017 var bh = this.h[2];
38018 var bl = this.h[3];
38019 var ch = this.h[4];
38020 var cl = this.h[5];
38021 var dh = this.h[6];
38022 var dl = this.h[7];
38023 var eh = this.h[8];
38024 var el = this.h[9];
38025 var fh = this.h[10];
38026 var fl = this.h[11];
38027 var gh = this.h[12];
38028 var gl = this.h[13];
38029 var hh = this.h[14];
38030 var hl = this.h[15];
38031
38032 assert(this.k.length === W.length);
38033 for (var i = 0; i < W.length; i += 2) {
38034 var c0_hi = hh;
38035 var c0_lo = hl;
38036 var c1_hi = s1_512_hi(eh, el);
38037 var c1_lo = s1_512_lo(eh, el);
38038 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
38039 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
38040 var c3_hi = this.k[i];
38041 var c3_lo = this.k[i + 1];
38042 var c4_hi = W[i];
38043 var c4_lo = W[i + 1];
38044
38045 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
38046 c1_hi, c1_lo,
38047 c2_hi, c2_lo,
38048 c3_hi, c3_lo,
38049 c4_hi, c4_lo);
38050 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
38051 c1_hi, c1_lo,
38052 c2_hi, c2_lo,
38053 c3_hi, c3_lo,
38054 c4_hi, c4_lo);
38055
38056 var c0_hi = s0_512_hi(ah, al);
38057 var c0_lo = s0_512_lo(ah, al);
38058 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
38059 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
38060
38061 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
38062 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
38063
38064 hh = gh;
38065 hl = gl;
38066
38067 gh = fh;
38068 gl = fl;
38069
38070 fh = eh;
38071 fl = el;
38072
38073 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
38074 el = sum64_lo(dl, dl, T1_hi, T1_lo);
38075
38076 dh = ch;
38077 dl = cl;
38078
38079 ch = bh;
38080 cl = bl;
38081
38082 bh = ah;
38083 bl = al;
38084
38085 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
38086 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
38087 }
38088
38089 sum64(this.h, 0, ah, al);
38090 sum64(this.h, 2, bh, bl);
38091 sum64(this.h, 4, ch, cl);
38092 sum64(this.h, 6, dh, dl);
38093 sum64(this.h, 8, eh, el);
38094 sum64(this.h, 10, fh, fl);
38095 sum64(this.h, 12, gh, gl);
38096 sum64(this.h, 14, hh, hl);
38097 };
38098
38099 SHA512.prototype._digest = function digest(enc) {
38100 if (enc === 'hex')
38101 return utils.toHex32(this.h, 'big');
38102 else
38103 return utils.split32(this.h, 'big');
38104 };
38105
38106 function SHA384() {
38107 if (!(this instanceof SHA384))
38108 return new SHA384();
38109
38110 SHA512.call(this);
38111 this.h = [ 0xcbbb9d5d, 0xc1059ed8,
38112 0x629a292a, 0x367cd507,
38113 0x9159015a, 0x3070dd17,
38114 0x152fecd8, 0xf70e5939,
38115 0x67332667, 0xffc00b31,
38116 0x8eb44a87, 0x68581511,
38117 0xdb0c2e0d, 0x64f98fa7,
38118 0x47b5481d, 0xbefa4fa4 ];
38119 }
38120 utils.inherits(SHA384, SHA512);
38121 exports.sha384 = SHA384;
38122
38123 SHA384.blockSize = 1024;
38124 SHA384.outSize = 384;
38125 SHA384.hmacStrength = 192;
38126 SHA384.padLength = 128;
38127
38128 SHA384.prototype._digest = function digest(enc) {
38129 if (enc === 'hex')
38130 return utils.toHex32(this.h.slice(0, 12), 'big');
38131 else
38132 return utils.split32(this.h.slice(0, 12), 'big');
38133 };
38134
38135 function SHA1() {
38136 if (!(this instanceof SHA1))
38137 return new SHA1();
38138
38139 BlockHash.call(this);
38140 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,
38141 0x10325476, 0xc3d2e1f0 ];
38142 this.W = new Array(80);
38143 }
38144
38145 utils.inherits(SHA1, BlockHash);
38146 exports.sha1 = SHA1;
38147
38148 SHA1.blockSize = 512;
38149 SHA1.outSize = 160;
38150 SHA1.hmacStrength = 80;
38151 SHA1.padLength = 64;
38152
38153 SHA1.prototype._update = function _update(msg, start) {
38154 var W = this.W;
38155
38156 for (var i = 0; i < 16; i++)
38157 W[i] = msg[start + i];
38158
38159 for(; i < W.length; i++)
38160 W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
38161
38162 var a = this.h[0];
38163 var b = this.h[1];
38164 var c = this.h[2];
38165 var d = this.h[3];
38166 var e = this.h[4];
38167
38168 for (var i = 0; i < W.length; i++) {
38169 var s = ~~(i / 20);
38170 var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
38171 e = d;
38172 d = c;
38173 c = rotl32(b, 30);
38174 b = a;
38175 a = t;
38176 }
38177
38178 this.h[0] = sum32(this.h[0], a);
38179 this.h[1] = sum32(this.h[1], b);
38180 this.h[2] = sum32(this.h[2], c);
38181 this.h[3] = sum32(this.h[3], d);
38182 this.h[4] = sum32(this.h[4], e);
38183 };
38184
38185 SHA1.prototype._digest = function digest(enc) {
38186 if (enc === 'hex')
38187 return utils.toHex32(this.h, 'big');
38188 else
38189 return utils.split32(this.h, 'big');
38190 };
38191
38192 function ch32(x, y, z) {
38193 return (x & y) ^ ((~x) & z);
38194 }
38195
38196 function maj32(x, y, z) {
38197 return (x & y) ^ (x & z) ^ (y & z);
38198 }
38199
38200 function p32(x, y, z) {
38201 return x ^ y ^ z;
38202 }
38203
38204 function s0_256(x) {
38205 return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
38206 }
38207
38208 function s1_256(x) {
38209 return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
38210 }
38211
38212 function g0_256(x) {
38213 return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
38214 }
38215
38216 function g1_256(x) {
38217 return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
38218 }
38219
38220 function ft_1(s, x, y, z) {
38221 if (s === 0)
38222 return ch32(x, y, z);
38223 if (s === 1 || s === 3)
38224 return p32(x, y, z);
38225 if (s === 2)
38226 return maj32(x, y, z);
38227 }
38228
38229 function ch64_hi(xh, xl, yh, yl, zh, zl) {
38230 var r = (xh & yh) ^ ((~xh) & zh);
38231 if (r < 0)
38232 r += 0x100000000;
38233 return r;
38234 }
38235
38236 function ch64_lo(xh, xl, yh, yl, zh, zl) {
38237 var r = (xl & yl) ^ ((~xl) & zl);
38238 if (r < 0)
38239 r += 0x100000000;
38240 return r;
38241 }
38242
38243 function maj64_hi(xh, xl, yh, yl, zh, zl) {
38244 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
38245 if (r < 0)
38246 r += 0x100000000;
38247 return r;
38248 }
38249
38250 function maj64_lo(xh, xl, yh, yl, zh, zl) {
38251 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
38252 if (r < 0)
38253 r += 0x100000000;
38254 return r;
38255 }
38256
38257 function s0_512_hi(xh, xl) {
38258 var c0_hi = rotr64_hi(xh, xl, 28);
38259 var c1_hi = rotr64_hi(xl, xh, 2); // 34
38260 var c2_hi = rotr64_hi(xl, xh, 7); // 39
38261
38262 var r = c0_hi ^ c1_hi ^ c2_hi;
38263 if (r < 0)
38264 r += 0x100000000;
38265 return r;
38266 }
38267
38268 function s0_512_lo(xh, xl) {
38269 var c0_lo = rotr64_lo(xh, xl, 28);
38270 var c1_lo = rotr64_lo(xl, xh, 2); // 34
38271 var c2_lo = rotr64_lo(xl, xh, 7); // 39
38272
38273 var r = c0_lo ^ c1_lo ^ c2_lo;
38274 if (r < 0)
38275 r += 0x100000000;
38276 return r;
38277 }
38278
38279 function s1_512_hi(xh, xl) {
38280 var c0_hi = rotr64_hi(xh, xl, 14);
38281 var c1_hi = rotr64_hi(xh, xl, 18);
38282 var c2_hi = rotr64_hi(xl, xh, 9); // 41
38283
38284 var r = c0_hi ^ c1_hi ^ c2_hi;
38285 if (r < 0)
38286 r += 0x100000000;
38287 return r;
38288 }
38289
38290 function s1_512_lo(xh, xl) {
38291 var c0_lo = rotr64_lo(xh, xl, 14);
38292 var c1_lo = rotr64_lo(xh, xl, 18);
38293 var c2_lo = rotr64_lo(xl, xh, 9); // 41
38294
38295 var r = c0_lo ^ c1_lo ^ c2_lo;
38296 if (r < 0)
38297 r += 0x100000000;
38298 return r;
38299 }
38300
38301 function g0_512_hi(xh, xl) {
38302 var c0_hi = rotr64_hi(xh, xl, 1);
38303 var c1_hi = rotr64_hi(xh, xl, 8);
38304 var c2_hi = shr64_hi(xh, xl, 7);
38305
38306 var r = c0_hi ^ c1_hi ^ c2_hi;
38307 if (r < 0)
38308 r += 0x100000000;
38309 return r;
38310 }
38311
38312 function g0_512_lo(xh, xl) {
38313 var c0_lo = rotr64_lo(xh, xl, 1);
38314 var c1_lo = rotr64_lo(xh, xl, 8);
38315 var c2_lo = shr64_lo(xh, xl, 7);
38316
38317 var r = c0_lo ^ c1_lo ^ c2_lo;
38318 if (r < 0)
38319 r += 0x100000000;
38320 return r;
38321 }
38322
38323 function g1_512_hi(xh, xl) {
38324 var c0_hi = rotr64_hi(xh, xl, 19);
38325 var c1_hi = rotr64_hi(xl, xh, 29); // 61
38326 var c2_hi = shr64_hi(xh, xl, 6);
38327
38328 var r = c0_hi ^ c1_hi ^ c2_hi;
38329 if (r < 0)
38330 r += 0x100000000;
38331 return r;
38332 }
38333
38334 function g1_512_lo(xh, xl) {
38335 var c0_lo = rotr64_lo(xh, xl, 19);
38336 var c1_lo = rotr64_lo(xl, xh, 29); // 61
38337 var c2_lo = shr64_lo(xh, xl, 6);
38338
38339 var r = c0_lo ^ c1_lo ^ c2_lo;
38340 if (r < 0)
38341 r += 0x100000000;
38342 return r;
38343 }
38344
38345 },{"../hash":57}],62:[function(require,module,exports){
38346 var utils = exports;
38347 var inherits = require('inherits');
38348
38349 function toArray(msg, enc) {
38350 if (Array.isArray(msg))
38351 return msg.slice();
38352 if (!msg)
38353 return [];
38354 var res = [];
38355 if (typeof msg === 'string') {
38356 if (!enc) {
38357 for (var i = 0; i < msg.length; i++) {
38358 var c = msg.charCodeAt(i);
38359 var hi = c >> 8;
38360 var lo = c & 0xff;
38361 if (hi)
38362 res.push(hi, lo);
38363 else
38364 res.push(lo);
38365 }
38366 } else if (enc === 'hex') {
38367 msg = msg.replace(/[^a-z0-9]+/ig, '');
38368 if (msg.length % 2 !== 0)
38369 msg = '0' + msg;
38370 for (var i = 0; i < msg.length; i += 2)
38371 res.push(parseInt(msg[i] + msg[i + 1], 16));
38372 }
38373 } else {
38374 for (var i = 0; i < msg.length; i++)
38375 res[i] = msg[i] | 0;
38376 }
38377 return res;
38378 }
38379 utils.toArray = toArray;
38380
38381 function toHex(msg) {
38382 var res = '';
38383 for (var i = 0; i < msg.length; i++)
38384 res += zero2(msg[i].toString(16));
38385 return res;
38386 }
38387 utils.toHex = toHex;
38388
38389 function htonl(w) {
38390 var res = (w >>> 24) |
38391 ((w >>> 8) & 0xff00) |
38392 ((w << 8) & 0xff0000) |
38393 ((w & 0xff) << 24);
38394 return res >>> 0;
38395 }
38396 utils.htonl = htonl;
38397
38398 function toHex32(msg, endian) {
38399 var res = '';
38400 for (var i = 0; i < msg.length; i++) {
38401 var w = msg[i];
38402 if (endian === 'little')
38403 w = htonl(w);
38404 res += zero8(w.toString(16));
38405 }
38406 return res;
38407 }
38408 utils.toHex32 = toHex32;
38409
38410 function zero2(word) {
38411 if (word.length === 1)
38412 return '0' + word;
38413 else
38414 return word;
38415 }
38416 utils.zero2 = zero2;
38417
38418 function zero8(word) {
38419 if (word.length === 7)
38420 return '0' + word;
38421 else if (word.length === 6)
38422 return '00' + word;
38423 else if (word.length === 5)
38424 return '000' + word;
38425 else if (word.length === 4)
38426 return '0000' + word;
38427 else if (word.length === 3)
38428 return '00000' + word;
38429 else if (word.length === 2)
38430 return '000000' + word;
38431 else if (word.length === 1)
38432 return '0000000' + word;
38433 else
38434 return word;
38435 }
38436 utils.zero8 = zero8;
38437
38438 function join32(msg, start, end, endian) {
38439 var len = end - start;
38440 assert(len % 4 === 0);
38441 var res = new Array(len / 4);
38442 for (var i = 0, k = start; i < res.length; i++, k += 4) {
38443 var w;
38444 if (endian === 'big')
38445 w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
38446 else
38447 w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
38448 res[i] = w >>> 0;
38449 }
38450 return res;
38451 }
38452 utils.join32 = join32;
38453
38454 function split32(msg, endian) {
38455 var res = new Array(msg.length * 4);
38456 for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
38457 var m = msg[i];
38458 if (endian === 'big') {
38459 res[k] = m >>> 24;
38460 res[k + 1] = (m >>> 16) & 0xff;
38461 res[k + 2] = (m >>> 8) & 0xff;
38462 res[k + 3] = m & 0xff;
38463 } else {
38464 res[k + 3] = m >>> 24;
38465 res[k + 2] = (m >>> 16) & 0xff;
38466 res[k + 1] = (m >>> 8) & 0xff;
38467 res[k] = m & 0xff;
38468 }
38469 }
38470 return res;
38471 }
38472 utils.split32 = split32;
38473
38474 function rotr32(w, b) {
38475 return (w >>> b) | (w << (32 - b));
38476 }
38477 utils.rotr32 = rotr32;
38478
38479 function rotl32(w, b) {
38480 return (w << b) | (w >>> (32 - b));
38481 }
38482 utils.rotl32 = rotl32;
38483
38484 function sum32(a, b) {
38485 return (a + b) >>> 0;
38486 }
38487 utils.sum32 = sum32;
38488
38489 function sum32_3(a, b, c) {
38490 return (a + b + c) >>> 0;
38491 }
38492 utils.sum32_3 = sum32_3;
38493
38494 function sum32_4(a, b, c, d) {
38495 return (a + b + c + d) >>> 0;
38496 }
38497 utils.sum32_4 = sum32_4;
38498
38499 function sum32_5(a, b, c, d, e) {
38500 return (a + b + c + d + e) >>> 0;
38501 }
38502 utils.sum32_5 = sum32_5;
38503
38504 function assert(cond, msg) {
38505 if (!cond)
38506 throw new Error(msg || 'Assertion failed');
38507 }
38508 utils.assert = assert;
38509
38510 utils.inherits = inherits;
38511
38512 function sum64(buf, pos, ah, al) {
38513 var bh = buf[pos];
38514 var bl = buf[pos + 1];
38515
38516 var lo = (al + bl) >>> 0;
38517 var hi = (lo < al ? 1 : 0) + ah + bh;
38518 buf[pos] = hi >>> 0;
38519 buf[pos + 1] = lo;
38520 }
38521 exports.sum64 = sum64;
38522
38523 function sum64_hi(ah, al, bh, bl) {
38524 var lo = (al + bl) >>> 0;
38525 var hi = (lo < al ? 1 : 0) + ah + bh;
38526 return hi >>> 0;
38527 };
38528 exports.sum64_hi = sum64_hi;
38529
38530 function sum64_lo(ah, al, bh, bl) {
38531 var lo = al + bl;
38532 return lo >>> 0;
38533 };
38534 exports.sum64_lo = sum64_lo;
38535
38536 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
38537 var carry = 0;
38538 var lo = al;
38539 lo = (lo + bl) >>> 0;
38540 carry += lo < al ? 1 : 0;
38541 lo = (lo + cl) >>> 0;
38542 carry += lo < cl ? 1 : 0;
38543 lo = (lo + dl) >>> 0;
38544 carry += lo < dl ? 1 : 0;
38545
38546 var hi = ah + bh + ch + dh + carry;
38547 return hi >>> 0;
38548 };
38549 exports.sum64_4_hi = sum64_4_hi;
38550
38551 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
38552 var lo = al + bl + cl + dl;
38553 return lo >>> 0;
38554 };
38555 exports.sum64_4_lo = sum64_4_lo;
38556
38557 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
38558 var carry = 0;
38559 var lo = al;
38560 lo = (lo + bl) >>> 0;
38561 carry += lo < al ? 1 : 0;
38562 lo = (lo + cl) >>> 0;
38563 carry += lo < cl ? 1 : 0;
38564 lo = (lo + dl) >>> 0;
38565 carry += lo < dl ? 1 : 0;
38566 lo = (lo + el) >>> 0;
38567 carry += lo < el ? 1 : 0;
38568
38569 var hi = ah + bh + ch + dh + eh + carry;
38570 return hi >>> 0;
38571 };
38572 exports.sum64_5_hi = sum64_5_hi;
38573
38574 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
38575 var lo = al + bl + cl + dl + el;
38576
38577 return lo >>> 0;
38578 };
38579 exports.sum64_5_lo = sum64_5_lo;
38580
38581 function rotr64_hi(ah, al, num) {
38582 var r = (al << (32 - num)) | (ah >>> num);
38583 return r >>> 0;
38584 };
38585 exports.rotr64_hi = rotr64_hi;
38586
38587 function rotr64_lo(ah, al, num) {
38588 var r = (ah << (32 - num)) | (al >>> num);
38589 return r >>> 0;
38590 };
38591 exports.rotr64_lo = rotr64_lo;
38592
38593 function shr64_hi(ah, al, num) {
38594 return ah >>> num;
38595 };
38596 exports.shr64_hi = shr64_hi;
38597
38598 function shr64_lo(ah, al, num) {
38599 var r = (ah << (32 - num)) | (al >>> num);
38600 return r >>> 0;
38601 };
38602 exports.shr64_lo = shr64_lo;
38603
38604 },{"inherits":63}],63:[function(require,module,exports){
38605 arguments[4][9][0].apply(exports,arguments)
38606 },{"dup":9}],64:[function(require,module,exports){
38607 /**
38608 * Returns a `Boolean` on whether or not the a `String` starts with '0x'
38609 * @param {String} str the string input value
38610 * @return {Boolean} a boolean if it is or is not hex prefixed
38611 * @throws if the str input is not a string
38612 */
38613 module.exports = function isHexPrefixed(str) {
38614 if (typeof str !== 'string') {
38615 throw new Error("[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) + ", while checking isHexPrefixed.");
38616 }
38617
38618 return str.slice(0, 2) === '0x';
38619 }
38620
38621 },{}],65:[function(require,module,exports){
38622 'use strict'
38623 module.exports = require('./lib/api')(require('./lib/keccak'))
38624
38625 },{"./lib/api":66,"./lib/keccak":70}],66:[function(require,module,exports){
38626 'use strict'
38627 var createKeccak = require('./keccak')
38628 var createShake = require('./shake')
38629
38630 module.exports = function (KeccakState) {
38631 var Keccak = createKeccak(KeccakState)
38632 var Shake = createShake(KeccakState)
38633
38634 return function (algorithm, options) {
38635 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
38636 switch (hash) {
38637 case 'keccak224': return new Keccak(1152, 448, null, 224, options)
38638 case 'keccak256': return new Keccak(1088, 512, null, 256, options)
38639 case 'keccak384': return new Keccak(832, 768, null, 384, options)
38640 case 'keccak512': return new Keccak(576, 1024, null, 512, options)
38641
38642 case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)
38643 case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)
38644 case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)
38645 case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)
38646
38647 case 'shake128': return new Shake(1344, 256, 0x1f, options)
38648 case 'shake256': return new Shake(1088, 512, 0x1f, options)
38649
38650 default: throw new Error('Invald algorithm: ' + algorithm)
38651 }
38652 }
38653 }
38654
38655 },{"./keccak":67,"./shake":68}],67:[function(require,module,exports){
38656 (function (Buffer){
38657 'use strict'
38658 var Transform = require('stream').Transform
38659 var inherits = require('inherits')
38660
38661 module.exports = function (KeccakState) {
38662 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
38663 Transform.call(this, options)
38664
38665 this._rate = rate
38666 this._capacity = capacity
38667 this._delimitedSuffix = delimitedSuffix
38668 this._hashBitLength = hashBitLength
38669 this._options = options
38670
38671 this._state = new KeccakState()
38672 this._state.initialize(rate, capacity)
38673 this._finalized = false
38674 }
38675
38676 inherits(Keccak, Transform)
38677
38678 Keccak.prototype._transform = function (chunk, encoding, callback) {
38679 var error = null
38680 try {
38681 this.update(chunk, encoding)
38682 } catch (err) {
38683 error = err
38684 }
38685
38686 callback(error)
38687 }
38688
38689 Keccak.prototype._flush = function (callback) {
38690 var error = null
38691 try {
38692 this.push(this.digest())
38693 } catch (err) {
38694 error = err
38695 }
38696
38697 callback(error)
38698 }
38699
38700 Keccak.prototype.update = function (data, encoding) {
38701 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
38702 if (this._finalized) throw new Error('Digest already called')
38703 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
38704
38705 this._state.absorb(data)
38706
38707 return this
38708 }
38709
38710 Keccak.prototype.digest = function (encoding) {
38711 if (this._finalized) throw new Error('Digest already called')
38712 this._finalized = true
38713
38714 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
38715 var digest = this._state.squeeze(this._hashBitLength / 8)
38716 if (encoding !== undefined) digest = digest.toString(encoding)
38717
38718 this._resetState()
38719
38720 return digest
38721 }
38722
38723 // remove result from memory
38724 Keccak.prototype._resetState = function () {
38725 this._state.initialize(this._rate, this._capacity)
38726 return this
38727 }
38728
38729 // because sometimes we need hash right now and little later
38730 Keccak.prototype._clone = function () {
38731 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
38732 this._state.copy(clone._state)
38733 clone._finalized = this._finalized
38734
38735 return clone
38736 }
38737
38738 return Keccak
38739 }
38740
38741 }).call(this,require("buffer").Buffer)
38742 },{"buffer":5,"inherits":63,"stream":25}],68:[function(require,module,exports){
38743 (function (Buffer){
38744 'use strict'
38745 var Transform = require('stream').Transform
38746 var inherits = require('inherits')
38747
38748 module.exports = function (KeccakState) {
38749 function Shake (rate, capacity, delimitedSuffix, options) {
38750 Transform.call(this, options)
38751
38752 this._rate = rate
38753 this._capacity = capacity
38754 this._delimitedSuffix = delimitedSuffix
38755 this._options = options
38756
38757 this._state = new KeccakState()
38758 this._state.initialize(rate, capacity)
38759 this._finalized = false
38760 }
38761
38762 inherits(Shake, Transform)
38763
38764 Shake.prototype._transform = function (chunk, encoding, callback) {
38765 var error = null
38766 try {
38767 this.update(chunk, encoding)
38768 } catch (err) {
38769 error = err
38770 }
38771
38772 callback(error)
38773 }
38774
38775 Shake.prototype._flush = function () {}
38776
38777 Shake.prototype._read = function (size) {
38778 this.push(this.squeeze(size))
38779 }
38780
38781 Shake.prototype.update = function (data, encoding) {
38782 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
38783 if (this._finalized) throw new Error('Squeeze already called')
38784 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
38785
38786 this._state.absorb(data)
38787
38788 return this
38789 }
38790
38791 Shake.prototype.squeeze = function (dataByteLength, encoding) {
38792 if (!this._finalized) {
38793 this._finalized = true
38794 this._state.absorbLastFewBits(this._delimitedSuffix)
38795 }
38796
38797 var data = this._state.squeeze(dataByteLength)
38798 if (encoding !== undefined) data = data.toString(encoding)
38799
38800 return data
38801 }
38802
38803 Shake.prototype._resetState = function () {
38804 this._state.initialize(this._rate, this._capacity)
38805 return this
38806 }
38807
38808 Shake.prototype._clone = function () {
38809 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
38810 this._state.copy(clone._state)
38811 clone._finalized = this._finalized
38812
38813 return clone
38814 }
38815
38816 return Shake
38817 }
38818
38819 }).call(this,require("buffer").Buffer)
38820 },{"buffer":5,"inherits":63,"stream":25}],69:[function(require,module,exports){
38821 'use strict'
38822 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]
38823
38824 exports.p1600 = function (s) {
38825 for (var round = 0; round < 24; ++round) {
38826 // theta
38827 var lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]
38828 var hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]
38829 var lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]
38830 var hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]
38831 var lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]
38832 var hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]
38833 var lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]
38834 var hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]
38835 var lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]
38836 var hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]
38837
38838 var lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)
38839 var hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)
38840 var t1slo0 = s[0] ^ lo
38841 var t1shi0 = s[1] ^ hi
38842 var t1slo5 = s[10] ^ lo
38843 var t1shi5 = s[11] ^ hi
38844 var t1slo10 = s[20] ^ lo
38845 var t1shi10 = s[21] ^ hi
38846 var t1slo15 = s[30] ^ lo
38847 var t1shi15 = s[31] ^ hi
38848 var t1slo20 = s[40] ^ lo
38849 var t1shi20 = s[41] ^ hi
38850 lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)
38851 hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)
38852 var t1slo1 = s[2] ^ lo
38853 var t1shi1 = s[3] ^ hi
38854 var t1slo6 = s[12] ^ lo
38855 var t1shi6 = s[13] ^ hi
38856 var t1slo11 = s[22] ^ lo
38857 var t1shi11 = s[23] ^ hi
38858 var t1slo16 = s[32] ^ lo
38859 var t1shi16 = s[33] ^ hi
38860 var t1slo21 = s[42] ^ lo
38861 var t1shi21 = s[43] ^ hi
38862 lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)
38863 hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)
38864 var t1slo2 = s[4] ^ lo
38865 var t1shi2 = s[5] ^ hi
38866 var t1slo7 = s[14] ^ lo
38867 var t1shi7 = s[15] ^ hi
38868 var t1slo12 = s[24] ^ lo
38869 var t1shi12 = s[25] ^ hi
38870 var t1slo17 = s[34] ^ lo
38871 var t1shi17 = s[35] ^ hi
38872 var t1slo22 = s[44] ^ lo
38873 var t1shi22 = s[45] ^ hi
38874 lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)
38875 hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)
38876 var t1slo3 = s[6] ^ lo
38877 var t1shi3 = s[7] ^ hi
38878 var t1slo8 = s[16] ^ lo
38879 var t1shi8 = s[17] ^ hi
38880 var t1slo13 = s[26] ^ lo
38881 var t1shi13 = s[27] ^ hi
38882 var t1slo18 = s[36] ^ lo
38883 var t1shi18 = s[37] ^ hi
38884 var t1slo23 = s[46] ^ lo
38885 var t1shi23 = s[47] ^ hi
38886 lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)
38887 hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)
38888 var t1slo4 = s[8] ^ lo
38889 var t1shi4 = s[9] ^ hi
38890 var t1slo9 = s[18] ^ lo
38891 var t1shi9 = s[19] ^ hi
38892 var t1slo14 = s[28] ^ lo
38893 var t1shi14 = s[29] ^ hi
38894 var t1slo19 = s[38] ^ lo
38895 var t1shi19 = s[39] ^ hi
38896 var t1slo24 = s[48] ^ lo
38897 var t1shi24 = s[49] ^ hi
38898
38899 // rho & pi
38900 var t2slo0 = t1slo0
38901 var t2shi0 = t1shi0
38902 var t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)
38903 var t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)
38904 var t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)
38905 var t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)
38906 var t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)
38907 var t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)
38908 var t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)
38909 var t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)
38910 var t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)
38911 var t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)
38912 var t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)
38913 var t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)
38914 var t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)
38915 var t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)
38916 var t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)
38917 var t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)
38918 var t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)
38919 var t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)
38920 var t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)
38921 var t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)
38922 var t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)
38923 var t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)
38924 var t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)
38925 var t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)
38926 var t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)
38927 var t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)
38928 var t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)
38929 var t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)
38930 var t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)
38931 var t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)
38932 var t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)
38933 var t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)
38934 var t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)
38935 var t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)
38936 var t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)
38937 var t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)
38938 var t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)
38939 var t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)
38940 var t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)
38941 var t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)
38942 var t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)
38943 var t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)
38944 var t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)
38945 var t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)
38946 var t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)
38947 var t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)
38948 var t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)
38949 var t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)
38950
38951 // chi
38952 s[0] = t2slo0 ^ (~t2slo1 & t2slo2)
38953 s[1] = t2shi0 ^ (~t2shi1 & t2shi2)
38954 s[10] = t2slo5 ^ (~t2slo6 & t2slo7)
38955 s[11] = t2shi5 ^ (~t2shi6 & t2shi7)
38956 s[20] = t2slo10 ^ (~t2slo11 & t2slo12)
38957 s[21] = t2shi10 ^ (~t2shi11 & t2shi12)
38958 s[30] = t2slo15 ^ (~t2slo16 & t2slo17)
38959 s[31] = t2shi15 ^ (~t2shi16 & t2shi17)
38960 s[40] = t2slo20 ^ (~t2slo21 & t2slo22)
38961 s[41] = t2shi20 ^ (~t2shi21 & t2shi22)
38962 s[2] = t2slo1 ^ (~t2slo2 & t2slo3)
38963 s[3] = t2shi1 ^ (~t2shi2 & t2shi3)
38964 s[12] = t2slo6 ^ (~t2slo7 & t2slo8)
38965 s[13] = t2shi6 ^ (~t2shi7 & t2shi8)
38966 s[22] = t2slo11 ^ (~t2slo12 & t2slo13)
38967 s[23] = t2shi11 ^ (~t2shi12 & t2shi13)
38968 s[32] = t2slo16 ^ (~t2slo17 & t2slo18)
38969 s[33] = t2shi16 ^ (~t2shi17 & t2shi18)
38970 s[42] = t2slo21 ^ (~t2slo22 & t2slo23)
38971 s[43] = t2shi21 ^ (~t2shi22 & t2shi23)
38972 s[4] = t2slo2 ^ (~t2slo3 & t2slo4)
38973 s[5] = t2shi2 ^ (~t2shi3 & t2shi4)
38974 s[14] = t2slo7 ^ (~t2slo8 & t2slo9)
38975 s[15] = t2shi7 ^ (~t2shi8 & t2shi9)
38976 s[24] = t2slo12 ^ (~t2slo13 & t2slo14)
38977 s[25] = t2shi12 ^ (~t2shi13 & t2shi14)
38978 s[34] = t2slo17 ^ (~t2slo18 & t2slo19)
38979 s[35] = t2shi17 ^ (~t2shi18 & t2shi19)
38980 s[44] = t2slo22 ^ (~t2slo23 & t2slo24)
38981 s[45] = t2shi22 ^ (~t2shi23 & t2shi24)
38982 s[6] = t2slo3 ^ (~t2slo4 & t2slo0)
38983 s[7] = t2shi3 ^ (~t2shi4 & t2shi0)
38984 s[16] = t2slo8 ^ (~t2slo9 & t2slo5)
38985 s[17] = t2shi8 ^ (~t2shi9 & t2shi5)
38986 s[26] = t2slo13 ^ (~t2slo14 & t2slo10)
38987 s[27] = t2shi13 ^ (~t2shi14 & t2shi10)
38988 s[36] = t2slo18 ^ (~t2slo19 & t2slo15)
38989 s[37] = t2shi18 ^ (~t2shi19 & t2shi15)
38990 s[46] = t2slo23 ^ (~t2slo24 & t2slo20)
38991 s[47] = t2shi23 ^ (~t2shi24 & t2shi20)
38992 s[8] = t2slo4 ^ (~t2slo0 & t2slo1)
38993 s[9] = t2shi4 ^ (~t2shi0 & t2shi1)
38994 s[18] = t2slo9 ^ (~t2slo5 & t2slo6)
38995 s[19] = t2shi9 ^ (~t2shi5 & t2shi6)
38996 s[28] = t2slo14 ^ (~t2slo10 & t2slo11)
38997 s[29] = t2shi14 ^ (~t2shi10 & t2shi11)
38998 s[38] = t2slo19 ^ (~t2slo15 & t2slo16)
38999 s[39] = t2shi19 ^ (~t2shi15 & t2shi16)
39000 s[48] = t2slo24 ^ (~t2slo20 & t2slo21)
39001 s[49] = t2shi24 ^ (~t2shi20 & t2shi21)
39002
39003 // iota
39004 s[0] ^= P1600_ROUND_CONSTANTS[round * 2]
39005 s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]
39006 }
39007 }
39008
39009 },{}],70:[function(require,module,exports){
39010 (function (Buffer){
39011 'use strict'
39012 var keccakState = require('./keccak-state-unroll')
39013
39014 function Keccak () {
39015 // much faster than `new Array(50)`
39016 this.state = [
39017 0, 0, 0, 0, 0,
39018 0, 0, 0, 0, 0,
39019 0, 0, 0, 0, 0,
39020 0, 0, 0, 0, 0,
39021 0, 0, 0, 0, 0
39022 ]
39023
39024 this.blockSize = null
39025 this.count = 0
39026 this.squeezing = false
39027 }
39028
39029 Keccak.prototype.initialize = function (rate, capacity) {
39030 for (var i = 0; i < 50; ++i) this.state[i] = 0
39031 this.blockSize = rate / 8
39032 this.count = 0
39033 this.squeezing = false
39034 }
39035
39036 Keccak.prototype.absorb = function (data) {
39037 for (var i = 0; i < data.length; ++i) {
39038 this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))
39039 this.count += 1
39040 if (this.count === this.blockSize) {
39041 keccakState.p1600(this.state)
39042 this.count = 0
39043 }
39044 }
39045 }
39046
39047 Keccak.prototype.absorbLastFewBits = function (bits) {
39048 this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))
39049 if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)
39050 this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))
39051 keccakState.p1600(this.state)
39052 this.count = 0
39053 this.squeezing = true
39054 }
39055
39056 Keccak.prototype.squeeze = function (length) {
39057 if (!this.squeezing) this.absorbLastFewBits(0x01)
39058
39059 var output = Buffer.allocUnsafe(length)
39060 for (var i = 0; i < length; ++i) {
39061 output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff
39062 this.count += 1
39063 if (this.count === this.blockSize) {
39064 keccakState.p1600(this.state)
39065 this.count = 0
39066 }
39067 }
39068
39069 return output
39070 }
39071
39072 Keccak.prototype.copy = function (dest) {
39073 for (var i = 0; i < 50; ++i) dest.state[i] = this.state[i]
39074 dest.blockSize = this.blockSize
39075 dest.count = this.count
39076 dest.squeezing = this.squeezing
39077 }
39078
39079 module.exports = Keccak
39080
39081 }).call(this,require("buffer").Buffer)
39082 },{"./keccak-state-unroll":69,"buffer":5}],71:[function(require,module,exports){
39083 (function (Buffer){
39084 /*
39085 CryptoJS v3.1.2
39086 code.google.com/p/crypto-js
39087 (c) 2009-2013 by Jeff Mott. All rights reserved.
39088 code.google.com/p/crypto-js/wiki/License
39089 */
39090 /** @preserve
39091 (c) 2012 by Cédric Mesnil. All rights reserved.
39092
39093 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
39094
39095 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
39096 - 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.
39097
39098 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.
39099 */
39100
39101 // constants table
39102 var zl = [
39103 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
39104 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
39105 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
39106 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
39107 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
39108 ]
39109
39110 var zr = [
39111 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
39112 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
39113 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
39114 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
39115 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
39116 ]
39117
39118 var sl = [
39119 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
39120 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
39121 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
39122 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
39123 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
39124 ]
39125
39126 var sr = [
39127 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
39128 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
39129 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
39130 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
39131 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
39132 ]
39133
39134 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
39135 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
39136
39137 function bytesToWords (bytes) {
39138 var words = []
39139 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
39140 words[b >>> 5] |= bytes[i] << (24 - b % 32)
39141 }
39142 return words
39143 }
39144
39145 function wordsToBytes (words) {
39146 var bytes = []
39147 for (var b = 0; b < words.length * 32; b += 8) {
39148 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
39149 }
39150 return bytes
39151 }
39152
39153 function processBlock (H, M, offset) {
39154 // swap endian
39155 for (var i = 0; i < 16; i++) {
39156 var offset_i = offset + i
39157 var M_offset_i = M[offset_i]
39158
39159 // Swap
39160 M[offset_i] = (
39161 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
39162 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
39163 )
39164 }
39165
39166 // Working variables
39167 var al, bl, cl, dl, el
39168 var ar, br, cr, dr, er
39169
39170 ar = al = H[0]
39171 br = bl = H[1]
39172 cr = cl = H[2]
39173 dr = dl = H[3]
39174 er = el = H[4]
39175
39176 // computation
39177 var t
39178 for (i = 0; i < 80; i += 1) {
39179 t = (al + M[offset + zl[i]]) | 0
39180 if (i < 16) {
39181 t += f1(bl, cl, dl) + hl[0]
39182 } else if (i < 32) {
39183 t += f2(bl, cl, dl) + hl[1]
39184 } else if (i < 48) {
39185 t += f3(bl, cl, dl) + hl[2]
39186 } else if (i < 64) {
39187 t += f4(bl, cl, dl) + hl[3]
39188 } else {// if (i<80) {
39189 t += f5(bl, cl, dl) + hl[4]
39190 }
39191 t = t | 0
39192 t = rotl(t, sl[i])
39193 t = (t + el) | 0
39194 al = el
39195 el = dl
39196 dl = rotl(cl, 10)
39197 cl = bl
39198 bl = t
39199
39200 t = (ar + M[offset + zr[i]]) | 0
39201 if (i < 16) {
39202 t += f5(br, cr, dr) + hr[0]
39203 } else if (i < 32) {
39204 t += f4(br, cr, dr) + hr[1]
39205 } else if (i < 48) {
39206 t += f3(br, cr, dr) + hr[2]
39207 } else if (i < 64) {
39208 t += f2(br, cr, dr) + hr[3]
39209 } else {// if (i<80) {
39210 t += f1(br, cr, dr) + hr[4]
39211 }
39212
39213 t = t | 0
39214 t = rotl(t, sr[i])
39215 t = (t + er) | 0
39216 ar = er
39217 er = dr
39218 dr = rotl(cr, 10)
39219 cr = br
39220 br = t
39221 }
39222
39223 // intermediate hash value
39224 t = (H[1] + cl + dr) | 0
39225 H[1] = (H[2] + dl + er) | 0
39226 H[2] = (H[3] + el + ar) | 0
39227 H[3] = (H[4] + al + br) | 0
39228 H[4] = (H[0] + bl + cr) | 0
39229 H[0] = t
39230 }
39231
39232 function f1 (x, y, z) {
39233 return ((x) ^ (y) ^ (z))
39234 }
39235
39236 function f2 (x, y, z) {
39237 return (((x) & (y)) | ((~x) & (z)))
39238 }
39239
39240 function f3 (x, y, z) {
39241 return (((x) | (~(y))) ^ (z))
39242 }
39243
39244 function f4 (x, y, z) {
39245 return (((x) & (z)) | ((y) & (~(z))))
39246 }
39247
39248 function f5 (x, y, z) {
39249 return ((x) ^ ((y) | (~(z))))
39250 }
39251
39252 function rotl (x, n) {
39253 return (x << n) | (x >>> (32 - n))
39254 }
39255
39256 function ripemd160 (message) {
39257 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
39258
39259 if (typeof message === 'string') {
39260 message = new Buffer(message, 'utf8')
39261 }
39262
39263 var m = bytesToWords(message)
39264
39265 var nBitsLeft = message.length * 8
39266 var nBitsTotal = message.length * 8
39267
39268 // Add padding
39269 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
39270 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
39271 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
39272 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
39273 )
39274
39275 for (var i = 0; i < m.length; i += 16) {
39276 processBlock(H, m, i)
39277 }
39278
39279 // swap endian
39280 for (i = 0; i < 5; i++) {
39281 // shortcut
39282 var H_i = H[i]
39283
39284 // Swap
39285 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
39286 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
39287 }
39288
39289 var digestbytes = wordsToBytes(H)
39290 return new Buffer(digestbytes)
39291 }
39292
39293 module.exports = ripemd160
39294
39295 }).call(this,require("buffer").Buffer)
39296 },{"buffer":5}],72:[function(require,module,exports){
39297 (function (Buffer){
39298 const assert = require('assert')
39299 /**
39300 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
39301 * This function takes in a data, convert it to buffer if not, and a length for recursion
39302 *
39303 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
39304 * @returns {Buffer} - returns buffer of encoded data
39305 **/
39306 exports.encode = function (input) {
39307 if (input instanceof Array) {
39308 var output = []
39309 for (var i = 0; i < input.length; i++) {
39310 output.push(exports.encode(input[i]))
39311 }
39312 var buf = Buffer.concat(output)
39313 return Buffer.concat([encodeLength(buf.length, 192), buf])
39314 } else {
39315 input = toBuffer(input)
39316 if (input.length === 1 && input[0] < 128) {
39317 return input
39318 } else {
39319 return Buffer.concat([encodeLength(input.length, 128), input])
39320 }
39321 }
39322 }
39323
39324 function safeParseInt (v, base) {
39325 if (v.slice(0, 2) === '00') {
39326 throw (new Error('invalid RLP: extra zeros'))
39327 }
39328
39329 return parseInt(v, base)
39330 }
39331
39332 function encodeLength (len, offset) {
39333 if (len < 56) {
39334 return new Buffer([len + offset])
39335 } else {
39336 var hexLength = intToHex(len)
39337 var lLength = hexLength.length / 2
39338 var firstByte = intToHex(offset + 55 + lLength)
39339 return new Buffer(firstByte + hexLength, 'hex')
39340 }
39341 }
39342
39343 /**
39344 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}
39345 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
39346 * @returns {Array} - returns decode Array of Buffers containg the original message
39347 **/
39348 exports.decode = function (input, stream) {
39349 if (!input || input.length === 0) {
39350 return new Buffer([])
39351 }
39352
39353 input = toBuffer(input)
39354 var decoded = _decode(input)
39355
39356 if (stream) {
39357 return decoded
39358 }
39359
39360 assert.equal(decoded.remainder.length, 0, 'invalid remainder')
39361 return decoded.data
39362 }
39363
39364 exports.getLength = function (input) {
39365 if (!input || input.length === 0) {
39366 return new Buffer([])
39367 }
39368
39369 input = toBuffer(input)
39370 var firstByte = input[0]
39371 if (firstByte <= 0x7f) {
39372 return input.length
39373 } else if (firstByte <= 0xb7) {
39374 return firstByte - 0x7f
39375 } else if (firstByte <= 0xbf) {
39376 return firstByte - 0xb6
39377 } else if (firstByte <= 0xf7) {
39378 // a list between 0-55 bytes long
39379 return firstByte - 0xbf
39380 } else {
39381 // a list over 55 bytes long
39382 var llength = firstByte - 0xf6
39383 var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39384 return llength + length
39385 }
39386 }
39387
39388 function _decode (input) {
39389 var length, llength, data, innerRemainder, d
39390 var decoded = []
39391 var firstByte = input[0]
39392
39393 if (firstByte <= 0x7f) {
39394 // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
39395 return {
39396 data: input.slice(0, 1),
39397 remainder: input.slice(1)
39398 }
39399 } else if (firstByte <= 0xb7) {
39400 // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string
39401 // The range of the first byte is [0x80, 0xb7]
39402 length = firstByte - 0x7f
39403
39404 // set 0x80 null to 0
39405 if (firstByte === 0x80) {
39406 data = new Buffer([])
39407 } else {
39408 data = input.slice(1, length)
39409 }
39410
39411 if (length === 2 && data[0] < 0x80) {
39412 throw new Error('invalid rlp encoding: byte must be less 0x80')
39413 }
39414
39415 return {
39416 data: data,
39417 remainder: input.slice(length)
39418 }
39419 } else if (firstByte <= 0xbf) {
39420 llength = firstByte - 0xb6
39421 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39422 data = input.slice(llength, length + llength)
39423 if (data.length < length) {
39424 throw (new Error('invalid RLP'))
39425 }
39426
39427 return {
39428 data: data,
39429 remainder: input.slice(length + llength)
39430 }
39431 } else if (firstByte <= 0xf7) {
39432 // a list between 0-55 bytes long
39433 length = firstByte - 0xbf
39434 innerRemainder = input.slice(1, length)
39435 while (innerRemainder.length) {
39436 d = _decode(innerRemainder)
39437 decoded.push(d.data)
39438 innerRemainder = d.remainder
39439 }
39440
39441 return {
39442 data: decoded,
39443 remainder: input.slice(length)
39444 }
39445 } else {
39446 // a list over 55 bytes long
39447 llength = firstByte - 0xf6
39448 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39449 var totalLength = llength + length
39450 if (totalLength > input.length) {
39451 throw new Error('invalid rlp: total length is larger than the data')
39452 }
39453
39454 innerRemainder = input.slice(llength, totalLength)
39455 if (innerRemainder.length === 0) {
39456 throw new Error('invalid rlp, List has a invalid length')
39457 }
39458
39459 while (innerRemainder.length) {
39460 d = _decode(innerRemainder)
39461 decoded.push(d.data)
39462 innerRemainder = d.remainder
39463 }
39464 return {
39465 data: decoded,
39466 remainder: input.slice(totalLength)
39467 }
39468 }
39469 }
39470
39471 function isHexPrefixed (str) {
39472 return str.slice(0, 2) === '0x'
39473 }
39474
39475 // Removes 0x from a given String
39476 function stripHexPrefix (str) {
39477 if (typeof str !== 'string') {
39478 return str
39479 }
39480 return isHexPrefixed(str) ? str.slice(2) : str
39481 }
39482
39483 function intToHex (i) {
39484 var hex = i.toString(16)
39485 if (hex.length % 2) {
39486 hex = '0' + hex
39487 }
39488
39489 return hex
39490 }
39491
39492 function padToEven (a) {
39493 if (a.length % 2) a = '0' + a
39494 return a
39495 }
39496
39497 function intToBuffer (i) {
39498 var hex = intToHex(i)
39499 return new Buffer(hex, 'hex')
39500 }
39501
39502 function toBuffer (v) {
39503 if (!Buffer.isBuffer(v)) {
39504 if (typeof v === 'string') {
39505 if (isHexPrefixed(v)) {
39506 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
39507 } else {
39508 v = new Buffer(v)
39509 }
39510 } else if (typeof v === 'number') {
39511 if (!v) {
39512 v = new Buffer([])
39513 } else {
39514 v = intToBuffer(v)
39515 }
39516 } else if (v === null || v === undefined) {
39517 v = new Buffer([])
39518 } else if (v.toArray) {
39519 // converts a BN to a Buffer
39520 v = new Buffer(v.toArray())
39521 } else {
39522 throw new Error('invalid type')
39523 }
39524 }
39525 return v
39526 }
39527
39528 }).call(this,require("buffer").Buffer)
39529 },{"assert":1,"buffer":5}],73:[function(require,module,exports){
39530 'use strict'
39531 module.exports = require('./lib')(require('./lib/elliptic'))
39532
39533 },{"./lib":77,"./lib/elliptic":76}],74:[function(require,module,exports){
39534 (function (Buffer){
39535 'use strict'
39536 var toString = Object.prototype.toString
39537
39538 // TypeError
39539 exports.isArray = function (value, message) {
39540 if (!Array.isArray(value)) throw TypeError(message)
39541 }
39542
39543 exports.isBoolean = function (value, message) {
39544 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
39545 }
39546
39547 exports.isBuffer = function (value, message) {
39548 if (!Buffer.isBuffer(value)) throw TypeError(message)
39549 }
39550
39551 exports.isFunction = function (value, message) {
39552 if (toString.call(value) !== '[object Function]') throw TypeError(message)
39553 }
39554
39555 exports.isNumber = function (value, message) {
39556 if (toString.call(value) !== '[object Number]') throw TypeError(message)
39557 }
39558
39559 exports.isObject = function (value, message) {
39560 if (toString.call(value) !== '[object Object]') throw TypeError(message)
39561 }
39562
39563 // RangeError
39564 exports.isBufferLength = function (buffer, length, message) {
39565 if (buffer.length !== length) throw RangeError(message)
39566 }
39567
39568 exports.isBufferLength2 = function (buffer, length1, length2, message) {
39569 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
39570 }
39571
39572 exports.isLengthGTZero = function (value, message) {
39573 if (value.length === 0) throw RangeError(message)
39574 }
39575
39576 exports.isNumberInInterval = function (number, x, y, message) {
39577 if (number <= x || number >= y) throw RangeError(message)
39578 }
39579
39580 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
39581 },{"../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":10}],75:[function(require,module,exports){
39582 (function (Buffer){
39583 'use strict'
39584 var bip66 = require('bip66')
39585
39586 var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
39587 // begin
39588 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,
39589 // private key
39590 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39591 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39592 // middle
39593 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
39594 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39595 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39596 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
39597 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
39598 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
39599 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39600 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
39601 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,
39602 // public key
39603 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39604 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39605 0x00
39606 ])
39607
39608 var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
39609 // begin
39610 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,
39611 // private key
39612 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39613 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39614 // middle
39615 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
39616 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39617 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39618 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
39619 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
39620 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
39621 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,
39622 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
39623 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39624 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
39625 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,
39626 // public key
39627 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
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 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39631 0x00
39632 ])
39633
39634 var ZERO_BUFFER_32 = new Buffer([
39635 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39636 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
39637 ])
39638
39639 exports.privateKeyExport = function (privateKey, publicKey, compressed) {
39640 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
39641 privateKey.copy(result, compressed ? 8 : 9)
39642 publicKey.copy(result, compressed ? 181 : 214)
39643 return result
39644 }
39645
39646 exports.privateKeyImport = function (privateKey) {
39647 var length = privateKey.length
39648
39649 // sequence header
39650 var index = 0
39651 if (length < index + 1 || privateKey[index] !== 0x30) return
39652 index += 1
39653
39654 // sequence length constructor
39655 if (length < index + 1 || !(privateKey[index] & 0x80)) return
39656
39657 var lenb = privateKey[index] & 0x7f
39658 index += 1
39659 if (lenb < 1 || lenb > 2) return
39660 if (length < index + lenb) return
39661
39662 // sequence length
39663 var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)
39664 index += lenb
39665 if (length < index + len) return
39666
39667 // sequence element 0: version number (=1)
39668 if (length < index + 3 ||
39669 privateKey[index] !== 0x02 ||
39670 privateKey[index + 1] !== 0x01 ||
39671 privateKey[index + 2] !== 0x01) {
39672 return
39673 }
39674 index += 3
39675
39676 // sequence element 1: octet string, up to 32 bytes
39677 if (length < index + 2 ||
39678 privateKey[index] !== 0x04 ||
39679 privateKey[index + 1] > 0x20 ||
39680 length < index + 2 + privateKey[index + 1]) {
39681 return
39682 }
39683
39684 return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])
39685 }
39686
39687 exports.signatureExport = function (sigObj) {
39688 var r = Buffer.concat([new Buffer([0]), sigObj.r])
39689 for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);
39690
39691 var s = Buffer.concat([new Buffer([0]), sigObj.s])
39692 for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);
39693
39694 return bip66.encode(r.slice(posR), s.slice(posS))
39695 }
39696
39697 exports.signatureImport = function (sig) {
39698 var r = new Buffer(ZERO_BUFFER_32)
39699 var s = new Buffer(ZERO_BUFFER_32)
39700
39701 try {
39702 var sigObj = bip66.decode(sig)
39703 if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)
39704 if (sigObj.r.length > 32) throw new Error('R length is too long')
39705 if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)
39706 if (sigObj.s.length > 32) throw new Error('S length is too long')
39707 } catch (err) {
39708 return
39709 }
39710
39711 sigObj.r.copy(r, 32 - sigObj.r.length)
39712 sigObj.s.copy(s, 32 - sigObj.s.length)
39713
39714 return { r: r, s: s }
39715 }
39716
39717 exports.signatureImportLax = function (sig) {
39718 var r = new Buffer(ZERO_BUFFER_32)
39719 var s = new Buffer(ZERO_BUFFER_32)
39720
39721 var length = sig.length
39722 var index = 0
39723
39724 // sequence tag byte
39725 if (sig[index++] !== 0x30) return
39726
39727 // sequence length byte
39728 var lenbyte = sig[index++]
39729 if (lenbyte & 0x80) {
39730 index += lenbyte - 0x80
39731 if (index > length) return
39732 }
39733
39734 // sequence tag byte for r
39735 if (sig[index++] !== 0x02) return
39736
39737 // length for r
39738 var rlen = sig[index++]
39739 if (rlen & 0x80) {
39740 lenbyte = rlen - 0x80
39741 if (index + lenbyte > length) return
39742 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
39743 for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]
39744 }
39745 if (rlen > length - index) return
39746 var rindex = index
39747 index += rlen
39748
39749 // sequence tag byte for s
39750 if (sig[index++] !== 0x02) return
39751
39752 // length for s
39753 var slen = sig[index++]
39754 if (slen & 0x80) {
39755 lenbyte = slen - 0x80
39756 if (index + lenbyte > length) return
39757 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
39758 for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]
39759 }
39760 if (slen > length - index) return
39761 var sindex = index
39762 index += slen
39763
39764 // ignore leading zeros in r
39765 for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);
39766 // copy r value
39767 if (rlen > 32) return
39768 var rvalue = sig.slice(rindex, rindex + rlen)
39769 rvalue.copy(r, 32 - rvalue.length)
39770
39771 // ignore leading zeros in s
39772 for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);
39773 // copy s value
39774 if (slen > 32) return
39775 var svalue = sig.slice(sindex, sindex + slen)
39776 svalue.copy(s, 32 - svalue.length)
39777
39778 return { r: r, s: s }
39779 }
39780
39781 }).call(this,require("buffer").Buffer)
39782 },{"bip66":32,"buffer":5}],76:[function(require,module,exports){
39783 (function (Buffer){
39784 'use strict'
39785 var createHash = require('create-hash')
39786 var BN = require('bn.js')
39787 var EC = require('elliptic').ec
39788
39789 var messages = require('../messages.json')
39790
39791 var ec = new EC('secp256k1')
39792 var ecparams = ec.curve
39793
39794 function loadCompressedPublicKey (first, xBuffer) {
39795 var x = new BN(xBuffer)
39796
39797 // overflow
39798 if (x.cmp(ecparams.p) >= 0) return null
39799 x = x.toRed(ecparams.red)
39800
39801 // compute corresponding Y
39802 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
39803 if ((first === 0x03) !== y.isOdd()) y = y.redNeg()
39804
39805 return ec.keyPair({ pub: { x: x, y: y } })
39806 }
39807
39808 function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
39809 var x = new BN(xBuffer)
39810 var y = new BN(yBuffer)
39811
39812 // overflow
39813 if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null
39814
39815 x = x.toRed(ecparams.red)
39816 y = y.toRed(ecparams.red)
39817
39818 // is odd flag
39819 if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null
39820
39821 // x*x*x + b = y*y
39822 var x3 = x.redSqr().redIMul(x)
39823 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
39824
39825 return ec.keyPair({ pub: { x: x, y: y } })
39826 }
39827
39828 function loadPublicKey (publicKey) {
39829 var first = publicKey[0]
39830 switch (first) {
39831 case 0x02:
39832 case 0x03:
39833 if (publicKey.length !== 33) return null
39834 return loadCompressedPublicKey(first, publicKey.slice(1, 33))
39835 case 0x04:
39836 case 0x06:
39837 case 0x07:
39838 if (publicKey.length !== 65) return null
39839 return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))
39840 default:
39841 return null
39842 }
39843 }
39844
39845 exports.privateKeyVerify = function (privateKey) {
39846 var bn = new BN(privateKey)
39847 return bn.cmp(ecparams.n) < 0 && !bn.isZero()
39848 }
39849
39850 exports.privateKeyExport = function (privateKey, compressed) {
39851 var d = new BN(privateKey)
39852 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
39853
39854 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
39855 }
39856
39857 exports.privateKeyTweakAdd = function (privateKey, tweak) {
39858 var bn = new BN(tweak)
39859 if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
39860
39861 bn.iadd(new BN(privateKey))
39862 if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)
39863 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
39864
39865 return bn.toArrayLike(Buffer, 'be', 32)
39866 }
39867
39868 exports.privateKeyTweakMul = function (privateKey, tweak) {
39869 var bn = new BN(tweak)
39870 if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
39871
39872 bn.imul(new BN(privateKey))
39873 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
39874
39875 return bn.toArrayLike(Buffer, 'be', 32)
39876 }
39877
39878 exports.publicKeyCreate = function (privateKey, compressed) {
39879 var d = new BN(privateKey)
39880 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
39881
39882 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
39883 }
39884
39885 exports.publicKeyConvert = function (publicKey, compressed) {
39886 var pair = loadPublicKey(publicKey)
39887 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39888
39889 return new Buffer(pair.getPublic(compressed, true))
39890 }
39891
39892 exports.publicKeyVerify = function (publicKey) {
39893 return loadPublicKey(publicKey) !== null
39894 }
39895
39896 exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
39897 var pair = loadPublicKey(publicKey)
39898 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39899
39900 tweak = new BN(tweak)
39901 if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
39902
39903 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
39904 }
39905
39906 exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
39907 var pair = loadPublicKey(publicKey)
39908 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39909
39910 tweak = new BN(tweak)
39911 if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
39912
39913 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
39914 }
39915
39916 exports.publicKeyCombine = function (publicKeys, compressed) {
39917 var pairs = new Array(publicKeys.length)
39918 for (var i = 0; i < publicKeys.length; ++i) {
39919 pairs[i] = loadPublicKey(publicKeys[i])
39920 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39921 }
39922
39923 var point = pairs[0].pub
39924 for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
39925 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
39926
39927 return new Buffer(point.encode(true, compressed))
39928 }
39929
39930 exports.signatureNormalize = function (signature) {
39931 var r = new BN(signature.slice(0, 32))
39932 var s = new BN(signature.slice(32, 64))
39933 if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39934
39935 var result = new Buffer(signature)
39936 if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)
39937
39938 return result
39939 }
39940
39941 exports.signatureExport = function (signature) {
39942 var r = signature.slice(0, 32)
39943 var s = signature.slice(32, 64)
39944 if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39945
39946 return { r: r, s: s }
39947 }
39948
39949 exports.signatureImport = function (sigObj) {
39950 var r = new BN(sigObj.r)
39951 if (r.cmp(ecparams.n) >= 0) r = new BN(0)
39952
39953 var s = new BN(sigObj.s)
39954 if (s.cmp(ecparams.n) >= 0) s = new BN(0)
39955
39956 return Buffer.concat([
39957 r.toArrayLike(Buffer, 'be', 32),
39958 s.toArrayLike(Buffer, 'be', 32)
39959 ])
39960 }
39961
39962 exports.sign = function (message, privateKey, noncefn, data) {
39963 if (typeof noncefn === 'function') {
39964 var getNonce = noncefn
39965 noncefn = function (counter) {
39966 var nonce = getNonce(message, privateKey, null, data, counter)
39967 if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)
39968
39969 return new BN(nonce)
39970 }
39971 }
39972
39973 var d = new BN(privateKey)
39974 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
39975
39976 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
39977 return {
39978 signature: Buffer.concat([
39979 result.r.toArrayLike(Buffer, 'be', 32),
39980 result.s.toArrayLike(Buffer, 'be', 32)
39981 ]),
39982 recovery: result.recoveryParam
39983 }
39984 }
39985
39986 exports.verify = function (message, signature, publicKey) {
39987 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
39988
39989 var sigr = new BN(sigObj.r)
39990 var sigs = new BN(sigObj.s)
39991 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39992 if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false
39993
39994 var pair = loadPublicKey(publicKey)
39995 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39996
39997 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
39998 }
39999
40000 exports.recover = function (message, signature, recovery, compressed) {
40001 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
40002
40003 var sigr = new BN(sigObj.r)
40004 var sigs = new BN(sigObj.s)
40005 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
40006
40007 try {
40008 if (sigr.isZero() || sigs.isZero()) throw new Error()
40009
40010 var point = ec.recoverPubKey(message, sigObj, recovery)
40011 return new Buffer(point.encode(true, compressed))
40012 } catch (err) {
40013 throw new Error(messages.ECDSA_RECOVER_FAIL)
40014 }
40015 }
40016
40017 exports.ecdh = function (publicKey, privateKey) {
40018 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
40019 return createHash('sha256').update(shared).digest()
40020 }
40021
40022 exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
40023 var pair = loadPublicKey(publicKey)
40024 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
40025
40026 var scalar = new BN(privateKey)
40027 if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
40028
40029 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
40030 }
40031
40032 }).call(this,require("buffer").Buffer)
40033 },{"../messages.json":78,"bn.js":33,"buffer":5,"create-hash":36,"elliptic":39}],77:[function(require,module,exports){
40034 'use strict'
40035 var assert = require('./assert')
40036 var der = require('./der')
40037 var messages = require('./messages.json')
40038
40039 function initCompressedValue (value, defaultValue) {
40040 if (value === undefined) return defaultValue
40041
40042 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
40043 return value
40044 }
40045
40046 module.exports = function (secp256k1) {
40047 return {
40048 privateKeyVerify: function (privateKey) {
40049 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40050 return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)
40051 },
40052
40053 privateKeyExport: function (privateKey, compressed) {
40054 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40055 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40056
40057 compressed = initCompressedValue(compressed, true)
40058 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
40059
40060 return der.privateKeyExport(privateKey, publicKey, compressed)
40061 },
40062
40063 privateKeyImport: function (privateKey) {
40064 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40065
40066 privateKey = der.privateKeyImport(privateKey)
40067 if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
40068
40069 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
40070 },
40071
40072 privateKeyTweakAdd: function (privateKey, tweak) {
40073 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40074 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40075
40076 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40077 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40078
40079 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
40080 },
40081
40082 privateKeyTweakMul: function (privateKey, tweak) {
40083 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40084 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40085
40086 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40087 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40088
40089 return secp256k1.privateKeyTweakMul(privateKey, tweak)
40090 },
40091
40092 publicKeyCreate: function (privateKey, compressed) {
40093 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40094 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40095
40096 compressed = initCompressedValue(compressed, true)
40097
40098 return secp256k1.publicKeyCreate(privateKey, compressed)
40099 },
40100
40101 publicKeyConvert: function (publicKey, compressed) {
40102 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40103 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40104
40105 compressed = initCompressedValue(compressed, true)
40106
40107 return secp256k1.publicKeyConvert(publicKey, compressed)
40108 },
40109
40110 publicKeyVerify: function (publicKey) {
40111 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40112 return secp256k1.publicKeyVerify(publicKey)
40113 },
40114
40115 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
40116 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40117 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40118
40119 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40120 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40121
40122 compressed = initCompressedValue(compressed, true)
40123
40124 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
40125 },
40126
40127 publicKeyTweakMul: function (publicKey, tweak, compressed) {
40128 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40129 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40130
40131 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40132 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40133
40134 compressed = initCompressedValue(compressed, true)
40135
40136 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
40137 },
40138
40139 publicKeyCombine: function (publicKeys, compressed) {
40140 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
40141 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
40142 for (var i = 0; i < publicKeys.length; ++i) {
40143 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
40144 assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40145 }
40146
40147 compressed = initCompressedValue(compressed, true)
40148
40149 return secp256k1.publicKeyCombine(publicKeys, compressed)
40150 },
40151
40152 signatureNormalize: function (signature) {
40153 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40154 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40155
40156 return secp256k1.signatureNormalize(signature)
40157 },
40158
40159 signatureExport: function (signature) {
40160 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40161 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40162
40163 var sigObj = secp256k1.signatureExport(signature)
40164 return der.signatureExport(sigObj)
40165 },
40166
40167 signatureImport: function (sig) {
40168 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40169 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40170
40171 var sigObj = der.signatureImport(sig)
40172 if (sigObj) return secp256k1.signatureImport(sigObj)
40173
40174 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
40175 },
40176
40177 signatureImportLax: function (sig) {
40178 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40179 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40180
40181 var sigObj = der.signatureImportLax(sig)
40182 if (sigObj) return secp256k1.signatureImport(sigObj)
40183
40184 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
40185 },
40186
40187 sign: function (message, privateKey, options) {
40188 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40189 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40190
40191 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40192 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40193
40194 var data = null
40195 var noncefn = null
40196 if (options !== undefined) {
40197 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
40198
40199 if (options.data !== undefined) {
40200 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
40201 assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)
40202 data = options.data
40203 }
40204
40205 if (options.noncefn !== undefined) {
40206 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
40207 noncefn = options.noncefn
40208 }
40209 }
40210
40211 return secp256k1.sign(message, privateKey, noncefn, data)
40212 },
40213
40214 verify: function (message, signature, publicKey) {
40215 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40216 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40217
40218 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40219 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40220
40221 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40222 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40223
40224 return secp256k1.verify(message, signature, publicKey)
40225 },
40226
40227 recover: function (message, signature, recovery, compressed) {
40228 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40229 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40230
40231 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40232 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40233
40234 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
40235 assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)
40236
40237 compressed = initCompressedValue(compressed, true)
40238
40239 return secp256k1.recover(message, signature, recovery, compressed)
40240 },
40241
40242 ecdh: function (publicKey, privateKey) {
40243 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40244 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40245
40246 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40247 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40248
40249 return secp256k1.ecdh(publicKey, privateKey)
40250 },
40251
40252 ecdhUnsafe: function (publicKey, privateKey, compressed) {
40253 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40254 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40255
40256 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40257 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40258
40259 compressed = initCompressedValue(compressed, true)
40260
40261 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
40262 }
40263 }
40264 }
40265
40266 },{"./assert":74,"./der":75,"./messages.json":78}],78:[function(require,module,exports){
40267 module.exports={
40268 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
40269 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
40270 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
40271 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
40272 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
40273 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
40274 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
40275 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
40276 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least 1 element",
40277 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
40278 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
40279 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
40280 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
40281 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
40282 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
40283 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
40284 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
40285 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
40286 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
40287 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
40288 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
40289 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
40290 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
40291 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
40292 "MSG32_TYPE_INVALID": "message should be a Buffer",
40293 "MSG32_LENGTH_INVALID": "message length is invalid",
40294 "OPTIONS_TYPE_INVALID": "options should be an Object",
40295 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
40296 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
40297 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
40298 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
40299 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -1 and 4",
40300 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
40301 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
40302 }
40303
40304 },{}],79:[function(require,module,exports){
40305 (function (Buffer){
40306 // prototype class for hash functions
40307 function Hash (blockSize, finalSize) {
40308 this._block = new Buffer(blockSize)
40309 this._finalSize = finalSize
40310 this._blockSize = blockSize
40311 this._len = 0
40312 this._s = 0
40313 }
40314
40315 Hash.prototype.update = function (data, enc) {
40316 if (typeof data === 'string') {
40317 enc = enc || 'utf8'
40318 data = new Buffer(data, enc)
40319 }
40320
40321 var l = this._len += data.length
40322 var s = this._s || 0
40323 var f = 0
40324 var buffer = this._block
40325
40326 while (s < l) {
40327 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
40328 var ch = (t - f)
40329
40330 for (var i = 0; i < ch; i++) {
40331 buffer[(s % this._blockSize) + i] = data[i + f]
40332 }
40333
40334 s += ch
40335 f += ch
40336
40337 if ((s % this._blockSize) === 0) {
40338 this._update(buffer)
40339 }
40340 }
40341 this._s = s
40342
40343 return this
40344 }
40345
40346 Hash.prototype.digest = function (enc) {
40347 // Suppose the length of the message M, in bits, is l
40348 var l = this._len * 8
40349
40350 // Append the bit 1 to the end of the message
40351 this._block[this._len % this._blockSize] = 0x80
40352
40353 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
40354 this._block.fill(0, this._len % this._blockSize + 1)
40355
40356 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
40357 this._update(this._block)
40358 this._block.fill(0)
40359 }
40360
40361 // to this append the block which is equal to the number l written in binary
40362 // TODO: handle case where l is > Math.pow(2, 29)
40363 this._block.writeInt32BE(l, this._blockSize - 4)
40364
40365 var hash = this._update(this._block) || this._hash()
40366
40367 return enc ? hash.toString(enc) : hash
40368 }
40369
40370 Hash.prototype._update = function () {
40371 throw new Error('_update must be implemented by subclass')
40372 }
40373
40374 module.exports = Hash
40375
40376 }).call(this,require("buffer").Buffer)
40377 },{"buffer":5}],80:[function(require,module,exports){
40378 var exports = module.exports = function SHA (algorithm) {
40379 algorithm = algorithm.toLowerCase()
40380
40381 var Algorithm = exports[algorithm]
40382 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
40383
40384 return new Algorithm()
40385 }
40386
40387 exports.sha = require('./sha')
40388 exports.sha1 = require('./sha1')
40389 exports.sha224 = require('./sha224')
40390 exports.sha256 = require('./sha256')
40391 exports.sha384 = require('./sha384')
40392 exports.sha512 = require('./sha512')
40393
40394 },{"./sha":81,"./sha1":82,"./sha224":83,"./sha256":84,"./sha384":85,"./sha512":86}],81:[function(require,module,exports){
40395 (function (Buffer){
40396 /*
40397 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
40398 * in FIPS PUB 180-1
40399 * This source code is derived from sha1.js of the same repository.
40400 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
40401 * operation was added.
40402 */
40403
40404 var inherits = require('inherits')
40405 var Hash = require('./hash')
40406
40407 var K = [
40408 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
40409 ]
40410
40411 var W = new Array(80)
40412
40413 function Sha () {
40414 this.init()
40415 this._w = W
40416
40417 Hash.call(this, 64, 56)
40418 }
40419
40420 inherits(Sha, Hash)
40421
40422 Sha.prototype.init = function () {
40423 this._a = 0x67452301
40424 this._b = 0xefcdab89
40425 this._c = 0x98badcfe
40426 this._d = 0x10325476
40427 this._e = 0xc3d2e1f0
40428
40429 return this
40430 }
40431
40432 function rotl5 (num) {
40433 return (num << 5) | (num >>> 27)
40434 }
40435
40436 function rotl30 (num) {
40437 return (num << 30) | (num >>> 2)
40438 }
40439
40440 function ft (s, b, c, d) {
40441 if (s === 0) return (b & c) | ((~b) & d)
40442 if (s === 2) return (b & c) | (b & d) | (c & d)
40443 return b ^ c ^ d
40444 }
40445
40446 Sha.prototype._update = function (M) {
40447 var W = this._w
40448
40449 var a = this._a | 0
40450 var b = this._b | 0
40451 var c = this._c | 0
40452 var d = this._d | 0
40453 var e = this._e | 0
40454
40455 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40456 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
40457
40458 for (var j = 0; j < 80; ++j) {
40459 var s = ~~(j / 20)
40460 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
40461
40462 e = d
40463 d = c
40464 c = rotl30(b)
40465 b = a
40466 a = t
40467 }
40468
40469 this._a = (a + this._a) | 0
40470 this._b = (b + this._b) | 0
40471 this._c = (c + this._c) | 0
40472 this._d = (d + this._d) | 0
40473 this._e = (e + this._e) | 0
40474 }
40475
40476 Sha.prototype._hash = function () {
40477 var H = new Buffer(20)
40478
40479 H.writeInt32BE(this._a | 0, 0)
40480 H.writeInt32BE(this._b | 0, 4)
40481 H.writeInt32BE(this._c | 0, 8)
40482 H.writeInt32BE(this._d | 0, 12)
40483 H.writeInt32BE(this._e | 0, 16)
40484
40485 return H
40486 }
40487
40488 module.exports = Sha
40489
40490 }).call(this,require("buffer").Buffer)
40491 },{"./hash":79,"buffer":5,"inherits":63}],82:[function(require,module,exports){
40492 (function (Buffer){
40493 /*
40494 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
40495 * in FIPS PUB 180-1
40496 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
40497 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40498 * Distributed under the BSD License
40499 * See http://pajhome.org.uk/crypt/md5 for details.
40500 */
40501
40502 var inherits = require('inherits')
40503 var Hash = require('./hash')
40504
40505 var K = [
40506 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
40507 ]
40508
40509 var W = new Array(80)
40510
40511 function Sha1 () {
40512 this.init()
40513 this._w = W
40514
40515 Hash.call(this, 64, 56)
40516 }
40517
40518 inherits(Sha1, Hash)
40519
40520 Sha1.prototype.init = function () {
40521 this._a = 0x67452301
40522 this._b = 0xefcdab89
40523 this._c = 0x98badcfe
40524 this._d = 0x10325476
40525 this._e = 0xc3d2e1f0
40526
40527 return this
40528 }
40529
40530 function rotl1 (num) {
40531 return (num << 1) | (num >>> 31)
40532 }
40533
40534 function rotl5 (num) {
40535 return (num << 5) | (num >>> 27)
40536 }
40537
40538 function rotl30 (num) {
40539 return (num << 30) | (num >>> 2)
40540 }
40541
40542 function ft (s, b, c, d) {
40543 if (s === 0) return (b & c) | ((~b) & d)
40544 if (s === 2) return (b & c) | (b & d) | (c & d)
40545 return b ^ c ^ d
40546 }
40547
40548 Sha1.prototype._update = function (M) {
40549 var W = this._w
40550
40551 var a = this._a | 0
40552 var b = this._b | 0
40553 var c = this._c | 0
40554 var d = this._d | 0
40555 var e = this._e | 0
40556
40557 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40558 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
40559
40560 for (var j = 0; j < 80; ++j) {
40561 var s = ~~(j / 20)
40562 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
40563
40564 e = d
40565 d = c
40566 c = rotl30(b)
40567 b = a
40568 a = t
40569 }
40570
40571 this._a = (a + this._a) | 0
40572 this._b = (b + this._b) | 0
40573 this._c = (c + this._c) | 0
40574 this._d = (d + this._d) | 0
40575 this._e = (e + this._e) | 0
40576 }
40577
40578 Sha1.prototype._hash = function () {
40579 var H = new Buffer(20)
40580
40581 H.writeInt32BE(this._a | 0, 0)
40582 H.writeInt32BE(this._b | 0, 4)
40583 H.writeInt32BE(this._c | 0, 8)
40584 H.writeInt32BE(this._d | 0, 12)
40585 H.writeInt32BE(this._e | 0, 16)
40586
40587 return H
40588 }
40589
40590 module.exports = Sha1
40591
40592 }).call(this,require("buffer").Buffer)
40593 },{"./hash":79,"buffer":5,"inherits":63}],83:[function(require,module,exports){
40594 (function (Buffer){
40595 /**
40596 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
40597 * in FIPS 180-2
40598 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
40599 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40600 *
40601 */
40602
40603 var inherits = require('inherits')
40604 var Sha256 = require('./sha256')
40605 var Hash = require('./hash')
40606
40607 var W = new Array(64)
40608
40609 function Sha224 () {
40610 this.init()
40611
40612 this._w = W // new Array(64)
40613
40614 Hash.call(this, 64, 56)
40615 }
40616
40617 inherits(Sha224, Sha256)
40618
40619 Sha224.prototype.init = function () {
40620 this._a = 0xc1059ed8
40621 this._b = 0x367cd507
40622 this._c = 0x3070dd17
40623 this._d = 0xf70e5939
40624 this._e = 0xffc00b31
40625 this._f = 0x68581511
40626 this._g = 0x64f98fa7
40627 this._h = 0xbefa4fa4
40628
40629 return this
40630 }
40631
40632 Sha224.prototype._hash = function () {
40633 var H = new Buffer(28)
40634
40635 H.writeInt32BE(this._a, 0)
40636 H.writeInt32BE(this._b, 4)
40637 H.writeInt32BE(this._c, 8)
40638 H.writeInt32BE(this._d, 12)
40639 H.writeInt32BE(this._e, 16)
40640 H.writeInt32BE(this._f, 20)
40641 H.writeInt32BE(this._g, 24)
40642
40643 return H
40644 }
40645
40646 module.exports = Sha224
40647
40648 }).call(this,require("buffer").Buffer)
40649 },{"./hash":79,"./sha256":84,"buffer":5,"inherits":63}],84:[function(require,module,exports){
40650 (function (Buffer){
40651 /**
40652 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
40653 * in FIPS 180-2
40654 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
40655 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40656 *
40657 */
40658
40659 var inherits = require('inherits')
40660 var Hash = require('./hash')
40661
40662 var K = [
40663 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
40664 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
40665 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
40666 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
40667 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
40668 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
40669 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
40670 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
40671 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
40672 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
40673 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
40674 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
40675 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
40676 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
40677 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
40678 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
40679 ]
40680
40681 var W = new Array(64)
40682
40683 function Sha256 () {
40684 this.init()
40685
40686 this._w = W // new Array(64)
40687
40688 Hash.call(this, 64, 56)
40689 }
40690
40691 inherits(Sha256, Hash)
40692
40693 Sha256.prototype.init = function () {
40694 this._a = 0x6a09e667
40695 this._b = 0xbb67ae85
40696 this._c = 0x3c6ef372
40697 this._d = 0xa54ff53a
40698 this._e = 0x510e527f
40699 this._f = 0x9b05688c
40700 this._g = 0x1f83d9ab
40701 this._h = 0x5be0cd19
40702
40703 return this
40704 }
40705
40706 function ch (x, y, z) {
40707 return z ^ (x & (y ^ z))
40708 }
40709
40710 function maj (x, y, z) {
40711 return (x & y) | (z & (x | y))
40712 }
40713
40714 function sigma0 (x) {
40715 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
40716 }
40717
40718 function sigma1 (x) {
40719 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
40720 }
40721
40722 function gamma0 (x) {
40723 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
40724 }
40725
40726 function gamma1 (x) {
40727 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
40728 }
40729
40730 Sha256.prototype._update = function (M) {
40731 var W = this._w
40732
40733 var a = this._a | 0
40734 var b = this._b | 0
40735 var c = this._c | 0
40736 var d = this._d | 0
40737 var e = this._e | 0
40738 var f = this._f | 0
40739 var g = this._g | 0
40740 var h = this._h | 0
40741
40742 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40743 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
40744
40745 for (var j = 0; j < 64; ++j) {
40746 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
40747 var T2 = (sigma0(a) + maj(a, b, c)) | 0
40748
40749 h = g
40750 g = f
40751 f = e
40752 e = (d + T1) | 0
40753 d = c
40754 c = b
40755 b = a
40756 a = (T1 + T2) | 0
40757 }
40758
40759 this._a = (a + this._a) | 0
40760 this._b = (b + this._b) | 0
40761 this._c = (c + this._c) | 0
40762 this._d = (d + this._d) | 0
40763 this._e = (e + this._e) | 0
40764 this._f = (f + this._f) | 0
40765 this._g = (g + this._g) | 0
40766 this._h = (h + this._h) | 0
40767 }
40768
40769 Sha256.prototype._hash = function () {
40770 var H = new Buffer(32)
40771
40772 H.writeInt32BE(this._a, 0)
40773 H.writeInt32BE(this._b, 4)
40774 H.writeInt32BE(this._c, 8)
40775 H.writeInt32BE(this._d, 12)
40776 H.writeInt32BE(this._e, 16)
40777 H.writeInt32BE(this._f, 20)
40778 H.writeInt32BE(this._g, 24)
40779 H.writeInt32BE(this._h, 28)
40780
40781 return H
40782 }
40783
40784 module.exports = Sha256
40785
40786 }).call(this,require("buffer").Buffer)
40787 },{"./hash":79,"buffer":5,"inherits":63}],85:[function(require,module,exports){
40788 (function (Buffer){
40789 var inherits = require('inherits')
40790 var SHA512 = require('./sha512')
40791 var Hash = require('./hash')
40792
40793 var W = new Array(160)
40794
40795 function Sha384 () {
40796 this.init()
40797 this._w = W
40798
40799 Hash.call(this, 128, 112)
40800 }
40801
40802 inherits(Sha384, SHA512)
40803
40804 Sha384.prototype.init = function () {
40805 this._ah = 0xcbbb9d5d
40806 this._bh = 0x629a292a
40807 this._ch = 0x9159015a
40808 this._dh = 0x152fecd8
40809 this._eh = 0x67332667
40810 this._fh = 0x8eb44a87
40811 this._gh = 0xdb0c2e0d
40812 this._hh = 0x47b5481d
40813
40814 this._al = 0xc1059ed8
40815 this._bl = 0x367cd507
40816 this._cl = 0x3070dd17
40817 this._dl = 0xf70e5939
40818 this._el = 0xffc00b31
40819 this._fl = 0x68581511
40820 this._gl = 0x64f98fa7
40821 this._hl = 0xbefa4fa4
40822
40823 return this
40824 }
40825
40826 Sha384.prototype._hash = function () {
40827 var H = new Buffer(48)
40828
40829 function writeInt64BE (h, l, offset) {
40830 H.writeInt32BE(h, offset)
40831 H.writeInt32BE(l, offset + 4)
40832 }
40833
40834 writeInt64BE(this._ah, this._al, 0)
40835 writeInt64BE(this._bh, this._bl, 8)
40836 writeInt64BE(this._ch, this._cl, 16)
40837 writeInt64BE(this._dh, this._dl, 24)
40838 writeInt64BE(this._eh, this._el, 32)
40839 writeInt64BE(this._fh, this._fl, 40)
40840
40841 return H
40842 }
40843
40844 module.exports = Sha384
40845
40846 }).call(this,require("buffer").Buffer)
40847 },{"./hash":79,"./sha512":86,"buffer":5,"inherits":63}],86:[function(require,module,exports){
40848 (function (Buffer){
40849 var inherits = require('inherits')
40850 var Hash = require('./hash')
40851
40852 var K = [
40853 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
40854 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
40855 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
40856 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
40857 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
40858 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
40859 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
40860 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
40861 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
40862 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
40863 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
40864 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
40865 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
40866 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
40867 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
40868 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
40869 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
40870 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
40871 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
40872 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
40873 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
40874 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
40875 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
40876 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
40877 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
40878 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
40879 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
40880 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
40881 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
40882 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
40883 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
40884 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
40885 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
40886 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
40887 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
40888 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
40889 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
40890 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
40891 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
40892 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
40893 ]
40894
40895 var W = new Array(160)
40896
40897 function Sha512 () {
40898 this.init()
40899 this._w = W
40900
40901 Hash.call(this, 128, 112)
40902 }
40903
40904 inherits(Sha512, Hash)
40905
40906 Sha512.prototype.init = function () {
40907 this._ah = 0x6a09e667
40908 this._bh = 0xbb67ae85
40909 this._ch = 0x3c6ef372
40910 this._dh = 0xa54ff53a
40911 this._eh = 0x510e527f
40912 this._fh = 0x9b05688c
40913 this._gh = 0x1f83d9ab
40914 this._hh = 0x5be0cd19
40915
40916 this._al = 0xf3bcc908
40917 this._bl = 0x84caa73b
40918 this._cl = 0xfe94f82b
40919 this._dl = 0x5f1d36f1
40920 this._el = 0xade682d1
40921 this._fl = 0x2b3e6c1f
40922 this._gl = 0xfb41bd6b
40923 this._hl = 0x137e2179
40924
40925 return this
40926 }
40927
40928 function Ch (x, y, z) {
40929 return z ^ (x & (y ^ z))
40930 }
40931
40932 function maj (x, y, z) {
40933 return (x & y) | (z & (x | y))
40934 }
40935
40936 function sigma0 (x, xl) {
40937 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
40938 }
40939
40940 function sigma1 (x, xl) {
40941 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
40942 }
40943
40944 function Gamma0 (x, xl) {
40945 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
40946 }
40947
40948 function Gamma0l (x, xl) {
40949 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
40950 }
40951
40952 function Gamma1 (x, xl) {
40953 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
40954 }
40955
40956 function Gamma1l (x, xl) {
40957 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
40958 }
40959
40960 function getCarry (a, b) {
40961 return (a >>> 0) < (b >>> 0) ? 1 : 0
40962 }
40963
40964 Sha512.prototype._update = function (M) {
40965 var W = this._w
40966
40967 var ah = this._ah | 0
40968 var bh = this._bh | 0
40969 var ch = this._ch | 0
40970 var dh = this._dh | 0
40971 var eh = this._eh | 0
40972 var fh = this._fh | 0
40973 var gh = this._gh | 0
40974 var hh = this._hh | 0
40975
40976 var al = this._al | 0
40977 var bl = this._bl | 0
40978 var cl = this._cl | 0
40979 var dl = this._dl | 0
40980 var el = this._el | 0
40981 var fl = this._fl | 0
40982 var gl = this._gl | 0
40983 var hl = this._hl | 0
40984
40985 for (var i = 0; i < 32; i += 2) {
40986 W[i] = M.readInt32BE(i * 4)
40987 W[i + 1] = M.readInt32BE(i * 4 + 4)
40988 }
40989 for (; i < 160; i += 2) {
40990 var xh = W[i - 15 * 2]
40991 var xl = W[i - 15 * 2 + 1]
40992 var gamma0 = Gamma0(xh, xl)
40993 var gamma0l = Gamma0l(xl, xh)
40994
40995 xh = W[i - 2 * 2]
40996 xl = W[i - 2 * 2 + 1]
40997 var gamma1 = Gamma1(xh, xl)
40998 var gamma1l = Gamma1l(xl, xh)
40999
41000 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
41001 var Wi7h = W[i - 7 * 2]
41002 var Wi7l = W[i - 7 * 2 + 1]
41003
41004 var Wi16h = W[i - 16 * 2]
41005 var Wi16l = W[i - 16 * 2 + 1]
41006
41007 var Wil = (gamma0l + Wi7l) | 0
41008 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
41009 Wil = (Wil + gamma1l) | 0
41010 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
41011 Wil = (Wil + Wi16l) | 0
41012 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
41013
41014 W[i] = Wih
41015 W[i + 1] = Wil
41016 }
41017
41018 for (var j = 0; j < 160; j += 2) {
41019 Wih = W[j]
41020 Wil = W[j + 1]
41021
41022 var majh = maj(ah, bh, ch)
41023 var majl = maj(al, bl, cl)
41024
41025 var sigma0h = sigma0(ah, al)
41026 var sigma0l = sigma0(al, ah)
41027 var sigma1h = sigma1(eh, el)
41028 var sigma1l = sigma1(el, eh)
41029
41030 // t1 = h + sigma1 + ch + K[j] + W[j]
41031 var Kih = K[j]
41032 var Kil = K[j + 1]
41033
41034 var chh = Ch(eh, fh, gh)
41035 var chl = Ch(el, fl, gl)
41036
41037 var t1l = (hl + sigma1l) | 0
41038 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
41039 t1l = (t1l + chl) | 0
41040 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
41041 t1l = (t1l + Kil) | 0
41042 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
41043 t1l = (t1l + Wil) | 0
41044 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
41045
41046 // t2 = sigma0 + maj
41047 var t2l = (sigma0l + majl) | 0
41048 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
41049
41050 hh = gh
41051 hl = gl
41052 gh = fh
41053 gl = fl
41054 fh = eh
41055 fl = el
41056 el = (dl + t1l) | 0
41057 eh = (dh + t1h + getCarry(el, dl)) | 0
41058 dh = ch
41059 dl = cl
41060 ch = bh
41061 cl = bl
41062 bh = ah
41063 bl = al
41064 al = (t1l + t2l) | 0
41065 ah = (t1h + t2h + getCarry(al, t1l)) | 0
41066 }
41067
41068 this._al = (this._al + al) | 0
41069 this._bl = (this._bl + bl) | 0
41070 this._cl = (this._cl + cl) | 0
41071 this._dl = (this._dl + dl) | 0
41072 this._el = (this._el + el) | 0
41073 this._fl = (this._fl + fl) | 0
41074 this._gl = (this._gl + gl) | 0
41075 this._hl = (this._hl + hl) | 0
41076
41077 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
41078 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
41079 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
41080 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
41081 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
41082 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
41083 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
41084 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
41085 }
41086
41087 Sha512.prototype._hash = function () {
41088 var H = new Buffer(64)
41089
41090 function writeInt64BE (h, l, offset) {
41091 H.writeInt32BE(h, offset)
41092 H.writeInt32BE(l, offset + 4)
41093 }
41094
41095 writeInt64BE(this._ah, this._al, 0)
41096 writeInt64BE(this._bh, this._bl, 8)
41097 writeInt64BE(this._ch, this._cl, 16)
41098 writeInt64BE(this._dh, this._dl, 24)
41099 writeInt64BE(this._eh, this._el, 32)
41100 writeInt64BE(this._fh, this._fl, 40)
41101 writeInt64BE(this._gh, this._gl, 48)
41102 writeInt64BE(this._hh, this._hl, 56)
41103
41104 return H
41105 }
41106
41107 module.exports = Sha512
41108
41109 }).call(this,require("buffer").Buffer)
41110 },{"./hash":79,"buffer":5,"inherits":63}],87:[function(require,module,exports){
41111 var isHexPrefixed = require('is-hex-prefixed');
41112
41113 /**
41114 * Removes '0x' from a given `String` is present
41115 * @param {String} str the string value
41116 * @return {String|Optional} a string by pass if necessary
41117 */
41118 module.exports = function stripHexPrefix(str) {
41119 if (typeof str !== 'string') {
41120 return str;
41121 }
41122
41123 return isHexPrefixed(str) ? str.slice(2) : str;
41124 }
41125
41126 },{"is-hex-prefixed":64}]},{},[31])(31)
41127 });</script>
41128 <script>function convertRippleAdrr(address) {
41129 return window.basex('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz').encode(
41130 window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(address)
41131 )
41132 }
41133
41134 function convertRipplePriv(priv) {
41135 return window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(priv).toString("hex").slice(2,66)
41136 }
41137
41138 </script>
41139 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
41140
41141 //// base.js
41142
41143 /** @fileOverview Javascript cryptography implementation.
41144 *
41145 * Crush to remove comments, shorten variable names and
41146 * generally reduce transmission size.
41147 *
41148 * @author Emily Stark
41149 * @author Mike Hamburg
41150 * @author Dan Boneh
41151 */
41152
41153 "use strict";
41154 /*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
41155 /*global document, window, escape, unescape, module, require, Uint32Array */
41156
41157 /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
41158 var sjcl = {
41159 /** @namespace Symmetric ciphers. */
41160 cipher: {},
41161
41162 /** @namespace Hash functions. Right now only SHA256 is implemented. */
41163 hash: {},
41164
41165 /** @namespace Key exchange functions. Right now only SRP is implemented. */
41166 keyexchange: {},
41167
41168 /** @namespace Block cipher modes of operation. */
41169 mode: {},
41170
41171 /** @namespace Miscellaneous. HMAC and PBKDF2. */
41172 misc: {},
41173
41174 /**
41175 * @namespace Bit array encoders and decoders.
41176 *
41177 * @description
41178 * The members of this namespace are functions which translate between
41179 * SJCL's bitArrays and other objects (usually strings). Because it
41180 * isn't always clear which direction is encoding and which is decoding,
41181 * the method names are "fromBits" and "toBits".
41182 */
41183 codec: {},
41184
41185 /** @namespace Exceptions. */
41186 exception: {
41187 /** @constructor Ciphertext is corrupt. */
41188 corrupt: function(message) {
41189 this.toString = function() { return "CORRUPT: "+this.message; };
41190 this.message = message;
41191 },
41192
41193 /** @constructor Invalid parameter. */
41194 invalid: function(message) {
41195 this.toString = function() { return "INVALID: "+this.message; };
41196 this.message = message;
41197 },
41198
41199 /** @constructor Bug or missing feature in SJCL. @constructor */
41200 bug: function(message) {
41201 this.toString = function() { return "BUG: "+this.message; };
41202 this.message = message;
41203 },
41204
41205 /** @constructor Something isn't ready. */
41206 notReady: function(message) {
41207 this.toString = function() { return "NOT READY: "+this.message; };
41208 this.message = message;
41209 }
41210 }
41211 };
41212
41213 if(typeof module !== 'undefined' && module.exports){
41214 module.exports = sjcl;
41215 }
41216 if (typeof define === "function") {
41217 define([], function () {
41218 return sjcl;
41219 });
41220 }
41221
41222
41223 //// bitArray.js
41224
41225 /** @fileOverview Arrays of bits, encoded as arrays of Numbers.
41226 *
41227 * @author Emily Stark
41228 * @author Mike Hamburg
41229 * @author Dan Boneh
41230 */
41231
41232 /** @namespace Arrays of bits, encoded as arrays of Numbers.
41233 *
41234 * @description
41235 * <p>
41236 * These objects are the currency accepted by SJCL's crypto functions.
41237 * </p>
41238 *
41239 * <p>
41240 * Most of our crypto primitives operate on arrays of 4-byte words internally,
41241 * but many of them can take arguments that are not a multiple of 4 bytes.
41242 * This library encodes arrays of bits (whose size need not be a multiple of 8
41243 * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
41244 * array of words, 32 bits at a time. Since the words are double-precision
41245 * floating point numbers, they fit some extra data. We use this (in a private,
41246 * possibly-changing manner) to encode the number of bits actually present
41247 * in the last word of the array.
41248 * </p>
41249 *
41250 * <p>
41251 * Because bitwise ops clear this out-of-band data, these arrays can be passed
41252 * to ciphers like AES which want arrays of words.
41253 * </p>
41254 */
41255 sjcl.bitArray = {
41256 /**
41257 * Array slices in units of bits.
41258 * @param {bitArray} a The array to slice.
41259 * @param {Number} bstart The offset to the start of the slice, in bits.
41260 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
41261 * slice until the end of the array.
41262 * @return {bitArray} The requested slice.
41263 */
41264 bitSlice: function (a, bstart, bend) {
41265 a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
41266 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
41267 },
41268
41269 /**
41270 * Extract a number packed into a bit array.
41271 * @param {bitArray} a The array to slice.
41272 * @param {Number} bstart The offset to the start of the slice, in bits.
41273 * @param {Number} length The length of the number to extract.
41274 * @return {Number} The requested slice.
41275 */
41276 extract: function(a, bstart, blength) {
41277 // FIXME: this Math.floor is not necessary at all, but for some reason
41278 // seems to suppress a bug in the Chromium JIT.
41279 var x, sh = Math.floor((-bstart-blength) & 31);
41280 if ((bstart + blength - 1 ^ bstart) & -32) {
41281 // it crosses a boundary
41282 x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
41283 } else {
41284 // within a single word
41285 x = a[bstart/32|0] >>> sh;
41286 }
41287 return x & ((1<<blength) - 1);
41288 },
41289
41290 /**
41291 * Concatenate two bit arrays.
41292 * @param {bitArray} a1 The first array.
41293 * @param {bitArray} a2 The second array.
41294 * @return {bitArray} The concatenation of a1 and a2.
41295 */
41296 concat: function (a1, a2) {
41297 if (a1.length === 0 || a2.length === 0) {
41298 return a1.concat(a2);
41299 }
41300
41301 var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
41302 if (shift === 32) {
41303 return a1.concat(a2);
41304 } else {
41305 return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
41306 }
41307 },
41308
41309 /**
41310 * Find the length of an array of bits.
41311 * @param {bitArray} a The array.
41312 * @return {Number} The length of a, in bits.
41313 */
41314 bitLength: function (a) {
41315 var l = a.length, x;
41316 if (l === 0) { return 0; }
41317 x = a[l - 1];
41318 return (l-1) * 32 + sjcl.bitArray.getPartial(x);
41319 },
41320
41321 /**
41322 * Truncate an array.
41323 * @param {bitArray} a The array.
41324 * @param {Number} len The length to truncate to, in bits.
41325 * @return {bitArray} A new array, truncated to len bits.
41326 */
41327 clamp: function (a, len) {
41328 if (a.length * 32 < len) { return a; }
41329 a = a.slice(0, Math.ceil(len / 32));
41330 var l = a.length;
41331 len = len & 31;
41332 if (l > 0 && len) {
41333 a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
41334 }
41335 return a;
41336 },
41337
41338 /**
41339 * Make a partial word for a bit array.
41340 * @param {Number} len The number of bits in the word.
41341 * @param {Number} x The bits.
41342 * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
41343 * @return {Number} The partial word.
41344 */
41345 partial: function (len, x, _end) {
41346 if (len === 32) { return x; }
41347 return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
41348 },
41349
41350 /**
41351 * Get the number of bits used by a partial word.
41352 * @param {Number} x The partial word.
41353 * @return {Number} The number of bits used by the partial word.
41354 */
41355 getPartial: function (x) {
41356 return Math.round(x/0x10000000000) || 32;
41357 },
41358
41359 /**
41360 * Compare two arrays for equality in a predictable amount of time.
41361 * @param {bitArray} a The first array.
41362 * @param {bitArray} b The second array.
41363 * @return {boolean} true if a == b; false otherwise.
41364 */
41365 equal: function (a, b) {
41366 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
41367 return false;
41368 }
41369 var x = 0, i;
41370 for (i=0; i<a.length; i++) {
41371 x |= a[i]^b[i];
41372 }
41373 return (x === 0);
41374 },
41375
41376 /** Shift an array right.
41377 * @param {bitArray} a The array to shift.
41378 * @param {Number} shift The number of bits to shift.
41379 * @param {Number} [carry=0] A byte to carry in
41380 * @param {bitArray} [out=[]] An array to prepend to the output.
41381 * @private
41382 */
41383 _shiftRight: function (a, shift, carry, out) {
41384 var i, last2=0, shift2;
41385 if (out === undefined) { out = []; }
41386
41387 for (; shift >= 32; shift -= 32) {
41388 out.push(carry);
41389 carry = 0;
41390 }
41391 if (shift === 0) {
41392 return out.concat(a);
41393 }
41394
41395 for (i=0; i<a.length; i++) {
41396 out.push(carry | a[i]>>>shift);
41397 carry = a[i] << (32-shift);
41398 }
41399 last2 = a.length ? a[a.length-1] : 0;
41400 shift2 = sjcl.bitArray.getPartial(last2);
41401 out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
41402 return out;
41403 },
41404
41405 /** xor a block of 4 words together.
41406 * @private
41407 */
41408 _xor4: function(x,y) {
41409 return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
41410 },
41411
41412 /** byteswap a word array inplace.
41413 * (does not handle partial words)
41414 * @param {sjcl.bitArray} a word array
41415 * @return {sjcl.bitArray} byteswapped array
41416 */
41417 byteswapM: function(a) {
41418 var i, v, m = 0xff00;
41419 for (i = 0; i < a.length; ++i) {
41420 v = a[i];
41421 a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24);
41422 }
41423 return a;
41424 }
41425 };
41426
41427
41428 //// codecString.js
41429
41430 /** @fileOverview Bit array codec implementations.
41431 *
41432 * @author Emily Stark
41433 * @author Mike Hamburg
41434 * @author Dan Boneh
41435 */
41436
41437 /** @namespace UTF-8 strings */
41438 sjcl.codec.utf8String = {
41439 /** Convert from a bitArray to a UTF-8 string. */
41440 fromBits: function (arr) {
41441 var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
41442 for (i=0; i<bl/8; i++) {
41443 if ((i&3) === 0) {
41444 tmp = arr[i/4];
41445 }
41446 out += String.fromCharCode(tmp >>> 24);
41447 tmp <<= 8;
41448 }
41449 return decodeURIComponent(escape(out));
41450 },
41451
41452 /** Convert from a UTF-8 string to a bitArray. */
41453 toBits: function (str) {
41454 str = unescape(encodeURIComponent(str));
41455 var out = [], i, tmp=0;
41456 for (i=0; i<str.length; i++) {
41457 tmp = tmp << 8 | str.charCodeAt(i);
41458 if ((i&3) === 3) {
41459 out.push(tmp);
41460 tmp = 0;
41461 }
41462 }
41463 if (i&3) {
41464 out.push(sjcl.bitArray.partial(8*(i&3), tmp));
41465 }
41466 return out;
41467 }
41468 };
41469
41470
41471 //// codecHex.js
41472
41473 /** @fileOverview Bit array codec implementations.
41474 *
41475 * @author Emily Stark
41476 * @author Mike Hamburg
41477 * @author Dan Boneh
41478 */
41479
41480 /** @namespace Hexadecimal */
41481 sjcl.codec.hex = {
41482 /** Convert from a bitArray to a hex string. */
41483 fromBits: function (arr) {
41484 var out = "", i;
41485 for (i=0; i<arr.length; i++) {
41486 out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4);
41487 }
41488 return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 ");
41489 },
41490 /** Convert from a hex string to a bitArray. */
41491 toBits: function (str) {
41492 var i, out=[], len;
41493 str = str.replace(/\s|0x/g, "");
41494 len = str.length;
41495 str = str + "00000000";
41496 for (i=0; i<str.length; i+=8) {
41497 out.push(parseInt(str.substr(i,8),16)^0);
41498 }
41499 return sjcl.bitArray.clamp(out, len*4);
41500 }
41501 };
41502
41503
41504 //// sha512.js
41505
41506 /** @fileOverview Javascript SHA-512 implementation.
41507 *
41508 * This implementation was written for CryptoJS by Jeff Mott and adapted for
41509 * SJCL by Stefan Thomas.
41510 *
41511 * CryptoJS (c) 20092012 by Jeff Mott. All rights reserved.
41512 * Released with New BSD License
41513 *
41514 * @author Emily Stark
41515 * @author Mike Hamburg
41516 * @author Dan Boneh
41517 * @author Jeff Mott
41518 * @author Stefan Thomas
41519 */
41520
41521 /**
41522 * Context for a SHA-512 operation in progress.
41523 * @constructor
41524 * @class Secure Hash Algorithm, 512 bits.
41525 */
41526 sjcl.hash.sha512 = function (hash) {
41527 if (!this._key[0]) { this._precompute(); }
41528 if (hash) {
41529 this._h = hash._h.slice(0);
41530 this._buffer = hash._buffer.slice(0);
41531 this._length = hash._length;
41532 } else {
41533 this.reset();
41534 }
41535 };
41536
41537 /**
41538 * Hash a string or an array of words.
41539 * @static
41540 * @param {bitArray|String} data the data to hash.
41541 * @return {bitArray} The hash value, an array of 16 big-endian words.
41542 */
41543 sjcl.hash.sha512.hash = function (data) {
41544 return (new sjcl.hash.sha512()).update(data).finalize();
41545 };
41546
41547 sjcl.hash.sha512.prototype = {
41548 /**
41549 * The hash's block size, in bits.
41550 * @constant
41551 */
41552 blockSize: 1024,
41553
41554 /**
41555 * Reset the hash state.
41556 * @return this
41557 */
41558 reset:function () {
41559 this._h = this._init.slice(0);
41560 this._buffer = [];
41561 this._length = 0;
41562 return this;
41563 },
41564
41565 /**
41566 * Input several words to the hash.
41567 * @param {bitArray|String} data the data to hash.
41568 * @return this
41569 */
41570 update: function (data) {
41571 if (typeof data === "string") {
41572 data = sjcl.codec.utf8String.toBits(data);
41573 }
41574 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
41575 ol = this._length,
41576 nl = this._length = ol + sjcl.bitArray.bitLength(data);
41577 for (i = 1024+ol & -1024; i <= nl; i+= 1024) {
41578 this._block(b.splice(0,32));
41579 }
41580 return this;
41581 },
41582
41583 /**
41584 * Complete hashing and output the hash value.
41585 * @return {bitArray} The hash value, an array of 16 big-endian words.
41586 */
41587 finalize:function () {
41588 var i, b = this._buffer, h = this._h;
41589
41590 // Round out and push the buffer
41591 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
41592
41593 // Round out the buffer to a multiple of 32 words, less the 4 length words.
41594 for (i = b.length + 4; i & 31; i++) {
41595 b.push(0);
41596 }
41597
41598 // append the length
41599 b.push(0);
41600 b.push(0);
41601 b.push(Math.floor(this._length / 0x100000000));
41602 b.push(this._length | 0);
41603
41604 while (b.length) {
41605 this._block(b.splice(0,32));
41606 }
41607
41608 this.reset();
41609 return h;
41610 },
41611
41612 /**
41613 * The SHA-512 initialization vector, to be precomputed.
41614 * @private
41615 */
41616 _init:[],
41617
41618 /**
41619 * Least significant 24 bits of SHA512 initialization values.
41620 *
41621 * Javascript only has 53 bits of precision, so we compute the 40 most
41622 * significant bits and add the remaining 24 bits as constants.
41623 *
41624 * @private
41625 */
41626 _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ],
41627
41628 /*
41629 _init:
41630 [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
41631 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179],
41632 */
41633
41634 /**
41635 * The SHA-512 hash key, to be precomputed.
41636 * @private
41637 */
41638 _key:[],
41639
41640 /**
41641 * Least significant 24 bits of SHA512 key values.
41642 * @private
41643 */
41644 _keyr:
41645 [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118,
41646 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694,
41647 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5,
41648 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70,
41649 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b,
41650 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8,
41651 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3,
41652 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b,
41653 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b,
41654 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817],
41655
41656 /*
41657 _key:
41658 [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
41659 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
41660 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
41661 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
41662 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
41663 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
41664 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
41665 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
41666 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
41667 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
41668 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
41669 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
41670 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
41671 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
41672 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
41673 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
41674 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
41675 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
41676 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
41677 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817],
41678 */
41679
41680 /**
41681 * Function to precompute _init and _key.
41682 * @private
41683 */
41684 _precompute: function () {
41685 // XXX: This code is for precomputing the SHA256 constants, change for
41686 // SHA512 and re-enable.
41687 var i = 0, prime = 2, factor;
41688
41689 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
41690 function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; }
41691
41692 outer: for (; i<80; prime++) {
41693 for (factor=2; factor*factor <= prime; factor++) {
41694 if (prime % factor === 0) {
41695 // not a prime
41696 continue outer;
41697 }
41698 }
41699
41700 if (i<8) {
41701 this._init[i*2] = frac(Math.pow(prime, 1/2));
41702 this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i];
41703 }
41704 this._key[i*2] = frac(Math.pow(prime, 1/3));
41705 this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i];
41706 i++;
41707 }
41708 },
41709
41710 /**
41711 * Perform one cycle of SHA-512.
41712 * @param {bitArray} words one block of words.
41713 * @private
41714 */
41715 _block:function (words) {
41716 var i, wrh, wrl,
41717 w = words.slice(0),
41718 h = this._h,
41719 k = this._key,
41720 h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3],
41721 h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7],
41722 h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11],
41723 h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15];
41724
41725 // Working variables
41726 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
41727 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
41728 eh = h4h, el = h4l, fh = h5h, fl = h5l,
41729 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
41730
41731 for (i=0; i<80; i++) {
41732 // load up the input word for this round
41733 if (i<16) {
41734 wrh = w[i * 2];
41735 wrl = w[i * 2 + 1];
41736 } else {
41737 // Gamma0
41738 var gamma0xh = w[(i-15) * 2];
41739 var gamma0xl = w[(i-15) * 2 + 1];
41740 var gamma0h =
41741 ((gamma0xl << 31) | (gamma0xh >>> 1)) ^
41742 ((gamma0xl << 24) | (gamma0xh >>> 8)) ^
41743 (gamma0xh >>> 7);
41744 var gamma0l =
41745 ((gamma0xh << 31) | (gamma0xl >>> 1)) ^
41746 ((gamma0xh << 24) | (gamma0xl >>> 8)) ^
41747 ((gamma0xh << 25) | (gamma0xl >>> 7));
41748
41749 // Gamma1
41750 var gamma1xh = w[(i-2) * 2];
41751 var gamma1xl = w[(i-2) * 2 + 1];
41752 var gamma1h =
41753 ((gamma1xl << 13) | (gamma1xh >>> 19)) ^
41754 ((gamma1xh << 3) | (gamma1xl >>> 29)) ^
41755 (gamma1xh >>> 6);
41756 var gamma1l =
41757 ((gamma1xh << 13) | (gamma1xl >>> 19)) ^
41758 ((gamma1xl << 3) | (gamma1xh >>> 29)) ^
41759 ((gamma1xh << 26) | (gamma1xl >>> 6));
41760
41761 // Shortcuts
41762 var wr7h = w[(i-7) * 2];
41763 var wr7l = w[(i-7) * 2 + 1];
41764
41765 var wr16h = w[(i-16) * 2];
41766 var wr16l = w[(i-16) * 2 + 1];
41767
41768 // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16)
41769 wrl = gamma0l + wr7l;
41770 wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0);
41771 wrl += gamma1l;
41772 wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0);
41773 wrl += wr16l;
41774 wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0);
41775 }
41776
41777 w[i*2] = wrh |= 0;
41778 w[i*2 + 1] = wrl |= 0;
41779
41780 // Ch
41781 var chh = (eh & fh) ^ (~eh & gh);
41782 var chl = (el & fl) ^ (~el & gl);
41783
41784 // Maj
41785 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
41786 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
41787
41788 // Sigma0
41789 var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
41790 var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
41791
41792 // Sigma1
41793 var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9));
41794 var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9));
41795
41796 // K(round)
41797 var krh = k[i*2];
41798 var krl = k[i*2+1];
41799
41800 // t1 = h + sigma1 + ch + K(round) + W(round)
41801 var t1l = hl + sigma1l;
41802 var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
41803 t1l += chl;
41804 t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
41805 t1l += krl;
41806 t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0);
41807 t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972
41808 t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0);
41809
41810 // t2 = sigma0 + maj
41811 var t2l = sigma0l + majl;
41812 var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
41813
41814 // Update working variables
41815 hh = gh;
41816 hl = gl;
41817 gh = fh;
41818 gl = fl;
41819 fh = eh;
41820 fl = el;
41821 el = (dl + t1l) | 0;
41822 eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
41823 dh = ch;
41824 dl = cl;
41825 ch = bh;
41826 cl = bl;
41827 bh = ah;
41828 bl = al;
41829 al = (t1l + t2l) | 0;
41830 ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
41831 }
41832
41833 // Intermediate hash
41834 h0l = h[1] = (h0l + al) | 0;
41835 h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0;
41836 h1l = h[3] = (h1l + bl) | 0;
41837 h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0;
41838 h2l = h[5] = (h2l + cl) | 0;
41839 h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0;
41840 h3l = h[7] = (h3l + dl) | 0;
41841 h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
41842 h4l = h[9] = (h4l + el) | 0;
41843 h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0;
41844 h5l = h[11] = (h5l + fl) | 0;
41845 h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0;
41846 h6l = h[13] = (h6l + gl) | 0;
41847 h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0;
41848 h7l = h[15] = (h7l + hl) | 0;
41849 h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
41850 }
41851 };
41852
41853
41854 //// hmac.js
41855
41856 /** @fileOverview HMAC implementation.
41857 *
41858 * @author Emily Stark
41859 * @author Mike Hamburg
41860 * @author Dan Boneh
41861 */
41862
41863 /** HMAC with the specified hash function.
41864 * @constructor
41865 * @param {bitArray} key the key for HMAC.
41866 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
41867 */
41868 sjcl.misc.hmac = function (key, Hash) {
41869 this._hash = Hash = Hash || sjcl.hash.sha256;
41870 var exKey = [[],[]], i,
41871 bs = Hash.prototype.blockSize / 32;
41872 this._baseHash = [new Hash(), new Hash()];
41873
41874 if (key.length > bs) {
41875 key = Hash.hash(key);
41876 }
41877
41878 for (i=0; i<bs; i++) {
41879 exKey[0][i] = key[i]^0x36363636;
41880 exKey[1][i] = key[i]^0x5C5C5C5C;
41881 }
41882
41883 this._baseHash[0].update(exKey[0]);
41884 this._baseHash[1].update(exKey[1]);
41885 this._resultHash = new Hash(this._baseHash[0]);
41886 };
41887
41888 /** HMAC with the specified hash function. Also called encrypt since it's a prf.
41889 * @param {bitArray|String} data The data to mac.
41890 */
41891 sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
41892 if (!this._updated) {
41893 this.update(data);
41894 return this.digest(data);
41895 } else {
41896 throw new sjcl.exception.invalid("encrypt on already updated hmac called!");
41897 }
41898 };
41899
41900 sjcl.misc.hmac.prototype.reset = function () {
41901 this._resultHash = new this._hash(this._baseHash[0]);
41902 this._updated = false;
41903 };
41904
41905 sjcl.misc.hmac.prototype.update = function (data) {
41906 this._updated = true;
41907 this._resultHash.update(data);
41908 };
41909
41910 sjcl.misc.hmac.prototype.digest = function () {
41911 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize();
41912
41913 this.reset();
41914
41915 return result;
41916 };
41917
41918
41919 //// pbkdf2.js
41920
41921
41922 /** @fileOverview Password-based key-derivation function, version 2.0.
41923 *
41924 * @author Emily Stark
41925 * @author Mike Hamburg
41926 * @author Dan Boneh
41927 */
41928
41929 /** Password-Based Key-Derivation Function, version 2.0.
41930 *
41931 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
41932 *
41933 * This is the method specified by RSA's PKCS #5 standard.
41934 *
41935 * @param {bitArray|String} password The password.
41936 * @param {bitArray|String} salt The salt. Should have lots of entropy.
41937 * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure.
41938 * @param {Number} [length] The length of the derived key. Defaults to the
41939 output size of the hash function.
41940 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
41941 * @return {bitArray} the derived key.
41942 */
41943 sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
41944 count = count || 1000;
41945
41946 if (length < 0 || count < 0) {
41947 throw sjcl.exception.invalid("invalid params to pbkdf2");
41948 }
41949
41950 if (typeof password === "string") {
41951 password = sjcl.codec.utf8String.toBits(password);
41952 }
41953
41954 if (typeof salt === "string") {
41955 salt = sjcl.codec.utf8String.toBits(salt);
41956 }
41957
41958 Prff = Prff || sjcl.misc.hmac;
41959
41960 var prf = new Prff(password),
41961 u, ui, i, j, k, out = [], b = sjcl.bitArray;
41962
41963 for (k = 1; 32 * out.length < (length || 1); k++) {
41964 u = ui = prf.encrypt(b.concat(salt,[k]));
41965
41966 for (i=1; i<count; i++) {
41967 ui = prf.encrypt(ui);
41968 for (j=0; j<ui.length; j++) {
41969 u[j] ^= ui[j];
41970 }
41971 }
41972
41973 out = out.concat(u);
41974 }
41975
41976 if (length) { out = b.clamp(out, length); }
41977
41978 return out;
41979 };
41980
41981
41982 //// sha256.js
41983
41984 /** @fileOverview Javascript SHA-256 implementation.
41985 *
41986 * An older version of this implementation is available in the public
41987 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
41988 * Stanford University 2008-2010 and BSD-licensed for liability
41989 * reasons.
41990 *
41991 * Special thanks to Aldo Cortesi for pointing out several bugs in
41992 * this code.
41993 *
41994 * @author Emily Stark
41995 * @author Mike Hamburg
41996 * @author Dan Boneh
41997 */
41998
41999 /**
42000 * Context for a SHA-256 operation in progress.
42001 * @constructor
42002 * @class Secure Hash Algorithm, 256 bits.
42003 */
42004 sjcl.hash.sha256 = function (hash) {
42005 if (!this._key[0]) { this._precompute(); }
42006 if (hash) {
42007 this._h = hash._h.slice(0);
42008 this._buffer = hash._buffer.slice(0);
42009 this._length = hash._length;
42010 } else {
42011 this.reset();
42012 }
42013 };
42014
42015 /**
42016 * Hash a string or an array of words.
42017 * @static
42018 * @param {bitArray|String} data the data to hash.
42019 * @return {bitArray} The hash value, an array of 16 big-endian words.
42020 */
42021 sjcl.hash.sha256.hash = function (data) {
42022 return (new sjcl.hash.sha256()).update(data).finalize();
42023 };
42024
42025 sjcl.hash.sha256.prototype = {
42026 /**
42027 * The hash's block size, in bits.
42028 * @constant
42029 */
42030 blockSize: 512,
42031
42032 /**
42033 * Reset the hash state.
42034 * @return this
42035 */
42036 reset:function () {
42037 this._h = this._init.slice(0);
42038 this._buffer = [];
42039 this._length = 0;
42040 return this;
42041 },
42042
42043 /**
42044 * Input several words to the hash.
42045 * @param {bitArray|String} data the data to hash.
42046 * @return this
42047 */
42048 update: function (data) {
42049 if (typeof data === "string") {
42050 data = sjcl.codec.utf8String.toBits(data);
42051 }
42052 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
42053 ol = this._length,
42054 nl = this._length = ol + sjcl.bitArray.bitLength(data);
42055 for (i = 512+ol & -512; i <= nl; i+= 512) {
42056 this._block(b.splice(0,16));
42057 }
42058 return this;
42059 },
42060
42061 /**
42062 * Complete hashing and output the hash value.
42063 * @return {bitArray} The hash value, an array of 8 big-endian words.
42064 */
42065 finalize:function () {
42066 var i, b = this._buffer, h = this._h;
42067
42068 // Round out and push the buffer
42069 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
42070
42071 // Round out the buffer to a multiple of 16 words, less the 2 length words.
42072 for (i = b.length + 2; i & 15; i++) {
42073 b.push(0);
42074 }
42075
42076 // append the length
42077 b.push(Math.floor(this._length / 0x100000000));
42078 b.push(this._length | 0);
42079
42080 while (b.length) {
42081 this._block(b.splice(0,16));
42082 }
42083
42084 this.reset();
42085 return h;
42086 },
42087
42088 /**
42089 * The SHA-256 initialization vector, to be precomputed.
42090 * @private
42091 */
42092 _init:[],
42093 /*
42094 _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
42095 */
42096
42097 /**
42098 * The SHA-256 hash key, to be precomputed.
42099 * @private
42100 */
42101 _key:[],
42102 /*
42103 _key:
42104 [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
42105 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
42106 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
42107 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
42108 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
42109 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
42110 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
42111 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
42112 */
42113
42114
42115 /**
42116 * Function to precompute _init and _key.
42117 * @private
42118 */
42119 _precompute: function () {
42120 var i = 0, prime = 2, factor;
42121
42122 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
42123
42124 outer: for (; i<64; prime++) {
42125 for (factor=2; factor*factor <= prime; factor++) {
42126 if (prime % factor === 0) {
42127 // not a prime
42128 continue outer;
42129 }
42130 }
42131
42132 if (i<8) {
42133 this._init[i] = frac(Math.pow(prime, 1/2));
42134 }
42135 this._key[i] = frac(Math.pow(prime, 1/3));
42136 i++;
42137 }
42138 },
42139
42140 /**
42141 * Perform one cycle of SHA-256.
42142 * @param {bitArray} words one block of words.
42143 * @private
42144 */
42145 _block:function (words) {
42146 var i, tmp, a, b,
42147 w = words.slice(0),
42148 h = this._h,
42149 k = this._key,
42150 h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
42151 h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
42152
42153 /* Rationale for placement of |0 :
42154 * If a value can overflow is original 32 bits by a factor of more than a few
42155 * million (2^23 ish), there is a possibility that it might overflow the
42156 * 53-bit mantissa and lose precision.
42157 *
42158 * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
42159 * propagates around the loop, and on the hash state h[]. I don't believe
42160 * that the clamps on h4 and on h0 are strictly necessary, but it's close
42161 * (for h4 anyway), and better safe than sorry.
42162 *
42163 * The clamps on h[] are necessary for the output to be correct even in the
42164 * common case and for short inputs.
42165 */
42166 for (i=0; i<64; i++) {
42167 // load up the input word for this round
42168 if (i<16) {
42169 tmp = w[i];
42170 } else {
42171 a = w[(i+1 ) & 15];
42172 b = w[(i+14) & 15];
42173 tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
42174 (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
42175 w[i&15] + w[(i+9) & 15]) | 0;
42176 }
42177
42178 tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
42179
42180 // shift register
42181 h7 = h6; h6 = h5; h5 = h4;
42182 h4 = h3 + tmp | 0;
42183 h3 = h2; h2 = h1; h1 = h0;
42184
42185 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
42186 }
42187
42188 h[0] = h[0]+h0 | 0;
42189 h[1] = h[1]+h1 | 0;
42190 h[2] = h[2]+h2 | 0;
42191 h[3] = h[3]+h3 | 0;
42192 h[4] = h[4]+h4 | 0;
42193 h[5] = h[5]+h5 | 0;
42194 h[6] = h[6]+h6 | 0;
42195 h[7] = h[7]+h7 | 0;
42196 }
42197 };
42198 </script>
42199 <script>// An extremely basic translation library
42200 //
42201 // Example usage:
42202 //
42203 // Set some html to be translated. Do this using the 'data-translate' attribute:
42204 //
42205 // <div data-translate>Test</div>
42206 // <div data-translate-html><em>keep em tag</em></div>
42207 // <input data-translate-placeholder placeholder="Example placeholder">
42208 // <span data-translate-title title="Example title"></span>
42209 //
42210 // Obtain all the phrases to be translated via js debug console:
42211 //
42212 // Translate.phrasesAsJson();
42213 //
42214 // Use that template to translate the phrases into another language.
42215 // Leave the key the same. Change the value to the new language.
42216 //
42217 // Create a js file to load the new phrases. In this example for Spanish,
42218 // es.js will contain the following code:
42219 //
42220 // Translate.loadForeignPhrases("es", {
42221 // "Test": "Test in Spanish",
42222 // "<em>keep em tag</em>": "<em>keep em tag in Spanish</em>",
42223 // "Example placeholder": "Example placeholder in Spanish"
42224 // "Example title": "Example title in Spanish"
42225 // });
42226 //
42227 // In your UI put a listener for clicking on the Spanish button:
42228 //
42229 // mySpanishButton.addEventListener("click", function() {
42230 // Translate.setLanguage("es");
42231 // });
42232 // myEnglishButton.addEventListener("click", function() {
42233 // Translate.setLanguage("en");
42234 // });
42235
42236 Translate = new (function() {
42237
42238 var defaultLanguage = "en";
42239
42240 var allPhrases = {};
42241 allPhrases[defaultLanguage] = {};
42242
42243 // Node types
42244
42245 var text = {
42246 selector: "[data-translate]",
42247 getKey: function() {
42248 return this.textContent.trim().replace(/\s+/g, " ");
42249 },
42250 setPhrase: function(p) {
42251 this.textContent = p;
42252 },
42253 }
42254
42255 var html = {
42256 selector: "[data-translate-html]",
42257 getKey: function() {
42258 return this.innerHTML.trim().replace(/\s+/g, " ");
42259 },
42260 setPhrase: function(p) {
42261 this.innerHTML = p;
42262 },
42263 }
42264
42265 var placeholder = {
42266 selector: "[data-translate-placeholder]",
42267 getKey: function() {
42268 return this.getAttribute("placeholder").trim().replace(/\s+/g, " ");
42269 },
42270 setPhrase: function(p) {
42271 this.setAttribute("placeholder", p);
42272 },
42273 }
42274
42275 var title = {
42276 selector: "[data-translate-title]",
42277 getKey: function() {
42278 return this.getAttribute("title").trim().replace(/\s+/g, " ");
42279 },
42280 setPhrase: function(p) {
42281 this.setAttribute("title", p);
42282 },
42283 }
42284
42285 // Get elements to be translated
42286 var allEls = getEls(text)
42287 .concat(getEls(html))
42288 .concat(getEls(placeholder))
42289 .concat(getEls(title));
42290
42291 // Provides access to phrases from a non-default language.
42292 // See phrases_en.js for example usage.
42293 this.loadForeignPhrases = function(language, phrases) {
42294 allPhrases[language] = phrases;
42295 }
42296
42297 // Displays a different language, eg "en" or "fr"
42298 this.setLanguage = function(language) {
42299 for (var i=0; i<allEls.length; i++) {
42300 var el = allEls[i];
42301 var key = el.key;
42302 if (!(language in allPhrases)) {
42303 console.log(language + " not in allPhrases");
42304 return;
42305 }
42306 if (!(key in allPhrases[language])) {
42307 console.log(language + " does not contain phrase: " + key);
42308 return;
42309 }
42310 var phrase = allPhrases[language][key];
42311 el.setPhrase(phrase);
42312 }
42313 }
42314
42315 // Converts the phrases to a key-pair json file.
42316 // This is a good way to export phrases for use in translation tools.
42317 this.phrasesAsJson = function(language) {
42318 var keys = [];
42319 for (var i=0; i<allEls.length; i++) {
42320 var el = allEls[i];
42321 var key = el.key;
42322 keys.push(key);
42323 }
42324 keys.sort();
42325 var output = {};
42326 for (var i=0; i<keys.length; i++) {
42327 var key = keys[i];
42328 var translated = "";
42329 if (language in allPhrases && key in allPhrases[language]) {
42330 translated = allPhrases[language][key];
42331 }
42332 output[key] = translated;
42333 }
42334 return JSON.stringify(output, null, 2);
42335 }
42336
42337 function getEls(nodeType) {
42338 var nodes = document.querySelectorAll(nodeType.selector);
42339 var els = [];
42340 for (var i=0; i<nodes.length; i++) {
42341 var node = nodes[i];
42342 node.getKey = nodeType.getKey;
42343 node.setPhrase = nodeType.setPhrase;
42344 node.key = node.getKey();
42345 allPhrases[defaultLanguage][node.key] = node.key;
42346 els.push(node);
42347 }
42348 return els;
42349 }
42350
42351 })();
42352 </script>
42353 <script>Translate.loadForeignPhrases("en",
42354 {
42355 "<code>m/44'/0'/0'/0</code> generates public addresses": "<code>m/44'/0'/0'/0</code> generates public addresses",
42356 "<code>m/44'/0'/0'/1</code> generates change addresses": "<code>m/44'/0'/0'/1</code> generates change addresses",
42357 "<code>m/44'/0'/0'</code> generates extended keys for import / export": "<code>m/44'/0'/0'</code> generates extended keys for import / export",
42358 "<code>m/44'/0'/1'</code> for the next account. Continue incrementing for more accounts (most use a single account).": "<code>m/44'/0'/1'</code> for the next account. Continue incrementing for more accounts (most use a single account).",
42359 "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards": "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards",
42360 "Account": "Account",
42361 "Address": "Address",
42362 "Alternatively, download the file from the repository": "Alternatively, download the file from the repository",
42363 "BIP32 Derivation Path": "BIP32 Derivation Path",
42364 "BIP32 Extended Key": "BIP32 Extended Key",
42365 "BIP32 Extended Key (addresses only)": "BIP32 Extended Key (addresses only)",
42366 "BIP32 Root Key": "BIP32 Root Key",
42367 "BIP39 Mnemonic": "BIP39 Mnemonic",
42368 "BIP39 Passphrase (optional)": "BIP39 Passphrase (optional)",
42369 "BIP39 Seed": "BIP39 Seed",
42370 "Base 10": "Base 10",
42371 "Base 6": "Base 6",
42372 "Be careful - it can be easy to make mistakes if you don't know what you're doing.": "Be careful - it can be easy to make mistakes if you don't know what you're doing.",
42373 "Binary": "Binary",
42374 "Bitcoin Core": "Bitcoin Core",
42375 "Bits Per Event": "Bits Per Event",
42376 "Block Explorers": "Block Explorers",
42377 "Can be used with": "Can be used with",
42378 "Card": "Card",
42379 "Coin": "Coin",
42380 "Dice": "Dice",
42381 "Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address, keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't random enough for the needs of this tool.": "Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address, keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't random enough for the needs of this tool.",
42382 "Double-click that file to open it in a browser on any offline computer.": "Double-click that file to open it in a browser on any offline computer.",
42383 "Entropy": "Entropy",
42384 "Entropy Type": "Entropy Type",
42385 "Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.": "Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.",
42386 "Entropy values must be sourced from a <a href=\"https://en.wikipedia.org/wiki/Random_number_generation\" target=\"_blank\">strong source of randomness</a>.": "Entropy values must be sourced from a <a href=\"https://en.wikipedia.org/wiki/Random_number_generation\" target=\"_blank\">strong source of randomness</a>.",
42387 "Event Count": "Event Count",
42388 "External / Internal": "External / Internal",
42389 "Filtered Entropy": "Filtered Entropy",
42390 "For more info see the <a href=\"http://www.mycelium.com/\" target=\"_blank\">Mycelium Wallet homepage</a>": "For more info see the <a href=\"http://www.mycelium.com/\" target=\"_blank\">Mycelium Wallet homepage</a>",
42391 "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\" target=\"_blank\">BIP39 spec</a>.": "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\" target=\"_blank\">BIP39 spec</a>.",
42392 "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">BIP44 spec</a>.": "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">BIP44 spec</a>.",
42393 "For more info see the <a href=\"https://github.com/bitcoin/bitcoin/pull/8035\" target=\"_blank\">Bitcoin Core BIP32 implementation</a>": "For more info see the <a href=\"https://github.com/bitcoin/bitcoin/pull/8035\" target=\"_blank\">Bitcoin Core BIP32 implementation</a>",
42394 "For more info see the BIP32 spec": "For more info see the BIP32 spec",
42395 "From entropy length (3 words per 32 bits)": "From entropy length (3 words per 32 bits)",
42396 "Generate a random mnemonic, or enter your own below": "Generate a random mnemonic, or enter your own below",
42397 "Get the source code from the repository": "Get the source code from the repository",
42398 "Hex": "Hex",
42399 "Hierarchical Deterministic Wallets": "Hierarchical Deterministic Wallets",
42400 "If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.": "If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.",
42401 "In that case you might choose to use your own source of entropy.": "In that case you might choose to use your own source of entropy.",
42402 "In your browser, select file save-as, and save this page as a file.": "In your browser, select file save-as, and save this page as a file.",
42403 "Libraries": "Libraries",
42404 "Mnemonic Language": "Mnemonic Language",
42405 "Mnemonic Length": "Mnemonic Length",
42406 "Mnemonic code for generating deterministic keys": "Mnemonic code for generating deterministic keys",
42407 "More info": "More info",
42408 "Multi-Account Hierarchy for Deterministic Wallets": "Multi-Account Hierarchy for Deterministic Wallets",
42409 "Mycelium Wallet": "Mycelium Wallet",
42410 "Note these addreses are derived from the BIP32 Extended Key": "Note these addreses are derived from the BIP32 Extended Key",
42411 "Offline Usage": "Offline Usage",
42412 "Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.": "Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.",
42413 "Path": "Path",
42414 "Private Key": "Private Key",
42415 "Private Keys": "Private Keys",
42416 "Public Key": "Public Key",
42417 "Purpose": "Purpose",
42418 "Raw Binary": "Raw Binary",
42419 "Read more": "Read more",
42420 "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\" target=\"_blank\">official BIP32 spec</a>": "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\" target=\"_blank\">official BIP32 spec</a>",
42421 "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">official BIP39 spec</a>": "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">official BIP39 spec</a>",
42422 "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">official BIP44 spec</a>": "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">official BIP44 spec</a>",
42423 "See the demo at <a href=\"http://bip32.org/\" target=\"_blank\">bip32.org</a>": "See the demo at <a href=\"http://bip32.org/\" target=\"_blank\">bip32.org</a>",
42424 "Show": "Show",
42425 "Show more rows": "Show more rows",
42426 "Strength": "Strength",
42427 "Supply my own source of entropy": "Supply my own source of entropy",
42428 "The built in random generator can generally be trusted more than your own intuition about randomness.": "The built in random generator can generally be trusted more than your own intuition about randomness.",
42429 "The random mnemonic generator on this page uses a <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues\" target=\"_blank\">cryptographically secure random number generator</a>.": "The random mnemonic generator on this page uses a <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues\" target=\"_blank\">cryptographically secure random number generator</a>.",
42430 "This means flipping a fair coin, rolling a fair dice, noise measurements etc.": "This means flipping a fair coin, rolling a fair dice, noise measurements etc.",
42431 "This project is 100% open-source code": "This project is 100% open-source code",
42432 "Toggle": "Toggle",
42433 "Total Bits": "Total Bits",
42434 "Use hardened addresses": "Use hardened addresses",
42435 "Use path <code>m/0'/0'</code> with hardened addresses.": "Use path <code>m/0'/0'</code> with hardened addresses.",
42436 "Use path <code>m/44'/0'/0'</code>.": "Use path <code>m/44'/0'/0'</code>.",
42437 "Use private keys at <a href=\"https://web.archive.org/web/20150707020924/https://brainwallet.org/\" target=\"_blank\">brainwallet.org</a>.": "Use private keys at <a href=\"https://web.archive.org/web/20150707020924/https://brainwallet.org/\" target=\"_blank\">brainwallet.org</a>.",
42438 "Valid entropy values include:": "Valid entropy values include:",
42439 "Warning": "Warning",
42440 "Word Count": "Word Count",
42441 "You are not a good source of entropy.": "You are not a good source of entropy.",
42442 "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).": "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).",
42443 "You can use this tool without having to be online.": "You can use this tool without having to be online.",
42444 "words": "words"
42445 }
42446 );
42447 </script>
42448 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42449 WORDLISTS["english"] = [
42450 "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
42451 "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
42452 "action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
42453 "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
42454 "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
42455 "alien","all","alley","allow","almost","alone","alpha","already","also","alter",
42456 "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
42457 "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
42458 "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
42459 "area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
42460 "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
42461 "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
42462 "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
42463 "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
42464 "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
42465 "barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
42466 "beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
42467 "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
42468 "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
42469 "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
42470 "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
42471 "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
42472 "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
42473 "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
42474 "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
42475 "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
42476 "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
42477 "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
42478 "cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
42479 "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
42480 "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
42481 "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
42482 "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
42483 "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
42484 "clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
42485 "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
42486 "code","coffee","coil","coin","collect","color","column","combine","come","comfort",
42487 "comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
42488 "convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
42489 "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
42490 "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
42491 "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
42492 "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
42493 "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
42494 "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
42495 "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
42496 "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
42497 "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
42498 "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
42499 "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
42500 "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
42501 "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
42502 "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
42503 "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
42504 "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
42505 "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
42506 "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
42507 "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
42508 "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
42509 "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
42510 "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
42511 "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
42512 "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
42513 "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
42514 "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
42515 "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
42516 "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
42517 "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
42518 "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
42519 "film","filter","final","find","fine","finger","finish","fire","firm","first",
42520 "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
42521 "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
42522 "foam","focus","fog","foil","fold","follow","food","foot","force","forest",
42523 "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
42524 "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
42525 "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
42526 "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
42527 "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
42528 "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
42529 "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
42530 "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
42531 "grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
42532 "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
42533 "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
42534 "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
42535 "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
42536 "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
42537 "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
42538 "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
42539 "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
42540 "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
42541 "impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
42542 "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
42543 "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
42544 "intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
42545 "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
42546 "job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
42547 "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
42548 "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
42549 "knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
42550 "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
42551 "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
42552 "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
42553 "liar","liberty","library","license","life","lift","light","like","limb","limit",
42554 "link","lion","liquid","list","little","live","lizard","load","loan","lobster",
42555 "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
42556 "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
42557 "magic","magnet","maid","mail","main","major","make","mammal","man","manage",
42558 "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
42559 "marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
42560 "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
42561 "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
42562 "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
42563 "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
42564 "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
42565 "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
42566 "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
42567 "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
42568 "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
42569 "network","neutral","never","news","next","nice","night","noble","noise","nominee",
42570 "noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
42571 "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
42572 "obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
42573 "oil","okay","old","olive","olympic","omit","once","one","onion","online",
42574 "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
42575 "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
42576 "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
42577 "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
42578 "parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
42579 "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
42580 "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
42581 "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
42582 "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
42583 "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
42584 "pole","police","pond","pony","pool","popular","portion","position","possible","post",
42585 "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
42586 "present","pretty","prevent","price","pride","primary","print","priority","prison","private",
42587 "prize","problem","process","produce","profit","program","project","promote","proof","property",
42588 "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
42589 "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
42590 "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
42591 "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
42592 "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
42593 "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
42594 "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
42595 "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
42596 "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
42597 "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
42598 "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
42599 "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
42600 "romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
42601 "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
42602 "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
42603 "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
42604 "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
42605 "scrub","sea","search","season","seat","second","secret","section","security","seed",
42606 "seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
42607 "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
42608 "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
42609 "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
42610 "siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
42611 "sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
42612 "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
42613 "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
42614 "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
42615 "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
42616 "sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
42617 "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
42618 "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
42619 "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
42620 "stand","start","state","stay","steak","steel","stem","step","stereo","stick",
42621 "still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
42622 "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
42623 "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
42624 "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
42625 "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
42626 "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
42627 "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
42628 "teach","team","tell","ten","tenant","tennis","tent","term","test","text",
42629 "thank","that","theme","then","theory","there","they","thing","this","thought",
42630 "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
42631 "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
42632 "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
42633 "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
42634 "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
42635 "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
42636 "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
42637 "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
42638 "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
42639 "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
42640 "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
42641 "uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
42642 "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
42643 "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
42644 "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
42645 "video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
42646 "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
42647 "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
42648 "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
42649 "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
42650 "wheel","when","where","whip","whisper","wide","width","wife","wild","will",
42651 "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
42652 "wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
42653 "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
42654 "yellow","you","young","youth","zebra","zero","zone","zoo"]
42655 </script>
42656 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42657 WORDLISTS["japanese"] = [
42658 "あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
42659 "あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
42660 "あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
42661 "あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
42662 "あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
42663 "あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
42664 "いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
42665 "いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
42666 "いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
42667 "いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
42668 "いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
42669 "いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
42670 "いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
42671 "いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
42672 "いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
42673 "うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
42674 "うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
42675 "うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
42676 "うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
42677 "うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
42678 "うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
42679 "えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
42680 "えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
42681 "えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
42682 "えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
42683 "おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
42684 "おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
42685 "おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
42686 "おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
42687 "おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
42688 "おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
42689 "おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
42690 "かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
42691 "かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
42692 "かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
42693 "がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
42694 "かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
42695 "かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
42696 "きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
42697 "きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
42698 "ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
42699 "きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
42700 "きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
42701 "きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
42702 "きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
42703 "きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
42704 "くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ",
42705 "くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう",
42706 "くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした",
42707 "ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる",
42708 "くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく",
42709 "ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん",
42710 "けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは",
42711 "げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと",
42712 "けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい",
42713 "けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ",
42714 "けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし",
42715 "けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき",
42716 "けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない",
42717 "けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと",
42718 "ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい",
42719 "ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう",
42720 "ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい",
42721 "こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ",
42722 "こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか",
42723 "こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな",
42724 "こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら",
42725 "こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく",
42726 "こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる",
42727 "こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん",
42728 "こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ",
42729 "さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち",
42730 "さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん",
42731 "さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも",
42732 "さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ",
42733 "さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう",
42734 "さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい",
42735 "ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ",
42736 "しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん",
42737 "しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり",
42738 "しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん",
42739 "しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう",
42740 "しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ",
42741 "しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん",
42742 "しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん",
42743 "しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい",
42744 "しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ",
42745 "しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん",
42746 "すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい",
42747 "すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる",
42748 "すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる",
42749 "ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと",
42750 "すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん",
42751 "せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく",
42752 "せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび",
42753 "せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる",
42754 "せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん",
42755 "ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう",
42756 "せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう",
42757 "せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき",
42758 "そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい",
42759 "そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう",
42760 "そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる",
42761 "そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも",
42762 "そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび",
42763 "ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう",
42764 "たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい",
42765 "だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな",
42766 "たいみんぐ", "たいむ", "たいめん", "たいやき", "たいよう", "たいら", "たいりょく", "たいる", "たいわん", "たうえ",
42767 "たえる", "たおす", "たおる", "たおれる", "たかい", "たかね", "たきび", "たくさん", "たこく", "たこやき",
42768 "たさい", "たしざん", "だじゃれ", "たすける", "たずさわる", "たそがれ", "たたかう", "たたく", "ただしい", "たたみ",
42769 "たちばな", "だっかい", "だっきゃく", "だっこ", "だっしゅつ", "だったい", "たてる", "たとえる", "たなばた", "たにん",
42770 "たぬき", "たのしみ", "たはつ", "たぶん", "たべる", "たぼう", "たまご", "たまる", "だむる", "ためいき",
42771 "ためす", "ためる", "たもつ", "たやすい", "たよる", "たらす", "たりきほんがん", "たりょう", "たりる", "たると",
42772 "たれる", "たれんと", "たろっと", "たわむれる", "だんあつ", "たんい", "たんおん", "たんか", "たんき", "たんけん",
42773 "たんご", "たんさん", "たんじょうび", "だんせい", "たんそく", "たんたい", "だんち", "たんてい", "たんとう", "だんな",
42774 "たんにん", "だんねつ", "たんのう", "たんぴん", "だんぼう", "たんまつ", "たんめい", "だんれつ", "だんろ", "だんわ",
42775 "ちあい", "ちあん", "ちいき", "ちいさい", "ちえん", "ちかい", "ちから", "ちきゅう", "ちきん", "ちけいず",
42776 "ちけん", "ちこく", "ちさい", "ちしき", "ちしりょう", "ちせい", "ちそう", "ちたい", "ちたん", "ちちおや",
42777 "ちつじょ", "ちてき", "ちてん", "ちぬき", "ちぬり", "ちのう", "ちひょう", "ちへいせん", "ちほう", "ちまた",
42778 "ちみつ", "ちみどろ", "ちめいど", "ちゃんこなべ", "ちゅうい", "ちゆりょく", "ちょうし", "ちょさくけん", "ちらし", "ちらみ",
42779 "ちりがみ", "ちりょう", "ちるど", "ちわわ", "ちんたい", "ちんもく", "ついか", "ついたち", "つうか", "つうじょう",
42780 "つうはん", "つうわ", "つかう", "つかれる", "つくね", "つくる", "つけね", "つける", "つごう", "つたえる",
42781 "つづく", "つつじ", "つつむ", "つとめる", "つながる", "つなみ", "つねづね", "つのる", "つぶす", "つまらない",
42782 "つまる", "つみき", "つめたい", "つもり", "つもる", "つよい", "つるぼ", "つるみく", "つわもの", "つわり",
42783 "てあし", "てあて", "てあみ", "ていおん", "ていか", "ていき", "ていけい", "ていこく", "ていさつ", "ていし",
42784 "ていせい", "ていたい", "ていど", "ていねい", "ていひょう", "ていへん", "ていぼう", "てうち", "ておくれ", "てきとう",
42785 "てくび", "でこぼこ", "てさぎょう", "てさげ", "てすり", "てそう", "てちがい", "てちょう", "てつがく", "てつづき",
42786 "でっぱ", "てつぼう", "てつや", "でぬかえ", "てぬき", "てぬぐい", "てのひら", "てはい", "てぶくろ", "てふだ",
42787 "てほどき", "てほん", "てまえ", "てまきずし", "てみじか", "てみやげ", "てらす", "てれび", "てわけ", "てわたし",
42788 "でんあつ", "てんいん", "てんかい", "てんき", "てんぐ", "てんけん", "てんごく", "てんさい", "てんし", "てんすう",
42789 "でんち", "てんてき", "てんとう", "てんない", "てんぷら", "てんぼうだい", "てんめつ", "てんらんかい", "でんりょく", "でんわ",
42790 "どあい", "といれ", "どうかん", "とうきゅう", "どうぐ", "とうし", "とうむぎ", "とおい", "とおか", "とおく",
42791 "とおす", "とおる", "とかい", "とかす", "ときおり", "ときどき", "とくい", "とくしゅう", "とくてん", "とくに",
42792 "とくべつ", "とけい", "とける", "とこや", "とさか", "としょかん", "とそう", "とたん", "とちゅう", "とっきゅう",
42793 "とっくん", "とつぜん", "とつにゅう", "とどける", "ととのえる", "とない", "となえる", "となり", "とのさま", "とばす",
42794 "どぶがわ", "とほう", "とまる", "とめる", "ともだち", "ともる", "どようび", "とらえる", "とんかつ", "どんぶり",
42795 "ないかく", "ないこう", "ないしょ", "ないす", "ないせん", "ないそう", "なおす", "ながい", "なくす", "なげる",
42796 "なこうど", "なさけ", "なたでここ", "なっとう", "なつやすみ", "ななおし", "なにごと", "なにもの", "なにわ", "なのか",
42797 "なふだ", "なまいき", "なまえ", "なまみ", "なみだ", "なめらか", "なめる", "なやむ", "ならう", "ならび",
42798 "ならぶ", "なれる", "なわとび", "なわばり", "にあう", "にいがた", "にうけ", "におい", "にかい", "にがて",
42799 "にきび", "にくしみ", "にくまん", "にげる", "にさんかたんそ", "にしき", "にせもの", "にちじょう", "にちようび", "にっか",
42800 "にっき", "にっけい", "にっこう", "にっさん", "にっしょく", "にっすう", "にっせき", "にってい", "になう", "にほん",
42801 "にまめ", "にもつ", "にやり", "にゅういん", "にりんしゃ", "にわとり", "にんい", "にんか", "にんき", "にんげん",
42802 "にんしき", "にんずう", "にんそう", "にんたい", "にんち", "にんてい", "にんにく", "にんぷ", "にんまり", "にんむ",
42803 "にんめい", "にんよう", "ぬいくぎ", "ぬかす", "ぬぐいとる", "ぬぐう", "ぬくもり", "ぬすむ", "ぬまえび", "ぬめり",
42804 "ぬらす", "ぬんちゃく", "ねあげ", "ねいき", "ねいる", "ねいろ", "ねぐせ", "ねくたい", "ねくら", "ねこぜ",
42805 "ねこむ", "ねさげ", "ねすごす", "ねそべる", "ねだん", "ねつい", "ねっしん", "ねつぞう", "ねったいぎょ", "ねぶそく",
42806 "ねふだ", "ねぼう", "ねほりはほり", "ねまき", "ねまわし", "ねみみ", "ねむい", "ねむたい", "ねもと", "ねらう",
42807 "ねわざ", "ねんいり", "ねんおし", "ねんかん", "ねんきん", "ねんぐ", "ねんざ", "ねんし", "ねんちゃく", "ねんど",
42808 "ねんぴ", "ねんぶつ", "ねんまつ", "ねんりょう", "ねんれい", "のいず", "のおづま", "のがす", "のきなみ", "のこぎり",
42809 "のこす", "のこる", "のせる", "のぞく", "のぞむ", "のたまう", "のちほど", "のっく", "のばす", "のはら",
42810 "のべる", "のぼる", "のみもの", "のやま", "のらいぬ", "のらねこ", "のりもの", "のりゆき", "のれん", "のんき",
42811 "ばあい", "はあく", "ばあさん", "ばいか", "ばいく", "はいけん", "はいご", "はいしん", "はいすい", "はいせん",
42812 "はいそう", "はいち", "ばいばい", "はいれつ", "はえる", "はおる", "はかい", "ばかり", "はかる", "はくしゅ",
42813 "はけん", "はこぶ", "はさみ", "はさん", "はしご", "ばしょ", "はしる", "はせる", "ぱそこん", "はそん",
42814 "はたん", "はちみつ", "はつおん", "はっかく", "はづき", "はっきり", "はっくつ", "はっけん", "はっこう", "はっさん",
42815 "はっしん", "はったつ", "はっちゅう", "はってん", "はっぴょう", "はっぽう", "はなす", "はなび", "はにかむ", "はぶらし",
42816 "はみがき", "はむかう", "はめつ", "はやい", "はやし", "はらう", "はろうぃん", "はわい", "はんい", "はんえい",
42817 "はんおん", "はんかく", "はんきょう", "ばんぐみ", "はんこ", "はんしゃ", "はんすう", "はんだん", "ぱんち", "ぱんつ",
42818 "はんてい", "はんとし", "はんのう", "はんぱ", "はんぶん", "はんぺん", "はんぼうき", "はんめい", "はんらん", "はんろん",
42819 "ひいき", "ひうん", "ひえる", "ひかく", "ひかり", "ひかる", "ひかん", "ひくい", "ひけつ", "ひこうき",
42820 "ひこく", "ひさい", "ひさしぶり", "ひさん", "びじゅつかん", "ひしょ", "ひそか", "ひそむ", "ひたむき", "ひだり",
42821 "ひたる", "ひつぎ", "ひっこし", "ひっし", "ひつじゅひん", "ひっす", "ひつぜん", "ぴったり", "ぴっちり", "ひつよう",
42822 "ひてい", "ひとごみ", "ひなまつり", "ひなん", "ひねる", "ひはん", "ひびく", "ひひょう", "ひほう", "ひまわり",
42823 "ひまん", "ひみつ", "ひめい", "ひめじし", "ひやけ", "ひやす", "ひよう", "びょうき", "ひらがな", "ひらく",
42824 "ひりつ", "ひりょう", "ひるま", "ひるやすみ", "ひれい", "ひろい", "ひろう", "ひろき", "ひろゆき", "ひんかく",
42825 "ひんけつ", "ひんこん", "ひんしゅ", "ひんそう", "ぴんち", "ひんぱん", "びんぼう", "ふあん", "ふいうち", "ふうけい",
42826 "ふうせん", "ぷうたろう", "ふうとう", "ふうふ", "ふえる", "ふおん", "ふかい", "ふきん", "ふくざつ", "ふくぶくろ",
42827 "ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん",
42828 "ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう",
42829 "ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる",
42830 "ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん",
42831 "へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん",
42832 "へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし",
42833 "へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん",
42834 "ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう",
42835 "ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる",
42836 "ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ",
42837 "ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく",
42838 "まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう",
42839 "まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち",
42840 "みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる",
42841 "みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす",
42842 "みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき",
42843 "むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい",
42844 "むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう",
42845 "むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん",
42846 "めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす",
42847 "めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん",
42848 "もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや",
42849 "やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん",
42850 "やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ",
42851 "ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ",
42852 "ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん",
42853 "よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか",
42854 "よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご",
42855 "らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい",
42856 "りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん",
42857 "りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき",
42858 "りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ",
42859 "れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい",
42860 "れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら",
42861 "ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす",
42862 "わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"]
42863 </script>
42864 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42865 WORDLISTS["spanish"] = [
42866 "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
42867 "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
42868 "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
42869 "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
42870 "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
42871 "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
42872 "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
42873 "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
42874 "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
42875 "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
42876 "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
42877 "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
42878 "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
42879 "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
42880 "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
42881 "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
42882 "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
42883 "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
42884 "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
42885 "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
42886 "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
42887 "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
42888 "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
42889 "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
42890 "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
42891 "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
42892 "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
42893 "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
42894 "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
42895 "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
42896 "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
42897 "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
42898 "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
42899 "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
42900 "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
42901 "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
42902 "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
42903 "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
42904 "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
42905 "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
42906 "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
42907 "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
42908 "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
42909 "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
42910 "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
42911 "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
42912 "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
42913 "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
42914 "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
42915 "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
42916 "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
42917 "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
42918 "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
42919 "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
42920 "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
42921 "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
42922 "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
42923 "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
42924 "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
42925 "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
42926 "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
42927 "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
42928 "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
42929 "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
42930 "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
42931 "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
42932 "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
42933 "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
42934 "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
42935 "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
42936 "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
42937 "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
42938 "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
42939 "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
42940 "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
42941 "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
42942 "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
42943 "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
42944 "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
42945 "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
42946 "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
42947 "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
42948 "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
42949 "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
42950 "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
42951 "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
42952 "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
42953 "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
42954 "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
42955 "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
42956 "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
42957 "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
42958 "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
42959 "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
42960 "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
42961 "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
42962 "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
42963 "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
42964 "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
42965 "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
42966 "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
42967 "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
42968 "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
42969 "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
42970 "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
42971 "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
42972 "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
42973 "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
42974 "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
42975 "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
42976 "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
42977 "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
42978 "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
42979 "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
42980 "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
42981 "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
42982 "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
42983 "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
42984 "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
42985 "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
42986 "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
42987 "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
42988 "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
42989 "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
42990 "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
42991 "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
42992 "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
42993 "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
42994 "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
42995 "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
42996 "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
42997 "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
42998 "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
42999 "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
43000 "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
43001 "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
43002 "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
43003 "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
43004 "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
43005 "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
43006 "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
43007 "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
43008 "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
43009 "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
43010 "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
43011 "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
43012 "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
43013 "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
43014 "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
43015 "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
43016 "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
43017 "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
43018 "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
43019 "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
43020 "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
43021 "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
43022 "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
43023 "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
43024 "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
43025 "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
43026 "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
43027 "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
43028 "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
43029 "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
43030 "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
43031 "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
43032 "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
43033 "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
43034 "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
43035 "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
43036 "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
43037 "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
43038 "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
43039 "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
43040 "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
43041 "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
43042 "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
43043 "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
43044 "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
43045 "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
43046 "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
43047 "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
43048 "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
43049 "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
43050 "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
43051 "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
43052 "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
43053 "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
43054 "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
43055 "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
43056 "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
43057 "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
43058 "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
43059 "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
43060 "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
43061 "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
43062 "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
43063 "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
43064 "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
43065 "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
43066 "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
43067 "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
43068 "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
43069 "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
43070 "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
43071 </script>
43072 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43073 WORDLISTS["chinese_simplified"] = [
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 "皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝",
43277 "巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝",
43278 "卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ]
43279 </script>
43280 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43281 WORDLISTS["chinese_traditional"] = [
43282 "的", "一", "是", "在", "不", "了", "有", "和", "人", "這",
43283 "中", "大", "為", "上", "個", "國", "我", "以", "要", "他",
43284 "時", "來", "用", "們", "生", "到", "作", "地", "於", "出",
43285 "就", "分", "對", "成", "會", "可", "主", "發", "年", "動",
43286 "同", "工", "也", "能", "下", "過", "子", "說", "產", "種",
43287 "面", "而", "方", "後", "多", "定", "行", "學", "法", "所",
43288 "民", "得", "經", "十", "三", "之", "進", "著", "等", "部",
43289 "度", "家", "電", "力", "裡", "如", "水", "化", "高", "自",
43290 "二", "理", "起", "小", "物", "現", "實", "加", "量", "都",
43291 "兩", "體", "制", "機", "當", "使", "點", "從", "業", "本",
43292 "去", "把", "性", "好", "應", "開", "它", "合", "還", "因",
43293 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
43294 "那", "社", "義", "事", "平", "形", "相", "全", "表", "間",
43295 "樣", "與", "關", "各", "重", "新", "線", "內", "數", "正",
43296 "心", "反", "你", "明", "看", "原", "又", "麼", "利", "比",
43297 "或", "但", "質", "氣", "第", "向", "道", "命", "此", "變",
43298 "條", "只", "沒", "結", "解", "問", "意", "建", "月", "公",
43299 "無", "系", "軍", "很", "情", "者", "最", "立", "代", "想",
43300 "已", "通", "並", "提", "直", "題", "黨", "程", "展", "五",
43301 "果", "料", "象", "員", "革", "位", "入", "常", "文", "總",
43302 "次", "品", "式", "活", "設", "及", "管", "特", "件", "長",
43303 "求", "老", "頭", "基", "資", "邊", "流", "路", "級", "少",
43304 "圖", "山", "統", "接", "知", "較", "將", "組", "見", "計",
43305 "別", "她", "手", "角", "期", "根", "論", "運", "農", "指",
43306 "幾", "九", "區", "強", "放", "決", "西", "被", "幹", "做",
43307 "必", "戰", "先", "回", "則", "任", "取", "據", "處", "隊",
43308 "南", "給", "色", "光", "門", "即", "保", "治", "北", "造",
43309 "百", "規", "熱", "領", "七", "海", "口", "東", "導", "器",
43310 "壓", "志", "世", "金", "增", "爭", "濟", "階", "油", "思",
43311 "術", "極", "交", "受", "聯", "什", "認", "六", "共", "權",
43312 "收", "證", "改", "清", "美", "再", "採", "轉", "更", "單",
43313 "風", "切", "打", "白", "教", "速", "花", "帶", "安", "場",
43314 "身", "車", "例", "真", "務", "具", "萬", "每", "目", "至",
43315 "達", "走", "積", "示", "議", "聲", "報", "鬥", "完", "類",
43316 "八", "離", "華", "名", "確", "才", "科", "張", "信", "馬",
43317 "節", "話", "米", "整", "空", "元", "況", "今", "集", "溫",
43318 "傳", "土", "許", "步", "群", "廣", "石", "記", "需", "段",
43319 "研", "界", "拉", "林", "律", "叫", "且", "究", "觀", "越",
43320 "織", "裝", "影", "算", "低", "持", "音", "眾", "書", "布",
43321 "复", "容", "兒", "須", "際", "商", "非", "驗", "連", "斷",
43322 "深", "難", "近", "礦", "千", "週", "委", "素", "技", "備",
43323 "半", "辦", "青", "省", "列", "習", "響", "約", "支", "般",
43324 "史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克",
43325 "何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
43326 "號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
43327 "毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
43328 "王", "按", "格", "養", "易", "置", "派", "層", "片", "始",
43329 "卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓",
43330 "包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅",
43331 "細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液",
43332 "官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配",
43333 "女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席",
43334 "含", "企", "望", "密", "批", "營", "項", "防", "舉", "球",
43335 "英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪",
43336 "破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供",
43337 "河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止",
43338 "案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視",
43339 "僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續",
43340 "輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司",
43341 "足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯",
43342 "負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸",
43343 "修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右",
43344 "財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴",
43345 "跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互",
43346 "初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換",
43347 "未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述",
43348 "錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令",
43349 "限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控",
43350 "州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂",
43351 "礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客",
43352 "袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協",
43353 "訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦",
43354 "夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮",
43355 "終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停",
43356 "烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻",
43357 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
43358 "侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖",
43359 "貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植",
43360 "息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙",
43361 "醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤",
43362 "訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩",
43363 "脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡",
43364 "械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚",
43365 "粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴",
43366 "鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐",
43367 "培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執",
43368 "答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松",
43369 "腳", "困", "異", "免", "背", "星", "福", "買", "染", "井",
43370 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補",
43371 "評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希",
43372 "傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架",
43373 "亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷",
43374 "詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
43375 "綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠",
43376 "屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措",
43377 "束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱",
43378 "胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永",
43379 "宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿",
43380 "露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕",
43381 "庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召",
43382 "鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純",
43383 "借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍",
43384 "潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳",
43385 "歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭",
43386 "納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦",
43387 "塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁",
43388 "刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退",
43389 "洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅",
43390 "獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
43391 "陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
43392 "樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典",
43393 "館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚",
43394 "塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛",
43395 "楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨",
43396 "監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡",
43397 "壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬",
43398 "橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐",
43399 "您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園",
43400 "紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉",
43401 "灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼",
43402 "齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩",
43403 "淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
43404 "莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘",
43405 "夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億",
43406 "璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴",
43407 "縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯",
43408 "津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳",
43409 "肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰",
43410 "貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭",
43411 "峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺",
43412 "浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡",
43413 "睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞",
43414 "炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴",
43415 "呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞",
43416 "授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰",
43417 "幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮",
43418 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違",
43419 "夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催",
43420 "繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯",
43421 "禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃",
43422 "勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊",
43423 "飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈",
43424 "掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅",
43425 "奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂",
43426 "寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱",
43427 "貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤",
43428 "漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹",
43429 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏",
43430 "銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅",
43431 "缸", "牽", "搶", "博", "巧", "殼", "兄", "杜", "訊", "誠",
43432 "碧", "祥", "柯", "頁", "巡", "矩", "悲", "灌", "齡", "倫",
43433 "票", "尋", "桂", "鋪", "聖", "恐", "恰", "鄭", "趣", "抬",
43434 "荒", "騰", "貼", "柔", "滴", "猛", "闊", "輛", "妻", "填",
43435 "撤", "儲", "簽", "鬧", "擾", "紫", "砂", "遞", "戲", "吊",
43436 "陶", "伐", "餵", "療", "瓶", "婆", "撫", "臂", "摸", "忍",
43437 "蝦", "蠟", "鄰", "胸", "鞏", "擠", "偶", "棄", "槽", "勁",
43438 "乳", "鄧", "吉", "仁", "爛", "磚", "租", "烏", "艦", "伴",
43439 "瓜", "淺", "丙", "暫", "燥", "橡", "柳", "迷", "暖", "牌",
43440 "秧", "膽", "詳", "簧", "踏", "瓷", "譜", "呆", "賓", "糊",
43441 "洛", "輝", "憤", "競", "隙", "怒", "粘", "乃", "緒", "肩",
43442 "籍", "敏", "塗", "熙", "皆", "偵", "懸", "掘", "享", "糾",
43443 "醒", "狂", "鎖", "淀", "恨", "牲", "霸", "爬", "賞", "逆",
43444 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鴨",
43445 "趨", "鳳", "晨", "畜", "輩", "秩", "卵", "署", "梯", "炎",
43446 "灘", "棋", "驅", "篩", "峽", "冒", "啥", "壽", "譯", "浸",
43447 "泉", "帽", "遲", "矽", "疆", "貸", "漏", "稿", "冠", "嫩",
43448 "脅", "芯", "牢", "叛", "蝕", "奧", "鳴", "嶺", "羊", "憑",
43449 "串", "塘", "繪", "酵", "融", "盆", "錫", "廟", "籌", "凍",
43450 "輔", "攝", "襲", "筋", "拒", "僚", "旱", "鉀", "鳥", "漆",
43451 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭",
43452 "僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸",
43453 "豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥",
43454 "掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨",
43455 "霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償",
43456 "蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥",
43457 "番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃",
43458 "扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框",
43459 "悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟",
43460 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋",
43461 "黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧",
43462 "甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨",
43463 "偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷",
43464 "弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄",
43465 "逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆",
43466 "冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟",
43467 "欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟",
43468 "搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒",
43469 "憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲",
43470 "杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎",
43471 "烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒",
43472 "姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇",
43473 "董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢",
43474 "拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋",
43475 "覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼",
43476 "兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪",
43477 "叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘",
43478 "鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘",
43479 "窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈",
43480 "胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄",
43481 "瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁",
43482 "嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿",
43483 "蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫",
43484 "皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩",
43485 "巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗",
43486 "卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ]
43487 </script>
43488 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43489 WORDLISTS["french"] = [
43490 "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
43491 "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
43492 "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
43493 "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
43494 "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
43495 "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
43496 "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
43497 "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
43498 "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
43499 "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
43500 "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
43501 "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
43502 "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
43503 "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
43504 "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
43505 "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
43506 "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
43507 "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
43508 "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
43509 "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
43510 "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
43511 "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
43512 "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
43513 "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
43514 "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
43515 "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
43516 "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
43517 "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
43518 "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
43519 "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
43520 "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
43521 "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
43522 "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
43523 "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
43524 "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
43525 "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
43526 "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
43527 "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
43528 "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
43529 "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
43530 "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
43531 "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
43532 "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
43533 "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
43534 "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
43535 "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
43536 "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
43537 "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
43538 "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
43539 "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
43540 "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
43541 "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
43542 "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
43543 "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
43544 "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
43545 "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
43546 "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
43547 "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
43548 "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
43549 "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
43550 "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
43551 "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
43552 "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
43553 "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
43554 "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
43555 "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
43556 "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
43557 "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
43558 "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
43559 "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
43560 "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
43561 "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
43562 "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
43563 "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
43564 "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
43565 "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
43566 "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
43567 "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
43568 "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
43569 "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
43570 "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
43571 "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
43572 "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
43573 "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
43574 "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
43575 "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
43576 "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
43577 "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
43578 "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
43579 "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
43580 "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
43581 "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
43582 "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
43583 "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
43584 "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
43585 "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
43586 "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
43587 "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
43588 "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
43589 "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
43590 "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
43591 "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
43592 "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
43593 "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
43594 "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
43595 "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
43596 "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
43597 "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
43598 "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
43599 "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
43600 "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
43601 "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
43602 "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
43603 "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
43604 "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
43605 "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
43606 "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
43607 "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
43608 "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
43609 "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
43610 "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
43611 "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
43612 "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
43613 "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
43614 "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
43615 "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
43616 "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
43617 "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
43618 "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
43619 "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
43620 "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
43621 "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
43622 "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
43623 "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
43624 "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
43625 "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
43626 "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
43627 "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
43628 "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
43629 "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
43630 "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
43631 "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
43632 "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
43633 "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
43634 "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
43635 "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
43636 "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
43637 "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
43638 "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
43639 "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
43640 "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
43641 "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
43642 "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
43643 "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
43644 "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
43645 "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
43646 "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
43647 "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
43648 "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
43649 "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
43650 "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
43651 "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
43652 "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
43653 "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
43654 "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
43655 "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
43656 "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
43657 "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
43658 "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
43659 "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
43660 "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
43661 "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
43662 "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
43663 "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
43664 "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
43665 "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
43666 "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
43667 "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
43668 "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
43669 "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
43670 "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
43671 "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
43672 "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
43673 "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
43674 "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
43675 "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
43676 "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
43677 "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
43678 "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
43679 "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
43680 "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
43681 "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
43682 "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
43683 "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
43684 "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
43685 "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
43686 "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
43687 "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
43688 "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
43689 "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
43690 "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
43691 "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
43692 "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
43693 "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
43694 "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
43695 </script>
43696 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43697 WORDLISTS["italian"] = [
43698 "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
43699 "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
43700 "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
43701 "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
43702 "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
43703 "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
43704 "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
43705 "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
43706 "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
43707 "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
43708 "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
43709 "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
43710 "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
43711 "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
43712 "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
43713 "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
43714 "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
43715 "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
43716 "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
43717 "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
43718 "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
43719 "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
43720 "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
43721 "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
43722 "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
43723 "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
43724 "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
43725 "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
43726 "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
43727 "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
43728 "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
43729 "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
43730 "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
43731 "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
43732 "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
43733 "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
43734 "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
43735 "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
43736 "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
43737 "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
43738 "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
43739 "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
43740 "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
43741 "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
43742 "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
43743 "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
43744 "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
43745 "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
43746 "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
43747 "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
43748 "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
43749 "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
43750 "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
43751 "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
43752 "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
43753 "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
43754 "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
43755 "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
43756 "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
43757 "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
43758 "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
43759 "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
43760 "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
43761 "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
43762 "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
43763 "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
43764 "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
43765 "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
43766 "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
43767 "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
43768 "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
43769 "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
43770 "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
43771 "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
43772 "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
43773 "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
43774 "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
43775 "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
43776 "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
43777 "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
43778 "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
43779 "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
43780 "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
43781 "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
43782 "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
43783 "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
43784 "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
43785 "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
43786 "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
43787 "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
43788 "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
43789 "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
43790 "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
43791 "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
43792 "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
43793 "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
43794 "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
43795 "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
43796 "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
43797 "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
43798 "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
43799 "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
43800 "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
43801 "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
43802 "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
43803 "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
43804 "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
43805 "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
43806 "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
43807 "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
43808 "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
43809 "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
43810 "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
43811 "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
43812 "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
43813 "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
43814 "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
43815 "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
43816 "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
43817 "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
43818 "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
43819 "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
43820 "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
43821 "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
43822 "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
43823 "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
43824 "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
43825 "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
43826 "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
43827 "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
43828 "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
43829 "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
43830 "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
43831 "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
43832 "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
43833 "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
43834 "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
43835 "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
43836 "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
43837 "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
43838 "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
43839 "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
43840 "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
43841 "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
43842 "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
43843 "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
43844 "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
43845 "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
43846 "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
43847 "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
43848 "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
43849 "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
43850 "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
43851 "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
43852 "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
43853 "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
43854 "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
43855 "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
43856 "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
43857 "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
43858 "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
43859 "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
43860 "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
43861 "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
43862 "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
43863 "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
43864 "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
43865 "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
43866 "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
43867 "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
43868 "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
43869 "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
43870 "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
43871 "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
43872 "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
43873 "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
43874 "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
43875 "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
43876 "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
43877 "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
43878 "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
43879 "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
43880 "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
43881 "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
43882 "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
43883 "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
43884 "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
43885 "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
43886 "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
43887 "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
43888 "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
43889 "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
43890 "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
43891 "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
43892 "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
43893 "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
43894 "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
43895 "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
43896 "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
43897 "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
43898 "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
43899 "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
43900 "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
43901 "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
43902 "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
43903 </script>
43904 <script>/*
43905 * Copyright (c) 2013 Pavol Rusnak
43906 *
43907 * Permission is hereby granted, free of charge, to any person obtaining a copy of
43908 * this software and associated documentation files (the "Software"), to deal in
43909 * the Software without restriction, including without limitation the rights to
43910 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
43911 * of the Software, and to permit persons to whom the Software is furnished to do
43912 * so, subject to the following conditions:
43913 *
43914 * The above copyright notice and this permission notice shall be included in all
43915 * copies or substantial portions of the Software.
43916 *
43917 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
43918 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
43919 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
43920 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
43921 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
43922 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
43923 */
43924
43925 /*
43926 * Javascript port from python by Ian Coleman
43927 *
43928 * Requires code from sjcl
43929 * https://github.com/bitwiseshiftleft/sjcl
43930 */
43931
43932 var Mnemonic = function(language) {
43933
43934 var PBKDF2_ROUNDS = 2048;
43935 var RADIX = 2048;
43936
43937 var self = this;
43938 var wordlist = [];
43939
43940 var hmacSHA512 = function(key) {
43941 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
43942 this.encrypt = function() {
43943 return hasher.encrypt.apply(hasher, arguments);
43944 };
43945 };
43946
43947 function init() {
43948 wordlist = WORDLISTS[language];
43949 if (wordlist.length != RADIX) {
43950 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
43951 throw err;
43952 }
43953 }
43954
43955 self.generate = function(strength) {
43956 strength = strength || 128;
43957 var r = strength % 32;
43958 if (r > 0) {
43959 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
43960 }
43961 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
43962 if (!hasStrongCrypto) {
43963 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
43964 }
43965 var buffer = new Uint8Array(strength / 8);
43966 var data = crypto.getRandomValues(buffer);
43967 return self.toMnemonic(data);
43968 }
43969
43970 self.toMnemonic = function(byteArray) {
43971 if (byteArray.length % 4 > 0) {
43972 throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).'
43973 }
43974
43975 //h = hashlib.sha256(data).hexdigest()
43976 var data = byteArrayToWordArray(byteArray);
43977 var hash = sjcl.hash.sha256.hash(data);
43978 var h = sjcl.codec.hex.fromBits(hash);
43979
43980 // b is a binary string, eg '00111010101100...'
43981 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
43982 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
43983 //
43984 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
43985 // c = bin(int(h, 16))[2:].zfill(256)
43986 // d = c[:len(data) * 8 / 32]
43987 var a = byteArrayToBinaryString(byteArray);
43988 var c = zfill(hexStringToBinaryString(h), 256);
43989 var d = c.substring(0, byteArray.length * 8 / 32);
43990 // b = line1 + line2
43991 var b = a + d;
43992
43993 var result = [];
43994 var blen = b.length / 11;
43995 for (var i=0; i<blen; i++) {
43996 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
43997 result.push(wordlist[idx]);
43998 }
43999 return self.joinWords(result);
44000 }
44001
44002 self.check = function(mnemonic) {
44003 var mnemonic = self.splitWords(mnemonic);
44004 if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
44005 return false
44006 }
44007 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
44008 var idx = [];
44009 for (var i=0; i<mnemonic.length; i++) {
44010 var word = mnemonic[i];
44011 var wordIndex = wordlist.indexOf(word);
44012 if (wordIndex == -1) {
44013 return false;
44014 }
44015 var binaryIndex = zfill(wordIndex.toString(2), 11);
44016 idx.push(binaryIndex);
44017 }
44018 var b = idx.join('');
44019 var l = b.length;
44020 //d = b[:l / 33 * 32]
44021 //h = b[-l / 33:]
44022 var d = b.substring(0, l / 33 * 32);
44023 var h = b.substring(l - l / 33, l);
44024 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
44025 var nd = binaryStringToWordArray(d);
44026 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
44027 var ndHash = sjcl.hash.sha256.hash(nd);
44028 var ndHex = sjcl.codec.hex.fromBits(ndHash);
44029 var ndBstr = zfill(hexStringToBinaryString(ndHex), 256);
44030 var nh = ndBstr.substring(0,l/33);
44031 return h == nh;
44032 }
44033
44034 self.toSeed = function(mnemonic, passphrase) {
44035 passphrase = passphrase || '';
44036 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
44037 var mnemonicNormalized = self.normalizeString(mnemonic);
44038 passphrase = self.normalizeString(passphrase)
44039 passphrase = "mnemonic" + passphrase;
44040 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
44041 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
44042 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
44043 var hashHex = sjcl.codec.hex.fromBits(result);
44044 return hashHex;
44045 }
44046
44047 self.splitWords = function(mnemonic) {
44048 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
44049 }
44050
44051 self.joinWords = function(words) {
44052 // Set space correctly depending on the language
44053 // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
44054 var space = " ";
44055 if (language == "japanese") {
44056 space = "\u3000"; // ideographic space
44057 }
44058 return words.join(space);
44059 }
44060
44061 self.normalizeString = function(str) {
44062 if (typeof str.normalize == "function") {
44063 return str.normalize("NFKD");
44064 }
44065 else {
44066 // TODO decide how to handle this in the future.
44067 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
44068 return str;
44069 }
44070 }
44071
44072 function byteArrayToWordArray(data) {
44073 var a = [];
44074 for (var i=0; i<data.length/4; i++) {
44075 v = 0;
44076 v += data[i*4 + 0] << 8 * 3;
44077 v += data[i*4 + 1] << 8 * 2;
44078 v += data[i*4 + 2] << 8 * 1;
44079 v += data[i*4 + 3] << 8 * 0;
44080 a.push(v);
44081 }
44082 return a;
44083 }
44084
44085 function byteArrayToBinaryString(data) {
44086 var bin = "";
44087 for (var i=0; i<data.length; i++) {
44088 bin += zfill(data[i].toString(2), 8);
44089 }
44090 return bin;
44091 }
44092
44093 function hexStringToBinaryString(hexString) {
44094 binaryString = "";
44095 for (var i=0; i<hexString.length; i++) {
44096 binaryString += zfill(parseInt(hexString[i], 16).toString(2),4);
44097 }
44098 return binaryString;
44099 }
44100
44101 function binaryStringToWordArray(binary) {
44102 var aLen = binary.length / 32;
44103 var a = [];
44104 for (var i=0; i<aLen; i++) {
44105 var valueStr = binary.substring(0,32);
44106 var value = parseInt(valueStr, 2);
44107 a.push(value);
44108 binary = binary.slice(32);
44109 }
44110 return a;
44111 }
44112
44113 // Pad a numeric string on the left with zero digits until the given width
44114 // is reached.
44115 // Note this differs to the python implementation because it does not
44116 // handle numbers starting with a sign.
44117 function zfill(source, length) {
44118 source = source.toString();
44119 while (source.length < length) {
44120 source = '0' + source;
44121 }
44122 return source;
44123 }
44124
44125 init();
44126
44127 }
44128 </script>
44129 <script>/*
44130 JavaScript BigInteger library version 0.9.1
44131 http://silentmatt.com/biginteger/
44132
44133 Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
44134 Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
44135 Licensed under the MIT license.
44136
44137 Support for arbitrary internal representation base was added by
44138 Vitaly Magerya.
44139 */
44140
44141 /*
44142 File: biginteger.js
44143
44144 Exports:
44145
44146 <BigInteger>
44147 */
44148 (function(exports) {
44149 "use strict";
44150 /*
44151 Class: BigInteger
44152 An arbitrarily-large integer.
44153
44154 <BigInteger> objects should be considered immutable. None of the "built-in"
44155 methods modify *this* or their arguments. All properties should be
44156 considered private.
44157
44158 All the methods of <BigInteger> instances can be called "statically". The
44159 static versions are convenient if you don't already have a <BigInteger>
44160 object.
44161
44162 As an example, these calls are equivalent.
44163
44164 > BigInteger(4).multiply(5); // returns BigInteger(20);
44165 > BigInteger.multiply(4, 5); // returns BigInteger(20);
44166
44167 > var a = 42;
44168 > var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
44169 */
44170
44171 var CONSTRUCT = {}; // Unique token to call "private" version of constructor
44172
44173 /*
44174 Constructor: BigInteger()
44175 Convert a value to a <BigInteger>.
44176
44177 Although <BigInteger()> is the constructor for <BigInteger> objects, it is
44178 best not to call it as a constructor. If *n* is a <BigInteger> object, it is
44179 simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
44180 without a radix argument.
44181
44182 > var n0 = BigInteger(); // Same as <BigInteger.ZERO>
44183 > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
44184 > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123
44185 > var n3 = BigInteger(n2); // Return n2, unchanged
44186
44187 The constructor form only takes an array and a sign. *n* must be an
44188 array of numbers in little-endian order, where each digit is between 0
44189 and BigInteger.base. The second parameter sets the sign: -1 for
44190 negative, +1 for positive, or 0 for zero. The array is *not copied and
44191 may be modified*. If the array contains only zeros, the sign parameter
44192 is ignored and is forced to zero.
44193
44194 > new BigInteger([5], -1): create a new BigInteger with value -5
44195
44196 Parameters:
44197
44198 n - Value to convert to a <BigInteger>.
44199
44200 Returns:
44201
44202 A <BigInteger> value.
44203
44204 See Also:
44205
44206 <parse>, <BigInteger>
44207 */
44208 function BigInteger(n, s, token) {
44209 if (token !== CONSTRUCT) {
44210 if (n instanceof BigInteger) {
44211 return n;
44212 }
44213 else if (typeof n === "undefined") {
44214 return ZERO;
44215 }
44216 return BigInteger.parse(n);
44217 }
44218
44219 n = n || []; // Provide the nullary constructor for subclasses.
44220 while (n.length && !n[n.length - 1]) {
44221 --n.length;
44222 }
44223 this._d = n;
44224 this._s = n.length ? (s || 1) : 0;
44225 }
44226
44227 BigInteger._construct = function(n, s) {
44228 return new BigInteger(n, s, CONSTRUCT);
44229 };
44230
44231 // Base-10 speedup hacks in parse, toString, exp10 and log functions
44232 // require base to be a power of 10. 10^7 is the largest such power
44233 // that won't cause a precision loss when digits are multiplied.
44234 var BigInteger_base = 10000000;
44235 var BigInteger_base_log10 = 7;
44236
44237 BigInteger.base = BigInteger_base;
44238 BigInteger.base_log10 = BigInteger_base_log10;
44239
44240 var ZERO = new BigInteger([], 0, CONSTRUCT);
44241 // Constant: ZERO
44242 // <BigInteger> 0.
44243 BigInteger.ZERO = ZERO;
44244
44245 var ONE = new BigInteger([1], 1, CONSTRUCT);
44246 // Constant: ONE
44247 // <BigInteger> 1.
44248 BigInteger.ONE = ONE;
44249
44250 var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
44251 // Constant: M_ONE
44252 // <BigInteger> -1.
44253 BigInteger.M_ONE = M_ONE;
44254
44255 // Constant: _0
44256 // Shortcut for <ZERO>.
44257 BigInteger._0 = ZERO;
44258
44259 // Constant: _1
44260 // Shortcut for <ONE>.
44261 BigInteger._1 = ONE;
44262
44263 /*
44264 Constant: small
44265 Array of <BigIntegers> from 0 to 36.
44266
44267 These are used internally for parsing, but useful when you need a "small"
44268 <BigInteger>.
44269
44270 See Also:
44271
44272 <ZERO>, <ONE>, <_0>, <_1>
44273 */
44274 BigInteger.small = [
44275 ZERO,
44276 ONE,
44277 /* Assuming BigInteger_base > 36 */
44278 new BigInteger( [2], 1, CONSTRUCT),
44279 new BigInteger( [3], 1, CONSTRUCT),
44280 new BigInteger( [4], 1, CONSTRUCT),
44281 new BigInteger( [5], 1, CONSTRUCT),
44282 new BigInteger( [6], 1, CONSTRUCT),
44283 new BigInteger( [7], 1, CONSTRUCT),
44284 new BigInteger( [8], 1, CONSTRUCT),
44285 new BigInteger( [9], 1, CONSTRUCT),
44286 new BigInteger([10], 1, CONSTRUCT),
44287 new BigInteger([11], 1, CONSTRUCT),
44288 new BigInteger([12], 1, CONSTRUCT),
44289 new BigInteger([13], 1, CONSTRUCT),
44290 new BigInteger([14], 1, CONSTRUCT),
44291 new BigInteger([15], 1, CONSTRUCT),
44292 new BigInteger([16], 1, CONSTRUCT),
44293 new BigInteger([17], 1, CONSTRUCT),
44294 new BigInteger([18], 1, CONSTRUCT),
44295 new BigInteger([19], 1, CONSTRUCT),
44296 new BigInteger([20], 1, CONSTRUCT),
44297 new BigInteger([21], 1, CONSTRUCT),
44298 new BigInteger([22], 1, CONSTRUCT),
44299 new BigInteger([23], 1, CONSTRUCT),
44300 new BigInteger([24], 1, CONSTRUCT),
44301 new BigInteger([25], 1, CONSTRUCT),
44302 new BigInteger([26], 1, CONSTRUCT),
44303 new BigInteger([27], 1, CONSTRUCT),
44304 new BigInteger([28], 1, CONSTRUCT),
44305 new BigInteger([29], 1, CONSTRUCT),
44306 new BigInteger([30], 1, CONSTRUCT),
44307 new BigInteger([31], 1, CONSTRUCT),
44308 new BigInteger([32], 1, CONSTRUCT),
44309 new BigInteger([33], 1, CONSTRUCT),
44310 new BigInteger([34], 1, CONSTRUCT),
44311 new BigInteger([35], 1, CONSTRUCT),
44312 new BigInteger([36], 1, CONSTRUCT)
44313 ];
44314
44315 // Used for parsing/radix conversion
44316 BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
44317
44318 /*
44319 Method: toString
44320 Convert a <BigInteger> to a string.
44321
44322 When *base* is greater than 10, letters are upper case.
44323
44324 Parameters:
44325
44326 base - Optional base to represent the number in (default is base 10).
44327 Must be between 2 and 36 inclusive, or an Error will be thrown.
44328
44329 Returns:
44330
44331 The string representation of the <BigInteger>.
44332 */
44333 BigInteger.prototype.toString = function(base) {
44334 base = +base || 10;
44335 if (base < 2 || base > 36) {
44336 throw new Error("illegal radix " + base + ".");
44337 }
44338 if (this._s === 0) {
44339 return "0";
44340 }
44341 if (base === 10) {
44342 var str = this._s < 0 ? "-" : "";
44343 str += this._d[this._d.length - 1].toString();
44344 for (var i = this._d.length - 2; i >= 0; i--) {
44345 var group = this._d[i].toString();
44346 while (group.length < BigInteger_base_log10) group = '0' + group;
44347 str += group;
44348 }
44349 return str;
44350 }
44351 else {
44352 var numerals = BigInteger.digits;
44353 base = BigInteger.small[base];
44354 var sign = this._s;
44355
44356 var n = this.abs();
44357 var digits = [];
44358 var digit;
44359
44360 while (n._s !== 0) {
44361 var divmod = n.divRem(base);
44362 n = divmod[0];
44363 digit = divmod[1];
44364 // TODO: This could be changed to unshift instead of reversing at the end.
44365 // Benchmark both to compare speeds.
44366 digits.push(numerals[digit.valueOf()]);
44367 }
44368 return (sign < 0 ? "-" : "") + digits.reverse().join("");
44369 }
44370 };
44371
44372 // Verify strings for parsing
44373 BigInteger.radixRegex = [
44374 /^$/,
44375 /^$/,
44376 /^[01]*$/,
44377 /^[012]*$/,
44378 /^[0-3]*$/,
44379 /^[0-4]*$/,
44380 /^[0-5]*$/,
44381 /^[0-6]*$/,
44382 /^[0-7]*$/,
44383 /^[0-8]*$/,
44384 /^[0-9]*$/,
44385 /^[0-9aA]*$/,
44386 /^[0-9abAB]*$/,
44387 /^[0-9abcABC]*$/,
44388 /^[0-9a-dA-D]*$/,
44389 /^[0-9a-eA-E]*$/,
44390 /^[0-9a-fA-F]*$/,
44391 /^[0-9a-gA-G]*$/,
44392 /^[0-9a-hA-H]*$/,
44393 /^[0-9a-iA-I]*$/,
44394 /^[0-9a-jA-J]*$/,
44395 /^[0-9a-kA-K]*$/,
44396 /^[0-9a-lA-L]*$/,
44397 /^[0-9a-mA-M]*$/,
44398 /^[0-9a-nA-N]*$/,
44399 /^[0-9a-oA-O]*$/,
44400 /^[0-9a-pA-P]*$/,
44401 /^[0-9a-qA-Q]*$/,
44402 /^[0-9a-rA-R]*$/,
44403 /^[0-9a-sA-S]*$/,
44404 /^[0-9a-tA-T]*$/,
44405 /^[0-9a-uA-U]*$/,
44406 /^[0-9a-vA-V]*$/,
44407 /^[0-9a-wA-W]*$/,
44408 /^[0-9a-xA-X]*$/,
44409 /^[0-9a-yA-Y]*$/,
44410 /^[0-9a-zA-Z]*$/
44411 ];
44412
44413 /*
44414 Function: parse
44415 Parse a string into a <BigInteger>.
44416
44417 *base* is optional but, if provided, must be from 2 to 36 inclusive. If
44418 *base* is not provided, it will be guessed based on the leading characters
44419 of *s* as follows:
44420
44421 - "0x" or "0X": *base* = 16
44422 - "0c" or "0C": *base* = 8
44423 - "0b" or "0B": *base* = 2
44424 - else: *base* = 10
44425
44426 If no base is provided, or *base* is 10, the number can be in exponential
44427 form. For example, these are all valid:
44428
44429 > BigInteger.parse("1e9"); // Same as "1000000000"
44430 > BigInteger.parse("1.234*10^3"); // Same as 1234
44431 > BigInteger.parse("56789 * 10 ** -2"); // Same as 567
44432
44433 If any characters fall outside the range defined by the radix, an exception
44434 will be thrown.
44435
44436 Parameters:
44437
44438 s - The string to parse.
44439 base - Optional radix (default is to guess based on *s*).
44440
44441 Returns:
44442
44443 a <BigInteger> instance.
44444 */
44445 BigInteger.parse = function(s, base) {
44446 // Expands a number in exponential form to decimal form.
44447 // expandExponential("-13.441*10^5") === "1344100";
44448 // expandExponential("1.12300e-1") === "0.112300";
44449 // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
44450 function expandExponential(str) {
44451 str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
44452
44453 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
44454 c = +c;
44455 var l = c < 0;
44456 var i = n.length + c;
44457 x = (l ? n : f).length;
44458 c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
44459 var z = (new Array(c + 1)).join("0");
44460 var r = n + f;
44461 return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
44462 });
44463 }
44464
44465 s = s.toString();
44466 if (typeof base === "undefined" || +base === 10) {
44467 s = expandExponential(s);
44468 }
44469
44470 var prefixRE;
44471 if (typeof base === "undefined") {
44472 prefixRE = '0[xcb]';
44473 }
44474 else if (base == 16) {
44475 prefixRE = '0x';
44476 }
44477 else if (base == 8) {
44478 prefixRE = '0c';
44479 }
44480 else if (base == 2) {
44481 prefixRE = '0b';
44482 }
44483 else {
44484 prefixRE = '';
44485 }
44486 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
44487 if (parts) {
44488 var sign = parts[1] || "+";
44489 var baseSection = parts[2] || "";
44490 var digits = parts[3] || "";
44491
44492 if (typeof base === "undefined") {
44493 // Guess base
44494 if (baseSection === "0x" || baseSection === "0X") { // Hex
44495 base = 16;
44496 }
44497 else if (baseSection === "0c" || baseSection === "0C") { // Octal
44498 base = 8;
44499 }
44500 else if (baseSection === "0b" || baseSection === "0B") { // Binary
44501 base = 2;
44502 }
44503 else {
44504 base = 10;
44505 }
44506 }
44507 else if (base < 2 || base > 36) {
44508 throw new Error("Illegal radix " + base + ".");
44509 }
44510
44511 base = +base;
44512
44513 // Check for digits outside the range
44514 if (!(BigInteger.radixRegex[base].test(digits))) {
44515 throw new Error("Bad digit for radix " + base);
44516 }
44517
44518 // Strip leading zeros, and convert to array
44519 digits = digits.replace(/^0+/, "").split("");
44520 if (digits.length === 0) {
44521 return ZERO;
44522 }
44523
44524 // Get the sign (we know it's not zero)
44525 sign = (sign === "-") ? -1 : 1;
44526
44527 // Optimize 10
44528 if (base == 10) {
44529 var d = [];
44530 while (digits.length >= BigInteger_base_log10) {
44531 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
44532 }
44533 d.push(parseInt(digits.join(''), 10));
44534 return new BigInteger(d, sign, CONSTRUCT);
44535 }
44536
44537 // Do the conversion
44538 var d = ZERO;
44539 base = BigInteger.small[base];
44540 var small = BigInteger.small;
44541 for (var i = 0; i < digits.length; i++) {
44542 d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
44543 }
44544 return new BigInteger(d._d, sign, CONSTRUCT);
44545 }
44546 else {
44547 throw new Error("Invalid BigInteger format: " + s);
44548 }
44549 };
44550
44551 /*
44552 Function: add
44553 Add two <BigIntegers>.
44554
44555 Parameters:
44556
44557 n - The number to add to *this*. Will be converted to a <BigInteger>.
44558
44559 Returns:
44560
44561 The numbers added together.
44562
44563 See Also:
44564
44565 <subtract>, <multiply>, <quotient>, <next>
44566 */
44567 BigInteger.prototype.add = function(n) {
44568 if (this._s === 0) {
44569 return BigInteger(n);
44570 }
44571
44572 n = BigInteger(n);
44573 if (n._s === 0) {
44574 return this;
44575 }
44576 if (this._s !== n._s) {
44577 n = n.negate();
44578 return this.subtract(n);
44579 }
44580
44581 var a = this._d;
44582 var b = n._d;
44583 var al = a.length;
44584 var bl = b.length;
44585 var sum = new Array(Math.max(al, bl) + 1);
44586 var size = Math.min(al, bl);
44587 var carry = 0;
44588 var digit;
44589
44590 for (var i = 0; i < size; i++) {
44591 digit = a[i] + b[i] + carry;
44592 sum[i] = digit % BigInteger_base;
44593 carry = (digit / BigInteger_base) | 0;
44594 }
44595 if (bl > al) {
44596 a = b;
44597 al = bl;
44598 }
44599 for (i = size; carry && i < al; i++) {
44600 digit = a[i] + carry;
44601 sum[i] = digit % BigInteger_base;
44602 carry = (digit / BigInteger_base) | 0;
44603 }
44604 if (carry) {
44605 sum[i] = carry;
44606 }
44607
44608 for ( ; i < al; i++) {
44609 sum[i] = a[i];
44610 }
44611
44612 return new BigInteger(sum, this._s, CONSTRUCT);
44613 };
44614
44615 /*
44616 Function: negate
44617 Get the additive inverse of a <BigInteger>.
44618
44619 Returns:
44620
44621 A <BigInteger> with the same magnatude, but with the opposite sign.
44622
44623 See Also:
44624
44625 <abs>
44626 */
44627 BigInteger.prototype.negate = function() {
44628 return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
44629 };
44630
44631 /*
44632 Function: abs
44633 Get the absolute value of a <BigInteger>.
44634
44635 Returns:
44636
44637 A <BigInteger> with the same magnatude, but always positive (or zero).
44638
44639 See Also:
44640
44641 <negate>
44642 */
44643 BigInteger.prototype.abs = function() {
44644 return (this._s < 0) ? this.negate() : this;
44645 };
44646
44647 /*
44648 Function: subtract
44649 Subtract two <BigIntegers>.
44650
44651 Parameters:
44652
44653 n - The number to subtract from *this*. Will be converted to a <BigInteger>.
44654
44655 Returns:
44656
44657 The *n* subtracted from *this*.
44658
44659 See Also:
44660
44661 <add>, <multiply>, <quotient>, <prev>
44662 */
44663 BigInteger.prototype.subtract = function(n) {
44664 if (this._s === 0) {
44665 return BigInteger(n).negate();
44666 }
44667
44668 n = BigInteger(n);
44669 if (n._s === 0) {
44670 return this;
44671 }
44672 if (this._s !== n._s) {
44673 n = n.negate();
44674 return this.add(n);
44675 }
44676
44677 var m = this;
44678 // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
44679 if (this._s < 0) {
44680 m = new BigInteger(n._d, 1, CONSTRUCT);
44681 n = new BigInteger(this._d, 1, CONSTRUCT);
44682 }
44683
44684 // Both are positive => a - b
44685 var sign = m.compareAbs(n);
44686 if (sign === 0) {
44687 return ZERO;
44688 }
44689 else if (sign < 0) {
44690 // swap m and n
44691 var t = n;
44692 n = m;
44693 m = t;
44694 }
44695
44696 // a > b
44697 var a = m._d;
44698 var b = n._d;
44699 var al = a.length;
44700 var bl = b.length;
44701 var diff = new Array(al); // al >= bl since a > b
44702 var borrow = 0;
44703 var i;
44704 var digit;
44705
44706 for (i = 0; i < bl; i++) {
44707 digit = a[i] - borrow - b[i];
44708 if (digit < 0) {
44709 digit += BigInteger_base;
44710 borrow = 1;
44711 }
44712 else {
44713 borrow = 0;
44714 }
44715 diff[i] = digit;
44716 }
44717 for (i = bl; i < al; i++) {
44718 digit = a[i] - borrow;
44719 if (digit < 0) {
44720 digit += BigInteger_base;
44721 }
44722 else {
44723 diff[i++] = digit;
44724 break;
44725 }
44726 diff[i] = digit;
44727 }
44728 for ( ; i < al; i++) {
44729 diff[i] = a[i];
44730 }
44731
44732 return new BigInteger(diff, sign, CONSTRUCT);
44733 };
44734
44735 (function() {
44736 function addOne(n, sign) {
44737 var a = n._d;
44738 var sum = a.slice();
44739 var carry = true;
44740 var i = 0;
44741
44742 while (true) {
44743 var digit = (a[i] || 0) + 1;
44744 sum[i] = digit % BigInteger_base;
44745 if (digit <= BigInteger_base - 1) {
44746 break;
44747 }
44748 ++i;
44749 }
44750
44751 return new BigInteger(sum, sign, CONSTRUCT);
44752 }
44753
44754 function subtractOne(n, sign) {
44755 var a = n._d;
44756 var sum = a.slice();
44757 var borrow = true;
44758 var i = 0;
44759
44760 while (true) {
44761 var digit = (a[i] || 0) - 1;
44762 if (digit < 0) {
44763 sum[i] = digit + BigInteger_base;
44764 }
44765 else {
44766 sum[i] = digit;
44767 break;
44768 }
44769 ++i;
44770 }
44771
44772 return new BigInteger(sum, sign, CONSTRUCT);
44773 }
44774
44775 /*
44776 Function: next
44777 Get the next <BigInteger> (add one).
44778
44779 Returns:
44780
44781 *this* + 1.
44782
44783 See Also:
44784
44785 <add>, <prev>
44786 */
44787 BigInteger.prototype.next = function() {
44788 switch (this._s) {
44789 case 0:
44790 return ONE;
44791 case -1:
44792 return subtractOne(this, -1);
44793 // case 1:
44794 default:
44795 return addOne(this, 1);
44796 }
44797 };
44798
44799 /*
44800 Function: prev
44801 Get the previous <BigInteger> (subtract one).
44802
44803 Returns:
44804
44805 *this* - 1.
44806
44807 See Also:
44808
44809 <next>, <subtract>
44810 */
44811 BigInteger.prototype.prev = function() {
44812 switch (this._s) {
44813 case 0:
44814 return M_ONE;
44815 case -1:
44816 return addOne(this, -1);
44817 // case 1:
44818 default:
44819 return subtractOne(this, 1);
44820 }
44821 };
44822 })();
44823
44824 /*
44825 Function: compareAbs
44826 Compare the absolute value of two <BigIntegers>.
44827
44828 Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
44829
44830 Parameters:
44831
44832 n - The number to compare to *this*. Will be converted to a <BigInteger>.
44833
44834 Returns:
44835
44836 -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
44837
44838 See Also:
44839
44840 <compare>, <abs>
44841 */
44842 BigInteger.prototype.compareAbs = function(n) {
44843 if (this === n) {
44844 return 0;
44845 }
44846
44847 if (!(n instanceof BigInteger)) {
44848 if (!isFinite(n)) {
44849 return(isNaN(n) ? n : -1);
44850 }
44851 n = BigInteger(n);
44852 }
44853
44854 if (this._s === 0) {
44855 return (n._s !== 0) ? -1 : 0;
44856 }
44857 if (n._s === 0) {
44858 return 1;
44859 }
44860
44861 var l = this._d.length;
44862 var nl = n._d.length;
44863 if (l < nl) {
44864 return -1;
44865 }
44866 else if (l > nl) {
44867 return 1;
44868 }
44869
44870 var a = this._d;
44871 var b = n._d;
44872 for (var i = l-1; i >= 0; i--) {
44873 if (a[i] !== b[i]) {
44874 return a[i] < b[i] ? -1 : 1;
44875 }
44876 }
44877
44878 return 0;
44879 };
44880
44881 /*
44882 Function: compare
44883 Compare two <BigIntegers>.
44884
44885 Parameters:
44886
44887 n - The number to compare to *this*. Will be converted to a <BigInteger>.
44888
44889 Returns:
44890
44891 -1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
44892
44893 See Also:
44894
44895 <compareAbs>, <isPositive>, <isNegative>, <isUnit>
44896 */
44897 BigInteger.prototype.compare = function(n) {
44898 if (this === n) {
44899 return 0;
44900 }
44901
44902 n = BigInteger(n);
44903
44904 if (this._s === 0) {
44905 return -n._s;
44906 }
44907
44908 if (this._s === n._s) { // both positive or both negative
44909 var cmp = this.compareAbs(n);
44910 return cmp * this._s;
44911 }
44912 else {
44913 return this._s;
44914 }
44915 };
44916
44917 /*
44918 Function: isUnit
44919 Return true iff *this* is either 1 or -1.
44920
44921 Returns:
44922
44923 true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
44924
44925 See Also:
44926
44927 <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
44928 <BigInteger.ONE>, <BigInteger.M_ONE>
44929 */
44930 BigInteger.prototype.isUnit = function() {
44931 return this === ONE ||
44932 this === M_ONE ||
44933 (this._d.length === 1 && this._d[0] === 1);
44934 };
44935
44936 /*
44937 Function: multiply
44938 Multiply two <BigIntegers>.
44939
44940 Parameters:
44941
44942 n - The number to multiply *this* by. Will be converted to a
44943 <BigInteger>.
44944
44945 Returns:
44946
44947 The numbers multiplied together.
44948
44949 See Also:
44950
44951 <add>, <subtract>, <quotient>, <square>
44952 */
44953 BigInteger.prototype.multiply = function(n) {
44954 // TODO: Consider adding Karatsuba multiplication for large numbers
44955 if (this._s === 0) {
44956 return ZERO;
44957 }
44958
44959 n = BigInteger(n);
44960 if (n._s === 0) {
44961 return ZERO;
44962 }
44963 if (this.isUnit()) {
44964 if (this._s < 0) {
44965 return n.negate();
44966 }
44967 return n;
44968 }
44969 if (n.isUnit()) {
44970 if (n._s < 0) {
44971 return this.negate();
44972 }
44973 return this;
44974 }
44975 if (this === n) {
44976 return this.square();
44977 }
44978
44979 var r = (this._d.length >= n._d.length);
44980 var a = (r ? this : n)._d; // a will be longer than b
44981 var b = (r ? n : this)._d;
44982 var al = a.length;
44983 var bl = b.length;
44984
44985 var pl = al + bl;
44986 var partial = new Array(pl);
44987 var i;
44988 for (i = 0; i < pl; i++) {
44989 partial[i] = 0;
44990 }
44991
44992 for (i = 0; i < bl; i++) {
44993 var carry = 0;
44994 var bi = b[i];
44995 var jlimit = al + i;
44996 var digit;
44997 for (var j = i; j < jlimit; j++) {
44998 digit = partial[j] + bi * a[j - i] + carry;
44999 carry = (digit / BigInteger_base) | 0;
45000 partial[j] = (digit % BigInteger_base) | 0;
45001 }
45002 if (carry) {
45003 digit = partial[j] + carry;
45004 carry = (digit / BigInteger_base) | 0;
45005 partial[j] = digit % BigInteger_base;
45006 }
45007 }
45008 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
45009 };
45010
45011 // Multiply a BigInteger by a single-digit native number
45012 // Assumes that this and n are >= 0
45013 // This is not really intended to be used outside the library itself
45014 BigInteger.prototype.multiplySingleDigit = function(n) {
45015 if (n === 0 || this._s === 0) {
45016 return ZERO;
45017 }
45018 if (n === 1) {
45019 return this;
45020 }
45021
45022 var digit;
45023 if (this._d.length === 1) {
45024 digit = this._d[0] * n;
45025 if (digit >= BigInteger_base) {
45026 return new BigInteger([(digit % BigInteger_base)|0,
45027 (digit / BigInteger_base)|0], 1, CONSTRUCT);
45028 }
45029 return new BigInteger([digit], 1, CONSTRUCT);
45030 }
45031
45032 if (n === 2) {
45033 return this.add(this);
45034 }
45035 if (this.isUnit()) {
45036 return new BigInteger([n], 1, CONSTRUCT);
45037 }
45038
45039 var a = this._d;
45040 var al = a.length;
45041
45042 var pl = al + 1;
45043 var partial = new Array(pl);
45044 for (var i = 0; i < pl; i++) {
45045 partial[i] = 0;
45046 }
45047
45048 var carry = 0;
45049 for (var j = 0; j < al; j++) {
45050 digit = n * a[j] + carry;
45051 carry = (digit / BigInteger_base) | 0;
45052 partial[j] = (digit % BigInteger_base) | 0;
45053 }
45054 if (carry) {
45055 partial[j] = carry;
45056 }
45057
45058 return new BigInteger(partial, 1, CONSTRUCT);
45059 };
45060
45061 /*
45062 Function: square
45063 Multiply a <BigInteger> by itself.
45064
45065 This is slightly faster than regular multiplication, since it removes the
45066 duplicated multiplcations.
45067
45068 Returns:
45069
45070 > this.multiply(this)
45071
45072 See Also:
45073 <multiply>
45074 */
45075 BigInteger.prototype.square = function() {
45076 // Normally, squaring a 10-digit number would take 100 multiplications.
45077 // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
45078 // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
45079 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
45080
45081 if (this._s === 0) {
45082 return ZERO;
45083 }
45084 if (this.isUnit()) {
45085 return ONE;
45086 }
45087
45088 var digits = this._d;
45089 var length = digits.length;
45090 var imult1 = new Array(length + length + 1);
45091 var product, carry, k;
45092 var i;
45093
45094 // Calculate diagonal
45095 for (i = 0; i < length; i++) {
45096 k = i * 2;
45097 product = digits[i] * digits[i];
45098 carry = (product / BigInteger_base) | 0;
45099 imult1[k] = product % BigInteger_base;
45100 imult1[k + 1] = carry;
45101 }
45102
45103 // Calculate repeating part
45104 for (i = 0; i < length; i++) {
45105 carry = 0;
45106 k = i * 2 + 1;
45107 for (var j = i + 1; j < length; j++, k++) {
45108 product = digits[j] * digits[i] * 2 + imult1[k] + carry;
45109 carry = (product / BigInteger_base) | 0;
45110 imult1[k] = product % BigInteger_base;
45111 }
45112 k = length + i;
45113 var digit = carry + imult1[k];
45114 carry = (digit / BigInteger_base) | 0;
45115 imult1[k] = digit % BigInteger_base;
45116 imult1[k + 1] += carry;
45117 }
45118
45119 return new BigInteger(imult1, 1, CONSTRUCT);
45120 };
45121
45122 /*
45123 Function: quotient
45124 Divide two <BigIntegers> and truncate towards zero.
45125
45126 <quotient> throws an exception if *n* is zero.
45127
45128 Parameters:
45129
45130 n - The number to divide *this* by. Will be converted to a <BigInteger>.
45131
45132 Returns:
45133
45134 The *this* / *n*, truncated to an integer.
45135
45136 See Also:
45137
45138 <add>, <subtract>, <multiply>, <divRem>, <remainder>
45139 */
45140 BigInteger.prototype.quotient = function(n) {
45141 return this.divRem(n)[0];
45142 };
45143
45144 /*
45145 Function: divide
45146 Deprecated synonym for <quotient>.
45147 */
45148 BigInteger.prototype.divide = BigInteger.prototype.quotient;
45149
45150 /*
45151 Function: remainder
45152 Calculate the remainder of two <BigIntegers>.
45153
45154 <remainder> throws an exception if *n* is zero.
45155
45156 Parameters:
45157
45158 n - The remainder after *this* is divided *this* by *n*. Will be
45159 converted to a <BigInteger>.
45160
45161 Returns:
45162
45163 *this* % *n*.
45164
45165 See Also:
45166
45167 <divRem>, <quotient>
45168 */
45169 BigInteger.prototype.remainder = function(n) {
45170 return this.divRem(n)[1];
45171 };
45172
45173 /*
45174 Function: divRem
45175 Calculate the integer quotient and remainder of two <BigIntegers>.
45176
45177 <divRem> throws an exception if *n* is zero.
45178
45179 Parameters:
45180
45181 n - The number to divide *this* by. Will be converted to a <BigInteger>.
45182
45183 Returns:
45184
45185 A two-element array containing the quotient and the remainder.
45186
45187 > a.divRem(b)
45188
45189 is exactly equivalent to
45190
45191 > [a.quotient(b), a.remainder(b)]
45192
45193 except it is faster, because they are calculated at the same time.
45194
45195 See Also:
45196
45197 <quotient>, <remainder>
45198 */
45199 BigInteger.prototype.divRem = function(n) {
45200 n = BigInteger(n);
45201 if (n._s === 0) {
45202 throw new Error("Divide by zero");
45203 }
45204 if (this._s === 0) {
45205 return [ZERO, ZERO];
45206 }
45207 if (n._d.length === 1) {
45208 return this.divRemSmall(n._s * n._d[0]);
45209 }
45210
45211 // Test for easy cases -- |n1| <= |n2|
45212 switch (this.compareAbs(n)) {
45213 case 0: // n1 == n2
45214 return [this._s === n._s ? ONE : M_ONE, ZERO];
45215 case -1: // |n1| < |n2|
45216 return [ZERO, this];
45217 }
45218
45219 var sign = this._s * n._s;
45220 var a = n.abs();
45221 var b_digits = this._d;
45222 var b_index = b_digits.length;
45223 var digits = n._d.length;
45224 var quot = [];
45225 var guess;
45226
45227 var part = new BigInteger([], 0, CONSTRUCT);
45228
45229 while (b_index) {
45230 part._d.unshift(b_digits[--b_index]);
45231 part = new BigInteger(part._d, 1, CONSTRUCT);
45232
45233 if (part.compareAbs(n) < 0) {
45234 quot.push(0);
45235 continue;
45236 }
45237 if (part._s === 0) {
45238 guess = 0;
45239 }
45240 else {
45241 var xlen = part._d.length, ylen = a._d.length;
45242 var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
45243 var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
45244 if (part._d.length > a._d.length) {
45245 // The length of part._d can either match a._d length,
45246 // or exceed it by one.
45247 highx = (highx+1)*BigInteger_base;
45248 }
45249 guess = Math.ceil(highx/highy);
45250 }
45251 do {
45252 var check = a.multiplySingleDigit(guess);
45253 if (check.compareAbs(part) <= 0) {
45254 break;
45255 }
45256 guess--;
45257 } while (guess);
45258
45259 quot.push(guess);
45260 if (!guess) {
45261 continue;
45262 }
45263 var diff = part.subtract(check);
45264 part._d = diff._d.slice();
45265 }
45266
45267 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
45268 new BigInteger(part._d, this._s, CONSTRUCT)];
45269 };
45270
45271 // Throws an exception if n is outside of (-BigInteger.base, -1] or
45272 // [1, BigInteger.base). It's not necessary to call this, since the
45273 // other division functions will call it if they are able to.
45274 BigInteger.prototype.divRemSmall = function(n) {
45275 var r;
45276 n = +n;
45277 if (n === 0) {
45278 throw new Error("Divide by zero");
45279 }
45280
45281 var n_s = n < 0 ? -1 : 1;
45282 var sign = this._s * n_s;
45283 n = Math.abs(n);
45284
45285 if (n < 1 || n >= BigInteger_base) {
45286 throw new Error("Argument out of range");
45287 }
45288
45289 if (this._s === 0) {
45290 return [ZERO, ZERO];
45291 }
45292
45293 if (n === 1 || n === -1) {
45294 return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
45295 }
45296
45297 // 2 <= n < BigInteger_base
45298
45299 // divide a single digit by a single digit
45300 if (this._d.length === 1) {
45301 var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
45302 r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
45303 if (sign < 0) {
45304 q = q.negate();
45305 }
45306 if (this._s < 0) {
45307 r = r.negate();
45308 }
45309 return [q, r];
45310 }
45311
45312 var digits = this._d.slice();
45313 var quot = new Array(digits.length);
45314 var part = 0;
45315 var diff = 0;
45316 var i = 0;
45317 var guess;
45318
45319 while (digits.length) {
45320 part = part * BigInteger_base + digits[digits.length - 1];
45321 if (part < n) {
45322 quot[i++] = 0;
45323 digits.pop();
45324 diff = BigInteger_base * diff + part;
45325 continue;
45326 }
45327 if (part === 0) {
45328 guess = 0;
45329 }
45330 else {
45331 guess = (part / n) | 0;
45332 }
45333
45334 var check = n * guess;
45335 diff = part - check;
45336 quot[i++] = guess;
45337 if (!guess) {
45338 digits.pop();
45339 continue;
45340 }
45341
45342 digits.pop();
45343 part = diff;
45344 }
45345
45346 r = new BigInteger([diff], 1, CONSTRUCT);
45347 if (this._s < 0) {
45348 r = r.negate();
45349 }
45350 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
45351 };
45352
45353 /*
45354 Function: isEven
45355 Return true iff *this* is divisible by two.
45356
45357 Note that <BigInteger.ZERO> is even.
45358
45359 Returns:
45360
45361 true if *this* is even, false otherwise.
45362
45363 See Also:
45364
45365 <isOdd>
45366 */
45367 BigInteger.prototype.isEven = function() {
45368 var digits = this._d;
45369 return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
45370 };
45371
45372 /*
45373 Function: isOdd
45374 Return true iff *this* is not divisible by two.
45375
45376 Returns:
45377
45378 true if *this* is odd, false otherwise.
45379
45380 See Also:
45381
45382 <isEven>
45383 */
45384 BigInteger.prototype.isOdd = function() {
45385 return !this.isEven();
45386 };
45387
45388 /*
45389 Function: sign
45390 Get the sign of a <BigInteger>.
45391
45392 Returns:
45393
45394 * -1 if *this* < 0
45395 * 0 if *this* == 0
45396 * +1 if *this* > 0
45397
45398 See Also:
45399
45400 <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
45401 */
45402 BigInteger.prototype.sign = function() {
45403 return this._s;
45404 };
45405
45406 /*
45407 Function: isPositive
45408 Return true iff *this* > 0.
45409
45410 Returns:
45411
45412 true if *this*.compare(<BigInteger.ZERO>) == 1.
45413
45414 See Also:
45415
45416 <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
45417 */
45418 BigInteger.prototype.isPositive = function() {
45419 return this._s > 0;
45420 };
45421
45422 /*
45423 Function: isNegative
45424 Return true iff *this* < 0.
45425
45426 Returns:
45427
45428 true if *this*.compare(<BigInteger.ZERO>) == -1.
45429
45430 See Also:
45431
45432 <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
45433 */
45434 BigInteger.prototype.isNegative = function() {
45435 return this._s < 0;
45436 };
45437
45438 /*
45439 Function: isZero
45440 Return true iff *this* == 0.
45441
45442 Returns:
45443
45444 true if *this*.compare(<BigInteger.ZERO>) == 0.
45445
45446 See Also:
45447
45448 <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
45449 */
45450 BigInteger.prototype.isZero = function() {
45451 return this._s === 0;
45452 };
45453
45454 /*
45455 Function: exp10
45456 Multiply a <BigInteger> by a power of 10.
45457
45458 This is equivalent to, but faster than
45459
45460 > if (n >= 0) {
45461 > return this.multiply(BigInteger("1e" + n));
45462 > }
45463 > else { // n <= 0
45464 > return this.quotient(BigInteger("1e" + -n));
45465 > }
45466
45467 Parameters:
45468
45469 n - The power of 10 to multiply *this* by. *n* is converted to a
45470 javascipt number and must be no greater than <BigInteger.MAX_EXP>
45471 (0x7FFFFFFF), or an exception will be thrown.
45472
45473 Returns:
45474
45475 *this* * (10 ** *n*), truncated to an integer if necessary.
45476
45477 See Also:
45478
45479 <pow>, <multiply>
45480 */
45481 BigInteger.prototype.exp10 = function(n) {
45482 n = +n;
45483 if (n === 0) {
45484 return this;
45485 }
45486 if (Math.abs(n) > Number(MAX_EXP)) {
45487 throw new Error("exponent too large in BigInteger.exp10");
45488 }
45489 // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
45490 if (this._s === 0) {
45491 return ZERO;
45492 }
45493 if (n > 0) {
45494 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
45495
45496 for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
45497 k._d.unshift(0);
45498 }
45499 if (n == 0)
45500 return k;
45501 k._s = 1;
45502 k = k.multiplySingleDigit(Math.pow(10, n));
45503 return (this._s < 0 ? k.negate() : k);
45504 } else if (-n >= this._d.length*BigInteger_base_log10) {
45505 return ZERO;
45506 } else {
45507 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
45508
45509 for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
45510 k._d.shift();
45511 }
45512 return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
45513 }
45514 };
45515
45516 /*
45517 Function: pow
45518 Raise a <BigInteger> to a power.
45519
45520 In this implementation, 0**0 is 1.
45521
45522 Parameters:
45523
45524 n - The exponent to raise *this* by. *n* must be no greater than
45525 <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
45526
45527 Returns:
45528
45529 *this* raised to the *nth* power.
45530
45531 See Also:
45532
45533 <modPow>
45534 */
45535 BigInteger.prototype.pow = function(n) {
45536 if (this.isUnit()) {
45537 if (this._s > 0) {
45538 return this;
45539 }
45540 else {
45541 return BigInteger(n).isOdd() ? this : this.negate();
45542 }
45543 }
45544
45545 n = BigInteger(n);
45546 if (n._s === 0) {
45547 return ONE;
45548 }
45549 else if (n._s < 0) {
45550 if (this._s === 0) {
45551 throw new Error("Divide by zero");
45552 }
45553 else {
45554 return ZERO;
45555 }
45556 }
45557 if (this._s === 0) {
45558 return ZERO;
45559 }
45560 if (n.isUnit()) {
45561 return this;
45562 }
45563
45564 if (n.compareAbs(MAX_EXP) > 0) {
45565 throw new Error("exponent too large in BigInteger.pow");
45566 }
45567 var x = this;
45568 var aux = ONE;
45569 var two = BigInteger.small[2];
45570
45571 while (n.isPositive()) {
45572 if (n.isOdd()) {
45573 aux = aux.multiply(x);
45574 if (n.isUnit()) {
45575 return aux;
45576 }
45577 }
45578 x = x.square();
45579 n = n.quotient(two);
45580 }
45581
45582 return aux;
45583 };
45584
45585 /*
45586 Function: modPow
45587 Raise a <BigInteger> to a power (mod m).
45588
45589 Because it is reduced by a modulus, <modPow> is not limited by
45590 <BigInteger.MAX_EXP> like <pow>.
45591
45592 Parameters:
45593
45594 exponent - The exponent to raise *this* by. Must be positive.
45595 modulus - The modulus.
45596
45597 Returns:
45598
45599 *this* ^ *exponent* (mod *modulus*).
45600
45601 See Also:
45602
45603 <pow>, <mod>
45604 */
45605 BigInteger.prototype.modPow = function(exponent, modulus) {
45606 var result = ONE;
45607 var base = this;
45608
45609 while (exponent.isPositive()) {
45610 if (exponent.isOdd()) {
45611 result = result.multiply(base).remainder(modulus);
45612 }
45613
45614 exponent = exponent.quotient(BigInteger.small[2]);
45615 if (exponent.isPositive()) {
45616 base = base.square().remainder(modulus);
45617 }
45618 }
45619
45620 return result;
45621 };
45622
45623 /*
45624 Function: log
45625 Get the natural logarithm of a <BigInteger> as a native JavaScript number.
45626
45627 This is equivalent to
45628
45629 > Math.log(this.toJSValue())
45630
45631 but handles values outside of the native number range.
45632
45633 Returns:
45634
45635 log( *this* )
45636
45637 See Also:
45638
45639 <toJSValue>
45640 */
45641 BigInteger.prototype.log = function() {
45642 switch (this._s) {
45643 case 0: return -Infinity;
45644 case -1: return NaN;
45645 default: // Fall through.
45646 }
45647
45648 var l = this._d.length;
45649
45650 if (l*BigInteger_base_log10 < 30) {
45651 return Math.log(this.valueOf());
45652 }
45653
45654 var N = Math.ceil(30/BigInteger_base_log10);
45655 var firstNdigits = this._d.slice(l - N);
45656 return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
45657 };
45658
45659 /*
45660 Function: valueOf
45661 Convert a <BigInteger> to a native JavaScript integer.
45662
45663 This is called automatically by JavaScipt to convert a <BigInteger> to a
45664 native value.
45665
45666 Returns:
45667
45668 > parseInt(this.toString(), 10)
45669
45670 See Also:
45671
45672 <toString>, <toJSValue>
45673 */
45674 BigInteger.prototype.valueOf = function() {
45675 return parseInt(this.toString(), 10);
45676 };
45677
45678 /*
45679 Function: toJSValue
45680 Convert a <BigInteger> to a native JavaScript integer.
45681
45682 This is the same as valueOf, but more explicitly named.
45683
45684 Returns:
45685
45686 > parseInt(this.toString(), 10)
45687
45688 See Also:
45689
45690 <toString>, <valueOf>
45691 */
45692 BigInteger.prototype.toJSValue = function() {
45693 return parseInt(this.toString(), 10);
45694 };
45695
45696 var MAX_EXP = BigInteger(0x7FFFFFFF);
45697 // Constant: MAX_EXP
45698 // The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
45699 BigInteger.MAX_EXP = MAX_EXP;
45700
45701 (function() {
45702 function makeUnary(fn) {
45703 return function(a) {
45704 return fn.call(BigInteger(a));
45705 };
45706 }
45707
45708 function makeBinary(fn) {
45709 return function(a, b) {
45710 return fn.call(BigInteger(a), BigInteger(b));
45711 };
45712 }
45713
45714 function makeTrinary(fn) {
45715 return function(a, b, c) {
45716 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
45717 };
45718 }
45719
45720 (function() {
45721 var i, fn;
45722 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
45723 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
45724 var trinary = ["modPow"];
45725
45726 for (i = 0; i < unary.length; i++) {
45727 fn = unary[i];
45728 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
45729 }
45730
45731 for (i = 0; i < binary.length; i++) {
45732 fn = binary[i];
45733 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
45734 }
45735
45736 for (i = 0; i < trinary.length; i++) {
45737 fn = trinary[i];
45738 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
45739 }
45740
45741 BigInteger.exp10 = function(x, n) {
45742 return BigInteger(x).exp10(n);
45743 };
45744 })();
45745 })();
45746
45747 exports.BigInteger = BigInteger;
45748 })(typeof exports !== 'undefined' ? exports : this);
45749 </script>
45750 <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){
45751 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;
45752
45753 },{}],2:[function(require,module,exports){
45754 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;
45755
45756 },{"./scoring":6}],3:[function(require,module,exports){
45757 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(","),
45758 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(","),
45759 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(","),
45760 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(","),
45761 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;
45762
45763 },{}],4:[function(require,module,exports){
45764 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;
45765
45766 },{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){
45767 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;
45768
45769 },{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){
45770 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;
45771
45772 },{"./adjacency_graphs":1}],7:[function(require,module,exports){
45773 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;
45774
45775 },{}]},{},[4])(4)
45776 });
45777 //# sourceMappingURL=zxcvbn.js.map
45778 </script>
45779 <script>/*
45780 * Detects entropy from a string.
45781 *
45782 * Formats include:
45783 * binary [0-1]
45784 * base 6 [0-5]
45785 * dice 6 [1-6]
45786 * decimal [0-9]
45787 * hexadecimal [0-9A-F]
45788 * card [A2-9TJQK][CDHS]
45789 *
45790 * Automatically uses lowest entropy to avoid issues such as interpretting 0101
45791 * as hexadecimal which would be 16 bits when really it's only 4 bits of binary
45792 * entropy.
45793 */
45794
45795 window.Entropy = new (function() {
45796
45797 var TWO = new BigInteger(2);
45798
45799 // matchers returns an array of the matched events for each type of entropy.
45800 // eg
45801 // matchers.binary("010") returns ["0", "1", "0"]
45802 // matchers.binary("a10") returns ["1", "0"]
45803 // matchers.hex("a10") returns ["a", "1", "0"]
45804 var matchers = {
45805 binary: function(str) {
45806 return str.match(/[0-1]/gi) || [];
45807 },
45808 base6: function(str) {
45809 return str.match(/[0-5]/gi) || [];
45810 },
45811 dice: function(str) {
45812 return str.match(/[1-6]/gi) || []; // ie dice numbers
45813 },
45814 base10: function(str) {
45815 return str.match(/[0-9]/gi) || [];
45816 },
45817 hex: function(str) {
45818 return str.match(/[0-9A-F]/gi) || [];
45819 },
45820 card: function(str) {
45821 // Format is NumberSuit, eg
45822 // AH ace of hearts
45823 // 8C eight of clubs
45824 // TD ten of diamonds
45825 // JS jack of spades
45826 // QH queen of hearts
45827 // KC king of clubs
45828 return str.match(/([A2-9TJQK][CDHS])/gi) || [];
45829 }
45830 }
45831
45832 // Convert array of cards from ["ac", "4d", "ks"]
45833 // to numbers between 0 and 51 [0, 16, 51]
45834 function convertCardsToInts(cards) {
45835 var ints = [];
45836 var values = "a23456789tjqk";
45837 var suits = "cdhs";
45838 for (var i=0; i<cards.length; i++) {
45839 var card = cards[i].toLowerCase();
45840 var value = card[0];
45841 var suit = card[1];
45842 var asInt = 13 * suits.indexOf(suit) + values.indexOf(value);
45843 ints.push(asInt);
45844 }
45845 return ints;
45846 }
45847
45848 this.fromString = function(rawEntropyStr) {
45849 // Find type of entropy being used (binary, hex, dice etc)
45850 var base = getBase(rawEntropyStr);
45851 // Convert dice to base6 entropy (ie 1-6 to 0-5)
45852 // This is done by changing all 6s to 0s
45853 if (base.str == "dice") {
45854 var newParts = [];
45855 var newInts = [];
45856 for (var i=0; i<base.parts.length; i++) {
45857 var c = base.parts[i];
45858 if ("12345".indexOf(c) > -1) {
45859 newParts[i] = base.parts[i];
45860 newInts[i] = base.ints[i];
45861 }
45862 else {
45863 newParts[i] = "0";
45864 newInts[i] = 0;
45865 }
45866 }
45867 base.str = "base 6 (dice)";
45868 base.ints = newInts;
45869 base.parts = newParts;
45870 base.matcher = matchers.base6;
45871 }
45872 // Detect empty entropy
45873 if (base.parts.length == 0) {
45874 return {
45875 binaryStr: "",
45876 cleanStr: "",
45877 cleanHtml: "",
45878 base: base,
45879 };
45880 }
45881 // Convert base.ints to BigInteger.
45882 // Due to using unusual bases, eg cards of base52, this is not as simple as
45883 // using BigInteger.parse()
45884 var entropyInt = BigInteger.ZERO;
45885 for (var i=base.ints.length-1; i>=0; i--) {
45886 var thisInt = BigInteger.parse(base.ints[i]);
45887 var power = (base.ints.length - 1) - i;
45888 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
45889 entropyInt = entropyInt.add(additionalEntropy);
45890 }
45891 // Convert entropy to binary
45892 var entropyBin = entropyInt.toString(2);
45893 // If the first integer is small, it must be padded with zeros.
45894 // Otherwise the chance of the first bit being 1 is 100%, which is
45895 // obviously incorrect.
45896 // This is not perfect for non-2^n bases.
45897 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
45898 while (entropyBin.length < expectedBits) {
45899 entropyBin = "0" + entropyBin;
45900 }
45901 // Calculate the number of bits per event
45902 var bitsPerEvent = Math.log2(base.asInt);
45903 // Cards binary must be handled differently, since they're not replaced
45904 if (base.asInt == 52) {
45905 var cardEntropy = processCardEntropy(base.parts);
45906 entropyBin = cardEntropy.binaryStr;
45907 bitsPerEvent = cardEntropy.bitsPerEvent;
45908 }
45909 // Supply a 'filtered' entropy string for display purposes
45910 var entropyClean = base.parts.join("");
45911 var entropyHtml = base.parts.join("");
45912 if (base.asInt == 52) {
45913 entropyClean = base.parts.join(" ").toUpperCase();
45914 entropyClean = entropyClean.replace(/C/g, "\u2663");
45915 entropyClean = entropyClean.replace(/D/g, "\u2666");
45916 entropyClean = entropyClean.replace(/H/g, "\u2665");
45917 entropyClean = entropyClean.replace(/S/g, "\u2660");
45918 entropyHtml = base.parts.join(" ").toUpperCase();
45919 entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>");
45920 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>");
45921 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>");
45922 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>");
45923 }
45924 // Return the result
45925 var e = {
45926 binaryStr: entropyBin,
45927 cleanStr: entropyClean,
45928 cleanHtml: entropyHtml,
45929 bitsPerEvent: bitsPerEvent,
45930 base: base,
45931 }
45932 return e;
45933 }
45934
45935 function getSortedDeck() {
45936 var s = [];
45937 var suits = "CDHS";
45938 var values = "A23456789TJQK";
45939 for (var i=0; i<suits.length; i++) {
45940 for (var j=0; j<values.length; j++) {
45941 s.push(values[j]+suits[i]);
45942 }
45943 }
45944 return s;
45945 }
45946
45947 function getBase(str) {
45948 // Need to get the lowest base for the supplied entropy.
45949 // This prevents interpreting, say, dice rolls as hexadecimal.
45950 var binaryMatches = matchers.binary(str);
45951 var hexMatches = matchers.hex(str);
45952 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
45953 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
45954 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
45955 return {
45956 ints: ints,
45957 parts: binaryMatches,
45958 matcher: matchers.binary,
45959 asInt: 2,
45960 str: "binary",
45961 }
45962 }
45963 var cardMatches = matchers.card(str);
45964 if (cardMatches.length >= hexMatches.length / 2) {
45965 var ints = convertCardsToInts(cardMatches);
45966 return {
45967 ints: ints,
45968 parts: cardMatches,
45969 matcher: matchers.card,
45970 asInt: 52,
45971 str: "card",
45972 }
45973 }
45974 var diceMatches = matchers.dice(str);
45975 if (diceMatches.length == hexMatches.length && hexMatches.length > 0) {
45976 var ints = diceMatches.map(function(i) { return parseInt(i) });
45977 return {
45978 ints: ints,
45979 parts: diceMatches,
45980 matcher: matchers.dice,
45981 asInt: 6,
45982 str: "dice",
45983 }
45984 }
45985 var base6Matches = matchers.base6(str);
45986 if (base6Matches.length == hexMatches.length && hexMatches.length > 0) {
45987 var ints = base6Matches.map(function(i) { return parseInt(i) });
45988 return {
45989 ints: ints,
45990 parts: base6Matches,
45991 matcher: matchers.base6,
45992 asInt: 6,
45993 str: "base 6",
45994 }
45995 }
45996 var base10Matches = matchers.base10(str);
45997 if (base10Matches.length == hexMatches.length && hexMatches.length > 0) {
45998 var ints = base10Matches.map(function(i) { return parseInt(i) });
45999 return {
46000 ints: ints,
46001 parts: base10Matches,
46002 matcher: matchers.base10,
46003 asInt: 10,
46004 str: "base 10",
46005 }
46006 }
46007 var ints = hexMatches.map(function(i) { return parseInt(i, 16) });
46008 return {
46009 ints: ints,
46010 parts: hexMatches,
46011 matcher: matchers.hex,
46012 asInt: 16,
46013 str: "hexadecimal",
46014 }
46015 }
46016
46017 // Assume cards are NOT replaced.
46018 // Additional entropy decreases as more cards are used. This means
46019 // total possible entropy is measured using n!, not base^n.
46020 // eg the second last card can be only one of two, not one of fifty two
46021 // so the added entropy for that card is only one bit at most
46022 function processCardEntropy(cards) {
46023 // Track how many instances of each card have been used, and thus
46024 // how many decks are in use.
46025 var cardCounts = {};
46026 var numberOfDecks = 0;
46027 // Work out number of decks by max(duplicates)
46028 for (var i=0; i<cards.length; i++) {
46029 // Get the card that was drawn
46030 var cardLower = cards[i];
46031 var card = cardLower.toUpperCase();
46032 // Initialize the count for this card if needed
46033 if (!(card in cardCounts)) {
46034 cardCounts[card] = 0;
46035 }
46036 cardCounts[card] += 1;
46037 // See if this is max(duplicates)
46038 if (cardCounts[card] > numberOfDecks) {
46039 numberOfDecks = cardCounts[card];
46040 }
46041 }
46042 // Work out the total number of bits for this many decks
46043 // See http://crypto.stackexchange.com/q/41886
46044 var gainedBits = 0;
46045 // Equivalent of Math.log2(factorial(52*numberOfDecks))
46046 // which becomes infinity for numberOfDecks > 4
46047 for (var i=1; i<=52*numberOfDecks; i++) {
46048 gainedBits = gainedBits + Math.log2(i);
46049 }
46050 var lostBits = 52 * Math.log2(factorial(numberOfDecks));
46051 var maxBits = gainedBits - lostBits;
46052 // Convert the drawn cards to a binary representation.
46053 // The exact technique for doing this is unclear.
46054 // See
46055 // http://crypto.stackexchange.com/a/41896
46056 // "I even doubt that this is well defined (only the average entropy
46057 // is, I believe)."
46058 // See
46059 // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856
46060 // "The binary representation can be the first log(permutations,2) bits
46061 // of the sha-2 hash of the normalized deck string."
46062 //
46063 // In this specific implementation, the first N bits of the hash of the
46064 // normalized cards string is being used. Uppercase, no spaces; eg
46065 // sha256("AH8DQSTC2H")
46066 var totalCards = numberOfDecks * 52;
46067 var percentUsed = cards.length / totalCards;
46068 // Calculate the average number of bits of entropy for the number of
46069 // cards drawn.
46070 var numberOfBits = Math.floor(maxBits * percentUsed);
46071 // Create a normalized string of the selected cards
46072 var normalizedCards = cards.join("").toUpperCase();
46073 // Convert to binary using the SHA256 hash of the normalized cards.
46074 // If the number of bits is more than 256, multiple hashes
46075 // are used until the required number of bits is reached.
46076 var entropyBin = "";
46077 var iterations = 0;
46078 while (entropyBin.length < numberOfBits) {
46079 var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations);
46080 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
46081 for (var i=0; i<hashHex.length; i++) {
46082 var decimal = parseInt(hashHex[i], 16);
46083 var binary = decimal.toString(2);
46084 while (binary.length < 4) {
46085 binary = "0" + binary;
46086 }
46087 entropyBin = entropyBin + binary;
46088 }
46089 iterations = iterations + 1;
46090 }
46091 // Truncate to the appropriate number of bits.
46092 entropyBin = entropyBin.substring(0, numberOfBits);
46093 // Get the number of bits per event
46094 bitsPerEvent = maxBits / totalCards;
46095 return {
46096 binaryStr: entropyBin,
46097 bitsPerEvent: bitsPerEvent,
46098 }
46099 }
46100
46101 // Polyfill for Math.log2
46102 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
46103 Math.log2 = Math.log2 || function(x) {
46104 // The polyfill isn't good enough because of the poor accuracy of
46105 // Math.LOG2E
46106 // log2(8) gave 2.9999999999999996 which when floored causes issues.
46107 // So instead use the BigInteger library to get it right.
46108 return BigInteger.log(x) / BigInteger.log(2);
46109 };
46110
46111 // Depends on BigInteger
46112 function factorial(n) {
46113 if (n == 0) {
46114 return 1;
46115 }
46116 f = BigInteger.ONE;
46117 for (var i=1; i<=n; i++) {
46118 f = f.multiply(new BigInteger(i));
46119 }
46120 return f;
46121 }
46122
46123 })();
46124 </script>
46125 <script>(function() {
46126
46127 // mnemonics is populated as required by getLanguage
46128 var mnemonics = { "english": new Mnemonic("english") };
46129 var mnemonic = mnemonics["english"];
46130 var seed = null;
46131 var bip32RootKey = null;
46132 var bip32ExtendedKey = null;
46133 var network = bitcoinjs.bitcoin.networks.bitcoin;
46134 var addressRowTemplate = $("#address-row-template");
46135
46136 var showIndex = true;
46137 var showAddress = true;
46138 var showPubKey = true;
46139 var showPrivKey = true;
46140 var showQr = false;
46141 var litecoinUseLtub = false;
46142
46143 var entropyChangeTimeoutEvent = null;
46144 var phraseChangeTimeoutEvent = null;
46145 var rootKeyChangedTimeoutEvent = null;
46146
46147 var generationProcesses = [];
46148
46149 var DOM = {};
46150 DOM.network = $(".network");
46151 DOM.bip32Client = $("#bip32-client");
46152 DOM.phraseNetwork = $("#network-phrase");
46153 DOM.useEntropy = $(".use-entropy");
46154 DOM.entropyContainer = $(".entropy-container");
46155 DOM.entropy = $(".entropy");
46156 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
46157 DOM.entropyType = DOM.entropyContainer.find(".type");
46158 DOM.entropyCrackTime = DOM.entropyContainer.find(".crack-time");
46159 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
46160 DOM.entropyBits = DOM.entropyContainer.find(".bits");
46161 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
46162 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
46163 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
46164 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
46165 DOM.phrase = $(".phrase");
46166 DOM.passphrase = $(".passphrase");
46167 DOM.generateContainer = $(".generate-container");
46168 DOM.generate = $(".generate");
46169 DOM.seed = $(".seed");
46170 DOM.rootKey = $(".root-key");
46171 DOM.litecoinLtubContainer = $(".litecoin-ltub-container");
46172 DOM.litecoinUseLtub = $(".litecoin-use-ltub");
46173 DOM.extendedPrivKey = $(".extended-priv-key");
46174 DOM.extendedPubKey = $(".extended-pub-key");
46175 DOM.bip32tab = $("#bip32-tab");
46176 DOM.bip44tab = $("#bip44-tab");
46177 DOM.bip49tab = $("#bip49-tab");
46178 DOM.bip32panel = $("#bip32");
46179 DOM.bip44panel = $("#bip44");
46180 DOM.bip49panel = $("#bip49");
46181 DOM.bip32path = $("#bip32-path");
46182 DOM.bip44path = $("#bip44-path");
46183 DOM.bip44purpose = $("#bip44 .purpose");
46184 DOM.bip44coin = $("#bip44 .coin");
46185 DOM.bip44account = $("#bip44 .account");
46186 DOM.bip44accountXprv = $("#bip44 .account-xprv");
46187 DOM.bip44accountXpub = $("#bip44 .account-xpub");
46188 DOM.bip44change = $("#bip44 .change");
46189 DOM.bip49unavailable = $("#bip49 .unavailable");
46190 DOM.bip49available = $("#bip49 .available");
46191 DOM.bip49path = $("#bip49-path");
46192 DOM.bip49purpose = $("#bip49 .purpose");
46193 DOM.bip49coin = $("#bip49 .coin");
46194 DOM.bip49account = $("#bip49 .account");
46195 DOM.bip49accountXprv = $("#bip49 .account-xprv");
46196 DOM.bip49accountXpub = $("#bip49 .account-xpub");
46197 DOM.bip49change = $("#bip49 .change");
46198 DOM.generatedStrength = $(".generate-container .strength");
46199 DOM.hardenedAddresses = $(".hardened-addresses");
46200 DOM.useP2wpkhNestedInP2sh = $(".p2wpkh-nested-in-p2sh");
46201 DOM.addresses = $(".addresses");
46202 DOM.rowsToAdd = $(".rows-to-add");
46203 DOM.more = $(".more");
46204 DOM.feedback = $(".feedback");
46205 DOM.tab = $(".derivation-type a");
46206 DOM.indexToggle = $(".index-toggle");
46207 DOM.addressToggle = $(".address-toggle");
46208 DOM.publicKeyToggle = $(".public-key-toggle");
46209 DOM.privateKeyToggle = $(".private-key-toggle");
46210 DOM.languages = $(".languages a");
46211 DOM.qrContainer = $(".qr-container");
46212 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
46213 DOM.qrImage = DOM.qrContainer.find(".qr-image");
46214 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
46215 DOM.showQrEls = $("[data-show-qr]");
46216
46217 function init() {
46218 // Events
46219 DOM.network.on("change", networkChanged);
46220 DOM.bip32Client.on("change", bip32ClientChanged);
46221 DOM.useEntropy.on("change", setEntropyVisibility);
46222 DOM.entropy.on("input", delayedEntropyChanged);
46223 DOM.entropyMnemonicLength.on("change", entropyChanged);
46224 DOM.phrase.on("input", delayedPhraseChanged);
46225 DOM.passphrase.on("input", delayedPhraseChanged);
46226 DOM.generate.on("click", generateClicked);
46227 DOM.more.on("click", showMore);
46228 DOM.rootKey.on("input", delayedRootKeyChanged);
46229 DOM.litecoinUseLtub.on("change", litecoinUseLtubChanged);
46230 DOM.bip32path.on("input", calcForDerivationPath);
46231 DOM.bip44account.on("input", calcForDerivationPath);
46232 DOM.bip44change.on("input", calcForDerivationPath);
46233 DOM.bip49account.on("input", calcForDerivationPath);
46234 DOM.bip49change.on("input", calcForDerivationPath);
46235 DOM.tab.on("shown.bs.tab", calcForDerivationPath);
46236 DOM.hardenedAddresses.on("change", calcForDerivationPath);
46237 DOM.useP2wpkhNestedInP2sh.on("change", calcForDerivationPath);
46238 DOM.indexToggle.on("click", toggleIndexes);
46239 DOM.addressToggle.on("click", toggleAddresses);
46240 DOM.publicKeyToggle.on("click", togglePublicKeys);
46241 DOM.privateKeyToggle.on("click", togglePrivateKeys);
46242 DOM.languages.on("click", languageChanged);
46243 setQrEvents(DOM.showQrEls);
46244 disableForms();
46245 hidePending();
46246 hideValidationError();
46247 populateNetworkSelect();
46248 populateClientSelect();
46249 }
46250
46251 // Event handlers
46252
46253 function networkChanged(e) {
46254 clearDerivedKeys();
46255 clearAddressesList();
46256 DOM.litecoinLtubContainer.addClass("hidden");
46257 var networkIndex = e.target.value;
46258 var network = networks[networkIndex];
46259 network.onSelect();
46260 if (network.p2wpkhNestedInP2shAvailable) {
46261 showP2wpkhNestedInP2shAvailable();
46262 }
46263 else {
46264 showP2wpkhNestedInP2shUnavailable();
46265 }
46266 if (seed != null) {
46267 phraseChanged();
46268 }
46269 else {
46270 rootKeyChanged();
46271 }
46272 }
46273
46274 function bip32ClientChanged(e) {
46275 var clientIndex = DOM.bip32Client.val();
46276 if (clientIndex == "custom") {
46277 DOM.bip32path.prop("readonly", false);
46278 }
46279 else {
46280 DOM.bip32path.prop("readonly", true);
46281 clients[clientIndex].onSelect();
46282 if (seed != null) {
46283 phraseChanged();
46284 }
46285 else {
46286 rootKeyChanged();
46287 }
46288 }
46289 }
46290
46291 function setEntropyVisibility() {
46292 if (isUsingOwnEntropy()) {
46293 DOM.entropyContainer.removeClass("hidden");
46294 DOM.generateContainer.addClass("hidden");
46295 DOM.phrase.prop("readonly", true);
46296 DOM.entropy.focus();
46297 entropyChanged();
46298 }
46299 else {
46300 DOM.entropyContainer.addClass("hidden");
46301 DOM.generateContainer.removeClass("hidden");
46302 DOM.phrase.prop("readonly", false);
46303 hidePending();
46304 }
46305 }
46306
46307 function delayedPhraseChanged() {
46308 hideValidationError();
46309 seed = null;
46310 bip32RootKey = null;
46311 bip32ExtendedKey = null;
46312 clearAddressesList();
46313 showPending();
46314 if (phraseChangeTimeoutEvent != null) {
46315 clearTimeout(phraseChangeTimeoutEvent);
46316 }
46317 phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400);
46318 }
46319
46320 function phraseChanged() {
46321 showPending();
46322 setMnemonicLanguage();
46323 // Get the mnemonic phrase
46324 var phrase = DOM.phrase.val();
46325 var errorText = findPhraseErrors(phrase);
46326 if (errorText) {
46327 showValidationError(errorText);
46328 return;
46329 }
46330 // Calculate and display
46331 var passphrase = DOM.passphrase.val();
46332 calcBip32RootKeyFromSeed(phrase, passphrase);
46333 calcForDerivationPath();
46334 }
46335
46336 function delayedEntropyChanged() {
46337 hideValidationError();
46338 showPending();
46339 if (entropyChangeTimeoutEvent != null) {
46340 clearTimeout(entropyChangeTimeoutEvent);
46341 }
46342 entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400);
46343 }
46344
46345 function entropyChanged() {
46346 // If blank entropy, clear mnemonic, addresses, errors
46347 if (DOM.entropy.val().trim().length == 0) {
46348 clearDisplay();
46349 clearEntropyFeedback();
46350 DOM.phrase.val("");
46351 showValidationError("Blank entropy");
46352 return;
46353 }
46354 // Get the current phrase to detect changes
46355 var phrase = DOM.phrase.val();
46356 // Set the phrase from the entropy
46357 setMnemonicFromEntropy();
46358 // Recalc addresses if the phrase has changed
46359 var newPhrase = DOM.phrase.val();
46360 if (newPhrase != phrase) {
46361 if (newPhrase.length == 0) {
46362 clearDisplay();
46363 }
46364 else {
46365 phraseChanged();
46366 }
46367 }
46368 else {
46369 hidePending();
46370 }
46371 }
46372
46373 function delayedRootKeyChanged() {
46374 // Warn if there is an existing mnemonic or passphrase.
46375 if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
46376 if (!confirm("This will clear existing mnemonic and passphrase")) {
46377 DOM.rootKey.val(bip32RootKey);
46378 return
46379 }
46380 }
46381 hideValidationError();
46382 showPending();
46383 // Clear existing mnemonic and passphrase
46384 DOM.phrase.val("");
46385 DOM.passphrase.val("");
46386 seed = null;
46387 if (rootKeyChangedTimeoutEvent != null) {
46388 clearTimeout(rootKeyChangedTimeoutEvent);
46389 }
46390 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
46391 }
46392
46393 function rootKeyChanged() {
46394 showPending();
46395 hideValidationError();
46396 var rootKeyBase58 = DOM.rootKey.val();
46397 var errorText = validateRootKey(rootKeyBase58);
46398 if (errorText) {
46399 showValidationError(errorText);
46400 return;
46401 }
46402 // Calculate and display
46403 calcBip32RootKeyFromBase58(rootKeyBase58);
46404 calcForDerivationPath();
46405 }
46406
46407 function litecoinUseLtubChanged() {
46408 litecoinUseLtub = DOM.litecoinUseLtub.prop("checked");
46409 if (litecoinUseLtub) {
46410 network = bitcoinjs.bitcoin.networks.litecoinLtub;
46411 }
46412 else {
46413 network = bitcoinjs.bitcoin.networks.litecoin;
46414 }
46415 phraseChanged();
46416 }
46417
46418 function calcForDerivationPath() {
46419 clearDerivedKeys();
46420 clearAddressesList();
46421 showPending();
46422 // Don't show bip49 if it's selected but network doesn't support it
46423 if (bip49TabSelected() && !networkHasBip49()) {
46424 return;
46425 }
46426 // Get the derivation path
46427 var derivationPath = getDerivationPath();
46428 var errorText = findDerivationPathErrors(derivationPath);
46429 if (errorText) {
46430 showValidationError(errorText);
46431 return;
46432 }
46433 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
46434 if (bip44TabSelected()) {
46435 displayBip44Info();
46436 }
46437 if (bip49TabSelected()) {
46438 displayBip49Info();
46439 }
46440 displayBip32Info();
46441 }
46442
46443 function generateClicked() {
46444 if (isUsingOwnEntropy()) {
46445 return;
46446 }
46447 clearDisplay();
46448 showPending();
46449 setTimeout(function() {
46450 setMnemonicLanguage();
46451 var phrase = generateRandomPhrase();
46452 if (!phrase) {
46453 return;
46454 }
46455 phraseChanged();
46456 }, 50);
46457 }
46458
46459 function languageChanged() {
46460 setTimeout(function() {
46461 setMnemonicLanguage();
46462 if (DOM.phrase.val().length > 0) {
46463 var newPhrase = convertPhraseToNewLanguage();
46464 DOM.phrase.val(newPhrase);
46465 phraseChanged();
46466 }
46467 else {
46468 DOM.generate.trigger("click");
46469 }
46470 }, 50);
46471 }
46472
46473 function toggleIndexes() {
46474 showIndex = !showIndex;
46475 $("td.index span").toggleClass("invisible");
46476 }
46477
46478 function toggleAddresses() {
46479 showAddress = !showAddress;
46480 $("td.address span").toggleClass("invisible");
46481 }
46482
46483 function togglePublicKeys() {
46484 showPubKey = !showPubKey;
46485 $("td.pubkey span").toggleClass("invisible");
46486 }
46487
46488 function togglePrivateKeys() {
46489 showPrivKey = !showPrivKey;
46490 $("td.privkey span").toggleClass("invisible");
46491 }
46492
46493 // Private methods
46494
46495 function generateRandomPhrase() {
46496 if (!hasStrongRandom()) {
46497 var errorText = "This browser does not support strong randomness";
46498 showValidationError(errorText);
46499 return;
46500 }
46501 var numWords = parseInt(DOM.generatedStrength.val());
46502 var strength = numWords / 3 * 32;
46503 var words = mnemonic.generate(strength);
46504 DOM.phrase.val(words);
46505 return words;
46506 }
46507
46508 function calcBip32RootKeyFromSeed(phrase, passphrase) {
46509 seed = mnemonic.toSeed(phrase, passphrase);
46510 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromSeedHex(seed, network);
46511 }
46512
46513 function calcBip32RootKeyFromBase58(rootKeyBase58) {
46514 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network);
46515 }
46516
46517 function calcBip32ExtendedKey(path) {
46518 // Check there's a root key to derive from
46519 if (!bip32RootKey) {
46520 return bip32RootKey;
46521 }
46522 var extendedKey = bip32RootKey;
46523 // Derive the key from the path
46524 var pathBits = path.split("/");
46525 for (var i=0; i<pathBits.length; i++) {
46526 var bit = pathBits[i];
46527 var index = parseInt(bit);
46528 if (isNaN(index)) {
46529 continue;
46530 }
46531 var hardened = bit[bit.length-1] == "'";
46532 var isPriv = !(extendedKey.isNeutered());
46533 var invalidDerivationPath = hardened && !isPriv;
46534 if (invalidDerivationPath) {
46535 extendedKey = null;
46536 }
46537 else if (hardened) {
46538 extendedKey = extendedKey.deriveHardened(index);
46539 }
46540 else {
46541 extendedKey = extendedKey.derive(index);
46542 }
46543 }
46544 return extendedKey
46545 }
46546
46547 function showValidationError(errorText) {
46548 DOM.feedback
46549 .text(errorText)
46550 .show();
46551 }
46552
46553 function hideValidationError() {
46554 DOM.feedback
46555 .text("")
46556 .hide();
46557 }
46558
46559 function findPhraseErrors(phrase) {
46560 // Preprocess the words
46561 phrase = mnemonic.normalizeString(phrase);
46562 var words = phraseToWordArray(phrase);
46563 // Detect blank phrase
46564 if (words.length == 0) {
46565 return "Blank mnemonic";
46566 }
46567 // Check each word
46568 for (var i=0; i<words.length; i++) {
46569 var word = words[i];
46570 var language = getLanguage();
46571 if (WORDLISTS[language].indexOf(word) == -1) {
46572 console.log("Finding closest match to " + word);
46573 var nearestWord = findNearestWord(word);
46574 return word + " not in wordlist, did you mean " + nearestWord + "?";
46575 }
46576 }
46577 // Check the words are valid
46578 var properPhrase = wordArrayToPhrase(words);
46579 var isValid = mnemonic.check(properPhrase);
46580 if (!isValid) {
46581 return "Invalid mnemonic";
46582 }
46583 return false;
46584 }
46585
46586 function validateRootKey(rootKeyBase58) {
46587 try {
46588 bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network);
46589 }
46590 catch (e) {
46591 return "Invalid root key";
46592 }
46593 return "";
46594 }
46595
46596 function getDerivationPath() {
46597 if (bip44TabSelected()) {
46598 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
46599 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
46600 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
46601 var change = parseIntNoNaN(DOM.bip44change.val(), 0);
46602 var path = "m/";
46603 path += purpose + "'/";
46604 path += coin + "'/";
46605 path += account + "'/";
46606 path += change;
46607 DOM.bip44path.val(path);
46608 var derivationPath = DOM.bip44path.val();
46609 console.log("Using derivation path from BIP44 tab: " + derivationPath);
46610 return derivationPath;
46611 }
46612 if (bip49TabSelected()) {
46613 var purpose = parseIntNoNaN(DOM.bip49purpose.val(), 49);
46614 var coin = parseIntNoNaN(DOM.bip49coin.val(), 0);
46615 var account = parseIntNoNaN(DOM.bip49account.val(), 0);
46616 var change = parseIntNoNaN(DOM.bip49change.val(), 0);
46617 var path = "m/";
46618 path += purpose + "'/";
46619 path += coin + "'/";
46620 path += account + "'/";
46621 path += change;
46622 DOM.bip49path.val(path);
46623 var derivationPath = DOM.bip49path.val();
46624 console.log("Using derivation path from BIP49 tab: " + derivationPath);
46625 return derivationPath;
46626 }
46627 else if (bip32TabSelected()) {
46628 var derivationPath = DOM.bip32path.val();
46629 console.log("Using derivation path from BIP32 tab: " + derivationPath);
46630 return derivationPath;
46631 }
46632 else {
46633 console.log("Unknown derivation path");
46634 }
46635 }
46636
46637 function findDerivationPathErrors(path) {
46638 // TODO is not perfect but is better than nothing
46639 // Inspired by
46640 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors
46641 // and
46642 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys
46643 var maxDepth = 255; // TODO verify this!!
46644 var maxIndexValue = Math.pow(2, 31); // TODO verify this!!
46645 if (path[0] != "m") {
46646 return "First character must be 'm'";
46647 }
46648 if (path.length > 1) {
46649 if (path[1] != "/") {
46650 return "Separator must be '/'";
46651 }
46652 var indexes = path.split("/");
46653 if (indexes.length > maxDepth) {
46654 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
46655 }
46656 for (var depth = 1; depth<indexes.length; depth++) {
46657 var index = indexes[depth];
46658 var invalidChars = index.replace(/^[0-9]+'?$/g, "")
46659 if (invalidChars.length > 0) {
46660 return "Invalid characters " + invalidChars + " found at depth " + depth;
46661 }
46662 var indexValue = parseInt(index.replace("'", ""));
46663 if (isNaN(depth)) {
46664 return "Invalid number at depth " + depth;
46665 }
46666 if (indexValue > maxIndexValue) {
46667 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
46668 }
46669 }
46670 }
46671 // Check root key exists or else derivation path is useless!
46672 if (!bip32RootKey) {
46673 return "No root key";
46674 }
46675 // Check no hardened derivation path when using xpub keys
46676 var hardenedPath = path.indexOf("'") > -1;
46677 var hardenedAddresses = bip32TabSelected() && DOM.hardenedAddresses.prop("checked");
46678 var hardened = hardenedPath || hardenedAddresses;
46679 var isXpubkey = bip32RootKey.isNeutered();
46680 if (hardened && isXpubkey) {
46681 return "Hardened derivation path is invalid with xpub key";
46682 }
46683 return false;
46684 }
46685
46686 function displayBip44Info() {
46687 // Get the derivation path for the account
46688 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
46689 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
46690 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
46691 var path = "m/";
46692 path += purpose + "'/";
46693 path += coin + "'/";
46694 path += account + "'/";
46695 // Calculate the account extended keys
46696 var accountExtendedKey = calcBip32ExtendedKey(path);
46697 var accountXprv = accountExtendedKey.toBase58();
46698 var accountXpub = accountExtendedKey.neutered().toBase58();
46699 // Display the extended keys
46700 DOM.bip44accountXprv.val(accountXprv);
46701 DOM.bip44accountXpub.val(accountXpub);
46702 }
46703
46704 function displayBip49Info() {
46705 // Get the derivation path for the account
46706 var purpose = parseIntNoNaN(DOM.bip49purpose.val(), 49);
46707 var coin = parseIntNoNaN(DOM.bip49coin.val(), 0);
46708 var account = parseIntNoNaN(DOM.bip49account.val(), 0);
46709 var path = "m/";
46710 path += purpose + "'/";
46711 path += coin + "'/";
46712 path += account + "'/";
46713 // Calculate the account extended keys
46714 var accountExtendedKey = calcBip32ExtendedKey(path);
46715 var accountXprv = accountExtendedKey.toBase58();
46716 var accountXpub = accountExtendedKey.neutered().toBase58();
46717 // Display the extended keys
46718 DOM.bip49accountXprv.val(accountXprv);
46719 DOM.bip49accountXpub.val(accountXpub);
46720 }
46721
46722 function displayBip32Info() {
46723 // Display the key
46724 DOM.seed.val(seed);
46725 var rootKey = bip32RootKey.toBase58();
46726 DOM.rootKey.val(rootKey);
46727 var xprvkeyB58 = "NA";
46728 if (!bip32ExtendedKey.isNeutered()) {
46729 xprvkeyB58 = bip32ExtendedKey.toBase58();
46730 }
46731 var extendedPrivKey = xprvkeyB58;
46732 DOM.extendedPrivKey.val(extendedPrivKey);
46733 var extendedPubKey = bip32ExtendedKey.neutered().toBase58();
46734 DOM.extendedPubKey.val(extendedPubKey);
46735 // Display the addresses and privkeys
46736 clearAddressesList();
46737 displayAddresses(0, 20);
46738 }
46739
46740 function displayAddresses(start, total) {
46741 generationProcesses.push(new (function() {
46742
46743 var rows = [];
46744
46745 this.stop = function() {
46746 for (var i=0; i<rows.length; i++) {
46747 rows[i].shouldGenerate = false;
46748 }
46749 hidePending();
46750 }
46751
46752 for (var i=0; i<total; i++) {
46753 var index = i + start;
46754 var isLast = i == total - 1;
46755 rows.push(new TableRow(index, isLast));
46756 }
46757
46758 })());
46759 }
46760
46761 function TableRow(index, isLast) {
46762
46763 var self = this;
46764 this.shouldGenerate = true;
46765 var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
46766 var isP2wpkhNestedInP2sh = bip49TabSelected() || (bip32TabSelected() && useP2wpkhNestedInP2sh());
46767 var p2wpkhNestedInP2shAvailable = networkHasBip49();
46768
46769 function init() {
46770 calculateValues();
46771 }
46772
46773 function calculateValues() {
46774 setTimeout(function() {
46775 if (!self.shouldGenerate) {
46776 return;
46777 }
46778 var key = "NA";
46779 if (useHardenedAddresses) {
46780 key = bip32ExtendedKey.deriveHardened(index);
46781 }
46782 else {
46783 key = bip32ExtendedKey.derive(index);
46784 }
46785 var address = key.getAddress().toString();
46786 var privkey = "NA";
46787 if (!key.isNeutered()) {
46788 privkey = key.keyPair.toWIF(network);
46789 }
46790 var pubkey = key.getPublicKeyBuffer().toString('hex');
46791 var indexText = getDerivationPath() + "/" + index;
46792 if (useHardenedAddresses) {
46793 indexText = indexText + "'";
46794 }
46795 // Ethereum values are different
46796 if (networks[DOM.network.val()].name == "ETH - Ethereum") {
46797 var privKeyBuffer = key.keyPair.d.toBuffer();
46798 privkey = privKeyBuffer.toString('hex');
46799 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
46800 var hexAddress = addressBuffer.toString('hex');
46801 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
46802 address = ethUtil.addHexPrefix(checksumAddress);
46803 privkey = ethUtil.addHexPrefix(privkey);
46804 pubkey = ethUtil.addHexPrefix(pubkey);
46805 }
46806 // Ripple values are different
46807 if (networks[DOM.network.val()].name == "XRP - Ripple") {
46808 privkey = convertRipplePriv(privkey);
46809 address = convertRippleAdrr(address);
46810 }
46811 // BIP49 addresses are different
46812 if (isP2wpkhNestedInP2sh) {
46813 if (!p2wpkhNestedInP2shAvailable) {
46814 return;
46815 }
46816 var keyhash = bitcoinjs.bitcoin.crypto.hash160(key.getPublicKeyBuffer());
46817 var scriptsig = bitcoinjs.bitcoin.script.witnessPubKeyHash.output.encode(keyhash);
46818 var addressbytes = bitcoinjs.bitcoin.crypto.hash160(scriptsig);
46819 var scriptpubkey = bitcoinjs.bitcoin.script.scriptHash.output.encode(addressbytes);
46820 address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network)
46821 }
46822 addAddressToList(indexText, address, pubkey, privkey);
46823 if (isLast) {
46824 hidePending();
46825 }
46826 }, 50)
46827 }
46828
46829 init();
46830
46831 }
46832
46833 function showMore() {
46834 var start = DOM.addresses.children().length;
46835 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
46836 if (isNaN(rowsToAdd)) {
46837 rowsToAdd = 20;
46838 DOM.rowsToAdd.val("20");
46839 }
46840 if (rowsToAdd > 200) {
46841 var msg = "Generating " + rowsToAdd + " rows could take a while. ";
46842 msg += "Do you want to continue?";
46843 if (!confirm(msg)) {
46844 return;
46845 }
46846 }
46847 displayAddresses(start, rowsToAdd);
46848 }
46849
46850 function clearDisplay() {
46851 clearAddressesList();
46852 clearKeys();
46853 hideValidationError();
46854 }
46855
46856 function clearAddressesList() {
46857 DOM.addresses.empty();
46858 stopGenerating();
46859 }
46860
46861 function stopGenerating() {
46862 while (generationProcesses.length > 0) {
46863 var generation = generationProcesses.shift();
46864 generation.stop();
46865 }
46866 }
46867
46868 function clearKeys() {
46869 clearRootKey();
46870 clearDerivedKeys();
46871 }
46872
46873 function clearRootKey() {
46874 DOM.rootKey.val("");
46875 }
46876
46877 function clearDerivedKeys() {
46878 DOM.extendedPrivKey.val("");
46879 DOM.extendedPubKey.val("");
46880 DOM.bip44accountXprv.val("");
46881 DOM.bip44accountXpub.val("");
46882 }
46883
46884 function addAddressToList(indexText, address, pubkey, privkey) {
46885 var row = $(addressRowTemplate.html());
46886 // Elements
46887 var indexCell = row.find(".index span");
46888 var addressCell = row.find(".address span");
46889 var pubkeyCell = row.find(".pubkey span");
46890 var privkeyCell = row.find(".privkey span");
46891 // Content
46892 indexCell.text(indexText);
46893 addressCell.text(address);
46894 pubkeyCell.text(pubkey);
46895 privkeyCell.text(privkey);
46896 // Visibility
46897 if (!showIndex) {
46898 indexCell.addClass("invisible");
46899 }
46900 if (!showAddress) {
46901 addressCell.addClass("invisible");
46902 }
46903 if (!showPubKey) {
46904 pubkeyCell.addClass("invisible");
46905 }
46906 if (!showPrivKey) {
46907 privkeyCell.addClass("invisible");
46908 }
46909 DOM.addresses.append(row);
46910 var rowShowQrEls = row.find("[data-show-qr]");
46911 setQrEvents(rowShowQrEls);
46912 }
46913
46914 function hasStrongRandom() {
46915 return 'crypto' in window && window['crypto'] !== null;
46916 }
46917
46918 function disableForms() {
46919 $("form").on("submit", function(e) {
46920 e.preventDefault();
46921 });
46922 }
46923
46924 function parseIntNoNaN(val, defaultVal) {
46925 var v = parseInt(val);
46926 if (isNaN(v)) {
46927 return defaultVal;
46928 }
46929 return v;
46930 }
46931
46932 function showPending() {
46933 DOM.feedback
46934 .text("Calculating...")
46935 .show();
46936 }
46937
46938 function findNearestWord(word) {
46939 var language = getLanguage();
46940 var words = WORDLISTS[language];
46941 var minDistance = 99;
46942 var closestWord = words[0];
46943 for (var i=0; i<words.length; i++) {
46944 var comparedTo = words[i];
46945 if (comparedTo.indexOf(word) == 0) {
46946 return comparedTo;
46947 }
46948 var distance = Levenshtein.get(word, comparedTo);
46949 if (distance < minDistance) {
46950 closestWord = comparedTo;
46951 minDistance = distance;
46952 }
46953 }
46954 return closestWord;
46955 }
46956
46957 function hidePending() {
46958 DOM.feedback
46959 .text("")
46960 .hide();
46961 }
46962
46963 function populateNetworkSelect() {
46964 for (var i=0; i<networks.length; i++) {
46965 var network = networks[i];
46966 var option = $("<option>");
46967 option.attr("value", i);
46968 option.text(network.name);
46969 if (network.name == "BTC - Bitcoin") {
46970 option.prop("selected", true);
46971 }
46972 DOM.phraseNetwork.append(option);
46973 }
46974 }
46975
46976 function populateClientSelect() {
46977 for (var i=0; i<clients.length; i++) {
46978 var client = clients[i];
46979 var option = $("<option>");
46980 option.attr("value", i);
46981 option.text(client.name);
46982 DOM.bip32Client.append(option);
46983 }
46984 }
46985
46986 function getLanguage() {
46987 var defaultLanguage = "english";
46988 // Try to get from existing phrase
46989 var language = getLanguageFromPhrase();
46990 // Try to get from url if not from phrase
46991 if (language.length == 0) {
46992 language = getLanguageFromUrl();
46993 }
46994 // Default to English if no other option
46995 if (language.length == 0) {
46996 language = defaultLanguage;
46997 }
46998 return language;
46999 }
47000
47001 function getLanguageFromPhrase(phrase) {
47002 // Check if how many words from existing phrase match a language.
47003 var language = "";
47004 if (!phrase) {
47005 phrase = DOM.phrase.val();
47006 }
47007 if (phrase.length > 0) {
47008 var words = phraseToWordArray(phrase);
47009 var languageMatches = {};
47010 for (l in WORDLISTS) {
47011 // Track how many words match in this language
47012 languageMatches[l] = 0;
47013 for (var i=0; i<words.length; i++) {
47014 var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1;
47015 if (wordInLanguage) {
47016 languageMatches[l]++;
47017 }
47018 }
47019 // Find languages with most word matches.
47020 // This is made difficult due to commonalities between Chinese
47021 // simplified vs traditional.
47022 var mostMatches = 0;
47023 var mostMatchedLanguages = [];
47024 for (var l in languageMatches) {
47025 var numMatches = languageMatches[l];
47026 if (numMatches > mostMatches) {
47027 mostMatches = numMatches;
47028 mostMatchedLanguages = [l];
47029 }
47030 else if (numMatches == mostMatches) {
47031 mostMatchedLanguages.push(l);
47032 }
47033 }
47034 }
47035 if (mostMatchedLanguages.length > 0) {
47036 // Use first language and warn if multiple detected
47037 language = mostMatchedLanguages[0];
47038 if (mostMatchedLanguages.length > 1) {
47039 console.warn("Multiple possible languages");
47040 console.warn(mostMatchedLanguages);
47041 }
47042 }
47043 }
47044 return language;
47045 }
47046
47047 function getLanguageFromUrl() {
47048 for (var language in WORDLISTS) {
47049 if (window.location.hash.indexOf(language) > -1) {
47050 return language;
47051 }
47052 }
47053 return "";
47054 }
47055
47056 function setMnemonicLanguage() {
47057 var language = getLanguage();
47058 // Load the bip39 mnemonic generator for this language if required
47059 if (!(language in mnemonics)) {
47060 mnemonics[language] = new Mnemonic(language);
47061 }
47062 mnemonic = mnemonics[language];
47063 }
47064
47065 function convertPhraseToNewLanguage() {
47066 var oldLanguage = getLanguageFromPhrase();
47067 var newLanguage = getLanguageFromUrl();
47068 var oldPhrase = DOM.phrase.val();
47069 var oldWords = phraseToWordArray(oldPhrase);
47070 var newWords = [];
47071 for (var i=0; i<oldWords.length; i++) {
47072 var oldWord = oldWords[i];
47073 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
47074 var newWord = WORDLISTS[newLanguage][index];
47075 newWords.push(newWord);
47076 }
47077 newPhrase = wordArrayToPhrase(newWords);
47078 return newPhrase;
47079 }
47080
47081 // TODO look at jsbip39 - mnemonic.splitWords
47082 function phraseToWordArray(phrase) {
47083 var words = phrase.split(/\s/g);
47084 var noBlanks = [];
47085 for (var i=0; i<words.length; i++) {
47086 var word = words[i];
47087 if (word.length > 0) {
47088 noBlanks.push(word);
47089 }
47090 }
47091 return noBlanks;
47092 }
47093
47094 // TODO look at jsbip39 - mnemonic.joinWords
47095 function wordArrayToPhrase(words) {
47096 var phrase = words.join(" ");
47097 var language = getLanguageFromPhrase(phrase);
47098 if (language == "japanese") {
47099 phrase = words.join("\u3000");
47100 }
47101 return phrase;
47102 }
47103
47104 function isUsingOwnEntropy() {
47105 return DOM.useEntropy.prop("checked");
47106 }
47107
47108 function setMnemonicFromEntropy() {
47109 clearEntropyFeedback();
47110 // Get entropy value
47111 var entropyStr = DOM.entropy.val();
47112 // Work out minimum base for entropy
47113 var entropy = Entropy.fromString(entropyStr);
47114 if (entropy.binaryStr.length == 0) {
47115 return;
47116 }
47117 // Show entropy details
47118 showEntropyFeedback(entropy);
47119 // Use entropy hash if not using raw entropy
47120 var bits = entropy.binaryStr;
47121 var mnemonicLength = DOM.entropyMnemonicLength.val();
47122 if (mnemonicLength != "raw") {
47123 // Get bits by hashing entropy with SHA256
47124 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
47125 var hex = sjcl.codec.hex.fromBits(hash);
47126 bits = BigInteger.parse(hex, 16).toString(2);
47127 while (bits.length % 256 != 0) {
47128 bits = "0" + bits;
47129 }
47130 // Truncate hash to suit number of words
47131 mnemonicLength = parseInt(mnemonicLength);
47132 var numberOfBits = 32 * mnemonicLength / 3;
47133 bits = bits.substring(0, numberOfBits);
47134 }
47135 // Discard trailing entropy
47136 var bitsToUse = Math.floor(bits.length / 32) * 32;
47137 var start = bits.length - bitsToUse;
47138 var binaryStr = bits.substring(start);
47139 // Convert entropy string to numeric array
47140 var entropyArr = [];
47141 for (var i=0; i<binaryStr.length / 8; i++) {
47142 var byteAsBits = binaryStr.substring(i*8, i*8+8);
47143 var entropyByte = parseInt(byteAsBits, 2);
47144 entropyArr.push(entropyByte)
47145 }
47146 // Convert entropy array to mnemonic
47147 var phrase = mnemonic.toMnemonic(entropyArr);
47148 // Set the mnemonic in the UI
47149 DOM.phrase.val(phrase);
47150 }
47151
47152 function clearEntropyFeedback() {
47153 DOM.entropyCrackTime.text("...");
47154 DOM.entropyType.text("");
47155 DOM.entropyWordCount.text("0");
47156 DOM.entropyEventCount.text("0");
47157 DOM.entropyBitsPerEvent.text("0");
47158 DOM.entropyBits.text("0");
47159 DOM.entropyFiltered.html("&nbsp;");
47160 DOM.entropyBinary.html("&nbsp;");
47161 }
47162
47163 function showEntropyFeedback(entropy) {
47164 var numberOfBits = entropy.binaryStr.length;
47165 var timeToCrack = "unknown";
47166 try {
47167 var z = zxcvbn(entropy.base.parts.join(""));
47168 timeToCrack = z.crack_times_display.offline_fast_hashing_1e10_per_second;
47169 if (z.feedback.warning != "") {
47170 timeToCrack = timeToCrack + " - " + z.feedback.warning;
47171 };
47172 }
47173 catch (e) {
47174 console.log("Error detecting entropy strength with zxcvbn:");
47175 console.log(e);
47176 }
47177 var entropyTypeStr = getEntropyTypeStr(entropy);
47178 var wordCount = Math.floor(numberOfBits / 32) * 3;
47179 var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
47180 DOM.entropyFiltered.html(entropy.cleanHtml);
47181 DOM.entropyType.text(entropyTypeStr);
47182 DOM.entropyCrackTime.text(timeToCrack);
47183 DOM.entropyEventCount.text(entropy.base.ints.length);
47184 DOM.entropyBits.text(numberOfBits);
47185 DOM.entropyWordCount.text(wordCount);
47186 DOM.entropyBinary.text(entropy.binaryStr);
47187 DOM.entropyBitsPerEvent.text(bitsPerEvent);
47188 }
47189
47190 function getEntropyTypeStr(entropy) {
47191 var typeStr = entropy.base.str;
47192 // Add some detail if these are cards
47193 if (entropy.base.asInt == 52) {
47194 var cardDetail = []; // array of message strings
47195 // Detect duplicates
47196 var dupes = [];
47197 var dupeTracker = {};
47198 for (var i=0; i<entropy.base.parts.length; i++) {
47199 var card = entropy.base.parts[i];
47200 var cardUpper = card.toUpperCase();
47201 if (cardUpper in dupeTracker) {
47202 dupes.push(card);
47203 }
47204 dupeTracker[cardUpper] = true;
47205 }
47206 if (dupes.length > 0) {
47207 var dupeWord = "duplicates";
47208 if (dupes.length == 1) {
47209 dupeWord = "duplicate";
47210 }
47211 var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" ");
47212 if (dupes.length > 3) {
47213 msg += "...";
47214 }
47215 cardDetail.push(msg);
47216 }
47217 // Detect full deck
47218 var uniqueCards = [];
47219 for (var uniqueCard in dupeTracker) {
47220 uniqueCards.push(uniqueCard);
47221 }
47222 if (uniqueCards.length == 52) {
47223 cardDetail.unshift("full deck");
47224 }
47225 // Detect missing cards
47226 var values = "A23456789TJQK";
47227 var suits = "CDHS";
47228 var missingCards = [];
47229 for (var i=0; i<suits.length; i++) {
47230 for (var j=0; j<values.length; j++) {
47231 var card = values[j] + suits[i];
47232 if (!(card in dupeTracker)) {
47233 missingCards.push(card);
47234 }
47235 }
47236 }
47237 // Display missing cards if six or less, ie clearly going for full deck
47238 if (missingCards.length > 0 && missingCards.length <= 6) {
47239 var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" ");
47240 if (missingCards.length > 3) {
47241 msg += "...";
47242 }
47243 cardDetail.push(msg);
47244 }
47245 // Add card details to typeStr
47246 if (cardDetail.length > 0) {
47247 typeStr += " (" + cardDetail.join(", ") + ")";
47248 }
47249 }
47250 return typeStr;
47251 }
47252
47253 function setQrEvents(els) {
47254 els.on("mouseenter", createQr);
47255 els.on("mouseleave", destroyQr);
47256 els.on("click", toggleQr);
47257 }
47258
47259 function createQr(e) {
47260 var content = e.target.textContent || e.target.value;
47261 if (content) {
47262 var size = 130;
47263 DOM.qrImage.qrcode({width: size, height: size, text: content});
47264 if (!showQr) {
47265 DOM.qrHider.addClass("hidden");
47266 }
47267 else {
47268 DOM.qrHider.removeClass("hidden");
47269 }
47270 DOM.qrContainer.removeClass("hidden");
47271 }
47272 }
47273
47274 function destroyQr() {
47275 DOM.qrImage.text("");
47276 DOM.qrContainer.addClass("hidden");
47277 }
47278
47279 function toggleQr() {
47280 showQr = !showQr;
47281 DOM.qrHider.toggleClass("hidden");
47282 DOM.qrHint.toggleClass("hidden");
47283 }
47284
47285 function bip44TabSelected() {
47286 return DOM.bip44tab.hasClass("active");
47287 }
47288
47289 function bip32TabSelected() {
47290 return DOM.bip32tab.hasClass("active");
47291 }
47292
47293 function useP2wpkhNestedInP2sh() {
47294 return DOM.useP2wpkhNestedInP2sh.prop("checked");
47295 }
47296
47297 function networkHasBip49() {
47298 return networks[DOM.network.val()].p2wpkhNestedInP2shAvailable;
47299 }
47300
47301 function bip49TabSelected() {
47302 return DOM.bip49tab.hasClass("active");
47303 }
47304
47305 function setHdCoin(coinValue) {
47306 DOM.bip44coin.val(coinValue);
47307 DOM.bip49coin.val(coinValue);
47308 }
47309
47310 function showP2wpkhNestedInP2shAvailable() {
47311 DOM.bip49unavailable.addClass("hidden");
47312 DOM.bip49available.removeClass("hidden");
47313 DOM.useP2wpkhNestedInP2sh.prop("disabled", false);
47314 }
47315
47316 function showP2wpkhNestedInP2shUnavailable() {
47317 DOM.bip49available.addClass("hidden");
47318 DOM.bip49unavailable.removeClass("hidden");
47319 DOM.useP2wpkhNestedInP2sh.prop("disabled", true);
47320 DOM.useP2wpkhNestedInP2sh.prop("checked", false);
47321 }
47322
47323 var networks = [
47324 {
47325 name: "BCH - Bitcoin Cash",
47326 p2wpkhNestedInP2shAvailable: false,
47327 onSelect: function() {
47328 network = bitcoinjs.bitcoin.networks.bitcoin;
47329 setHdCoin(145);
47330 },
47331 },
47332 {
47333 name: "BTC - Bitcoin",
47334 p2wpkhNestedInP2shAvailable: true,
47335 onSelect: function() {
47336 network = bitcoinjs.bitcoin.networks.bitcoin;
47337 setHdCoin(0);
47338 },
47339 },
47340 {
47341 name: "BTC - Bitcoin Testnet",
47342 p2wpkhNestedInP2shAvailable: true,
47343 onSelect: function() {
47344 network = bitcoinjs.bitcoin.networks.testnet;
47345 setHdCoin(1);
47346 },
47347 },
47348 {
47349 name: "CLAM - Clams",
47350 p2wpkhNestedInP2shAvailable: false,
47351 onSelect: function() {
47352 network = bitcoinjs.bitcoin.networks.clam;
47353 setHdCoin(23);
47354 },
47355 },
47356 {
47357 name: "CRW - Crown",
47358 p2wpkhNestedInP2shAvailable: false,
47359 onSelect: function() {
47360 network = bitcoinjs.bitcoin.networks.crown;
47361 setHdCoin(72);
47362 },
47363 },
47364 {
47365 name: "DASH - Dash",
47366 p2wpkhNestedInP2shAvailable: false,
47367 onSelect: function() {
47368 network = bitcoinjs.bitcoin.networks.dash;
47369 setHdCoin(5);
47370 },
47371 },
47372 {
47373 name: "DASH - Dash Testnet",
47374 p2wpkhNestedInP2shAvailable: false,
47375 onSelect: function() {
47376 network = bitcoinjs.bitcoin.networks.dashtn;
47377 setHdCoin(1);
47378 },
47379 },
47380 {
47381 name: "DOGE - Dogecoin",
47382 p2wpkhNestedInP2shAvailable: false,
47383 onSelect: function() {
47384 network = bitcoinjs.bitcoin.networks.dogecoin;
47385 setHdCoin(3);
47386 },
47387 },
47388 {
47389 name: "ETH - Ethereum",
47390 p2wpkhNestedInP2shAvailable: false,
47391 onSelect: function() {
47392 network = bitcoinjs.bitcoin.networks.bitcoin;
47393 setHdCoin(60);
47394 },
47395 },
47396 {
47397 name: "GAME - GameCredits",
47398 p2wpkhNestedInP2shAvailable: false,
47399 onSelect: function() {
47400 network = bitcoinjs.bitcoin.networks.game;
47401 setHdCoin(101);
47402 },
47403 },
47404 {
47405 name: "JBS - Jumbucks",
47406 p2wpkhNestedInP2shAvailable: false,
47407 onSelect: function() {
47408 network = bitcoinjs.bitcoin.networks.jumbucks;
47409 setHdCoin(26);
47410 },
47411 },
47412 {
47413 name: "LTC - Litecoin",
47414 p2wpkhNestedInP2shAvailable: false,
47415 onSelect: function() {
47416 network = bitcoinjs.bitcoin.networks.litecoin;
47417 setHdCoin(2);
47418 DOM.litecoinLtubContainer.removeClass("hidden");
47419 },
47420 },
47421 {
47422 name: "MAZA - Maza",
47423 p2wpkhNestedInP2shAvailable: false,
47424 onSelect: function() {
47425 network = bitcoinjs.bitcoin.networks.maza;
47426 setHdCoin(13);
47427 },
47428 },
47429
47430 {
47431 name: "NMC - Namecoin",
47432 p2wpkhNestedInP2shAvailable: false,
47433 onSelect: function() {
47434 network = bitcoinjs.bitcoin.networks.namecoin;
47435 setHdCoin(7);
47436 },
47437 },
47438 {
47439 name: "PIVX - PIVX",
47440 p2wpkhNestedInP2shAvailable: false,
47441 onSelect: function() {
47442 network = bitcoinjs.bitcoin.networks.pivx;
47443 setHdCoin(119);
47444 },
47445 },
47446 {
47447 name: "PIVX - PIVX Testnet",
47448 p2wpkhNestedInP2shAvailable: false,
47449 onSelect: function() {
47450 network = bitcoinjs.bitcoin.networks.pivxtestnet;
47451 setHdCoin(1);
47452 },
47453 },
47454 {
47455 name: "PPC - Peercoin",
47456 p2wpkhNestedInP2shAvailable: false,
47457 onSelect: function() {
47458 network = bitcoinjs.bitcoin.networks.peercoin;
47459 setHdCoin(6);
47460 },
47461 },
47462 {
47463 name: "SDC - ShadowCash",
47464 p2wpkhNestedInP2shAvailable: false,
47465 onSelect: function() {
47466 network = bitcoinjs.bitcoin.networks.shadow;
47467 setHdCoin(35);
47468 },
47469 },
47470 {
47471 name: "SDC - ShadowCash Testnet",
47472 p2wpkhNestedInP2shAvailable: false,
47473 onSelect: function() {
47474 network = bitcoinjs.bitcoin.networks.shadowtn;
47475 setHdCoin(1);
47476 },
47477 },
47478 {
47479 name: "SLM - Slimcoin",
47480 p2wpkhNestedInP2shAvailable: false,
47481 onSelect: function() {
47482 network = bitcoinjs.bitcoin.networks.slimcoin;
47483 setHdCoin(63);
47484 },
47485 },
47486 {
47487 name: "SLM - Slimcoin Testnet",
47488 p2wpkhNestedInP2shAvailable: false,
47489 onSelect: function() {
47490 network = bitcoinjs.bitcoin.networks.slimcointn;
47491 setHdCoin(111);
47492 },
47493 },
47494 {
47495 name: "VIA - Viacoin",
47496 p2wpkhNestedInP2shAvailable: false,
47497 onSelect: function() {
47498 network = bitcoinjs.bitcoin.networks.viacoin;
47499 setHdCoin(14);
47500 },
47501 },
47502 {
47503 name: "VIA - Viacoin Testnet",
47504 p2wpkhNestedInP2shAvailable: false,
47505 onSelect: function() {
47506 network = bitcoinjs.bitcoin.networks.viacointestnet;
47507 setHdCoin(1);
47508 },
47509 },
47510 {
47511 name: "XMY - Myriadcoin",
47512 p2wpkhNestedInP2shAvailable: false,
47513 onSelect: function() {
47514 network = bitcoinjs.bitcoin.networks.myriadcoin;
47515 setHdCoin(90);
47516 },
47517 },
47518 {
47519 name: "XRP - Ripple",
47520 p2wpkhNestedInP2shAvailable: false,
47521 onSelect: function() {
47522 network = bitcoinjs.bitcoin.networks.bitcoin;
47523 setHdCoin(144);
47524 },
47525 }
47526 ]
47527
47528 var clients = [
47529 {
47530 name: "Bitcoin Core",
47531 onSelect: function() {
47532 DOM.bip32path.val("m/0'/0'");
47533 DOM.hardenedAddresses.prop('checked', true);
47534 },
47535 },
47536 {
47537 name: "blockchain.info",
47538 onSelect: function() {
47539 DOM.bip32path.val("m/44'/0'/0'");
47540 DOM.hardenedAddresses.prop('checked', false);
47541 },
47542 },
47543 {
47544 name: "MultiBit HD",
47545 onSelect: function() {
47546 DOM.bip32path.val("m/0'/0");
47547 DOM.hardenedAddresses.prop('checked', false);
47548 },
47549 }
47550 ]
47551
47552 init();
47553
47554 })();
47555 </script>
47556 </body>
47557 </html>