]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blob - bip39-standalone.html
bcf020c798b22d23dc669659ee48a6405a35fe7f
[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.1.0</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>Strength</label>
173 <div class="strength 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>Word Count</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 </form>
274 </div>
275 </div>
276
277 <hr>
278
279 <div class="row">
280 <div class="col-md-12">
281 <h2>Derivation Path</h2>
282 <ul class="derivation-type nav nav-tabs" role="tablist">
283 <li id="bip44-tab" class="active">
284 <a href="#bip44" role="tab" data-toggle="tab">BIP44</a>
285 </li>
286 <li id="bip32-tab">
287 <a href="#bip32" role="tab" data-toggle="tab">BIP32</a>
288 </li>
289 </ul>
290 <div class="derivation-type tab-content">
291 <div id="bip44" class="tab-pane active">
292 <form class="form-horizontal" role="form">
293 <br>
294 <div class="col-sm-2"></div>
295 <div class="col-sm-10">
296 <p data-translate-html>
297 For more info see the
298 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">BIP44 spec</a>.
299 </p>
300 </div>
301 <div class="form-group">
302 <label for="purpose" class="col-sm-2 control-label">
303 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
304 </label>
305 <div class="col-sm-10">
306 <input id="purpose" type="text" class="purpose form-control" value="44">
307 </div>
308 </div>
309 <div class="form-group">
310 <label for="coin" class="col-sm-2 control-label">
311 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
312 </label>
313 <div class="col-sm-10">
314 <input id="coin" type="text" class="coin form-control" value="0">
315 </div>
316 </div>
317 <div class="form-group">
318 <label for="account" class="col-sm-2 control-label">
319 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
320 </label>
321 <div class="col-sm-10">
322 <input id="account" type="text" class="account form-control" value="0">
323 </div>
324 </div>
325 <div class="form-group">
326 <label for="change" class="col-sm-2 control-label">
327 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
328 </label>
329 <div class="col-sm-10">
330 <input id="change" type="text" class="change form-control" value="0">
331 </div>
332 </div>
333 <div class="form-group">
334 <label class="col-sm-2 control-label">
335 </label>
336 <div class="col-sm-10">
337 <p data-translate>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.</p>
338 </div>
339 </div>
340 <div class="form-group">
341 <label for="account-xprv" class="col-sm-2 control-label">
342 <span data-translate>Account Extended Private Key</span>
343 </label>
344 <div class="col-sm-10">
345 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
346 </div>
347 </div>
348 <div class="form-group">
349 <label for="account-xpub" class="col-sm-2 control-label">
350 <span data-translate>Account Extended Public Key</span>
351 </label>
352 <div class="col-sm-10">
353 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
354 </div>
355 </div>
356 <div class="form-group">
357 <label class="col-sm-2 control-label">
358 </label>
359 <div class="col-sm-10">
360 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
361 </div>
362 </div>
363 <div class="form-group">
364 <label for="bip44-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
365 <div class="col-sm-10">
366 <input id="bip44-path" type="text" class="path form-control" value="m/44'/0'/0'/0" readonly="readonly">
367 </div>
368 </div>
369 </form>
370 </div>
371 <div id="bip32" class="tab-pane">
372 <form class="form-horizontal" role="form">
373 <br>
374 <div class="col-sm-2"></div>
375 <div class="col-sm-10">
376 <p data-translate>
377 For more info see the
378 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">BIP32 spec</a>
379 </p>
380 </div>
381 <div class="form-group">
382 <label for="bip32-client" class="col-sm-2 control-label" data-translate>Client</label>
383 <div class="col-sm-10">
384 <select id="bip32-client" class="client form-control">
385 <option value="custom">Custom derivation path</option>
386 <!-- populated by javascript -->
387 </select>
388 </div>
389 </div>
390 <div class="form-group">
391 <label for="bip32-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
392 <div class="col-sm-10">
393 <input id="bip32-path" type="text" class="path form-control" value="m/0">
394 </div>
395 </div>
396 <div class="form-group">
397 <div class="col-sm-2"></div>
398 <label class="col-sm-10">
399 <input class="hardened-addresses" type="checkbox">
400 <span data-translate>Use hardened addresses</span>
401 </label>
402 </div>
403 <div class="form-group">
404 <label for="core-path" class="col-sm-2 control-label" data-translate>Bitcoin Core</label>
405 <div class="col-sm-10">
406 <p class="form-control no-border" data-translate-html>
407 Use path <code>m/0'/0'</code> with hardened addresses.
408 </p>
409 <p class="form-control no-border" data-translate-html>
410 For more info see the
411 <a href="https://github.com/bitcoin/bitcoin/pull/8035" target="_blank">Bitcoin Core BIP32 implementation</a>
412 </p>
413 </div>
414 </div>
415 <div class="form-group">
416 <label for="core-path" class="col-sm-2 control-label" data-translate>Multibit</label>
417 <div class="col-sm-10">
418 <p class="form-control no-border">
419 <span data-translate-html>Use path <code>m/0'/0</code>.</span>
420 </p>
421 <p class="form-control no-border">
422 <span data-translate>For more info see</span>
423 <a href="https://multibit.org/" target="_blank">MultiBit HD</a>
424 </p>
425 </div>
426 </div>
427 <div class="form-group">
428 <label class="col-sm-2 control-label" data-translate>Block Explorers</label>
429 <div class="col-sm-10">
430 <p class="form-control no-border">
431 <span data-translate-html>Use path <code>m/44'/0'/0'</code>.</span>
432 <span data-translate-html>Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.</span>
433 </p>
434 <p class="form-control no-border">
435 <span data-translate>Can be used with</span>:
436 <a href="https://blockchain.info/" target="_blank">blockchain.info</a>
437 </p>
438 </div>
439 </div>
440 </form>
441 </div>
442 </div>
443 <form class="form-horizontal" role="form">
444 <div class="form-group">
445 <label for="extended-priv-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Private Key</label>
446 <div class="col-sm-10">
447 <textarea id="extended-priv-key" class="extended-priv-key form-control" readonly="readonly" data-show-qr></textarea>
448 </div>
449 </div>
450 <div class="form-group">
451 <label for="extended-pub-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Public Key</label>
452 <div class="col-sm-10">
453 <textarea id="extended-pub-key" class="extended-pub-key form-control" readonly="readonly" data-show-qr></textarea>
454 </div>
455 </div>
456 </form>
457 </div>
458 </div>
459
460 <hr>
461
462 <div class="row">
463 <div class="col-md-12">
464 <h2>Derived Addresses</h2>
465 <p data-translate>Note these addreses are derived from the BIP32 Extended Key</p>
466 <table class="table table-striped">
467 <thead>
468 <th>
469 <div class="input-group">
470 <span data-translate>Path</span>&nbsp;&nbsp;
471 <button class="index-toggle" data-translate>Toggle</button>
472 </div>
473 </th>
474 <th>
475 <div class="input-group">
476 <span data-translate>Address</span>&nbsp;&nbsp;
477 <button class="address-toggle" data-translate>Toggle</button>
478 </div>
479 </th>
480 <th>
481 <div class="input-group">
482 <span data-translate>Public Key</span>&nbsp;&nbsp;
483 <button class="public-key-toggle" data-translate>Toggle</button>
484 </div>
485 </th>
486 <th>
487 <div class="input-group">
488 <span data-translate>Private Key</span>&nbsp;&nbsp;
489 <button class="private-key-toggle" data-translate>Toggle</button>
490 </div>
491 </th>
492 </thead>
493 <tbody class="addresses monospace">
494 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
495 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
496 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
497 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
498 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
499 </tbody>
500 </table>
501 </div>
502 </div>
503 <span data-translate>Show more rows</span>:
504 <input type="number" class="rows-to-add" value="20">
505 <button class="more" data-translate>Show</button>
506
507 <hr>
508
509 <div class="row">
510 <div class="col-md-12">
511 <h2 data-translate>More info</h2>
512 <h3>BIP39 <span class="small" data-translate>Mnemonic code for generating deterministic keys</span></h3>
513 <p data-translate-html>
514 Read more at the
515 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a>
516 </p>
517 <h3>BIP32 <span class="small" data-translate>Hierarchical Deterministic Wallets</span></h3>
518 <p data-translate-html>
519 Read more at the
520 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a>
521 </p>
522 <p data-translate-html>
523 See the demo at
524 <a href="http://bip32.org/" target="_blank">bip32.org</a>
525 </p>
526 <h3>BIP44 <span class="small" data-translate>Multi-Account Hierarchy for Deterministic Wallets</span></h3>
527 <p data-translate-html>
528 Read more at the
529 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a>
530 </p>
531 <h3 data-translate>Private Keys</h3>
532 <p>
533 <span data-translate-html>
534 Use private keys at
535 <a href="https://web.archive.org/web/20150707020924/https://brainwallet.org/" target="_blank">brainwallet.org</a>.
536 </span>
537 <span data-translate>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span>
538 </p>
539 <h3 id="entropy-notes" data-translate>Entropy</h3>
540 <p>
541 <span data-translate-html>
542 Entropy values must be sourced from a
543 <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>.
544 </span>
545 <span data-translate>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span>
546 <span data-translate-html>
547 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address,
548 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't
549 random enough for the needs of this tool.
550 </span>
551 </p>
552 <p>
553 <strong><span data-translate>Do not store entropy.</span></strong>
554 </p>
555 <p>
556 <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>
557 <span data-translate>Instead of storing entropy, store the mnemonic generated from the entropy.</span>
558 <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>
559 </p>
560 <p>
561 <span data-translate-html>
562 The random mnemonic generator on this page uses a
563 <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>.
564 </span>
565 <span data-translate>The built in random generator can generally be trusted more than your own intuition about randomness.</span>
566 <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>
567 <span data-translate>In that case you might choose to use your own source of entropy.</span>
568 </p>
569 <p>
570 <a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank" data-translate>You are not a good source of entropy.</a>
571 </p>
572 <h3 data-translate>License</h3>
573 <p>
574 <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.
575 </span>
576 </p>
577 <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>
578 </div>
579 </div>
580
581 <hr>
582
583 <div class="row">
584 <div class="col-md-12">
585
586 <h2 data-translate>Offline Usage</h2>
587
588 <p data-translate>
589 You can use this tool without having to be online.
590 </p>
591 <p data-translate>
592 In your browser, select file save-as, and save this page
593 as a file.
594 </p>
595 <p data-translate>
596 Double-click that file to open it in a browser
597 on any offline computer.
598 </p>
599 <p>
600 <span data-translate>Alternatively, download the file from the repository</span>
601 -
602 <a href="https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39</a>
603 </p>
604
605 </div>
606 </div>
607
608 <hr>
609
610 <div class="row">
611 <div class="col-md-12">
612
613 <h2 data-translate>This project is 100% open-source code</h2>
614
615 <p>
616 <span data-translate>Get the source code from the repository</span>
617 -
618 <a href="https://github.com/iancoleman/bip39" target="_blank">
619 https://github.com/iancoleman/bip39
620 </a>
621 </p>
622
623 <h3 data-translate>Libraries</h3>
624
625 <p>
626 <span>BitcoinJS - </span>
627 <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank">
628 https://github.com/bitcoinjs/bitcoinjs-lib
629 </a>
630 </p>
631
632 <p>
633 <span>jsBIP39 - </span>
634 <a href="https://github.com/iancoleman/jsbip39" target="_blank">
635 https://github.com/iancoleman/jsbip39
636 </a>
637 </p>
638
639 <p>
640 <span>sjcl - </span>
641 <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank">
642 https://github.com/bitwiseshiftleft/sjcl
643 </a>
644 </p>
645
646 <p>
647 <span>jQuery - </span>
648 <a href="https://jquery.com/" target="_blank">
649 https://jquery.com/
650 </a>
651 </p>
652
653 <p>
654 <span>Twitter Bootstrap - </span>
655 <a href="http://getbootstrap.com/" target="_blank">
656 http://getbootstrap.com/
657 </a>
658 </p>
659
660 </div>
661 </div>
662
663 </div>
664
665 <div class="qr-container hidden">
666 <div class="qr-hint bg-primary hidden" data-translate>Click field to hide QR</div>
667 <div class="qr-hint bg-primary" data-translate>Click field to show QR</div>
668 <div class="qr-hider hidden">
669 <div class="qr-image"></div>
670 <div class="qr-warning bg-primary" data-translate>Caution: Scanner may keep history</div>
671 </div>
672 </div>
673
674 <div class="feedback-container">
675 <div class="feedback">Loading...</div>
676 </div>
677
678 <script type="text/template" id="address-row-template">
679 <tr>
680 <td class="index"><span></span></td>
681 <td class="address"><span data-show-qr></span></td>
682 <td class="pubkey"><span data-show-qr></span></td>
683 <td class="privkey"><span data-show-qr></span></td>
684 </tr>
685 </script>
686 <script>// From
687 // https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
688 // Required for ethereumjs-utils.js when run in phantomjs-2.1.1
689 // but is not required in any modern browsers.
690 // For more information, see
691 // https://www.bountysource.com/issues/38485709-error-rendering-plot-with-phantomjs
692
693 //----------------------------------------------------------------------
694 //
695 // ECMAScript 2015 Polyfills
696 //
697 //----------------------------------------------------------------------
698
699 (function (global) {
700 "use strict";
701
702 // Set this to always override native implementations, for testing
703 // the polyfill in browsers with partial/full ES2015 support.
704 var OVERRIDE_NATIVE_FOR_TESTING = false;
705
706 var undefined = (void 0); // Paranoia
707
708 // Helpers
709
710 function strict(o) {
711 return o === global ? undefined : o;
712 }
713
714 function hook(o, p, f) {
715 var op = o[p];
716 console.assert(typeof op === 'function', 'Hooking a non-function');
717 o[p] = function() {
718 var o = strict(this);
719 var r = f.apply(o, arguments);
720 return r !== undefined ? r : op.apply(o, arguments);
721 };
722 }
723
724 function isSymbol(s) {
725 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
726 }
727
728 function getPropertyDescriptor(target, name) {
729 var desc = Object.getOwnPropertyDescriptor(target, name);
730 var proto = Object.getPrototypeOf(target);
731 while (!desc && proto) {
732 desc = Object.getOwnPropertyDescriptor(proto, name);
733 proto = Object.getPrototypeOf(proto);
734 }
735 return desc;
736 }
737
738 var enqueue = (function(nativePromise, nativeSetImmediate) {
739 if (nativePromise)
740 return function(job) { nativePromise.resolve().then(function() { job(); }); };
741 if (nativeSetImmediate)
742 return function(job) { nativeSetImmediate(job); };
743 return function(job) { setTimeout(job, 0); };
744 }(global['Promise'], global['setImmediate']));
745
746 function define(o, p, v, override) {
747 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
748 return;
749
750 if (typeof v === 'function') {
751 // Sanity check that functions are appropriately named (where possible)
752 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
753 Object.defineProperty(o, p, {
754 value: v,
755 configurable: true,
756 enumerable: false,
757 writable: true
758 });
759 } else {
760 Object.defineProperty(o, p, {
761 value: v,
762 configurable: false,
763 enumerable: false,
764 writable: false
765 });
766 }
767 }
768
769 function set_internal(o, p, v) {
770 Object.defineProperty(o, p, {
771 value: v,
772 configurable: false,
773 enumerable: false,
774 writable: true
775 });
776 }
777
778 // Snapshot intrinsic functions
779 var $isNaN = global.isNaN,
780 $parseInt = global.parseInt,
781 $parseFloat = global.parseFloat;
782
783 var E = Math.E,
784 LOG10E = Math.LOG10E,
785 LOG2E = Math.LOG2E,
786 abs = Math.abs,
787 ceil = Math.ceil,
788 exp = Math.exp,
789 floor = Math.floor,
790 log = Math.log,
791 max = Math.max,
792 min = Math.min,
793 pow = Math.pow,
794 random = Math.random,
795 sqrt = Math.sqrt;
796
797 var orig_match = String.prototype.match,
798 orig_replace = String.prototype.replace,
799 orig_search = String.prototype.search,
800 orig_split = String.prototype.split;
801
802 // These are used for implementing the polyfills, but not exported.
803
804 // Inspired by https://gist.github.com/1638059
805 /** @constructor */
806 function EphemeronTable() {
807 var secretKey = ObjectCreate(null);
808
809 function conceal(o) {
810 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
811 Object.defineProperty(o, 'valueOf', {
812 value: (function(secretKey) {
813 return function (k) {
814 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
815 };
816 }(secretKey)),
817 configurable: true,
818 writeable: true,
819 enumerable: false
820 });
821 return secrets;
822 }
823
824 function reveal(o) {
825 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
826 return v === o ? null : v;
827 }
828
829 return {
830 clear: function() {
831 secretKey = ObjectCreate(null);
832 },
833 remove: function(key) {
834 var secrets = reveal(key);
835 if (secrets && HasOwnProperty(secrets, 'value')) {
836 delete secrets.value;
837 return true;
838 }
839 return false;
840 },
841 get: function(key, defaultValue) {
842 var secrets = reveal(key);
843 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
844 },
845 has: function(key) {
846 var secrets = reveal(key);
847 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
848 },
849 set: function(key, value) {
850 var secrets = reveal(key) || conceal(key);
851 secrets.value = value;
852 }
853 };
854 }
855
856 var empty = Object.create(null);
857
858 //----------------------------------------------------------------------
859 //
860 // ECMAScript 2015
861 // http://www.ecma-international.org/ecma-262/6.0/
862 //
863 //----------------------------------------------------------------------
864
865 // ---------------------------------------
866 // 19.4 Symbol Objects
867 // ---------------------------------------
868
869 // NOTE: Symbols are defined here - out of spec order - since we need the
870 // properties and prototype to be populated for other polyfills.
871
872 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
873
874 var symbolForKey;
875 (function() {
876 var secret = Object.create(null);
877 var symbolMap = {};
878 symbolForKey = function(k) {
879 return symbolMap[k];
880 };
881
882 var GlobalSymbolRegistry = [];
883
884 function unique(bits) {
885 return Array(bits + 1).join('x').replace(/x/g, function() {
886 return random() < 0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
887 });
888 }
889
890 // 19.4.1 The Symbol Constructor
891 // 19.4.1.1 Symbol ( description=undefined )
892 function Symbol(description) {
893 if (!(this instanceof Symbol)) return new Symbol(description, secret);
894 if (this instanceof Symbol && arguments[1] !== secret) throw TypeError();
895
896 var descString = description === undefined ? undefined : String(description);
897
898 set_internal(this, '[[SymbolData]]', unique(128));
899 set_internal(this, '[[Description]]', descString);
900
901 symbolMap[this] = this;
902 return this;
903 }
904
905 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
906 global.Symbol = Symbol;
907
908 // 19.4.2 Properties of the Symbol Constructor
909
910 // 19.4.2.1 Symbol.for (key)
911 define(Symbol, 'for', function for_(key) {
912 var stringKey = String(key);
913 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
914 var e = GlobalSymbolRegistry[i];
915 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
916 }
917 var newSymbol = Symbol(key);
918 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
919 return newSymbol;
920 });
921
922 // 19.4.2.2 Symbol.hasInstance
923 // 19.4.2.3 Symbol.isConcatSpreadable
924
925 // 19.4.2.4 Symbol.iterator
926 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
927
928 // 19.4.2.5 Symbol.keyFor (sym)
929 define(Symbol, 'keyFor', function keyFor(sym) {
930 if (!(sym instanceof Symbol)) throw TypeError();
931 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
932 var e = GlobalSymbolRegistry[i];
933 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
934 }
935 return undefined;
936 });
937
938 // 19.4.2.6 Symbol.match
939 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
940
941 // 19.4.2.7 Symbol.prototype
942
943 // 19.4.2.8 Symbol.replace
944 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
945
946 // 19.4.2.9 Symbol.search
947 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
948
949 // 19.4.2.10 Symbol.species
950
951 // 19.4.2.11 Symbol.search
952 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
953
954 // 19.4.2.12 Symbol.toPrimitive
955
956 // 19.4.2.13 Symbol.toStringTag
957 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
958
959 // 19.4.2.14 Symbol.unscopables
960
961 // 19.4.3 Properties of the Symbol Prototype Object
962 // 19.4.3.1 Symbol.prototype.constructor
963
964 // 19.4.3.2 Symbol.prototype.toString ( )
965 Object.defineProperty(Symbol.prototype, 'toString', {
966 value: function toString() {
967 var s = strict(this);
968 var desc = s['[[Description]]'];
969 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
970 },
971 configurable: true, writeable: true, enumerable: false });
972
973 // 19.4.3.3 Symbol.prototype.valueOf ( )
974 Object.defineProperty(Symbol.prototype, 'valueOf', {
975 value: function valueOf() {
976 // To prevent automatic string conversion:
977 throw TypeError();
978
979 // Spec has approximately the following:
980 //var s = strict(this);
981 //if (Type(s) === 'symbol') return s;
982 //if (Type(s) !== 'object') throw TypeError();
983 //if (!('[[SymbolData]]' in s)) throw TypeError();
984 //return s['[[SymbolData]]'];
985 },
986 configurable: true, writeable: true, enumerable: false });
987
988 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
989 // (Done later to polyfill partial implementations)
990
991 // 19.4.4 Properties of Symbol Instances
992 }());
993
994 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
995
996 // Defined here so that other prototypes can reference it
997 // 25.1.2 The %IteratorPrototype% Object
998 var $IteratorPrototype$ = {};
999
1000 //----------------------------------------
1001 // 6 ECMAScript Data Types and Values
1002 //----------------------------------------
1003
1004 // 6.1 ECMAScript Language Types
1005
1006 // "Type(x)" is used as shorthand for "the type of x"...
1007 function Type(v) {
1008 switch (typeof v) {
1009 case 'undefined': return 'undefined';
1010 case 'boolean': return 'boolean';
1011 case 'number': return 'number';
1012 case 'string': return 'string';
1013 case 'symbol': return 'symbol';
1014 default:
1015 if (v === null) return 'null';
1016 if (v instanceof global.Symbol) return 'symbol';
1017 return 'object';
1018 }
1019 }
1020
1021 // 6.1.5.1 Well-Known Symbols
1022 var $$iterator = global.Symbol.iterator,
1023 $$match = global.Symbol.match,
1024 $$replace = global.Symbol.replace,
1025 $$search = global.Symbol.search,
1026 $$split = global.Symbol.split,
1027 $$toStringTag = global.Symbol.toStringTag;
1028
1029 //----------------------------------------
1030 // 7 Abstract Operations
1031 //----------------------------------------
1032
1033 //----------------------------------------
1034 // 7.1 Type Conversion
1035 //----------------------------------------
1036
1037 // 7.1.1 ToPrimitive ( input [, PreferredType] )
1038 // just use valueOf()
1039
1040 // 7.1.2 ToBoolean ( argument )
1041 // just use Boolean()
1042
1043 // 7.1.3 ToNumber ( argument )
1044 // just use Number()
1045
1046 // 7.1.4 ToInteger ( argument )
1047 function ToInteger(n) {
1048 n = Number(n);
1049 if ($isNaN(n)) return 0;
1050 if (n === 0 || n === Infinity || n === -Infinity) return n;
1051 return ((n < 0) ? -1 : 1) * floor(abs(n));
1052 }
1053
1054 // 7.1.5 ToInt32 ( argument )
1055 function ToInt32(v) { return v >> 0; }
1056
1057 // 7.1.6 ToUint32 ( argument )
1058 function ToUint32(v) { return v >>> 0; }
1059
1060 // 7.1.7 ToInt16 ( argument )
1061 function ToInt16(v) { return (v << 16) >> 16; }
1062
1063 // 7.1.8 ToUint16 ( argument )
1064 function ToUint16(v) { return v & 0xFFFF; }
1065
1066 // 7.1.9 ToInt8 ( argument )
1067 function ToInt8(v) { return (v << 24) >> 24; }
1068
1069 // 7.1.10 ToUint8 ( argument )
1070 function ToUint8(v) { return v & 0xFF; }
1071
1072 // 7.1.11 ToUint8Clamp ( argument )
1073 function ToUint8Clamp(argument) {
1074 var number = Number(argument);
1075 if ($isNaN(number)) return 0;
1076 if (number <= 0) return 0;
1077 if (number >= 255) return 255;
1078 var f = floor(number);
1079 if ((f + 0.5) < number) return f + 1;
1080 if (number < (f + 0.5)) return f;
1081 if (f % 2) return f + 1;
1082 return f;
1083 }
1084
1085 // 7.1.12 ToString ( argument )
1086 // just use String()
1087
1088 // 7.1.13 ToObject ( argument )
1089 function ToObject(v) {
1090 if (v === null || v === undefined) throw TypeError();
1091 return Object(v);
1092 }
1093
1094 // 7.1.14 ToPropertyKey ( argument )
1095 function ToPropertyKey(v) {
1096 return String(v);
1097 }
1098
1099 // 7.1.15 ToLength ( argument )
1100 function ToLength(v) {
1101 var len = ToInteger(v);
1102 if (len <= 0) return 0;
1103 if (len === Infinity) return 0x20000000000000 - 1; // 2^53-1
1104 return min(len, 0x20000000000000 - 1); // 2^53-1
1105 }
1106
1107 // 7.1.16 CanonicalNumericIndexString ( argument )
1108
1109 //----------------------------------------
1110 // 7.2 Testing and Comparison Operations
1111 //----------------------------------------
1112
1113 // 7.2.1 RequireObjectCoercible ( argument )
1114 // 7.2.2 IsArray ( argument )
1115
1116 // 7.2.3 IsCallable ( argument )
1117 function IsCallable(o) { return typeof o === 'function'; }
1118
1119 // 7.2.4 IsConstructor ( argument )
1120 function IsConstructor(o) {
1121 // Hacks for Safari 7 TypedArray XXXConstructor objects
1122 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1123 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1124 // TODO: Can this be improved on?
1125 return typeof o === 'function';
1126 }
1127
1128 // 7.2.5 IsExtensible (O)
1129 // 7.2.6 IsInteger ( argument )
1130
1131 // 7.2.7 IsPropertyKey ( argument )
1132 function IsPropertyKey(argument) {
1133 if (Type(argument) === 'string') return true;
1134 if (Type(argument) === 'symbol') return true;
1135 return false;
1136 }
1137
1138 // 7.2.8 IsRegExp ( argument )
1139 // 7.2.5 IsConstructor ( argument )
1140
1141 // 7.2.9 SameValue(x, y)
1142 function SameValue(x, y) {
1143 if (typeof x !== typeof y) return false;
1144 switch (typeof x) {
1145 case 'undefined':
1146 return true;
1147 case 'number':
1148 if (x !== x && y !== y) return true;
1149 if (x === 0 && y === 0) return 1/x === 1/y;
1150 return x === y;
1151 case 'boolean':
1152 case 'string':
1153 case 'object':
1154 default:
1155 return x === y;
1156 }
1157 }
1158
1159 // 7.2.10 SameValueZero(x, y)
1160 function SameValueZero(x, y) {
1161 if (typeof x !== typeof y) return false;
1162 switch (typeof x) {
1163 case 'undefined':
1164 return true;
1165 case 'number':
1166 if (x !== x && y !== y) return true;
1167 return x === y;
1168 case 'boolean':
1169 case 'string':
1170 case 'object':
1171 default:
1172 return x === y;
1173 }
1174 }
1175
1176 //----------------------------------------
1177 // 7.3 Operations on Objects
1178 //----------------------------------------
1179
1180 // 7.3.1 Get (O, P)
1181 // - just use o.p or o[p]
1182
1183 // 7.3.2 GetV (V, P)
1184 function GetV(v, p) {
1185 var o = ToObject(v);
1186 return o[p];
1187 }
1188
1189 // 7.3.3 Set (O, P, V, Throw)
1190 // - just use o.p = v or o[p] = v
1191
1192
1193
1194
1195 // 7.3.9 GetMethod (O, P)
1196 function GetMethod(o, p) {
1197 var func = GetV(o, p);
1198 if (func === undefined || func === null) return undefined;
1199 if (!IsCallable(func)) throw TypeError();
1200 return func;
1201 }
1202
1203 // 7.3.10 HasProperty (O, P)
1204 function HasProperty(o, p) {
1205 while (o) {
1206 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1207 if (Type(o) !== 'object') return false;
1208 o = Object.getPrototypeOf(o);
1209 }
1210 return false;
1211 }
1212
1213 // 7.3.11 HasOwnProperty (O, P)
1214 function HasOwnProperty(o, p) {
1215 return Object.prototype.hasOwnProperty.call(o, p);
1216 }
1217
1218 //----------------------------------------
1219 // 7.4 Operations on Iterator Objects
1220 //----------------------------------------
1221
1222 // 7.4.1 GetIterator ( obj, method )
1223 function GetIterator(obj, method) {
1224 if (arguments.length < 2)
1225 method = GetMethod(obj, $$iterator);
1226 var iterator = method.call(obj);
1227 if (Type(iterator) !== 'object') throw TypeError();
1228 return iterator;
1229 }
1230
1231 // 7.4.2 IteratorNext ( iterator, value )
1232 function IteratorNext(iterator, value) {
1233 if (arguments.length < 2)
1234 var result = iterator.next();
1235 else
1236 result = iterator.next(value);
1237 if (Type(result) !== 'object') throw TypeError();
1238 return result;
1239 }
1240
1241 // 7.4.3 IteratorComplete ( iterResult )
1242 function IteratorComplete(iterResult) {
1243 console.assert(Type(iterResult) === 'object');
1244 return Boolean(iterResult.done);
1245 }
1246
1247 // 7.4.4 IteratorValue ( iterResult )
1248 function IteratorValue(iterResult) {
1249 console.assert(Type(iterResult) === 'object');
1250 return iterResult.value;
1251 }
1252
1253 // 7.4.5 IteratorStep ( iterator )
1254 function IteratorStep( iterator, value ) {
1255 var result = IteratorNext(iterator, value);
1256 var done = result['done'];
1257 if (Boolean(done) === true) return false;
1258 return result;
1259 }
1260
1261 // 7.4.6 IteratorClose( iterator, completion )
1262 function IteratorClose( iterator, completion ) {
1263 console.assert(Type(iterator) === 'object');
1264 var _return = GetMethod(iterator, 'return');
1265 if (_return === undefined) return completion;
1266 try {
1267 var innerResult = _return[iterator]();
1268 } catch (result) {
1269 // TODO: If completion.[[type]] is throw, return completion
1270 return result;
1271 }
1272 if (Type(innerResult) !== 'object') throw TypeError();
1273 return completion;
1274 }
1275
1276 // 7.4.7 CreateIterResultObject (value, done)
1277 function CreateIterResultObject(value, done) {
1278 console.assert(Type(done) === 'boolean');
1279 var obj = {};
1280 obj["value"] = value;
1281 obj["done"] = done;
1282 return obj;
1283 }
1284
1285 // 7.4.8 CreateListIterator (list)
1286 // 7.4.8.1 ListIterator next( )
1287 // 7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1288 // 7.4.9.1 CompoundIterator next( )
1289
1290 //----------------------------------------
1291 // 8 Executable Code and Execution Contexts
1292 //----------------------------------------
1293
1294 //----------------------------------------
1295 // 8.4 Jobs and Job Queues
1296 //----------------------------------------
1297
1298 // 8.4.1 EnqueueJob ( queueName, job, arguments)
1299 function EnqueueJob(queueName, job, args) {
1300 var fn = function() { job.apply(undefined, args); };
1301 enqueue(fn);
1302 }
1303
1304 // 8.4.2 NextJob result
1305 function NextJob(result) {
1306 // no-op
1307 }
1308
1309 //----------------------------------------
1310 // 9 Ordinary and Exotic Objects Behaviors
1311 //----------------------------------------
1312
1313 // 9.1.11 [[Enumerate]] ()
1314 function Enumerate(obj) {
1315 var e = [];
1316 if (Object(obj) !== obj) return e;
1317 var visited = new Set;
1318 while (obj !== null) {
1319 Object.getOwnPropertyNames(obj).forEach(function(name) {
1320 if (!visited.has(name)) {
1321 var desc = Object.getOwnPropertyDescriptor(obj, name);
1322 if (desc) {
1323 visited.add(name);
1324 if (desc.enumerable) e.push(name);
1325 }
1326 }
1327 });
1328 obj = Object.getPrototypeOf(obj);
1329 }
1330 return e[$$iterator]();
1331 }
1332
1333 // 9.1.12 [[OwnPropertyKeys]] ( )
1334 function OwnPropertyKeys(o) {
1335 return Object.getOwnPropertyNames(o);
1336 }
1337
1338 // 9.1.13 ObjectCreate(proto, internalSlotsList)
1339 function ObjectCreate(proto, internalSlotsList) {
1340 return Object.create(proto, internalSlotsList);
1341 }
1342
1343 // ---------------------------------------
1344 // 19 Fundamental Objects
1345 // ---------------------------------------
1346
1347 // ---------------------------------------
1348 // 19.1 Object Objects
1349 // ---------------------------------------
1350
1351 // 19.1.1 The Object Constructor
1352 // 19.1.1.1 Object ( [ value ] )
1353 // 19.1.2 Properties of the Object Constructor
1354 // 19.1.2.1 Object.assign ( target, ...sources )
1355 define(
1356 Object, 'assign',
1357 function assign(target, /*...*/sources) {
1358 var to = ToObject(target);
1359 if (arguments.length < 2) return to;
1360
1361 var sourcesIndex = 1;
1362 while (sourcesIndex < arguments.length) {
1363 var nextSource = arguments[sourcesIndex++];
1364 if (nextSource === undefined || nextSource === null) {
1365 var keys = [];
1366 } else {
1367 var from = ToObject(nextSource);
1368 keys = OwnPropertyKeys(from);
1369 }
1370 for (var keysIndex = 0; keysIndex < keys.length; ++keysIndex) {
1371 var nextKey = keys[keysIndex];
1372 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1373 if (desc !== undefined && desc.enumerable) {
1374 var propValue = from[nextKey];
1375 to[nextKey] = propValue;
1376 }
1377 }
1378 }
1379 return to;
1380 });
1381
1382 // 19.1.2.2 Object.create ( O [ , Properties ] )
1383 // 19.1.2.3 Object.defineProperties ( O, Properties )
1384 // 19.1.2.4 Object.defineProperty ( O, P, Attributes )
1385 // 19.1.2.5 Object.freeze ( O )
1386 // 19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1387
1388 (function() {
1389 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1390 $getOwnPropertyNames = Object.getOwnPropertyNames,
1391 $keys = Object.keys,
1392 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1393
1394 function isStringKey(k) { return !symbolForKey(k); }
1395
1396 // 19.1.2.7 Object.getOwnPropertyNames ( O )
1397 define(
1398 Object, 'getOwnPropertyNames',
1399 function getOwnPropertyNames(o) {
1400 if (Object.prototype.toString.call(o) === '[object Window]') {
1401 // Workaround for cross-realm calling by IE itself.
1402 // https://github.com/inexorabletash/polyfill/issues/96
1403 try {
1404 return $getOwnPropertyNames(o).filter(isStringKey);
1405 } catch (_) {
1406 return $window_names.slice();
1407 }
1408 }
1409 return $getOwnPropertyNames(o).filter(isStringKey);
1410 }, !nativeSymbols);
1411
1412 // 19.1.2.8 Object.getOwnPropertySymbols ( O )
1413 define(
1414 Object, 'getOwnPropertySymbols',
1415 function getOwnPropertySymbols(o) {
1416 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1417 }, !nativeSymbols);
1418
1419 // 19.1.2.14 Object.keys ( O )
1420 define(
1421 Object, 'keys',
1422 function keys(o) {
1423 return $keys(o).filter(isStringKey);
1424 }, !nativeSymbols);
1425 }());
1426
1427 // 19.1.2.9 Object.getPrototypeOf ( O )
1428 // 19.1.2.10 Object.is ( value1, value2 )
1429 define(
1430 Object, 'is',
1431 function is(value1, value2) {
1432 return SameValue(value1, value2);
1433 });
1434
1435 // 19.1.2.11 Object.isExtensible ( O )
1436 // 19.1.2.12 Object.isFrozen ( O )
1437 // 19.1.2.13 Object.isSealed ( O )
1438
1439 // 19.1.2.14 Object.keys ( O )
1440 // see above
1441
1442 // 19.1.2.15 Object.preventExtensions ( O )
1443 // 19.1.2.16 Object.prototype
1444 // 19.1.2.17 Object.seal ( O )
1445
1446 // 19.1.2.18 Object.setPrototypeOf ( O, proto )
1447 define(
1448 Object, 'setPrototypeOf',
1449 function setPrototypeOf(o, proto) {
1450 if (Type(o) !== 'object') throw TypeError();
1451 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1452 o.__proto__ = proto;
1453 return o;
1454 }
1455 );
1456
1457 // 19.1.3 Properties of the Object Prototype Object
1458 // 19.1.3.1 Object.prototype.constructor
1459 // 19.1.3.2 Object.prototype.hasOwnProperty ( V )
1460 // 19.1.3.3 Object.prototype.isPrototypeOf ( V )
1461 // 19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1462 // 19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1463 // 19.1.3.6 Object.prototype.toString ( )
1464 hook(Object.prototype, 'toString',
1465 function() {
1466 var o = strict(this);
1467 if (o === Object(o) && $$toStringTag in o) {
1468 return '[object ' + o[$$toStringTag] + ']';
1469 }
1470 return undefined;
1471 });
1472
1473 // 19.1.3.7 Object.prototype.valueOf ( )
1474 // 19.1.4 Properties of Object Instances
1475
1476 // ---------------------------------------
1477 // 19.2 Function Objects
1478 // ---------------------------------------
1479
1480 // 19.2.1 The Function Constructor
1481 // 19.2.1.1 Function ( p1, p2, … , pn, body )
1482 // 19.2.2 Properties of the Function Constructor
1483 // 19.2.2.1 Function.length
1484 // 19.2.2.2 Function.prototype
1485 // 19.2.3 Properties of the Function Prototype Object
1486 // 19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1487 // 19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1488 // 19.2.3.3 Function.prototype.call (thisArg , ...args)
1489 // 19.2.3.4 Function.prototype.constructor
1490 // 19.2.3.5 Function.prototype.toString ( )
1491 // 19.2.3.6 Function.prototype[@@hasInstance] ( V )
1492 // 19.2.4 Function Instances
1493 // 19.2.4.1 length
1494 // 19.2.4.2 name
1495 // 19.2.4.3 prototype
1496
1497 // (No polyfillable changes from ES5)
1498
1499 // ---------------------------------------
1500 // 19.3 Boolean Objects
1501 // ---------------------------------------
1502
1503 // 19.3.1 The Boolean Constructor
1504 // 19.3.1.1 Boolean ( value )
1505 // 19.3.2 Properties of the Boolean Constructor
1506 // 19.3.2.1 Boolean.prototype
1507 // 19.3.3 Properties of the Boolean Prototype Object
1508 // 19.3.3.1 Boolean.prototype.constructor
1509 // 19.3.3.2 Boolean.prototype.toString ( )
1510 // 19.3.3.3 Boolean.prototype.valueOf ( )
1511 // 19.3.4 Properties of Boolean Instances
1512
1513 // (No polyfillable changes from ES5)
1514
1515 // ---------------------------------------
1516 // 19.4 Symbol Objects
1517 // ---------------------------------------
1518
1519 // Moved earlier in this script, so that other polyfills can depend on them.
1520
1521 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1522 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1523
1524 // ---------------------------------------
1525 // 19.5 Error Objects
1526 // ---------------------------------------
1527
1528 // 19.5.1 The Error Constructor
1529 // 19.5.1.1 Error ( message )
1530 // 19.5.1.2 new Error( ...argumentsList )
1531 // 19.5.2 Properties of the Error Constructor
1532 // 19.5.2.1 Error.prototype
1533 // 19.5.3 Properties of the Error Prototype Object
1534 // 19.5.3.1 Error.prototype.constructor
1535 // 19.5.3.2 Error.prototype.message
1536 // 19.5.3.3 Error.prototype.name
1537 // 19.5.3.4 Error.prototype.toString ( )
1538 // 19.5.4 Properties of Error Instances
1539 // 19.5.5 Native Error Types Used in This Standard
1540 // 19.5.5.1 EvalError
1541 // 19.5.5.2 RangeError
1542 // 19.5.5.3 ReferenceError
1543 // 19.5.5.4 SyntaxError
1544 // 19.5.5.5 TypeError
1545 // 19.5.5.6 URIError
1546 // 19.5.6 NativeError Object Structure
1547 // 19.5.6.1 NativeError Constructors
1548 // 19.5.6.1.1 NativeError ( message )
1549 // 19.5.6.1.2 new NativeError ( ...argumentsList )
1550 // 19.5.6.2 Properties of the NativeError Constructors
1551 // 19.5.6.2.1 NativeError.prototype
1552 // 19.5.6.3 Properties of the NativeError Prototype Objects
1553 // 19.5.6.4 Properties of NativeError Instances
1554
1555 // (No polyfillable changes from ES5)
1556
1557 // ---------------------------------------
1558 // 20 Numbers and Dates
1559 // ---------------------------------------
1560
1561 // ---------------------------------------
1562 // 20.1 Number Objects
1563 // ---------------------------------------
1564
1565 // 20.1.1 The Number Constructor
1566 // 20.1.1.1 Number ( [ value ] )
1567 // 20.1.1.2 new Number ( ...argumentsList )
1568 // 20.1.2 Properties of the Number Constructor
1569
1570 // 20.1.2.1 Number.EPSILON
1571 define(
1572 Number, 'EPSILON',
1573 (function () {
1574 var next, result;
1575 for (next = 1; 1 + next !== 1; next = next / 2)
1576 result = next;
1577 return result;
1578 }()));
1579
1580 // 20.1.2.2 Number.isFinite ( number )
1581 define(
1582 Number, 'isFinite',
1583 function isFinite(number) {
1584 if (Type(number) !== 'number') return false;
1585 if (number !== number || number === +Infinity || number === -Infinity) return false;
1586 return true;
1587 });
1588
1589 // 20.1.2.3 Number.isInteger ( number )
1590 define(
1591 Number, 'isInteger',
1592 function isInteger(number) {
1593 if (Type(number) !== 'number') return false;
1594 if (number !== number || number === +Infinity || number === -Infinity) return false;
1595 var integer = ToInteger(number);
1596 if (integer !== number) return false;
1597 return true;
1598 });
1599
1600 // 20.1.2.4 Number.isNaN ( number )
1601 define(
1602 Number, 'isNaN',
1603 function isNaN(number) {
1604 if (Type(number) !== 'number') return false;
1605 if (number !== number) return true;
1606 return false;
1607 });
1608
1609 // 20.1.2.5 Number.isSafeInteger ( number )
1610 define(
1611 Number, 'isSafeInteger',
1612 function isSafeInteger(number) {
1613 if (Type(number) !== 'number') return false;
1614 if (number !== number || number === +Infinity || number === -Infinity) return false;
1615 var integer = ToInteger(number);
1616 if (integer !== number) return false;
1617 if (abs(integer) <= (0x20000000000000 - 1)) // 2^53-1
1618 return true;
1619 return false;
1620 });
1621
1622 // 20.1.2.6 Number.MAX_SAFE_INTEGER
1623 define(
1624 Number, 'MAX_SAFE_INTEGER',
1625 9007199254740991); // 2^53-1
1626
1627 // 20.1.2.7 Number.MAX_VALUE
1628
1629 // 20.1.2.8 Number.MIN_SAFE_INTEGER
1630 define(
1631 Number, 'MIN_SAFE_INTEGER',
1632 -9007199254740991); // -2^53+1
1633
1634 // 20.1.2.9 Number.MIN_VALUE
1635 // 20.1.2.10 Number.NaN
1636 // 20.1.2.11 Number.NEGATIVE_INFINITY
1637
1638 // 20.1.2.12 Number.parseFloat ( string )
1639 define(Number, 'parseFloat', $parseFloat);
1640
1641 // 20.1.2.13 Number.parseInt ( string, radix )
1642 define(Number, 'parseInt', $parseInt);
1643
1644 // 20.1.2.14 Number.POSITIVE_INFINITY
1645 // 20.1.2.15 Number.prototype
1646
1647 // 20.1.3 Properties of the Number Prototype Object
1648 // 20.1.3.1 Number.prototype.constructor
1649 // 20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1650 // 20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1651 // 20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1652 // 20.1.3.5 Number.prototype.toPrecision ( precision )
1653 // 20.1.3.6 Number.prototype.toString ( [ radix ] )
1654 // 20.1.3.7 Number.prototype.valueOf ( )
1655 // 20.1.4 Properties of Number Instances
1656
1657 // ---------------------------------------
1658 // 20.2 The Math Object
1659 // ---------------------------------------
1660
1661 // 20.2.1 Value Properties of the Math Object
1662 // 20.2.1.1 Math.E
1663 // 20.2.1.2 Math.LN10
1664 // 20.2.1.3 Math.LN2
1665 // 20.2.1.4 Math.LOG10E
1666 // 20.2.1.5 Math.LOG2E
1667 // 20.2.1.6 Math.PI
1668 // 20.2.1.7 Math.SQRT1_2
1669 // 20.2.1.8 Math.SQRT2
1670
1671 // 20.2.1.9 Math [ @@toStringTag ]
1672 define(Math, $$toStringTag, 'Math');
1673
1674 // 20.2.2 Function Properties of the Math Object
1675 // 20.2.2.1 Math.abs ( x )
1676 // 20.2.2.2 Math.acos ( x )
1677
1678 // 20.2.2.3 Math.acosh(x)
1679 define(
1680 Math, 'acosh',
1681 function acosh(x) {
1682 x = Number(x);
1683 return log(x + sqrt(x * x - 1));
1684 });
1685
1686 // 20.2.2.4 Math.asin ( x )
1687
1688 // 20.2.2.5 Math.asinh( x )
1689 define(
1690 Math, 'asinh',
1691 function asinh(x) {
1692 x = Number(x);
1693 if (SameValue(x, -0)) {
1694 return x;
1695 }
1696 var s = sqrt(x * x + 1);
1697 return (s === -x) ? log(0) : log(x + s);
1698 });
1699
1700 // 20.2.2.6 Math.atan ( x )
1701
1702 // 20.2.2.7 Math.atanh( x )
1703 define(
1704 Math, 'atanh',
1705 function atanh(x) {
1706 x = Number(x);
1707 return (x === 0) ? x : log((1 + x) / (1 - x)) / 2;
1708 });
1709
1710 // 20.2.2.8 Math.atan2 ( y, x )
1711
1712 // 20.2.2.9 Math.cbrt ( x )
1713 define(
1714 Math, 'cbrt',
1715 function cbrt(x) {
1716 x = Number(x);
1717 if ($isNaN(x/x)) {
1718 return x;
1719 }
1720 var r = pow(abs(x), 1/3);
1721 var t = x/r/r;
1722 return r + (r * (t-r) / (2*r + t));
1723 });
1724
1725 // 20.2.2.10 Math.ceil ( x )
1726
1727 // 20.2.2.11 Math.clz32 ( x )
1728 define(
1729 Math, 'clz32',
1730 function clz32(x) {
1731 function clz8(x) {
1732 return (x & 0xf0) ? (x & 0x80 ? 0 : x & 0x40 ? 1 : x & 0x20 ? 2 : 3) :
1733 (x & 0x08 ? 4 : x & 0x04 ? 5 : x & 0x02 ? 6 : x & 0x01 ? 7 : 8);
1734 }
1735 x = ToUint32(x);
1736 return x & 0xff000000 ? clz8(x >> 24) :
1737 x & 0xff0000 ? clz8(x >> 16) + 8 :
1738 x & 0xff00 ? clz8(x >> 8) + 16 : clz8(x) + 24;
1739 });
1740
1741
1742
1743 // 20.2.2.12 Math.cos ( x )
1744
1745 // 20.2.2.13 Math.cosh ( x )
1746 define(
1747 Math, 'cosh',
1748 function cosh(x) {
1749 x = Number(x);
1750 return (pow(E, x) + pow(E, -x)) / 2;
1751 });
1752
1753 // 20.2.2.14 Math.exp ( x )
1754
1755 // 20.2.2.15 Math.expm1 ( x )
1756 define(
1757 Math, 'expm1',
1758 function expm1(x) {
1759 x = Number(x);
1760 // from: http://www.johndcook.com/cpp_log1p.html
1761 if (SameValue(x, -0)) {
1762 return -0;
1763 } else if (abs(x) < 1e-5) {
1764 return x + 0.5 * x * x; // two terms of Taylor expansion
1765 } else {
1766 return exp(x) - 1;
1767 }
1768 });
1769
1770 // 20.2.2.16 Math.floor ( x )
1771
1772 // 20.2.2.17 Math.fround ( x )
1773 define(
1774 Math, 'fround',
1775 function fround(x) {
1776 if ($isNaN(x)) {
1777 return NaN;
1778 }
1779 if (1/x === +Infinity || 1/x === -Infinity || x === +Infinity || x === -Infinity) {
1780 return x;
1781 }
1782 return (new Float32Array([x]))[0];
1783 });
1784
1785 // 20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
1786 define(
1787 Math, 'hypot',
1788 function hypot() {
1789 var values = [];
1790 var m = 0, sawNaN = false;
1791 for (var i = 0; i < arguments.length; ++i) {
1792 var n = abs(Number(arguments[i]));
1793 if (n === Infinity) return n;
1794 if (n !== n) sawNaN = true;
1795 if (n > m) m = n;
1796 values[i] = n;
1797 }
1798 if (sawNaN) return NaN;
1799 if (m === 0) return +0;
1800 var sum = +0;
1801 for (i = 0; i < values.length; ++i) {
1802 var r = values[i] / m;
1803 sum = sum + r * r;
1804 }
1805 return m * sqrt(sum);
1806 });
1807
1808 // 20.2.2.19 Math.imul ( x, y )
1809 define(
1810 Math, 'imul',
1811 function imul(x, y) {
1812 var a = ToUint32(x);
1813 var b = ToUint32(y);
1814 // (slow but accurate)
1815 var ah = (a >>> 16) & 0xffff;
1816 var al = a & 0xffff;
1817 var bh = (b >>> 16) & 0xffff;
1818 var bl = b & 0xffff;
1819 return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
1820 }, ('imul' in Math && Math.imul(1, 0x80000000) === 0) // Safari 7 bug
1821 );
1822
1823 // 20.2.2.20 Math.log ( x )
1824
1825 // 20.2.2.21 Math.log1p ( x )
1826 define(
1827 Math, 'log1p',
1828 function log1p(x) {
1829 x = Number(x);
1830 // from: http://www.johndcook.com/cpp_expm1.html
1831 if (x < -1) {
1832 return NaN;
1833 } else if (SameValue(x, -0)) {
1834 return -0;
1835 } else if (abs(x) > 1e-4) {
1836 return log(1 + x);
1837 } else {
1838 return (-0.5 * x + 1) * x;
1839 }
1840 });
1841
1842 // 20.2.2.22 Math.log10 ( x )
1843 define(
1844 Math, 'log10',
1845 function log10(x) {
1846 x = Number(x);
1847 return log(x) * LOG10E;
1848 });
1849
1850 // 20.2.2.23 Math.log2 ( x )
1851 define(
1852 Math, 'log2',
1853 function log2(x) {
1854 x = Number(x);
1855 return log(x) * LOG2E;
1856 });
1857
1858 // 20.2.2.24 Math.max ( value1, value2 , ...values )
1859 // 20.2.2.25 Math.min ( value1, value2 , ...values )
1860 // 20.2.2.26 Math.pow ( x, y )
1861 // 20.2.2.27 Math.random ( )
1862 // 20.2.2.28 Math.round ( x )
1863
1864 // 20.2.2.29 Math.sign(x)
1865 define(
1866 Math, 'sign',
1867 function sign(x) {
1868 x = Number(x);
1869 return x < 0 ? -1 : x > 0 ? 1 : x;
1870 });
1871
1872 // 20.2.2.30 Math.sin ( x )
1873
1874 // 20.2.2.31 Math.sinh( x )
1875 define(
1876 Math, 'sinh',
1877 function sinh(x) {
1878 x = Number(x);
1879 return SameValue(x, -0) ? x : (pow(E, x) - pow(E, -x)) / 2;
1880 });
1881
1882 // 20.2.2.32 Math.sqrt ( x )
1883 // 20.2.2.33 Math.tan ( x )
1884
1885 // 20.2.2.34 Math.tanh ( x )
1886 define(
1887 Math, 'tanh',
1888 function tanh(x) {
1889 x = Number(x);
1890 var n = pow(E, 2 * x) - 1,
1891 d = pow(E, 2 * x) + 1;
1892 if (SameValue(x, -0))
1893 return x;
1894 return (n === d) ? 1 : n / d; // Handle Infinity/Infinity
1895 });
1896
1897 // 20.2.2.35 Math.trunc ( x )
1898 define(
1899 Math, 'trunc',
1900 function trunc(x) {
1901 x = Number(x);
1902 return $isNaN(x) ? NaN :
1903 x < 0 ? ceil(x) : floor(x);
1904 });
1905
1906 // ---------------------------------------
1907 // 20.3 Date Objects
1908 // ---------------------------------------
1909
1910 // 20.3.1 Overview of Date Objects and Definitions of Abstract Operations
1911 // 20.3.1.1 Time Values and Time Range
1912 // 20.3.1.2 Day Number and Time within Day
1913 // 20.3.1.3 Year Number
1914 // 20.3.1.4 Month Number
1915 // 20.3.1.5 Date Number
1916 // 20.3.1.6 Week Day
1917 // 20.3.1.7 Local Time Zone Adjustment
1918 // 20.3.1.8 Daylight Saving Time Adjustment
1919 // 20.3.1.9 Local Time
1920 // 20.3.1.10 Hours, Minutes, Second, and Milliseconds
1921 // 20.3.1.11 MakeTime (hour, min, sec, ms)
1922 // 20.3.1.12 MakeDay (year, month, date)
1923 // 20.3.1.13 MakeDate (day, time)
1924 // 20.3.1.14 TimeClip (time)
1925 // 20.3.1.15 Date Time String Format
1926 // 20.3.1.15.1 Extended years
1927 // 20.3.2 The Date Constructor
1928 // 20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
1929 // 20.3.2.2 Date ( value )
1930 // 20.3.2.3 Date ( )
1931 // 20.3.3 Properties of the Date Constructor
1932 // 20.3.3.1 Date.now ( )
1933 // 20.3.3.2 Date.parse (string)
1934 // 20.3.3.3 Date.prototype
1935 // 20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
1936 // 20.3.4 Properties of the Date Prototype Object
1937 // 20.3.4.1 Date.prototype.constructor
1938 // 20.3.4.2 Date.prototype.getDate ( )
1939 // 20.3.4.3 Date.prototype.getDay ( )
1940 // 20.3.4.4 Date.prototype.getFullYear ( )
1941 // 20.3.4.5 Date.prototype.getHours ( )
1942 // 20.3.4.6 Date.prototype.getMilliseconds ( )
1943 // 20.3.4.7 Date.prototype.getMinutes ( )
1944 // 20.3.4.8 Date.prototype.getMonth ( )
1945 // 20.3.4.9 Date.prototype.getSeconds ( )
1946 // 20.3.4.10 Date.prototype.getTime ( )
1947 // 20.3.4.11 Date.prototype.getTimezoneOffset ( )
1948 // 20.3.4.12 Date.prototype.getUTCDate ( )
1949 // 20.3.4.13 Date.prototype.getUTCDay ( )
1950 // 20.3.4.14 Date.prototype.getUTCFullYear ( )
1951 // 20.3.4.15 Date.prototype.getUTCHours ( )
1952 // 20.3.4.16 Date.prototype.getUTCMilliseconds ( )
1953 // 20.3.4.17 Date.prototype.getUTCMinutes ( )
1954 // 20.3.4.18 Date.prototype.getUTCMonth ( )
1955 // 20.3.4.19 Date.prototype.getUTCSeconds ( )
1956 // 20.3.4.20 Date.prototype.setDate ( date )
1957 // 20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
1958 // 20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
1959 // 20.3.4.23 Date.prototype.setMilliseconds ( ms )
1960 // 20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
1961 // 20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
1962 // 20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
1963 // 20.3.4.27 Date.prototype.setTime ( time )
1964 // 20.3.4.28 Date.prototype.setUTCDate ( date )
1965 // 20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
1966 // 20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
1967 // 20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
1968 // 20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
1969 // 20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
1970 // 20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
1971 // 20.3.4.35 Date.prototype.toDateString ( )
1972 // 20.3.4.36 Date.prototype.toISOString ( )
1973 // 20.3.4.37 Date.prototype.toJSON ( key )
1974 // 20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
1975 // 20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1976 // 20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
1977 // 20.3.4.41 Date.prototype.toString ( )
1978 // 20.3.4.42 Date.prototype.toTimeString ( )
1979 // 20.3.4.43 Date.prototype.toUTCString ( )
1980 // 20.3.4.44 Date.prototype.valueOf ( )
1981 // 20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
1982 // 20.3.5 Properties of Date Instances
1983
1984 // (No polyfillable changes from ES5)
1985
1986 // ---------------------------------------
1987 // 21 Text Processing
1988 // ---------------------------------------
1989
1990 var string_regexp_dispatch = (function() {
1991 var faux = {}, secret = Symbol();
1992 faux[Symbol.match] = function() { return secret; };
1993 return ("").match(faux) === secret;
1994 }());
1995
1996 // 21.1 String Objects
1997 // 21.1.1 The String Constructor
1998 // 21.1.1.1 String ( value )
1999 // 21.1.2 Properties of the String Constructor
2000 // 21.1.2.1 String.fromCharCode ( ...codeUnits )
2001
2002 // 21.1.2.2 String.fromCodePoint ( ...codePoints )
2003 define(
2004 String, 'fromCodePoint',
2005 function fromCodePoint(/*...codePoints*/) {
2006 var codePoints = arguments,
2007 length = codePoints.length,
2008 elements = [],
2009 nextIndex = 0;
2010 while (nextIndex < length) {
2011 var next = codePoints[nextIndex];
2012 var nextCP = Number(next);
2013 if (!SameValue(nextCP, ToInteger(nextCP)) ||
2014 nextCP < 0 || nextCP > 0x10FFFF) {
2015 throw RangeError('Invalid code point ' + nextCP);
2016 }
2017 if (nextCP < 0x10000) {
2018 elements.push(String.fromCharCode(nextCP));
2019 } else {
2020 nextCP -= 0x10000;
2021 elements.push(String.fromCharCode((nextCP >> 10) + 0xD800));
2022 elements.push(String.fromCharCode((nextCP % 0x400) + 0xDC00));
2023 }
2024 nextIndex += 1;
2025 }
2026 return elements.join('');
2027 });
2028
2029 // 21.1.2.3 String.prototype
2030
2031 // 21.1.2.4 String.raw ( template , ...substitutions )
2032 define(
2033 String, 'raw',
2034 function raw(template /*, ...substitutions*/) {
2035 var substitutions = [].slice.call(arguments, 1);
2036
2037 var cooked = Object(template);
2038 var rawValue = cooked['raw'];
2039 var raw = Object(rawValue);
2040 var len = raw['length'];
2041 var literalSegments = ToLength(len);
2042 if (literalSegments <= 0) return '';
2043 var stringElements = [];
2044 var nextIndex = 0;
2045 while (true) {
2046 var next = raw[nextIndex];
2047 var nextSeg = String(next);
2048 stringElements.push(nextSeg);
2049 if (nextIndex + 1 === literalSegments)
2050 return stringElements.join('');
2051 next = substitutions[nextIndex];
2052 var nextSub = String(next);
2053 stringElements.push(nextSub);
2054 nextIndex = nextIndex + 1;
2055 }
2056 });
2057
2058 // See https://githib.com/inexorabletash/uate for a more useful version.
2059
2060 // 21.1.3 Properties of the String Prototype Object
2061 // 21.1.3.1 String.prototype.charAt ( pos )
2062 // 21.1.3.2 String.prototype.charCodeAt ( pos )
2063
2064 // 21.1.3.3 String.prototype.codePointAt ( pos )
2065 define(
2066 String.prototype, 'codePointAt',
2067 function codePointAt(pos) {
2068 var o = strict(this);
2069 var s = String(o);
2070 var position = ToInteger(pos);
2071 var size = s.length;
2072 if (position < 0 || position >= size) return undefined;
2073 var first = s.charCodeAt(position);
2074 if (first < 0xD800 || first > 0xDBFF || position + 1 === size) return first;
2075 var second = s.charCodeAt(position + 1);
2076 if (second < 0xDC00 || second > 0xDFFF) return first;
2077 return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
2078 });
2079
2080 // 21.1.3.4 String.prototype.concat ( ...args )
2081 // 21.1.3.5 String.prototype.constructor
2082
2083 // 21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2084 define(
2085 String.prototype, 'endsWith',
2086 function endsWith(searchString) {
2087 var endPosition = arguments[1];
2088
2089 var o = strict(this);
2090 var s = String(o);
2091 var searchStr = String(searchString);
2092 var len = s.length;
2093 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2094 var end = min(max(pos, 0), len);
2095 var searchLength = searchStr.length;
2096 var start = end - searchLength;
2097 if (start < 0) return false;
2098 if (s.substring(start, start + searchLength) === searchStr) return true;
2099 return false;
2100 });
2101
2102 // 21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2103 define(
2104 String.prototype, 'includes',
2105 function includes(searchString) {
2106 var position = arguments[1];
2107
2108 var o = strict(this);
2109 var s = String(o);
2110 var searchStr = String(searchString);
2111 var pos = ToInteger(position);
2112 var len = s.length;
2113 var start = min(max(pos, 0), len);
2114 return s.indexOf(searchStr, start) !== -1;
2115 });
2116
2117 // 21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2118 // 21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2119 // 21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2120 // 21.1.3.11 String.prototype.match ( regexp )
2121 define(
2122 String.prototype, 'match',
2123 function match(regexp) {
2124 var o = strict(this);
2125 var s = String(o);
2126 if (HasProperty(regexp, $$match)) var rx = regexp;
2127 else rx = new RegExp(regexp);
2128 return rx[$$match](s);
2129 }, !string_regexp_dispatch);
2130
2131 // 21.1.3.12 String.prototype.normalize ( [ form ] )
2132
2133 // Not practical due to table sizes; if needed, pull in:
2134 // https://github.com/walling/unorm/
2135
2136 // 21.1.3.13 String.prototype.repeat ( count )
2137 define(
2138 String.prototype, 'repeat',
2139 function repeat(count) {
2140 var o = strict(this);
2141 var s = String(o);
2142 var n = ToInteger(count);
2143 if (n < 0) throw RangeError();
2144 if (n === Infinity) throw RangeError();
2145 var t = new Array(n + 1).join(s);
2146 return t;
2147 });
2148
2149 // 21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2150 define(
2151 String.prototype, 'replace',
2152 function replace(searchValue, replaceValue) {
2153 var o = strict(this);
2154 if (HasProperty(searchValue, $$replace))
2155 return searchValue[$$replace](o, replaceValue);
2156 return orig_replace.call(o, searchValue, replaceValue);
2157 }, !string_regexp_dispatch);
2158
2159 // 21.1.3.15 String.prototype.search ( regexp )
2160 define(
2161 String.prototype, 'search',
2162 function search(regexp) {
2163 var o = strict(this);
2164 var string = String(o);
2165 if (HasProperty(regexp, $$search)) var rx = regexp;
2166 else rx = new RegExp(regexp);
2167 return rx[$$search](string);
2168 }, !string_regexp_dispatch);
2169
2170 // 21.1.3.16 String.prototype.slice ( start, end )
2171 // 21.1.3.17 String.prototype.split ( separator, limit )
2172 define(
2173 String.prototype, 'split',
2174 function split(separator, limit) {
2175 var o = strict(this);
2176 if (HasProperty(separator, $$split))
2177 return separator[$$split](o, limit);
2178 return orig_split.call(o, separator, limit);
2179 }, !string_regexp_dispatch);
2180
2181 // 21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2182 define(
2183 String.prototype, 'startsWith',
2184 function startsWith(searchString) {
2185 var position = arguments[1];
2186
2187 var o = strict(this);
2188 var s = String(o);
2189 var searchStr = String(searchString);
2190 var pos = ToInteger(position);
2191 var len = s.length;
2192 var start = min(max(pos, 0), len);
2193 var searchLength = searchStr.length;
2194 if (searchLength + start > len) return false;
2195 if (s.substring(start, start + searchLength) === searchStr) return true;
2196 return false;
2197 });
2198
2199 // 21.1.3.19 String.prototype.substring ( start, end )
2200 // 21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2201 // 21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2202 // 21.1.3.22 String.prototype.toLowerCase ( )
2203 // 21.1.3.23 String.prototype.toString ( )
2204 // 21.1.3.24 String.prototype.toUpperCase ( )
2205 // 21.1.3.25 String.prototype.trim ( )
2206 // 21.1.3.26 String.prototype.valueOf ( )
2207
2208 // 21.1.3.27 String.prototype [ @@iterator ]( )
2209 define(
2210 String.prototype, $$iterator,
2211 function entries() {
2212 return CreateStringIterator(this, 'value');
2213 });
2214
2215 // 21.1.4 Properties of String Instances
2216 // 21.1.4.1 length
2217
2218 // 21.1.5 String Iterator Objects
2219 /** @constructor */
2220 function StringIterator() {}
2221
2222 // 21.1.5.1 CreateStringIterator Abstract Operation
2223 function CreateStringIterator(string, kind) {
2224 var s = String(string);
2225 var iterator = new StringIterator;
2226 set_internal(iterator, '[[IteratedString]]', s);
2227 set_internal(iterator, '[[StringIteratorNextIndex]]', 0);
2228 set_internal(iterator, '[[StringIterationKind]]', kind);
2229 return iterator;
2230 }
2231
2232 // 21.1.5.2 The %StringIteratorPrototype% Object
2233 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2234 StringIterator.prototype = $StringIteratorPrototype$;
2235
2236 // 21.1.5.2.1 %StringIteratorPrototype%.next ( )
2237 define(
2238 $StringIteratorPrototype$, 'next',
2239 function next() {
2240 var o = ToObject(this);
2241 var s = String(o['[[IteratedString]]']),
2242 index = o['[[StringIteratorNextIndex]]'],
2243 len = s.length;
2244 if (index >= len) {
2245 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2246 return CreateIterResultObject(undefined, true);
2247 }
2248 var cp = s.codePointAt(index);
2249 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp > 0xFFFF ? 2 : 1));
2250 return CreateIterResultObject(String.fromCodePoint(cp), false);
2251 });
2252
2253 // 21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2254 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2255
2256 // 21.1.5.3 Properties of String Iterator Instances
2257
2258 // ---------------------------------------
2259 // 21.2 RegExp (Regular Expression) Objects
2260 // ---------------------------------------
2261
2262 // 21.2.1 Patterns
2263 // 21.2.2 Pattern Semantics
2264 // 21.2.2.1 Notation
2265 // 21.2.2.2 Pattern
2266 // 21.2.2.3 Disjunction
2267 // 21.2.2.4 Alternative
2268 // 21.2.2.5 Term
2269 // 21.2.2.6 Assertion
2270 // 21.2.2.7 Quantifier
2271 // 21.2.2.8 Atom
2272 // 21.2.2.9 AtomEscape
2273 // 21.2.2.10 CharacterEscape
2274 // 21.2.2.11 DecimalEscape
2275 // 21.2.2.12 CharacterClassEscape
2276 // 21.2.2.13 CharacterClass
2277 // 21.2.2.14 ClassRanges
2278 // 21.2.2.15 NonemptyClassRanges
2279 // 21.2.2.16 NonemptyClassRangesNoDash
2280 // 21.2.2.17 ClassAtom
2281 // 21.2.2.18 ClassAtomNoDash
2282 // 21.2.2.19 ClassEscape
2283 // 21.2.3 The RegExp Constructor
2284 // 21.2.3.1 RegExp ( pattern, flags )
2285 // 21.2.3.2 new RegExp( ...argumentsList )
2286 // 21.2.3.3 Abstract Operations for the RegExp Constructor
2287 // 21.2.4 Properties of the RegExp Constructor
2288 // 21.2.4.1 RegExp.prototype
2289 // 21.2.5 Properties of the RegExp Prototype Object
2290 // 21.2.5.1 RegExp.prototype.constructor
2291 // 21.2.5.2 RegExp.prototype.exec ( string )
2292
2293 // 21.2.5.3 get RegExp.prototype.flags
2294 if (!('flags' in RegExp.prototype)) {
2295 Object.defineProperty(
2296 RegExp.prototype, 'flags', {
2297 get: function() {
2298 var s = String(this);
2299 return s.substring(s.lastIndexOf('/') + 1);
2300 }
2301 });
2302 }
2303
2304 // 21.2.5.4 get RegExp.prototype.global
2305 // 21.2.5.5 get RegExp.prototype.ignoreCase
2306
2307 // 21.2.5.6 RegExp.prototype [ @@match ] ( string )
2308 define(RegExp.prototype, $$match, function(string) {
2309 var o = strict(this);
2310 return orig_match.call(string, o);
2311 });
2312
2313 // 21.2.5.7 get RegExp.prototype.multiline
2314
2315 // 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2316 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2317 var o = strict(this);
2318 return orig_replace.call(string, o, replaceValue);
2319 });
2320
2321 // 21.2.5.9 RegExp.prototype [ @@search ] ( string )
2322 define(RegExp.prototype, $$search, function(string) {
2323 var o = strict(this);
2324 return orig_search.call(string, o);
2325 });
2326
2327 // 21.2.5.10 get RegExp.prototype.source
2328
2329 // 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2330 define(RegExp.prototype, $$split, function(string, limit) {
2331 var o = strict(this);
2332 return orig_split.call(string, o, limit);
2333 });
2334
2335 // 21.2.5.12 get RegExp.prototype.sticky
2336 // 21.2.5.13 RegExp.prototype.test( S )
2337 // 21.2.5.14 RegExp.prototype.toString ( )
2338 // 21.2.5.15 get RegExp.prototype.unicode
2339
2340 // 21.2.6 Properties of RegExp Instances
2341 // 21.2.6.1 lastIndex
2342
2343 // (No polyfillable changes from ES5)
2344
2345 // ---------------------------------------
2346 // 22 Indexed Collections
2347 // ---------------------------------------
2348
2349 // ---------------------------------------
2350 // 22.1 Array Objects
2351 // ---------------------------------------
2352
2353 // 22.1.1 The Array Constructor
2354 // 22.1.1.1 Array ( )
2355 // 22.1.1.2 Array (len)
2356 // 22.1.1.3 Array (...items )
2357
2358 // 22.1.2 Properties of the Array Constructor
2359
2360 // 22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2361 define(
2362 Array, 'from',
2363 function from(items) {
2364 var mapfn = arguments[1];
2365 var thisArg = arguments[2];
2366
2367 var c = strict(this);
2368 if (mapfn === undefined) {
2369 var mapping = false;
2370 } else {
2371 if (!IsCallable(mapfn)) throw TypeError();
2372 var t = thisArg;
2373 mapping = true;
2374 }
2375 var usingIterator = GetMethod(items, $$iterator);
2376 if (usingIterator !== undefined) {
2377 if (IsConstructor(c)) {
2378 var a = new c();
2379 } else {
2380 a = new Array(0);
2381 }
2382 var iterator = GetIterator(items, usingIterator);
2383 var k = 0;
2384 while (true) {
2385 var next = IteratorStep(iterator);
2386 if (next === false) {
2387 a.length = k;
2388 return a;
2389 }
2390 var nextValue = IteratorValue(next);
2391 if (mapping)
2392 var mappedValue = mapfn.call(t, nextValue);
2393 else
2394 mappedValue = nextValue;
2395 a[k] = mappedValue;
2396 k += 1;
2397 }
2398 }
2399 var arrayLike = ToObject(items);
2400 var lenValue = arrayLike.length;
2401 var len = ToLength(lenValue);
2402 if (IsConstructor(c)) {
2403 a = new c(len);
2404 } else {
2405 a = new Array(len);
2406 }
2407 k = 0;
2408 while (k < len) {
2409 var kValue = arrayLike[k];
2410 if (mapping)
2411 mappedValue = mapfn.call(t, kValue, k);
2412 else
2413 mappedValue = kValue;
2414 a[k] = mappedValue;
2415 k += 1;
2416 }
2417 a.length = len;
2418 return a;
2419 });
2420
2421 // 22.1.2.2 Array.isArray ( arg )
2422
2423 // 22.1.2.3 Array.of ( ...items )
2424 define(
2425 Array, 'of',
2426 function of() {
2427 var items = arguments;
2428
2429 var lenValue = items.length;
2430 var len = ToUint32(lenValue);
2431 var c = strict(this), a;
2432 if (IsConstructor(c)) {
2433 a = new c(len);
2434 a = ToObject(a);
2435 } else {
2436 a = new Array(len);
2437 }
2438 var k = 0;
2439 while (k < len) {
2440 a[k] = items[k];
2441 k += 1;
2442 }
2443 a.length = len;
2444 return a;
2445 });
2446
2447 // 22.1.2.4 Array.prototype
2448 // 22.1.2.5 get Array [ @@species ]
2449 // 22.1.3 Properties of the Array Prototype Object
2450 // 22.1.3.1 Array.prototype.concat ( ...arguments )
2451 // 22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2452 // 22.1.3.2 Array.prototype.constructor
2453 // 22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2454 define(
2455 Array.prototype, 'copyWithin',
2456 function copyWithin(target, start/*, end*/) {
2457 var end = arguments[2];
2458
2459 var o = ToObject(this);
2460 var lenVal = o.length;
2461 var len = ToLength(lenVal);
2462 len = max(len, 0);
2463 var relativeTarget = ToInteger(target);
2464 var to;
2465 if (relativeTarget < 0)
2466 to = max(len + relativeTarget, 0);
2467 else
2468 to = min(relativeTarget, len);
2469 var relativeStart = ToInteger(start);
2470 var from;
2471 if (relativeStart < 0)
2472 from = max(len + relativeStart, 0);
2473 else
2474 from = min(relativeStart, len);
2475 var relativeEnd;
2476 if (end === undefined)
2477 relativeEnd = len;
2478 else
2479 relativeEnd = ToInteger(end);
2480 var final;
2481 if (relativeEnd < 0)
2482 final = max(len + relativeEnd, 0);
2483 else
2484 final = min(relativeEnd, len);
2485 var count = min(final - from, len - to);
2486 var direction;
2487 if (from < to && to < from + count) {
2488 direction = -1;
2489 from = from + count - 1;
2490 to = to + count - 1;
2491 } else {
2492 direction = 1;
2493 }
2494 while (count > 0) {
2495 var fromKey = String(from);
2496 var toKey = String(to);
2497 var fromPresent = HasProperty(o, fromKey);
2498 if (fromPresent) {
2499 var fromVal = o[fromKey];
2500 o[toKey] = fromVal;
2501 } else {
2502 delete o[toKey];
2503 }
2504 from = from + direction;
2505 to = to + direction;
2506 count = count - 1;
2507 }
2508 return o;
2509 });
2510
2511 // 22.1.3.4 Array.prototype.entries ( )
2512 var nativeArrayIteratorMethods =
2513 ('entries' in Array.prototype && 'next' in [].entries());
2514
2515 define(
2516 Array.prototype, 'entries',
2517 function entries() {
2518 return CreateArrayIterator(this, 'key+value');
2519 }, !nativeArrayIteratorMethods);
2520
2521 // 22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2522
2523 // 22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2524 define(
2525 Array.prototype, 'fill',
2526 function fill(value/*, start, end*/) {
2527 var start = arguments[1],
2528 end = arguments[2];
2529
2530 var o = ToObject(this);
2531 var lenVal = o.length;
2532 var len = ToLength(lenVal);
2533 len = max(len, 0);
2534 var relativeStart = ToInteger(start);
2535 var k;
2536 if (relativeStart < 0)
2537 k = max((len + relativeStart), 0);
2538 else
2539 k = min(relativeStart, len);
2540 var relativeEnd;
2541 if (end === undefined)
2542 relativeEnd = len;
2543 else
2544 relativeEnd = ToInteger(end);
2545 var final;
2546 if (relativeEnd < 0)
2547 final = max((len + relativeEnd), 0);
2548 else
2549 final = min(relativeEnd, len);
2550 while (k < final) {
2551 var pk = String(k);
2552 o[pk] = value;
2553 k += 1;
2554 }
2555 return o;
2556 });
2557
2558 // 22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2559
2560 // 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2561 define(
2562 Array.prototype, 'find',
2563 function find(predicate) {
2564 var o = ToObject(this);
2565 var lenValue = o.length;
2566 var len = ToInteger(lenValue);
2567 if (!IsCallable(predicate)) throw TypeError();
2568 var t = arguments.length > 1 ? arguments[1] : undefined;
2569 var k = 0;
2570 while (k < len) {
2571 var pk = String(k);
2572 var kPresent = HasProperty(o, pk);
2573 if (kPresent) {
2574 var kValue = o[pk];
2575 var testResult = predicate.call(t, kValue, k, o);
2576 if (Boolean(testResult)) {
2577 return kValue;
2578 }
2579 }
2580 ++k;
2581 }
2582 return undefined;
2583 });
2584
2585 // 22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2586 define(
2587 Array.prototype, 'findIndex',
2588 function findIndex(predicate) {
2589 var o = ToObject(this);
2590 var lenValue = o.length;
2591 var len = ToLength(lenValue);
2592 if (!IsCallable(predicate)) throw TypeError();
2593 var t = arguments.length > 1 ? arguments[1] : undefined;
2594 var k = 0;
2595 while (k < len) {
2596 var pk = String(k);
2597 var kPresent = HasProperty(o, pk);
2598 if (kPresent) {
2599 var kValue = o[pk];
2600 var testResult = predicate.call(t, kValue, k, o);
2601 if (Boolean(testResult)) {
2602 return k;
2603 }
2604 }
2605 ++k;
2606 }
2607 return -1;
2608 });
2609
2610 // 22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2611 // 22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2612 // 22.1.3.12 Array.prototype.join (separator)
2613
2614 // 22.1.3.13 Array.prototype.keys ( )
2615 define(
2616 Array.prototype, 'keys',
2617 function keys() {
2618 return CreateArrayIterator(this, 'key');
2619 }, !nativeArrayIteratorMethods);
2620
2621 // 22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2622 // 22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2623 // 22.1.3.16 Array.prototype.pop ( )
2624 // 22.1.3.17 Array.prototype.push ( ...items )
2625 // 22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2626 // 22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2627 // 22.1.3.20 Array.prototype.reverse ( )
2628 // 22.1.3.21 Array.prototype.shift ( )
2629 // 22.1.3.22 Array.prototype.slice (start, end)
2630 // 22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2631 // 22.1.3.24 Array.prototype.sort (comparefn)
2632 // 22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2633 // 22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2634 // 22.1.3.27 Array.prototype.toString ( )
2635 // 22.1.3.28 Array.prototype.unshift ( ...items )
2636
2637 // 22.1.3.29 Array.prototype.values ( )
2638 define(
2639 Array.prototype, 'values',
2640 function values() {
2641 return CreateArrayIterator(this, 'value');
2642 }, !nativeArrayIteratorMethods);
2643
2644 // 22.1.3.30 Array.prototype [ @@iterator ] ( )
2645 define(
2646 Array.prototype, $$iterator,
2647 Array.prototype.values
2648 );
2649
2650 // 22.1.3.31 Array.prototype [ @@unscopables ]
2651 // 22.1.4 Properties of Array Instances
2652 // 22.1.4.1 length
2653
2654 // 22.1.5 Array Iterator Objects
2655 function ArrayIterator() {}
2656
2657 // 22.1.5.1 CreateArrayIterator Abstract Operation
2658 function CreateArrayIterator(array, kind) {
2659 var o = ToObject(array);
2660 var iterator = new ArrayIterator;
2661 set_internal(iterator, '[[IteratedObject]]', o);
2662 set_internal(iterator, '[[ArrayIteratorNextIndex]]', 0);
2663 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2664 return iterator;
2665 }
2666
2667 // 22.1.5.2 The %ArrayIteratorPrototype% Object
2668 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
2669 ArrayIterator.prototype = $ArrayIteratorPrototype$;
2670
2671 // 22.1.5.2.1 %ArrayIteratorPrototype%. next( )
2672 define(
2673 $ArrayIteratorPrototype$, 'next',
2674 function next() {
2675 var o = strict(this);
2676 if (Type(o) !== 'object') throw TypeError();
2677 var a = o['[[IteratedObject]]'],
2678 index = o['[[ArrayIteratorNextIndex]]'],
2679 itemKind = o['[[ArrayIterationKind]]'],
2680 lenValue = a.length,
2681 len = ToUint32(lenValue),
2682 elementKey,
2683 elementValue;
2684 if (itemKind.indexOf('sparse') !== -1) {
2685 var found = false;
2686 while (!found && index < len) {
2687 elementKey = String(index);
2688 found = HasProperty(a, elementKey);
2689 if (!found) {
2690 index += 1;
2691 }
2692 }
2693 }
2694 if (index >= len) {
2695 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
2696 return CreateIterResultObject(undefined, true);
2697 }
2698 elementKey = index;
2699 set_internal(o, '[[ArrayIteratorNextIndex]]', index + 1);
2700 if (itemKind.indexOf('value') !== -1)
2701 elementValue = a[elementKey];
2702 if (itemKind.indexOf('key+value') !== -1)
2703 return CreateIterResultObject([elementKey, elementValue], false);
2704 if (itemKind.indexOf('key') !== -1)
2705 return CreateIterResultObject(elementKey, false);
2706 if (itemKind === 'value')
2707 return CreateIterResultObject(elementValue, false);
2708 throw Error('Internal error');
2709 });
2710
2711 // 22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
2712 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
2713
2714 // 22.1.5.3 Properties of Array Iterator Instances
2715
2716
2717 // ---------------------------------------
2718 // 22.2 TypedArray Objects
2719 // ---------------------------------------
2720
2721 // See typedarray.js for TypedArray polyfill
2722
2723 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
2724 'Int16Array', 'Uint16Array',
2725 'Int32Array', 'Uint32Array',
2726 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
2727 if (!($TypedArrayName$ in global))
2728 return;
2729 var $TypedArray$ = global[$TypedArrayName$];
2730
2731 // 22.2.1 The %TypedArray% Intrinsic Object
2732 // 22.2.1.1 %TypedArray% ( length )
2733 // 22.2.1.2 %TypedArray% ( typedArray )
2734 // 22.2.1.3 %TypedArray% ( object )
2735 // 22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
2736 // 22.2.1.5 %TypedArray% ( all other argument combinations )
2737 // 22.2.2 Properties of the %TypedArray% Intrinsic Object
2738
2739 // 22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
2740 define(
2741 $TypedArray$, 'from',
2742 function from(source) {
2743 var mapfn = arguments[1];
2744 var thisArg = arguments[2];
2745
2746 var c = strict(this);
2747 if (!IsConstructor(c)) throw TypeError();
2748 if (mapfn === undefined) {
2749 var mapping = false;
2750 } else {
2751 if (IsCallable(mapfn)) throw TypeError();
2752 var t = thisArg;
2753 mapping = true;
2754 }
2755 var usingIterator = GetMethod(source, $$iterator);
2756 if (usingIterator !== undefined) {
2757 var iterator = GetIterator(source, usingIterator);
2758 var values = [];
2759 var next = true;
2760 while (next !== false) {
2761 next = IteratorStep(iterator);
2762 if (next !== false) {
2763 var nextValue = IteratorValue(next);
2764 values.push(nextValue);
2765 }
2766 }
2767 var len = values.length;
2768 var newObj = new c(len);
2769 var k = 0;
2770 while (k < len) {
2771 var kValue = values.shift();
2772 if (mapping) {
2773 var mappedValue = mapfn.call(t, kValue);
2774 } else {
2775 mappedValue = kValue;
2776 }
2777 newObj[k] = mappedValue;
2778 ++k;
2779 }
2780 console.assert(values.length === 0);
2781 return newObj;
2782 }
2783 var arrayLike = ToObject(source);
2784 var lenValue = arrayLike.length;
2785 len = ToLength(lenValue);
2786 newObj = new c(len);
2787 k = 0;
2788 while (k < len) {
2789 kValue = arrayLike[k];
2790 if (mapping) {
2791 mappedValue = mapfn.call(t, kValue, k);
2792 } else {
2793 mappedValue = kValue;
2794 }
2795 newObj[k] = mappedValue;
2796 ++k;
2797 }
2798 return newObj;
2799 });
2800
2801 // 22.2.2.2 %TypedArray%.of ( ...items )
2802 define(
2803 $TypedArray$, 'of',
2804 function of() {
2805 var items = arguments;
2806
2807 var len = items.length;
2808 var c = strict(this);
2809 var newObj = new c(len);
2810 var k = 0;
2811 while (k < len) {
2812 newObj[k] = items[k];
2813 ++k;
2814 }
2815 return newObj;
2816 });
2817
2818 // 22.2.2.3 %TypedArray%.prototype
2819 // 22.2.2.4 get %TypedArray% [ @@species ]
2820 // 22.2.3 Properties of the %TypedArrayPrototype% Object
2821 // 22.2.3.1 get %TypedArray%.prototype.buffer
2822 // 22.2.3.2 get %TypedArray%.prototype.byteLength
2823 // 22.2.3.3 get %TypedArray%.prototype.byteOffset
2824 // 22.2.3.4 %TypedArray%.prototype.constructor
2825
2826 // 22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
2827 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
2828
2829 // 22.2.3.6 %TypedArray%.prototype.entries ( )
2830 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
2831
2832 // 22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
2833 define($TypedArray$.prototype, 'every', Array.prototype.every);
2834
2835 // 22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
2836 define(
2837 $TypedArray$.prototype, 'fill',
2838 //Array.prototype.fill // Doesn't work in Safari 7
2839 function fill(value/*, start, end*/) {
2840 var start = arguments[1],
2841 end = arguments[2];
2842
2843 var o = ToObject(this);
2844 var lenVal = o.length;
2845 var len = ToLength(lenVal);
2846 len = max(len, 0);
2847 var relativeStart = ToInteger(start);
2848 var k;
2849 if (relativeStart < 0) k = max((len + relativeStart), 0);
2850 else k = min(relativeStart, len);
2851 var relativeEnd;
2852 if (end === undefined) relativeEnd = len;
2853 else relativeEnd = ToInteger(end);
2854 var final;
2855 if (relativeEnd < 0) final = max((len + relativeEnd), 0);
2856 else final = min(relativeEnd, len);
2857 while (k < final) {
2858 var pk = String(k);
2859 o[pk] = value;
2860 k += 1;
2861 }
2862 return o;
2863 });
2864
2865 // 22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
2866 define(
2867 $TypedArray$.prototype, 'filter',
2868 function filter(callbackfn) {
2869 var thisArg = arguments[1];
2870
2871 var o = ToObject(this);
2872 var lenVal = o.length;
2873 var len = ToLength(lenVal);
2874 if (!IsCallable(callbackfn)) throw TypeError();
2875 var t = thisArg;
2876 var c = o.constructor;
2877 var kept = [];
2878 var k = 0;
2879 var captured = 0;
2880 while (k < len) {
2881 var kValue = o[k];
2882 var selected = callbackfn.call(t, kValue, k, o);
2883 if (selected) {
2884 kept.push(kValue);
2885 ++captured;
2886 }
2887 ++k;
2888 }
2889 var a = new c(captured);
2890 var n = 0;
2891 for (var i = 0; i < kept.length; ++i) {
2892 var e = kept[i];
2893 a[n] = e;
2894 ++n;
2895 }
2896 return a;
2897 });
2898
2899 // 22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
2900 define($TypedArray$.prototype, 'find', Array.prototype.find);
2901
2902 // 22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
2903 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
2904
2905 // 22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
2906 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
2907
2908 // 22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
2909 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
2910
2911 // 22.2.3.14 %TypedArray%.prototype.join ( separator )
2912 define($TypedArray$.prototype, 'join', Array.prototype.join);
2913
2914 // 22.2.3.15 %TypedArray%.prototype.keys ( )
2915 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
2916
2917 // 22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2918 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
2919
2920 // 22.2.3.17 get %TypedArray%.prototype.length
2921
2922 // 22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
2923 define(
2924 $TypedArray$.prototype, 'map',
2925 function map(callbackfn) {
2926 var thisArg = arguments[1];
2927
2928 var o = ToObject(this);
2929 var lenValue = o.length;
2930 var len = ToLength(lenValue);
2931 if (!IsCallable(callbackfn)) throw TypeError();
2932 var t = thisArg;
2933 var a = undefined;
2934 var c = o.constructor;
2935 if (IsConstructor(c))
2936 a = new c(len);
2937 if (a === undefined)
2938 a = new Array(len);
2939 var k = 0;
2940 while (k < len) {
2941 var kPresent = HasProperty(o, k);
2942 if (kPresent) {
2943 var kValue = o[k];
2944 var mappedValue = callbackfn.call(t, kValue, k, o);
2945 a[k] = mappedValue;
2946 }
2947 ++k;
2948 }
2949 return a;
2950 });
2951
2952 // 22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
2953 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
2954
2955 // 22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
2956 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
2957
2958 // 22.2.3.21 %TypedArray%.prototype.reverse ( )
2959 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
2960
2961 // 22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
2962 // 22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
2963 // 22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
2964
2965 // 22.2.3.23 %TypedArray%.prototype.slice ( start, end )
2966 define(
2967 $TypedArray$.prototype, 'slice',
2968 function slice(start, end) {
2969 var o = ToObject(this);
2970 var lenVal = o.length;
2971 var len = ToLength(lenVal);
2972 var relativeStart = ToInteger(start);
2973 var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
2974 var relativeEnd = (end === undefined) ? len : ToInteger(end);
2975 var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
2976 var count = final - k;
2977 var c = o.constructor;
2978 if (IsConstructor(c)) {
2979 var a = new c(count);
2980 } else {
2981 throw TypeError();
2982 }
2983 var n = 0;
2984 while (k < final) {
2985 var kValue = o[k];
2986 a[n] = kValue;
2987 ++k;
2988 ++n;
2989 }
2990 return a;
2991 });
2992
2993 // 22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
2994 define($TypedArray$.prototype, 'some', Array.prototype.some);
2995
2996 // 22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
2997 define(
2998 $TypedArray$.prototype, 'sort',
2999 function sort() {
3000 var comparefn = arguments[0];
3001
3002 function sortCompare(x, y) {
3003 console.assert(Type(x) === 'number' && Type(y) === 'number');
3004 if (x !== x && y !== y) return +0;
3005 if (x !== x) return 1;
3006 if (y !== y) return -1;
3007 if (comparefn !== undefined) {
3008 return comparefn(x, y);
3009 }
3010 if (x < y) return -1;
3011 if (x > y) return 1;
3012 return +0;
3013 }
3014 return Array.prototype.sort.call(this, sortCompare);
3015 });
3016
3017 // 22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
3018 // 22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
3019 // 22.2.3.28 %TypedArray%.prototype.toString ( )
3020
3021 // 22.2.3.29 %TypedArray%.prototype.values ( )
3022 define($TypedArray$.prototype, 'values', Array.prototype.values);
3023
3024 // 22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
3025 define(
3026 $TypedArray$.prototype, $$iterator,
3027 $TypedArray$.prototype.values
3028 );
3029
3030 // 22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3031 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3032
3033 // 22.2.4 The TypedArray Constructors
3034 // 22.2.4.1TypedArray( ... argumentsList)
3035 // 22.2.5 Properties of the TypedArray Constructors
3036 // 22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3037 // 22.2.5.2 TypedArray.prototype
3038 // 22.2.6 Properties of TypedArray Prototype Objects
3039 // 22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3040 // 22.2.6.2 TypedArray.prototype.constructor
3041 // 22.2.7 Properties of TypedArray Instances
3042 });
3043
3044 // ---------------------------------------
3045 // 23 Keyed Collection
3046 // ---------------------------------------
3047
3048 // ---------------------------------------
3049 // 23.1 Map Objects
3050 // ---------------------------------------
3051
3052 (function() {
3053 // 23.1.1 The Map Constructor
3054
3055 // 23.1.1.1 Map ( [ iterable ] )
3056 /** @constructor */
3057 function Map(/*iterable*/) {
3058 var map = strict(this);
3059 var iterable = arguments[0];
3060
3061 if (Type(map) !== 'object') throw TypeError();
3062 if ('[[MapData]]' in map) throw TypeError();
3063
3064 if (iterable !== undefined) {
3065 var adder = map['set'];
3066 if (!IsCallable(adder)) throw TypeError();
3067 var iter = GetIterator(ToObject(iterable));
3068 }
3069 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3070 if (iter === undefined) return map;
3071 while (true) {
3072 var next = IteratorStep(iter);
3073 if (next === false)
3074 return map;
3075 var nextItem = IteratorValue(next);
3076 if (Type(nextItem) !== 'object') throw TypeError();
3077 var k = nextItem[0];
3078 var v = nextItem[1];
3079 adder.call(map, k, v);
3080 }
3081
3082 return map;
3083 }
3084
3085 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3086 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3087 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3088 (new global.Map([['a', 1]]).size !== 1))
3089 global.Map = Map;
3090
3091
3092 function MapDataIndexOf(mapData, key) {
3093 var i;
3094 if (key === key) return mapData.keys.indexOf(key);
3095 // Slow case for NaN
3096 for (i = 0; i < mapData.keys.length; i += 1)
3097 if (SameValueZero(mapData.keys[i], key)) return i;
3098 return -1;
3099 }
3100
3101 // 23.1.1.2 new Map ( ... argumentsList )
3102 // 23.1.2 Properties of the Map Constructor
3103 // 23.1.2.1 Map.prototype
3104 var $MapPrototype$ = {};
3105 Map.prototype = $MapPrototype$;
3106
3107 // 23.1.2.2 get Map [ @@species ]
3108
3109 // 23.1.3 Properties of the Map Prototype Object
3110 // 23.1.3.1 Map.prototype.clear ()
3111 define(
3112 Map.prototype, 'clear',
3113 function clear() {
3114 var m = strict(this);
3115 if (Type(m) !== 'object') throw TypeError();
3116 if (!('[[MapData]]' in m)) throw TypeError();
3117 if (m['[[MapData]]'] === undefined) throw TypeError();
3118 var entries = m['[[MapData]]'];
3119 entries.keys.length = 0;
3120 entries.values.length = 0;
3121 return undefined;
3122 });
3123
3124 // 23.1.3.2 Map.prototype.constructor
3125
3126 // 23.1.3.3 Map.prototype.delete ( key )
3127 define(
3128 Map.prototype, 'delete',
3129 function delete_(key) {
3130 var m = strict(this);
3131 if (Type(m) !== 'object') throw TypeError();
3132 if (!('[[MapData]]' in m)) throw TypeError();
3133 if (m['[[MapData]]'] === undefined) throw TypeError();
3134 var entries = m['[[MapData]]'];
3135 var i = MapDataIndexOf(entries, key);
3136 if (i < 0) return false;
3137 entries.keys[i] = empty;
3138 entries.values[i] = empty;
3139 return true;
3140 });
3141
3142 // 23.1.3.4 Map.prototype.entries ( )
3143 define(
3144 Map.prototype, 'entries',
3145 function entries() {
3146 var m = strict(this);
3147 if (Type(m) !== 'object') throw TypeError();
3148 return CreateMapIterator(m, 'key+value');
3149 });
3150
3151 // 23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3152 define(
3153 Map.prototype, 'forEach',
3154 function forEach(callbackfn /*, thisArg*/) {
3155 var thisArg = arguments[1];
3156
3157 var m = strict(this);
3158 if (Type(m) !== 'object') throw TypeError();
3159 if (!('[[MapData]]' in m)) throw TypeError();
3160 if (m['[[MapData]]'] === undefined) throw TypeError();
3161 var entries = m['[[MapData]]'];
3162
3163 if (!IsCallable(callbackfn)) {
3164 throw TypeError('First argument to forEach is not callable.');
3165 }
3166 for (var i = 0; i < entries.keys.length; ++i) {
3167 if (entries.keys[i] !== empty) {
3168 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3169 }
3170 }
3171 return undefined;
3172 });
3173
3174 // 23.1.3.6 Map.prototype.get ( key )
3175 define(
3176 Map.prototype, 'get',
3177 function get(key) {
3178 var m = strict(this);
3179 if (Type(m) !== 'object') throw TypeError();
3180 if (!('[[MapData]]' in m)) throw TypeError();
3181 if (m['[[MapData]]'] === undefined) throw TypeError();
3182 var entries = m['[[MapData]]'];
3183 var i = MapDataIndexOf(entries, key);
3184 if (i >= 0) return entries.values[i];
3185 return undefined;
3186 });
3187
3188 // 23.1.3.7 Map.prototype.has ( key )
3189 define(
3190 Map.prototype, 'has',
3191 function has(key) {
3192 var m = strict(this);
3193 if (Type(m) !== 'object') throw TypeError();
3194 if (!('[[MapData]]' in m)) throw TypeError();
3195 if (m['[[MapData]]'] === undefined) throw TypeError();
3196 var entries = m['[[MapData]]'];
3197 if (MapDataIndexOf(entries, key) >= 0) return true;
3198 return false;
3199 });
3200
3201 // 23.1.3.8 Map.prototype.keys ( )
3202 define(
3203 Map.prototype, 'keys',
3204 function keys() {
3205 var m = strict(this);
3206 if (Type(m) !== 'object') throw TypeError();
3207 return CreateMapIterator(m, 'key');
3208 });
3209
3210 // 23.1.3.9 Map.prototype.set ( key , value )
3211 define(
3212 Map.prototype, 'set',
3213 function set(key, value) {
3214 var m = strict(this);
3215 if (Type(m) !== 'object') throw TypeError();
3216 if (!('[[MapData]]' in m)) throw TypeError();
3217 if (m['[[MapData]]'] === undefined) throw TypeError();
3218 var entries = m['[[MapData]]'];
3219 var i = MapDataIndexOf(entries, key);
3220 if (i < 0) i = entries.keys.length;
3221 if (SameValue(key, -0)) key = 0;
3222 entries.keys[i] = key;
3223 entries.values[i] = value;
3224 return m;
3225 });
3226
3227 // 23.1.3.10 get Map.prototype.size
3228 Object.defineProperty(
3229 Map.prototype, 'size', {
3230 get: function() {
3231 var m = strict(this);
3232 if (Type(m) !== 'object') throw TypeError();
3233 if (!('[[MapData]]' in m)) throw TypeError();
3234 if (m['[[MapData]]'] === undefined) throw TypeError();
3235 var entries = m['[[MapData]]'];
3236 var count = 0;
3237 for (var i = 0; i < entries.keys.length; ++i) {
3238 if (entries.keys[i] !== empty)
3239 count = count + 1;
3240 }
3241 return count;
3242 }
3243 });
3244
3245 // 23.1.3.11 Map.prototype.values ( )
3246 define(
3247 Map.prototype, 'values',
3248 function values() {
3249 var m = strict(this);
3250 if (Type(m) !== 'object') throw TypeError();
3251 return CreateMapIterator(m, 'value');
3252 });
3253
3254 // 23.1.3.12 Map.prototype [ @@iterator ]( )
3255 define(
3256 Map.prototype, $$iterator,
3257 function() {
3258 var m = strict(this);
3259 if (Type(m) !== 'object') throw TypeError();
3260 return CreateMapIterator(m, 'key+value');
3261 });
3262
3263 // 23.1.3.13 Map.prototype [ @@toStringTag ]
3264 define(global.Map.prototype, $$toStringTag, 'Map');
3265
3266 // 23.1.4 Properties of Map Instances
3267 // 23.1.5 Map Iterator Objects
3268
3269 /** @constructor */
3270 function MapIterator() {}
3271
3272 // 23.1.5.1 CreateMapIterator Abstract Operation
3273 function CreateMapIterator(map, kind) {
3274 if (Type(map) !== 'object') throw TypeError();
3275 if (!('[[MapData]]' in map)) throw TypeError();
3276 if (map['[[MapData]]'] === undefined) throw TypeError();
3277 var iterator = new MapIterator;
3278 set_internal(iterator, '[[Map]]', map);
3279 set_internal(iterator, '[[MapNextIndex]]', 0);
3280 set_internal(iterator, '[[MapIterationKind]]', kind);
3281 return iterator;
3282 }
3283
3284 // 23.1.5.2 The %MapIteratorPrototype% Object
3285 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3286 MapIterator.prototype = $MapIteratorPrototype$;
3287
3288 // 23.1.5.2.1 %MapIteratorPrototype%.next ( )
3289 define(
3290 $MapIteratorPrototype$, 'next',
3291 function next() {
3292 var o = strict(this);
3293 if (Type(o) !== 'object') throw TypeError();
3294 var m = o['[[Map]]'],
3295 index = o['[[MapNextIndex]]'],
3296 itemKind = o['[[MapIterationKind]]'],
3297 entries = m['[[MapData]]'];
3298 while (index < entries.keys.length) {
3299 var e = {key: entries.keys[index], value: entries.values[index]};
3300 index = index += 1;
3301 set_internal(o, '[[MapNextIndex]]', index);
3302 if (e.key !== empty) {
3303 if (itemKind === 'key') {
3304 return CreateIterResultObject(e.key, false);
3305 } else if (itemKind === 'value') {
3306 return CreateIterResultObject(e.value, false);
3307 } else {
3308 return CreateIterResultObject([e.key, e.value], false);
3309 }
3310 }
3311 }
3312 return CreateIterResultObject(undefined, true);
3313 });
3314
3315 // 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3316 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3317
3318 // 23.1.5.3 Properties of Map Iterator Instances
3319 }());
3320
3321 // ---------------------------------------
3322 // 23.2 Set Objects
3323 // ---------------------------------------
3324
3325 (function() {
3326 // 23.2.1 The Set Constructor
3327 // 23.2.1.1 Set ( [ iterable ] )
3328
3329 /** @constructor */
3330 function Set(/*iterable*/) {
3331 var set = strict(this);
3332 var iterable = arguments[0];
3333
3334 if (Type(set) !== 'object') throw TypeError();
3335 if ('[[SetData]]' in set) throw TypeError();
3336
3337 if (iterable !== undefined) {
3338 var adder = set['add'];
3339 if (!IsCallable(adder)) throw TypeError();
3340 var iter = GetIterator(ToObject(iterable));
3341 }
3342 set_internal(set, '[[SetData]]', []);
3343 if (iter === undefined) return set;
3344 while (true) {
3345 var next = IteratorStep(iter);
3346 if (next === false)
3347 return set;
3348 var nextValue = IteratorValue(next);
3349 adder.call(set, nextValue);
3350 }
3351
3352 return set;
3353 }
3354
3355 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3356 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3357 (new global.Set([1]).size !== 1))
3358 global.Set = Set;
3359
3360 function SetDataIndexOf(setData, key) {
3361 var i;
3362 if (key === key)
3363 return setData.indexOf(key);
3364 // Slow case for NaN
3365 for (i = 0; i < setData.length; i += 1)
3366 if (SameValueZero(setData[i], key)) return i;
3367 return -1;
3368 }
3369
3370 // 23.2.1.2 new Set ( ...argumentsList )
3371 // 23.2.2 Properties of the Set Constructor
3372
3373 // 23.2.2.1 Set.prototype
3374 var $SetPrototype$ = {};
3375 Set.prototype = $SetPrototype$;
3376
3377 // 23.2.2.2 get Set [ @@species ]
3378 // 23.2.3 Properties of the Set Prototype Object
3379
3380 // 23.2.3.1 Set.prototype.add (value )
3381 define(
3382 Set.prototype, 'add',
3383 function add(value) {
3384 var s = strict(this);
3385 if (Type(s) !== 'object') throw TypeError();
3386 if (!('[[SetData]]' in s)) throw TypeError();
3387 if (s['[[SetData]]'] === undefined) throw TypeError();
3388 if (SameValue(value, -0)) value = 0;
3389 var entries = s['[[SetData]]'];
3390 var i = SetDataIndexOf(entries, value);
3391 if (i < 0) i = s['[[SetData]]'].length;
3392 s['[[SetData]]'][i] = value;
3393
3394 return s;
3395 });
3396
3397 // 23.2.3.2 Set.prototype.clear ()
3398 define(
3399 Set.prototype, 'clear',
3400 function clear() {
3401 var s = strict(this);
3402 if (Type(s) !== 'object') throw TypeError();
3403 if (!('[[SetData]]' in s)) throw TypeError();
3404 if (s['[[SetData]]'] === undefined) throw TypeError();
3405 var entries = s['[[SetData]]'];
3406 entries.length = 0;
3407 return undefined;
3408 });
3409
3410 // 23.2.3.3 Set.prototype.constructor
3411 // 23.2.3.4 Set.prototype.delete ( value )
3412 define(
3413 Set.prototype, 'delete',
3414 function delete_(value) {
3415 var s = strict(this);
3416 if (Type(s) !== 'object') throw TypeError();
3417 if (!('[[SetData]]' in s)) throw TypeError();
3418 if (s['[[SetData]]'] === undefined) throw TypeError();
3419 var entries = s['[[SetData]]'];
3420 var i = SetDataIndexOf(entries, value);
3421 if (i < 0) return false;
3422 entries[i] = empty;
3423 return true;
3424 });
3425
3426 // 23.2.3.5 Set.prototype.entries ( )
3427 define(
3428 Set.prototype, 'entries',
3429 function entries() {
3430 var s = strict(this);
3431 if (Type(s) !== 'object') throw TypeError();
3432 return CreateSetIterator(s, 'key+value');
3433 });
3434
3435 // 23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3436 define(
3437 Set.prototype, 'forEach',
3438 function forEach(callbackfn/*, thisArg*/) {
3439 var thisArg = arguments[1];
3440
3441 var s = strict(this);
3442 if (Type(s) !== 'object') throw TypeError();
3443 if (!('[[SetData]]' in s)) throw TypeError();
3444 if (s['[[SetData]]'] === undefined) throw TypeError();
3445 var entries = s['[[SetData]]'];
3446
3447 if (!IsCallable(callbackfn)) {
3448 throw TypeError('First argument to forEach is not callable.');
3449 }
3450 for (var i = 0; i < entries.length; ++i) {
3451 if (entries[i] !== empty) {
3452 callbackfn.call(thisArg, entries[i], entries[i], s);
3453 }
3454 }
3455 });
3456
3457 // 23.2.3.7 Set.prototype.has ( value )
3458 define(
3459 Set.prototype, 'has',
3460 function has(key) {
3461 var s = strict(this);
3462 if (Type(s) !== 'object') throw TypeError();
3463 if (!('[[SetData]]' in s)) throw TypeError();
3464 if (s['[[SetData]]'] === undefined) throw TypeError();
3465 var entries = s['[[SetData]]'];
3466 return SetDataIndexOf(entries, key) !== -1;
3467 });
3468
3469 // 23.2.3.8 Set.prototype.keys ( )
3470 // See Set.prototype.values
3471
3472 // 23.2.3.9 get Set.prototype.size
3473 Object.defineProperty(
3474 Set.prototype, 'size', {
3475 get: function() {
3476 var s = strict(this);
3477 if (Type(s) !== 'object') throw TypeError();
3478 if (!('[[SetData]]' in s)) throw TypeError();
3479 if (s['[[SetData]]'] === undefined) throw TypeError();
3480 var entries = s['[[SetData]]'];
3481 var count = 0;
3482 for (var i = 0; i < entries.length; ++i) {
3483 if (entries[i] !== empty)
3484 count = count + 1;
3485 }
3486 return count;
3487 }
3488 });
3489
3490 // 23.2.3.10 Set.prototype.values ( )
3491 define(
3492 Set.prototype, 'values',
3493 function values() {
3494 var s = strict(this);
3495 if (Type(s) !== 'object') throw TypeError();
3496 return CreateSetIterator(s, 'value');
3497 });
3498 // NOTE: function name is still 'values':
3499 Set.prototype.keys = Set.prototype.values;
3500
3501 // 23.2.3.11 Set.prototype [@@iterator ] ( )
3502 define(
3503 Set.prototype, $$iterator,
3504 function() {
3505 var s = strict(this);
3506 if (Type(s) !== 'object') throw TypeError();
3507 return CreateSetIterator(s);
3508 });
3509
3510 // 23.2.3.12 Set.prototype [ @@toStringTag ]
3511 define(global.Set.prototype, $$toStringTag, 'Set');
3512
3513 // 23.2.4 Properties of Set Instances
3514 // 23.2.5 Set Iterator Objects
3515 /** @constructor */
3516 function SetIterator() {}
3517
3518 // 23.2.5.1 CreateSetIterator Abstract Operation
3519 function CreateSetIterator(set, kind) {
3520 if (Type(set) !== 'object') throw TypeError();
3521 if (!('[[SetData]]' in set)) throw TypeError();
3522 if (set['[[SetData]]'] === undefined) throw TypeError();
3523 var iterator = new SetIterator;
3524 set_internal(iterator, '[[IteratedSet]]', set);
3525 set_internal(iterator, '[[SetNextIndex]]', 0);
3526 set_internal(iterator, '[[SetIterationKind]]', kind);
3527 return iterator;
3528 }
3529
3530 // 23.2.5.2 The %SetIteratorPrototype% Object
3531 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3532 SetIterator.prototype = $SetIteratorPrototype$;
3533
3534 // 23.2.5.2.1 %SetIteratorPrototype%.next( )
3535 define(
3536 $SetIteratorPrototype$, 'next',
3537 function next() {
3538 var o = strict(this);
3539 if (Type(o) !== 'object') throw TypeError();
3540 var s = o['[[IteratedSet]]'],
3541 index = o['[[SetNextIndex]]'],
3542 itemKind = o['[[SetIterationKind]]'],
3543 entries = s['[[SetData]]'];
3544 while (index < entries.length) {
3545 var e = entries[index];
3546 index = index += 1;
3547 set_internal(o, '[[SetNextIndex]]', index);
3548 if (e !== empty) {
3549 if (itemKind === 'key+value')
3550 return CreateIterResultObject([e, e], false);
3551 return CreateIterResultObject(e, false);
3552 }
3553 }
3554 return CreateIterResultObject(undefined, true);
3555 });
3556
3557 // 23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3558 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3559
3560 // 23.2.5.3 Properties of Set Iterator Instances
3561
3562 }());
3563
3564 // ---------------------------------------
3565 // 23.3 WeakMap Objects
3566 // ---------------------------------------
3567
3568 (function() {
3569 // 23.3.1 The WeakMap Constructor
3570 // 23.3.1.1 WeakMap ( [ iterable ] )
3571 /** @constructor */
3572 function WeakMap(/*iterable*/) {
3573 var map = strict(this);
3574 var iterable = arguments[0];
3575
3576 if (Type(map) !== 'object') throw TypeError();
3577 if ('[[WeakMapData]]' in map) throw TypeError();
3578
3579 if (iterable !== undefined) {
3580 var adder = map['set'];
3581 if (!IsCallable(adder)) throw TypeError();
3582 var iter = GetIterator(ToObject(iterable));
3583 }
3584 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3585 if (iter === undefined) return map;
3586 while (true) {
3587 var next = IteratorStep(iter);
3588 if (next === false)
3589 return map;
3590 var nextValue = IteratorValue(next);
3591 if (Type(nextValue) !== 'object') throw TypeError();
3592 var k = nextValue[0];
3593 var v = nextValue[1];
3594 adder.call(map, k, v);
3595 }
3596
3597 return map;
3598 }
3599
3600 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3601 global.WeakMap = WeakMap;
3602
3603 // 23.3.2 Properties of the WeakMap Constructor
3604 // 23.3.2.1 WeakMap.prototype
3605 var $WeakMapPrototype$ = {};
3606 WeakMap.prototype = $WeakMapPrototype$;
3607
3608
3609
3610 // 23.3.2.2 WeakMap[ @@create ] ( )
3611 // 23.3.3 Properties of the WeakMap Prototype Object
3612
3613 // 23.3.3.1 WeakMap.prototype.constructor
3614
3615 // 23.3.3.2 WeakMap.prototype.delete ( key )
3616 define(
3617 WeakMap.prototype, 'delete',
3618 function delete_(key) {
3619 var M = strict(this);
3620 if (Type(M) !== 'object') throw TypeError();
3621 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3622 if (Type(key) !== 'object') throw TypeError('Expected object');
3623 return M['[[WeakMapData]]'].remove(key);
3624 });
3625
3626 // 23.3.3.3 WeakMap.prototype.get ( key )
3627 define(
3628 WeakMap.prototype, 'get',
3629 function get(key, defaultValue) {
3630 var M = strict(this);
3631 if (Type(M) !== 'object') throw TypeError();
3632 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3633 if (Type(key) !== 'object') throw TypeError('Expected object');
3634 return M['[[WeakMapData]]'].get(key, defaultValue);
3635 });
3636
3637 // 23.3.3.4 WeakMap.prototype.has ( key )
3638 define(
3639 WeakMap.prototype, 'has',
3640 function has(key) {
3641 var M = strict(this);
3642 if (Type(M) !== 'object') throw TypeError();
3643 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3644 if (Type(key) !== 'object') throw TypeError('Expected object');
3645 return M['[[WeakMapData]]'].has(key);
3646 });
3647
3648 // 23.3.3.5 WeakMap.prototype.set ( key , value )
3649 define(
3650 WeakMap.prototype, 'set',
3651 function set(key, value) {
3652 var M = strict(this);
3653 if (Type(M) !== 'object') throw TypeError();
3654 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3655 if (Type(key) !== 'object') throw TypeError('Expected object');
3656 M['[[WeakMapData]]'].set(key, value);
3657 return M;
3658 });
3659
3660 // 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3661 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3662
3663 // 23.3.4 Properties of WeakMap Instances
3664
3665 // Polyfills for incomplete native implementations:
3666 (function() {
3667 var wm = new global.WeakMap();
3668 var orig = global.WeakMap.prototype.set;
3669 define(global.WeakMap.prototype, 'set', function set() {
3670 orig.apply(this, arguments);
3671 return this;
3672 }, wm.set({}, 0) !== wm);
3673 }());
3674 }());
3675
3676 // ---------------------------------------
3677 // 23.4 WeakSet Objects
3678 // ---------------------------------------
3679
3680 (function() {
3681 // 23.4.1 The WeakSet Constructor
3682 // 23.4.1.1 WeakSet ( [ iterable ] )
3683 /** @constructor */
3684 function WeakSet(/*iterable*/) {
3685 var set = strict(this);
3686 var iterable = arguments[0];
3687
3688 if (Type(set) !== 'object') throw TypeError();
3689 if ('[[WeakSetData]]' in set) throw TypeError();
3690
3691 if (iterable !== undefined) {
3692 var adder = set['add'];
3693 if (!IsCallable(adder)) throw TypeError();
3694 var iter = GetIterator(ToObject(iterable));
3695 }
3696 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
3697 if (iter === undefined) return set;
3698 while (true) {
3699 var next = IteratorStep(iter);
3700 if (next === false)
3701 return set;
3702 var nextValue = IteratorValue(next);
3703 adder.call(set, nextValue);
3704 }
3705
3706 return set;
3707 }
3708
3709 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3710 global.WeakSet = WeakSet;
3711
3712 // 23.4.2 Properties of the WeakSet Constructor
3713 // 23.4.2.1 WeakSet.prototype
3714 var $WeakSetPrototype$ = {};
3715 WeakSet.prototype = $WeakSetPrototype$;
3716
3717 // 23.4.3 Properties of the WeakSet Prototype Object
3718 // 23.4.3.1 WeakSet.prototype.add (value )
3719 define(
3720 WeakSet.prototype, 'add',
3721 function add(value) {
3722 var S = strict(this);
3723 if (Type(S) !== 'object') throw TypeError();
3724 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3725 if (Type(value) !== 'object') throw TypeError('Expected object');
3726 S['[[WeakSetData]]'].set(value, true);
3727 return S;
3728 });
3729
3730 // 23.4.3.2 WeakSet.prototype.constructor
3731 // 23.4.3.3 WeakSet.prototype.delete ( value )
3732 define(
3733 WeakSet.prototype, 'delete',
3734 function delete_(value) {
3735 var S = strict(this);
3736 if (Type(S) !== 'object') throw TypeError();
3737 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3738 if (Type(value) !== 'object') throw TypeError('Expected object');
3739 return S['[[WeakSetData]]'].remove(value);
3740 });
3741
3742 // 23.4.3.4 WeakSet.prototype.has ( value )
3743 define(
3744 WeakSet.prototype, 'has',
3745 function has(key) {
3746 var S = strict(this);
3747 if (Type(S) !== 'object') throw TypeError();
3748 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3749 if (Type(key) !== 'object') throw TypeError('Expected object');
3750 return S['[[WeakSetData]]'].has(key);
3751 });
3752
3753 // 23.4.3.5 WeakSet.prototype [ @@toStringTag ]
3754 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
3755
3756 // 23.4.4 Properties of WeakSet Instances
3757
3758 // Polyfills for incomplete native implementations:
3759 (function() {
3760 var ws = new global.WeakSet();
3761 var orig = global.WeakSet.prototype.add;
3762 define(global.WeakSet.prototype, 'add', function add() {
3763 orig.apply(this, arguments);
3764 return this;
3765 }, ws.add({}) !== ws);
3766 }());
3767 }());
3768
3769 // ---------------------------------------
3770 // 24 Structured Data
3771 // ---------------------------------------
3772
3773 // ---------------------------------------
3774 // 24.1 ArrayBuffer Objects
3775 // ---------------------------------------
3776
3777 // See typedarray.js for TypedArray polyfill
3778
3779 (function() {
3780 if (!('ArrayBuffer' in global))
3781 return;
3782
3783 // 24.1.1 Abstract Operations For ArrayBuffer Objects
3784 // 24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
3785 // 24.1.1.2 IsDetachedBuffer( arrayBuffer )
3786 // 24.1.1.3 DetachArrayBuffer( arrayBuffer )
3787 // 24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
3788 // 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
3789 // 24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
3790 // 24.1.2 The ArrayBuffer Constructor
3791 // 24.1.2.1 ArrayBuffer( length )
3792 // 24.1.3 Properties of the ArrayBuffer Constructor
3793
3794 // 24.1.3.1 ArrayBuffer.isView ( arg )
3795 define(
3796 ArrayBuffer, 'isView',
3797 function isView(arg) {
3798 if (Type(arg) !== 'object') return false;
3799 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
3800 return false;
3801 });
3802
3803 // 24.1.3.2 ArrayBuffer.prototype
3804 // 24.1.3.3 get ArrayBuffer [ @@species ]
3805 // 24.1.4 Properties of the ArrayBuffer Prototype Object
3806 // 24.1.4.1 get ArrayBuffer.prototype.byteLength
3807 // 24.1.4.2 ArrayBuffer.prototype.constructor
3808 // 24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
3809
3810 // 24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
3811 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
3812
3813 // 24.1.5 Properties of the ArrayBuffer Instances
3814 }());
3815
3816 // ---------------------------------------
3817 // 24.2 DataView Objects
3818 // ---------------------------------------
3819
3820 // See typedarray.js for TypedArray polyfill
3821
3822 (function() {
3823 if (!('DataView' in global))
3824 return;
3825
3826 // 24.2.1 Abstract Operations For DataView Objects
3827 // 24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
3828 // 24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
3829 // 24.2.2 The DataView Constructor
3830 // 24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
3831 // 24.2.3 Properties of the DataView Constructor
3832 // 24.2.3.1 DataView.prototype
3833 // 24.2.4 Properties of the DataView Prototype Object
3834 // 24.2.4.1 get DataView.prototype.buffer
3835 // 24.2.4.2 get DataView.prototype.byteLength
3836 // 24.2.4.3 get DataView.prototype.byteOffset
3837 // 24.2.4.4 DataView.prototype.constructor
3838 // 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
3839 // 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
3840 // 24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
3841 // 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
3842 // 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
3843 // 24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
3844 // 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
3845 // 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
3846 // 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
3847 // 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
3848 // 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
3849 // 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
3850 // 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
3851 // 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
3852 // 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
3853 // 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
3854
3855 // 24.2.4.21 DataView.prototype[ @@toStringTag ]
3856 define(DataView.prototype, $$toStringTag, 'DataView');
3857
3858 // 24.2.5 Properties of DataView Instances
3859 }());
3860
3861 // ---------------------------------------
3862 // 24.3 The JSON Object
3863 // ---------------------------------------
3864
3865 // 24.3.1 JSON.parse ( text [ , reviver ] )
3866 // 24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
3867 // 24.3.3 JSON [ @@toStringTag ]
3868 define(JSON, $$toStringTag, 'JSON');
3869
3870 // ---------------------------------------
3871 // 25.1 Iteration
3872 // ---------------------------------------
3873
3874 // 25.1.1 Common Iteration Interfaces
3875 // 25.1.1.1 The Iterable Interface
3876 // 25.1.1.2 The Iterator Interface
3877 // 25.1.1.3 The IteratorResult Interface
3878
3879 // 25.1.2 The %IteratorPrototype% Object
3880 // Defined earlier, so other prototypes can reference it.
3881 // 25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
3882 define($IteratorPrototype$, $$iterator, function() {
3883 return this;
3884 });
3885
3886
3887 // ---------------------------------------
3888 // 25.4 Promise Objects
3889 // ---------------------------------------
3890
3891 (function() {
3892 // 25.4 Promise Objects
3893
3894 // 25.4.1 Promise Abstract Operations
3895
3896 // 25.4.1.1 PromiseCapability Records
3897 // 25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
3898
3899 function IfAbruptRejectPromise(value, capability) {
3900 var rejectResult = capability['[[Reject]]'].call(undefined, value);
3901 return capability['[[Promise]]'];
3902 }
3903
3904 // 25.4.1.2 PromiseReaction Records
3905
3906 // 25.4.1.3 CreateResolvingFunctions ( promise )
3907
3908 function CreateResolvingFunctions(promise) {
3909 var alreadyResolved = {'[[value]]': false};
3910 var resolve = PromiseResolveFunction();
3911 set_internal(resolve, '[[Promise]]', promise);
3912 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
3913 var reject = PromiseRejectFunction();
3914 set_internal(reject, '[[Promise]]', promise);
3915 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
3916 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
3917 }
3918
3919 // 25.4.1.3.1 Promise Reject Functions
3920
3921 function PromiseRejectFunction() {
3922 var F = function(reason) {
3923 console.assert(Type(F['[[Promise]]']) === 'object');
3924 var promise = F['[[Promise]]'];
3925 var alreadyResolved = F['[[AlreadyResolved]]'];
3926 if (alreadyResolved['[[value]]']) return undefined;
3927 set_internal(alreadyResolved, '[[value]]', true);
3928 return RejectPromise(promise, reason);
3929 };
3930 return F;
3931 }
3932
3933 // 25.4.1.3.2 Promise Resolve Functions
3934
3935 function PromiseResolveFunction() {
3936 var F = function(resolution) {
3937 console.assert(Type(F['[[Promise]]']) === 'object');
3938 var promise = F['[[Promise]]'];
3939 var alreadyResolved = F['[[AlreadyResolved]]'];
3940 if (alreadyResolved['[[value]]']) return undefined;
3941 set_internal(alreadyResolved, '[[value]]', true);
3942
3943 if (SameValue(resolution, promise)) {
3944 var selfResolutionError = TypeError();
3945 return RejectPromise(promise, selfResolutionError);
3946 }
3947 if (Type(resolution) !== 'object')
3948 return FulfillPromise(promise, resolution);
3949 try {
3950 var then = resolution['then'];
3951 } catch(then) {
3952 return RejectPromise(promise, then);
3953 }
3954 if (!IsCallable(then))
3955 return FulfillPromise(promise, resolution);
3956 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
3957 return undefined;
3958 };
3959 return F;
3960 }
3961
3962 // 25.4.1.4 FulfillPromise ( promise, value )
3963
3964 function FulfillPromise(promise, value) {
3965 console.assert(promise['[[PromiseState]]'] === 'pending');
3966 var reactions = promise['[[PromiseFulfillReactions]]'];
3967 set_internal(promise, '[[PromiseResult]]', value);
3968 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
3969 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
3970 set_internal(promise, '[[PromiseState]]', 'fulfilled');
3971 return TriggerPromiseReactions(reactions, value);
3972 }
3973
3974 // 25.4.1.5 NewPromiseCapability ( C )
3975
3976 function NewPromiseCapability(c) {
3977 // To keep Promise hermetic, this doesn't look much like the spec.
3978 return CreatePromiseCapabilityRecord(undefined, c);
3979 }
3980
3981 // 25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
3982
3983 function CreatePromiseCapabilityRecord(promise, constructor) {
3984 // To keep Promise hermetic, this doesn't look much like the spec.
3985 console.assert(IsConstructor(constructor));
3986 var promiseCapability = {};
3987 set_internal(promiseCapability, '[[Promise]]', promise);
3988 set_internal(promiseCapability, '[[Resolve]]', undefined);
3989 set_internal(promiseCapability, '[[Reject]]', undefined);
3990 var executor = GetCapabilitiesExecutor();
3991 set_internal(executor, '[[Capability]]', promiseCapability);
3992
3993 // NOTE: Differs from spec; object is constructed here
3994 var constructorResult = promise = new constructor(executor);
3995 set_internal(promiseCapability, '[[Promise]]', promise);
3996
3997 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
3998 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
3999 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
4000 return promiseCapability;
4001 }
4002
4003 // 25.4.1.5.2 GetCapabilitiesExecutor Functions
4004
4005 function GetCapabilitiesExecutor() {
4006 var F = function(resolve, reject) {
4007 console.assert(F['[[Capability]]']);
4008 var promiseCapability = F['[[Capability]]'];
4009 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
4010 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
4011 set_internal(promiseCapability, '[[Resolve]]', resolve);
4012 set_internal(promiseCapability, '[[Reject]]', reject);
4013 return undefined;
4014 };
4015 return F;
4016 }
4017
4018 // 25.4.1.6 IsPromise ( x )
4019
4020 function IsPromise(x) {
4021 if (Type(x) !== 'object') return false;
4022 if (!('[[PromiseState]]' in x)) return false;
4023 if (x['[[PromiseState]]'] === undefined) return false;
4024 return true;
4025 }
4026
4027 // 25.4.1.7 RejectPromise ( promise, reason )
4028
4029 function RejectPromise(promise, reason) {
4030 console.assert(promise['[[PromiseState]]'] === 'pending');
4031 var reactions = promise['[[PromiseRejectReactions]]'];
4032 set_internal(promise, '[[PromiseResult]]', reason);
4033 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4034 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4035 set_internal(promise, '[[PromiseState]]', 'rejected');
4036 return TriggerPromiseReactions(reactions, reason);
4037 }
4038
4039 // 25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4040
4041 function TriggerPromiseReactions(reactions, argument) {
4042 for (var i = 0, len = reactions.length; i < len; ++i)
4043 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4044 return undefined;
4045 }
4046
4047 // 25.4.2 Promise Jobs
4048
4049 // 25.4.2.1 PromiseReactionJob ( reaction, argument )
4050
4051 function PromiseReactionJob(reaction, argument) {
4052 var promiseCapability = reaction['[[Capabilities]]'];
4053 var handler = reaction['[[Handler]]'];
4054 var handlerResult, status;
4055 try {
4056 if (handler === 'Identity') handlerResult = argument;
4057 else if (handler === 'Thrower') throw argument;
4058 else handlerResult = handler.call(undefined, argument);
4059 } catch (handlerResult) {
4060 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4061 NextJob(status); return;
4062 }
4063 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4064 NextJob(status);
4065 }
4066
4067 // 25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4068
4069 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4070 // SPEC BUG: promise vs. promiseToResolve
4071 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4072 try {
4073 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4074 resolvingFunctions['[[Reject]]']);
4075 } catch (thenCallResult) {
4076 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4077 NextJob(status); return;
4078 }
4079 NextJob(thenCallResult);
4080 }
4081
4082 // 25.4.3 The Promise Constructor
4083
4084 // 25.4.3.1 Promise ( executor )
4085
4086 function Promise(executor) {
4087 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4088 Object.defineProperty(this, '[[PromiseState]]', config);
4089 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4090 Object.defineProperty(this, '[[PromiseResult]]', config);
4091 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4092 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4093
4094 var promise = this;
4095 if (Type(promise) !== 'object') throw new TypeError();
4096 if (!('[[PromiseState]]' in promise)) throw TypeError();
4097 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4098 if (!IsCallable(executor)) throw TypeError();
4099
4100 set_internal(promise, '[[PromiseConstructor]]', Promise);
4101
4102 return InitializePromise(promise, executor);
4103 }
4104
4105 // 25.4.3.1.1 InitializePromise ( promise, executor )
4106
4107 function InitializePromise(promise, executor) {
4108 console.assert('[[PromiseState]]' in promise);
4109 console.assert(IsCallable(executor));
4110 set_internal(promise, '[[PromiseState]]', 'pending');
4111 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4112 set_internal(promise, '[[PromiseRejectReactions]]', []);
4113 var resolvingFunctions = CreateResolvingFunctions(promise);
4114 try {
4115 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4116 resolvingFunctions['[[Reject]]']);
4117 } catch (completion) {
4118 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4119 }
4120 return promise;
4121 }
4122
4123 // 25.4.4 Properties of the Promise Constructor
4124 // 25.4.4.1 Promise.all ( iterable )
4125
4126 define(Promise, 'all', function all(iterable) {
4127 var c = strict(this);
4128 var promiseCapability = NewPromiseCapability(c);
4129 try {
4130 var iterator = GetIterator(iterable);
4131 } catch (value) {
4132 promiseCapability['[[Reject]]'].call(undefined, value);
4133 return promiseCapability['[[Promise]]'];
4134 }
4135 var values = [];
4136 var remainingElementsCount = { value: 1 };
4137 var index = 0;
4138 while (true) {
4139 try {
4140 var next = IteratorStep(iterator);
4141 } catch (value) {
4142 promiseCapability['[[Reject]]'].call(undefined, value);
4143 return promiseCapability['[[Promise]]'];
4144 }
4145 if (!next) {
4146 remainingElementsCount.value -= 1;
4147 if (remainingElementsCount.value === 0) {
4148 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4149
4150
4151 }
4152 return promiseCapability['[[Promise]]'];
4153 }
4154 try {
4155 var nextValue = IteratorValue(next);
4156 } catch (value) {
4157 promiseCapability['[[Reject]]'].call(undefined, value);
4158 return promiseCapability['[[Promise]]'];
4159 }
4160 try {
4161 var nextPromise = c.resolve(nextValue);
4162 } catch (value) {
4163 promiseCapability['[[Reject]]'].call(undefined, value);
4164 return promiseCapability['[[Promise]]'];
4165 }
4166 var resolveElement = PromiseAllResolveElementFunction();
4167 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4168 set_internal(resolveElement, '[[Index]]', index);
4169 set_internal(resolveElement, '[[Values]]', values);
4170 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4171 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4172 remainingElementsCount.value += 1;
4173 try {
4174 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4175 } catch (value) {
4176 promiseCapability['[[Reject]]'].call(undefined, value);
4177 return promiseCapability['[[Promise]]'];
4178 }
4179 index += 1;
4180 }
4181 });
4182
4183 // 25.4.4.1.1 Promise.all Resolve Element Functions
4184
4185 function PromiseAllResolveElementFunction() {
4186 var F = function(x) {
4187 var alreadyCalled = F['[[AlreadyCalled]]'];
4188 if (alreadyCalled.value) return undefined;
4189 alreadyCalled.value = true;
4190 var index = F['[[Index]]'];
4191 var values = F['[[Values]]'];
4192 var promiseCapability = F['[[Capabilities]]'];
4193 var remainingElementsCount = F['[[RemainingElements]]'];
4194 try {
4195 values[index] = x;
4196 } catch (result) {
4197 promiseCapability['[[Reject]]'].call(undefined, result);
4198 return promiseCapability['[[Promise]]'];
4199 }
4200 remainingElementsCount.value -= 1;
4201 if (remainingElementsCount.value === 0)
4202 return promiseCapability['[[Resolve]]'].call(undefined, values);
4203 return undefined;
4204 };
4205 return F;
4206 }
4207
4208 // 25.4.4.2 Promise.prototype
4209
4210 Promise.prototype = {};
4211
4212 // 25.4.4.3 Promise.race ( iterable )
4213
4214 define(Promise, 'race', function race(iterable) {
4215 var c = strict(this);
4216 var promiseCapability = NewPromiseCapability(c);
4217 try {
4218 var iterator = GetIterator(iterable);
4219 } catch (value) {
4220 promiseCapability['[[Reject]]'].call(undefined, value);
4221 return promiseCapability['[[Promise]]'];
4222 }
4223 while (true) {
4224 try {
4225 var next = IteratorStep(iterator);
4226 } catch (value) {
4227 promiseCapability['[[Reject]]'].call(undefined, value);
4228 return promiseCapability['[[Promise]]'];
4229 }
4230 if (!next) return promiseCapability['[[Promise]]'];
4231 try {
4232 var nextValue = IteratorValue(next);
4233 } catch (value) {
4234 promiseCapability['[[Reject]]'].call(undefined, value);
4235 return promiseCapability['[[Promise]]'];
4236 }
4237 try {
4238 var nextPromise = c.resolve(nextValue);
4239 } catch (value) {
4240 promiseCapability['[[Reject]]'].call(undefined, value);
4241 return promiseCapability['[[Promise]]'];
4242 }
4243 try {
4244 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4245 } catch (value) {
4246 promiseCapability['[[Reject]]'].call(undefined, value);
4247 return promiseCapability['[[Promise]]'];
4248 }
4249 }
4250 });
4251
4252 // 25.4.4.4 Promise.reject ( r )
4253
4254 define(Promise, 'reject', function reject(r) {
4255 var c = strict(this);
4256 var promiseCapability = NewPromiseCapability(c);
4257 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4258 return promiseCapability['[[Promise]]'];
4259 });
4260
4261 // 25.4.4.5 Promise.resolve ( x )
4262
4263 define(Promise, 'resolve', function resolve(x) {
4264 var c = strict(this);
4265 if (IsPromise(x)) {
4266 var constructor = x['[[PromiseConstructor]]'];
4267 if (SameValue(constructor, c)) return x;
4268 }
4269 var promiseCapability = NewPromiseCapability(c);
4270 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4271 return promiseCapability['[[Promise]]'];
4272 });
4273
4274 // 25.4.4.6 Promise [ @@create ] ( )
4275 // 25.4.4.6.1 AllocatePromise ( constructor )
4276 // 25.4.5 Properties of the Promise Prototype Object
4277 // 25.4.5.1 Promise.prototype.catch ( onRejected )
4278
4279 define(Promise.prototype, 'catch', function catch_(onRejected) {
4280 var promise = this;
4281 return promise.then(undefined, onRejected);
4282 });
4283
4284 // 25.4.5.2 Promise.prototype.constructor
4285
4286 Promise.prototype.constructor = Promise;
4287
4288 // 25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4289
4290 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4291 var promise = this;
4292 if (!IsPromise(promise)) throw TypeError();
4293 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4294 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4295 var c = promise.constructor;
4296 var promiseCapability = NewPromiseCapability(c);
4297 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4298 '[[Handler]]': onFulfilled };
4299 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4300 '[[Handler]]': onRejected };
4301 if (promise['[[PromiseState]]'] === 'pending') {
4302 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4303 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4304 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4305 var value = promise['[[PromiseResult]]'];
4306 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4307 } else if (promise['[[PromiseState]]'] === 'rejected') {
4308 var reason = promise['[[PromiseResult]]'];
4309 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4310 }
4311 return promiseCapability['[[Promise]]'];
4312 });
4313
4314 // 25.4.6 Properties of Promise Instances
4315
4316 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4317 global.Promise = Promise;
4318
4319 // Patch early Promise.cast vs. Promise.resolve implementations
4320 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4321 }());
4322
4323 // 25.4.5.1 Promise.prototype [ @@toStringTag ]
4324 define(Promise.prototype, $$toStringTag, 'Promise');
4325
4326 // ---------------------------------------
4327 // 26 Reflection
4328 // ---------------------------------------
4329
4330 (function() {
4331 // 26.1 The Reflect Object
4332 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4333 global.Reflect = {};
4334
4335 // 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4336 define(
4337 Reflect, 'apply',
4338 function apply(target, thisArgument, argumentsList) {
4339 if (!IsCallable(target)) throw TypeError();
4340 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4341 });
4342
4343 // 26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4344 define(
4345 Reflect, 'construct',
4346 function construct(target, argumentsList) {
4347 return __cons(target, argumentsList);
4348 });
4349
4350 // 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4351 define(
4352 Reflect, 'defineProperty',
4353 function defineProperty(target, propertyKey, attributes) {
4354 try {
4355 Object.defineProperty(target, propertyKey, attributes);
4356 return true;
4357 } catch (_) {
4358 return false;
4359 }
4360 });
4361
4362 // 26.1.4 Reflect.deleteProperty ( target, propertyKey )
4363 define(
4364 Reflect, 'deleteProperty',
4365 function deleteProperty(target,name) {
4366 try {
4367 delete target[name];
4368 return !HasOwnProperty(target, name);
4369 } catch (_) {
4370 return false;
4371 }
4372 });
4373
4374 // 26.1.5 Reflect.enumerate ( target )
4375 define(
4376 Reflect, 'enumerate',
4377 function enumerate(target) {
4378 target = ToObject(target);
4379 var iterator = Enumerate(target);
4380 return iterator;
4381 });
4382
4383 // 26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4384 define(
4385 Reflect, 'get',
4386 function get(target, name, receiver) {
4387 target = ToObject(target);
4388 name = String(name);
4389 receiver = (receiver === undefined) ? target : ToObject(receiver);
4390 var desc = getPropertyDescriptor(target, name);
4391 if (desc && 'get' in desc)
4392 return Function.prototype.call.call(desc['get'], receiver);
4393 return target[name];
4394 });
4395
4396 // 26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4397 define(
4398 Reflect, 'getOwnPropertyDescriptor',
4399 Object.getOwnPropertyDescriptor);
4400
4401 // 26.1.8 Reflect.getPrototypeOf ( target )
4402 define(
4403 Reflect, 'getPrototypeOf',
4404 Object.getPrototypeOf);
4405
4406 // 26.1.9 Reflect.has ( target, propertyKey )
4407 define(
4408 Reflect, 'has',
4409 function has(target,name) {
4410 return String(name) in ToObject(target);
4411 });
4412
4413 // 26.1.10 Reflect.isExtensible (target)
4414 define(
4415 Reflect, 'isExtensible',
4416 Object.isExtensible);
4417
4418 // 26.1.11 Reflect.ownKeys ( target )
4419 define(
4420 Reflect, 'ownKeys',
4421 function ownKeys(target) {
4422 var obj = ToObject(target);
4423 return Object.getOwnPropertyNames(obj);
4424 });
4425
4426 // 26.1.12 Reflect.preventExtensions ( target )
4427 define(
4428 Reflect, 'preventExtensions',
4429 function preventExtensions(target) {
4430 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4431 });
4432
4433 // 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4434 define(
4435 Reflect, 'set',
4436 function set(target, name, value, receiver) {
4437 target = ToObject(target);
4438 name = String(name);
4439 receiver = (receiver === undefined) ? target : ToObject(receiver);
4440 var desc = getPropertyDescriptor(target, name);
4441 try {
4442 if (desc && 'set' in desc)
4443 Function.prototype.call.call(desc['set'], receiver, value);
4444 else
4445 target[name] = value;
4446 return true;
4447 } catch (_) {
4448 return false;
4449 }
4450 });
4451
4452 // 26.1.14 Reflect.setPrototypeOf ( target, proto )
4453 define(
4454 Reflect, 'setPrototypeOf',
4455 function setPrototypeOf(target, proto) {
4456 try {
4457 target.__proto__ = proto;
4458 return Reflect.getPrototypeOf(target) === proto;
4459 } catch(_) {
4460 return false;
4461 }
4462 });
4463
4464 }());
4465
4466 // ---------------------------------------
4467 // 26.2 Proxy Objects
4468 // ---------------------------------------
4469
4470 // Not polyfillable.
4471
4472 }(self));
4473
4474 // This helper is defined outside the main scope so that the use of
4475 // 'eval' does not taint the scope for minifiers.
4476 function __cons(t, a) {
4477 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4478 }
4479 </script>
4480 <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){
4481 'use strict'
4482
4483 exports.byteLength = byteLength
4484 exports.toByteArray = toByteArray
4485 exports.fromByteArray = fromByteArray
4486
4487 var lookup = []
4488 var revLookup = []
4489 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4490
4491 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4492 for (var i = 0, len = code.length; i < len; ++i) {
4493 lookup[i] = code[i]
4494 revLookup[code.charCodeAt(i)] = i
4495 }
4496
4497 revLookup['-'.charCodeAt(0)] = 62
4498 revLookup['_'.charCodeAt(0)] = 63
4499
4500 function placeHoldersCount (b64) {
4501 var len = b64.length
4502 if (len % 4 > 0) {
4503 throw new Error('Invalid string. Length must be a multiple of 4')
4504 }
4505
4506 // the number of equal signs (place holders)
4507 // if there are two placeholders, than the two characters before it
4508 // represent one byte
4509 // if there is only one, then the three characters before it represent 2 bytes
4510 // this is just a cheap hack to not do indexOf twice
4511 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
4512 }
4513
4514 function byteLength (b64) {
4515 // base64 is 4/3 + up to two characters of the original data
4516 return b64.length * 3 / 4 - placeHoldersCount(b64)
4517 }
4518
4519 function toByteArray (b64) {
4520 var i, j, l, tmp, placeHolders, arr
4521 var len = b64.length
4522 placeHolders = placeHoldersCount(b64)
4523
4524 arr = new Arr(len * 3 / 4 - placeHolders)
4525
4526 // if there are placeholders, only get up to the last complete 4 chars
4527 l = placeHolders > 0 ? len - 4 : len
4528
4529 var L = 0
4530
4531 for (i = 0, j = 0; i < l; i += 4, j += 3) {
4532 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
4533 arr[L++] = (tmp >> 16) & 0xFF
4534 arr[L++] = (tmp >> 8) & 0xFF
4535 arr[L++] = tmp & 0xFF
4536 }
4537
4538 if (placeHolders === 2) {
4539 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
4540 arr[L++] = tmp & 0xFF
4541 } else if (placeHolders === 1) {
4542 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
4543 arr[L++] = (tmp >> 8) & 0xFF
4544 arr[L++] = tmp & 0xFF
4545 }
4546
4547 return arr
4548 }
4549
4550 function tripletToBase64 (num) {
4551 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
4552 }
4553
4554 function encodeChunk (uint8, start, end) {
4555 var tmp
4556 var output = []
4557 for (var i = start; i < end; i += 3) {
4558 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
4559 output.push(tripletToBase64(tmp))
4560 }
4561 return output.join('')
4562 }
4563
4564 function fromByteArray (uint8) {
4565 var tmp
4566 var len = uint8.length
4567 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
4568 var output = ''
4569 var parts = []
4570 var maxChunkLength = 16383 // must be multiple of 3
4571
4572 // go through the array every three bytes, we'll deal with trailing stuff later
4573 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
4574 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
4575 }
4576
4577 // pad the end with zeros, but make sure to not forget the extra bytes
4578 if (extraBytes === 1) {
4579 tmp = uint8[len - 1]
4580 output += lookup[tmp >> 2]
4581 output += lookup[(tmp << 4) & 0x3F]
4582 output += '=='
4583 } else if (extraBytes === 2) {
4584 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
4585 output += lookup[tmp >> 10]
4586 output += lookup[(tmp >> 4) & 0x3F]
4587 output += lookup[(tmp << 2) & 0x3F]
4588 output += '='
4589 }
4590
4591 parts.push(output)
4592
4593 return parts.join('')
4594 }
4595
4596 },{}],2:[function(require,module,exports){
4597 /*!
4598 * The buffer module from node.js, for the browser.
4599 *
4600 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
4601 * @license MIT
4602 */
4603 /* eslint-disable no-proto */
4604
4605 'use strict'
4606
4607 var base64 = require('base64-js')
4608 var ieee754 = require('ieee754')
4609
4610 exports.Buffer = Buffer
4611 exports.SlowBuffer = SlowBuffer
4612 exports.INSPECT_MAX_BYTES = 50
4613
4614 var K_MAX_LENGTH = 0x7fffffff
4615 exports.kMaxLength = K_MAX_LENGTH
4616
4617 /**
4618 * If `Buffer.TYPED_ARRAY_SUPPORT`:
4619 * === true Use Uint8Array implementation (fastest)
4620 * === false Print warning and recommend using `buffer` v4.x which has an Object
4621 * implementation (most compatible, even IE6)
4622 *
4623 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
4624 * Opera 11.6+, iOS 4.2+.
4625 *
4626 * We report that the browser does not support typed arrays if the are not subclassable
4627 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
4628 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
4629 * for __proto__ and has a buggy typed array implementation.
4630 */
4631 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
4632
4633 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
4634 typeof console.error === 'function') {
4635 console.error(
4636 'This browser lacks typed array (Uint8Array) support which is required by ' +
4637 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
4638 )
4639 }
4640
4641 function typedArraySupport () {
4642 // Can typed array instances can be augmented?
4643 try {
4644 var arr = new Uint8Array(1)
4645 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
4646 return arr.foo() === 42
4647 } catch (e) {
4648 return false
4649 }
4650 }
4651
4652 function createBuffer (length) {
4653 if (length > K_MAX_LENGTH) {
4654 throw new RangeError('Invalid typed array length')
4655 }
4656 // Return an augmented `Uint8Array` instance
4657 var buf = new Uint8Array(length)
4658 buf.__proto__ = Buffer.prototype
4659 return buf
4660 }
4661
4662 /**
4663 * The Buffer constructor returns instances of `Uint8Array` that have their
4664 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
4665 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
4666 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
4667 * returns a single octet.
4668 *
4669 * The `Uint8Array` prototype remains unmodified.
4670 */
4671
4672 function Buffer (arg, encodingOrOffset, length) {
4673 // Common case.
4674 if (typeof arg === 'number') {
4675 if (typeof encodingOrOffset === 'string') {
4676 throw new Error(
4677 'If encoding is specified then the first argument must be a string'
4678 )
4679 }
4680 return allocUnsafe(arg)
4681 }
4682 return from(arg, encodingOrOffset, length)
4683 }
4684
4685 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
4686 if (typeof Symbol !== 'undefined' && Symbol.species &&
4687 Buffer[Symbol.species] === Buffer) {
4688 Object.defineProperty(Buffer, Symbol.species, {
4689 value: null,
4690 configurable: true,
4691 enumerable: false,
4692 writable: false
4693 })
4694 }
4695
4696 Buffer.poolSize = 8192 // not used by this implementation
4697
4698 function from (value, encodingOrOffset, length) {
4699 if (typeof value === 'number') {
4700 throw new TypeError('"value" argument must not be a number')
4701 }
4702
4703 if (value instanceof ArrayBuffer) {
4704 return fromArrayBuffer(value, encodingOrOffset, length)
4705 }
4706
4707 if (typeof value === 'string') {
4708 return fromString(value, encodingOrOffset)
4709 }
4710
4711 return fromObject(value)
4712 }
4713
4714 /**
4715 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
4716 * if value is a number.
4717 * Buffer.from(str[, encoding])
4718 * Buffer.from(array)
4719 * Buffer.from(buffer)
4720 * Buffer.from(arrayBuffer[, byteOffset[, length]])
4721 **/
4722 Buffer.from = function (value, encodingOrOffset, length) {
4723 return from(value, encodingOrOffset, length)
4724 }
4725
4726 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
4727 // https://github.com/feross/buffer/pull/148
4728 Buffer.prototype.__proto__ = Uint8Array.prototype
4729 Buffer.__proto__ = Uint8Array
4730
4731 function assertSize (size) {
4732 if (typeof size !== 'number') {
4733 throw new TypeError('"size" argument must be a number')
4734 } else if (size < 0) {
4735 throw new RangeError('"size" argument must not be negative')
4736 }
4737 }
4738
4739 function alloc (size, fill, encoding) {
4740 assertSize(size)
4741 if (size <= 0) {
4742 return createBuffer(size)
4743 }
4744 if (fill !== undefined) {
4745 // Only pay attention to encoding if it's a string. This
4746 // prevents accidentally sending in a number that would
4747 // be interpretted as a start offset.
4748 return typeof encoding === 'string'
4749 ? createBuffer(size).fill(fill, encoding)
4750 : createBuffer(size).fill(fill)
4751 }
4752 return createBuffer(size)
4753 }
4754
4755 /**
4756 * Creates a new filled Buffer instance.
4757 * alloc(size[, fill[, encoding]])
4758 **/
4759 Buffer.alloc = function (size, fill, encoding) {
4760 return alloc(size, fill, encoding)
4761 }
4762
4763 function allocUnsafe (size) {
4764 assertSize(size)
4765 return createBuffer(size < 0 ? 0 : checked(size) | 0)
4766 }
4767
4768 /**
4769 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
4770 * */
4771 Buffer.allocUnsafe = function (size) {
4772 return allocUnsafe(size)
4773 }
4774 /**
4775 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
4776 */
4777 Buffer.allocUnsafeSlow = function (size) {
4778 return allocUnsafe(size)
4779 }
4780
4781 function fromString (string, encoding) {
4782 if (typeof encoding !== 'string' || encoding === '') {
4783 encoding = 'utf8'
4784 }
4785
4786 if (!Buffer.isEncoding(encoding)) {
4787 throw new TypeError('"encoding" must be a valid string encoding')
4788 }
4789
4790 var length = byteLength(string, encoding) | 0
4791 var buf = createBuffer(length)
4792
4793 var actual = buf.write(string, encoding)
4794
4795 if (actual !== length) {
4796 // Writing a hex string, for example, that contains invalid characters will
4797 // cause everything after the first invalid character to be ignored. (e.g.
4798 // 'abxxcd' will be treated as 'ab')
4799 buf = buf.slice(0, actual)
4800 }
4801
4802 return buf
4803 }
4804
4805 function fromArrayLike (array) {
4806 var length = array.length < 0 ? 0 : checked(array.length) | 0
4807 var buf = createBuffer(length)
4808 for (var i = 0; i < length; i += 1) {
4809 buf[i] = array[i] & 255
4810 }
4811 return buf
4812 }
4813
4814 function fromArrayBuffer (array, byteOffset, length) {
4815 if (byteOffset < 0 || array.byteLength < byteOffset) {
4816 throw new RangeError('\'offset\' is out of bounds')
4817 }
4818
4819 if (array.byteLength < byteOffset + (length || 0)) {
4820 throw new RangeError('\'length\' is out of bounds')
4821 }
4822
4823 var buf
4824 if (byteOffset === undefined && length === undefined) {
4825 buf = new Uint8Array(array)
4826 } else if (length === undefined) {
4827 buf = new Uint8Array(array, byteOffset)
4828 } else {
4829 buf = new Uint8Array(array, byteOffset, length)
4830 }
4831
4832 // Return an augmented `Uint8Array` instance
4833 buf.__proto__ = Buffer.prototype
4834 return buf
4835 }
4836
4837 function fromObject (obj) {
4838 if (Buffer.isBuffer(obj)) {
4839 var len = checked(obj.length) | 0
4840 var buf = createBuffer(len)
4841
4842 if (buf.length === 0) {
4843 return buf
4844 }
4845
4846 obj.copy(buf, 0, 0, len)
4847 return buf
4848 }
4849
4850 if (obj) {
4851 if (isArrayBufferView(obj) || 'length' in obj) {
4852 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
4853 return createBuffer(0)
4854 }
4855 return fromArrayLike(obj)
4856 }
4857
4858 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
4859 return fromArrayLike(obj.data)
4860 }
4861 }
4862
4863 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
4864 }
4865
4866 function checked (length) {
4867 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
4868 // length is NaN (which is otherwise coerced to zero.)
4869 if (length >= K_MAX_LENGTH) {
4870 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
4871 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
4872 }
4873 return length | 0
4874 }
4875
4876 function SlowBuffer (length) {
4877 if (+length != length) { // eslint-disable-line eqeqeq
4878 length = 0
4879 }
4880 return Buffer.alloc(+length)
4881 }
4882
4883 Buffer.isBuffer = function isBuffer (b) {
4884 return b != null && b._isBuffer === true
4885 }
4886
4887 Buffer.compare = function compare (a, b) {
4888 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
4889 throw new TypeError('Arguments must be Buffers')
4890 }
4891
4892 if (a === b) return 0
4893
4894 var x = a.length
4895 var y = b.length
4896
4897 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
4898 if (a[i] !== b[i]) {
4899 x = a[i]
4900 y = b[i]
4901 break
4902 }
4903 }
4904
4905 if (x < y) return -1
4906 if (y < x) return 1
4907 return 0
4908 }
4909
4910 Buffer.isEncoding = function isEncoding (encoding) {
4911 switch (String(encoding).toLowerCase()) {
4912 case 'hex':
4913 case 'utf8':
4914 case 'utf-8':
4915 case 'ascii':
4916 case 'latin1':
4917 case 'binary':
4918 case 'base64':
4919 case 'ucs2':
4920 case 'ucs-2':
4921 case 'utf16le':
4922 case 'utf-16le':
4923 return true
4924 default:
4925 return false
4926 }
4927 }
4928
4929 Buffer.concat = function concat (list, length) {
4930 if (!Array.isArray(list)) {
4931 throw new TypeError('"list" argument must be an Array of Buffers')
4932 }
4933
4934 if (list.length === 0) {
4935 return Buffer.alloc(0)
4936 }
4937
4938 var i
4939 if (length === undefined) {
4940 length = 0
4941 for (i = 0; i < list.length; ++i) {
4942 length += list[i].length
4943 }
4944 }
4945
4946 var buffer = Buffer.allocUnsafe(length)
4947 var pos = 0
4948 for (i = 0; i < list.length; ++i) {
4949 var buf = list[i]
4950 if (!Buffer.isBuffer(buf)) {
4951 throw new TypeError('"list" argument must be an Array of Buffers')
4952 }
4953 buf.copy(buffer, pos)
4954 pos += buf.length
4955 }
4956 return buffer
4957 }
4958
4959 function byteLength (string, encoding) {
4960 if (Buffer.isBuffer(string)) {
4961 return string.length
4962 }
4963 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
4964 return string.byteLength
4965 }
4966 if (typeof string !== 'string') {
4967 string = '' + string
4968 }
4969
4970 var len = string.length
4971 if (len === 0) return 0
4972
4973 // Use a for loop to avoid recursion
4974 var loweredCase = false
4975 for (;;) {
4976 switch (encoding) {
4977 case 'ascii':
4978 case 'latin1':
4979 case 'binary':
4980 return len
4981 case 'utf8':
4982 case 'utf-8':
4983 case undefined:
4984 return utf8ToBytes(string).length
4985 case 'ucs2':
4986 case 'ucs-2':
4987 case 'utf16le':
4988 case 'utf-16le':
4989 return len * 2
4990 case 'hex':
4991 return len >>> 1
4992 case 'base64':
4993 return base64ToBytes(string).length
4994 default:
4995 if (loweredCase) return utf8ToBytes(string).length // assume utf8
4996 encoding = ('' + encoding).toLowerCase()
4997 loweredCase = true
4998 }
4999 }
5000 }
5001 Buffer.byteLength = byteLength
5002
5003 function slowToString (encoding, start, end) {
5004 var loweredCase = false
5005
5006 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
5007 // property of a typed array.
5008
5009 // This behaves neither like String nor Uint8Array in that we set start/end
5010 // to their upper/lower bounds if the value passed is out of range.
5011 // undefined is handled specially as per ECMA-262 6th Edition,
5012 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
5013 if (start === undefined || start < 0) {
5014 start = 0
5015 }
5016 // Return early if start > this.length. Done here to prevent potential uint32
5017 // coercion fail below.
5018 if (start > this.length) {
5019 return ''
5020 }
5021
5022 if (end === undefined || end > this.length) {
5023 end = this.length
5024 }
5025
5026 if (end <= 0) {
5027 return ''
5028 }
5029
5030 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
5031 end >>>= 0
5032 start >>>= 0
5033
5034 if (end <= start) {
5035 return ''
5036 }
5037
5038 if (!encoding) encoding = 'utf8'
5039
5040 while (true) {
5041 switch (encoding) {
5042 case 'hex':
5043 return hexSlice(this, start, end)
5044
5045 case 'utf8':
5046 case 'utf-8':
5047 return utf8Slice(this, start, end)
5048
5049 case 'ascii':
5050 return asciiSlice(this, start, end)
5051
5052 case 'latin1':
5053 case 'binary':
5054 return latin1Slice(this, start, end)
5055
5056 case 'base64':
5057 return base64Slice(this, start, end)
5058
5059 case 'ucs2':
5060 case 'ucs-2':
5061 case 'utf16le':
5062 case 'utf-16le':
5063 return utf16leSlice(this, start, end)
5064
5065 default:
5066 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5067 encoding = (encoding + '').toLowerCase()
5068 loweredCase = true
5069 }
5070 }
5071 }
5072
5073 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
5074 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
5075 // reliably in a browserify context because there could be multiple different
5076 // copies of the 'buffer' package in use. This method works even for Buffer
5077 // instances that were created from another copy of the `buffer` package.
5078 // See: https://github.com/feross/buffer/issues/154
5079 Buffer.prototype._isBuffer = true
5080
5081 function swap (b, n, m) {
5082 var i = b[n]
5083 b[n] = b[m]
5084 b[m] = i
5085 }
5086
5087 Buffer.prototype.swap16 = function swap16 () {
5088 var len = this.length
5089 if (len % 2 !== 0) {
5090 throw new RangeError('Buffer size must be a multiple of 16-bits')
5091 }
5092 for (var i = 0; i < len; i += 2) {
5093 swap(this, i, i + 1)
5094 }
5095 return this
5096 }
5097
5098 Buffer.prototype.swap32 = function swap32 () {
5099 var len = this.length
5100 if (len % 4 !== 0) {
5101 throw new RangeError('Buffer size must be a multiple of 32-bits')
5102 }
5103 for (var i = 0; i < len; i += 4) {
5104 swap(this, i, i + 3)
5105 swap(this, i + 1, i + 2)
5106 }
5107 return this
5108 }
5109
5110 Buffer.prototype.swap64 = function swap64 () {
5111 var len = this.length
5112 if (len % 8 !== 0) {
5113 throw new RangeError('Buffer size must be a multiple of 64-bits')
5114 }
5115 for (var i = 0; i < len; i += 8) {
5116 swap(this, i, i + 7)
5117 swap(this, i + 1, i + 6)
5118 swap(this, i + 2, i + 5)
5119 swap(this, i + 3, i + 4)
5120 }
5121 return this
5122 }
5123
5124 Buffer.prototype.toString = function toString () {
5125 var length = this.length
5126 if (length === 0) return ''
5127 if (arguments.length === 0) return utf8Slice(this, 0, length)
5128 return slowToString.apply(this, arguments)
5129 }
5130
5131 Buffer.prototype.equals = function equals (b) {
5132 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
5133 if (this === b) return true
5134 return Buffer.compare(this, b) === 0
5135 }
5136
5137 Buffer.prototype.inspect = function inspect () {
5138 var str = ''
5139 var max = exports.INSPECT_MAX_BYTES
5140 if (this.length > 0) {
5141 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
5142 if (this.length > max) str += ' ... '
5143 }
5144 return '<Buffer ' + str + '>'
5145 }
5146
5147 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
5148 if (!Buffer.isBuffer(target)) {
5149 throw new TypeError('Argument must be a Buffer')
5150 }
5151
5152 if (start === undefined) {
5153 start = 0
5154 }
5155 if (end === undefined) {
5156 end = target ? target.length : 0
5157 }
5158 if (thisStart === undefined) {
5159 thisStart = 0
5160 }
5161 if (thisEnd === undefined) {
5162 thisEnd = this.length
5163 }
5164
5165 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
5166 throw new RangeError('out of range index')
5167 }
5168
5169 if (thisStart >= thisEnd && start >= end) {
5170 return 0
5171 }
5172 if (thisStart >= thisEnd) {
5173 return -1
5174 }
5175 if (start >= end) {
5176 return 1
5177 }
5178
5179 start >>>= 0
5180 end >>>= 0
5181 thisStart >>>= 0
5182 thisEnd >>>= 0
5183
5184 if (this === target) return 0
5185
5186 var x = thisEnd - thisStart
5187 var y = end - start
5188 var len = Math.min(x, y)
5189
5190 var thisCopy = this.slice(thisStart, thisEnd)
5191 var targetCopy = target.slice(start, end)
5192
5193 for (var i = 0; i < len; ++i) {
5194 if (thisCopy[i] !== targetCopy[i]) {
5195 x = thisCopy[i]
5196 y = targetCopy[i]
5197 break
5198 }
5199 }
5200
5201 if (x < y) return -1
5202 if (y < x) return 1
5203 return 0
5204 }
5205
5206 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
5207 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
5208 //
5209 // Arguments:
5210 // - buffer - a Buffer to search
5211 // - val - a string, Buffer, or number
5212 // - byteOffset - an index into `buffer`; will be clamped to an int32
5213 // - encoding - an optional encoding, relevant is val is a string
5214 // - dir - true for indexOf, false for lastIndexOf
5215 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
5216 // Empty buffer means no match
5217 if (buffer.length === 0) return -1
5218
5219 // Normalize byteOffset
5220 if (typeof byteOffset === 'string') {
5221 encoding = byteOffset
5222 byteOffset = 0
5223 } else if (byteOffset > 0x7fffffff) {
5224 byteOffset = 0x7fffffff
5225 } else if (byteOffset < -0x80000000) {
5226 byteOffset = -0x80000000
5227 }
5228 byteOffset = +byteOffset // Coerce to Number.
5229 if (numberIsNaN(byteOffset)) {
5230 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
5231 byteOffset = dir ? 0 : (buffer.length - 1)
5232 }
5233
5234 // Normalize byteOffset: negative offsets start from the end of the buffer
5235 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
5236 if (byteOffset >= buffer.length) {
5237 if (dir) return -1
5238 else byteOffset = buffer.length - 1
5239 } else if (byteOffset < 0) {
5240 if (dir) byteOffset = 0
5241 else return -1
5242 }
5243
5244 // Normalize val
5245 if (typeof val === 'string') {
5246 val = Buffer.from(val, encoding)
5247 }
5248
5249 // Finally, search either indexOf (if dir is true) or lastIndexOf
5250 if (Buffer.isBuffer(val)) {
5251 // Special case: looking for empty string/buffer always fails
5252 if (val.length === 0) {
5253 return -1
5254 }
5255 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
5256 } else if (typeof val === 'number') {
5257 val = val & 0xFF // Search for a byte value [0-255]
5258 if (typeof Uint8Array.prototype.indexOf === 'function') {
5259 if (dir) {
5260 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
5261 } else {
5262 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
5263 }
5264 }
5265 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
5266 }
5267
5268 throw new TypeError('val must be string, number or Buffer')
5269 }
5270
5271 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
5272 var indexSize = 1
5273 var arrLength = arr.length
5274 var valLength = val.length
5275
5276 if (encoding !== undefined) {
5277 encoding = String(encoding).toLowerCase()
5278 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
5279 encoding === 'utf16le' || encoding === 'utf-16le') {
5280 if (arr.length < 2 || val.length < 2) {
5281 return -1
5282 }
5283 indexSize = 2
5284 arrLength /= 2
5285 valLength /= 2
5286 byteOffset /= 2
5287 }
5288 }
5289
5290 function read (buf, i) {
5291 if (indexSize === 1) {
5292 return buf[i]
5293 } else {
5294 return buf.readUInt16BE(i * indexSize)
5295 }
5296 }
5297
5298 var i
5299 if (dir) {
5300 var foundIndex = -1
5301 for (i = byteOffset; i < arrLength; i++) {
5302 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
5303 if (foundIndex === -1) foundIndex = i
5304 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
5305 } else {
5306 if (foundIndex !== -1) i -= i - foundIndex
5307 foundIndex = -1
5308 }
5309 }
5310 } else {
5311 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
5312 for (i = byteOffset; i >= 0; i--) {
5313 var found = true
5314 for (var j = 0; j < valLength; j++) {
5315 if (read(arr, i + j) !== read(val, j)) {
5316 found = false
5317 break
5318 }
5319 }
5320 if (found) return i
5321 }
5322 }
5323
5324 return -1
5325 }
5326
5327 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
5328 return this.indexOf(val, byteOffset, encoding) !== -1
5329 }
5330
5331 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
5332 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
5333 }
5334
5335 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
5336 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
5337 }
5338
5339 function hexWrite (buf, string, offset, length) {
5340 offset = Number(offset) || 0
5341 var remaining = buf.length - offset
5342 if (!length) {
5343 length = remaining
5344 } else {
5345 length = Number(length)
5346 if (length > remaining) {
5347 length = remaining
5348 }
5349 }
5350
5351 // must be an even number of digits
5352 var strLen = string.length
5353 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
5354
5355 if (length > strLen / 2) {
5356 length = strLen / 2
5357 }
5358 for (var i = 0; i < length; ++i) {
5359 var parsed = parseInt(string.substr(i * 2, 2), 16)
5360 if (numberIsNaN(parsed)) return i
5361 buf[offset + i] = parsed
5362 }
5363 return i
5364 }
5365
5366 function utf8Write (buf, string, offset, length) {
5367 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
5368 }
5369
5370 function asciiWrite (buf, string, offset, length) {
5371 return blitBuffer(asciiToBytes(string), buf, offset, length)
5372 }
5373
5374 function latin1Write (buf, string, offset, length) {
5375 return asciiWrite(buf, string, offset, length)
5376 }
5377
5378 function base64Write (buf, string, offset, length) {
5379 return blitBuffer(base64ToBytes(string), buf, offset, length)
5380 }
5381
5382 function ucs2Write (buf, string, offset, length) {
5383 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
5384 }
5385
5386 Buffer.prototype.write = function write (string, offset, length, encoding) {
5387 // Buffer#write(string)
5388 if (offset === undefined) {
5389 encoding = 'utf8'
5390 length = this.length
5391 offset = 0
5392 // Buffer#write(string, encoding)
5393 } else if (length === undefined && typeof offset === 'string') {
5394 encoding = offset
5395 length = this.length
5396 offset = 0
5397 // Buffer#write(string, offset[, length][, encoding])
5398 } else if (isFinite(offset)) {
5399 offset = offset >>> 0
5400 if (isFinite(length)) {
5401 length = length >>> 0
5402 if (encoding === undefined) encoding = 'utf8'
5403 } else {
5404 encoding = length
5405 length = undefined
5406 }
5407 } else {
5408 throw new Error(
5409 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
5410 )
5411 }
5412
5413 var remaining = this.length - offset
5414 if (length === undefined || length > remaining) length = remaining
5415
5416 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
5417 throw new RangeError('Attempt to write outside buffer bounds')
5418 }
5419
5420 if (!encoding) encoding = 'utf8'
5421
5422 var loweredCase = false
5423 for (;;) {
5424 switch (encoding) {
5425 case 'hex':
5426 return hexWrite(this, string, offset, length)
5427
5428 case 'utf8':
5429 case 'utf-8':
5430 return utf8Write(this, string, offset, length)
5431
5432 case 'ascii':
5433 return asciiWrite(this, string, offset, length)
5434
5435 case 'latin1':
5436 case 'binary':
5437 return latin1Write(this, string, offset, length)
5438
5439 case 'base64':
5440 // Warning: maxLength not taken into account in base64Write
5441 return base64Write(this, string, offset, length)
5442
5443 case 'ucs2':
5444 case 'ucs-2':
5445 case 'utf16le':
5446 case 'utf-16le':
5447 return ucs2Write(this, string, offset, length)
5448
5449 default:
5450 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5451 encoding = ('' + encoding).toLowerCase()
5452 loweredCase = true
5453 }
5454 }
5455 }
5456
5457 Buffer.prototype.toJSON = function toJSON () {
5458 return {
5459 type: 'Buffer',
5460 data: Array.prototype.slice.call(this._arr || this, 0)
5461 }
5462 }
5463
5464 function base64Slice (buf, start, end) {
5465 if (start === 0 && end === buf.length) {
5466 return base64.fromByteArray(buf)
5467 } else {
5468 return base64.fromByteArray(buf.slice(start, end))
5469 }
5470 }
5471
5472 function utf8Slice (buf, start, end) {
5473 end = Math.min(buf.length, end)
5474 var res = []
5475
5476 var i = start
5477 while (i < end) {
5478 var firstByte = buf[i]
5479 var codePoint = null
5480 var bytesPerSequence = (firstByte > 0xEF) ? 4
5481 : (firstByte > 0xDF) ? 3
5482 : (firstByte > 0xBF) ? 2
5483 : 1
5484
5485 if (i + bytesPerSequence <= end) {
5486 var secondByte, thirdByte, fourthByte, tempCodePoint
5487
5488 switch (bytesPerSequence) {
5489 case 1:
5490 if (firstByte < 0x80) {
5491 codePoint = firstByte
5492 }
5493 break
5494 case 2:
5495 secondByte = buf[i + 1]
5496 if ((secondByte & 0xC0) === 0x80) {
5497 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
5498 if (tempCodePoint > 0x7F) {
5499 codePoint = tempCodePoint
5500 }
5501 }
5502 break
5503 case 3:
5504 secondByte = buf[i + 1]
5505 thirdByte = buf[i + 2]
5506 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
5507 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
5508 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
5509 codePoint = tempCodePoint
5510 }
5511 }
5512 break
5513 case 4:
5514 secondByte = buf[i + 1]
5515 thirdByte = buf[i + 2]
5516 fourthByte = buf[i + 3]
5517 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
5518 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
5519 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
5520 codePoint = tempCodePoint
5521 }
5522 }
5523 }
5524 }
5525
5526 if (codePoint === null) {
5527 // we did not generate a valid codePoint so insert a
5528 // replacement char (U+FFFD) and advance only 1 byte
5529 codePoint = 0xFFFD
5530 bytesPerSequence = 1
5531 } else if (codePoint > 0xFFFF) {
5532 // encode to utf16 (surrogate pair dance)
5533 codePoint -= 0x10000
5534 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
5535 codePoint = 0xDC00 | codePoint & 0x3FF
5536 }
5537
5538 res.push(codePoint)
5539 i += bytesPerSequence
5540 }
5541
5542 return decodeCodePointsArray(res)
5543 }
5544
5545 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
5546 // the lowest limit is Chrome, with 0x10000 args.
5547 // We go 1 magnitude less, for safety
5548 var MAX_ARGUMENTS_LENGTH = 0x1000
5549
5550 function decodeCodePointsArray (codePoints) {
5551 var len = codePoints.length
5552 if (len <= MAX_ARGUMENTS_LENGTH) {
5553 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
5554 }
5555
5556 // Decode in chunks to avoid "call stack size exceeded".
5557 var res = ''
5558 var i = 0
5559 while (i < len) {
5560 res += String.fromCharCode.apply(
5561 String,
5562 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
5563 )
5564 }
5565 return res
5566 }
5567
5568 function asciiSlice (buf, start, end) {
5569 var ret = ''
5570 end = Math.min(buf.length, end)
5571
5572 for (var i = start; i < end; ++i) {
5573 ret += String.fromCharCode(buf[i] & 0x7F)
5574 }
5575 return ret
5576 }
5577
5578 function latin1Slice (buf, start, end) {
5579 var ret = ''
5580 end = Math.min(buf.length, end)
5581
5582 for (var i = start; i < end; ++i) {
5583 ret += String.fromCharCode(buf[i])
5584 }
5585 return ret
5586 }
5587
5588 function hexSlice (buf, start, end) {
5589 var len = buf.length
5590
5591 if (!start || start < 0) start = 0
5592 if (!end || end < 0 || end > len) end = len
5593
5594 var out = ''
5595 for (var i = start; i < end; ++i) {
5596 out += toHex(buf[i])
5597 }
5598 return out
5599 }
5600
5601 function utf16leSlice (buf, start, end) {
5602 var bytes = buf.slice(start, end)
5603 var res = ''
5604 for (var i = 0; i < bytes.length; i += 2) {
5605 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
5606 }
5607 return res
5608 }
5609
5610 Buffer.prototype.slice = function slice (start, end) {
5611 var len = this.length
5612 start = ~~start
5613 end = end === undefined ? len : ~~end
5614
5615 if (start < 0) {
5616 start += len
5617 if (start < 0) start = 0
5618 } else if (start > len) {
5619 start = len
5620 }
5621
5622 if (end < 0) {
5623 end += len
5624 if (end < 0) end = 0
5625 } else if (end > len) {
5626 end = len
5627 }
5628
5629 if (end < start) end = start
5630
5631 var newBuf = this.subarray(start, end)
5632 // Return an augmented `Uint8Array` instance
5633 newBuf.__proto__ = Buffer.prototype
5634 return newBuf
5635 }
5636
5637 /*
5638 * Need to make sure that buffer isn't trying to write out of bounds.
5639 */
5640 function checkOffset (offset, ext, length) {
5641 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
5642 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
5643 }
5644
5645 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
5646 offset = offset >>> 0
5647 byteLength = byteLength >>> 0
5648 if (!noAssert) checkOffset(offset, byteLength, this.length)
5649
5650 var val = this[offset]
5651 var mul = 1
5652 var i = 0
5653 while (++i < byteLength && (mul *= 0x100)) {
5654 val += this[offset + i] * mul
5655 }
5656
5657 return val
5658 }
5659
5660 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
5661 offset = offset >>> 0
5662 byteLength = byteLength >>> 0
5663 if (!noAssert) {
5664 checkOffset(offset, byteLength, this.length)
5665 }
5666
5667 var val = this[offset + --byteLength]
5668 var mul = 1
5669 while (byteLength > 0 && (mul *= 0x100)) {
5670 val += this[offset + --byteLength] * mul
5671 }
5672
5673 return val
5674 }
5675
5676 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
5677 offset = offset >>> 0
5678 if (!noAssert) checkOffset(offset, 1, this.length)
5679 return this[offset]
5680 }
5681
5682 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
5683 offset = offset >>> 0
5684 if (!noAssert) checkOffset(offset, 2, this.length)
5685 return this[offset] | (this[offset + 1] << 8)
5686 }
5687
5688 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
5689 offset = offset >>> 0
5690 if (!noAssert) checkOffset(offset, 2, this.length)
5691 return (this[offset] << 8) | this[offset + 1]
5692 }
5693
5694 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
5695 offset = offset >>> 0
5696 if (!noAssert) checkOffset(offset, 4, this.length)
5697
5698 return ((this[offset]) |
5699 (this[offset + 1] << 8) |
5700 (this[offset + 2] << 16)) +
5701 (this[offset + 3] * 0x1000000)
5702 }
5703
5704 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
5705 offset = offset >>> 0
5706 if (!noAssert) checkOffset(offset, 4, this.length)
5707
5708 return (this[offset] * 0x1000000) +
5709 ((this[offset + 1] << 16) |
5710 (this[offset + 2] << 8) |
5711 this[offset + 3])
5712 }
5713
5714 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
5715 offset = offset >>> 0
5716 byteLength = byteLength >>> 0
5717 if (!noAssert) checkOffset(offset, byteLength, this.length)
5718
5719 var val = this[offset]
5720 var mul = 1
5721 var i = 0
5722 while (++i < byteLength && (mul *= 0x100)) {
5723 val += this[offset + i] * mul
5724 }
5725 mul *= 0x80
5726
5727 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5728
5729 return val
5730 }
5731
5732 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
5733 offset = offset >>> 0
5734 byteLength = byteLength >>> 0
5735 if (!noAssert) checkOffset(offset, byteLength, this.length)
5736
5737 var i = byteLength
5738 var mul = 1
5739 var val = this[offset + --i]
5740 while (i > 0 && (mul *= 0x100)) {
5741 val += this[offset + --i] * mul
5742 }
5743 mul *= 0x80
5744
5745 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5746
5747 return val
5748 }
5749
5750 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
5751 offset = offset >>> 0
5752 if (!noAssert) checkOffset(offset, 1, this.length)
5753 if (!(this[offset] & 0x80)) return (this[offset])
5754 return ((0xff - this[offset] + 1) * -1)
5755 }
5756
5757 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
5758 offset = offset >>> 0
5759 if (!noAssert) checkOffset(offset, 2, this.length)
5760 var val = this[offset] | (this[offset + 1] << 8)
5761 return (val & 0x8000) ? val | 0xFFFF0000 : val
5762 }
5763
5764 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
5765 offset = offset >>> 0
5766 if (!noAssert) checkOffset(offset, 2, this.length)
5767 var val = this[offset + 1] | (this[offset] << 8)
5768 return (val & 0x8000) ? val | 0xFFFF0000 : val
5769 }
5770
5771 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
5772 offset = offset >>> 0
5773 if (!noAssert) checkOffset(offset, 4, this.length)
5774
5775 return (this[offset]) |
5776 (this[offset + 1] << 8) |
5777 (this[offset + 2] << 16) |
5778 (this[offset + 3] << 24)
5779 }
5780
5781 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
5782 offset = offset >>> 0
5783 if (!noAssert) checkOffset(offset, 4, this.length)
5784
5785 return (this[offset] << 24) |
5786 (this[offset + 1] << 16) |
5787 (this[offset + 2] << 8) |
5788 (this[offset + 3])
5789 }
5790
5791 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
5792 offset = offset >>> 0
5793 if (!noAssert) checkOffset(offset, 4, this.length)
5794 return ieee754.read(this, offset, true, 23, 4)
5795 }
5796
5797 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
5798 offset = offset >>> 0
5799 if (!noAssert) checkOffset(offset, 4, this.length)
5800 return ieee754.read(this, offset, false, 23, 4)
5801 }
5802
5803 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
5804 offset = offset >>> 0
5805 if (!noAssert) checkOffset(offset, 8, this.length)
5806 return ieee754.read(this, offset, true, 52, 8)
5807 }
5808
5809 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
5810 offset = offset >>> 0
5811 if (!noAssert) checkOffset(offset, 8, this.length)
5812 return ieee754.read(this, offset, false, 52, 8)
5813 }
5814
5815 function checkInt (buf, value, offset, ext, max, min) {
5816 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
5817 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
5818 if (offset + ext > buf.length) throw new RangeError('Index out of range')
5819 }
5820
5821 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
5822 value = +value
5823 offset = offset >>> 0
5824 byteLength = byteLength >>> 0
5825 if (!noAssert) {
5826 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5827 checkInt(this, value, offset, byteLength, maxBytes, 0)
5828 }
5829
5830 var mul = 1
5831 var i = 0
5832 this[offset] = value & 0xFF
5833 while (++i < byteLength && (mul *= 0x100)) {
5834 this[offset + i] = (value / mul) & 0xFF
5835 }
5836
5837 return offset + byteLength
5838 }
5839
5840 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
5841 value = +value
5842 offset = offset >>> 0
5843 byteLength = byteLength >>> 0
5844 if (!noAssert) {
5845 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5846 checkInt(this, value, offset, byteLength, maxBytes, 0)
5847 }
5848
5849 var i = byteLength - 1
5850 var mul = 1
5851 this[offset + i] = value & 0xFF
5852 while (--i >= 0 && (mul *= 0x100)) {
5853 this[offset + i] = (value / mul) & 0xFF
5854 }
5855
5856 return offset + byteLength
5857 }
5858
5859 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
5860 value = +value
5861 offset = offset >>> 0
5862 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
5863 this[offset] = (value & 0xff)
5864 return offset + 1
5865 }
5866
5867 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
5868 value = +value
5869 offset = offset >>> 0
5870 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5871 this[offset] = (value & 0xff)
5872 this[offset + 1] = (value >>> 8)
5873 return offset + 2
5874 }
5875
5876 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
5877 value = +value
5878 offset = offset >>> 0
5879 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5880 this[offset] = (value >>> 8)
5881 this[offset + 1] = (value & 0xff)
5882 return offset + 2
5883 }
5884
5885 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
5886 value = +value
5887 offset = offset >>> 0
5888 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5889 this[offset + 3] = (value >>> 24)
5890 this[offset + 2] = (value >>> 16)
5891 this[offset + 1] = (value >>> 8)
5892 this[offset] = (value & 0xff)
5893 return offset + 4
5894 }
5895
5896 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
5897 value = +value
5898 offset = offset >>> 0
5899 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5900 this[offset] = (value >>> 24)
5901 this[offset + 1] = (value >>> 16)
5902 this[offset + 2] = (value >>> 8)
5903 this[offset + 3] = (value & 0xff)
5904 return offset + 4
5905 }
5906
5907 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
5908 value = +value
5909 offset = offset >>> 0
5910 if (!noAssert) {
5911 var limit = Math.pow(2, (8 * byteLength) - 1)
5912
5913 checkInt(this, value, offset, byteLength, limit - 1, -limit)
5914 }
5915
5916 var i = 0
5917 var mul = 1
5918 var sub = 0
5919 this[offset] = value & 0xFF
5920 while (++i < byteLength && (mul *= 0x100)) {
5921 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
5922 sub = 1
5923 }
5924 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
5925 }
5926
5927 return offset + byteLength
5928 }
5929
5930 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
5931 value = +value
5932 offset = offset >>> 0
5933 if (!noAssert) {
5934 var limit = Math.pow(2, (8 * byteLength) - 1)
5935
5936 checkInt(this, value, offset, byteLength, limit - 1, -limit)
5937 }
5938
5939 var i = byteLength - 1
5940 var mul = 1
5941 var sub = 0
5942 this[offset + i] = value & 0xFF
5943 while (--i >= 0 && (mul *= 0x100)) {
5944 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
5945 sub = 1
5946 }
5947 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
5948 }
5949
5950 return offset + byteLength
5951 }
5952
5953 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
5954 value = +value
5955 offset = offset >>> 0
5956 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
5957 if (value < 0) value = 0xff + value + 1
5958 this[offset] = (value & 0xff)
5959 return offset + 1
5960 }
5961
5962 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
5963 value = +value
5964 offset = offset >>> 0
5965 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
5966 this[offset] = (value & 0xff)
5967 this[offset + 1] = (value >>> 8)
5968 return offset + 2
5969 }
5970
5971 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
5972 value = +value
5973 offset = offset >>> 0
5974 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
5975 this[offset] = (value >>> 8)
5976 this[offset + 1] = (value & 0xff)
5977 return offset + 2
5978 }
5979
5980 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
5981 value = +value
5982 offset = offset >>> 0
5983 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
5984 this[offset] = (value & 0xff)
5985 this[offset + 1] = (value >>> 8)
5986 this[offset + 2] = (value >>> 16)
5987 this[offset + 3] = (value >>> 24)
5988 return offset + 4
5989 }
5990
5991 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
5992 value = +value
5993 offset = offset >>> 0
5994 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
5995 if (value < 0) value = 0xffffffff + value + 1
5996 this[offset] = (value >>> 24)
5997 this[offset + 1] = (value >>> 16)
5998 this[offset + 2] = (value >>> 8)
5999 this[offset + 3] = (value & 0xff)
6000 return offset + 4
6001 }
6002
6003 function checkIEEE754 (buf, value, offset, ext, max, min) {
6004 if (offset + ext > buf.length) throw new RangeError('Index out of range')
6005 if (offset < 0) throw new RangeError('Index out of range')
6006 }
6007
6008 function writeFloat (buf, value, offset, littleEndian, noAssert) {
6009 value = +value
6010 offset = offset >>> 0
6011 if (!noAssert) {
6012 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
6013 }
6014 ieee754.write(buf, value, offset, littleEndian, 23, 4)
6015 return offset + 4
6016 }
6017
6018 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
6019 return writeFloat(this, value, offset, true, noAssert)
6020 }
6021
6022 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
6023 return writeFloat(this, value, offset, false, noAssert)
6024 }
6025
6026 function writeDouble (buf, value, offset, littleEndian, noAssert) {
6027 value = +value
6028 offset = offset >>> 0
6029 if (!noAssert) {
6030 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
6031 }
6032 ieee754.write(buf, value, offset, littleEndian, 52, 8)
6033 return offset + 8
6034 }
6035
6036 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
6037 return writeDouble(this, value, offset, true, noAssert)
6038 }
6039
6040 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
6041 return writeDouble(this, value, offset, false, noAssert)
6042 }
6043
6044 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
6045 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
6046 if (!start) start = 0
6047 if (!end && end !== 0) end = this.length
6048 if (targetStart >= target.length) targetStart = target.length
6049 if (!targetStart) targetStart = 0
6050 if (end > 0 && end < start) end = start
6051
6052 // Copy 0 bytes; we're done
6053 if (end === start) return 0
6054 if (target.length === 0 || this.length === 0) return 0
6055
6056 // Fatal error conditions
6057 if (targetStart < 0) {
6058 throw new RangeError('targetStart out of bounds')
6059 }
6060 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
6061 if (end < 0) throw new RangeError('sourceEnd out of bounds')
6062
6063 // Are we oob?
6064 if (end > this.length) end = this.length
6065 if (target.length - targetStart < end - start) {
6066 end = target.length - targetStart + start
6067 }
6068
6069 var len = end - start
6070 var i
6071
6072 if (this === target && start < targetStart && targetStart < end) {
6073 // descending copy from end
6074 for (i = len - 1; i >= 0; --i) {
6075 target[i + targetStart] = this[i + start]
6076 }
6077 } else if (len < 1000) {
6078 // ascending copy from start
6079 for (i = 0; i < len; ++i) {
6080 target[i + targetStart] = this[i + start]
6081 }
6082 } else {
6083 Uint8Array.prototype.set.call(
6084 target,
6085 this.subarray(start, start + len),
6086 targetStart
6087 )
6088 }
6089
6090 return len
6091 }
6092
6093 // Usage:
6094 // buffer.fill(number[, offset[, end]])
6095 // buffer.fill(buffer[, offset[, end]])
6096 // buffer.fill(string[, offset[, end]][, encoding])
6097 Buffer.prototype.fill = function fill (val, start, end, encoding) {
6098 // Handle string cases:
6099 if (typeof val === 'string') {
6100 if (typeof start === 'string') {
6101 encoding = start
6102 start = 0
6103 end = this.length
6104 } else if (typeof end === 'string') {
6105 encoding = end
6106 end = this.length
6107 }
6108 if (val.length === 1) {
6109 var code = val.charCodeAt(0)
6110 if (code < 256) {
6111 val = code
6112 }
6113 }
6114 if (encoding !== undefined && typeof encoding !== 'string') {
6115 throw new TypeError('encoding must be a string')
6116 }
6117 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
6118 throw new TypeError('Unknown encoding: ' + encoding)
6119 }
6120 } else if (typeof val === 'number') {
6121 val = val & 255
6122 }
6123
6124 // Invalid ranges are not set to a default, so can range check early.
6125 if (start < 0 || this.length < start || this.length < end) {
6126 throw new RangeError('Out of range index')
6127 }
6128
6129 if (end <= start) {
6130 return this
6131 }
6132
6133 start = start >>> 0
6134 end = end === undefined ? this.length : end >>> 0
6135
6136 if (!val) val = 0
6137
6138 var i
6139 if (typeof val === 'number') {
6140 for (i = start; i < end; ++i) {
6141 this[i] = val
6142 }
6143 } else {
6144 var bytes = Buffer.isBuffer(val)
6145 ? val
6146 : new Buffer(val, encoding)
6147 var len = bytes.length
6148 for (i = 0; i < end - start; ++i) {
6149 this[i + start] = bytes[i % len]
6150 }
6151 }
6152
6153 return this
6154 }
6155
6156 // HELPER FUNCTIONS
6157 // ================
6158
6159 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
6160
6161 function base64clean (str) {
6162 // Node strips out invalid characters like \n and \t from the string, base64-js does not
6163 str = str.trim().replace(INVALID_BASE64_RE, '')
6164 // Node converts strings with length < 2 to ''
6165 if (str.length < 2) return ''
6166 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
6167 while (str.length % 4 !== 0) {
6168 str = str + '='
6169 }
6170 return str
6171 }
6172
6173 function toHex (n) {
6174 if (n < 16) return '0' + n.toString(16)
6175 return n.toString(16)
6176 }
6177
6178 function utf8ToBytes (string, units) {
6179 units = units || Infinity
6180 var codePoint
6181 var length = string.length
6182 var leadSurrogate = null
6183 var bytes = []
6184
6185 for (var i = 0; i < length; ++i) {
6186 codePoint = string.charCodeAt(i)
6187
6188 // is surrogate component
6189 if (codePoint > 0xD7FF && codePoint < 0xE000) {
6190 // last char was a lead
6191 if (!leadSurrogate) {
6192 // no lead yet
6193 if (codePoint > 0xDBFF) {
6194 // unexpected trail
6195 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6196 continue
6197 } else if (i + 1 === length) {
6198 // unpaired lead
6199 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6200 continue
6201 }
6202
6203 // valid lead
6204 leadSurrogate = codePoint
6205
6206 continue
6207 }
6208
6209 // 2 leads in a row
6210 if (codePoint < 0xDC00) {
6211 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6212 leadSurrogate = codePoint
6213 continue
6214 }
6215
6216 // valid surrogate pair
6217 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
6218 } else if (leadSurrogate) {
6219 // valid bmp char, but last char was a lead
6220 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6221 }
6222
6223 leadSurrogate = null
6224
6225 // encode utf8
6226 if (codePoint < 0x80) {
6227 if ((units -= 1) < 0) break
6228 bytes.push(codePoint)
6229 } else if (codePoint < 0x800) {
6230 if ((units -= 2) < 0) break
6231 bytes.push(
6232 codePoint >> 0x6 | 0xC0,
6233 codePoint & 0x3F | 0x80
6234 )
6235 } else if (codePoint < 0x10000) {
6236 if ((units -= 3) < 0) break
6237 bytes.push(
6238 codePoint >> 0xC | 0xE0,
6239 codePoint >> 0x6 & 0x3F | 0x80,
6240 codePoint & 0x3F | 0x80
6241 )
6242 } else if (codePoint < 0x110000) {
6243 if ((units -= 4) < 0) break
6244 bytes.push(
6245 codePoint >> 0x12 | 0xF0,
6246 codePoint >> 0xC & 0x3F | 0x80,
6247 codePoint >> 0x6 & 0x3F | 0x80,
6248 codePoint & 0x3F | 0x80
6249 )
6250 } else {
6251 throw new Error('Invalid code point')
6252 }
6253 }
6254
6255 return bytes
6256 }
6257
6258 function asciiToBytes (str) {
6259 var byteArray = []
6260 for (var i = 0; i < str.length; ++i) {
6261 // Node's code seems to be doing this and not & 0x7F..
6262 byteArray.push(str.charCodeAt(i) & 0xFF)
6263 }
6264 return byteArray
6265 }
6266
6267 function utf16leToBytes (str, units) {
6268 var c, hi, lo
6269 var byteArray = []
6270 for (var i = 0; i < str.length; ++i) {
6271 if ((units -= 2) < 0) break
6272
6273 c = str.charCodeAt(i)
6274 hi = c >> 8
6275 lo = c % 256
6276 byteArray.push(lo)
6277 byteArray.push(hi)
6278 }
6279
6280 return byteArray
6281 }
6282
6283 function base64ToBytes (str) {
6284 return base64.toByteArray(base64clean(str))
6285 }
6286
6287 function blitBuffer (src, dst, offset, length) {
6288 for (var i = 0; i < length; ++i) {
6289 if ((i + offset >= dst.length) || (i >= src.length)) break
6290 dst[i + offset] = src[i]
6291 }
6292 return i
6293 }
6294
6295 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
6296 function isArrayBufferView (obj) {
6297 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
6298 }
6299
6300 function numberIsNaN (obj) {
6301 return obj !== obj // eslint-disable-line no-self-compare
6302 }
6303
6304 },{"base64-js":1,"ieee754":3}],3:[function(require,module,exports){
6305 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
6306 var e, m
6307 var eLen = nBytes * 8 - mLen - 1
6308 var eMax = (1 << eLen) - 1
6309 var eBias = eMax >> 1
6310 var nBits = -7
6311 var i = isLE ? (nBytes - 1) : 0
6312 var d = isLE ? -1 : 1
6313 var s = buffer[offset + i]
6314
6315 i += d
6316
6317 e = s & ((1 << (-nBits)) - 1)
6318 s >>= (-nBits)
6319 nBits += eLen
6320 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6321
6322 m = e & ((1 << (-nBits)) - 1)
6323 e >>= (-nBits)
6324 nBits += mLen
6325 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6326
6327 if (e === 0) {
6328 e = 1 - eBias
6329 } else if (e === eMax) {
6330 return m ? NaN : ((s ? -1 : 1) * Infinity)
6331 } else {
6332 m = m + Math.pow(2, mLen)
6333 e = e - eBias
6334 }
6335 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
6336 }
6337
6338 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
6339 var e, m, c
6340 var eLen = nBytes * 8 - mLen - 1
6341 var eMax = (1 << eLen) - 1
6342 var eBias = eMax >> 1
6343 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
6344 var i = isLE ? 0 : (nBytes - 1)
6345 var d = isLE ? 1 : -1
6346 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
6347
6348 value = Math.abs(value)
6349
6350 if (isNaN(value) || value === Infinity) {
6351 m = isNaN(value) ? 1 : 0
6352 e = eMax
6353 } else {
6354 e = Math.floor(Math.log(value) / Math.LN2)
6355 if (value * (c = Math.pow(2, -e)) < 1) {
6356 e--
6357 c *= 2
6358 }
6359 if (e + eBias >= 1) {
6360 value += rt / c
6361 } else {
6362 value += rt * Math.pow(2, 1 - eBias)
6363 }
6364 if (value * c >= 2) {
6365 e++
6366 c /= 2
6367 }
6368
6369 if (e + eBias >= eMax) {
6370 m = 0
6371 e = eMax
6372 } else if (e + eBias >= 1) {
6373 m = (value * c - 1) * Math.pow(2, mLen)
6374 e = e + eBias
6375 } else {
6376 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
6377 e = 0
6378 }
6379 }
6380
6381 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
6382
6383 e = (e << mLen) | m
6384 eLen += mLen
6385 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
6386
6387 buffer[offset + i - d] |= s * 128
6388 }
6389
6390 },{}],4:[function(require,module,exports){
6391 window.basex = require('base-x')
6392 },{"base-x":5}],5:[function(require,module,exports){
6393 // base-x encoding
6394 // Forked from https://github.com/cryptocoinjs/bs58
6395 // Originally written by Mike Hearn for BitcoinJ
6396 // Copyright (c) 2011 Google Inc
6397 // Ported to JavaScript by Stefan Thomas
6398 // Merged Buffer refactorings from base58-native by Stephen Pair
6399 // Copyright (c) 2013 BitPay Inc
6400
6401 var Buffer = require('safe-buffer').Buffer
6402
6403 module.exports = function base (ALPHABET) {
6404 var ALPHABET_MAP = {}
6405 var BASE = ALPHABET.length
6406 var LEADER = ALPHABET.charAt(0)
6407
6408 // pre-compute lookup table
6409 for (var z = 0; z < ALPHABET.length; z++) {
6410 var x = ALPHABET.charAt(z)
6411
6412 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
6413 ALPHABET_MAP[x] = z
6414 }
6415
6416 function encode (source) {
6417 if (source.length === 0) return ''
6418
6419 var digits = [0]
6420 for (var i = 0; i < source.length; ++i) {
6421 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
6422 carry += digits[j] << 8
6423 digits[j] = carry % BASE
6424 carry = (carry / BASE) | 0
6425 }
6426
6427 while (carry > 0) {
6428 digits.push(carry % BASE)
6429 carry = (carry / BASE) | 0
6430 }
6431 }
6432
6433 var string = ''
6434
6435 // deal with leading zeros
6436 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
6437 // convert digits to a string
6438 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
6439
6440 return string
6441 }
6442
6443 function decodeUnsafe (string) {
6444 if (string.length === 0) return Buffer.allocUnsafe(0)
6445
6446 var bytes = [0]
6447 for (var i = 0; i < string.length; i++) {
6448 var value = ALPHABET_MAP[string[i]]
6449 if (value === undefined) return
6450
6451 for (var j = 0, carry = value; j < bytes.length; ++j) {
6452 carry += bytes[j] * BASE
6453 bytes[j] = carry & 0xff
6454 carry >>= 8
6455 }
6456
6457 while (carry > 0) {
6458 bytes.push(carry & 0xff)
6459 carry >>= 8
6460 }
6461 }
6462
6463 // deal with leading zeros
6464 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
6465 bytes.push(0)
6466 }
6467
6468 return Buffer.from(bytes.reverse())
6469 }
6470
6471 function decode (string) {
6472 var buffer = decodeUnsafe(string)
6473 if (buffer) return buffer
6474
6475 throw new Error('Non-base' + BASE + ' character')
6476 }
6477
6478 return {
6479 encode: encode,
6480 decodeUnsafe: decodeUnsafe,
6481 decode: decode
6482 }
6483 }
6484
6485 },{"safe-buffer":6}],6:[function(require,module,exports){
6486 module.exports = require('buffer')
6487
6488 },{"buffer":2}]},{},[4])(4)
6489 });</script>
6490 <script>(function (root) {
6491 "use strict";
6492
6493 /***** unorm.js *****/
6494
6495 /*
6496 * UnicodeNormalizer 1.0.0
6497 * Copyright (c) 2008 Matsuza
6498 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
6499 * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
6500 * $Rev: 13309 $
6501 */
6502
6503 var DEFAULT_FEATURE = [null, 0, {}];
6504 var CACHE_THRESHOLD = 10;
6505 var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;
6506 var NCount = VCount * TCount; // 588
6507 var SCount = LCount * NCount; // 11172
6508
6509 var UChar = function(cp, feature){
6510 this.codepoint = cp;
6511 this.feature = feature;
6512 };
6513
6514 // Strategies
6515 var cache = {};
6516 var cacheCounter = [];
6517 for (var i = 0; i <= 0xFF; ++i){
6518 cacheCounter[i] = 0;
6519 }
6520
6521 function fromCache(next, cp, needFeature){
6522 var ret = cache[cp];
6523 if(!ret){
6524 ret = next(cp, needFeature);
6525 if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){
6526 cache[cp] = ret;
6527 }
6528 }
6529 return ret;
6530 }
6531
6532 function fromData(next, cp, needFeature){
6533 var hash = cp & 0xFF00;
6534 var dunit = UChar.udata[hash] || {};
6535 var f = dunit[cp];
6536 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
6537 }
6538 function fromCpOnly(next, cp, needFeature){
6539 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
6540 }
6541 function fromRuleBasedJamo(next, cp, needFeature){
6542 var j;
6543 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
6544 return next(cp, needFeature);
6545 }
6546 if(LBase <= cp && cp < LBase + LCount){
6547 var c = {};
6548 var base = (cp - LBase) * VCount;
6549 for (j = 0; j < VCount; ++j){
6550 c[VBase + j] = SBase + TCount * (j + base);
6551 }
6552 return new UChar(cp, [,,c]);
6553 }
6554
6555 var SIndex = cp - SBase;
6556 var TIndex = SIndex % TCount;
6557 var feature = [];
6558 if(TIndex !== 0){
6559 feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
6560 } else {
6561 feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
6562 feature[2] = {};
6563 for (j = 1; j < TCount; ++j){
6564 feature[2][TBase + j] = cp + j;
6565 }
6566 }
6567 return new UChar(cp, feature);
6568 }
6569 function fromCpFilter(next, cp, needFeature){
6570 return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
6571 }
6572
6573 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
6574
6575 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
6576 return function (cp, needFeature) {
6577 return strategy(next, cp, needFeature);
6578 };
6579 }, null);
6580
6581 UChar.isHighSurrogate = function(cp){
6582 return cp >= 0xD800 && cp <= 0xDBFF;
6583 };
6584 UChar.isLowSurrogate = function(cp){
6585 return cp >= 0xDC00 && cp <= 0xDFFF;
6586 };
6587
6588 UChar.prototype.prepFeature = function(){
6589 if(!this.feature){
6590 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
6591 }
6592 };
6593
6594 UChar.prototype.toString = function(){
6595 if(this.codepoint < 0x10000){
6596 return String.fromCharCode(this.codepoint);
6597 } else {
6598 var x = this.codepoint - 0x10000;
6599 return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
6600 }
6601 };
6602
6603 UChar.prototype.getDecomp = function(){
6604 this.prepFeature();
6605 return this.feature[0] || null;
6606 };
6607
6608 UChar.prototype.isCompatibility = function(){
6609 this.prepFeature();
6610 return !!this.feature[1] && (this.feature[1] & (1 << 8));
6611 };
6612 UChar.prototype.isExclude = function(){
6613 this.prepFeature();
6614 return !!this.feature[1] && (this.feature[1] & (1 << 9));
6615 };
6616 UChar.prototype.getCanonicalClass = function(){
6617 this.prepFeature();
6618 return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
6619 };
6620 UChar.prototype.getComposite = function(following){
6621 this.prepFeature();
6622 if(!this.feature[2]){
6623 return null;
6624 }
6625 var cp = this.feature[2][following.codepoint];
6626 return cp ? UChar.fromCharCode(cp) : null;
6627 };
6628
6629 var UCharIterator = function(str){
6630 this.str = str;
6631 this.cursor = 0;
6632 };
6633 UCharIterator.prototype.next = function(){
6634 if(!!this.str && this.cursor < this.str.length){
6635 var cp = this.str.charCodeAt(this.cursor++);
6636 var d;
6637 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
6638 cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;
6639 ++this.cursor;
6640 }
6641 return UChar.fromCharCode(cp);
6642 } else {
6643 this.str = null;
6644 return null;
6645 }
6646 };
6647
6648 var RecursDecompIterator = function(it, cano){
6649 this.it = it;
6650 this.canonical = cano;
6651 this.resBuf = [];
6652 };
6653
6654 RecursDecompIterator.prototype.next = function(){
6655 function recursiveDecomp(cano, uchar){
6656 var decomp = uchar.getDecomp();
6657 if(!!decomp && !(cano && uchar.isCompatibility())){
6658 var ret = [];
6659 for(var i = 0; i < decomp.length; ++i){
6660 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
6661 ret = ret.concat(a);
6662 }
6663 return ret;
6664 } else {
6665 return [uchar];
6666 }
6667 }
6668 if(this.resBuf.length === 0){
6669 var uchar = this.it.next();
6670 if(!uchar){
6671 return null;
6672 }
6673 this.resBuf = recursiveDecomp(this.canonical, uchar);
6674 }
6675 return this.resBuf.shift();
6676 };
6677
6678 var DecompIterator = function(it){
6679 this.it = it;
6680 this.resBuf = [];
6681 };
6682
6683 DecompIterator.prototype.next = function(){
6684 var cc;
6685 if(this.resBuf.length === 0){
6686 do{
6687 var uchar = this.it.next();
6688 if(!uchar){
6689 break;
6690 }
6691 cc = uchar.getCanonicalClass();
6692 var inspt = this.resBuf.length;
6693 if(cc !== 0){
6694 for(; inspt > 0; --inspt){
6695 var uchar2 = this.resBuf[inspt - 1];
6696 var cc2 = uchar2.getCanonicalClass();
6697 if(cc2 <= cc){
6698 break;
6699 }
6700 }
6701 }
6702 this.resBuf.splice(inspt, 0, uchar);
6703 } while(cc !== 0);
6704 }
6705 return this.resBuf.shift();
6706 };
6707
6708 var CompIterator = function(it){
6709 this.it = it;
6710 this.procBuf = [];
6711 this.resBuf = [];
6712 this.lastClass = null;
6713 };
6714
6715 CompIterator.prototype.next = function(){
6716 while(this.resBuf.length === 0){
6717 var uchar = this.it.next();
6718 if(!uchar){
6719 this.resBuf = this.procBuf;
6720 this.procBuf = [];
6721 break;
6722 }
6723 if(this.procBuf.length === 0){
6724 this.lastClass = uchar.getCanonicalClass();
6725 this.procBuf.push(uchar);
6726 } else {
6727 var starter = this.procBuf[0];
6728 var composite = starter.getComposite(uchar);
6729 var cc = uchar.getCanonicalClass();
6730 if(!!composite && (this.lastClass < cc || this.lastClass === 0)){
6731 this.procBuf[0] = composite;
6732 } else {
6733 if(cc === 0){
6734 this.resBuf = this.procBuf;
6735 this.procBuf = [];
6736 }
6737 this.lastClass = cc;
6738 this.procBuf.push(uchar);
6739 }
6740 }
6741 }
6742 return this.resBuf.shift();
6743 };
6744
6745 var createIterator = function(mode, str){
6746 switch(mode){
6747 case "NFD":
6748 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
6749 case "NFKD":
6750 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
6751 case "NFC":
6752 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
6753 case "NFKC":
6754 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
6755 }
6756 throw mode + " is invalid";
6757 };
6758 var normalize = function(mode, str){
6759 var it = createIterator(mode, str);
6760 var ret = "";
6761 var uchar;
6762 while(!!(uchar = it.next())){
6763 ret += uchar.toString();
6764 }
6765 return ret;
6766 };
6767
6768 /* API functions */
6769 function nfd(str){
6770 return normalize("NFD", str);
6771 }
6772
6773 function nfkd(str){
6774 return normalize("NFKD", str);
6775 }
6776
6777 function nfc(str){
6778 return normalize("NFC", str);
6779 }
6780
6781 function nfkc(str){
6782 return normalize("NFKC", str);
6783 }
6784
6785 /* Unicode data */
6786 UChar.udata={
6787 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]]},
6788 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]},
6789 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]},
6790 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]},
6791 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]]},
6792 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]},
6793 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]},
6794 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]},
6795 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]},
6796 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]},
6797 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]},
6798 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]},
6799 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]},
6800 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]]},
6801 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]},
6802 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]},
6803 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]},
6804 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]},
6805 4608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},
6806 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]},
6807 5120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},
6808 5376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},
6809 5632:{71231:[,9],71350:[,9],71351:[,7]},
6810 5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
6811 6144:{6313:[,228]},
6812 6400:{6457:[,222],6458:[,230],6459:[,220]},
6813 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]},
6814 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]},
6815 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]},
6816 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]},
6817 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]]},
6818 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}]},
6819 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]},
6820 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}]},
6821 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]]},
6822 8960:{9001:[[12296]],9002:[[12297]]},
6823 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]},
6824 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]},
6825 11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
6826 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]},
6827 11776:{11935:[[27597],256],12019:[[40863],256]},
6828 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]},
6829 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]},
6830 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]},
6831 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]},
6832 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]},
6833 27136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},
6834 27392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},
6835 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]},
6836 42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
6837 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]},
6838 43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
6839 43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
6840 43776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},
6841 48128:{113822:[,1]},
6842 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]},
6843 53760:{119362:[,230],119363:[,230],119364:[,230]},
6844 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]},
6845 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]},
6846 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]},
6847 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]},
6848 59392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},
6849 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]},
6850 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]},
6851 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]},
6852 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]]},
6853 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]]},
6854 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]]},
6855 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]},
6856 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]},
6857 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]},
6858 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]},
6859 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]}
6860
6861 };
6862
6863 /***** Module to export */
6864 var unorm = {
6865 nfc: nfc,
6866 nfd: nfd,
6867 nfkc: nfkc,
6868 nfkd: nfkd
6869 };
6870
6871 /*globals module:true,define:true*/
6872
6873 // CommonJS
6874 if (typeof module === "object") {
6875 module.exports = unorm;
6876
6877 // AMD
6878 } else if (typeof define === "function" && define.amd) {
6879 define("unorm", function () {
6880 return unorm;
6881 });
6882
6883 // Global
6884 } else {
6885 root.unorm = unorm;
6886 }
6887
6888 /***** Export as shim for String::normalize method *****/
6889 /*
6890 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
6891
6892 21.1.3.12 String.prototype.normalize(form="NFC")
6893 When the normalize method is called with one argument form, the following steps are taken:
6894
6895 1. Let O be CheckObjectCoercible(this value).
6896 2. Let S be ToString(O).
6897 3. ReturnIfAbrupt(S).
6898 4. If form is not provided or undefined let form be "NFC".
6899 5. Let f be ToString(form).
6900 6. ReturnIfAbrupt(f).
6901 7. If f is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw a RangeError Exception.
6902 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.
6903 9. Return ns.
6904
6905 The length property of the normalize method is 0.
6906
6907 *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.
6908 */
6909 unorm.shimApplied = false;
6910
6911 if (!String.prototype.normalize) {
6912 String.prototype.normalize = function(form) {
6913 var str = "" + this;
6914 form = form === undefined ? "NFC" : form;
6915
6916 if (form === "NFC") {
6917 return unorm.nfc(str);
6918 } else if (form === "NFD") {
6919 return unorm.nfd(str);
6920 } else if (form === "NFKC") {
6921 return unorm.nfkc(str);
6922 } else if (form === "NFKD") {
6923 return unorm.nfkd(str);
6924 } else {
6925 throw new RangeError("Invalid normalization form: " + form);
6926 }
6927 };
6928
6929 unorm.shimApplied = true;
6930 }
6931 }(this));
6932 </script>
6933 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
6934 !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)
6935 },_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))
6936 },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});
6937 </script>
6938 <script>/*!
6939 * Bootstrap v3.2.0 (http://getbootstrap.com)
6940 * Copyright 2011-2014 Twitter, Inc.
6941 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6942 */
6943 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>
6944 <script>(function() {
6945 'use strict';
6946
6947 /**
6948 * Extend an Object with another Object's properties.
6949 *
6950 * The source objects are specified as additional arguments.
6951 *
6952 * @param dst Object the object to extend.
6953 *
6954 * @return Object the final object.
6955 */
6956 var _extend = function(dst) {
6957 var sources = Array.prototype.slice.call(arguments, 1);
6958 for (var i=0; i<sources.length; ++i) {
6959 var src = sources[i];
6960 for (var p in src) {
6961 if (src.hasOwnProperty(p)) dst[p] = src[p];
6962 }
6963 }
6964 return dst;
6965 };
6966
6967
6968 /**
6969 * Defer execution of given function.
6970 * @param {Function} func
6971 */
6972 var _defer = function(func) {
6973 if (typeof setImmediate === 'function') {
6974 return setImmediate(func);
6975 } else {
6976 return setTimeout(func, 0);
6977 }
6978 };
6979
6980 /**
6981 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
6982 */
6983 var Levenshtein = {
6984 /**
6985 * Calculate levenshtein distance of the two strings.
6986 *
6987 * @param str1 String the first string.
6988 * @param str2 String the second string.
6989 * @return Integer the levenshtein distance (0 and above).
6990 */
6991 get: function(str1, str2) {
6992 // base cases
6993 if (str1 === str2) return 0;
6994 if (str1.length === 0) return str2.length;
6995 if (str2.length === 0) return str1.length;
6996
6997 // two rows
6998 var prevRow = new Array(str2.length + 1),
6999 curCol, nextCol, i, j, tmp;
7000
7001 // initialise previous row
7002 for (i=0; i<prevRow.length; ++i) {
7003 prevRow[i] = i;
7004 }
7005
7006 // calculate current row distance from previous row
7007 for (i=0; i<str1.length; ++i) {
7008 nextCol = i + 1;
7009
7010 for (j=0; j<str2.length; ++j) {
7011 curCol = nextCol;
7012
7013 // substution
7014 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7015 // insertion
7016 tmp = curCol + 1;
7017 if (nextCol > tmp) {
7018 nextCol = tmp;
7019 }
7020 // deletion
7021 tmp = prevRow[j + 1] + 1;
7022 if (nextCol > tmp) {
7023 nextCol = tmp;
7024 }
7025
7026 // copy current col value into previous (in preparation for next iteration)
7027 prevRow[j] = curCol;
7028 }
7029
7030 // copy last col value into previous (in preparation for next iteration)
7031 prevRow[j] = nextCol;
7032 }
7033
7034 return nextCol;
7035 },
7036
7037 /**
7038 * Asynchronously calculate levenshtein distance of the two strings.
7039 *
7040 * @param str1 String the first string.
7041 * @param str2 String the second string.
7042 * @param cb Function callback function with signature: function(Error err, int distance)
7043 * @param [options] Object additional options.
7044 * @param [options.progress] Function progress callback with signature: function(percentComplete)
7045 */
7046 getAsync: function(str1, str2, cb, options) {
7047 options = _extend({}, {
7048 progress: null
7049 }, options);
7050
7051 // base cases
7052 if (str1 === str2) return cb(null, 0);
7053 if (str1.length === 0) return cb(null, str2.length);
7054 if (str2.length === 0) return cb(null, str1.length);
7055
7056 // two rows
7057 var prevRow = new Array(str2.length + 1),
7058 curCol, nextCol,
7059 i, j, tmp,
7060 startTime, currentTime;
7061
7062 // initialise previous row
7063 for (i=0; i<prevRow.length; ++i) {
7064 prevRow[i] = i;
7065 }
7066
7067 nextCol = 1;
7068 i = 0;
7069 j = -1;
7070
7071 var __calculate = function() {
7072 // reset timer
7073 startTime = new Date().valueOf();
7074 currentTime = startTime;
7075
7076 // keep going until one second has elapsed
7077 while (currentTime - startTime < 1000) {
7078 // reached end of current row?
7079 if (str2.length <= (++j)) {
7080 // copy current into previous (in preparation for next iteration)
7081 prevRow[j] = nextCol;
7082
7083 // if already done all chars
7084 if (str1.length <= (++i)) {
7085 return cb(null, nextCol);
7086 }
7087 // else if we have more left to do
7088 else {
7089 nextCol = i + 1;
7090 j = 0;
7091 }
7092 }
7093
7094 // calculation
7095 curCol = nextCol;
7096
7097 // substution
7098 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7099 // insertion
7100 tmp = curCol + 1;
7101 if (nextCol > tmp) {
7102 nextCol = tmp;
7103 }
7104 // deletion
7105 tmp = prevRow[j + 1] + 1;
7106 if (nextCol > tmp) {
7107 nextCol = tmp;
7108 }
7109
7110 // copy current into previous (in preparation for next iteration)
7111 prevRow[j] = curCol;
7112
7113 // get current time
7114 currentTime = new Date().valueOf();
7115 }
7116
7117 // send a progress update?
7118 if (null !== options.progress) {
7119 try {
7120 options.progress.call(null, (i * 100.0/ str1.length));
7121 } catch (err) {
7122 return cb('Progress callback: ' + err.toString());
7123 }
7124 }
7125
7126 // next iteration
7127 _defer(__calculate);
7128 };
7129
7130 __calculate();
7131 }
7132
7133 };
7134
7135 // amd
7136 if (typeof define !== "undefined" && define !== null && define.amd) {
7137 define(function() {
7138 return Levenshtein;
7139 });
7140 }
7141 // commonjs
7142 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
7143 module.exports = Levenshtein;
7144 }
7145 // web worker
7146 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
7147 self.Levenshtein = Levenshtein;
7148 }
7149 // browser main thread
7150 else if (typeof window !== "undefined" && window !== null) {
7151 window.Levenshtein = Levenshtein;
7152 }
7153 }());
7154
7155 </script>
7156 <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},
7157 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;
7158 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-
7159 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]=
7160 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},
7161 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=
7162 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-
7163 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,
7164 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=
7165 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&&
7166 (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,
7167 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)-
7168 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:"+
7169 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:"+
7170 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+
7171 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),
7172 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>
7173 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],
7174 [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,
7175 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,
7176 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,
7177 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,
7178 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,
7179 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*
7180 (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,
7181 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),
7182 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",
7183 d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
7184 </script>
7185 <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.bitcoin = 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){
7186 // (public) Constructor
7187 function BigInteger(a, b, c) {
7188 if (!(this instanceof BigInteger))
7189 return new BigInteger(a, b, c)
7190
7191 if (a != null) {
7192 if ("number" == typeof a) this.fromNumber(a, b, c)
7193 else if (b == null && "string" != typeof a) this.fromString(a, 256)
7194 else this.fromString(a, b)
7195 }
7196 }
7197
7198 var proto = BigInteger.prototype
7199
7200 // duck-typed isBigInteger
7201 proto.__bigi = require('../package.json').version
7202 BigInteger.isBigInteger = function (obj, check_ver) {
7203 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
7204 }
7205
7206 // Bits per digit
7207 var dbits
7208
7209 // am: Compute w_j += (x*this_i), propagate carries,
7210 // c is initial carry, returns final carry.
7211 // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
7212 // We need to select the fastest one that works in this environment.
7213
7214 // am1: use a single mult and divide to get the high bits,
7215 // max digit bits should be 26 because
7216 // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
7217 function am1(i, x, w, j, c, n) {
7218 while (--n >= 0) {
7219 var v = x * this[i++] + w[j] + c
7220 c = Math.floor(v / 0x4000000)
7221 w[j++] = v & 0x3ffffff
7222 }
7223 return c
7224 }
7225 // am2 avoids a big mult-and-extract completely.
7226 // Max digit bits should be <= 30 because we do bitwise ops
7227 // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
7228 function am2(i, x, w, j, c, n) {
7229 var xl = x & 0x7fff,
7230 xh = x >> 15
7231 while (--n >= 0) {
7232 var l = this[i] & 0x7fff
7233 var h = this[i++] >> 15
7234 var m = xh * l + h * xl
7235 l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
7236 c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
7237 w[j++] = l & 0x3fffffff
7238 }
7239 return c
7240 }
7241 // Alternately, set max digit bits to 28 since some
7242 // browsers slow down when dealing with 32-bit numbers.
7243 function am3(i, x, w, j, c, n) {
7244 var xl = x & 0x3fff,
7245 xh = x >> 14
7246 while (--n >= 0) {
7247 var l = this[i] & 0x3fff
7248 var h = this[i++] >> 14
7249 var m = xh * l + h * xl
7250 l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
7251 c = (l >> 28) + (m >> 14) + xh * h
7252 w[j++] = l & 0xfffffff
7253 }
7254 return c
7255 }
7256
7257 // wtf?
7258 BigInteger.prototype.am = am1
7259 dbits = 26
7260
7261 BigInteger.prototype.DB = dbits
7262 BigInteger.prototype.DM = ((1 << dbits) - 1)
7263 var DV = BigInteger.prototype.DV = (1 << dbits)
7264
7265 var BI_FP = 52
7266 BigInteger.prototype.FV = Math.pow(2, BI_FP)
7267 BigInteger.prototype.F1 = BI_FP - dbits
7268 BigInteger.prototype.F2 = 2 * dbits - BI_FP
7269
7270 // Digit conversions
7271 var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
7272 var BI_RC = new Array()
7273 var rr, vv
7274 rr = "0".charCodeAt(0)
7275 for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
7276 rr = "a".charCodeAt(0)
7277 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
7278 rr = "A".charCodeAt(0)
7279 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
7280
7281 function int2char(n) {
7282 return BI_RM.charAt(n)
7283 }
7284
7285 function intAt(s, i) {
7286 var c = BI_RC[s.charCodeAt(i)]
7287 return (c == null) ? -1 : c
7288 }
7289
7290 // (protected) copy this to r
7291 function bnpCopyTo(r) {
7292 for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]
7293 r.t = this.t
7294 r.s = this.s
7295 }
7296
7297 // (protected) set from integer value x, -DV <= x < DV
7298 function bnpFromInt(x) {
7299 this.t = 1
7300 this.s = (x < 0) ? -1 : 0
7301 if (x > 0) this[0] = x
7302 else if (x < -1) this[0] = x + DV
7303 else this.t = 0
7304 }
7305
7306 // return bigint initialized to value
7307 function nbv(i) {
7308 var r = new BigInteger()
7309 r.fromInt(i)
7310 return r
7311 }
7312
7313 // (protected) set from string and radix
7314 function bnpFromString(s, b) {
7315 var self = this
7316
7317 var k
7318 if (b == 16) k = 4
7319 else if (b == 8) k = 3
7320 else if (b == 256) k = 8; // byte array
7321 else if (b == 2) k = 1
7322 else if (b == 32) k = 5
7323 else if (b == 4) k = 2
7324 else {
7325 self.fromRadix(s, b)
7326 return
7327 }
7328 self.t = 0
7329 self.s = 0
7330 var i = s.length,
7331 mi = false,
7332 sh = 0
7333 while (--i >= 0) {
7334 var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
7335 if (x < 0) {
7336 if (s.charAt(i) == "-") mi = true
7337 continue
7338 }
7339 mi = false
7340 if (sh == 0)
7341 self[self.t++] = x
7342 else if (sh + k > self.DB) {
7343 self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh
7344 self[self.t++] = (x >> (self.DB - sh))
7345 } else
7346 self[self.t - 1] |= x << sh
7347 sh += k
7348 if (sh >= self.DB) sh -= self.DB
7349 }
7350 if (k == 8 && (s[0] & 0x80) != 0) {
7351 self.s = -1
7352 if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh
7353 }
7354 self.clamp()
7355 if (mi) BigInteger.ZERO.subTo(self, self)
7356 }
7357
7358 // (protected) clamp off excess high words
7359 function bnpClamp() {
7360 var c = this.s & this.DM
7361 while (this.t > 0 && this[this.t - 1] == c)--this.t
7362 }
7363
7364 // (public) return string representation in given radix
7365 function bnToString(b) {
7366 var self = this
7367 if (self.s < 0) return "-" + self.negate()
7368 .toString(b)
7369 var k
7370 if (b == 16) k = 4
7371 else if (b == 8) k = 3
7372 else if (b == 2) k = 1
7373 else if (b == 32) k = 5
7374 else if (b == 4) k = 2
7375 else return self.toRadix(b)
7376 var km = (1 << k) - 1,
7377 d, m = false,
7378 r = "",
7379 i = self.t
7380 var p = self.DB - (i * self.DB) % k
7381 if (i-- > 0) {
7382 if (p < self.DB && (d = self[i] >> p) > 0) {
7383 m = true
7384 r = int2char(d)
7385 }
7386 while (i >= 0) {
7387 if (p < k) {
7388 d = (self[i] & ((1 << p) - 1)) << (k - p)
7389 d |= self[--i] >> (p += self.DB - k)
7390 } else {
7391 d = (self[i] >> (p -= k)) & km
7392 if (p <= 0) {
7393 p += self.DB
7394 --i
7395 }
7396 }
7397 if (d > 0) m = true
7398 if (m) r += int2char(d)
7399 }
7400 }
7401 return m ? r : "0"
7402 }
7403
7404 // (public) -this
7405 function bnNegate() {
7406 var r = new BigInteger()
7407 BigInteger.ZERO.subTo(this, r)
7408 return r
7409 }
7410
7411 // (public) |this|
7412 function bnAbs() {
7413 return (this.s < 0) ? this.negate() : this
7414 }
7415
7416 // (public) return + if this > a, - if this < a, 0 if equal
7417 function bnCompareTo(a) {
7418 var r = this.s - a.s
7419 if (r != 0) return r
7420 var i = this.t
7421 r = i - a.t
7422 if (r != 0) return (this.s < 0) ? -r : r
7423 while (--i >= 0)
7424 if ((r = this[i] - a[i]) != 0) return r
7425 return 0
7426 }
7427
7428 // returns bit length of the integer x
7429 function nbits(x) {
7430 var r = 1,
7431 t
7432 if ((t = x >>> 16) != 0) {
7433 x = t
7434 r += 16
7435 }
7436 if ((t = x >> 8) != 0) {
7437 x = t
7438 r += 8
7439 }
7440 if ((t = x >> 4) != 0) {
7441 x = t
7442 r += 4
7443 }
7444 if ((t = x >> 2) != 0) {
7445 x = t
7446 r += 2
7447 }
7448 if ((t = x >> 1) != 0) {
7449 x = t
7450 r += 1
7451 }
7452 return r
7453 }
7454
7455 // (public) return the number of bits in "this"
7456 function bnBitLength() {
7457 if (this.t <= 0) return 0
7458 return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
7459 }
7460
7461 // (public) return the number of bytes in "this"
7462 function bnByteLength() {
7463 return this.bitLength() >> 3
7464 }
7465
7466 // (protected) r = this << n*DB
7467 function bnpDLShiftTo(n, r) {
7468 var i
7469 for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]
7470 for (i = n - 1; i >= 0; --i) r[i] = 0
7471 r.t = this.t + n
7472 r.s = this.s
7473 }
7474
7475 // (protected) r = this >> n*DB
7476 function bnpDRShiftTo(n, r) {
7477 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
7478 r.t = Math.max(this.t - n, 0)
7479 r.s = this.s
7480 }
7481
7482 // (protected) r = this << n
7483 function bnpLShiftTo(n, r) {
7484 var self = this
7485 var bs = n % self.DB
7486 var cbs = self.DB - bs
7487 var bm = (1 << cbs) - 1
7488 var ds = Math.floor(n / self.DB),
7489 c = (self.s << bs) & self.DM,
7490 i
7491 for (i = self.t - 1; i >= 0; --i) {
7492 r[i + ds + 1] = (self[i] >> cbs) | c
7493 c = (self[i] & bm) << bs
7494 }
7495 for (i = ds - 1; i >= 0; --i) r[i] = 0
7496 r[ds] = c
7497 r.t = self.t + ds + 1
7498 r.s = self.s
7499 r.clamp()
7500 }
7501
7502 // (protected) r = this >> n
7503 function bnpRShiftTo(n, r) {
7504 var self = this
7505 r.s = self.s
7506 var ds = Math.floor(n / self.DB)
7507 if (ds >= self.t) {
7508 r.t = 0
7509 return
7510 }
7511 var bs = n % self.DB
7512 var cbs = self.DB - bs
7513 var bm = (1 << bs) - 1
7514 r[0] = self[ds] >> bs
7515 for (var i = ds + 1; i < self.t; ++i) {
7516 r[i - ds - 1] |= (self[i] & bm) << cbs
7517 r[i - ds] = self[i] >> bs
7518 }
7519 if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs
7520 r.t = self.t - ds
7521 r.clamp()
7522 }
7523
7524 // (protected) r = this - a
7525 function bnpSubTo(a, r) {
7526 var self = this
7527 var i = 0,
7528 c = 0,
7529 m = Math.min(a.t, self.t)
7530 while (i < m) {
7531 c += self[i] - a[i]
7532 r[i++] = c & self.DM
7533 c >>= self.DB
7534 }
7535 if (a.t < self.t) {
7536 c -= a.s
7537 while (i < self.t) {
7538 c += self[i]
7539 r[i++] = c & self.DM
7540 c >>= self.DB
7541 }
7542 c += self.s
7543 } else {
7544 c += self.s
7545 while (i < a.t) {
7546 c -= a[i]
7547 r[i++] = c & self.DM
7548 c >>= self.DB
7549 }
7550 c -= a.s
7551 }
7552 r.s = (c < 0) ? -1 : 0
7553 if (c < -1) r[i++] = self.DV + c
7554 else if (c > 0) r[i++] = c
7555 r.t = i
7556 r.clamp()
7557 }
7558
7559 // (protected) r = this * a, r != this,a (HAC 14.12)
7560 // "this" should be the larger one if appropriate.
7561 function bnpMultiplyTo(a, r) {
7562 var x = this.abs(),
7563 y = a.abs()
7564 var i = x.t
7565 r.t = i + y.t
7566 while (--i >= 0) r[i] = 0
7567 for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)
7568 r.s = 0
7569 r.clamp()
7570 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
7571 }
7572
7573 // (protected) r = this^2, r != this (HAC 14.16)
7574 function bnpSquareTo(r) {
7575 var x = this.abs()
7576 var i = r.t = 2 * x.t
7577 while (--i >= 0) r[i] = 0
7578 for (i = 0; i < x.t - 1; ++i) {
7579 var c = x.am(i, x[i], r, 2 * i, 0, 1)
7580 if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
7581 r[i + x.t] -= x.DV
7582 r[i + x.t + 1] = 1
7583 }
7584 }
7585 if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)
7586 r.s = 0
7587 r.clamp()
7588 }
7589
7590 // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
7591 // r != q, this != m. q or r may be null.
7592 function bnpDivRemTo(m, q, r) {
7593 var self = this
7594 var pm = m.abs()
7595 if (pm.t <= 0) return
7596 var pt = self.abs()
7597 if (pt.t < pm.t) {
7598 if (q != null) q.fromInt(0)
7599 if (r != null) self.copyTo(r)
7600 return
7601 }
7602 if (r == null) r = new BigInteger()
7603 var y = new BigInteger(),
7604 ts = self.s,
7605 ms = m.s
7606 var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus
7607 if (nsh > 0) {
7608 pm.lShiftTo(nsh, y)
7609 pt.lShiftTo(nsh, r)
7610 } else {
7611 pm.copyTo(y)
7612 pt.copyTo(r)
7613 }
7614 var ys = y.t
7615 var y0 = y[ys - 1]
7616 if (y0 == 0) return
7617 var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)
7618 var d1 = self.FV / yt,
7619 d2 = (1 << self.F1) / yt,
7620 e = 1 << self.F2
7621 var i = r.t,
7622 j = i - ys,
7623 t = (q == null) ? new BigInteger() : q
7624 y.dlShiftTo(j, t)
7625 if (r.compareTo(t) >= 0) {
7626 r[r.t++] = 1
7627 r.subTo(t, r)
7628 }
7629 BigInteger.ONE.dlShiftTo(ys, t)
7630 t.subTo(y, y); // "negative" y so we can replace sub with am later
7631 while (y.t < ys) y[y.t++] = 0
7632 while (--j >= 0) {
7633 // Estimate quotient digit
7634 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)
7635 if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
7636 y.dlShiftTo(j, t)
7637 r.subTo(t, r)
7638 while (r[i] < --qd) r.subTo(t, r)
7639 }
7640 }
7641 if (q != null) {
7642 r.drShiftTo(ys, q)
7643 if (ts != ms) BigInteger.ZERO.subTo(q, q)
7644 }
7645 r.t = ys
7646 r.clamp()
7647 if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
7648 if (ts < 0) BigInteger.ZERO.subTo(r, r)
7649 }
7650
7651 // (public) this mod a
7652 function bnMod(a) {
7653 var r = new BigInteger()
7654 this.abs()
7655 .divRemTo(a, null, r)
7656 if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)
7657 return r
7658 }
7659
7660 // Modular reduction using "classic" algorithm
7661 function Classic(m) {
7662 this.m = m
7663 }
7664
7665 function cConvert(x) {
7666 if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)
7667 else return x
7668 }
7669
7670 function cRevert(x) {
7671 return x
7672 }
7673
7674 function cReduce(x) {
7675 x.divRemTo(this.m, null, x)
7676 }
7677
7678 function cMulTo(x, y, r) {
7679 x.multiplyTo(y, r)
7680 this.reduce(r)
7681 }
7682
7683 function cSqrTo(x, r) {
7684 x.squareTo(r)
7685 this.reduce(r)
7686 }
7687
7688 Classic.prototype.convert = cConvert
7689 Classic.prototype.revert = cRevert
7690 Classic.prototype.reduce = cReduce
7691 Classic.prototype.mulTo = cMulTo
7692 Classic.prototype.sqrTo = cSqrTo
7693
7694 // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
7695 // justification:
7696 // xy == 1 (mod m)
7697 // xy = 1+km
7698 // xy(2-xy) = (1+km)(1-km)
7699 // x[y(2-xy)] = 1-k^2m^2
7700 // x[y(2-xy)] == 1 (mod m^2)
7701 // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
7702 // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
7703 // JS multiply "overflows" differently from C/C++, so care is needed here.
7704 function bnpInvDigit() {
7705 if (this.t < 1) return 0
7706 var x = this[0]
7707 if ((x & 1) == 0) return 0
7708 var y = x & 3; // y == 1/x mod 2^2
7709 y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
7710 y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
7711 y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
7712 // last step - calculate inverse mod DV directly
7713 // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
7714 y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
7715 // we really want the negative inverse, and -DV < y < DV
7716 return (y > 0) ? this.DV - y : -y
7717 }
7718
7719 // Montgomery reduction
7720 function Montgomery(m) {
7721 this.m = m
7722 this.mp = m.invDigit()
7723 this.mpl = this.mp & 0x7fff
7724 this.mph = this.mp >> 15
7725 this.um = (1 << (m.DB - 15)) - 1
7726 this.mt2 = 2 * m.t
7727 }
7728
7729 // xR mod m
7730 function montConvert(x) {
7731 var r = new BigInteger()
7732 x.abs()
7733 .dlShiftTo(this.m.t, r)
7734 r.divRemTo(this.m, null, r)
7735 if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)
7736 return r
7737 }
7738
7739 // x/R mod m
7740 function montRevert(x) {
7741 var r = new BigInteger()
7742 x.copyTo(r)
7743 this.reduce(r)
7744 return r
7745 }
7746
7747 // x = x/R mod m (HAC 14.32)
7748 function montReduce(x) {
7749 while (x.t <= this.mt2) // pad x so am has enough room later
7750 x[x.t++] = 0
7751 for (var i = 0; i < this.m.t; ++i) {
7752 // faster way of calculating u0 = x[i]*mp mod DV
7753 var j = x[i] & 0x7fff
7754 var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM
7755 // use am to combine the multiply-shift-add into one call
7756 j = i + this.m.t
7757 x[j] += this.m.am(0, u0, x, i, 0, this.m.t)
7758 // propagate carry
7759 while (x[j] >= x.DV) {
7760 x[j] -= x.DV
7761 x[++j]++
7762 }
7763 }
7764 x.clamp()
7765 x.drShiftTo(this.m.t, x)
7766 if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)
7767 }
7768
7769 // r = "x^2/R mod m"; x != r
7770 function montSqrTo(x, r) {
7771 x.squareTo(r)
7772 this.reduce(r)
7773 }
7774
7775 // r = "xy/R mod m"; x,y != r
7776 function montMulTo(x, y, r) {
7777 x.multiplyTo(y, r)
7778 this.reduce(r)
7779 }
7780
7781 Montgomery.prototype.convert = montConvert
7782 Montgomery.prototype.revert = montRevert
7783 Montgomery.prototype.reduce = montReduce
7784 Montgomery.prototype.mulTo = montMulTo
7785 Montgomery.prototype.sqrTo = montSqrTo
7786
7787 // (protected) true iff this is even
7788 function bnpIsEven() {
7789 return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
7790 }
7791
7792 // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
7793 function bnpExp(e, z) {
7794 if (e > 0xffffffff || e < 1) return BigInteger.ONE
7795 var r = new BigInteger(),
7796 r2 = new BigInteger(),
7797 g = z.convert(this),
7798 i = nbits(e) - 1
7799 g.copyTo(r)
7800 while (--i >= 0) {
7801 z.sqrTo(r, r2)
7802 if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)
7803 else {
7804 var t = r
7805 r = r2
7806 r2 = t
7807 }
7808 }
7809 return z.revert(r)
7810 }
7811
7812 // (public) this^e % m, 0 <= e < 2^32
7813 function bnModPowInt(e, m) {
7814 var z
7815 if (e < 256 || m.isEven()) z = new Classic(m)
7816 else z = new Montgomery(m)
7817 return this.exp(e, z)
7818 }
7819
7820 // protected
7821 proto.copyTo = bnpCopyTo
7822 proto.fromInt = bnpFromInt
7823 proto.fromString = bnpFromString
7824 proto.clamp = bnpClamp
7825 proto.dlShiftTo = bnpDLShiftTo
7826 proto.drShiftTo = bnpDRShiftTo
7827 proto.lShiftTo = bnpLShiftTo
7828 proto.rShiftTo = bnpRShiftTo
7829 proto.subTo = bnpSubTo
7830 proto.multiplyTo = bnpMultiplyTo
7831 proto.squareTo = bnpSquareTo
7832 proto.divRemTo = bnpDivRemTo
7833 proto.invDigit = bnpInvDigit
7834 proto.isEven = bnpIsEven
7835 proto.exp = bnpExp
7836
7837 // public
7838 proto.toString = bnToString
7839 proto.negate = bnNegate
7840 proto.abs = bnAbs
7841 proto.compareTo = bnCompareTo
7842 proto.bitLength = bnBitLength
7843 proto.byteLength = bnByteLength
7844 proto.mod = bnMod
7845 proto.modPowInt = bnModPowInt
7846
7847 // (public)
7848 function bnClone() {
7849 var r = new BigInteger()
7850 this.copyTo(r)
7851 return r
7852 }
7853
7854 // (public) return value as integer
7855 function bnIntValue() {
7856 if (this.s < 0) {
7857 if (this.t == 1) return this[0] - this.DV
7858 else if (this.t == 0) return -1
7859 } else if (this.t == 1) return this[0]
7860 else if (this.t == 0) return 0
7861 // assumes 16 < DB < 32
7862 return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
7863 }
7864
7865 // (public) return value as byte
7866 function bnByteValue() {
7867 return (this.t == 0) ? this.s : (this[0] << 24) >> 24
7868 }
7869
7870 // (public) return value as short (assumes DB>=16)
7871 function bnShortValue() {
7872 return (this.t == 0) ? this.s : (this[0] << 16) >> 16
7873 }
7874
7875 // (protected) return x s.t. r^x < DV
7876 function bnpChunkSize(r) {
7877 return Math.floor(Math.LN2 * this.DB / Math.log(r))
7878 }
7879
7880 // (public) 0 if this == 0, 1 if this > 0
7881 function bnSigNum() {
7882 if (this.s < 0) return -1
7883 else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0
7884 else return 1
7885 }
7886
7887 // (protected) convert to radix string
7888 function bnpToRadix(b) {
7889 if (b == null) b = 10
7890 if (this.signum() == 0 || b < 2 || b > 36) return "0"
7891 var cs = this.chunkSize(b)
7892 var a = Math.pow(b, cs)
7893 var d = nbv(a),
7894 y = new BigInteger(),
7895 z = new BigInteger(),
7896 r = ""
7897 this.divRemTo(d, y, z)
7898 while (y.signum() > 0) {
7899 r = (a + z.intValue())
7900 .toString(b)
7901 .substr(1) + r
7902 y.divRemTo(d, y, z)
7903 }
7904 return z.intValue()
7905 .toString(b) + r
7906 }
7907
7908 // (protected) convert from radix string
7909 function bnpFromRadix(s, b) {
7910 var self = this
7911 self.fromInt(0)
7912 if (b == null) b = 10
7913 var cs = self.chunkSize(b)
7914 var d = Math.pow(b, cs),
7915 mi = false,
7916 j = 0,
7917 w = 0
7918 for (var i = 0; i < s.length; ++i) {
7919 var x = intAt(s, i)
7920 if (x < 0) {
7921 if (s.charAt(i) == "-" && self.signum() == 0) mi = true
7922 continue
7923 }
7924 w = b * w + x
7925 if (++j >= cs) {
7926 self.dMultiply(d)
7927 self.dAddOffset(w, 0)
7928 j = 0
7929 w = 0
7930 }
7931 }
7932 if (j > 0) {
7933 self.dMultiply(Math.pow(b, j))
7934 self.dAddOffset(w, 0)
7935 }
7936 if (mi) BigInteger.ZERO.subTo(self, self)
7937 }
7938
7939 // (protected) alternate constructor
7940 function bnpFromNumber(a, b, c) {
7941 var self = this
7942 if ("number" == typeof b) {
7943 // new BigInteger(int,int,RNG)
7944 if (a < 2) self.fromInt(1)
7945 else {
7946 self.fromNumber(a, c)
7947 if (!self.testBit(a - 1)) // force MSB set
7948 self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)
7949 if (self.isEven()) self.dAddOffset(1, 0); // force odd
7950 while (!self.isProbablePrime(b)) {
7951 self.dAddOffset(2, 0)
7952 if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)
7953 }
7954 }
7955 } else {
7956 // new BigInteger(int,RNG)
7957 var x = new Array(),
7958 t = a & 7
7959 x.length = (a >> 3) + 1
7960 b.nextBytes(x)
7961 if (t > 0) x[0] &= ((1 << t) - 1)
7962 else x[0] = 0
7963 self.fromString(x, 256)
7964 }
7965 }
7966
7967 // (public) convert to bigendian byte array
7968 function bnToByteArray() {
7969 var self = this
7970 var i = self.t,
7971 r = new Array()
7972 r[0] = self.s
7973 var p = self.DB - (i * self.DB) % 8,
7974 d, k = 0
7975 if (i-- > 0) {
7976 if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)
7977 r[k++] = d | (self.s << (self.DB - p))
7978 while (i >= 0) {
7979 if (p < 8) {
7980 d = (self[i] & ((1 << p) - 1)) << (8 - p)
7981 d |= self[--i] >> (p += self.DB - 8)
7982 } else {
7983 d = (self[i] >> (p -= 8)) & 0xff
7984 if (p <= 0) {
7985 p += self.DB
7986 --i
7987 }
7988 }
7989 if ((d & 0x80) != 0) d |= -256
7990 if (k === 0 && (self.s & 0x80) != (d & 0x80))++k
7991 if (k > 0 || d != self.s) r[k++] = d
7992 }
7993 }
7994 return r
7995 }
7996
7997 function bnEquals(a) {
7998 return (this.compareTo(a) == 0)
7999 }
8000
8001 function bnMin(a) {
8002 return (this.compareTo(a) < 0) ? this : a
8003 }
8004
8005 function bnMax(a) {
8006 return (this.compareTo(a) > 0) ? this : a
8007 }
8008
8009 // (protected) r = this op a (bitwise)
8010 function bnpBitwiseTo(a, op, r) {
8011 var self = this
8012 var i, f, m = Math.min(a.t, self.t)
8013 for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])
8014 if (a.t < self.t) {
8015 f = a.s & self.DM
8016 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
8017 r.t = self.t
8018 } else {
8019 f = self.s & self.DM
8020 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
8021 r.t = a.t
8022 }
8023 r.s = op(self.s, a.s)
8024 r.clamp()
8025 }
8026
8027 // (public) this & a
8028 function op_and(x, y) {
8029 return x & y
8030 }
8031
8032 function bnAnd(a) {
8033 var r = new BigInteger()
8034 this.bitwiseTo(a, op_and, r)
8035 return r
8036 }
8037
8038 // (public) this | a
8039 function op_or(x, y) {
8040 return x | y
8041 }
8042
8043 function bnOr(a) {
8044 var r = new BigInteger()
8045 this.bitwiseTo(a, op_or, r)
8046 return r
8047 }
8048
8049 // (public) this ^ a
8050 function op_xor(x, y) {
8051 return x ^ y
8052 }
8053
8054 function bnXor(a) {
8055 var r = new BigInteger()
8056 this.bitwiseTo(a, op_xor, r)
8057 return r
8058 }
8059
8060 // (public) this & ~a
8061 function op_andnot(x, y) {
8062 return x & ~y
8063 }
8064
8065 function bnAndNot(a) {
8066 var r = new BigInteger()
8067 this.bitwiseTo(a, op_andnot, r)
8068 return r
8069 }
8070
8071 // (public) ~this
8072 function bnNot() {
8073 var r = new BigInteger()
8074 for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]
8075 r.t = this.t
8076 r.s = ~this.s
8077 return r
8078 }
8079
8080 // (public) this << n
8081 function bnShiftLeft(n) {
8082 var r = new BigInteger()
8083 if (n < 0) this.rShiftTo(-n, r)
8084 else this.lShiftTo(n, r)
8085 return r
8086 }
8087
8088 // (public) this >> n
8089 function bnShiftRight(n) {
8090 var r = new BigInteger()
8091 if (n < 0) this.lShiftTo(-n, r)
8092 else this.rShiftTo(n, r)
8093 return r
8094 }
8095
8096 // return index of lowest 1-bit in x, x < 2^31
8097 function lbit(x) {
8098 if (x == 0) return -1
8099 var r = 0
8100 if ((x & 0xffff) == 0) {
8101 x >>= 16
8102 r += 16
8103 }
8104 if ((x & 0xff) == 0) {
8105 x >>= 8
8106 r += 8
8107 }
8108 if ((x & 0xf) == 0) {
8109 x >>= 4
8110 r += 4
8111 }
8112 if ((x & 3) == 0) {
8113 x >>= 2
8114 r += 2
8115 }
8116 if ((x & 1) == 0)++r
8117 return r
8118 }
8119
8120 // (public) returns index of lowest 1-bit (or -1 if none)
8121 function bnGetLowestSetBit() {
8122 for (var i = 0; i < this.t; ++i)
8123 if (this[i] != 0) return i * this.DB + lbit(this[i])
8124 if (this.s < 0) return this.t * this.DB
8125 return -1
8126 }
8127
8128 // return number of 1 bits in x
8129 function cbit(x) {
8130 var r = 0
8131 while (x != 0) {
8132 x &= x - 1
8133 ++r
8134 }
8135 return r
8136 }
8137
8138 // (public) return number of set bits
8139 function bnBitCount() {
8140 var r = 0,
8141 x = this.s & this.DM
8142 for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)
8143 return r
8144 }
8145
8146 // (public) true iff nth bit is set
8147 function bnTestBit(n) {
8148 var j = Math.floor(n / this.DB)
8149 if (j >= this.t) return (this.s != 0)
8150 return ((this[j] & (1 << (n % this.DB))) != 0)
8151 }
8152
8153 // (protected) this op (1<<n)
8154 function bnpChangeBit(n, op) {
8155 var r = BigInteger.ONE.shiftLeft(n)
8156 this.bitwiseTo(r, op, r)
8157 return r
8158 }
8159
8160 // (public) this | (1<<n)
8161 function bnSetBit(n) {
8162 return this.changeBit(n, op_or)
8163 }
8164
8165 // (public) this & ~(1<<n)
8166 function bnClearBit(n) {
8167 return this.changeBit(n, op_andnot)
8168 }
8169
8170 // (public) this ^ (1<<n)
8171 function bnFlipBit(n) {
8172 return this.changeBit(n, op_xor)
8173 }
8174
8175 // (protected) r = this + a
8176 function bnpAddTo(a, r) {
8177 var self = this
8178
8179 var i = 0,
8180 c = 0,
8181 m = Math.min(a.t, self.t)
8182 while (i < m) {
8183 c += self[i] + a[i]
8184 r[i++] = c & self.DM
8185 c >>= self.DB
8186 }
8187 if (a.t < self.t) {
8188 c += a.s
8189 while (i < self.t) {
8190 c += self[i]
8191 r[i++] = c & self.DM
8192 c >>= self.DB
8193 }
8194 c += self.s
8195 } else {
8196 c += self.s
8197 while (i < a.t) {
8198 c += a[i]
8199 r[i++] = c & self.DM
8200 c >>= self.DB
8201 }
8202 c += a.s
8203 }
8204 r.s = (c < 0) ? -1 : 0
8205 if (c > 0) r[i++] = c
8206 else if (c < -1) r[i++] = self.DV + c
8207 r.t = i
8208 r.clamp()
8209 }
8210
8211 // (public) this + a
8212 function bnAdd(a) {
8213 var r = new BigInteger()
8214 this.addTo(a, r)
8215 return r
8216 }
8217
8218 // (public) this - a
8219 function bnSubtract(a) {
8220 var r = new BigInteger()
8221 this.subTo(a, r)
8222 return r
8223 }
8224
8225 // (public) this * a
8226 function bnMultiply(a) {
8227 var r = new BigInteger()
8228 this.multiplyTo(a, r)
8229 return r
8230 }
8231
8232 // (public) this^2
8233 function bnSquare() {
8234 var r = new BigInteger()
8235 this.squareTo(r)
8236 return r
8237 }
8238
8239 // (public) this / a
8240 function bnDivide(a) {
8241 var r = new BigInteger()
8242 this.divRemTo(a, r, null)
8243 return r
8244 }
8245
8246 // (public) this % a
8247 function bnRemainder(a) {
8248 var r = new BigInteger()
8249 this.divRemTo(a, null, r)
8250 return r
8251 }
8252
8253 // (public) [this/a,this%a]
8254 function bnDivideAndRemainder(a) {
8255 var q = new BigInteger(),
8256 r = new BigInteger()
8257 this.divRemTo(a, q, r)
8258 return new Array(q, r)
8259 }
8260
8261 // (protected) this *= n, this >= 0, 1 < n < DV
8262 function bnpDMultiply(n) {
8263 this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)
8264 ++this.t
8265 this.clamp()
8266 }
8267
8268 // (protected) this += n << w words, this >= 0
8269 function bnpDAddOffset(n, w) {
8270 if (n == 0) return
8271 while (this.t <= w) this[this.t++] = 0
8272 this[w] += n
8273 while (this[w] >= this.DV) {
8274 this[w] -= this.DV
8275 if (++w >= this.t) this[this.t++] = 0
8276 ++this[w]
8277 }
8278 }
8279
8280 // A "null" reducer
8281 function NullExp() {}
8282
8283 function nNop(x) {
8284 return x
8285 }
8286
8287 function nMulTo(x, y, r) {
8288 x.multiplyTo(y, r)
8289 }
8290
8291 function nSqrTo(x, r) {
8292 x.squareTo(r)
8293 }
8294
8295 NullExp.prototype.convert = nNop
8296 NullExp.prototype.revert = nNop
8297 NullExp.prototype.mulTo = nMulTo
8298 NullExp.prototype.sqrTo = nSqrTo
8299
8300 // (public) this^e
8301 function bnPow(e) {
8302 return this.exp(e, new NullExp())
8303 }
8304
8305 // (protected) r = lower n words of "this * a", a.t <= n
8306 // "this" should be the larger one if appropriate.
8307 function bnpMultiplyLowerTo(a, n, r) {
8308 var i = Math.min(this.t + a.t, n)
8309 r.s = 0; // assumes a,this >= 0
8310 r.t = i
8311 while (i > 0) r[--i] = 0
8312 var j
8313 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)
8314 for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)
8315 r.clamp()
8316 }
8317
8318 // (protected) r = "this * a" without lower n words, n > 0
8319 // "this" should be the larger one if appropriate.
8320 function bnpMultiplyUpperTo(a, n, r) {
8321 --n
8322 var i = r.t = this.t + a.t - n
8323 r.s = 0; // assumes a,this >= 0
8324 while (--i >= 0) r[i] = 0
8325 for (i = Math.max(n - this.t, 0); i < a.t; ++i)
8326 r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)
8327 r.clamp()
8328 r.drShiftTo(1, r)
8329 }
8330
8331 // Barrett modular reduction
8332 function Barrett(m) {
8333 // setup Barrett
8334 this.r2 = new BigInteger()
8335 this.q3 = new BigInteger()
8336 BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)
8337 this.mu = this.r2.divide(m)
8338 this.m = m
8339 }
8340
8341 function barrettConvert(x) {
8342 if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)
8343 else if (x.compareTo(this.m) < 0) return x
8344 else {
8345 var r = new BigInteger()
8346 x.copyTo(r)
8347 this.reduce(r)
8348 return r
8349 }
8350 }
8351
8352 function barrettRevert(x) {
8353 return x
8354 }
8355
8356 // x = x mod m (HAC 14.42)
8357 function barrettReduce(x) {
8358 var self = this
8359 x.drShiftTo(self.m.t - 1, self.r2)
8360 if (x.t > self.m.t + 1) {
8361 x.t = self.m.t + 1
8362 x.clamp()
8363 }
8364 self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)
8365 self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)
8366 while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)
8367 x.subTo(self.r2, x)
8368 while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)
8369 }
8370
8371 // r = x^2 mod m; x != r
8372 function barrettSqrTo(x, r) {
8373 x.squareTo(r)
8374 this.reduce(r)
8375 }
8376
8377 // r = x*y mod m; x,y != r
8378 function barrettMulTo(x, y, r) {
8379 x.multiplyTo(y, r)
8380 this.reduce(r)
8381 }
8382
8383 Barrett.prototype.convert = barrettConvert
8384 Barrett.prototype.revert = barrettRevert
8385 Barrett.prototype.reduce = barrettReduce
8386 Barrett.prototype.mulTo = barrettMulTo
8387 Barrett.prototype.sqrTo = barrettSqrTo
8388
8389 // (public) this^e % m (HAC 14.85)
8390 function bnModPow(e, m) {
8391 var i = e.bitLength(),
8392 k, r = nbv(1),
8393 z
8394 if (i <= 0) return r
8395 else if (i < 18) k = 1
8396 else if (i < 48) k = 3
8397 else if (i < 144) k = 4
8398 else if (i < 768) k = 5
8399 else k = 6
8400 if (i < 8)
8401 z = new Classic(m)
8402 else if (m.isEven())
8403 z = new Barrett(m)
8404 else
8405 z = new Montgomery(m)
8406
8407 // precomputation
8408 var g = new Array(),
8409 n = 3,
8410 k1 = k - 1,
8411 km = (1 << k) - 1
8412 g[1] = z.convert(this)
8413 if (k > 1) {
8414 var g2 = new BigInteger()
8415 z.sqrTo(g[1], g2)
8416 while (n <= km) {
8417 g[n] = new BigInteger()
8418 z.mulTo(g2, g[n - 2], g[n])
8419 n += 2
8420 }
8421 }
8422
8423 var j = e.t - 1,
8424 w, is1 = true,
8425 r2 = new BigInteger(),
8426 t
8427 i = nbits(e[j]) - 1
8428 while (j >= 0) {
8429 if (i >= k1) w = (e[j] >> (i - k1)) & km
8430 else {
8431 w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
8432 if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)
8433 }
8434
8435 n = k
8436 while ((w & 1) == 0) {
8437 w >>= 1
8438 --n
8439 }
8440 if ((i -= n) < 0) {
8441 i += this.DB
8442 --j
8443 }
8444 if (is1) { // ret == 1, don't bother squaring or multiplying it
8445 g[w].copyTo(r)
8446 is1 = false
8447 } else {
8448 while (n > 1) {
8449 z.sqrTo(r, r2)
8450 z.sqrTo(r2, r)
8451 n -= 2
8452 }
8453 if (n > 0) z.sqrTo(r, r2)
8454 else {
8455 t = r
8456 r = r2
8457 r2 = t
8458 }
8459 z.mulTo(r2, g[w], r)
8460 }
8461
8462 while (j >= 0 && (e[j] & (1 << i)) == 0) {
8463 z.sqrTo(r, r2)
8464 t = r
8465 r = r2
8466 r2 = t
8467 if (--i < 0) {
8468 i = this.DB - 1
8469 --j
8470 }
8471 }
8472 }
8473 return z.revert(r)
8474 }
8475
8476 // (public) gcd(this,a) (HAC 14.54)
8477 function bnGCD(a) {
8478 var x = (this.s < 0) ? this.negate() : this.clone()
8479 var y = (a.s < 0) ? a.negate() : a.clone()
8480 if (x.compareTo(y) < 0) {
8481 var t = x
8482 x = y
8483 y = t
8484 }
8485 var i = x.getLowestSetBit(),
8486 g = y.getLowestSetBit()
8487 if (g < 0) return x
8488 if (i < g) g = i
8489 if (g > 0) {
8490 x.rShiftTo(g, x)
8491 y.rShiftTo(g, y)
8492 }
8493 while (x.signum() > 0) {
8494 if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)
8495 if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)
8496 if (x.compareTo(y) >= 0) {
8497 x.subTo(y, x)
8498 x.rShiftTo(1, x)
8499 } else {
8500 y.subTo(x, y)
8501 y.rShiftTo(1, y)
8502 }
8503 }
8504 if (g > 0) y.lShiftTo(g, y)
8505 return y
8506 }
8507
8508 // (protected) this % n, n < 2^26
8509 function bnpModInt(n) {
8510 if (n <= 0) return 0
8511 var d = this.DV % n,
8512 r = (this.s < 0) ? n - 1 : 0
8513 if (this.t > 0)
8514 if (d == 0) r = this[0] % n
8515 else
8516 for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n
8517 return r
8518 }
8519
8520 // (public) 1/this % m (HAC 14.61)
8521 function bnModInverse(m) {
8522 var ac = m.isEven()
8523 if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO
8524 var u = m.clone(),
8525 v = this.clone()
8526 var a = nbv(1),
8527 b = nbv(0),
8528 c = nbv(0),
8529 d = nbv(1)
8530 while (u.signum() != 0) {
8531 while (u.isEven()) {
8532 u.rShiftTo(1, u)
8533 if (ac) {
8534 if (!a.isEven() || !b.isEven()) {
8535 a.addTo(this, a)
8536 b.subTo(m, b)
8537 }
8538 a.rShiftTo(1, a)
8539 } else if (!b.isEven()) b.subTo(m, b)
8540 b.rShiftTo(1, b)
8541 }
8542 while (v.isEven()) {
8543 v.rShiftTo(1, v)
8544 if (ac) {
8545 if (!c.isEven() || !d.isEven()) {
8546 c.addTo(this, c)
8547 d.subTo(m, d)
8548 }
8549 c.rShiftTo(1, c)
8550 } else if (!d.isEven()) d.subTo(m, d)
8551 d.rShiftTo(1, d)
8552 }
8553 if (u.compareTo(v) >= 0) {
8554 u.subTo(v, u)
8555 if (ac) a.subTo(c, a)
8556 b.subTo(d, b)
8557 } else {
8558 v.subTo(u, v)
8559 if (ac) c.subTo(a, c)
8560 d.subTo(b, d)
8561 }
8562 }
8563 if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO
8564 if (d.compareTo(m) >= 0) return d.subtract(m)
8565 if (d.signum() < 0) d.addTo(m, d)
8566 else return d
8567 if (d.signum() < 0) return d.add(m)
8568 else return d
8569 }
8570
8571 var lowprimes = [
8572 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
8573 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
8574 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
8575 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
8576 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
8577 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
8578 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
8579 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
8580 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
8581 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
8582 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
8583 ]
8584
8585 var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
8586
8587 // (public) test primality with certainty >= 1-.5^t
8588 function bnIsProbablePrime(t) {
8589 var i, x = this.abs()
8590 if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
8591 for (i = 0; i < lowprimes.length; ++i)
8592 if (x[0] == lowprimes[i]) return true
8593 return false
8594 }
8595 if (x.isEven()) return false
8596 i = 1
8597 while (i < lowprimes.length) {
8598 var m = lowprimes[i],
8599 j = i + 1
8600 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
8601 m = x.modInt(m)
8602 while (i < j) if (m % lowprimes[i++] == 0) return false
8603 }
8604 return x.millerRabin(t)
8605 }
8606
8607 // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
8608 function bnpMillerRabin(t) {
8609 var n1 = this.subtract(BigInteger.ONE)
8610 var k = n1.getLowestSetBit()
8611 if (k <= 0) return false
8612 var r = n1.shiftRight(k)
8613 t = (t + 1) >> 1
8614 if (t > lowprimes.length) t = lowprimes.length
8615 var a = new BigInteger(null)
8616 var j, bases = []
8617 for (var i = 0; i < t; ++i) {
8618 for (;;) {
8619 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
8620 if (bases.indexOf(j) == -1) break
8621 }
8622 bases.push(j)
8623 a.fromInt(j)
8624 var y = a.modPow(r, this)
8625 if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
8626 var j = 1
8627 while (j++ < k && y.compareTo(n1) != 0) {
8628 y = y.modPowInt(2, this)
8629 if (y.compareTo(BigInteger.ONE) == 0) return false
8630 }
8631 if (y.compareTo(n1) != 0) return false
8632 }
8633 }
8634 return true
8635 }
8636
8637 // protected
8638 proto.chunkSize = bnpChunkSize
8639 proto.toRadix = bnpToRadix
8640 proto.fromRadix = bnpFromRadix
8641 proto.fromNumber = bnpFromNumber
8642 proto.bitwiseTo = bnpBitwiseTo
8643 proto.changeBit = bnpChangeBit
8644 proto.addTo = bnpAddTo
8645 proto.dMultiply = bnpDMultiply
8646 proto.dAddOffset = bnpDAddOffset
8647 proto.multiplyLowerTo = bnpMultiplyLowerTo
8648 proto.multiplyUpperTo = bnpMultiplyUpperTo
8649 proto.modInt = bnpModInt
8650 proto.millerRabin = bnpMillerRabin
8651
8652 // public
8653 proto.clone = bnClone
8654 proto.intValue = bnIntValue
8655 proto.byteValue = bnByteValue
8656 proto.shortValue = bnShortValue
8657 proto.signum = bnSigNum
8658 proto.toByteArray = bnToByteArray
8659 proto.equals = bnEquals
8660 proto.min = bnMin
8661 proto.max = bnMax
8662 proto.and = bnAnd
8663 proto.or = bnOr
8664 proto.xor = bnXor
8665 proto.andNot = bnAndNot
8666 proto.not = bnNot
8667 proto.shiftLeft = bnShiftLeft
8668 proto.shiftRight = bnShiftRight
8669 proto.getLowestSetBit = bnGetLowestSetBit
8670 proto.bitCount = bnBitCount
8671 proto.testBit = bnTestBit
8672 proto.setBit = bnSetBit
8673 proto.clearBit = bnClearBit
8674 proto.flipBit = bnFlipBit
8675 proto.add = bnAdd
8676 proto.subtract = bnSubtract
8677 proto.multiply = bnMultiply
8678 proto.divide = bnDivide
8679 proto.remainder = bnRemainder
8680 proto.divideAndRemainder = bnDivideAndRemainder
8681 proto.modPow = bnModPow
8682 proto.modInverse = bnModInverse
8683 proto.pow = bnPow
8684 proto.gcd = bnGCD
8685 proto.isProbablePrime = bnIsProbablePrime
8686
8687 // JSBN-specific extension
8688 proto.square = bnSquare
8689
8690 // constants
8691 BigInteger.ZERO = nbv(0)
8692 BigInteger.ONE = nbv(1)
8693 BigInteger.valueOf = nbv
8694
8695 module.exports = BigInteger
8696
8697 },{"../package.json":4}],2:[function(require,module,exports){
8698 (function (Buffer){
8699 // FIXME: Kind of a weird way to throw exceptions, consider removing
8700 var assert = require('assert')
8701 var BigInteger = require('./bigi')
8702
8703 /**
8704 * Turns a byte array into a big integer.
8705 *
8706 * This function will interpret a byte array as a big integer in big
8707 * endian notation.
8708 */
8709 BigInteger.fromByteArrayUnsigned = function(byteArray) {
8710 // BigInteger expects a DER integer conformant byte array
8711 if (byteArray[0] & 0x80) {
8712 return new BigInteger([0].concat(byteArray))
8713 }
8714
8715 return new BigInteger(byteArray)
8716 }
8717
8718 /**
8719 * Returns a byte array representation of the big integer.
8720 *
8721 * This returns the absolute of the contained value in big endian
8722 * form. A value of zero results in an empty array.
8723 */
8724 BigInteger.prototype.toByteArrayUnsigned = function() {
8725 var byteArray = this.toByteArray()
8726 return byteArray[0] === 0 ? byteArray.slice(1) : byteArray
8727 }
8728
8729 BigInteger.fromDERInteger = function(byteArray) {
8730 return new BigInteger(byteArray)
8731 }
8732
8733 /*
8734 * Converts BigInteger to a DER integer representation.
8735 *
8736 * The format for this value uses the most significant bit as a sign
8737 * bit. If the most significant bit is already set and the integer is
8738 * positive, a 0x00 is prepended.
8739 *
8740 * Examples:
8741 *
8742 * 0 => 0x00
8743 * 1 => 0x01
8744 * -1 => 0xff
8745 * 127 => 0x7f
8746 * -127 => 0x81
8747 * 128 => 0x0080
8748 * -128 => 0x80
8749 * 255 => 0x00ff
8750 * -255 => 0xff01
8751 * 16300 => 0x3fac
8752 * -16300 => 0xc054
8753 * 62300 => 0x00f35c
8754 * -62300 => 0xff0ca4
8755 */
8756 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
8757
8758 BigInteger.fromBuffer = function(buffer) {
8759 // BigInteger expects a DER integer conformant byte array
8760 if (buffer[0] & 0x80) {
8761 var byteArray = Array.prototype.slice.call(buffer)
8762
8763 return new BigInteger([0].concat(byteArray))
8764 }
8765
8766 return new BigInteger(buffer)
8767 }
8768
8769 BigInteger.fromHex = function(hex) {
8770 if (hex === '') return BigInteger.ZERO
8771
8772 assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')
8773 assert.equal(hex.length % 2, 0, 'Incomplete hex')
8774 return new BigInteger(hex, 16)
8775 }
8776
8777 BigInteger.prototype.toBuffer = function(size) {
8778 var byteArray = this.toByteArrayUnsigned()
8779 var zeros = []
8780
8781 var padding = size - byteArray.length
8782 while (zeros.length < padding) zeros.push(0)
8783
8784 return new Buffer(zeros.concat(byteArray))
8785 }
8786
8787 BigInteger.prototype.toHex = function(size) {
8788 return this.toBuffer(size).toString('hex')
8789 }
8790
8791 }).call(this,require("buffer").Buffer)
8792 },{"./bigi":1,"assert":5,"buffer":7}],3:[function(require,module,exports){
8793 var BigInteger = require('./bigi')
8794
8795 //addons
8796 require('./convert')
8797
8798 module.exports = BigInteger
8799 },{"./bigi":1,"./convert":2}],4:[function(require,module,exports){
8800 module.exports={
8801 "name": "bigi",
8802 "version": "1.4.0",
8803 "description": "Big integers.",
8804 "keywords": [
8805 "cryptography",
8806 "math",
8807 "bitcoin",
8808 "arbitrary",
8809 "precision",
8810 "arithmetic",
8811 "big",
8812 "integer",
8813 "int",
8814 "number",
8815 "biginteger",
8816 "bigint",
8817 "bignumber",
8818 "decimal",
8819 "float"
8820 ],
8821 "devDependencies": {
8822 "mocha": "^1.20.1",
8823 "jshint": "^2.5.1",
8824 "coveralls": "^2.10.0",
8825 "istanbul": "^0.2.11"
8826 },
8827 "repository": {
8828 "url": "https://github.com/cryptocoinjs/bigi",
8829 "type": "git"
8830 },
8831 "main": "./lib/index.js",
8832 "scripts": {
8833 "test": "_mocha -- test/*.js",
8834 "jshint": "jshint --config jshint.json lib/*.js ; true",
8835 "unit": "mocha",
8836 "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
8837 "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info"
8838 },
8839 "dependencies": {},
8840 "testling": {
8841 "files": "test/*.js",
8842 "harness": "mocha",
8843 "browsers": [
8844 "ie/9..latest",
8845 "firefox/latest",
8846 "chrome/latest",
8847 "safari/6.0..latest",
8848 "iphone/6.0..latest",
8849 "android-browser/4.2..latest"
8850 ]
8851 },
8852 "bugs": {
8853 "url": "https://github.com/cryptocoinjs/bigi/issues"
8854 },
8855 "homepage": "https://github.com/cryptocoinjs/bigi",
8856 "_id": "bigi@1.4.0",
8857 "dist": {
8858 "shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac",
8859 "tarball": "http://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
8860 },
8861 "_from": "bigi@^1.4.0",
8862 "_npmVersion": "1.4.3",
8863 "_npmUser": {
8864 "name": "jp",
8865 "email": "jprichardson@gmail.com"
8866 },
8867 "maintainers": [
8868 {
8869 "name": "jp",
8870 "email": "jprichardson@gmail.com"
8871 },
8872 {
8873 "name": "midnightlightning",
8874 "email": "boydb@midnightdesign.ws"
8875 },
8876 {
8877 "name": "sidazhang",
8878 "email": "sidazhang89@gmail.com"
8879 },
8880 {
8881 "name": "nadav",
8882 "email": "npm@shesek.info"
8883 }
8884 ],
8885 "directories": {},
8886 "_shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac",
8887 "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
8888 }
8889
8890 },{}],5:[function(require,module,exports){
8891 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
8892 //
8893 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
8894 //
8895 // Originally from narwhal.js (http://narwhaljs.org)
8896 // Copyright (c) 2009 Thomas Robinson <280north.com>
8897 //
8898 // Permission is hereby granted, free of charge, to any person obtaining a copy
8899 // of this software and associated documentation files (the 'Software'), to
8900 // deal in the Software without restriction, including without limitation the
8901 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8902 // sell copies of the Software, and to permit persons to whom the Software is
8903 // furnished to do so, subject to the following conditions:
8904 //
8905 // The above copyright notice and this permission notice shall be included in
8906 // all copies or substantial portions of the Software.
8907 //
8908 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8909 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
8910 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
8911 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
8912 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
8913 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8914
8915 // when used in node, this will actually load the util module we depend on
8916 // versus loading the builtin util module as happens otherwise
8917 // this is a bug in node module loading as far as I am concerned
8918 var util = require('util/');
8919
8920 var pSlice = Array.prototype.slice;
8921 var hasOwn = Object.prototype.hasOwnProperty;
8922
8923 // 1. The assert module provides functions that throw
8924 // AssertionError's when particular conditions are not met. The
8925 // assert module must conform to the following interface.
8926
8927 var assert = module.exports = ok;
8928
8929 // 2. The AssertionError is defined in assert.
8930 // new assert.AssertionError({ message: message,
8931 // actual: actual,
8932 // expected: expected })
8933
8934 assert.AssertionError = function AssertionError(options) {
8935 this.name = 'AssertionError';
8936 this.actual = options.actual;
8937 this.expected = options.expected;
8938 this.operator = options.operator;
8939 if (options.message) {
8940 this.message = options.message;
8941 this.generatedMessage = false;
8942 } else {
8943 this.message = getMessage(this);
8944 this.generatedMessage = true;
8945 }
8946 var stackStartFunction = options.stackStartFunction || fail;
8947
8948 if (Error.captureStackTrace) {
8949 Error.captureStackTrace(this, stackStartFunction);
8950 }
8951 else {
8952 // non v8 browsers so we can have a stacktrace
8953 var err = new Error();
8954 if (err.stack) {
8955 var out = err.stack;
8956
8957 // try to strip useless frames
8958 var fn_name = stackStartFunction.name;
8959 var idx = out.indexOf('\n' + fn_name);
8960 if (idx >= 0) {
8961 // once we have located the function frame
8962 // we need to strip out everything before it (and its line)
8963 var next_line = out.indexOf('\n', idx + 1);
8964 out = out.substring(next_line + 1);
8965 }
8966
8967 this.stack = out;
8968 }
8969 }
8970 };
8971
8972 // assert.AssertionError instanceof Error
8973 util.inherits(assert.AssertionError, Error);
8974
8975 function replacer(key, value) {
8976 if (util.isUndefined(value)) {
8977 return '' + value;
8978 }
8979 if (util.isNumber(value) && !isFinite(value)) {
8980 return value.toString();
8981 }
8982 if (util.isFunction(value) || util.isRegExp(value)) {
8983 return value.toString();
8984 }
8985 return value;
8986 }
8987
8988 function truncate(s, n) {
8989 if (util.isString(s)) {
8990 return s.length < n ? s : s.slice(0, n);
8991 } else {
8992 return s;
8993 }
8994 }
8995
8996 function getMessage(self) {
8997 return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' +
8998 self.operator + ' ' +
8999 truncate(JSON.stringify(self.expected, replacer), 128);
9000 }
9001
9002 // At present only the three keys mentioned above are used and
9003 // understood by the spec. Implementations or sub modules can pass
9004 // other keys to the AssertionError's constructor - they will be
9005 // ignored.
9006
9007 // 3. All of the following functions must throw an AssertionError
9008 // when a corresponding condition is not met, with a message that
9009 // may be undefined if not provided. All assertion methods provide
9010 // both the actual and expected values to the assertion error for
9011 // display purposes.
9012
9013 function fail(actual, expected, message, operator, stackStartFunction) {
9014 throw new assert.AssertionError({
9015 message: message,
9016 actual: actual,
9017 expected: expected,
9018 operator: operator,
9019 stackStartFunction: stackStartFunction
9020 });
9021 }
9022
9023 // EXTENSION! allows for well behaved errors defined elsewhere.
9024 assert.fail = fail;
9025
9026 // 4. Pure assertion tests whether a value is truthy, as determined
9027 // by !!guard.
9028 // assert.ok(guard, message_opt);
9029 // This statement is equivalent to assert.equal(true, !!guard,
9030 // message_opt);. To test strictly for the value true, use
9031 // assert.strictEqual(true, guard, message_opt);.
9032
9033 function ok(value, message) {
9034 if (!value) fail(value, true, message, '==', assert.ok);
9035 }
9036 assert.ok = ok;
9037
9038 // 5. The equality assertion tests shallow, coercive equality with
9039 // ==.
9040 // assert.equal(actual, expected, message_opt);
9041
9042 assert.equal = function equal(actual, expected, message) {
9043 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
9044 };
9045
9046 // 6. The non-equality assertion tests for whether two objects are not equal
9047 // with != assert.notEqual(actual, expected, message_opt);
9048
9049 assert.notEqual = function notEqual(actual, expected, message) {
9050 if (actual == expected) {
9051 fail(actual, expected, message, '!=', assert.notEqual);
9052 }
9053 };
9054
9055 // 7. The equivalence assertion tests a deep equality relation.
9056 // assert.deepEqual(actual, expected, message_opt);
9057
9058 assert.deepEqual = function deepEqual(actual, expected, message) {
9059 if (!_deepEqual(actual, expected)) {
9060 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
9061 }
9062 };
9063
9064 function _deepEqual(actual, expected) {
9065 // 7.1. All identical values are equivalent, as determined by ===.
9066 if (actual === expected) {
9067 return true;
9068
9069 } else if (util.isBuffer(actual) && util.isBuffer(expected)) {
9070 if (actual.length != expected.length) return false;
9071
9072 for (var i = 0; i < actual.length; i++) {
9073 if (actual[i] !== expected[i]) return false;
9074 }
9075
9076 return true;
9077
9078 // 7.2. If the expected value is a Date object, the actual value is
9079 // equivalent if it is also a Date object that refers to the same time.
9080 } else if (util.isDate(actual) && util.isDate(expected)) {
9081 return actual.getTime() === expected.getTime();
9082
9083 // 7.3 If the expected value is a RegExp object, the actual value is
9084 // equivalent if it is also a RegExp object with the same source and
9085 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
9086 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
9087 return actual.source === expected.source &&
9088 actual.global === expected.global &&
9089 actual.multiline === expected.multiline &&
9090 actual.lastIndex === expected.lastIndex &&
9091 actual.ignoreCase === expected.ignoreCase;
9092
9093 // 7.4. Other pairs that do not both pass typeof value == 'object',
9094 // equivalence is determined by ==.
9095 } else if (!util.isObject(actual) && !util.isObject(expected)) {
9096 return actual == expected;
9097
9098 // 7.5 For all other Object pairs, including Array objects, equivalence is
9099 // determined by having the same number of owned properties (as verified
9100 // with Object.prototype.hasOwnProperty.call), the same set of keys
9101 // (although not necessarily the same order), equivalent values for every
9102 // corresponding key, and an identical 'prototype' property. Note: this
9103 // accounts for both named and indexed properties on Arrays.
9104 } else {
9105 return objEquiv(actual, expected);
9106 }
9107 }
9108
9109 function isArguments(object) {
9110 return Object.prototype.toString.call(object) == '[object Arguments]';
9111 }
9112
9113 function objEquiv(a, b) {
9114 if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b))
9115 return false;
9116 // an identical 'prototype' property.
9117 if (a.prototype !== b.prototype) return false;
9118 // if one is a primitive, the other must be same
9119 if (util.isPrimitive(a) || util.isPrimitive(b)) {
9120 return a === b;
9121 }
9122 var aIsArgs = isArguments(a),
9123 bIsArgs = isArguments(b);
9124 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
9125 return false;
9126 if (aIsArgs) {
9127 a = pSlice.call(a);
9128 b = pSlice.call(b);
9129 return _deepEqual(a, b);
9130 }
9131 var ka = objectKeys(a),
9132 kb = objectKeys(b),
9133 key, i;
9134 // having the same number of owned properties (keys incorporates
9135 // hasOwnProperty)
9136 if (ka.length != kb.length)
9137 return false;
9138 //the same set of keys (although not necessarily the same order),
9139 ka.sort();
9140 kb.sort();
9141 //~~~cheap key test
9142 for (i = ka.length - 1; i >= 0; i--) {
9143 if (ka[i] != kb[i])
9144 return false;
9145 }
9146 //equivalent values for every corresponding key, and
9147 //~~~possibly expensive deep test
9148 for (i = ka.length - 1; i >= 0; i--) {
9149 key = ka[i];
9150 if (!_deepEqual(a[key], b[key])) return false;
9151 }
9152 return true;
9153 }
9154
9155 // 8. The non-equivalence assertion tests for any deep inequality.
9156 // assert.notDeepEqual(actual, expected, message_opt);
9157
9158 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
9159 if (_deepEqual(actual, expected)) {
9160 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
9161 }
9162 };
9163
9164 // 9. The strict equality assertion tests strict equality, as determined by ===.
9165 // assert.strictEqual(actual, expected, message_opt);
9166
9167 assert.strictEqual = function strictEqual(actual, expected, message) {
9168 if (actual !== expected) {
9169 fail(actual, expected, message, '===', assert.strictEqual);
9170 }
9171 };
9172
9173 // 10. The strict non-equality assertion tests for strict inequality, as
9174 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
9175
9176 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
9177 if (actual === expected) {
9178 fail(actual, expected, message, '!==', assert.notStrictEqual);
9179 }
9180 };
9181
9182 function expectedException(actual, expected) {
9183 if (!actual || !expected) {
9184 return false;
9185 }
9186
9187 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
9188 return expected.test(actual);
9189 } else if (actual instanceof expected) {
9190 return true;
9191 } else if (expected.call({}, actual) === true) {
9192 return true;
9193 }
9194
9195 return false;
9196 }
9197
9198 function _throws(shouldThrow, block, expected, message) {
9199 var actual;
9200
9201 if (util.isString(expected)) {
9202 message = expected;
9203 expected = null;
9204 }
9205
9206 try {
9207 block();
9208 } catch (e) {
9209 actual = e;
9210 }
9211
9212 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
9213 (message ? ' ' + message : '.');
9214
9215 if (shouldThrow && !actual) {
9216 fail(actual, expected, 'Missing expected exception' + message);
9217 }
9218
9219 if (!shouldThrow && expectedException(actual, expected)) {
9220 fail(actual, expected, 'Got unwanted exception' + message);
9221 }
9222
9223 if ((shouldThrow && actual && expected &&
9224 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
9225 throw actual;
9226 }
9227 }
9228
9229 // 11. Expected to throw an error:
9230 // assert.throws(block, Error_opt, message_opt);
9231
9232 assert.throws = function(block, /*optional*/error, /*optional*/message) {
9233 _throws.apply(this, [true].concat(pSlice.call(arguments)));
9234 };
9235
9236 // EXTENSION! This is annoying to write outside this module.
9237 assert.doesNotThrow = function(block, /*optional*/message) {
9238 _throws.apply(this, [false].concat(pSlice.call(arguments)));
9239 };
9240
9241 assert.ifError = function(err) { if (err) {throw err;}};
9242
9243 var objectKeys = Object.keys || function (obj) {
9244 var keys = [];
9245 for (var key in obj) {
9246 if (hasOwn.call(obj, key)) keys.push(key);
9247 }
9248 return keys;
9249 };
9250
9251 },{"util/":29}],6:[function(require,module,exports){
9252
9253 },{}],7:[function(require,module,exports){
9254 /*!
9255 * The buffer module from node.js, for the browser.
9256 *
9257 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
9258 * @license MIT
9259 */
9260
9261 var base64 = require('base64-js')
9262 var ieee754 = require('ieee754')
9263 var isArray = require('is-array')
9264
9265 exports.Buffer = Buffer
9266 exports.SlowBuffer = SlowBuffer
9267 exports.INSPECT_MAX_BYTES = 50
9268 Buffer.poolSize = 8192 // not used by this implementation
9269
9270 var rootParent = {}
9271
9272 /**
9273 * If `Buffer.TYPED_ARRAY_SUPPORT`:
9274 * === true Use Uint8Array implementation (fastest)
9275 * === false Use Object implementation (most compatible, even IE6)
9276 *
9277 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
9278 * Opera 11.6+, iOS 4.2+.
9279 *
9280 * Due to various browser bugs, sometimes the Object implementation will be used even
9281 * when the browser supports typed arrays.
9282 *
9283 * Note:
9284 *
9285 * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
9286 * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
9287 *
9288 * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property
9289 * on objects.
9290 *
9291 * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
9292 *
9293 * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
9294 * incorrect length in some situations.
9295
9296 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
9297 * get the Object implementation, which is slower but behaves correctly.
9298 */
9299 Buffer.TYPED_ARRAY_SUPPORT = (function () {
9300 function Bar () {}
9301 try {
9302 var arr = new Uint8Array(1)
9303 arr.foo = function () { return 42 }
9304 arr.constructor = Bar
9305 return arr.foo() === 42 && // typed array instances can be augmented
9306 arr.constructor === Bar && // constructor can be set
9307 typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
9308 arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
9309 } catch (e) {
9310 return false
9311 }
9312 })()
9313
9314 function kMaxLength () {
9315 return Buffer.TYPED_ARRAY_SUPPORT
9316 ? 0x7fffffff
9317 : 0x3fffffff
9318 }
9319
9320 /**
9321 * Class: Buffer
9322 * =============
9323 *
9324 * The Buffer constructor returns instances of `Uint8Array` that are augmented
9325 * with function properties for all the node `Buffer` API functions. We use
9326 * `Uint8Array` so that square bracket notation works as expected -- it returns
9327 * a single octet.
9328 *
9329 * By augmenting the instances, we can avoid modifying the `Uint8Array`
9330 * prototype.
9331 */
9332 function Buffer (arg) {
9333 if (!(this instanceof Buffer)) {
9334 // Avoid going through an ArgumentsAdaptorTrampoline in the common case.
9335 if (arguments.length > 1) return new Buffer(arg, arguments[1])
9336 return new Buffer(arg)
9337 }
9338
9339 this.length = 0
9340 this.parent = undefined
9341
9342 // Common case.
9343 if (typeof arg === 'number') {
9344 return fromNumber(this, arg)
9345 }
9346
9347 // Slightly less common case.
9348 if (typeof arg === 'string') {
9349 return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')
9350 }
9351
9352 // Unusual.
9353 return fromObject(this, arg)
9354 }
9355
9356 function fromNumber (that, length) {
9357 that = allocate(that, length < 0 ? 0 : checked(length) | 0)
9358 if (!Buffer.TYPED_ARRAY_SUPPORT) {
9359 for (var i = 0; i < length; i++) {
9360 that[i] = 0
9361 }
9362 }
9363 return that
9364 }
9365
9366 function fromString (that, string, encoding) {
9367 if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'
9368
9369 // Assumption: byteLength() return value is always < kMaxLength.
9370 var length = byteLength(string, encoding) | 0
9371 that = allocate(that, length)
9372
9373 that.write(string, encoding)
9374 return that
9375 }
9376
9377 function fromObject (that, object) {
9378 if (Buffer.isBuffer(object)) return fromBuffer(that, object)
9379
9380 if (isArray(object)) return fromArray(that, object)
9381
9382 if (object == null) {
9383 throw new TypeError('must start with number, buffer, array or string')
9384 }
9385
9386 if (typeof ArrayBuffer !== 'undefined') {
9387 if (object.buffer instanceof ArrayBuffer) {
9388 return fromTypedArray(that, object)
9389 }
9390 if (object instanceof ArrayBuffer) {
9391 return fromArrayBuffer(that, object)
9392 }
9393 }
9394
9395 if (object.length) return fromArrayLike(that, object)
9396
9397 return fromJsonObject(that, object)
9398 }
9399
9400 function fromBuffer (that, buffer) {
9401 var length = checked(buffer.length) | 0
9402 that = allocate(that, length)
9403 buffer.copy(that, 0, 0, length)
9404 return that
9405 }
9406
9407 function fromArray (that, array) {
9408 var length = checked(array.length) | 0
9409 that = allocate(that, length)
9410 for (var i = 0; i < length; i += 1) {
9411 that[i] = array[i] & 255
9412 }
9413 return that
9414 }
9415
9416 // Duplicate of fromArray() to keep fromArray() monomorphic.
9417 function fromTypedArray (that, array) {
9418 var length = checked(array.length) | 0
9419 that = allocate(that, length)
9420 // Truncating the elements is probably not what people expect from typed
9421 // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior
9422 // of the old Buffer constructor.
9423 for (var i = 0; i < length; i += 1) {
9424 that[i] = array[i] & 255
9425 }
9426 return that
9427 }
9428
9429 function fromArrayBuffer (that, array) {
9430 if (Buffer.TYPED_ARRAY_SUPPORT) {
9431 // Return an augmented `Uint8Array` instance, for best performance
9432 array.byteLength
9433 that = Buffer._augment(new Uint8Array(array))
9434 } else {
9435 // Fallback: Return an object instance of the Buffer class
9436 that = fromTypedArray(that, new Uint8Array(array))
9437 }
9438 return that
9439 }
9440
9441 function fromArrayLike (that, array) {
9442 var length = checked(array.length) | 0
9443 that = allocate(that, length)
9444 for (var i = 0; i < length; i += 1) {
9445 that[i] = array[i] & 255
9446 }
9447 return that
9448 }
9449
9450 // Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.
9451 // Returns a zero-length buffer for inputs that don't conform to the spec.
9452 function fromJsonObject (that, object) {
9453 var array
9454 var length = 0
9455
9456 if (object.type === 'Buffer' && isArray(object.data)) {
9457 array = object.data
9458 length = checked(array.length) | 0
9459 }
9460 that = allocate(that, length)
9461
9462 for (var i = 0; i < length; i += 1) {
9463 that[i] = array[i] & 255
9464 }
9465 return that
9466 }
9467
9468 function allocate (that, length) {
9469 if (Buffer.TYPED_ARRAY_SUPPORT) {
9470 // Return an augmented `Uint8Array` instance, for best performance
9471 that = Buffer._augment(new Uint8Array(length))
9472 } else {
9473 // Fallback: Return an object instance of the Buffer class
9474 that.length = length
9475 that._isBuffer = true
9476 }
9477
9478 var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1
9479 if (fromPool) that.parent = rootParent
9480
9481 return that
9482 }
9483
9484 function checked (length) {
9485 // Note: cannot use `length < kMaxLength` here because that fails when
9486 // length is NaN (which is otherwise coerced to zero.)
9487 if (length >= kMaxLength()) {
9488 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
9489 'size: 0x' + kMaxLength().toString(16) + ' bytes')
9490 }
9491 return length | 0
9492 }
9493
9494 function SlowBuffer (subject, encoding) {
9495 if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)
9496
9497 var buf = new Buffer(subject, encoding)
9498 delete buf.parent
9499 return buf
9500 }
9501
9502 Buffer.isBuffer = function isBuffer (b) {
9503 return !!(b != null && b._isBuffer)
9504 }
9505
9506 Buffer.compare = function compare (a, b) {
9507 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
9508 throw new TypeError('Arguments must be Buffers')
9509 }
9510
9511 if (a === b) return 0
9512
9513 var x = a.length
9514 var y = b.length
9515
9516 var i = 0
9517 var len = Math.min(x, y)
9518 while (i < len) {
9519 if (a[i] !== b[i]) break
9520
9521 ++i
9522 }
9523
9524 if (i !== len) {
9525 x = a[i]
9526 y = b[i]
9527 }
9528
9529 if (x < y) return -1
9530 if (y < x) return 1
9531 return 0
9532 }
9533
9534 Buffer.isEncoding = function isEncoding (encoding) {
9535 switch (String(encoding).toLowerCase()) {
9536 case 'hex':
9537 case 'utf8':
9538 case 'utf-8':
9539 case 'ascii':
9540 case 'binary':
9541 case 'base64':
9542 case 'raw':
9543 case 'ucs2':
9544 case 'ucs-2':
9545 case 'utf16le':
9546 case 'utf-16le':
9547 return true
9548 default:
9549 return false
9550 }
9551 }
9552
9553 Buffer.concat = function concat (list, length) {
9554 if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')
9555
9556 if (list.length === 0) {
9557 return new Buffer(0)
9558 }
9559
9560 var i
9561 if (length === undefined) {
9562 length = 0
9563 for (i = 0; i < list.length; i++) {
9564 length += list[i].length
9565 }
9566 }
9567
9568 var buf = new Buffer(length)
9569 var pos = 0
9570 for (i = 0; i < list.length; i++) {
9571 var item = list[i]
9572 item.copy(buf, pos)
9573 pos += item.length
9574 }
9575 return buf
9576 }
9577
9578 function byteLength (string, encoding) {
9579 if (typeof string !== 'string') string = '' + string
9580
9581 var len = string.length
9582 if (len === 0) return 0
9583
9584 // Use a for loop to avoid recursion
9585 var loweredCase = false
9586 for (;;) {
9587 switch (encoding) {
9588 case 'ascii':
9589 case 'binary':
9590 // Deprecated
9591 case 'raw':
9592 case 'raws':
9593 return len
9594 case 'utf8':
9595 case 'utf-8':
9596 return utf8ToBytes(string).length
9597 case 'ucs2':
9598 case 'ucs-2':
9599 case 'utf16le':
9600 case 'utf-16le':
9601 return len * 2
9602 case 'hex':
9603 return len >>> 1
9604 case 'base64':
9605 return base64ToBytes(string).length
9606 default:
9607 if (loweredCase) return utf8ToBytes(string).length // assume utf8
9608 encoding = ('' + encoding).toLowerCase()
9609 loweredCase = true
9610 }
9611 }
9612 }
9613 Buffer.byteLength = byteLength
9614
9615 // pre-set for values that may exist in the future
9616 Buffer.prototype.length = undefined
9617 Buffer.prototype.parent = undefined
9618
9619 function slowToString (encoding, start, end) {
9620 var loweredCase = false
9621
9622 start = start | 0
9623 end = end === undefined || end === Infinity ? this.length : end | 0
9624
9625 if (!encoding) encoding = 'utf8'
9626 if (start < 0) start = 0
9627 if (end > this.length) end = this.length
9628 if (end <= start) return ''
9629
9630 while (true) {
9631 switch (encoding) {
9632 case 'hex':
9633 return hexSlice(this, start, end)
9634
9635 case 'utf8':
9636 case 'utf-8':
9637 return utf8Slice(this, start, end)
9638
9639 case 'ascii':
9640 return asciiSlice(this, start, end)
9641
9642 case 'binary':
9643 return binarySlice(this, start, end)
9644
9645 case 'base64':
9646 return base64Slice(this, start, end)
9647
9648 case 'ucs2':
9649 case 'ucs-2':
9650 case 'utf16le':
9651 case 'utf-16le':
9652 return utf16leSlice(this, start, end)
9653
9654 default:
9655 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
9656 encoding = (encoding + '').toLowerCase()
9657 loweredCase = true
9658 }
9659 }
9660 }
9661
9662 Buffer.prototype.toString = function toString () {
9663 var length = this.length | 0
9664 if (length === 0) return ''
9665 if (arguments.length === 0) return utf8Slice(this, 0, length)
9666 return slowToString.apply(this, arguments)
9667 }
9668
9669 Buffer.prototype.equals = function equals (b) {
9670 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
9671 if (this === b) return true
9672 return Buffer.compare(this, b) === 0
9673 }
9674
9675 Buffer.prototype.inspect = function inspect () {
9676 var str = ''
9677 var max = exports.INSPECT_MAX_BYTES
9678 if (this.length > 0) {
9679 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
9680 if (this.length > max) str += ' ... '
9681 }
9682 return '<Buffer ' + str + '>'
9683 }
9684
9685 Buffer.prototype.compare = function compare (b) {
9686 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
9687 if (this === b) return 0
9688 return Buffer.compare(this, b)
9689 }
9690
9691 Buffer.prototype.indexOf = function indexOf (val, byteOffset) {
9692 if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff
9693 else if (byteOffset < -0x80000000) byteOffset = -0x80000000
9694 byteOffset >>= 0
9695
9696 if (this.length === 0) return -1
9697 if (byteOffset >= this.length) return -1
9698
9699 // Negative offsets start from the end of the buffer
9700 if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)
9701
9702 if (typeof val === 'string') {
9703 if (val.length === 0) return -1 // special case: looking for empty string always fails
9704 return String.prototype.indexOf.call(this, val, byteOffset)
9705 }
9706 if (Buffer.isBuffer(val)) {
9707 return arrayIndexOf(this, val, byteOffset)
9708 }
9709 if (typeof val === 'number') {
9710 if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {
9711 return Uint8Array.prototype.indexOf.call(this, val, byteOffset)
9712 }
9713 return arrayIndexOf(this, [ val ], byteOffset)
9714 }
9715
9716 function arrayIndexOf (arr, val, byteOffset) {
9717 var foundIndex = -1
9718 for (var i = 0; byteOffset + i < arr.length; i++) {
9719 if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {
9720 if (foundIndex === -1) foundIndex = i
9721 if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex
9722 } else {
9723 foundIndex = -1
9724 }
9725 }
9726 return -1
9727 }
9728
9729 throw new TypeError('val must be string, number or Buffer')
9730 }
9731
9732 // `get` is deprecated
9733 Buffer.prototype.get = function get (offset) {
9734 console.log('.get() is deprecated. Access using array indexes instead.')
9735 return this.readUInt8(offset)
9736 }
9737
9738 // `set` is deprecated
9739 Buffer.prototype.set = function set (v, offset) {
9740 console.log('.set() is deprecated. Access using array indexes instead.')
9741 return this.writeUInt8(v, offset)
9742 }
9743
9744 function hexWrite (buf, string, offset, length) {
9745 offset = Number(offset) || 0
9746 var remaining = buf.length - offset
9747 if (!length) {
9748 length = remaining
9749 } else {
9750 length = Number(length)
9751 if (length > remaining) {
9752 length = remaining
9753 }
9754 }
9755
9756 // must be an even number of digits
9757 var strLen = string.length
9758 if (strLen % 2 !== 0) throw new Error('Invalid hex string')
9759
9760 if (length > strLen / 2) {
9761 length = strLen / 2
9762 }
9763 for (var i = 0; i < length; i++) {
9764 var parsed = parseInt(string.substr(i * 2, 2), 16)
9765 if (isNaN(parsed)) throw new Error('Invalid hex string')
9766 buf[offset + i] = parsed
9767 }
9768 return i
9769 }
9770
9771 function utf8Write (buf, string, offset, length) {
9772 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
9773 }
9774
9775 function asciiWrite (buf, string, offset, length) {
9776 return blitBuffer(asciiToBytes(string), buf, offset, length)
9777 }
9778
9779 function binaryWrite (buf, string, offset, length) {
9780 return asciiWrite(buf, string, offset, length)
9781 }
9782
9783 function base64Write (buf, string, offset, length) {
9784 return blitBuffer(base64ToBytes(string), buf, offset, length)
9785 }
9786
9787 function ucs2Write (buf, string, offset, length) {
9788 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
9789 }
9790
9791 Buffer.prototype.write = function write (string, offset, length, encoding) {
9792 // Buffer#write(string)
9793 if (offset === undefined) {
9794 encoding = 'utf8'
9795 length = this.length
9796 offset = 0
9797 // Buffer#write(string, encoding)
9798 } else if (length === undefined && typeof offset === 'string') {
9799 encoding = offset
9800 length = this.length
9801 offset = 0
9802 // Buffer#write(string, offset[, length][, encoding])
9803 } else if (isFinite(offset)) {
9804 offset = offset | 0
9805 if (isFinite(length)) {
9806 length = length | 0
9807 if (encoding === undefined) encoding = 'utf8'
9808 } else {
9809 encoding = length
9810 length = undefined
9811 }
9812 // legacy write(string, encoding, offset, length) - remove in v0.13
9813 } else {
9814 var swap = encoding
9815 encoding = offset
9816 offset = length | 0
9817 length = swap
9818 }
9819
9820 var remaining = this.length - offset
9821 if (length === undefined || length > remaining) length = remaining
9822
9823 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
9824 throw new RangeError('attempt to write outside buffer bounds')
9825 }
9826
9827 if (!encoding) encoding = 'utf8'
9828
9829 var loweredCase = false
9830 for (;;) {
9831 switch (encoding) {
9832 case 'hex':
9833 return hexWrite(this, string, offset, length)
9834
9835 case 'utf8':
9836 case 'utf-8':
9837 return utf8Write(this, string, offset, length)
9838
9839 case 'ascii':
9840 return asciiWrite(this, string, offset, length)
9841
9842 case 'binary':
9843 return binaryWrite(this, string, offset, length)
9844
9845 case 'base64':
9846 // Warning: maxLength not taken into account in base64Write
9847 return base64Write(this, string, offset, length)
9848
9849 case 'ucs2':
9850 case 'ucs-2':
9851 case 'utf16le':
9852 case 'utf-16le':
9853 return ucs2Write(this, string, offset, length)
9854
9855 default:
9856 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
9857 encoding = ('' + encoding).toLowerCase()
9858 loweredCase = true
9859 }
9860 }
9861 }
9862
9863 Buffer.prototype.toJSON = function toJSON () {
9864 return {
9865 type: 'Buffer',
9866 data: Array.prototype.slice.call(this._arr || this, 0)
9867 }
9868 }
9869
9870 function base64Slice (buf, start, end) {
9871 if (start === 0 && end === buf.length) {
9872 return base64.fromByteArray(buf)
9873 } else {
9874 return base64.fromByteArray(buf.slice(start, end))
9875 }
9876 }
9877
9878 function utf8Slice (buf, start, end) {
9879 end = Math.min(buf.length, end)
9880 var firstByte
9881 var secondByte
9882 var thirdByte
9883 var fourthByte
9884 var bytesPerSequence
9885 var tempCodePoint
9886 var codePoint
9887 var res = []
9888 var i = start
9889
9890 for (; i < end; i += bytesPerSequence) {
9891 firstByte = buf[i]
9892 codePoint = 0xFFFD
9893
9894 if (firstByte > 0xEF) {
9895 bytesPerSequence = 4
9896 } else if (firstByte > 0xDF) {
9897 bytesPerSequence = 3
9898 } else if (firstByte > 0xBF) {
9899 bytesPerSequence = 2
9900 } else {
9901 bytesPerSequence = 1
9902 }
9903
9904 if (i + bytesPerSequence <= end) {
9905 switch (bytesPerSequence) {
9906 case 1:
9907 if (firstByte < 0x80) {
9908 codePoint = firstByte
9909 }
9910 break
9911 case 2:
9912 secondByte = buf[i + 1]
9913 if ((secondByte & 0xC0) === 0x80) {
9914 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
9915 if (tempCodePoint > 0x7F) {
9916 codePoint = tempCodePoint
9917 }
9918 }
9919 break
9920 case 3:
9921 secondByte = buf[i + 1]
9922 thirdByte = buf[i + 2]
9923 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
9924 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
9925 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
9926 codePoint = tempCodePoint
9927 }
9928 }
9929 break
9930 case 4:
9931 secondByte = buf[i + 1]
9932 thirdByte = buf[i + 2]
9933 fourthByte = buf[i + 3]
9934 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
9935 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
9936 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
9937 codePoint = tempCodePoint
9938 }
9939 }
9940 }
9941 }
9942
9943 if (codePoint === 0xFFFD) {
9944 // we generated an invalid codePoint so make sure to only advance by 1 byte
9945 bytesPerSequence = 1
9946 } else if (codePoint > 0xFFFF) {
9947 // encode to utf16 (surrogate pair dance)
9948 codePoint -= 0x10000
9949 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
9950 codePoint = 0xDC00 | codePoint & 0x3FF
9951 }
9952
9953 res.push(codePoint)
9954 }
9955
9956 return String.fromCharCode.apply(String, res)
9957 }
9958
9959 function asciiSlice (buf, start, end) {
9960 var ret = ''
9961 end = Math.min(buf.length, end)
9962
9963 for (var i = start; i < end; i++) {
9964 ret += String.fromCharCode(buf[i] & 0x7F)
9965 }
9966 return ret
9967 }
9968
9969 function binarySlice (buf, start, end) {
9970 var ret = ''
9971 end = Math.min(buf.length, end)
9972
9973 for (var i = start; i < end; i++) {
9974 ret += String.fromCharCode(buf[i])
9975 }
9976 return ret
9977 }
9978
9979 function hexSlice (buf, start, end) {
9980 var len = buf.length
9981
9982 if (!start || start < 0) start = 0
9983 if (!end || end < 0 || end > len) end = len
9984
9985 var out = ''
9986 for (var i = start; i < end; i++) {
9987 out += toHex(buf[i])
9988 }
9989 return out
9990 }
9991
9992 function utf16leSlice (buf, start, end) {
9993 var bytes = buf.slice(start, end)
9994 var res = ''
9995 for (var i = 0; i < bytes.length; i += 2) {
9996 res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
9997 }
9998 return res
9999 }
10000
10001 Buffer.prototype.slice = function slice (start, end) {
10002 var len = this.length
10003 start = ~~start
10004 end = end === undefined ? len : ~~end
10005
10006 if (start < 0) {
10007 start += len
10008 if (start < 0) start = 0
10009 } else if (start > len) {
10010 start = len
10011 }
10012
10013 if (end < 0) {
10014 end += len
10015 if (end < 0) end = 0
10016 } else if (end > len) {
10017 end = len
10018 }
10019
10020 if (end < start) end = start
10021
10022 var newBuf
10023 if (Buffer.TYPED_ARRAY_SUPPORT) {
10024 newBuf = Buffer._augment(this.subarray(start, end))
10025 } else {
10026 var sliceLen = end - start
10027 newBuf = new Buffer(sliceLen, undefined)
10028 for (var i = 0; i < sliceLen; i++) {
10029 newBuf[i] = this[i + start]
10030 }
10031 }
10032
10033 if (newBuf.length) newBuf.parent = this.parent || this
10034
10035 return newBuf
10036 }
10037
10038 /*
10039 * Need to make sure that buffer isn't trying to write out of bounds.
10040 */
10041 function checkOffset (offset, ext, length) {
10042 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
10043 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
10044 }
10045
10046 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
10047 offset = offset | 0
10048 byteLength = byteLength | 0
10049 if (!noAssert) checkOffset(offset, byteLength, this.length)
10050
10051 var val = this[offset]
10052 var mul = 1
10053 var i = 0
10054 while (++i < byteLength && (mul *= 0x100)) {
10055 val += this[offset + i] * mul
10056 }
10057
10058 return val
10059 }
10060
10061 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
10062 offset = offset | 0
10063 byteLength = byteLength | 0
10064 if (!noAssert) {
10065 checkOffset(offset, byteLength, this.length)
10066 }
10067
10068 var val = this[offset + --byteLength]
10069 var mul = 1
10070 while (byteLength > 0 && (mul *= 0x100)) {
10071 val += this[offset + --byteLength] * mul
10072 }
10073
10074 return val
10075 }
10076
10077 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
10078 if (!noAssert) checkOffset(offset, 1, this.length)
10079 return this[offset]
10080 }
10081
10082 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
10083 if (!noAssert) checkOffset(offset, 2, this.length)
10084 return this[offset] | (this[offset + 1] << 8)
10085 }
10086
10087 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
10088 if (!noAssert) checkOffset(offset, 2, this.length)
10089 return (this[offset] << 8) | this[offset + 1]
10090 }
10091
10092 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
10093 if (!noAssert) checkOffset(offset, 4, this.length)
10094
10095 return ((this[offset]) |
10096 (this[offset + 1] << 8) |
10097 (this[offset + 2] << 16)) +
10098 (this[offset + 3] * 0x1000000)
10099 }
10100
10101 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
10102 if (!noAssert) checkOffset(offset, 4, this.length)
10103
10104 return (this[offset] * 0x1000000) +
10105 ((this[offset + 1] << 16) |
10106 (this[offset + 2] << 8) |
10107 this[offset + 3])
10108 }
10109
10110 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
10111 offset = offset | 0
10112 byteLength = byteLength | 0
10113 if (!noAssert) checkOffset(offset, byteLength, this.length)
10114
10115 var val = this[offset]
10116 var mul = 1
10117 var i = 0
10118 while (++i < byteLength && (mul *= 0x100)) {
10119 val += this[offset + i] * mul
10120 }
10121 mul *= 0x80
10122
10123 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
10124
10125 return val
10126 }
10127
10128 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
10129 offset = offset | 0
10130 byteLength = byteLength | 0
10131 if (!noAssert) checkOffset(offset, byteLength, this.length)
10132
10133 var i = byteLength
10134 var mul = 1
10135 var val = this[offset + --i]
10136 while (i > 0 && (mul *= 0x100)) {
10137 val += this[offset + --i] * mul
10138 }
10139 mul *= 0x80
10140
10141 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
10142
10143 return val
10144 }
10145
10146 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
10147 if (!noAssert) checkOffset(offset, 1, this.length)
10148 if (!(this[offset] & 0x80)) return (this[offset])
10149 return ((0xff - this[offset] + 1) * -1)
10150 }
10151
10152 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
10153 if (!noAssert) checkOffset(offset, 2, this.length)
10154 var val = this[offset] | (this[offset + 1] << 8)
10155 return (val & 0x8000) ? val | 0xFFFF0000 : val
10156 }
10157
10158 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
10159 if (!noAssert) checkOffset(offset, 2, this.length)
10160 var val = this[offset + 1] | (this[offset] << 8)
10161 return (val & 0x8000) ? val | 0xFFFF0000 : val
10162 }
10163
10164 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
10165 if (!noAssert) checkOffset(offset, 4, this.length)
10166
10167 return (this[offset]) |
10168 (this[offset + 1] << 8) |
10169 (this[offset + 2] << 16) |
10170 (this[offset + 3] << 24)
10171 }
10172
10173 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
10174 if (!noAssert) checkOffset(offset, 4, this.length)
10175
10176 return (this[offset] << 24) |
10177 (this[offset + 1] << 16) |
10178 (this[offset + 2] << 8) |
10179 (this[offset + 3])
10180 }
10181
10182 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
10183 if (!noAssert) checkOffset(offset, 4, this.length)
10184 return ieee754.read(this, offset, true, 23, 4)
10185 }
10186
10187 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
10188 if (!noAssert) checkOffset(offset, 4, this.length)
10189 return ieee754.read(this, offset, false, 23, 4)
10190 }
10191
10192 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
10193 if (!noAssert) checkOffset(offset, 8, this.length)
10194 return ieee754.read(this, offset, true, 52, 8)
10195 }
10196
10197 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
10198 if (!noAssert) checkOffset(offset, 8, this.length)
10199 return ieee754.read(this, offset, false, 52, 8)
10200 }
10201
10202 function checkInt (buf, value, offset, ext, max, min) {
10203 if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')
10204 if (value > max || value < min) throw new RangeError('value is out of bounds')
10205 if (offset + ext > buf.length) throw new RangeError('index out of range')
10206 }
10207
10208 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
10209 value = +value
10210 offset = offset | 0
10211 byteLength = byteLength | 0
10212 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
10213
10214 var mul = 1
10215 var i = 0
10216 this[offset] = value & 0xFF
10217 while (++i < byteLength && (mul *= 0x100)) {
10218 this[offset + i] = (value / mul) & 0xFF
10219 }
10220
10221 return offset + byteLength
10222 }
10223
10224 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
10225 value = +value
10226 offset = offset | 0
10227 byteLength = byteLength | 0
10228 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
10229
10230 var i = byteLength - 1
10231 var mul = 1
10232 this[offset + i] = value & 0xFF
10233 while (--i >= 0 && (mul *= 0x100)) {
10234 this[offset + i] = (value / mul) & 0xFF
10235 }
10236
10237 return offset + byteLength
10238 }
10239
10240 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
10241 value = +value
10242 offset = offset | 0
10243 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
10244 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
10245 this[offset] = value
10246 return offset + 1
10247 }
10248
10249 function objectWriteUInt16 (buf, value, offset, littleEndian) {
10250 if (value < 0) value = 0xffff + value + 1
10251 for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {
10252 buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
10253 (littleEndian ? i : 1 - i) * 8
10254 }
10255 }
10256
10257 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
10258 value = +value
10259 offset = offset | 0
10260 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
10261 if (Buffer.TYPED_ARRAY_SUPPORT) {
10262 this[offset] = value
10263 this[offset + 1] = (value >>> 8)
10264 } else {
10265 objectWriteUInt16(this, value, offset, true)
10266 }
10267 return offset + 2
10268 }
10269
10270 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
10271 value = +value
10272 offset = offset | 0
10273 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
10274 if (Buffer.TYPED_ARRAY_SUPPORT) {
10275 this[offset] = (value >>> 8)
10276 this[offset + 1] = value
10277 } else {
10278 objectWriteUInt16(this, value, offset, false)
10279 }
10280 return offset + 2
10281 }
10282
10283 function objectWriteUInt32 (buf, value, offset, littleEndian) {
10284 if (value < 0) value = 0xffffffff + value + 1
10285 for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {
10286 buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
10287 }
10288 }
10289
10290 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
10291 value = +value
10292 offset = offset | 0
10293 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
10294 if (Buffer.TYPED_ARRAY_SUPPORT) {
10295 this[offset + 3] = (value >>> 24)
10296 this[offset + 2] = (value >>> 16)
10297 this[offset + 1] = (value >>> 8)
10298 this[offset] = value
10299 } else {
10300 objectWriteUInt32(this, value, offset, true)
10301 }
10302 return offset + 4
10303 }
10304
10305 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
10306 value = +value
10307 offset = offset | 0
10308 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
10309 if (Buffer.TYPED_ARRAY_SUPPORT) {
10310 this[offset] = (value >>> 24)
10311 this[offset + 1] = (value >>> 16)
10312 this[offset + 2] = (value >>> 8)
10313 this[offset + 3] = value
10314 } else {
10315 objectWriteUInt32(this, value, offset, false)
10316 }
10317 return offset + 4
10318 }
10319
10320 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
10321 value = +value
10322 offset = offset | 0
10323 if (!noAssert) {
10324 var limit = Math.pow(2, 8 * byteLength - 1)
10325
10326 checkInt(this, value, offset, byteLength, limit - 1, -limit)
10327 }
10328
10329 var i = 0
10330 var mul = 1
10331 var sub = value < 0 ? 1 : 0
10332 this[offset] = value & 0xFF
10333 while (++i < byteLength && (mul *= 0x100)) {
10334 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
10335 }
10336
10337 return offset + byteLength
10338 }
10339
10340 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
10341 value = +value
10342 offset = offset | 0
10343 if (!noAssert) {
10344 var limit = Math.pow(2, 8 * byteLength - 1)
10345
10346 checkInt(this, value, offset, byteLength, limit - 1, -limit)
10347 }
10348
10349 var i = byteLength - 1
10350 var mul = 1
10351 var sub = value < 0 ? 1 : 0
10352 this[offset + i] = value & 0xFF
10353 while (--i >= 0 && (mul *= 0x100)) {
10354 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
10355 }
10356
10357 return offset + byteLength
10358 }
10359
10360 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
10361 value = +value
10362 offset = offset | 0
10363 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
10364 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
10365 if (value < 0) value = 0xff + value + 1
10366 this[offset] = value
10367 return offset + 1
10368 }
10369
10370 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
10371 value = +value
10372 offset = offset | 0
10373 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
10374 if (Buffer.TYPED_ARRAY_SUPPORT) {
10375 this[offset] = value
10376 this[offset + 1] = (value >>> 8)
10377 } else {
10378 objectWriteUInt16(this, value, offset, true)
10379 }
10380 return offset + 2
10381 }
10382
10383 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
10384 value = +value
10385 offset = offset | 0
10386 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
10387 if (Buffer.TYPED_ARRAY_SUPPORT) {
10388 this[offset] = (value >>> 8)
10389 this[offset + 1] = value
10390 } else {
10391 objectWriteUInt16(this, value, offset, false)
10392 }
10393 return offset + 2
10394 }
10395
10396 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
10397 value = +value
10398 offset = offset | 0
10399 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
10400 if (Buffer.TYPED_ARRAY_SUPPORT) {
10401 this[offset] = value
10402 this[offset + 1] = (value >>> 8)
10403 this[offset + 2] = (value >>> 16)
10404 this[offset + 3] = (value >>> 24)
10405 } else {
10406 objectWriteUInt32(this, value, offset, true)
10407 }
10408 return offset + 4
10409 }
10410
10411 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
10412 value = +value
10413 offset = offset | 0
10414 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
10415 if (value < 0) value = 0xffffffff + value + 1
10416 if (Buffer.TYPED_ARRAY_SUPPORT) {
10417 this[offset] = (value >>> 24)
10418 this[offset + 1] = (value >>> 16)
10419 this[offset + 2] = (value >>> 8)
10420 this[offset + 3] = value
10421 } else {
10422 objectWriteUInt32(this, value, offset, false)
10423 }
10424 return offset + 4
10425 }
10426
10427 function checkIEEE754 (buf, value, offset, ext, max, min) {
10428 if (value > max || value < min) throw new RangeError('value is out of bounds')
10429 if (offset + ext > buf.length) throw new RangeError('index out of range')
10430 if (offset < 0) throw new RangeError('index out of range')
10431 }
10432
10433 function writeFloat (buf, value, offset, littleEndian, noAssert) {
10434 if (!noAssert) {
10435 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
10436 }
10437 ieee754.write(buf, value, offset, littleEndian, 23, 4)
10438 return offset + 4
10439 }
10440
10441 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
10442 return writeFloat(this, value, offset, true, noAssert)
10443 }
10444
10445 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
10446 return writeFloat(this, value, offset, false, noAssert)
10447 }
10448
10449 function writeDouble (buf, value, offset, littleEndian, noAssert) {
10450 if (!noAssert) {
10451 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
10452 }
10453 ieee754.write(buf, value, offset, littleEndian, 52, 8)
10454 return offset + 8
10455 }
10456
10457 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
10458 return writeDouble(this, value, offset, true, noAssert)
10459 }
10460
10461 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
10462 return writeDouble(this, value, offset, false, noAssert)
10463 }
10464
10465 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
10466 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
10467 if (!start) start = 0
10468 if (!end && end !== 0) end = this.length
10469 if (targetStart >= target.length) targetStart = target.length
10470 if (!targetStart) targetStart = 0
10471 if (end > 0 && end < start) end = start
10472
10473 // Copy 0 bytes; we're done
10474 if (end === start) return 0
10475 if (target.length === 0 || this.length === 0) return 0
10476
10477 // Fatal error conditions
10478 if (targetStart < 0) {
10479 throw new RangeError('targetStart out of bounds')
10480 }
10481 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
10482 if (end < 0) throw new RangeError('sourceEnd out of bounds')
10483
10484 // Are we oob?
10485 if (end > this.length) end = this.length
10486 if (target.length - targetStart < end - start) {
10487 end = target.length - targetStart + start
10488 }
10489
10490 var len = end - start
10491 var i
10492
10493 if (this === target && start < targetStart && targetStart < end) {
10494 // descending copy from end
10495 for (i = len - 1; i >= 0; i--) {
10496 target[i + targetStart] = this[i + start]
10497 }
10498 } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
10499 // ascending copy from start
10500 for (i = 0; i < len; i++) {
10501 target[i + targetStart] = this[i + start]
10502 }
10503 } else {
10504 target._set(this.subarray(start, start + len), targetStart)
10505 }
10506
10507 return len
10508 }
10509
10510 // fill(value, start=0, end=buffer.length)
10511 Buffer.prototype.fill = function fill (value, start, end) {
10512 if (!value) value = 0
10513 if (!start) start = 0
10514 if (!end) end = this.length
10515
10516 if (end < start) throw new RangeError('end < start')
10517
10518 // Fill 0 bytes; we're done
10519 if (end === start) return
10520 if (this.length === 0) return
10521
10522 if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')
10523 if (end < 0 || end > this.length) throw new RangeError('end out of bounds')
10524
10525 var i
10526 if (typeof value === 'number') {
10527 for (i = start; i < end; i++) {
10528 this[i] = value
10529 }
10530 } else {
10531 var bytes = utf8ToBytes(value.toString())
10532 var len = bytes.length
10533 for (i = start; i < end; i++) {
10534 this[i] = bytes[i % len]
10535 }
10536 }
10537
10538 return this
10539 }
10540
10541 /**
10542 * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
10543 * Added in Node 0.12. Only available in browsers that support ArrayBuffer.
10544 */
10545 Buffer.prototype.toArrayBuffer = function toArrayBuffer () {
10546 if (typeof Uint8Array !== 'undefined') {
10547 if (Buffer.TYPED_ARRAY_SUPPORT) {
10548 return (new Buffer(this)).buffer
10549 } else {
10550 var buf = new Uint8Array(this.length)
10551 for (var i = 0, len = buf.length; i < len; i += 1) {
10552 buf[i] = this[i]
10553 }
10554 return buf.buffer
10555 }
10556 } else {
10557 throw new TypeError('Buffer.toArrayBuffer not supported in this browser')
10558 }
10559 }
10560
10561 // HELPER FUNCTIONS
10562 // ================
10563
10564 var BP = Buffer.prototype
10565
10566 /**
10567 * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
10568 */
10569 Buffer._augment = function _augment (arr) {
10570 arr.constructor = Buffer
10571 arr._isBuffer = true
10572
10573 // save reference to original Uint8Array set method before overwriting
10574 arr._set = arr.set
10575
10576 // deprecated
10577 arr.get = BP.get
10578 arr.set = BP.set
10579
10580 arr.write = BP.write
10581 arr.toString = BP.toString
10582 arr.toLocaleString = BP.toString
10583 arr.toJSON = BP.toJSON
10584 arr.equals = BP.equals
10585 arr.compare = BP.compare
10586 arr.indexOf = BP.indexOf
10587 arr.copy = BP.copy
10588 arr.slice = BP.slice
10589 arr.readUIntLE = BP.readUIntLE
10590 arr.readUIntBE = BP.readUIntBE
10591 arr.readUInt8 = BP.readUInt8
10592 arr.readUInt16LE = BP.readUInt16LE
10593 arr.readUInt16BE = BP.readUInt16BE
10594 arr.readUInt32LE = BP.readUInt32LE
10595 arr.readUInt32BE = BP.readUInt32BE
10596 arr.readIntLE = BP.readIntLE
10597 arr.readIntBE = BP.readIntBE
10598 arr.readInt8 = BP.readInt8
10599 arr.readInt16LE = BP.readInt16LE
10600 arr.readInt16BE = BP.readInt16BE
10601 arr.readInt32LE = BP.readInt32LE
10602 arr.readInt32BE = BP.readInt32BE
10603 arr.readFloatLE = BP.readFloatLE
10604 arr.readFloatBE = BP.readFloatBE
10605 arr.readDoubleLE = BP.readDoubleLE
10606 arr.readDoubleBE = BP.readDoubleBE
10607 arr.writeUInt8 = BP.writeUInt8
10608 arr.writeUIntLE = BP.writeUIntLE
10609 arr.writeUIntBE = BP.writeUIntBE
10610 arr.writeUInt16LE = BP.writeUInt16LE
10611 arr.writeUInt16BE = BP.writeUInt16BE
10612 arr.writeUInt32LE = BP.writeUInt32LE
10613 arr.writeUInt32BE = BP.writeUInt32BE
10614 arr.writeIntLE = BP.writeIntLE
10615 arr.writeIntBE = BP.writeIntBE
10616 arr.writeInt8 = BP.writeInt8
10617 arr.writeInt16LE = BP.writeInt16LE
10618 arr.writeInt16BE = BP.writeInt16BE
10619 arr.writeInt32LE = BP.writeInt32LE
10620 arr.writeInt32BE = BP.writeInt32BE
10621 arr.writeFloatLE = BP.writeFloatLE
10622 arr.writeFloatBE = BP.writeFloatBE
10623 arr.writeDoubleLE = BP.writeDoubleLE
10624 arr.writeDoubleBE = BP.writeDoubleBE
10625 arr.fill = BP.fill
10626 arr.inspect = BP.inspect
10627 arr.toArrayBuffer = BP.toArrayBuffer
10628
10629 return arr
10630 }
10631
10632 var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
10633
10634 function base64clean (str) {
10635 // Node strips out invalid characters like \n and \t from the string, base64-js does not
10636 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
10637 // Node converts strings with length < 2 to ''
10638 if (str.length < 2) return ''
10639 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
10640 while (str.length % 4 !== 0) {
10641 str = str + '='
10642 }
10643 return str
10644 }
10645
10646 function stringtrim (str) {
10647 if (str.trim) return str.trim()
10648 return str.replace(/^\s+|\s+$/g, '')
10649 }
10650
10651 function toHex (n) {
10652 if (n < 16) return '0' + n.toString(16)
10653 return n.toString(16)
10654 }
10655
10656 function utf8ToBytes (string, units) {
10657 units = units || Infinity
10658 var codePoint
10659 var length = string.length
10660 var leadSurrogate = null
10661 var bytes = []
10662
10663 for (var i = 0; i < length; i++) {
10664 codePoint = string.charCodeAt(i)
10665
10666 // is surrogate component
10667 if (codePoint > 0xD7FF && codePoint < 0xE000) {
10668 // last char was a lead
10669 if (!leadSurrogate) {
10670 // no lead yet
10671 if (codePoint > 0xDBFF) {
10672 // unexpected trail
10673 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10674 continue
10675
10676 } else if (i + 1 === length) {
10677 // unpaired lead
10678 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10679 continue
10680 }
10681
10682 // valid lead
10683 leadSurrogate = codePoint
10684
10685 continue
10686 }
10687
10688 // 2 leads in a row
10689 if (codePoint < 0xDC00) {
10690 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10691 leadSurrogate = codePoint
10692 continue
10693 }
10694
10695 // valid surrogate pair
10696 codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000
10697
10698 } else if (leadSurrogate) {
10699 // valid bmp char, but last char was a lead
10700 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10701 }
10702
10703 leadSurrogate = null
10704
10705 // encode utf8
10706 if (codePoint < 0x80) {
10707 if ((units -= 1) < 0) break
10708 bytes.push(codePoint)
10709 } else if (codePoint < 0x800) {
10710 if ((units -= 2) < 0) break
10711 bytes.push(
10712 codePoint >> 0x6 | 0xC0,
10713 codePoint & 0x3F | 0x80
10714 )
10715 } else if (codePoint < 0x10000) {
10716 if ((units -= 3) < 0) break
10717 bytes.push(
10718 codePoint >> 0xC | 0xE0,
10719 codePoint >> 0x6 & 0x3F | 0x80,
10720 codePoint & 0x3F | 0x80
10721 )
10722 } else if (codePoint < 0x110000) {
10723 if ((units -= 4) < 0) break
10724 bytes.push(
10725 codePoint >> 0x12 | 0xF0,
10726 codePoint >> 0xC & 0x3F | 0x80,
10727 codePoint >> 0x6 & 0x3F | 0x80,
10728 codePoint & 0x3F | 0x80
10729 )
10730 } else {
10731 throw new Error('Invalid code point')
10732 }
10733 }
10734
10735 return bytes
10736 }
10737
10738 function asciiToBytes (str) {
10739 var byteArray = []
10740 for (var i = 0; i < str.length; i++) {
10741 // Node's code seems to be doing this and not & 0x7F..
10742 byteArray.push(str.charCodeAt(i) & 0xFF)
10743 }
10744 return byteArray
10745 }
10746
10747 function utf16leToBytes (str, units) {
10748 var c, hi, lo
10749 var byteArray = []
10750 for (var i = 0; i < str.length; i++) {
10751 if ((units -= 2) < 0) break
10752
10753 c = str.charCodeAt(i)
10754 hi = c >> 8
10755 lo = c % 256
10756 byteArray.push(lo)
10757 byteArray.push(hi)
10758 }
10759
10760 return byteArray
10761 }
10762
10763 function base64ToBytes (str) {
10764 return base64.toByteArray(base64clean(str))
10765 }
10766
10767 function blitBuffer (src, dst, offset, length) {
10768 for (var i = 0; i < length; i++) {
10769 if ((i + offset >= dst.length) || (i >= src.length)) break
10770 dst[i + offset] = src[i]
10771 }
10772 return i
10773 }
10774
10775 },{"base64-js":8,"ieee754":9,"is-array":10}],8:[function(require,module,exports){
10776 var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
10777
10778 ;(function (exports) {
10779 'use strict';
10780
10781 var Arr = (typeof Uint8Array !== 'undefined')
10782 ? Uint8Array
10783 : Array
10784
10785 var PLUS = '+'.charCodeAt(0)
10786 var SLASH = '/'.charCodeAt(0)
10787 var NUMBER = '0'.charCodeAt(0)
10788 var LOWER = 'a'.charCodeAt(0)
10789 var UPPER = 'A'.charCodeAt(0)
10790 var PLUS_URL_SAFE = '-'.charCodeAt(0)
10791 var SLASH_URL_SAFE = '_'.charCodeAt(0)
10792
10793 function decode (elt) {
10794 var code = elt.charCodeAt(0)
10795 if (code === PLUS ||
10796 code === PLUS_URL_SAFE)
10797 return 62 // '+'
10798 if (code === SLASH ||
10799 code === SLASH_URL_SAFE)
10800 return 63 // '/'
10801 if (code < NUMBER)
10802 return -1 //no match
10803 if (code < NUMBER + 10)
10804 return code - NUMBER + 26 + 26
10805 if (code < UPPER + 26)
10806 return code - UPPER
10807 if (code < LOWER + 26)
10808 return code - LOWER + 26
10809 }
10810
10811 function b64ToByteArray (b64) {
10812 var i, j, l, tmp, placeHolders, arr
10813
10814 if (b64.length % 4 > 0) {
10815 throw new Error('Invalid string. Length must be a multiple of 4')
10816 }
10817
10818 // the number of equal signs (place holders)
10819 // if there are two placeholders, than the two characters before it
10820 // represent one byte
10821 // if there is only one, then the three characters before it represent 2 bytes
10822 // this is just a cheap hack to not do indexOf twice
10823 var len = b64.length
10824 placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
10825
10826 // base64 is 4/3 + up to two characters of the original data
10827 arr = new Arr(b64.length * 3 / 4 - placeHolders)
10828
10829 // if there are placeholders, only get up to the last complete 4 chars
10830 l = placeHolders > 0 ? b64.length - 4 : b64.length
10831
10832 var L = 0
10833
10834 function push (v) {
10835 arr[L++] = v
10836 }
10837
10838 for (i = 0, j = 0; i < l; i += 4, j += 3) {
10839 tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
10840 push((tmp & 0xFF0000) >> 16)
10841 push((tmp & 0xFF00) >> 8)
10842 push(tmp & 0xFF)
10843 }
10844
10845 if (placeHolders === 2) {
10846 tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
10847 push(tmp & 0xFF)
10848 } else if (placeHolders === 1) {
10849 tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
10850 push((tmp >> 8) & 0xFF)
10851 push(tmp & 0xFF)
10852 }
10853
10854 return arr
10855 }
10856
10857 function uint8ToBase64 (uint8) {
10858 var i,
10859 extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
10860 output = "",
10861 temp, length
10862
10863 function encode (num) {
10864 return lookup.charAt(num)
10865 }
10866
10867 function tripletToBase64 (num) {
10868 return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
10869 }
10870
10871 // go through the array every three bytes, we'll deal with trailing stuff later
10872 for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
10873 temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
10874 output += tripletToBase64(temp)
10875 }
10876
10877 // pad the end with zeros, but make sure to not forget the extra bytes
10878 switch (extraBytes) {
10879 case 1:
10880 temp = uint8[uint8.length - 1]
10881 output += encode(temp >> 2)
10882 output += encode((temp << 4) & 0x3F)
10883 output += '=='
10884 break
10885 case 2:
10886 temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
10887 output += encode(temp >> 10)
10888 output += encode((temp >> 4) & 0x3F)
10889 output += encode((temp << 2) & 0x3F)
10890 output += '='
10891 break
10892 }
10893
10894 return output
10895 }
10896
10897 exports.toByteArray = b64ToByteArray
10898 exports.fromByteArray = uint8ToBase64
10899 }(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
10900
10901 },{}],9:[function(require,module,exports){
10902 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
10903 var e, m
10904 var eLen = nBytes * 8 - mLen - 1
10905 var eMax = (1 << eLen) - 1
10906 var eBias = eMax >> 1
10907 var nBits = -7
10908 var i = isLE ? (nBytes - 1) : 0
10909 var d = isLE ? -1 : 1
10910 var s = buffer[offset + i]
10911
10912 i += d
10913
10914 e = s & ((1 << (-nBits)) - 1)
10915 s >>= (-nBits)
10916 nBits += eLen
10917 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10918
10919 m = e & ((1 << (-nBits)) - 1)
10920 e >>= (-nBits)
10921 nBits += mLen
10922 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10923
10924 if (e === 0) {
10925 e = 1 - eBias
10926 } else if (e === eMax) {
10927 return m ? NaN : ((s ? -1 : 1) * Infinity)
10928 } else {
10929 m = m + Math.pow(2, mLen)
10930 e = e - eBias
10931 }
10932 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
10933 }
10934
10935 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
10936 var e, m, c
10937 var eLen = nBytes * 8 - mLen - 1
10938 var eMax = (1 << eLen) - 1
10939 var eBias = eMax >> 1
10940 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
10941 var i = isLE ? 0 : (nBytes - 1)
10942 var d = isLE ? 1 : -1
10943 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
10944
10945 value = Math.abs(value)
10946
10947 if (isNaN(value) || value === Infinity) {
10948 m = isNaN(value) ? 1 : 0
10949 e = eMax
10950 } else {
10951 e = Math.floor(Math.log(value) / Math.LN2)
10952 if (value * (c = Math.pow(2, -e)) < 1) {
10953 e--
10954 c *= 2
10955 }
10956 if (e + eBias >= 1) {
10957 value += rt / c
10958 } else {
10959 value += rt * Math.pow(2, 1 - eBias)
10960 }
10961 if (value * c >= 2) {
10962 e++
10963 c /= 2
10964 }
10965
10966 if (e + eBias >= eMax) {
10967 m = 0
10968 e = eMax
10969 } else if (e + eBias >= 1) {
10970 m = (value * c - 1) * Math.pow(2, mLen)
10971 e = e + eBias
10972 } else {
10973 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
10974 e = 0
10975 }
10976 }
10977
10978 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
10979
10980 e = (e << mLen) | m
10981 eLen += mLen
10982 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
10983
10984 buffer[offset + i - d] |= s * 128
10985 }
10986
10987 },{}],10:[function(require,module,exports){
10988
10989 /**
10990 * isArray
10991 */
10992
10993 var isArray = Array.isArray;
10994
10995 /**
10996 * toString
10997 */
10998
10999 var str = Object.prototype.toString;
11000
11001 /**
11002 * Whether or not the given `val`
11003 * is an array.
11004 *
11005 * example:
11006 *
11007 * isArray([]);
11008 * // > true
11009 * isArray(arguments);
11010 * // > false
11011 * isArray('');
11012 * // > false
11013 *
11014 * @param {mixed} val
11015 * @return {bool}
11016 */
11017
11018 module.exports = isArray || function (val) {
11019 return !! val && '[object Array]' == str.call(val);
11020 };
11021
11022 },{}],11:[function(require,module,exports){
11023 // Copyright Joyent, Inc. and other Node contributors.
11024 //
11025 // Permission is hereby granted, free of charge, to any person obtaining a
11026 // copy of this software and associated documentation files (the
11027 // "Software"), to deal in the Software without restriction, including
11028 // without limitation the rights to use, copy, modify, merge, publish,
11029 // distribute, sublicense, and/or sell copies of the Software, and to permit
11030 // persons to whom the Software is furnished to do so, subject to the
11031 // following conditions:
11032 //
11033 // The above copyright notice and this permission notice shall be included
11034 // in all copies or substantial portions of the Software.
11035 //
11036 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11037 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11038 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11039 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11040 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11041 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11042 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11043
11044 function EventEmitter() {
11045 this._events = this._events || {};
11046 this._maxListeners = this._maxListeners || undefined;
11047 }
11048 module.exports = EventEmitter;
11049
11050 // Backwards-compat with node 0.10.x
11051 EventEmitter.EventEmitter = EventEmitter;
11052
11053 EventEmitter.prototype._events = undefined;
11054 EventEmitter.prototype._maxListeners = undefined;
11055
11056 // By default EventEmitters will print a warning if more than 10 listeners are
11057 // added to it. This is a useful default which helps finding memory leaks.
11058 EventEmitter.defaultMaxListeners = 10;
11059
11060 // Obviously not all Emitters should be limited to 10. This function allows
11061 // that to be increased. Set to zero for unlimited.
11062 EventEmitter.prototype.setMaxListeners = function(n) {
11063 if (!isNumber(n) || n < 0 || isNaN(n))
11064 throw TypeError('n must be a positive number');
11065 this._maxListeners = n;
11066 return this;
11067 };
11068
11069 EventEmitter.prototype.emit = function(type) {
11070 var er, handler, len, args, i, listeners;
11071
11072 if (!this._events)
11073 this._events = {};
11074
11075 // If there is no 'error' event listener then throw.
11076 if (type === 'error') {
11077 if (!this._events.error ||
11078 (isObject(this._events.error) && !this._events.error.length)) {
11079 er = arguments[1];
11080 if (er instanceof Error) {
11081 throw er; // Unhandled 'error' event
11082 }
11083 throw TypeError('Uncaught, unspecified "error" event.');
11084 }
11085 }
11086
11087 handler = this._events[type];
11088
11089 if (isUndefined(handler))
11090 return false;
11091
11092 if (isFunction(handler)) {
11093 switch (arguments.length) {
11094 // fast cases
11095 case 1:
11096 handler.call(this);
11097 break;
11098 case 2:
11099 handler.call(this, arguments[1]);
11100 break;
11101 case 3:
11102 handler.call(this, arguments[1], arguments[2]);
11103 break;
11104 // slower
11105 default:
11106 len = arguments.length;
11107 args = new Array(len - 1);
11108 for (i = 1; i < len; i++)
11109 args[i - 1] = arguments[i];
11110 handler.apply(this, args);
11111 }
11112 } else if (isObject(handler)) {
11113 len = arguments.length;
11114 args = new Array(len - 1);
11115 for (i = 1; i < len; i++)
11116 args[i - 1] = arguments[i];
11117
11118 listeners = handler.slice();
11119 len = listeners.length;
11120 for (i = 0; i < len; i++)
11121 listeners[i].apply(this, args);
11122 }
11123
11124 return true;
11125 };
11126
11127 EventEmitter.prototype.addListener = function(type, listener) {
11128 var m;
11129
11130 if (!isFunction(listener))
11131 throw TypeError('listener must be a function');
11132
11133 if (!this._events)
11134 this._events = {};
11135
11136 // To avoid recursion in the case that type === "newListener"! Before
11137 // adding it to the listeners, first emit "newListener".
11138 if (this._events.newListener)
11139 this.emit('newListener', type,
11140 isFunction(listener.listener) ?
11141 listener.listener : listener);
11142
11143 if (!this._events[type])
11144 // Optimize the case of one listener. Don't need the extra array object.
11145 this._events[type] = listener;
11146 else if (isObject(this._events[type]))
11147 // If we've already got an array, just append.
11148 this._events[type].push(listener);
11149 else
11150 // Adding the second element, need to change to array.
11151 this._events[type] = [this._events[type], listener];
11152
11153 // Check for listener leak
11154 if (isObject(this._events[type]) && !this._events[type].warned) {
11155 var m;
11156 if (!isUndefined(this._maxListeners)) {
11157 m = this._maxListeners;
11158 } else {
11159 m = EventEmitter.defaultMaxListeners;
11160 }
11161
11162 if (m && m > 0 && this._events[type].length > m) {
11163 this._events[type].warned = true;
11164 console.error('(node) warning: possible EventEmitter memory ' +
11165 'leak detected. %d listeners added. ' +
11166 'Use emitter.setMaxListeners() to increase limit.',
11167 this._events[type].length);
11168 if (typeof console.trace === 'function') {
11169 // not supported in IE 10
11170 console.trace();
11171 }
11172 }
11173 }
11174
11175 return this;
11176 };
11177
11178 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
11179
11180 EventEmitter.prototype.once = function(type, listener) {
11181 if (!isFunction(listener))
11182 throw TypeError('listener must be a function');
11183
11184 var fired = false;
11185
11186 function g() {
11187 this.removeListener(type, g);
11188
11189 if (!fired) {
11190 fired = true;
11191 listener.apply(this, arguments);
11192 }
11193 }
11194
11195 g.listener = listener;
11196 this.on(type, g);
11197
11198 return this;
11199 };
11200
11201 // emits a 'removeListener' event iff the listener was removed
11202 EventEmitter.prototype.removeListener = function(type, listener) {
11203 var list, position, length, i;
11204
11205 if (!isFunction(listener))
11206 throw TypeError('listener must be a function');
11207
11208 if (!this._events || !this._events[type])
11209 return this;
11210
11211 list = this._events[type];
11212 length = list.length;
11213 position = -1;
11214
11215 if (list === listener ||
11216 (isFunction(list.listener) && list.listener === listener)) {
11217 delete this._events[type];
11218 if (this._events.removeListener)
11219 this.emit('removeListener', type, listener);
11220
11221 } else if (isObject(list)) {
11222 for (i = length; i-- > 0;) {
11223 if (list[i] === listener ||
11224 (list[i].listener && list[i].listener === listener)) {
11225 position = i;
11226 break;
11227 }
11228 }
11229
11230 if (position < 0)
11231 return this;
11232
11233 if (list.length === 1) {
11234 list.length = 0;
11235 delete this._events[type];
11236 } else {
11237 list.splice(position, 1);
11238 }
11239
11240 if (this._events.removeListener)
11241 this.emit('removeListener', type, listener);
11242 }
11243
11244 return this;
11245 };
11246
11247 EventEmitter.prototype.removeAllListeners = function(type) {
11248 var key, listeners;
11249
11250 if (!this._events)
11251 return this;
11252
11253 // not listening for removeListener, no need to emit
11254 if (!this._events.removeListener) {
11255 if (arguments.length === 0)
11256 this._events = {};
11257 else if (this._events[type])
11258 delete this._events[type];
11259 return this;
11260 }
11261
11262 // emit removeListener for all listeners on all events
11263 if (arguments.length === 0) {
11264 for (key in this._events) {
11265 if (key === 'removeListener') continue;
11266 this.removeAllListeners(key);
11267 }
11268 this.removeAllListeners('removeListener');
11269 this._events = {};
11270 return this;
11271 }
11272
11273 listeners = this._events[type];
11274
11275 if (isFunction(listeners)) {
11276 this.removeListener(type, listeners);
11277 } else {
11278 // LIFO order
11279 while (listeners.length)
11280 this.removeListener(type, listeners[listeners.length - 1]);
11281 }
11282 delete this._events[type];
11283
11284 return this;
11285 };
11286
11287 EventEmitter.prototype.listeners = function(type) {
11288 var ret;
11289 if (!this._events || !this._events[type])
11290 ret = [];
11291 else if (isFunction(this._events[type]))
11292 ret = [this._events[type]];
11293 else
11294 ret = this._events[type].slice();
11295 return ret;
11296 };
11297
11298 EventEmitter.listenerCount = function(emitter, type) {
11299 var ret;
11300 if (!emitter._events || !emitter._events[type])
11301 ret = 0;
11302 else if (isFunction(emitter._events[type]))
11303 ret = 1;
11304 else
11305 ret = emitter._events[type].length;
11306 return ret;
11307 };
11308
11309 function isFunction(arg) {
11310 return typeof arg === 'function';
11311 }
11312
11313 function isNumber(arg) {
11314 return typeof arg === 'number';
11315 }
11316
11317 function isObject(arg) {
11318 return typeof arg === 'object' && arg !== null;
11319 }
11320
11321 function isUndefined(arg) {
11322 return arg === void 0;
11323 }
11324
11325 },{}],12:[function(require,module,exports){
11326 if (typeof Object.create === 'function') {
11327 // implementation from standard node.js 'util' module
11328 module.exports = function inherits(ctor, superCtor) {
11329 ctor.super_ = superCtor
11330 ctor.prototype = Object.create(superCtor.prototype, {
11331 constructor: {
11332 value: ctor,
11333 enumerable: false,
11334 writable: true,
11335 configurable: true
11336 }
11337 });
11338 };
11339 } else {
11340 // old school shim for old browsers
11341 module.exports = function inherits(ctor, superCtor) {
11342 ctor.super_ = superCtor
11343 var TempCtor = function () {}
11344 TempCtor.prototype = superCtor.prototype
11345 ctor.prototype = new TempCtor()
11346 ctor.prototype.constructor = ctor
11347 }
11348 }
11349
11350 },{}],13:[function(require,module,exports){
11351 module.exports = Array.isArray || function (arr) {
11352 return Object.prototype.toString.call(arr) == '[object Array]';
11353 };
11354
11355 },{}],14:[function(require,module,exports){
11356 // shim for using process in browser
11357
11358 var process = module.exports = {};
11359 var queue = [];
11360 var draining = false;
11361 var currentQueue;
11362 var queueIndex = -1;
11363
11364 function cleanUpNextTick() {
11365 draining = false;
11366 if (currentQueue.length) {
11367 queue = currentQueue.concat(queue);
11368 } else {
11369 queueIndex = -1;
11370 }
11371 if (queue.length) {
11372 drainQueue();
11373 }
11374 }
11375
11376 function drainQueue() {
11377 if (draining) {
11378 return;
11379 }
11380 var timeout = setTimeout(cleanUpNextTick);
11381 draining = true;
11382
11383 var len = queue.length;
11384 while(len) {
11385 currentQueue = queue;
11386 queue = [];
11387 while (++queueIndex < len) {
11388 currentQueue[queueIndex].run();
11389 }
11390 queueIndex = -1;
11391 len = queue.length;
11392 }
11393 currentQueue = null;
11394 draining = false;
11395 clearTimeout(timeout);
11396 }
11397
11398 process.nextTick = function (fun) {
11399 var args = new Array(arguments.length - 1);
11400 if (arguments.length > 1) {
11401 for (var i = 1; i < arguments.length; i++) {
11402 args[i - 1] = arguments[i];
11403 }
11404 }
11405 queue.push(new Item(fun, args));
11406 if (queue.length === 1 && !draining) {
11407 setTimeout(drainQueue, 0);
11408 }
11409 };
11410
11411 // v8 likes predictible objects
11412 function Item(fun, array) {
11413 this.fun = fun;
11414 this.array = array;
11415 }
11416 Item.prototype.run = function () {
11417 this.fun.apply(null, this.array);
11418 };
11419 process.title = 'browser';
11420 process.browser = true;
11421 process.env = {};
11422 process.argv = [];
11423 process.version = ''; // empty string to avoid regexp issues
11424 process.versions = {};
11425
11426 function noop() {}
11427
11428 process.on = noop;
11429 process.addListener = noop;
11430 process.once = noop;
11431 process.off = noop;
11432 process.removeListener = noop;
11433 process.removeAllListeners = noop;
11434 process.emit = noop;
11435
11436 process.binding = function (name) {
11437 throw new Error('process.binding is not supported');
11438 };
11439
11440 // TODO(shtylman)
11441 process.cwd = function () { return '/' };
11442 process.chdir = function (dir) {
11443 throw new Error('process.chdir is not supported');
11444 };
11445 process.umask = function() { return 0; };
11446
11447 },{}],15:[function(require,module,exports){
11448 module.exports = require("./lib/_stream_duplex.js")
11449
11450 },{"./lib/_stream_duplex.js":16}],16:[function(require,module,exports){
11451 (function (process){
11452 // Copyright Joyent, Inc. and other Node contributors.
11453 //
11454 // Permission is hereby granted, free of charge, to any person obtaining a
11455 // copy of this software and associated documentation files (the
11456 // "Software"), to deal in the Software without restriction, including
11457 // without limitation the rights to use, copy, modify, merge, publish,
11458 // distribute, sublicense, and/or sell copies of the Software, and to permit
11459 // persons to whom the Software is furnished to do so, subject to the
11460 // following conditions:
11461 //
11462 // The above copyright notice and this permission notice shall be included
11463 // in all copies or substantial portions of the Software.
11464 //
11465 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11466 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11467 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11468 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11469 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11470 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11471 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11472
11473 // a duplex stream is just a stream that is both readable and writable.
11474 // Since JS doesn't have multiple prototypal inheritance, this class
11475 // prototypally inherits from Readable, and then parasitically from
11476 // Writable.
11477
11478 module.exports = Duplex;
11479
11480 /*<replacement>*/
11481 var objectKeys = Object.keys || function (obj) {
11482 var keys = [];
11483 for (var key in obj) keys.push(key);
11484 return keys;
11485 }
11486 /*</replacement>*/
11487
11488
11489 /*<replacement>*/
11490 var util = require('core-util-is');
11491 util.inherits = require('inherits');
11492 /*</replacement>*/
11493
11494 var Readable = require('./_stream_readable');
11495 var Writable = require('./_stream_writable');
11496
11497 util.inherits(Duplex, Readable);
11498
11499 forEach(objectKeys(Writable.prototype), function(method) {
11500 if (!Duplex.prototype[method])
11501 Duplex.prototype[method] = Writable.prototype[method];
11502 });
11503
11504 function Duplex(options) {
11505 if (!(this instanceof Duplex))
11506 return new Duplex(options);
11507
11508 Readable.call(this, options);
11509 Writable.call(this, options);
11510
11511 if (options && options.readable === false)
11512 this.readable = false;
11513
11514 if (options && options.writable === false)
11515 this.writable = false;
11516
11517 this.allowHalfOpen = true;
11518 if (options && options.allowHalfOpen === false)
11519 this.allowHalfOpen = false;
11520
11521 this.once('end', onend);
11522 }
11523
11524 // the no-half-open enforcer
11525 function onend() {
11526 // if we allow half-open state, or if the writable side ended,
11527 // then we're ok.
11528 if (this.allowHalfOpen || this._writableState.ended)
11529 return;
11530
11531 // no more data can be written.
11532 // But allow more writes to happen in this tick.
11533 process.nextTick(this.end.bind(this));
11534 }
11535
11536 function forEach (xs, f) {
11537 for (var i = 0, l = xs.length; i < l; i++) {
11538 f(xs[i], i);
11539 }
11540 }
11541
11542 }).call(this,require('_process'))
11543 },{"./_stream_readable":18,"./_stream_writable":20,"_process":14,"core-util-is":21,"inherits":12}],17:[function(require,module,exports){
11544 // Copyright Joyent, Inc. and other Node contributors.
11545 //
11546 // Permission is hereby granted, free of charge, to any person obtaining a
11547 // copy of this software and associated documentation files (the
11548 // "Software"), to deal in the Software without restriction, including
11549 // without limitation the rights to use, copy, modify, merge, publish,
11550 // distribute, sublicense, and/or sell copies of the Software, and to permit
11551 // persons to whom the Software is furnished to do so, subject to the
11552 // following conditions:
11553 //
11554 // The above copyright notice and this permission notice shall be included
11555 // in all copies or substantial portions of the Software.
11556 //
11557 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11558 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11559 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11560 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11561 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11562 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11563 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11564
11565 // a passthrough stream.
11566 // basically just the most minimal sort of Transform stream.
11567 // Every written chunk gets output as-is.
11568
11569 module.exports = PassThrough;
11570
11571 var Transform = require('./_stream_transform');
11572
11573 /*<replacement>*/
11574 var util = require('core-util-is');
11575 util.inherits = require('inherits');
11576 /*</replacement>*/
11577
11578 util.inherits(PassThrough, Transform);
11579
11580 function PassThrough(options) {
11581 if (!(this instanceof PassThrough))
11582 return new PassThrough(options);
11583
11584 Transform.call(this, options);
11585 }
11586
11587 PassThrough.prototype._transform = function(chunk, encoding, cb) {
11588 cb(null, chunk);
11589 };
11590
11591 },{"./_stream_transform":19,"core-util-is":21,"inherits":12}],18:[function(require,module,exports){
11592 (function (process){
11593 // Copyright Joyent, Inc. and other Node contributors.
11594 //
11595 // Permission is hereby granted, free of charge, to any person obtaining a
11596 // copy of this software and associated documentation files (the
11597 // "Software"), to deal in the Software without restriction, including
11598 // without limitation the rights to use, copy, modify, merge, publish,
11599 // distribute, sublicense, and/or sell copies of the Software, and to permit
11600 // persons to whom the Software is furnished to do so, subject to the
11601 // following conditions:
11602 //
11603 // The above copyright notice and this permission notice shall be included
11604 // in all copies or substantial portions of the Software.
11605 //
11606 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11607 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11608 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11609 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11610 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11611 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11612 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11613
11614 module.exports = Readable;
11615
11616 /*<replacement>*/
11617 var isArray = require('isarray');
11618 /*</replacement>*/
11619
11620
11621 /*<replacement>*/
11622 var Buffer = require('buffer').Buffer;
11623 /*</replacement>*/
11624
11625 Readable.ReadableState = ReadableState;
11626
11627 var EE = require('events').EventEmitter;
11628
11629 /*<replacement>*/
11630 if (!EE.listenerCount) EE.listenerCount = function(emitter, type) {
11631 return emitter.listeners(type).length;
11632 };
11633 /*</replacement>*/
11634
11635 var Stream = require('stream');
11636
11637 /*<replacement>*/
11638 var util = require('core-util-is');
11639 util.inherits = require('inherits');
11640 /*</replacement>*/
11641
11642 var StringDecoder;
11643
11644
11645 /*<replacement>*/
11646 var debug = require('util');
11647 if (debug && debug.debuglog) {
11648 debug = debug.debuglog('stream');
11649 } else {
11650 debug = function () {};
11651 }
11652 /*</replacement>*/
11653
11654
11655 util.inherits(Readable, Stream);
11656
11657 function ReadableState(options, stream) {
11658 var Duplex = require('./_stream_duplex');
11659
11660 options = options || {};
11661
11662 // the point at which it stops calling _read() to fill the buffer
11663 // Note: 0 is a valid value, means "don't call _read preemptively ever"
11664 var hwm = options.highWaterMark;
11665 var defaultHwm = options.objectMode ? 16 : 16 * 1024;
11666 this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
11667
11668 // cast to ints.
11669 this.highWaterMark = ~~this.highWaterMark;
11670
11671 this.buffer = [];
11672 this.length = 0;
11673 this.pipes = null;
11674 this.pipesCount = 0;
11675 this.flowing = null;
11676 this.ended = false;
11677 this.endEmitted = false;
11678 this.reading = false;
11679
11680 // a flag to be able to tell if the onwrite cb is called immediately,
11681 // or on a later tick. We set this to true at first, because any
11682 // actions that shouldn't happen until "later" should generally also
11683 // not happen before the first write call.
11684 this.sync = true;
11685
11686 // whenever we return null, then we set a flag to say
11687 // that we're awaiting a 'readable' event emission.
11688 this.needReadable = false;
11689 this.emittedReadable = false;
11690 this.readableListening = false;
11691
11692
11693 // object stream flag. Used to make read(n) ignore n and to
11694 // make all the buffer merging and length checks go away
11695 this.objectMode = !!options.objectMode;
11696
11697 if (stream instanceof Duplex)
11698 this.objectMode = this.objectMode || !!options.readableObjectMode;
11699
11700 // Crypto is kind of old and crusty. Historically, its default string
11701 // encoding is 'binary' so we have to make this configurable.
11702 // Everything else in the universe uses 'utf8', though.
11703 this.defaultEncoding = options.defaultEncoding || 'utf8';
11704
11705 // when piping, we only care about 'readable' events that happen
11706 // after read()ing all the bytes and not getting any pushback.
11707 this.ranOut = false;
11708
11709 // the number of writers that are awaiting a drain event in .pipe()s
11710 this.awaitDrain = 0;
11711
11712 // if true, a maybeReadMore has been scheduled
11713 this.readingMore = false;
11714
11715 this.decoder = null;
11716 this.encoding = null;
11717 if (options.encoding) {
11718 if (!StringDecoder)
11719 StringDecoder = require('string_decoder/').StringDecoder;
11720 this.decoder = new StringDecoder(options.encoding);
11721 this.encoding = options.encoding;
11722 }
11723 }
11724
11725 function Readable(options) {
11726 var Duplex = require('./_stream_duplex');
11727
11728 if (!(this instanceof Readable))
11729 return new Readable(options);
11730
11731 this._readableState = new ReadableState(options, this);
11732
11733 // legacy
11734 this.readable = true;
11735
11736 Stream.call(this);
11737 }
11738
11739 // Manually shove something into the read() buffer.
11740 // This returns true if the highWaterMark has not been hit yet,
11741 // similar to how Writable.write() returns true if you should
11742 // write() some more.
11743 Readable.prototype.push = function(chunk, encoding) {
11744 var state = this._readableState;
11745
11746 if (util.isString(chunk) && !state.objectMode) {
11747 encoding = encoding || state.defaultEncoding;
11748 if (encoding !== state.encoding) {
11749 chunk = new Buffer(chunk, encoding);
11750 encoding = '';
11751 }
11752 }
11753
11754 return readableAddChunk(this, state, chunk, encoding, false);
11755 };
11756
11757 // Unshift should *always* be something directly out of read()
11758 Readable.prototype.unshift = function(chunk) {
11759 var state = this._readableState;
11760 return readableAddChunk(this, state, chunk, '', true);
11761 };
11762
11763 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
11764 var er = chunkInvalid(state, chunk);
11765 if (er) {
11766 stream.emit('error', er);
11767 } else if (util.isNullOrUndefined(chunk)) {
11768 state.reading = false;
11769 if (!state.ended)
11770 onEofChunk(stream, state);
11771 } else if (state.objectMode || chunk && chunk.length > 0) {
11772 if (state.ended && !addToFront) {
11773 var e = new Error('stream.push() after EOF');
11774 stream.emit('error', e);
11775 } else if (state.endEmitted && addToFront) {
11776 var e = new Error('stream.unshift() after end event');
11777 stream.emit('error', e);
11778 } else {
11779 if (state.decoder && !addToFront && !encoding)
11780 chunk = state.decoder.write(chunk);
11781
11782 if (!addToFront)
11783 state.reading = false;
11784
11785 // if we want the data now, just emit it.
11786 if (state.flowing && state.length === 0 && !state.sync) {
11787 stream.emit('data', chunk);
11788 stream.read(0);
11789 } else {
11790 // update the buffer info.
11791 state.length += state.objectMode ? 1 : chunk.length;
11792 if (addToFront)
11793 state.buffer.unshift(chunk);
11794 else
11795 state.buffer.push(chunk);
11796
11797 if (state.needReadable)
11798 emitReadable(stream);
11799 }
11800
11801 maybeReadMore(stream, state);
11802 }
11803 } else if (!addToFront) {
11804 state.reading = false;
11805 }
11806
11807 return needMoreData(state);
11808 }
11809
11810
11811
11812 // if it's past the high water mark, we can push in some more.
11813 // Also, if we have no data yet, we can stand some
11814 // more bytes. This is to work around cases where hwm=0,
11815 // such as the repl. Also, if the push() triggered a
11816 // readable event, and the user called read(largeNumber) such that
11817 // needReadable was set, then we ought to push more, so that another
11818 // 'readable' event will be triggered.
11819 function needMoreData(state) {
11820 return !state.ended &&
11821 (state.needReadable ||
11822 state.length < state.highWaterMark ||
11823 state.length === 0);
11824 }
11825
11826 // backwards compatibility.
11827 Readable.prototype.setEncoding = function(enc) {
11828 if (!StringDecoder)
11829 StringDecoder = require('string_decoder/').StringDecoder;
11830 this._readableState.decoder = new StringDecoder(enc);
11831 this._readableState.encoding = enc;
11832 return this;
11833 };
11834
11835 // Don't raise the hwm > 128MB
11836 var MAX_HWM = 0x800000;
11837 function roundUpToNextPowerOf2(n) {
11838 if (n >= MAX_HWM) {
11839 n = MAX_HWM;
11840 } else {
11841 // Get the next highest power of 2
11842 n--;
11843 for (var p = 1; p < 32; p <<= 1) n |= n >> p;
11844 n++;
11845 }
11846 return n;
11847 }
11848
11849 function howMuchToRead(n, state) {
11850 if (state.length === 0 && state.ended)
11851 return 0;
11852
11853 if (state.objectMode)
11854 return n === 0 ? 0 : 1;
11855
11856 if (isNaN(n) || util.isNull(n)) {
11857 // only flow one buffer at a time
11858 if (state.flowing && state.buffer.length)
11859 return state.buffer[0].length;
11860 else
11861 return state.length;
11862 }
11863
11864 if (n <= 0)
11865 return 0;
11866
11867 // If we're asking for more than the target buffer level,
11868 // then raise the water mark. Bump up to the next highest
11869 // power of 2, to prevent increasing it excessively in tiny
11870 // amounts.
11871 if (n > state.highWaterMark)
11872 state.highWaterMark = roundUpToNextPowerOf2(n);
11873
11874 // don't have that much. return null, unless we've ended.
11875 if (n > state.length) {
11876 if (!state.ended) {
11877 state.needReadable = true;
11878 return 0;
11879 } else
11880 return state.length;
11881 }
11882
11883 return n;
11884 }
11885
11886 // you can override either this method, or the async _read(n) below.
11887 Readable.prototype.read = function(n) {
11888 debug('read', n);
11889 var state = this._readableState;
11890 var nOrig = n;
11891
11892 if (!util.isNumber(n) || n > 0)
11893 state.emittedReadable = false;
11894
11895 // if we're doing read(0) to trigger a readable event, but we
11896 // already have a bunch of data in the buffer, then just trigger
11897 // the 'readable' event and move on.
11898 if (n === 0 &&
11899 state.needReadable &&
11900 (state.length >= state.highWaterMark || state.ended)) {
11901 debug('read: emitReadable', state.length, state.ended);
11902 if (state.length === 0 && state.ended)
11903 endReadable(this);
11904 else
11905 emitReadable(this);
11906 return null;
11907 }
11908
11909 n = howMuchToRead(n, state);
11910
11911 // if we've ended, and we're now clear, then finish it up.
11912 if (n === 0 && state.ended) {
11913 if (state.length === 0)
11914 endReadable(this);
11915 return null;
11916 }
11917
11918 // All the actual chunk generation logic needs to be
11919 // *below* the call to _read. The reason is that in certain
11920 // synthetic stream cases, such as passthrough streams, _read
11921 // may be a completely synchronous operation which may change
11922 // the state of the read buffer, providing enough data when
11923 // before there was *not* enough.
11924 //
11925 // So, the steps are:
11926 // 1. Figure out what the state of things will be after we do
11927 // a read from the buffer.
11928 //
11929 // 2. If that resulting state will trigger a _read, then call _read.
11930 // Note that this may be asynchronous, or synchronous. Yes, it is
11931 // deeply ugly to write APIs this way, but that still doesn't mean
11932 // that the Readable class should behave improperly, as streams are
11933 // designed to be sync/async agnostic.
11934 // Take note if the _read call is sync or async (ie, if the read call
11935 // has returned yet), so that we know whether or not it's safe to emit
11936 // 'readable' etc.
11937 //
11938 // 3. Actually pull the requested chunks out of the buffer and return.
11939
11940 // if we need a readable event, then we need to do some reading.
11941 var doRead = state.needReadable;
11942 debug('need readable', doRead);
11943
11944 // if we currently have less than the highWaterMark, then also read some
11945 if (state.length === 0 || state.length - n < state.highWaterMark) {
11946 doRead = true;
11947 debug('length less than watermark', doRead);
11948 }
11949
11950 // however, if we've ended, then there's no point, and if we're already
11951 // reading, then it's unnecessary.
11952 if (state.ended || state.reading) {
11953 doRead = false;
11954 debug('reading or ended', doRead);
11955 }
11956
11957 if (doRead) {
11958 debug('do read');
11959 state.reading = true;
11960 state.sync = true;
11961 // if the length is currently zero, then we *need* a readable event.
11962 if (state.length === 0)
11963 state.needReadable = true;
11964 // call internal read method
11965 this._read(state.highWaterMark);
11966 state.sync = false;
11967 }
11968
11969 // If _read pushed data synchronously, then `reading` will be false,
11970 // and we need to re-evaluate how much data we can return to the user.
11971 if (doRead && !state.reading)
11972 n = howMuchToRead(nOrig, state);
11973
11974 var ret;
11975 if (n > 0)
11976 ret = fromList(n, state);
11977 else
11978 ret = null;
11979
11980 if (util.isNull(ret)) {
11981 state.needReadable = true;
11982 n = 0;
11983 }
11984
11985 state.length -= n;
11986
11987 // If we have nothing in the buffer, then we want to know
11988 // as soon as we *do* get something into the buffer.
11989 if (state.length === 0 && !state.ended)
11990 state.needReadable = true;
11991
11992 // If we tried to read() past the EOF, then emit end on the next tick.
11993 if (nOrig !== n && state.ended && state.length === 0)
11994 endReadable(this);
11995
11996 if (!util.isNull(ret))
11997 this.emit('data', ret);
11998
11999 return ret;
12000 };
12001
12002 function chunkInvalid(state, chunk) {
12003 var er = null;
12004 if (!util.isBuffer(chunk) &&
12005 !util.isString(chunk) &&
12006 !util.isNullOrUndefined(chunk) &&
12007 !state.objectMode) {
12008 er = new TypeError('Invalid non-string/buffer chunk');
12009 }
12010 return er;
12011 }
12012
12013
12014 function onEofChunk(stream, state) {
12015 if (state.decoder && !state.ended) {
12016 var chunk = state.decoder.end();
12017 if (chunk && chunk.length) {
12018 state.buffer.push(chunk);
12019 state.length += state.objectMode ? 1 : chunk.length;
12020 }
12021 }
12022 state.ended = true;
12023
12024 // emit 'readable' now to make sure it gets picked up.
12025 emitReadable(stream);
12026 }
12027
12028 // Don't emit readable right away in sync mode, because this can trigger
12029 // another read() call => stack overflow. This way, it might trigger
12030 // a nextTick recursion warning, but that's not so bad.
12031 function emitReadable(stream) {
12032 var state = stream._readableState;
12033 state.needReadable = false;
12034 if (!state.emittedReadable) {
12035 debug('emitReadable', state.flowing);
12036 state.emittedReadable = true;
12037 if (state.sync)
12038 process.nextTick(function() {
12039 emitReadable_(stream);
12040 });
12041 else
12042 emitReadable_(stream);
12043 }
12044 }
12045
12046 function emitReadable_(stream) {
12047 debug('emit readable');
12048 stream.emit('readable');
12049 flow(stream);
12050 }
12051
12052
12053 // at this point, the user has presumably seen the 'readable' event,
12054 // and called read() to consume some data. that may have triggered
12055 // in turn another _read(n) call, in which case reading = true if
12056 // it's in progress.
12057 // However, if we're not ended, or reading, and the length < hwm,
12058 // then go ahead and try to read some more preemptively.
12059 function maybeReadMore(stream, state) {
12060 if (!state.readingMore) {
12061 state.readingMore = true;
12062 process.nextTick(function() {
12063 maybeReadMore_(stream, state);
12064 });
12065 }
12066 }
12067
12068 function maybeReadMore_(stream, state) {
12069 var len = state.length;
12070 while (!state.reading && !state.flowing && !state.ended &&
12071 state.length < state.highWaterMark) {
12072 debug('maybeReadMore read 0');
12073 stream.read(0);
12074 if (len === state.length)
12075 // didn't get any data, stop spinning.
12076 break;
12077 else
12078 len = state.length;
12079 }
12080 state.readingMore = false;
12081 }
12082
12083 // abstract method. to be overridden in specific implementation classes.
12084 // call cb(er, data) where data is <= n in length.
12085 // for virtual (non-string, non-buffer) streams, "length" is somewhat
12086 // arbitrary, and perhaps not very meaningful.
12087 Readable.prototype._read = function(n) {
12088 this.emit('error', new Error('not implemented'));
12089 };
12090
12091 Readable.prototype.pipe = function(dest, pipeOpts) {
12092 var src = this;
12093 var state = this._readableState;
12094
12095 switch (state.pipesCount) {
12096 case 0:
12097 state.pipes = dest;
12098 break;
12099 case 1:
12100 state.pipes = [state.pipes, dest];
12101 break;
12102 default:
12103 state.pipes.push(dest);
12104 break;
12105 }
12106 state.pipesCount += 1;
12107 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
12108
12109 var doEnd = (!pipeOpts || pipeOpts.end !== false) &&
12110 dest !== process.stdout &&
12111 dest !== process.stderr;
12112
12113 var endFn = doEnd ? onend : cleanup;
12114 if (state.endEmitted)
12115 process.nextTick(endFn);
12116 else
12117 src.once('end', endFn);
12118
12119 dest.on('unpipe', onunpipe);
12120 function onunpipe(readable) {
12121 debug('onunpipe');
12122 if (readable === src) {
12123 cleanup();
12124 }
12125 }
12126
12127 function onend() {
12128 debug('onend');
12129 dest.end();
12130 }
12131
12132 // when the dest drains, it reduces the awaitDrain counter
12133 // on the source. This would be more elegant with a .once()
12134 // handler in flow(), but adding and removing repeatedly is
12135 // too slow.
12136 var ondrain = pipeOnDrain(src);
12137 dest.on('drain', ondrain);
12138
12139 function cleanup() {
12140 debug('cleanup');
12141 // cleanup event handlers once the pipe is broken
12142 dest.removeListener('close', onclose);
12143 dest.removeListener('finish', onfinish);
12144 dest.removeListener('drain', ondrain);
12145 dest.removeListener('error', onerror);
12146 dest.removeListener('unpipe', onunpipe);
12147 src.removeListener('end', onend);
12148 src.removeListener('end', cleanup);
12149 src.removeListener('data', ondata);
12150
12151 // if the reader is waiting for a drain event from this
12152 // specific writer, then it would cause it to never start
12153 // flowing again.
12154 // So, if this is awaiting a drain, then we just call it now.
12155 // If we don't know, then assume that we are waiting for one.
12156 if (state.awaitDrain &&
12157 (!dest._writableState || dest._writableState.needDrain))
12158 ondrain();
12159 }
12160
12161 src.on('data', ondata);
12162 function ondata(chunk) {
12163 debug('ondata');
12164 var ret = dest.write(chunk);
12165 if (false === ret) {
12166 debug('false write response, pause',
12167 src._readableState.awaitDrain);
12168 src._readableState.awaitDrain++;
12169 src.pause();
12170 }
12171 }
12172
12173 // if the dest has an error, then stop piping into it.
12174 // however, don't suppress the throwing behavior for this.
12175 function onerror(er) {
12176 debug('onerror', er);
12177 unpipe();
12178 dest.removeListener('error', onerror);
12179 if (EE.listenerCount(dest, 'error') === 0)
12180 dest.emit('error', er);
12181 }
12182 // This is a brutally ugly hack to make sure that our error handler
12183 // is attached before any userland ones. NEVER DO THIS.
12184 if (!dest._events || !dest._events.error)
12185 dest.on('error', onerror);
12186 else if (isArray(dest._events.error))
12187 dest._events.error.unshift(onerror);
12188 else
12189 dest._events.error = [onerror, dest._events.error];
12190
12191
12192
12193 // Both close and finish should trigger unpipe, but only once.
12194 function onclose() {
12195 dest.removeListener('finish', onfinish);
12196 unpipe();
12197 }
12198 dest.once('close', onclose);
12199 function onfinish() {
12200 debug('onfinish');
12201 dest.removeListener('close', onclose);
12202 unpipe();
12203 }
12204 dest.once('finish', onfinish);
12205
12206 function unpipe() {
12207 debug('unpipe');
12208 src.unpipe(dest);
12209 }
12210
12211 // tell the dest that it's being piped to
12212 dest.emit('pipe', src);
12213
12214 // start the flow if it hasn't been started already.
12215 if (!state.flowing) {
12216 debug('pipe resume');
12217 src.resume();
12218 }
12219
12220 return dest;
12221 };
12222
12223 function pipeOnDrain(src) {
12224 return function() {
12225 var state = src._readableState;
12226 debug('pipeOnDrain', state.awaitDrain);
12227 if (state.awaitDrain)
12228 state.awaitDrain--;
12229 if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) {
12230 state.flowing = true;
12231 flow(src);
12232 }
12233 };
12234 }
12235
12236
12237 Readable.prototype.unpipe = function(dest) {
12238 var state = this._readableState;
12239
12240 // if we're not piping anywhere, then do nothing.
12241 if (state.pipesCount === 0)
12242 return this;
12243
12244 // just one destination. most common case.
12245 if (state.pipesCount === 1) {
12246 // passed in one, but it's not the right one.
12247 if (dest && dest !== state.pipes)
12248 return this;
12249
12250 if (!dest)
12251 dest = state.pipes;
12252
12253 // got a match.
12254 state.pipes = null;
12255 state.pipesCount = 0;
12256 state.flowing = false;
12257 if (dest)
12258 dest.emit('unpipe', this);
12259 return this;
12260 }
12261
12262 // slow case. multiple pipe destinations.
12263
12264 if (!dest) {
12265 // remove all.
12266 var dests = state.pipes;
12267 var len = state.pipesCount;
12268 state.pipes = null;
12269 state.pipesCount = 0;
12270 state.flowing = false;
12271
12272 for (var i = 0; i < len; i++)
12273 dests[i].emit('unpipe', this);
12274 return this;
12275 }
12276
12277 // try to find the right one.
12278 var i = indexOf(state.pipes, dest);
12279 if (i === -1)
12280 return this;
12281
12282 state.pipes.splice(i, 1);
12283 state.pipesCount -= 1;
12284 if (state.pipesCount === 1)
12285 state.pipes = state.pipes[0];
12286
12287 dest.emit('unpipe', this);
12288
12289 return this;
12290 };
12291
12292 // set up data events if they are asked for
12293 // Ensure readable listeners eventually get something
12294 Readable.prototype.on = function(ev, fn) {
12295 var res = Stream.prototype.on.call(this, ev, fn);
12296
12297 // If listening to data, and it has not explicitly been paused,
12298 // then call resume to start the flow of data on the next tick.
12299 if (ev === 'data' && false !== this._readableState.flowing) {
12300 this.resume();
12301 }
12302
12303 if (ev === 'readable' && this.readable) {
12304 var state = this._readableState;
12305 if (!state.readableListening) {
12306 state.readableListening = true;
12307 state.emittedReadable = false;
12308 state.needReadable = true;
12309 if (!state.reading) {
12310 var self = this;
12311 process.nextTick(function() {
12312 debug('readable nexttick read 0');
12313 self.read(0);
12314 });
12315 } else if (state.length) {
12316 emitReadable(this, state);
12317 }
12318 }
12319 }
12320
12321 return res;
12322 };
12323 Readable.prototype.addListener = Readable.prototype.on;
12324
12325 // pause() and resume() are remnants of the legacy readable stream API
12326 // If the user uses them, then switch into old mode.
12327 Readable.prototype.resume = function() {
12328 var state = this._readableState;
12329 if (!state.flowing) {
12330 debug('resume');
12331 state.flowing = true;
12332 if (!state.reading) {
12333 debug('resume read 0');
12334 this.read(0);
12335 }
12336 resume(this, state);
12337 }
12338 return this;
12339 };
12340
12341 function resume(stream, state) {
12342 if (!state.resumeScheduled) {
12343 state.resumeScheduled = true;
12344 process.nextTick(function() {
12345 resume_(stream, state);
12346 });
12347 }
12348 }
12349
12350 function resume_(stream, state) {
12351 state.resumeScheduled = false;
12352 stream.emit('resume');
12353 flow(stream);
12354 if (state.flowing && !state.reading)
12355 stream.read(0);
12356 }
12357
12358 Readable.prototype.pause = function() {
12359 debug('call pause flowing=%j', this._readableState.flowing);
12360 if (false !== this._readableState.flowing) {
12361 debug('pause');
12362 this._readableState.flowing = false;
12363 this.emit('pause');
12364 }
12365 return this;
12366 };
12367
12368 function flow(stream) {
12369 var state = stream._readableState;
12370 debug('flow', state.flowing);
12371 if (state.flowing) {
12372 do {
12373 var chunk = stream.read();
12374 } while (null !== chunk && state.flowing);
12375 }
12376 }
12377
12378 // wrap an old-style stream as the async data source.
12379 // This is *not* part of the readable stream interface.
12380 // It is an ugly unfortunate mess of history.
12381 Readable.prototype.wrap = function(stream) {
12382 var state = this._readableState;
12383 var paused = false;
12384
12385 var self = this;
12386 stream.on('end', function() {
12387 debug('wrapped end');
12388 if (state.decoder && !state.ended) {
12389 var chunk = state.decoder.end();
12390 if (chunk && chunk.length)
12391 self.push(chunk);
12392 }
12393
12394 self.push(null);
12395 });
12396
12397 stream.on('data', function(chunk) {
12398 debug('wrapped data');
12399 if (state.decoder)
12400 chunk = state.decoder.write(chunk);
12401 if (!chunk || !state.objectMode && !chunk.length)
12402 return;
12403
12404 var ret = self.push(chunk);
12405 if (!ret) {
12406 paused = true;
12407 stream.pause();
12408 }
12409 });
12410
12411 // proxy all the other methods.
12412 // important when wrapping filters and duplexes.
12413 for (var i in stream) {
12414 if (util.isFunction(stream[i]) && util.isUndefined(this[i])) {
12415 this[i] = function(method) { return function() {
12416 return stream[method].apply(stream, arguments);
12417 }}(i);
12418 }
12419 }
12420
12421 // proxy certain important events.
12422 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
12423 forEach(events, function(ev) {
12424 stream.on(ev, self.emit.bind(self, ev));
12425 });
12426
12427 // when we try to consume some more bytes, simply unpause the
12428 // underlying stream.
12429 self._read = function(n) {
12430 debug('wrapped _read', n);
12431 if (paused) {
12432 paused = false;
12433 stream.resume();
12434 }
12435 };
12436
12437 return self;
12438 };
12439
12440
12441
12442 // exposed for testing purposes only.
12443 Readable._fromList = fromList;
12444
12445 // Pluck off n bytes from an array of buffers.
12446 // Length is the combined lengths of all the buffers in the list.
12447 function fromList(n, state) {
12448 var list = state.buffer;
12449 var length = state.length;
12450 var stringMode = !!state.decoder;
12451 var objectMode = !!state.objectMode;
12452 var ret;
12453
12454 // nothing in the list, definitely empty.
12455 if (list.length === 0)
12456 return null;
12457
12458 if (length === 0)
12459 ret = null;
12460 else if (objectMode)
12461 ret = list.shift();
12462 else if (!n || n >= length) {
12463 // read it all, truncate the array.
12464 if (stringMode)
12465 ret = list.join('');
12466 else
12467 ret = Buffer.concat(list, length);
12468 list.length = 0;
12469 } else {
12470 // read just some of it.
12471 if (n < list[0].length) {
12472 // just take a part of the first list item.
12473 // slice is the same for buffers and strings.
12474 var buf = list[0];
12475 ret = buf.slice(0, n);
12476 list[0] = buf.slice(n);
12477 } else if (n === list[0].length) {
12478 // first list is a perfect match
12479 ret = list.shift();
12480 } else {
12481 // complex case.
12482 // we have enough to cover it, but it spans past the first buffer.
12483 if (stringMode)
12484 ret = '';
12485 else
12486 ret = new Buffer(n);
12487
12488 var c = 0;
12489 for (var i = 0, l = list.length; i < l && c < n; i++) {
12490 var buf = list[0];
12491 var cpy = Math.min(n - c, buf.length);
12492
12493 if (stringMode)
12494 ret += buf.slice(0, cpy);
12495 else
12496 buf.copy(ret, c, 0, cpy);
12497
12498 if (cpy < buf.length)
12499 list[0] = buf.slice(cpy);
12500 else
12501 list.shift();
12502
12503 c += cpy;
12504 }
12505 }
12506 }
12507
12508 return ret;
12509 }
12510
12511 function endReadable(stream) {
12512 var state = stream._readableState;
12513
12514 // If we get here before consuming all the bytes, then that is a
12515 // bug in node. Should never happen.
12516 if (state.length > 0)
12517 throw new Error('endReadable called on non-empty stream');
12518
12519 if (!state.endEmitted) {
12520 state.ended = true;
12521 process.nextTick(function() {
12522 // Check that we didn't get one last unshift.
12523 if (!state.endEmitted && state.length === 0) {
12524 state.endEmitted = true;
12525 stream.readable = false;
12526 stream.emit('end');
12527 }
12528 });
12529 }
12530 }
12531
12532 function forEach (xs, f) {
12533 for (var i = 0, l = xs.length; i < l; i++) {
12534 f(xs[i], i);
12535 }
12536 }
12537
12538 function indexOf (xs, x) {
12539 for (var i = 0, l = xs.length; i < l; i++) {
12540 if (xs[i] === x) return i;
12541 }
12542 return -1;
12543 }
12544
12545 }).call(this,require('_process'))
12546 },{"./_stream_duplex":16,"_process":14,"buffer":7,"core-util-is":21,"events":11,"inherits":12,"isarray":13,"stream":26,"string_decoder/":27,"util":6}],19:[function(require,module,exports){
12547 // Copyright Joyent, Inc. and other Node contributors.
12548 //
12549 // Permission is hereby granted, free of charge, to any person obtaining a
12550 // copy of this software and associated documentation files (the
12551 // "Software"), to deal in the Software without restriction, including
12552 // without limitation the rights to use, copy, modify, merge, publish,
12553 // distribute, sublicense, and/or sell copies of the Software, and to permit
12554 // persons to whom the Software is furnished to do so, subject to the
12555 // following conditions:
12556 //
12557 // The above copyright notice and this permission notice shall be included
12558 // in all copies or substantial portions of the Software.
12559 //
12560 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12561 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12562 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12563 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12564 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12565 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12566 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12567
12568
12569 // a transform stream is a readable/writable stream where you do
12570 // something with the data. Sometimes it's called a "filter",
12571 // but that's not a great name for it, since that implies a thing where
12572 // some bits pass through, and others are simply ignored. (That would
12573 // be a valid example of a transform, of course.)
12574 //
12575 // While the output is causally related to the input, it's not a
12576 // necessarily symmetric or synchronous transformation. For example,
12577 // a zlib stream might take multiple plain-text writes(), and then
12578 // emit a single compressed chunk some time in the future.
12579 //
12580 // Here's how this works:
12581 //
12582 // The Transform stream has all the aspects of the readable and writable
12583 // stream classes. When you write(chunk), that calls _write(chunk,cb)
12584 // internally, and returns false if there's a lot of pending writes
12585 // buffered up. When you call read(), that calls _read(n) until
12586 // there's enough pending readable data buffered up.
12587 //
12588 // In a transform stream, the written data is placed in a buffer. When
12589 // _read(n) is called, it transforms the queued up data, calling the
12590 // buffered _write cb's as it consumes chunks. If consuming a single
12591 // written chunk would result in multiple output chunks, then the first
12592 // outputted bit calls the readcb, and subsequent chunks just go into
12593 // the read buffer, and will cause it to emit 'readable' if necessary.
12594 //
12595 // This way, back-pressure is actually determined by the reading side,
12596 // since _read has to be called to start processing a new chunk. However,
12597 // a pathological inflate type of transform can cause excessive buffering
12598 // here. For example, imagine a stream where every byte of input is
12599 // interpreted as an integer from 0-255, and then results in that many
12600 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
12601 // 1kb of data being output. In this case, you could write a very small
12602 // amount of input, and end up with a very large amount of output. In
12603 // such a pathological inflating mechanism, there'd be no way to tell
12604 // the system to stop doing the transform. A single 4MB write could
12605 // cause the system to run out of memory.
12606 //
12607 // However, even in such a pathological case, only a single written chunk
12608 // would be consumed, and then the rest would wait (un-transformed) until
12609 // the results of the previous transformed chunk were consumed.
12610
12611 module.exports = Transform;
12612
12613 var Duplex = require('./_stream_duplex');
12614
12615 /*<replacement>*/
12616 var util = require('core-util-is');
12617 util.inherits = require('inherits');
12618 /*</replacement>*/
12619
12620 util.inherits(Transform, Duplex);
12621
12622
12623 function TransformState(options, stream) {
12624 this.afterTransform = function(er, data) {
12625 return afterTransform(stream, er, data);
12626 };
12627
12628 this.needTransform = false;
12629 this.transforming = false;
12630 this.writecb = null;
12631 this.writechunk = null;
12632 }
12633
12634 function afterTransform(stream, er, data) {
12635 var ts = stream._transformState;
12636 ts.transforming = false;
12637
12638 var cb = ts.writecb;
12639
12640 if (!cb)
12641 return stream.emit('error', new Error('no writecb in Transform class'));
12642
12643 ts.writechunk = null;
12644 ts.writecb = null;
12645
12646 if (!util.isNullOrUndefined(data))
12647 stream.push(data);
12648
12649 if (cb)
12650 cb(er);
12651
12652 var rs = stream._readableState;
12653 rs.reading = false;
12654 if (rs.needReadable || rs.length < rs.highWaterMark) {
12655 stream._read(rs.highWaterMark);
12656 }
12657 }
12658
12659
12660 function Transform(options) {
12661 if (!(this instanceof Transform))
12662 return new Transform(options);
12663
12664 Duplex.call(this, options);
12665
12666 this._transformState = new TransformState(options, this);
12667
12668 // when the writable side finishes, then flush out anything remaining.
12669 var stream = this;
12670
12671 // start out asking for a readable event once data is transformed.
12672 this._readableState.needReadable = true;
12673
12674 // we have implemented the _read method, and done the other things
12675 // that Readable wants before the first _read call, so unset the
12676 // sync guard flag.
12677 this._readableState.sync = false;
12678
12679 this.once('prefinish', function() {
12680 if (util.isFunction(this._flush))
12681 this._flush(function(er) {
12682 done(stream, er);
12683 });
12684 else
12685 done(stream);
12686 });
12687 }
12688
12689 Transform.prototype.push = function(chunk, encoding) {
12690 this._transformState.needTransform = false;
12691 return Duplex.prototype.push.call(this, chunk, encoding);
12692 };
12693
12694 // This is the part where you do stuff!
12695 // override this function in implementation classes.
12696 // 'chunk' is an input chunk.
12697 //
12698 // Call `push(newChunk)` to pass along transformed output
12699 // to the readable side. You may call 'push' zero or more times.
12700 //
12701 // Call `cb(err)` when you are done with this chunk. If you pass
12702 // an error, then that'll put the hurt on the whole operation. If you
12703 // never call cb(), then you'll never get another chunk.
12704 Transform.prototype._transform = function(chunk, encoding, cb) {
12705 throw new Error('not implemented');
12706 };
12707
12708 Transform.prototype._write = function(chunk, encoding, cb) {
12709 var ts = this._transformState;
12710 ts.writecb = cb;
12711 ts.writechunk = chunk;
12712 ts.writeencoding = encoding;
12713 if (!ts.transforming) {
12714 var rs = this._readableState;
12715 if (ts.needTransform ||
12716 rs.needReadable ||
12717 rs.length < rs.highWaterMark)
12718 this._read(rs.highWaterMark);
12719 }
12720 };
12721
12722 // Doesn't matter what the args are here.
12723 // _transform does all the work.
12724 // That we got here means that the readable side wants more data.
12725 Transform.prototype._read = function(n) {
12726 var ts = this._transformState;
12727
12728 if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) {
12729 ts.transforming = true;
12730 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
12731 } else {
12732 // mark that we need a transform, so that any data that comes in
12733 // will get processed, now that we've asked for it.
12734 ts.needTransform = true;
12735 }
12736 };
12737
12738
12739 function done(stream, er) {
12740 if (er)
12741 return stream.emit('error', er);
12742
12743 // if there's nothing in the write buffer, then that means
12744 // that nothing more will ever be provided
12745 var ws = stream._writableState;
12746 var ts = stream._transformState;
12747
12748 if (ws.length)
12749 throw new Error('calling transform done when ws.length != 0');
12750
12751 if (ts.transforming)
12752 throw new Error('calling transform done when still transforming');
12753
12754 return stream.push(null);
12755 }
12756
12757 },{"./_stream_duplex":16,"core-util-is":21,"inherits":12}],20:[function(require,module,exports){
12758 (function (process){
12759 // Copyright Joyent, Inc. and other Node contributors.
12760 //
12761 // Permission is hereby granted, free of charge, to any person obtaining a
12762 // copy of this software and associated documentation files (the
12763 // "Software"), to deal in the Software without restriction, including
12764 // without limitation the rights to use, copy, modify, merge, publish,
12765 // distribute, sublicense, and/or sell copies of the Software, and to permit
12766 // persons to whom the Software is furnished to do so, subject to the
12767 // following conditions:
12768 //
12769 // The above copyright notice and this permission notice shall be included
12770 // in all copies or substantial portions of the Software.
12771 //
12772 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12773 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12774 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12775 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12776 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12777 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12778 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12779
12780 // A bit simpler than readable streams.
12781 // Implement an async ._write(chunk, cb), and it'll handle all
12782 // the drain event emission and buffering.
12783
12784 module.exports = Writable;
12785
12786 /*<replacement>*/
12787 var Buffer = require('buffer').Buffer;
12788 /*</replacement>*/
12789
12790 Writable.WritableState = WritableState;
12791
12792
12793 /*<replacement>*/
12794 var util = require('core-util-is');
12795 util.inherits = require('inherits');
12796 /*</replacement>*/
12797
12798 var Stream = require('stream');
12799
12800 util.inherits(Writable, Stream);
12801
12802 function WriteReq(chunk, encoding, cb) {
12803 this.chunk = chunk;
12804 this.encoding = encoding;
12805 this.callback = cb;
12806 }
12807
12808 function WritableState(options, stream) {
12809 var Duplex = require('./_stream_duplex');
12810
12811 options = options || {};
12812
12813 // the point at which write() starts returning false
12814 // Note: 0 is a valid value, means that we always return false if
12815 // the entire buffer is not flushed immediately on write()
12816 var hwm = options.highWaterMark;
12817 var defaultHwm = options.objectMode ? 16 : 16 * 1024;
12818 this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
12819
12820 // object stream flag to indicate whether or not this stream
12821 // contains buffers or objects.
12822 this.objectMode = !!options.objectMode;
12823
12824 if (stream instanceof Duplex)
12825 this.objectMode = this.objectMode || !!options.writableObjectMode;
12826
12827 // cast to ints.
12828 this.highWaterMark = ~~this.highWaterMark;
12829
12830 this.needDrain = false;
12831 // at the start of calling end()
12832 this.ending = false;
12833 // when end() has been called, and returned
12834 this.ended = false;
12835 // when 'finish' is emitted
12836 this.finished = false;
12837
12838 // should we decode strings into buffers before passing to _write?
12839 // this is here so that some node-core streams can optimize string
12840 // handling at a lower level.
12841 var noDecode = options.decodeStrings === false;
12842 this.decodeStrings = !noDecode;
12843
12844 // Crypto is kind of old and crusty. Historically, its default string
12845 // encoding is 'binary' so we have to make this configurable.
12846 // Everything else in the universe uses 'utf8', though.
12847 this.defaultEncoding = options.defaultEncoding || 'utf8';
12848
12849 // not an actual buffer we keep track of, but a measurement
12850 // of how much we're waiting to get pushed to some underlying
12851 // socket or file.
12852 this.length = 0;
12853
12854 // a flag to see when we're in the middle of a write.
12855 this.writing = false;
12856
12857 // when true all writes will be buffered until .uncork() call
12858 this.corked = 0;
12859
12860 // a flag to be able to tell if the onwrite cb is called immediately,
12861 // or on a later tick. We set this to true at first, because any
12862 // actions that shouldn't happen until "later" should generally also
12863 // not happen before the first write call.
12864 this.sync = true;
12865
12866 // a flag to know if we're processing previously buffered items, which
12867 // may call the _write() callback in the same tick, so that we don't
12868 // end up in an overlapped onwrite situation.
12869 this.bufferProcessing = false;
12870
12871 // the callback that's passed to _write(chunk,cb)
12872 this.onwrite = function(er) {
12873 onwrite(stream, er);
12874 };
12875
12876 // the callback that the user supplies to write(chunk,encoding,cb)
12877 this.writecb = null;
12878
12879 // the amount that is being written when _write is called.
12880 this.writelen = 0;
12881
12882 this.buffer = [];
12883
12884 // number of pending user-supplied write callbacks
12885 // this must be 0 before 'finish' can be emitted
12886 this.pendingcb = 0;
12887
12888 // emit prefinish if the only thing we're waiting for is _write cbs
12889 // This is relevant for synchronous Transform streams
12890 this.prefinished = false;
12891
12892 // True if the error was already emitted and should not be thrown again
12893 this.errorEmitted = false;
12894 }
12895
12896 function Writable(options) {
12897 var Duplex = require('./_stream_duplex');
12898
12899 // Writable ctor is applied to Duplexes, though they're not
12900 // instanceof Writable, they're instanceof Readable.
12901 if (!(this instanceof Writable) && !(this instanceof Duplex))
12902 return new Writable(options);
12903
12904 this._writableState = new WritableState(options, this);
12905
12906 // legacy.
12907 this.writable = true;
12908
12909 Stream.call(this);
12910 }
12911
12912 // Otherwise people can pipe Writable streams, which is just wrong.
12913 Writable.prototype.pipe = function() {
12914 this.emit('error', new Error('Cannot pipe. Not readable.'));
12915 };
12916
12917
12918 function writeAfterEnd(stream, state, cb) {
12919 var er = new Error('write after end');
12920 // TODO: defer error events consistently everywhere, not just the cb
12921 stream.emit('error', er);
12922 process.nextTick(function() {
12923 cb(er);
12924 });
12925 }
12926
12927 // If we get something that is not a buffer, string, null, or undefined,
12928 // and we're not in objectMode, then that's an error.
12929 // Otherwise stream chunks are all considered to be of length=1, and the
12930 // watermarks determine how many objects to keep in the buffer, rather than
12931 // how many bytes or characters.
12932 function validChunk(stream, state, chunk, cb) {
12933 var valid = true;
12934 if (!util.isBuffer(chunk) &&
12935 !util.isString(chunk) &&
12936 !util.isNullOrUndefined(chunk) &&
12937 !state.objectMode) {
12938 var er = new TypeError('Invalid non-string/buffer chunk');
12939 stream.emit('error', er);
12940 process.nextTick(function() {
12941 cb(er);
12942 });
12943 valid = false;
12944 }
12945 return valid;
12946 }
12947
12948 Writable.prototype.write = function(chunk, encoding, cb) {
12949 var state = this._writableState;
12950 var ret = false;
12951
12952 if (util.isFunction(encoding)) {
12953 cb = encoding;
12954 encoding = null;
12955 }
12956
12957 if (util.isBuffer(chunk))
12958 encoding = 'buffer';
12959 else if (!encoding)
12960 encoding = state.defaultEncoding;
12961
12962 if (!util.isFunction(cb))
12963 cb = function() {};
12964
12965 if (state.ended)
12966 writeAfterEnd(this, state, cb);
12967 else if (validChunk(this, state, chunk, cb)) {
12968 state.pendingcb++;
12969 ret = writeOrBuffer(this, state, chunk, encoding, cb);
12970 }
12971
12972 return ret;
12973 };
12974
12975 Writable.prototype.cork = function() {
12976 var state = this._writableState;
12977
12978 state.corked++;
12979 };
12980
12981 Writable.prototype.uncork = function() {
12982 var state = this._writableState;
12983
12984 if (state.corked) {
12985 state.corked--;
12986
12987 if (!state.writing &&
12988 !state.corked &&
12989 !state.finished &&
12990 !state.bufferProcessing &&
12991 state.buffer.length)
12992 clearBuffer(this, state);
12993 }
12994 };
12995
12996 function decodeChunk(state, chunk, encoding) {
12997 if (!state.objectMode &&
12998 state.decodeStrings !== false &&
12999 util.isString(chunk)) {
13000 chunk = new Buffer(chunk, encoding);
13001 }
13002 return chunk;
13003 }
13004
13005 // if we're already writing something, then just put this
13006 // in the queue, and wait our turn. Otherwise, call _write
13007 // If we return false, then we need a drain event, so set that flag.
13008 function writeOrBuffer(stream, state, chunk, encoding, cb) {
13009 chunk = decodeChunk(state, chunk, encoding);
13010 if (util.isBuffer(chunk))
13011 encoding = 'buffer';
13012 var len = state.objectMode ? 1 : chunk.length;
13013
13014 state.length += len;
13015
13016 var ret = state.length < state.highWaterMark;
13017 // we must ensure that previous needDrain will not be reset to false.
13018 if (!ret)
13019 state.needDrain = true;
13020
13021 if (state.writing || state.corked)
13022 state.buffer.push(new WriteReq(chunk, encoding, cb));
13023 else
13024 doWrite(stream, state, false, len, chunk, encoding, cb);
13025
13026 return ret;
13027 }
13028
13029 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
13030 state.writelen = len;
13031 state.writecb = cb;
13032 state.writing = true;
13033 state.sync = true;
13034 if (writev)
13035 stream._writev(chunk, state.onwrite);
13036 else
13037 stream._write(chunk, encoding, state.onwrite);
13038 state.sync = false;
13039 }
13040
13041 function onwriteError(stream, state, sync, er, cb) {
13042 if (sync)
13043 process.nextTick(function() {
13044 state.pendingcb--;
13045 cb(er);
13046 });
13047 else {
13048 state.pendingcb--;
13049 cb(er);
13050 }
13051
13052 stream._writableState.errorEmitted = true;
13053 stream.emit('error', er);
13054 }
13055
13056 function onwriteStateUpdate(state) {
13057 state.writing = false;
13058 state.writecb = null;
13059 state.length -= state.writelen;
13060 state.writelen = 0;
13061 }
13062
13063 function onwrite(stream, er) {
13064 var state = stream._writableState;
13065 var sync = state.sync;
13066 var cb = state.writecb;
13067
13068 onwriteStateUpdate(state);
13069
13070 if (er)
13071 onwriteError(stream, state, sync, er, cb);
13072 else {
13073 // Check if we're actually ready to finish, but don't emit yet
13074 var finished = needFinish(stream, state);
13075
13076 if (!finished &&
13077 !state.corked &&
13078 !state.bufferProcessing &&
13079 state.buffer.length) {
13080 clearBuffer(stream, state);
13081 }
13082
13083 if (sync) {
13084 process.nextTick(function() {
13085 afterWrite(stream, state, finished, cb);
13086 });
13087 } else {
13088 afterWrite(stream, state, finished, cb);
13089 }
13090 }
13091 }
13092
13093 function afterWrite(stream, state, finished, cb) {
13094 if (!finished)
13095 onwriteDrain(stream, state);
13096 state.pendingcb--;
13097 cb();
13098 finishMaybe(stream, state);
13099 }
13100
13101 // Must force callback to be called on nextTick, so that we don't
13102 // emit 'drain' before the write() consumer gets the 'false' return
13103 // value, and has a chance to attach a 'drain' listener.
13104 function onwriteDrain(stream, state) {
13105 if (state.length === 0 && state.needDrain) {
13106 state.needDrain = false;
13107 stream.emit('drain');
13108 }
13109 }
13110
13111
13112 // if there's something in the buffer waiting, then process it
13113 function clearBuffer(stream, state) {
13114 state.bufferProcessing = true;
13115
13116 if (stream._writev && state.buffer.length > 1) {
13117 // Fast case, write everything using _writev()
13118 var cbs = [];
13119 for (var c = 0; c < state.buffer.length; c++)
13120 cbs.push(state.buffer[c].callback);
13121
13122 // count the one we are adding, as well.
13123 // TODO(isaacs) clean this up
13124 state.pendingcb++;
13125 doWrite(stream, state, true, state.length, state.buffer, '', function(err) {
13126 for (var i = 0; i < cbs.length; i++) {
13127 state.pendingcb--;
13128 cbs[i](err);
13129 }
13130 });
13131
13132 // Clear buffer
13133 state.buffer = [];
13134 } else {
13135 // Slow case, write chunks one-by-one
13136 for (var c = 0; c < state.buffer.length; c++) {
13137 var entry = state.buffer[c];
13138 var chunk = entry.chunk;
13139 var encoding = entry.encoding;
13140 var cb = entry.callback;
13141 var len = state.objectMode ? 1 : chunk.length;
13142
13143 doWrite(stream, state, false, len, chunk, encoding, cb);
13144
13145 // if we didn't call the onwrite immediately, then
13146 // it means that we need to wait until it does.
13147 // also, that means that the chunk and cb are currently
13148 // being processed, so move the buffer counter past them.
13149 if (state.writing) {
13150 c++;
13151 break;
13152 }
13153 }
13154
13155 if (c < state.buffer.length)
13156 state.buffer = state.buffer.slice(c);
13157 else
13158 state.buffer.length = 0;
13159 }
13160
13161 state.bufferProcessing = false;
13162 }
13163
13164 Writable.prototype._write = function(chunk, encoding, cb) {
13165 cb(new Error('not implemented'));
13166
13167 };
13168
13169 Writable.prototype._writev = null;
13170
13171 Writable.prototype.end = function(chunk, encoding, cb) {
13172 var state = this._writableState;
13173
13174 if (util.isFunction(chunk)) {
13175 cb = chunk;
13176 chunk = null;
13177 encoding = null;
13178 } else if (util.isFunction(encoding)) {
13179 cb = encoding;
13180 encoding = null;
13181 }
13182
13183 if (!util.isNullOrUndefined(chunk))
13184 this.write(chunk, encoding);
13185
13186 // .end() fully uncorks
13187 if (state.corked) {
13188 state.corked = 1;
13189 this.uncork();
13190 }
13191
13192 // ignore unnecessary end() calls.
13193 if (!state.ending && !state.finished)
13194 endWritable(this, state, cb);
13195 };
13196
13197
13198 function needFinish(stream, state) {
13199 return (state.ending &&
13200 state.length === 0 &&
13201 !state.finished &&
13202 !state.writing);
13203 }
13204
13205 function prefinish(stream, state) {
13206 if (!state.prefinished) {
13207 state.prefinished = true;
13208 stream.emit('prefinish');
13209 }
13210 }
13211
13212 function finishMaybe(stream, state) {
13213 var need = needFinish(stream, state);
13214 if (need) {
13215 if (state.pendingcb === 0) {
13216 prefinish(stream, state);
13217 state.finished = true;
13218 stream.emit('finish');
13219 } else
13220 prefinish(stream, state);
13221 }
13222 return need;
13223 }
13224
13225 function endWritable(stream, state, cb) {
13226 state.ending = true;
13227 finishMaybe(stream, state);
13228 if (cb) {
13229 if (state.finished)
13230 process.nextTick(cb);
13231 else
13232 stream.once('finish', cb);
13233 }
13234 state.ended = true;
13235 }
13236
13237 }).call(this,require('_process'))
13238 },{"./_stream_duplex":16,"_process":14,"buffer":7,"core-util-is":21,"inherits":12,"stream":26}],21:[function(require,module,exports){
13239 (function (Buffer){
13240 // Copyright Joyent, Inc. and other Node contributors.
13241 //
13242 // Permission is hereby granted, free of charge, to any person obtaining a
13243 // copy of this software and associated documentation files (the
13244 // "Software"), to deal in the Software without restriction, including
13245 // without limitation the rights to use, copy, modify, merge, publish,
13246 // distribute, sublicense, and/or sell copies of the Software, and to permit
13247 // persons to whom the Software is furnished to do so, subject to the
13248 // following conditions:
13249 //
13250 // The above copyright notice and this permission notice shall be included
13251 // in all copies or substantial portions of the Software.
13252 //
13253 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13254 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13255 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13256 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13257 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13258 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13259 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13260
13261 // NOTE: These type checking functions intentionally don't use `instanceof`
13262 // because it is fragile and can be easily faked with `Object.create()`.
13263 function isArray(ar) {
13264 return Array.isArray(ar);
13265 }
13266 exports.isArray = isArray;
13267
13268 function isBoolean(arg) {
13269 return typeof arg === 'boolean';
13270 }
13271 exports.isBoolean = isBoolean;
13272
13273 function isNull(arg) {
13274 return arg === null;
13275 }
13276 exports.isNull = isNull;
13277
13278 function isNullOrUndefined(arg) {
13279 return arg == null;
13280 }
13281 exports.isNullOrUndefined = isNullOrUndefined;
13282
13283 function isNumber(arg) {
13284 return typeof arg === 'number';
13285 }
13286 exports.isNumber = isNumber;
13287
13288 function isString(arg) {
13289 return typeof arg === 'string';
13290 }
13291 exports.isString = isString;
13292
13293 function isSymbol(arg) {
13294 return typeof arg === 'symbol';
13295 }
13296 exports.isSymbol = isSymbol;
13297
13298 function isUndefined(arg) {
13299 return arg === void 0;
13300 }
13301 exports.isUndefined = isUndefined;
13302
13303 function isRegExp(re) {
13304 return isObject(re) && objectToString(re) === '[object RegExp]';
13305 }
13306 exports.isRegExp = isRegExp;
13307
13308 function isObject(arg) {
13309 return typeof arg === 'object' && arg !== null;
13310 }
13311 exports.isObject = isObject;
13312
13313 function isDate(d) {
13314 return isObject(d) && objectToString(d) === '[object Date]';
13315 }
13316 exports.isDate = isDate;
13317
13318 function isError(e) {
13319 return isObject(e) &&
13320 (objectToString(e) === '[object Error]' || e instanceof Error);
13321 }
13322 exports.isError = isError;
13323
13324 function isFunction(arg) {
13325 return typeof arg === 'function';
13326 }
13327 exports.isFunction = isFunction;
13328
13329 function isPrimitive(arg) {
13330 return arg === null ||
13331 typeof arg === 'boolean' ||
13332 typeof arg === 'number' ||
13333 typeof arg === 'string' ||
13334 typeof arg === 'symbol' || // ES6 symbol
13335 typeof arg === 'undefined';
13336 }
13337 exports.isPrimitive = isPrimitive;
13338
13339 function isBuffer(arg) {
13340 return Buffer.isBuffer(arg);
13341 }
13342 exports.isBuffer = isBuffer;
13343
13344 function objectToString(o) {
13345 return Object.prototype.toString.call(o);
13346 }
13347 }).call(this,require("buffer").Buffer)
13348 },{"buffer":7}],22:[function(require,module,exports){
13349 module.exports = require("./lib/_stream_passthrough.js")
13350
13351 },{"./lib/_stream_passthrough.js":17}],23:[function(require,module,exports){
13352 exports = module.exports = require('./lib/_stream_readable.js');
13353 exports.Stream = require('stream');
13354 exports.Readable = exports;
13355 exports.Writable = require('./lib/_stream_writable.js');
13356 exports.Duplex = require('./lib/_stream_duplex.js');
13357 exports.Transform = require('./lib/_stream_transform.js');
13358 exports.PassThrough = require('./lib/_stream_passthrough.js');
13359
13360 },{"./lib/_stream_duplex.js":16,"./lib/_stream_passthrough.js":17,"./lib/_stream_readable.js":18,"./lib/_stream_transform.js":19,"./lib/_stream_writable.js":20,"stream":26}],24:[function(require,module,exports){
13361 module.exports = require("./lib/_stream_transform.js")
13362
13363 },{"./lib/_stream_transform.js":19}],25:[function(require,module,exports){
13364 module.exports = require("./lib/_stream_writable.js")
13365
13366 },{"./lib/_stream_writable.js":20}],26:[function(require,module,exports){
13367 // Copyright Joyent, Inc. and other Node contributors.
13368 //
13369 // Permission is hereby granted, free of charge, to any person obtaining a
13370 // copy of this software and associated documentation files (the
13371 // "Software"), to deal in the Software without restriction, including
13372 // without limitation the rights to use, copy, modify, merge, publish,
13373 // distribute, sublicense, and/or sell copies of the Software, and to permit
13374 // persons to whom the Software is furnished to do so, subject to the
13375 // following conditions:
13376 //
13377 // The above copyright notice and this permission notice shall be included
13378 // in all copies or substantial portions of the Software.
13379 //
13380 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13381 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13382 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13383 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13384 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13385 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13386 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13387
13388 module.exports = Stream;
13389
13390 var EE = require('events').EventEmitter;
13391 var inherits = require('inherits');
13392
13393 inherits(Stream, EE);
13394 Stream.Readable = require('readable-stream/readable.js');
13395 Stream.Writable = require('readable-stream/writable.js');
13396 Stream.Duplex = require('readable-stream/duplex.js');
13397 Stream.Transform = require('readable-stream/transform.js');
13398 Stream.PassThrough = require('readable-stream/passthrough.js');
13399
13400 // Backwards-compat with node 0.4.x
13401 Stream.Stream = Stream;
13402
13403
13404
13405 // old-style streams. Note that the pipe method (the only relevant
13406 // part of this class) is overridden in the Readable class.
13407
13408 function Stream() {
13409 EE.call(this);
13410 }
13411
13412 Stream.prototype.pipe = function(dest, options) {
13413 var source = this;
13414
13415 function ondata(chunk) {
13416 if (dest.writable) {
13417 if (false === dest.write(chunk) && source.pause) {
13418 source.pause();
13419 }
13420 }
13421 }
13422
13423 source.on('data', ondata);
13424
13425 function ondrain() {
13426 if (source.readable && source.resume) {
13427 source.resume();
13428 }
13429 }
13430
13431 dest.on('drain', ondrain);
13432
13433 // If the 'end' option is not supplied, dest.end() will be called when
13434 // source gets the 'end' or 'close' events. Only dest.end() once.
13435 if (!dest._isStdio && (!options || options.end !== false)) {
13436 source.on('end', onend);
13437 source.on('close', onclose);
13438 }
13439
13440 var didOnEnd = false;
13441 function onend() {
13442 if (didOnEnd) return;
13443 didOnEnd = true;
13444
13445 dest.end();
13446 }
13447
13448
13449 function onclose() {
13450 if (didOnEnd) return;
13451 didOnEnd = true;
13452
13453 if (typeof dest.destroy === 'function') dest.destroy();
13454 }
13455
13456 // don't leave dangling pipes when there are errors.
13457 function onerror(er) {
13458 cleanup();
13459 if (EE.listenerCount(this, 'error') === 0) {
13460 throw er; // Unhandled stream error in pipe.
13461 }
13462 }
13463
13464 source.on('error', onerror);
13465 dest.on('error', onerror);
13466
13467 // remove all the event listeners that were added.
13468 function cleanup() {
13469 source.removeListener('data', ondata);
13470 dest.removeListener('drain', ondrain);
13471
13472 source.removeListener('end', onend);
13473 source.removeListener('close', onclose);
13474
13475 source.removeListener('error', onerror);
13476 dest.removeListener('error', onerror);
13477
13478 source.removeListener('end', cleanup);
13479 source.removeListener('close', cleanup);
13480
13481 dest.removeListener('close', cleanup);
13482 }
13483
13484 source.on('end', cleanup);
13485 source.on('close', cleanup);
13486
13487 dest.on('close', cleanup);
13488
13489 dest.emit('pipe', source);
13490
13491 // Allow for unix-like usage: A.pipe(B).pipe(C)
13492 return dest;
13493 };
13494
13495 },{"events":11,"inherits":12,"readable-stream/duplex.js":15,"readable-stream/passthrough.js":22,"readable-stream/readable.js":23,"readable-stream/transform.js":24,"readable-stream/writable.js":25}],27:[function(require,module,exports){
13496 // Copyright Joyent, Inc. and other Node contributors.
13497 //
13498 // Permission is hereby granted, free of charge, to any person obtaining a
13499 // copy of this software and associated documentation files (the
13500 // "Software"), to deal in the Software without restriction, including
13501 // without limitation the rights to use, copy, modify, merge, publish,
13502 // distribute, sublicense, and/or sell copies of the Software, and to permit
13503 // persons to whom the Software is furnished to do so, subject to the
13504 // following conditions:
13505 //
13506 // The above copyright notice and this permission notice shall be included
13507 // in all copies or substantial portions of the Software.
13508 //
13509 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13510 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13511 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13512 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13513 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13514 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13515 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13516
13517 var Buffer = require('buffer').Buffer;
13518
13519 var isBufferEncoding = Buffer.isEncoding
13520 || function(encoding) {
13521 switch (encoding && encoding.toLowerCase()) {
13522 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;
13523 default: return false;
13524 }
13525 }
13526
13527
13528 function assertEncoding(encoding) {
13529 if (encoding && !isBufferEncoding(encoding)) {
13530 throw new Error('Unknown encoding: ' + encoding);
13531 }
13532 }
13533
13534 // StringDecoder provides an interface for efficiently splitting a series of
13535 // buffers into a series of JS strings without breaking apart multi-byte
13536 // characters. CESU-8 is handled as part of the UTF-8 encoding.
13537 //
13538 // @TODO Handling all encodings inside a single object makes it very difficult
13539 // to reason about this code, so it should be split up in the future.
13540 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
13541 // points as used by CESU-8.
13542 var StringDecoder = exports.StringDecoder = function(encoding) {
13543 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
13544 assertEncoding(encoding);
13545 switch (this.encoding) {
13546 case 'utf8':
13547 // CESU-8 represents each of Surrogate Pair by 3-bytes
13548 this.surrogateSize = 3;
13549 break;
13550 case 'ucs2':
13551 case 'utf16le':
13552 // UTF-16 represents each of Surrogate Pair by 2-bytes
13553 this.surrogateSize = 2;
13554 this.detectIncompleteChar = utf16DetectIncompleteChar;
13555 break;
13556 case 'base64':
13557 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
13558 this.surrogateSize = 3;
13559 this.detectIncompleteChar = base64DetectIncompleteChar;
13560 break;
13561 default:
13562 this.write = passThroughWrite;
13563 return;
13564 }
13565
13566 // Enough space to store all bytes of a single character. UTF-8 needs 4
13567 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
13568 this.charBuffer = new Buffer(6);
13569 // Number of bytes received for the current incomplete multi-byte character.
13570 this.charReceived = 0;
13571 // Number of bytes expected for the current incomplete multi-byte character.
13572 this.charLength = 0;
13573 };
13574
13575
13576 // write decodes the given buffer and returns it as JS string that is
13577 // guaranteed to not contain any partial multi-byte characters. Any partial
13578 // character found at the end of the buffer is buffered up, and will be
13579 // returned when calling write again with the remaining bytes.
13580 //
13581 // Note: Converting a Buffer containing an orphan surrogate to a String
13582 // currently works, but converting a String to a Buffer (via `new Buffer`, or
13583 // Buffer#write) will replace incomplete surrogates with the unicode
13584 // replacement character. See https://codereview.chromium.org/121173009/ .
13585 StringDecoder.prototype.write = function(buffer) {
13586 var charStr = '';
13587 // if our last write ended with an incomplete multibyte character
13588 while (this.charLength) {
13589 // determine how many remaining bytes this buffer has to offer for this char
13590 var available = (buffer.length >= this.charLength - this.charReceived) ?
13591 this.charLength - this.charReceived :
13592 buffer.length;
13593
13594 // add the new bytes to the char buffer
13595 buffer.copy(this.charBuffer, this.charReceived, 0, available);
13596 this.charReceived += available;
13597
13598 if (this.charReceived < this.charLength) {
13599 // still not enough chars in this buffer? wait for more ...
13600 return '';
13601 }
13602
13603 // remove bytes belonging to the current character from the buffer
13604 buffer = buffer.slice(available, buffer.length);
13605
13606 // get the character that was split
13607 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
13608
13609 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
13610 var charCode = charStr.charCodeAt(charStr.length - 1);
13611 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
13612 this.charLength += this.surrogateSize;
13613 charStr = '';
13614 continue;
13615 }
13616 this.charReceived = this.charLength = 0;
13617
13618 // if there are no more bytes in this buffer, just emit our char
13619 if (buffer.length === 0) {
13620 return charStr;
13621 }
13622 break;
13623 }
13624
13625 // determine and set charLength / charReceived
13626 this.detectIncompleteChar(buffer);
13627
13628 var end = buffer.length;
13629 if (this.charLength) {
13630 // buffer the incomplete character bytes we got
13631 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
13632 end -= this.charReceived;
13633 }
13634
13635 charStr += buffer.toString(this.encoding, 0, end);
13636
13637 var end = charStr.length - 1;
13638 var charCode = charStr.charCodeAt(end);
13639 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
13640 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
13641 var size = this.surrogateSize;
13642 this.charLength += size;
13643 this.charReceived += size;
13644 this.charBuffer.copy(this.charBuffer, size, 0, size);
13645 buffer.copy(this.charBuffer, 0, 0, size);
13646 return charStr.substring(0, end);
13647 }
13648
13649 // or just emit the charStr
13650 return charStr;
13651 };
13652
13653 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
13654 // the end of the given buffer. If so, it sets this.charLength to the byte
13655 // length that character, and sets this.charReceived to the number of bytes
13656 // that are available for this character.
13657 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
13658 // determine how many bytes we have to check at the end of this buffer
13659 var i = (buffer.length >= 3) ? 3 : buffer.length;
13660
13661 // Figure out if one of the last i bytes of our buffer announces an
13662 // incomplete char.
13663 for (; i > 0; i--) {
13664 var c = buffer[buffer.length - i];
13665
13666 // See http://en.wikipedia.org/wiki/UTF-8#Description
13667
13668 // 110XXXXX
13669 if (i == 1 && c >> 5 == 0x06) {
13670 this.charLength = 2;
13671 break;
13672 }
13673
13674 // 1110XXXX
13675 if (i <= 2 && c >> 4 == 0x0E) {
13676 this.charLength = 3;
13677 break;
13678 }
13679
13680 // 11110XXX
13681 if (i <= 3 && c >> 3 == 0x1E) {
13682 this.charLength = 4;
13683 break;
13684 }
13685 }
13686 this.charReceived = i;
13687 };
13688
13689 StringDecoder.prototype.end = function(buffer) {
13690 var res = '';
13691 if (buffer && buffer.length)
13692 res = this.write(buffer);
13693
13694 if (this.charReceived) {
13695 var cr = this.charReceived;
13696 var buf = this.charBuffer;
13697 var enc = this.encoding;
13698 res += buf.slice(0, cr).toString(enc);
13699 }
13700
13701 return res;
13702 };
13703
13704 function passThroughWrite(buffer) {
13705 return buffer.toString(this.encoding);
13706 }
13707
13708 function utf16DetectIncompleteChar(buffer) {
13709 this.charReceived = buffer.length % 2;
13710 this.charLength = this.charReceived ? 2 : 0;
13711 }
13712
13713 function base64DetectIncompleteChar(buffer) {
13714 this.charReceived = buffer.length % 3;
13715 this.charLength = this.charReceived ? 3 : 0;
13716 }
13717
13718 },{"buffer":7}],28:[function(require,module,exports){
13719 module.exports = function isBuffer(arg) {
13720 return arg && typeof arg === 'object'
13721 && typeof arg.copy === 'function'
13722 && typeof arg.fill === 'function'
13723 && typeof arg.readUInt8 === 'function';
13724 }
13725 },{}],29:[function(require,module,exports){
13726 (function (process,global){
13727 // Copyright Joyent, Inc. and other Node contributors.
13728 //
13729 // Permission is hereby granted, free of charge, to any person obtaining a
13730 // copy of this software and associated documentation files (the
13731 // "Software"), to deal in the Software without restriction, including
13732 // without limitation the rights to use, copy, modify, merge, publish,
13733 // distribute, sublicense, and/or sell copies of the Software, and to permit
13734 // persons to whom the Software is furnished to do so, subject to the
13735 // following conditions:
13736 //
13737 // The above copyright notice and this permission notice shall be included
13738 // in all copies or substantial portions of the Software.
13739 //
13740 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13741 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13742 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13743 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13744 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13745 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13746 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13747
13748 var formatRegExp = /%[sdj%]/g;
13749 exports.format = function(f) {
13750 if (!isString(f)) {
13751 var objects = [];
13752 for (var i = 0; i < arguments.length; i++) {
13753 objects.push(inspect(arguments[i]));
13754 }
13755 return objects.join(' ');
13756 }
13757
13758 var i = 1;
13759 var args = arguments;
13760 var len = args.length;
13761 var str = String(f).replace(formatRegExp, function(x) {
13762 if (x === '%%') return '%';
13763 if (i >= len) return x;
13764 switch (x) {
13765 case '%s': return String(args[i++]);
13766 case '%d': return Number(args[i++]);
13767 case '%j':
13768 try {
13769 return JSON.stringify(args[i++]);
13770 } catch (_) {
13771 return '[Circular]';
13772 }
13773 default:
13774 return x;
13775 }
13776 });
13777 for (var x = args[i]; i < len; x = args[++i]) {
13778 if (isNull(x) || !isObject(x)) {
13779 str += ' ' + x;
13780 } else {
13781 str += ' ' + inspect(x);
13782 }
13783 }
13784 return str;
13785 };
13786
13787
13788 // Mark that a method should not be used.
13789 // Returns a modified function which warns once by default.
13790 // If --no-deprecation is set, then it is a no-op.
13791 exports.deprecate = function(fn, msg) {
13792 // Allow for deprecating things in the process of starting up.
13793 if (isUndefined(global.process)) {
13794 return function() {
13795 return exports.deprecate(fn, msg).apply(this, arguments);
13796 };
13797 }
13798
13799 if (process.noDeprecation === true) {
13800 return fn;
13801 }
13802
13803 var warned = false;
13804 function deprecated() {
13805 if (!warned) {
13806 if (process.throwDeprecation) {
13807 throw new Error(msg);
13808 } else if (process.traceDeprecation) {
13809 console.trace(msg);
13810 } else {
13811 console.error(msg);
13812 }
13813 warned = true;
13814 }
13815 return fn.apply(this, arguments);
13816 }
13817
13818 return deprecated;
13819 };
13820
13821
13822 var debugs = {};
13823 var debugEnviron;
13824 exports.debuglog = function(set) {
13825 if (isUndefined(debugEnviron))
13826 debugEnviron = process.env.NODE_DEBUG || '';
13827 set = set.toUpperCase();
13828 if (!debugs[set]) {
13829 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
13830 var pid = process.pid;
13831 debugs[set] = function() {
13832 var msg = exports.format.apply(exports, arguments);
13833 console.error('%s %d: %s', set, pid, msg);
13834 };
13835 } else {
13836 debugs[set] = function() {};
13837 }
13838 }
13839 return debugs[set];
13840 };
13841
13842
13843 /**
13844 * Echos the value of a value. Trys to print the value out
13845 * in the best way possible given the different types.
13846 *
13847 * @param {Object} obj The object to print out.
13848 * @param {Object} opts Optional options object that alters the output.
13849 */
13850 /* legacy: obj, showHidden, depth, colors*/
13851 function inspect(obj, opts) {
13852 // default options
13853 var ctx = {
13854 seen: [],
13855 stylize: stylizeNoColor
13856 };
13857 // legacy...
13858 if (arguments.length >= 3) ctx.depth = arguments[2];
13859 if (arguments.length >= 4) ctx.colors = arguments[3];
13860 if (isBoolean(opts)) {
13861 // legacy...
13862 ctx.showHidden = opts;
13863 } else if (opts) {
13864 // got an "options" object
13865 exports._extend(ctx, opts);
13866 }
13867 // set default options
13868 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
13869 if (isUndefined(ctx.depth)) ctx.depth = 2;
13870 if (isUndefined(ctx.colors)) ctx.colors = false;
13871 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
13872 if (ctx.colors) ctx.stylize = stylizeWithColor;
13873 return formatValue(ctx, obj, ctx.depth);
13874 }
13875 exports.inspect = inspect;
13876
13877
13878 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
13879 inspect.colors = {
13880 'bold' : [1, 22],
13881 'italic' : [3, 23],
13882 'underline' : [4, 24],
13883 'inverse' : [7, 27],
13884 'white' : [37, 39],
13885 'grey' : [90, 39],
13886 'black' : [30, 39],
13887 'blue' : [34, 39],
13888 'cyan' : [36, 39],
13889 'green' : [32, 39],
13890 'magenta' : [35, 39],
13891 'red' : [31, 39],
13892 'yellow' : [33, 39]
13893 };
13894
13895 // Don't use 'blue' not visible on cmd.exe
13896 inspect.styles = {
13897 'special': 'cyan',
13898 'number': 'yellow',
13899 'boolean': 'yellow',
13900 'undefined': 'grey',
13901 'null': 'bold',
13902 'string': 'green',
13903 'date': 'magenta',
13904 // "name": intentionally not styling
13905 'regexp': 'red'
13906 };
13907
13908
13909 function stylizeWithColor(str, styleType) {
13910 var style = inspect.styles[styleType];
13911
13912 if (style) {
13913 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
13914 '\u001b[' + inspect.colors[style][1] + 'm';
13915 } else {
13916 return str;
13917 }
13918 }
13919
13920
13921 function stylizeNoColor(str, styleType) {
13922 return str;
13923 }
13924
13925
13926 function arrayToHash(array) {
13927 var hash = {};
13928
13929 array.forEach(function(val, idx) {
13930 hash[val] = true;
13931 });
13932
13933 return hash;
13934 }
13935
13936
13937 function formatValue(ctx, value, recurseTimes) {
13938 // Provide a hook for user-specified inspect functions.
13939 // Check that value is an object with an inspect function on it
13940 if (ctx.customInspect &&
13941 value &&
13942 isFunction(value.inspect) &&
13943 // Filter out the util module, it's inspect function is special
13944 value.inspect !== exports.inspect &&
13945 // Also filter out any prototype objects using the circular check.
13946 !(value.constructor && value.constructor.prototype === value)) {
13947 var ret = value.inspect(recurseTimes, ctx);
13948 if (!isString(ret)) {
13949 ret = formatValue(ctx, ret, recurseTimes);
13950 }
13951 return ret;
13952 }
13953
13954 // Primitive types cannot have properties
13955 var primitive = formatPrimitive(ctx, value);
13956 if (primitive) {
13957 return primitive;
13958 }
13959
13960 // Look up the keys of the object.
13961 var keys = Object.keys(value);
13962 var visibleKeys = arrayToHash(keys);
13963
13964 if (ctx.showHidden) {
13965 keys = Object.getOwnPropertyNames(value);
13966 }
13967
13968 // IE doesn't make error fields non-enumerable
13969 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
13970 if (isError(value)
13971 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
13972 return formatError(value);
13973 }
13974
13975 // Some type of object without properties can be shortcutted.
13976 if (keys.length === 0) {
13977 if (isFunction(value)) {
13978 var name = value.name ? ': ' + value.name : '';
13979 return ctx.stylize('[Function' + name + ']', 'special');
13980 }
13981 if (isRegExp(value)) {
13982 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13983 }
13984 if (isDate(value)) {
13985 return ctx.stylize(Date.prototype.toString.call(value), 'date');
13986 }
13987 if (isError(value)) {
13988 return formatError(value);
13989 }
13990 }
13991
13992 var base = '', array = false, braces = ['{', '}'];
13993
13994 // Make Array say that they are Array
13995 if (isArray(value)) {
13996 array = true;
13997 braces = ['[', ']'];
13998 }
13999
14000 // Make functions say that they are functions
14001 if (isFunction(value)) {
14002 var n = value.name ? ': ' + value.name : '';
14003 base = ' [Function' + n + ']';
14004 }
14005
14006 // Make RegExps say that they are RegExps
14007 if (isRegExp(value)) {
14008 base = ' ' + RegExp.prototype.toString.call(value);
14009 }
14010
14011 // Make dates with properties first say the date
14012 if (isDate(value)) {
14013 base = ' ' + Date.prototype.toUTCString.call(value);
14014 }
14015
14016 // Make error with message first say the error
14017 if (isError(value)) {
14018 base = ' ' + formatError(value);
14019 }
14020
14021 if (keys.length === 0 && (!array || value.length == 0)) {
14022 return braces[0] + base + braces[1];
14023 }
14024
14025 if (recurseTimes < 0) {
14026 if (isRegExp(value)) {
14027 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
14028 } else {
14029 return ctx.stylize('[Object]', 'special');
14030 }
14031 }
14032
14033 ctx.seen.push(value);
14034
14035 var output;
14036 if (array) {
14037 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
14038 } else {
14039 output = keys.map(function(key) {
14040 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
14041 });
14042 }
14043
14044 ctx.seen.pop();
14045
14046 return reduceToSingleString(output, base, braces);
14047 }
14048
14049
14050 function formatPrimitive(ctx, value) {
14051 if (isUndefined(value))
14052 return ctx.stylize('undefined', 'undefined');
14053 if (isString(value)) {
14054 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
14055 .replace(/'/g, "\\'")
14056 .replace(/\\"/g, '"') + '\'';
14057 return ctx.stylize(simple, 'string');
14058 }
14059 if (isNumber(value))
14060 return ctx.stylize('' + value, 'number');
14061 if (isBoolean(value))
14062 return ctx.stylize('' + value, 'boolean');
14063 // For some reason typeof null is "object", so special case here.
14064 if (isNull(value))
14065 return ctx.stylize('null', 'null');
14066 }
14067
14068
14069 function formatError(value) {
14070 return '[' + Error.prototype.toString.call(value) + ']';
14071 }
14072
14073
14074 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
14075 var output = [];
14076 for (var i = 0, l = value.length; i < l; ++i) {
14077 if (hasOwnProperty(value, String(i))) {
14078 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
14079 String(i), true));
14080 } else {
14081 output.push('');
14082 }
14083 }
14084 keys.forEach(function(key) {
14085 if (!key.match(/^\d+$/)) {
14086 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
14087 key, true));
14088 }
14089 });
14090 return output;
14091 }
14092
14093
14094 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
14095 var name, str, desc;
14096 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
14097 if (desc.get) {
14098 if (desc.set) {
14099 str = ctx.stylize('[Getter/Setter]', 'special');
14100 } else {
14101 str = ctx.stylize('[Getter]', 'special');
14102 }
14103 } else {
14104 if (desc.set) {
14105 str = ctx.stylize('[Setter]', 'special');
14106 }
14107 }
14108 if (!hasOwnProperty(visibleKeys, key)) {
14109 name = '[' + key + ']';
14110 }
14111 if (!str) {
14112 if (ctx.seen.indexOf(desc.value) < 0) {
14113 if (isNull(recurseTimes)) {
14114 str = formatValue(ctx, desc.value, null);
14115 } else {
14116 str = formatValue(ctx, desc.value, recurseTimes - 1);
14117 }
14118 if (str.indexOf('\n') > -1) {
14119 if (array) {
14120 str = str.split('\n').map(function(line) {
14121 return ' ' + line;
14122 }).join('\n').substr(2);
14123 } else {
14124 str = '\n' + str.split('\n').map(function(line) {
14125 return ' ' + line;
14126 }).join('\n');
14127 }
14128 }
14129 } else {
14130 str = ctx.stylize('[Circular]', 'special');
14131 }
14132 }
14133 if (isUndefined(name)) {
14134 if (array && key.match(/^\d+$/)) {
14135 return str;
14136 }
14137 name = JSON.stringify('' + key);
14138 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
14139 name = name.substr(1, name.length - 2);
14140 name = ctx.stylize(name, 'name');
14141 } else {
14142 name = name.replace(/'/g, "\\'")
14143 .replace(/\\"/g, '"')
14144 .replace(/(^"|"$)/g, "'");
14145 name = ctx.stylize(name, 'string');
14146 }
14147 }
14148
14149 return name + ': ' + str;
14150 }
14151
14152
14153 function reduceToSingleString(output, base, braces) {
14154 var numLinesEst = 0;
14155 var length = output.reduce(function(prev, cur) {
14156 numLinesEst++;
14157 if (cur.indexOf('\n') >= 0) numLinesEst++;
14158 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
14159 }, 0);
14160
14161 if (length > 60) {
14162 return braces[0] +
14163 (base === '' ? '' : base + '\n ') +
14164 ' ' +
14165 output.join(',\n ') +
14166 ' ' +
14167 braces[1];
14168 }
14169
14170 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
14171 }
14172
14173
14174 // NOTE: These type checking functions intentionally don't use `instanceof`
14175 // because it is fragile and can be easily faked with `Object.create()`.
14176 function isArray(ar) {
14177 return Array.isArray(ar);
14178 }
14179 exports.isArray = isArray;
14180
14181 function isBoolean(arg) {
14182 return typeof arg === 'boolean';
14183 }
14184 exports.isBoolean = isBoolean;
14185
14186 function isNull(arg) {
14187 return arg === null;
14188 }
14189 exports.isNull = isNull;
14190
14191 function isNullOrUndefined(arg) {
14192 return arg == null;
14193 }
14194 exports.isNullOrUndefined = isNullOrUndefined;
14195
14196 function isNumber(arg) {
14197 return typeof arg === 'number';
14198 }
14199 exports.isNumber = isNumber;
14200
14201 function isString(arg) {
14202 return typeof arg === 'string';
14203 }
14204 exports.isString = isString;
14205
14206 function isSymbol(arg) {
14207 return typeof arg === 'symbol';
14208 }
14209 exports.isSymbol = isSymbol;
14210
14211 function isUndefined(arg) {
14212 return arg === void 0;
14213 }
14214 exports.isUndefined = isUndefined;
14215
14216 function isRegExp(re) {
14217 return isObject(re) && objectToString(re) === '[object RegExp]';
14218 }
14219 exports.isRegExp = isRegExp;
14220
14221 function isObject(arg) {
14222 return typeof arg === 'object' && arg !== null;
14223 }
14224 exports.isObject = isObject;
14225
14226 function isDate(d) {
14227 return isObject(d) && objectToString(d) === '[object Date]';
14228 }
14229 exports.isDate = isDate;
14230
14231 function isError(e) {
14232 return isObject(e) &&
14233 (objectToString(e) === '[object Error]' || e instanceof Error);
14234 }
14235 exports.isError = isError;
14236
14237 function isFunction(arg) {
14238 return typeof arg === 'function';
14239 }
14240 exports.isFunction = isFunction;
14241
14242 function isPrimitive(arg) {
14243 return arg === null ||
14244 typeof arg === 'boolean' ||
14245 typeof arg === 'number' ||
14246 typeof arg === 'string' ||
14247 typeof arg === 'symbol' || // ES6 symbol
14248 typeof arg === 'undefined';
14249 }
14250 exports.isPrimitive = isPrimitive;
14251
14252 exports.isBuffer = require('./support/isBuffer');
14253
14254 function objectToString(o) {
14255 return Object.prototype.toString.call(o);
14256 }
14257
14258
14259 function pad(n) {
14260 return n < 10 ? '0' + n.toString(10) : n.toString(10);
14261 }
14262
14263
14264 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
14265 'Oct', 'Nov', 'Dec'];
14266
14267 // 26 Feb 16:19:34
14268 function timestamp() {
14269 var d = new Date();
14270 var time = [pad(d.getHours()),
14271 pad(d.getMinutes()),
14272 pad(d.getSeconds())].join(':');
14273 return [d.getDate(), months[d.getMonth()], time].join(' ');
14274 }
14275
14276
14277 // log is just a thin wrapper to console.log that prepends a timestamp
14278 exports.log = function() {
14279 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
14280 };
14281
14282
14283 /**
14284 * Inherit the prototype methods from one constructor into another.
14285 *
14286 * The Function.prototype.inherits from lang.js rewritten as a standalone
14287 * function (not on Function.prototype). NOTE: If this file is to be loaded
14288 * during bootstrapping this function needs to be rewritten using some native
14289 * functions as prototype setup using normal JavaScript does not work as
14290 * expected during bootstrapping (see mirror.js in r114903).
14291 *
14292 * @param {function} ctor Constructor function which needs to inherit the
14293 * prototype.
14294 * @param {function} superCtor Constructor function to inherit prototype from.
14295 */
14296 exports.inherits = require('inherits');
14297
14298 exports._extend = function(origin, add) {
14299 // Don't do anything if add isn't an object
14300 if (!add || !isObject(add)) return origin;
14301
14302 var keys = Object.keys(add);
14303 var i = keys.length;
14304 while (i--) {
14305 origin[keys[i]] = add[keys[i]];
14306 }
14307 return origin;
14308 };
14309
14310 function hasOwnProperty(obj, prop) {
14311 return Object.prototype.hasOwnProperty.call(obj, prop);
14312 }
14313
14314 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
14315 },{"./support/isBuffer":28,"_process":14,"inherits":12}],30:[function(require,module,exports){
14316 // Base58 encoding/decoding
14317 // Originally written by Mike Hearn for BitcoinJ
14318 // Copyright (c) 2011 Google Inc
14319 // Ported to JavaScript by Stefan Thomas
14320 // Merged Buffer refactorings from base58-native by Stephen Pair
14321 // Copyright (c) 2013 BitPay Inc
14322
14323 var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
14324 var ALPHABET_MAP = {}
14325 for(var i = 0; i < ALPHABET.length; i++) {
14326 ALPHABET_MAP[ALPHABET.charAt(i)] = i
14327 }
14328 var BASE = 58
14329
14330 function encode(buffer) {
14331 if (buffer.length === 0) return ''
14332
14333 var i, j, digits = [0]
14334 for (i = 0; i < buffer.length; i++) {
14335 for (j = 0; j < digits.length; j++) digits[j] <<= 8
14336
14337 digits[0] += buffer[i]
14338
14339 var carry = 0
14340 for (j = 0; j < digits.length; ++j) {
14341 digits[j] += carry
14342
14343 carry = (digits[j] / BASE) | 0
14344 digits[j] %= BASE
14345 }
14346
14347 while (carry) {
14348 digits.push(carry % BASE)
14349
14350 carry = (carry / BASE) | 0
14351 }
14352 }
14353
14354 // deal with leading zeros
14355 for (i = 0; buffer[i] === 0 && i < buffer.length - 1; i++) digits.push(0)
14356
14357 // convert digits to a string
14358 var stringOutput = ""
14359 for (var i = digits.length - 1; i >= 0; i--) {
14360 stringOutput = stringOutput + ALPHABET[digits[i]]
14361 }
14362 return stringOutput
14363 }
14364
14365 function decode(string) {
14366 if (string.length === 0) return []
14367
14368 var i, j, bytes = [0]
14369 for (i = 0; i < string.length; i++) {
14370 var c = string[i]
14371 if (!(c in ALPHABET_MAP)) throw new Error('Non-base58 character')
14372
14373 for (j = 0; j < bytes.length; j++) bytes[j] *= BASE
14374 bytes[0] += ALPHABET_MAP[c]
14375
14376 var carry = 0
14377 for (j = 0; j < bytes.length; ++j) {
14378 bytes[j] += carry
14379
14380 carry = bytes[j] >> 8
14381 bytes[j] &= 0xff
14382 }
14383
14384 while (carry) {
14385 bytes.push(carry & 0xff)
14386
14387 carry >>= 8
14388 }
14389 }
14390
14391 // deal with leading zeros
14392 for (i = 0; string[i] === '1' && i < string.length - 1; i++) bytes.push(0)
14393
14394 return bytes.reverse()
14395 }
14396
14397 module.exports = {
14398 encode: encode,
14399 decode: decode
14400 }
14401
14402 },{}],31:[function(require,module,exports){
14403 (function (Buffer){
14404 'use strict'
14405
14406 var base58 = require('bs58')
14407 var createHash = require('create-hash')
14408
14409 // SHA256(SHA256(buffer))
14410 function sha256x2 (buffer) {
14411 buffer = createHash('sha256').update(buffer).digest()
14412 return createHash('sha256').update(buffer).digest()
14413 }
14414
14415 // Encode a buffer as a base58-check encoded string
14416 function encode (payload) {
14417 var checksum = sha256x2(payload).slice(0, 4)
14418
14419 return base58.encode(Buffer.concat([
14420 payload,
14421 checksum
14422 ]))
14423 }
14424
14425 // Decode a base58-check encoded string to a buffer
14426 function decode (string) {
14427 var buffer = new Buffer(base58.decode(string))
14428
14429 var payload = buffer.slice(0, -4)
14430 var checksum = buffer.slice(-4)
14431 var newChecksum = sha256x2(payload).slice(0, 4)
14432
14433 for (var i = 0; i < newChecksum.length; ++i) {
14434 if (newChecksum[i] === checksum[i]) continue
14435
14436 throw new Error('Invalid checksum')
14437 }
14438
14439 return payload
14440 }
14441
14442 module.exports = {
14443 encode: encode,
14444 decode: decode
14445 }
14446
14447 }).call(this,require("buffer").Buffer)
14448 },{"bs58":30,"buffer":7,"create-hash":32}],32:[function(require,module,exports){
14449 (function (Buffer){
14450 'use strict';
14451 var inherits = require('inherits')
14452 var md5 = require('./md5')
14453 var rmd160 = require('ripemd160')
14454 var sha = require('sha.js')
14455
14456 var Transform = require('stream').Transform
14457
14458 function HashNoConstructor(hash) {
14459 Transform.call(this)
14460
14461 this._hash = hash
14462 this.buffers = []
14463 }
14464
14465 inherits(HashNoConstructor, Transform)
14466
14467 HashNoConstructor.prototype._transform = function (data, _, next) {
14468 this.buffers.push(data)
14469
14470 next()
14471 }
14472
14473 HashNoConstructor.prototype._flush = function (next) {
14474 this.push(this.digest())
14475 next()
14476 }
14477
14478 HashNoConstructor.prototype.update = function (data, enc) {
14479 if (typeof data === 'string') {
14480 data = new Buffer(data, enc)
14481 }
14482
14483 this.buffers.push(data)
14484 return this
14485 }
14486
14487 HashNoConstructor.prototype.digest = function (enc) {
14488 var buf = Buffer.concat(this.buffers)
14489 var r = this._hash(buf)
14490 this.buffers = null
14491
14492 return enc ? r.toString(enc) : r
14493 }
14494
14495 function Hash(hash) {
14496 Transform.call(this)
14497
14498 this._hash = hash
14499 }
14500
14501 inherits(Hash, Transform)
14502
14503 Hash.prototype._transform = function (data, enc, next) {
14504 if (enc) data = new Buffer(data, enc)
14505
14506 this._hash.update(data)
14507
14508 next()
14509 }
14510
14511 Hash.prototype._flush = function (next) {
14512 this.push(this._hash.digest())
14513 this._hash = null
14514
14515 next()
14516 }
14517
14518 Hash.prototype.update = function (data, enc) {
14519 if (typeof data === 'string') {
14520 data = new Buffer(data, enc)
14521 }
14522
14523 this._hash.update(data)
14524 return this
14525 }
14526
14527 Hash.prototype.digest = function (enc) {
14528 var outData = this._hash.digest()
14529
14530 return enc ? outData.toString(enc) : outData
14531 }
14532
14533 module.exports = function createHash (alg) {
14534 if ('md5' === alg) return new HashNoConstructor(md5)
14535 if ('rmd160' === alg) return new HashNoConstructor(rmd160)
14536
14537 return new Hash(sha(alg))
14538 }
14539
14540 }).call(this,require("buffer").Buffer)
14541 },{"./md5":34,"buffer":7,"inherits":35,"ripemd160":36,"sha.js":38,"stream":26}],33:[function(require,module,exports){
14542 (function (Buffer){
14543 'use strict';
14544 var intSize = 4;
14545 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
14546 var chrsz = 8;
14547
14548 function toArray(buf, bigEndian) {
14549 if ((buf.length % intSize) !== 0) {
14550 var len = buf.length + (intSize - (buf.length % intSize));
14551 buf = Buffer.concat([buf, zeroBuffer], len);
14552 }
14553
14554 var arr = [];
14555 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
14556 for (var i = 0; i < buf.length; i += intSize) {
14557 arr.push(fn.call(buf, i));
14558 }
14559 return arr;
14560 }
14561
14562 function toBuffer(arr, size, bigEndian) {
14563 var buf = new Buffer(size);
14564 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
14565 for (var i = 0; i < arr.length; i++) {
14566 fn.call(buf, arr[i], i * 4, true);
14567 }
14568 return buf;
14569 }
14570
14571 function hash(buf, fn, hashSize, bigEndian) {
14572 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
14573 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
14574 return toBuffer(arr, hashSize, bigEndian);
14575 }
14576 exports.hash = hash;
14577 }).call(this,require("buffer").Buffer)
14578 },{"buffer":7}],34:[function(require,module,exports){
14579 'use strict';
14580 /*
14581 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
14582 * Digest Algorithm, as defined in RFC 1321.
14583 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
14584 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
14585 * Distributed under the BSD License
14586 * See http://pajhome.org.uk/crypt/md5 for more info.
14587 */
14588
14589 var helpers = require('./helpers');
14590
14591 /*
14592 * Calculate the MD5 of an array of little-endian words, and a bit length
14593 */
14594 function core_md5(x, len)
14595 {
14596 /* append padding */
14597 x[len >> 5] |= 0x80 << ((len) % 32);
14598 x[(((len + 64) >>> 9) << 4) + 14] = len;
14599
14600 var a = 1732584193;
14601 var b = -271733879;
14602 var c = -1732584194;
14603 var d = 271733878;
14604
14605 for(var i = 0; i < x.length; i += 16)
14606 {
14607 var olda = a;
14608 var oldb = b;
14609 var oldc = c;
14610 var oldd = d;
14611
14612 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
14613 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
14614 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
14615 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
14616 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
14617 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
14618 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
14619 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
14620 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
14621 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
14622 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
14623 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
14624 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
14625 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
14626 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
14627 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
14628
14629 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
14630 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
14631 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
14632 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
14633 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
14634 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
14635 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
14636 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
14637 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
14638 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
14639 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
14640 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
14641 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
14642 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
14643 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
14644 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
14645
14646 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
14647 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
14648 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
14649 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
14650 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
14651 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
14652 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
14653 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
14654 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
14655 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
14656 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
14657 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
14658 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
14659 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
14660 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
14661 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
14662
14663 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
14664 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
14665 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
14666 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
14667 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
14668 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
14669 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
14670 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
14671 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
14672 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
14673 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
14674 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
14675 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
14676 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
14677 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
14678 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
14679
14680 a = safe_add(a, olda);
14681 b = safe_add(b, oldb);
14682 c = safe_add(c, oldc);
14683 d = safe_add(d, oldd);
14684 }
14685 return Array(a, b, c, d);
14686
14687 }
14688
14689 /*
14690 * These functions implement the four basic operations the algorithm uses.
14691 */
14692 function md5_cmn(q, a, b, x, s, t)
14693 {
14694 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
14695 }
14696 function md5_ff(a, b, c, d, x, s, t)
14697 {
14698 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
14699 }
14700 function md5_gg(a, b, c, d, x, s, t)
14701 {
14702 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
14703 }
14704 function md5_hh(a, b, c, d, x, s, t)
14705 {
14706 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
14707 }
14708 function md5_ii(a, b, c, d, x, s, t)
14709 {
14710 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
14711 }
14712
14713 /*
14714 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
14715 * to work around bugs in some JS interpreters.
14716 */
14717 function safe_add(x, y)
14718 {
14719 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
14720 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
14721 return (msw << 16) | (lsw & 0xFFFF);
14722 }
14723
14724 /*
14725 * Bitwise rotate a 32-bit number to the left.
14726 */
14727 function bit_rol(num, cnt)
14728 {
14729 return (num << cnt) | (num >>> (32 - cnt));
14730 }
14731
14732 module.exports = function md5(buf) {
14733 return helpers.hash(buf, core_md5, 16);
14734 };
14735 },{"./helpers":33}],35:[function(require,module,exports){
14736 arguments[4][12][0].apply(exports,arguments)
14737 },{"dup":12}],36:[function(require,module,exports){
14738 (function (Buffer){
14739 /*
14740 CryptoJS v3.1.2
14741 code.google.com/p/crypto-js
14742 (c) 2009-2013 by Jeff Mott. All rights reserved.
14743 code.google.com/p/crypto-js/wiki/License
14744 */
14745 /** @preserve
14746 (c) 2012 by Cédric Mesnil. All rights reserved.
14747
14748 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
14749
14750 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
14751 - 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.
14752
14753 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.
14754 */
14755
14756 // constants table
14757 var zl = [
14758 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
14759 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
14760 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
14761 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
14762 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
14763 ]
14764
14765 var zr = [
14766 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
14767 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
14768 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
14769 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
14770 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
14771 ]
14772
14773 var sl = [
14774 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
14775 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
14776 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
14777 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
14778 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
14779 ]
14780
14781 var sr = [
14782 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
14783 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
14784 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
14785 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
14786 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
14787 ]
14788
14789 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
14790 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
14791
14792 function bytesToWords (bytes) {
14793 var words = []
14794 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
14795 words[b >>> 5] |= bytes[i] << (24 - b % 32)
14796 }
14797 return words
14798 }
14799
14800 function wordsToBytes (words) {
14801 var bytes = []
14802 for (var b = 0; b < words.length * 32; b += 8) {
14803 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
14804 }
14805 return bytes
14806 }
14807
14808 function processBlock (H, M, offset) {
14809 // swap endian
14810 for (var i = 0; i < 16; i++) {
14811 var offset_i = offset + i
14812 var M_offset_i = M[offset_i]
14813
14814 // Swap
14815 M[offset_i] = (
14816 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
14817 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
14818 )
14819 }
14820
14821 // Working variables
14822 var al, bl, cl, dl, el
14823 var ar, br, cr, dr, er
14824
14825 ar = al = H[0]
14826 br = bl = H[1]
14827 cr = cl = H[2]
14828 dr = dl = H[3]
14829 er = el = H[4]
14830
14831 // computation
14832 var t
14833 for (i = 0; i < 80; i += 1) {
14834 t = (al + M[offset + zl[i]]) | 0
14835 if (i < 16) {
14836 t += f1(bl, cl, dl) + hl[0]
14837 } else if (i < 32) {
14838 t += f2(bl, cl, dl) + hl[1]
14839 } else if (i < 48) {
14840 t += f3(bl, cl, dl) + hl[2]
14841 } else if (i < 64) {
14842 t += f4(bl, cl, dl) + hl[3]
14843 } else {// if (i<80) {
14844 t += f5(bl, cl, dl) + hl[4]
14845 }
14846 t = t | 0
14847 t = rotl(t, sl[i])
14848 t = (t + el) | 0
14849 al = el
14850 el = dl
14851 dl = rotl(cl, 10)
14852 cl = bl
14853 bl = t
14854
14855 t = (ar + M[offset + zr[i]]) | 0
14856 if (i < 16) {
14857 t += f5(br, cr, dr) + hr[0]
14858 } else if (i < 32) {
14859 t += f4(br, cr, dr) + hr[1]
14860 } else if (i < 48) {
14861 t += f3(br, cr, dr) + hr[2]
14862 } else if (i < 64) {
14863 t += f2(br, cr, dr) + hr[3]
14864 } else {// if (i<80) {
14865 t += f1(br, cr, dr) + hr[4]
14866 }
14867
14868 t = t | 0
14869 t = rotl(t, sr[i])
14870 t = (t + er) | 0
14871 ar = er
14872 er = dr
14873 dr = rotl(cr, 10)
14874 cr = br
14875 br = t
14876 }
14877
14878 // intermediate hash value
14879 t = (H[1] + cl + dr) | 0
14880 H[1] = (H[2] + dl + er) | 0
14881 H[2] = (H[3] + el + ar) | 0
14882 H[3] = (H[4] + al + br) | 0
14883 H[4] = (H[0] + bl + cr) | 0
14884 H[0] = t
14885 }
14886
14887 function f1 (x, y, z) {
14888 return ((x) ^ (y) ^ (z))
14889 }
14890
14891 function f2 (x, y, z) {
14892 return (((x) & (y)) | ((~x) & (z)))
14893 }
14894
14895 function f3 (x, y, z) {
14896 return (((x) | (~(y))) ^ (z))
14897 }
14898
14899 function f4 (x, y, z) {
14900 return (((x) & (z)) | ((y) & (~(z))))
14901 }
14902
14903 function f5 (x, y, z) {
14904 return ((x) ^ ((y) | (~(z))))
14905 }
14906
14907 function rotl (x, n) {
14908 return (x << n) | (x >>> (32 - n))
14909 }
14910
14911 function ripemd160 (message) {
14912 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
14913
14914 if (typeof message === 'string') {
14915 message = new Buffer(message, 'utf8')
14916 }
14917
14918 var m = bytesToWords(message)
14919
14920 var nBitsLeft = message.length * 8
14921 var nBitsTotal = message.length * 8
14922
14923 // Add padding
14924 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
14925 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
14926 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
14927 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
14928 )
14929
14930 for (var i = 0; i < m.length; i += 16) {
14931 processBlock(H, m, i)
14932 }
14933
14934 // swap endian
14935 for (i = 0; i < 5; i++) {
14936 // shortcut
14937 var H_i = H[i]
14938
14939 // Swap
14940 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
14941 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
14942 }
14943
14944 var digestbytes = wordsToBytes(H)
14945 return new Buffer(digestbytes)
14946 }
14947
14948 module.exports = ripemd160
14949
14950 }).call(this,require("buffer").Buffer)
14951 },{"buffer":7}],37:[function(require,module,exports){
14952 (function (Buffer){
14953 // prototype class for hash functions
14954 function Hash (blockSize, finalSize) {
14955 this._block = new Buffer(blockSize)
14956 this._finalSize = finalSize
14957 this._blockSize = blockSize
14958 this._len = 0
14959 this._s = 0
14960 }
14961
14962 Hash.prototype.update = function (data, enc) {
14963 if (typeof data === 'string') {
14964 enc = enc || 'utf8'
14965 data = new Buffer(data, enc)
14966 }
14967
14968 var l = this._len += data.length
14969 var s = this._s || 0
14970 var f = 0
14971 var buffer = this._block
14972
14973 while (s < l) {
14974 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
14975 var ch = (t - f)
14976
14977 for (var i = 0; i < ch; i++) {
14978 buffer[(s % this._blockSize) + i] = data[i + f]
14979 }
14980
14981 s += ch
14982 f += ch
14983
14984 if ((s % this._blockSize) === 0) {
14985 this._update(buffer)
14986 }
14987 }
14988 this._s = s
14989
14990 return this
14991 }
14992
14993 Hash.prototype.digest = function (enc) {
14994 // Suppose the length of the message M, in bits, is l
14995 var l = this._len * 8
14996
14997 // Append the bit 1 to the end of the message
14998 this._block[this._len % this._blockSize] = 0x80
14999
15000 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
15001 this._block.fill(0, this._len % this._blockSize + 1)
15002
15003 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
15004 this._update(this._block)
15005 this._block.fill(0)
15006 }
15007
15008 // to this append the block which is equal to the number l written in binary
15009 // TODO: handle case where l is > Math.pow(2, 29)
15010 this._block.writeInt32BE(l, this._blockSize - 4)
15011
15012 var hash = this._update(this._block) || this._hash()
15013
15014 return enc ? hash.toString(enc) : hash
15015 }
15016
15017 Hash.prototype._update = function () {
15018 throw new Error('_update must be implemented by subclass')
15019 }
15020
15021 module.exports = Hash
15022
15023 }).call(this,require("buffer").Buffer)
15024 },{"buffer":7}],38:[function(require,module,exports){
15025 var exports = module.exports = function SHA (algorithm) {
15026 algorithm = algorithm.toLowerCase()
15027
15028 var Algorithm = exports[algorithm]
15029 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
15030
15031 return new Algorithm()
15032 }
15033
15034 exports.sha = require('./sha')
15035 exports.sha1 = require('./sha1')
15036 exports.sha224 = require('./sha224')
15037 exports.sha256 = require('./sha256')
15038 exports.sha384 = require('./sha384')
15039 exports.sha512 = require('./sha512')
15040
15041 },{"./sha":39,"./sha1":40,"./sha224":41,"./sha256":42,"./sha384":43,"./sha512":44}],39:[function(require,module,exports){
15042 (function (Buffer){
15043 /*
15044 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
15045 * in FIPS PUB 180-1
15046 * This source code is derived from sha1.js of the same repository.
15047 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
15048 * operation was added.
15049 */
15050
15051 var inherits = require('inherits')
15052 var Hash = require('./hash')
15053
15054 var W = new Array(80)
15055
15056 function Sha () {
15057 this.init()
15058 this._w = W
15059
15060 Hash.call(this, 64, 56)
15061 }
15062
15063 inherits(Sha, Hash)
15064
15065 Sha.prototype.init = function () {
15066 this._a = 0x67452301 | 0
15067 this._b = 0xefcdab89 | 0
15068 this._c = 0x98badcfe | 0
15069 this._d = 0x10325476 | 0
15070 this._e = 0xc3d2e1f0 | 0
15071
15072 return this
15073 }
15074
15075 /*
15076 * Bitwise rotate a 32-bit number to the left.
15077 */
15078 function rol (num, cnt) {
15079 return (num << cnt) | (num >>> (32 - cnt))
15080 }
15081
15082 Sha.prototype._update = function (M) {
15083 var W = this._w
15084
15085 var a = this._a
15086 var b = this._b
15087 var c = this._c
15088 var d = this._d
15089 var e = this._e
15090
15091 var j = 0, k
15092
15093 /*
15094 * SHA-1 has a bitwise rotate left operation. But, SHA is not
15095 * function calcW() { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) }
15096 */
15097 function calcW () { return W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16] }
15098 function loop (w, f) {
15099 W[j] = w
15100
15101 var t = rol(a, 5) + f + e + w + k
15102
15103 e = d
15104 d = c
15105 c = rol(b, 30)
15106 b = a
15107 a = t
15108 j++
15109 }
15110
15111 k = 1518500249
15112 while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d))
15113 while (j < 20) loop(calcW(), (b & c) | ((~b) & d))
15114 k = 1859775393
15115 while (j < 40) loop(calcW(), b ^ c ^ d)
15116 k = -1894007588
15117 while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d))
15118 k = -899497514
15119 while (j < 80) loop(calcW(), b ^ c ^ d)
15120
15121 this._a = (a + this._a) | 0
15122 this._b = (b + this._b) | 0
15123 this._c = (c + this._c) | 0
15124 this._d = (d + this._d) | 0
15125 this._e = (e + this._e) | 0
15126 }
15127
15128 Sha.prototype._hash = function () {
15129 var H = new Buffer(20)
15130
15131 H.writeInt32BE(this._a | 0, 0)
15132 H.writeInt32BE(this._b | 0, 4)
15133 H.writeInt32BE(this._c | 0, 8)
15134 H.writeInt32BE(this._d | 0, 12)
15135 H.writeInt32BE(this._e | 0, 16)
15136
15137 return H
15138 }
15139
15140 module.exports = Sha
15141
15142
15143 }).call(this,require("buffer").Buffer)
15144 },{"./hash":37,"buffer":7,"inherits":35}],40:[function(require,module,exports){
15145 (function (Buffer){
15146 /*
15147 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
15148 * in FIPS PUB 180-1
15149 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
15150 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15151 * Distributed under the BSD License
15152 * See http://pajhome.org.uk/crypt/md5 for details.
15153 */
15154
15155 var inherits = require('inherits')
15156 var Hash = require('./hash')
15157
15158 var W = new Array(80)
15159
15160 function Sha1 () {
15161 this.init()
15162 this._w = W
15163
15164 Hash.call(this, 64, 56)
15165 }
15166
15167 inherits(Sha1, Hash)
15168
15169 Sha1.prototype.init = function () {
15170 this._a = 0x67452301 | 0
15171 this._b = 0xefcdab89 | 0
15172 this._c = 0x98badcfe | 0
15173 this._d = 0x10325476 | 0
15174 this._e = 0xc3d2e1f0 | 0
15175
15176 return this
15177 }
15178
15179 /*
15180 * Bitwise rotate a 32-bit number to the left.
15181 */
15182 function rol (num, cnt) {
15183 return (num << cnt) | (num >>> (32 - cnt))
15184 }
15185
15186 Sha1.prototype._update = function (M) {
15187 var W = this._w
15188
15189 var a = this._a
15190 var b = this._b
15191 var c = this._c
15192 var d = this._d
15193 var e = this._e
15194
15195 var j = 0, k
15196
15197 function calcW () { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) }
15198 function loop (w, f) {
15199 W[j] = w
15200
15201 var t = rol(a, 5) + f + e + w + k
15202
15203 e = d
15204 d = c
15205 c = rol(b, 30)
15206 b = a
15207 a = t
15208 j++
15209 }
15210
15211 k = 1518500249
15212 while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d))
15213 while (j < 20) loop(calcW(), (b & c) | ((~b) & d))
15214 k = 1859775393
15215 while (j < 40) loop(calcW(), b ^ c ^ d)
15216 k = -1894007588
15217 while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d))
15218 k = -899497514
15219 while (j < 80) loop(calcW(), b ^ c ^ d)
15220
15221 this._a = (a + this._a) | 0
15222 this._b = (b + this._b) | 0
15223 this._c = (c + this._c) | 0
15224 this._d = (d + this._d) | 0
15225 this._e = (e + this._e) | 0
15226 }
15227
15228 Sha1.prototype._hash = function () {
15229 var H = new Buffer(20)
15230
15231 H.writeInt32BE(this._a | 0, 0)
15232 H.writeInt32BE(this._b | 0, 4)
15233 H.writeInt32BE(this._c | 0, 8)
15234 H.writeInt32BE(this._d | 0, 12)
15235 H.writeInt32BE(this._e | 0, 16)
15236
15237 return H
15238 }
15239
15240 module.exports = Sha1
15241
15242 }).call(this,require("buffer").Buffer)
15243 },{"./hash":37,"buffer":7,"inherits":35}],41:[function(require,module,exports){
15244 (function (Buffer){
15245 /**
15246 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
15247 * in FIPS 180-2
15248 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
15249 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15250 *
15251 */
15252
15253 var inherits = require('inherits')
15254 var Sha256 = require('./sha256')
15255 var Hash = require('./hash')
15256
15257 var W = new Array(64)
15258
15259 function Sha224 () {
15260 this.init()
15261
15262 this._w = W // new Array(64)
15263
15264 Hash.call(this, 64, 56)
15265 }
15266
15267 inherits(Sha224, Sha256)
15268
15269 Sha224.prototype.init = function () {
15270 this._a = 0xc1059ed8 | 0
15271 this._b = 0x367cd507 | 0
15272 this._c = 0x3070dd17 | 0
15273 this._d = 0xf70e5939 | 0
15274 this._e = 0xffc00b31 | 0
15275 this._f = 0x68581511 | 0
15276 this._g = 0x64f98fa7 | 0
15277 this._h = 0xbefa4fa4 | 0
15278
15279 return this
15280 }
15281
15282 Sha224.prototype._hash = function () {
15283 var H = new Buffer(28)
15284
15285 H.writeInt32BE(this._a, 0)
15286 H.writeInt32BE(this._b, 4)
15287 H.writeInt32BE(this._c, 8)
15288 H.writeInt32BE(this._d, 12)
15289 H.writeInt32BE(this._e, 16)
15290 H.writeInt32BE(this._f, 20)
15291 H.writeInt32BE(this._g, 24)
15292
15293 return H
15294 }
15295
15296 module.exports = Sha224
15297
15298 }).call(this,require("buffer").Buffer)
15299 },{"./hash":37,"./sha256":42,"buffer":7,"inherits":35}],42:[function(require,module,exports){
15300 (function (Buffer){
15301 /**
15302 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
15303 * in FIPS 180-2
15304 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
15305 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15306 *
15307 */
15308
15309 var inherits = require('inherits')
15310 var Hash = require('./hash')
15311
15312 var K = [
15313 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
15314 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
15315 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
15316 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
15317 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
15318 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
15319 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
15320 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
15321 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
15322 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
15323 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
15324 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
15325 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
15326 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
15327 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
15328 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
15329 ]
15330
15331 var W = new Array(64)
15332
15333 function Sha256 () {
15334 this.init()
15335
15336 this._w = W // new Array(64)
15337
15338 Hash.call(this, 64, 56)
15339 }
15340
15341 inherits(Sha256, Hash)
15342
15343 Sha256.prototype.init = function () {
15344 this._a = 0x6a09e667 | 0
15345 this._b = 0xbb67ae85 | 0
15346 this._c = 0x3c6ef372 | 0
15347 this._d = 0xa54ff53a | 0
15348 this._e = 0x510e527f | 0
15349 this._f = 0x9b05688c | 0
15350 this._g = 0x1f83d9ab | 0
15351 this._h = 0x5be0cd19 | 0
15352
15353 return this
15354 }
15355
15356 function S (X, n) {
15357 return (X >>> n) | (X << (32 - n))
15358 }
15359
15360 function R (X, n) {
15361 return (X >>> n)
15362 }
15363
15364 function Ch (x, y, z) {
15365 return ((x & y) ^ ((~x) & z))
15366 }
15367
15368 function Maj (x, y, z) {
15369 return ((x & y) ^ (x & z) ^ (y & z))
15370 }
15371
15372 function Sigma0256 (x) {
15373 return (S(x, 2) ^ S(x, 13) ^ S(x, 22))
15374 }
15375
15376 function Sigma1256 (x) {
15377 return (S(x, 6) ^ S(x, 11) ^ S(x, 25))
15378 }
15379
15380 function Gamma0256 (x) {
15381 return (S(x, 7) ^ S(x, 18) ^ R(x, 3))
15382 }
15383
15384 function Gamma1256 (x) {
15385 return (S(x, 17) ^ S(x, 19) ^ R(x, 10))
15386 }
15387
15388 Sha256.prototype._update = function (M) {
15389 var W = this._w
15390
15391 var a = this._a | 0
15392 var b = this._b | 0
15393 var c = this._c | 0
15394 var d = this._d | 0
15395 var e = this._e | 0
15396 var f = this._f | 0
15397 var g = this._g | 0
15398 var h = this._h | 0
15399
15400 var j = 0
15401
15402 function calcW () { return Gamma1256(W[j - 2]) + W[j - 7] + Gamma0256(W[j - 15]) + W[j - 16] }
15403 function loop (w) {
15404 W[j] = w
15405
15406 var T1 = h + Sigma1256(e) + Ch(e, f, g) + K[j] + w
15407 var T2 = Sigma0256(a) + Maj(a, b, c)
15408
15409 h = g
15410 g = f
15411 f = e
15412 e = d + T1
15413 d = c
15414 c = b
15415 b = a
15416 a = T1 + T2
15417
15418 j++
15419 }
15420
15421 while (j < 16) loop(M.readInt32BE(j * 4))
15422 while (j < 64) loop(calcW())
15423
15424 this._a = (a + this._a) | 0
15425 this._b = (b + this._b) | 0
15426 this._c = (c + this._c) | 0
15427 this._d = (d + this._d) | 0
15428 this._e = (e + this._e) | 0
15429 this._f = (f + this._f) | 0
15430 this._g = (g + this._g) | 0
15431 this._h = (h + this._h) | 0
15432 }
15433
15434 Sha256.prototype._hash = function () {
15435 var H = new Buffer(32)
15436
15437 H.writeInt32BE(this._a, 0)
15438 H.writeInt32BE(this._b, 4)
15439 H.writeInt32BE(this._c, 8)
15440 H.writeInt32BE(this._d, 12)
15441 H.writeInt32BE(this._e, 16)
15442 H.writeInt32BE(this._f, 20)
15443 H.writeInt32BE(this._g, 24)
15444 H.writeInt32BE(this._h, 28)
15445
15446 return H
15447 }
15448
15449 module.exports = Sha256
15450
15451 }).call(this,require("buffer").Buffer)
15452 },{"./hash":37,"buffer":7,"inherits":35}],43:[function(require,module,exports){
15453 (function (Buffer){
15454 var inherits = require('inherits')
15455 var SHA512 = require('./sha512')
15456 var Hash = require('./hash')
15457
15458 var W = new Array(160)
15459
15460 function Sha384 () {
15461 this.init()
15462 this._w = W
15463
15464 Hash.call(this, 128, 112)
15465 }
15466
15467 inherits(Sha384, SHA512)
15468
15469 Sha384.prototype.init = function () {
15470 this._a = 0xcbbb9d5d | 0
15471 this._b = 0x629a292a | 0
15472 this._c = 0x9159015a | 0
15473 this._d = 0x152fecd8 | 0
15474 this._e = 0x67332667 | 0
15475 this._f = 0x8eb44a87 | 0
15476 this._g = 0xdb0c2e0d | 0
15477 this._h = 0x47b5481d | 0
15478
15479 this._al = 0xc1059ed8 | 0
15480 this._bl = 0x367cd507 | 0
15481 this._cl = 0x3070dd17 | 0
15482 this._dl = 0xf70e5939 | 0
15483 this._el = 0xffc00b31 | 0
15484 this._fl = 0x68581511 | 0
15485 this._gl = 0x64f98fa7 | 0
15486 this._hl = 0xbefa4fa4 | 0
15487
15488 return this
15489 }
15490
15491 Sha384.prototype._hash = function () {
15492 var H = new Buffer(48)
15493
15494 function writeInt64BE (h, l, offset) {
15495 H.writeInt32BE(h, offset)
15496 H.writeInt32BE(l, offset + 4)
15497 }
15498
15499 writeInt64BE(this._a, this._al, 0)
15500 writeInt64BE(this._b, this._bl, 8)
15501 writeInt64BE(this._c, this._cl, 16)
15502 writeInt64BE(this._d, this._dl, 24)
15503 writeInt64BE(this._e, this._el, 32)
15504 writeInt64BE(this._f, this._fl, 40)
15505
15506 return H
15507 }
15508
15509 module.exports = Sha384
15510
15511 }).call(this,require("buffer").Buffer)
15512 },{"./hash":37,"./sha512":44,"buffer":7,"inherits":35}],44:[function(require,module,exports){
15513 (function (Buffer){
15514 var inherits = require('inherits')
15515 var Hash = require('./hash')
15516
15517 var K = [
15518 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
15519 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
15520 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
15521 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
15522 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
15523 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
15524 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
15525 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
15526 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
15527 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
15528 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
15529 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
15530 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
15531 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
15532 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
15533 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
15534 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
15535 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
15536 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
15537 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
15538 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
15539 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
15540 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
15541 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
15542 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
15543 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
15544 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
15545 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
15546 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
15547 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
15548 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
15549 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
15550 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
15551 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
15552 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
15553 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
15554 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
15555 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
15556 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
15557 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
15558 ]
15559
15560 var W = new Array(160)
15561
15562 function Sha512 () {
15563 this.init()
15564 this._w = W
15565
15566 Hash.call(this, 128, 112)
15567 }
15568
15569 inherits(Sha512, Hash)
15570
15571 Sha512.prototype.init = function () {
15572 this._a = 0x6a09e667 | 0
15573 this._b = 0xbb67ae85 | 0
15574 this._c = 0x3c6ef372 | 0
15575 this._d = 0xa54ff53a | 0
15576 this._e = 0x510e527f | 0
15577 this._f = 0x9b05688c | 0
15578 this._g = 0x1f83d9ab | 0
15579 this._h = 0x5be0cd19 | 0
15580
15581 this._al = 0xf3bcc908 | 0
15582 this._bl = 0x84caa73b | 0
15583 this._cl = 0xfe94f82b | 0
15584 this._dl = 0x5f1d36f1 | 0
15585 this._el = 0xade682d1 | 0
15586 this._fl = 0x2b3e6c1f | 0
15587 this._gl = 0xfb41bd6b | 0
15588 this._hl = 0x137e2179 | 0
15589
15590 return this
15591 }
15592
15593 function S (X, Xl, n) {
15594 return (X >>> n) | (Xl << (32 - n))
15595 }
15596
15597 function Ch (x, y, z) {
15598 return ((x & y) ^ ((~x) & z))
15599 }
15600
15601 function Maj (x, y, z) {
15602 return ((x & y) ^ (x & z) ^ (y & z))
15603 }
15604
15605 Sha512.prototype._update = function (M) {
15606 var W = this._w
15607
15608 var a = this._a | 0
15609 var b = this._b | 0
15610 var c = this._c | 0
15611 var d = this._d | 0
15612 var e = this._e | 0
15613 var f = this._f | 0
15614 var g = this._g | 0
15615 var h = this._h | 0
15616
15617 var al = this._al | 0
15618 var bl = this._bl | 0
15619 var cl = this._cl | 0
15620 var dl = this._dl | 0
15621 var el = this._el | 0
15622 var fl = this._fl | 0
15623 var gl = this._gl | 0
15624 var hl = this._hl | 0
15625
15626 var i = 0, j = 0
15627 var Wi, Wil
15628 function calcW () {
15629 var x = W[j - 15 * 2]
15630 var xl = W[j - 15 * 2 + 1]
15631 var gamma0 = S(x, xl, 1) ^ S(x, xl, 8) ^ (x >>> 7)
15632 var gamma0l = S(xl, x, 1) ^ S(xl, x, 8) ^ S(xl, x, 7)
15633
15634 x = W[j - 2 * 2]
15635 xl = W[j - 2 * 2 + 1]
15636 var gamma1 = S(x, xl, 19) ^ S(xl, x, 29) ^ (x >>> 6)
15637 var gamma1l = S(xl, x, 19) ^ S(x, xl, 29) ^ S(xl, x, 6)
15638
15639 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
15640 var Wi7 = W[j - 7 * 2]
15641 var Wi7l = W[j - 7 * 2 + 1]
15642
15643 var Wi16 = W[j - 16 * 2]
15644 var Wi16l = W[j - 16 * 2 + 1]
15645
15646 Wil = gamma0l + Wi7l
15647 Wi = gamma0 + Wi7 + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0)
15648 Wil = Wil + gamma1l
15649 Wi = Wi + gamma1 + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0)
15650 Wil = Wil + Wi16l
15651 Wi = Wi + Wi16 + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0)
15652 }
15653
15654 function loop () {
15655 W[j] = Wi
15656 W[j + 1] = Wil
15657
15658 var maj = Maj(a, b, c)
15659 var majl = Maj(al, bl, cl)
15660
15661 var sigma0h = S(a, al, 28) ^ S(al, a, 2) ^ S(al, a, 7)
15662 var sigma0l = S(al, a, 28) ^ S(a, al, 2) ^ S(a, al, 7)
15663 var sigma1h = S(e, el, 14) ^ S(e, el, 18) ^ S(el, e, 9)
15664 var sigma1l = S(el, e, 14) ^ S(el, e, 18) ^ S(e, el, 9)
15665
15666 // t1 = h + sigma1 + ch + K[i] + W[i]
15667 var Ki = K[j]
15668 var Kil = K[j + 1]
15669
15670 var ch = Ch(e, f, g)
15671 var chl = Ch(el, fl, gl)
15672
15673 var t1l = hl + sigma1l
15674 var t1 = h + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0)
15675 t1l = t1l + chl
15676 t1 = t1 + ch + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0)
15677 t1l = t1l + Kil
15678 t1 = t1 + Ki + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0)
15679 t1l = t1l + Wil
15680 t1 = t1 + Wi + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0)
15681
15682 // t2 = sigma0 + maj
15683 var t2l = sigma0l + majl
15684 var t2 = sigma0h + maj + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0)
15685
15686 h = g
15687 hl = gl
15688 g = f
15689 gl = fl
15690 f = e
15691 fl = el
15692 el = (dl + t1l) | 0
15693 e = (d + t1 + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0
15694 d = c
15695 dl = cl
15696 c = b
15697 cl = bl
15698 b = a
15699 bl = al
15700 al = (t1l + t2l) | 0
15701 a = (t1 + t2 + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0
15702
15703 i++
15704 j += 2
15705 }
15706
15707 while (i < 16) {
15708 Wi = M.readInt32BE(j * 4)
15709 Wil = M.readInt32BE(j * 4 + 4)
15710
15711 loop()
15712 }
15713
15714 while (i < 80) {
15715 calcW()
15716 loop()
15717 }
15718
15719 this._al = (this._al + al) | 0
15720 this._bl = (this._bl + bl) | 0
15721 this._cl = (this._cl + cl) | 0
15722 this._dl = (this._dl + dl) | 0
15723 this._el = (this._el + el) | 0
15724 this._fl = (this._fl + fl) | 0
15725 this._gl = (this._gl + gl) | 0
15726 this._hl = (this._hl + hl) | 0
15727
15728 this._a = (this._a + a + ((this._al >>> 0) < (al >>> 0) ? 1 : 0)) | 0
15729 this._b = (this._b + b + ((this._bl >>> 0) < (bl >>> 0) ? 1 : 0)) | 0
15730 this._c = (this._c + c + ((this._cl >>> 0) < (cl >>> 0) ? 1 : 0)) | 0
15731 this._d = (this._d + d + ((this._dl >>> 0) < (dl >>> 0) ? 1 : 0)) | 0
15732 this._e = (this._e + e + ((this._el >>> 0) < (el >>> 0) ? 1 : 0)) | 0
15733 this._f = (this._f + f + ((this._fl >>> 0) < (fl >>> 0) ? 1 : 0)) | 0
15734 this._g = (this._g + g + ((this._gl >>> 0) < (gl >>> 0) ? 1 : 0)) | 0
15735 this._h = (this._h + h + ((this._hl >>> 0) < (hl >>> 0) ? 1 : 0)) | 0
15736 }
15737
15738 Sha512.prototype._hash = function () {
15739 var H = new Buffer(64)
15740
15741 function writeInt64BE (h, l, offset) {
15742 H.writeInt32BE(h, offset)
15743 H.writeInt32BE(l, offset + 4)
15744 }
15745
15746 writeInt64BE(this._a, this._al, 0)
15747 writeInt64BE(this._b, this._bl, 8)
15748 writeInt64BE(this._c, this._cl, 16)
15749 writeInt64BE(this._d, this._dl, 24)
15750 writeInt64BE(this._e, this._el, 32)
15751 writeInt64BE(this._f, this._fl, 40)
15752 writeInt64BE(this._g, this._gl, 48)
15753 writeInt64BE(this._h, this._hl, 56)
15754
15755 return H
15756 }
15757
15758 module.exports = Sha512
15759
15760 }).call(this,require("buffer").Buffer)
15761 },{"./hash":37,"buffer":7,"inherits":35}],45:[function(require,module,exports){
15762 (function (Buffer){
15763 'use strict';
15764 var createHash = require('create-hash/browser');
15765 var inherits = require('inherits')
15766
15767 var Transform = require('stream').Transform
15768
15769 var ZEROS = new Buffer(128)
15770 ZEROS.fill(0)
15771
15772 function Hmac(alg, key) {
15773 Transform.call(this)
15774
15775 if (typeof key === 'string') {
15776 key = new Buffer(key)
15777 }
15778
15779 var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
15780
15781 this._alg = alg
15782 this._key = key
15783
15784 if (key.length > blocksize) {
15785 key = createHash(alg).update(key).digest()
15786
15787 } else if (key.length < blocksize) {
15788 key = Buffer.concat([key, ZEROS], blocksize)
15789 }
15790
15791 var ipad = this._ipad = new Buffer(blocksize)
15792 var opad = this._opad = new Buffer(blocksize)
15793
15794 for (var i = 0; i < blocksize; i++) {
15795 ipad[i] = key[i] ^ 0x36
15796 opad[i] = key[i] ^ 0x5C
15797 }
15798
15799 this._hash = createHash(alg).update(ipad)
15800 }
15801
15802 inherits(Hmac, Transform)
15803
15804 Hmac.prototype.update = function (data, enc) {
15805 this._hash.update(data, enc)
15806
15807 return this
15808 }
15809
15810 Hmac.prototype._transform = function (data, _, next) {
15811 this._hash.update(data)
15812
15813 next()
15814 }
15815
15816 Hmac.prototype._flush = function (next) {
15817 this.push(this.digest())
15818
15819 next()
15820 }
15821
15822 Hmac.prototype.digest = function (enc) {
15823 var h = this._hash.digest()
15824
15825 return createHash(this._alg).update(this._opad).update(h).digest(enc)
15826 }
15827
15828 module.exports = function createHmac(alg, key) {
15829 return new Hmac(alg, key)
15830 }
15831
15832 }).call(this,require("buffer").Buffer)
15833 },{"buffer":7,"create-hash/browser":32,"inherits":46,"stream":26}],46:[function(require,module,exports){
15834 arguments[4][12][0].apply(exports,arguments)
15835 },{"dup":12}],47:[function(require,module,exports){
15836 var assert = require('assert')
15837 var BigInteger = require('bigi')
15838
15839 var Point = require('./point')
15840
15841 function Curve(p, a, b, Gx, Gy, n, h) {
15842 this.p = p
15843 this.a = a
15844 this.b = b
15845 this.G = Point.fromAffine(this, Gx, Gy)
15846 this.n = n
15847 this.h = h
15848
15849 this.infinity = new Point(this, null, null, BigInteger.ZERO)
15850
15851 // result caching
15852 this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)
15853 }
15854
15855 Curve.prototype.pointFromX = function(isOdd, x) {
15856 var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)
15857 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
15858
15859 var y = beta
15860 if (beta.isEven() ^ !isOdd) {
15861 y = this.p.subtract(y) // -y % p
15862 }
15863
15864 return Point.fromAffine(this, x, y)
15865 }
15866
15867 Curve.prototype.isInfinity = function(Q) {
15868 if (Q === this.infinity) return true
15869
15870 return Q.z.signum() === 0 && Q.y.signum() !== 0
15871 }
15872
15873 Curve.prototype.isOnCurve = function(Q) {
15874 if (this.isInfinity(Q)) return true
15875
15876 var x = Q.affineX
15877 var y = Q.affineY
15878 var a = this.a
15879 var b = this.b
15880 var p = this.p
15881
15882 // Check that xQ and yQ are integers in the interval [0, p - 1]
15883 if (x.signum() < 0 || x.compareTo(p) >= 0) return false
15884 if (y.signum() < 0 || y.compareTo(p) >= 0) return false
15885
15886 // and check that y^2 = x^3 + ax + b (mod p)
15887 var lhs = y.square().mod(p)
15888 var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)
15889 return lhs.equals(rhs)
15890 }
15891
15892 /**
15893 * Validate an elliptic curve point.
15894 *
15895 * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive
15896 */
15897 Curve.prototype.validate = function(Q) {
15898 // Check Q != O
15899 assert(!this.isInfinity(Q), 'Point is at infinity')
15900 assert(this.isOnCurve(Q), 'Point is not on the curve')
15901
15902 // Check nQ = O (where Q is a scalar multiple of G)
15903 var nQ = Q.multiply(this.n)
15904 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
15905
15906 return true
15907 }
15908
15909 module.exports = Curve
15910
15911 },{"./point":51,"assert":5,"bigi":3}],48:[function(require,module,exports){
15912 module.exports={
15913 "secp128r1": {
15914 "p": "fffffffdffffffffffffffffffffffff",
15915 "a": "fffffffdfffffffffffffffffffffffc",
15916 "b": "e87579c11079f43dd824993c2cee5ed3",
15917 "n": "fffffffe0000000075a30d1b9038a115",
15918 "h": "01",
15919 "Gx": "161ff7528b899b2d0c28607ca52c5b86",
15920 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
15921 },
15922 "secp160k1": {
15923 "p": "fffffffffffffffffffffffffffffffeffffac73",
15924 "a": "00",
15925 "b": "07",
15926 "n": "0100000000000000000001b8fa16dfab9aca16b6b3",
15927 "h": "01",
15928 "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
15929 "Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
15930 },
15931 "secp160r1": {
15932 "p": "ffffffffffffffffffffffffffffffff7fffffff",
15933 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
15934 "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
15935 "n": "0100000000000000000001f4c8f927aed3ca752257",
15936 "h": "01",
15937 "Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
15938 "Gy": "23a628553168947d59dcc912042351377ac5fb32"
15939 },
15940 "secp192k1": {
15941 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
15942 "a": "00",
15943 "b": "03",
15944 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
15945 "h": "01",
15946 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
15947 "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
15948 },
15949 "secp192r1": {
15950 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
15951 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
15952 "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
15953 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
15954 "h": "01",
15955 "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
15956 "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
15957 },
15958 "secp256k1": {
15959 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
15960 "a": "00",
15961 "b": "07",
15962 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
15963 "h": "01",
15964 "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
15965 "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
15966 },
15967 "secp256r1": {
15968 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
15969 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
15970 "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
15971 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
15972 "h": "01",
15973 "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
15974 "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
15975 }
15976 }
15977
15978 },{}],49:[function(require,module,exports){
15979 var Point = require('./point')
15980 var Curve = require('./curve')
15981
15982 var getCurveByName = require('./names')
15983
15984 module.exports = {
15985 Curve: Curve,
15986 Point: Point,
15987 getCurveByName: getCurveByName
15988 }
15989
15990 },{"./curve":47,"./names":50,"./point":51}],50:[function(require,module,exports){
15991 var BigInteger = require('bigi')
15992
15993 var curves = require('./curves')
15994 var Curve = require('./curve')
15995
15996 function getCurveByName(name) {
15997 var curve = curves[name]
15998 if (!curve) return null
15999
16000 var p = new BigInteger(curve.p, 16)
16001 var a = new BigInteger(curve.a, 16)
16002 var b = new BigInteger(curve.b, 16)
16003 var n = new BigInteger(curve.n, 16)
16004 var h = new BigInteger(curve.h, 16)
16005 var Gx = new BigInteger(curve.Gx, 16)
16006 var Gy = new BigInteger(curve.Gy, 16)
16007
16008 return new Curve(p, a, b, Gx, Gy, n, h)
16009 }
16010
16011 module.exports = getCurveByName
16012
16013 },{"./curve":47,"./curves":48,"bigi":3}],51:[function(require,module,exports){
16014 (function (Buffer){
16015 var assert = require('assert')
16016 var BigInteger = require('bigi')
16017
16018 var THREE = BigInteger.valueOf(3)
16019
16020 function Point(curve, x, y, z) {
16021 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
16022
16023 this.curve = curve
16024 this.x = x
16025 this.y = y
16026 this.z = z
16027 this._zInv = null
16028
16029 this.compressed = true
16030 }
16031
16032 Object.defineProperty(Point.prototype, 'zInv', {
16033 get: function() {
16034 if (this._zInv === null) {
16035 this._zInv = this.z.modInverse(this.curve.p)
16036 }
16037
16038 return this._zInv
16039 }
16040 })
16041
16042 Object.defineProperty(Point.prototype, 'affineX', {
16043 get: function() {
16044 return this.x.multiply(this.zInv).mod(this.curve.p)
16045 }
16046 })
16047
16048 Object.defineProperty(Point.prototype, 'affineY', {
16049 get: function() {
16050 return this.y.multiply(this.zInv).mod(this.curve.p)
16051 }
16052 })
16053
16054 Point.fromAffine = function(curve, x, y) {
16055 return new Point(curve, x, y, BigInteger.ONE)
16056 }
16057
16058 Point.prototype.equals = function(other) {
16059 if (other === this) return true
16060 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
16061 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
16062
16063 // u = Y2 * Z1 - Y1 * Z2
16064 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
16065
16066 if (u.signum() !== 0) return false
16067
16068 // v = X2 * Z1 - X1 * Z2
16069 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
16070
16071 return v.signum() === 0
16072 }
16073
16074 Point.prototype.negate = function() {
16075 var y = this.curve.p.subtract(this.y)
16076
16077 return new Point(this.curve, this.x, y, this.z)
16078 }
16079
16080 Point.prototype.add = function(b) {
16081 if (this.curve.isInfinity(this)) return b
16082 if (this.curve.isInfinity(b)) return this
16083
16084 var x1 = this.x
16085 var y1 = this.y
16086 var x2 = b.x
16087 var y2 = b.y
16088
16089 // u = Y2 * Z1 - Y1 * Z2
16090 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
16091 // v = X2 * Z1 - X1 * Z2
16092 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
16093
16094 if (v.signum() === 0) {
16095 if (u.signum() === 0) {
16096 return this.twice() // this == b, so double
16097 }
16098
16099 return this.curve.infinity // this = -b, so infinity
16100 }
16101
16102 var v2 = v.square()
16103 var v3 = v2.multiply(v)
16104 var x1v2 = x1.multiply(v2)
16105 var zu2 = u.square().multiply(this.z)
16106
16107 // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
16108 var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
16109 // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
16110 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)
16111 // z3 = v^3 * z1 * z2
16112 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
16113
16114 return new Point(this.curve, x3, y3, z3)
16115 }
16116
16117 Point.prototype.twice = function() {
16118 if (this.curve.isInfinity(this)) return this
16119 if (this.y.signum() === 0) return this.curve.infinity
16120
16121 var x1 = this.x
16122 var y1 = this.y
16123
16124 var y1z1 = y1.multiply(this.z)
16125 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
16126 var a = this.curve.a
16127
16128 // w = 3 * x1^2 + a * z1^2
16129 var w = x1.square().multiply(THREE)
16130
16131 if (a.signum() !== 0) {
16132 w = w.add(this.z.square().multiply(a))
16133 }
16134
16135 w = w.mod(this.curve.p)
16136 // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
16137 var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)
16138 // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
16139 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)
16140 // z3 = 8 * (y1 * z1)^3
16141 var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)
16142
16143 return new Point(this.curve, x3, y3, z3)
16144 }
16145
16146 // Simple NAF (Non-Adjacent Form) multiplication algorithm
16147 // TODO: modularize the multiplication algorithm
16148 Point.prototype.multiply = function(k) {
16149 if (this.curve.isInfinity(this)) return this
16150 if (k.signum() === 0) return this.curve.infinity
16151
16152 var e = k
16153 var h = e.multiply(THREE)
16154
16155 var neg = this.negate()
16156 var R = this
16157
16158 for (var i = h.bitLength() - 2; i > 0; --i) {
16159 R = R.twice()
16160
16161 var hBit = h.testBit(i)
16162 var eBit = e.testBit(i)
16163
16164 if (hBit != eBit) {
16165 R = R.add(hBit ? this : neg)
16166 }
16167 }
16168
16169 return R
16170 }
16171
16172 // Compute this*j + x*k (simultaneous multiplication)
16173 Point.prototype.multiplyTwo = function(j, x, k) {
16174 var i
16175
16176 if (j.bitLength() > k.bitLength())
16177 i = j.bitLength() - 1
16178 else
16179 i = k.bitLength() - 1
16180
16181 var R = this.curve.infinity
16182 var both = this.add(x)
16183
16184 while (i >= 0) {
16185 R = R.twice()
16186
16187 var jBit = j.testBit(i)
16188 var kBit = k.testBit(i)
16189
16190 if (jBit) {
16191 if (kBit) {
16192 R = R.add(both)
16193
16194 } else {
16195 R = R.add(this)
16196 }
16197
16198 } else {
16199 if (kBit) {
16200 R = R.add(x)
16201 }
16202 }
16203 --i
16204 }
16205
16206 return R
16207 }
16208
16209 Point.prototype.getEncoded = function(compressed) {
16210 if (compressed == undefined) compressed = this.compressed
16211 if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'
16212
16213 var x = this.affineX
16214 var y = this.affineY
16215
16216 var buffer
16217
16218 // Determine size of q in bytes
16219 var byteLength = Math.floor((this.curve.p.bitLength() + 7) / 8)
16220
16221 // 0x02/0x03 | X
16222 if (compressed) {
16223 buffer = new Buffer(1 + byteLength)
16224 buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)
16225
16226 // 0x04 | X | Y
16227 } else {
16228 buffer = new Buffer(1 + byteLength + byteLength)
16229 buffer.writeUInt8(0x04, 0)
16230
16231 y.toBuffer(byteLength).copy(buffer, 1 + byteLength)
16232 }
16233
16234 x.toBuffer(byteLength).copy(buffer, 1)
16235
16236 return buffer
16237 }
16238
16239 Point.decodeFrom = function(curve, buffer) {
16240 var type = buffer.readUInt8(0)
16241 var compressed = (type !== 4)
16242
16243 var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)
16244 var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))
16245
16246 var Q
16247 if (compressed) {
16248 assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')
16249 assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
16250
16251 var isOdd = (type === 0x03)
16252 Q = curve.pointFromX(isOdd, x)
16253
16254 } else {
16255 assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')
16256
16257 var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))
16258 Q = Point.fromAffine(curve, x, y)
16259 }
16260
16261 Q.compressed = compressed
16262 return Q
16263 }
16264
16265 Point.prototype.toString = function () {
16266 if (this.curve.isInfinity(this)) return '(INFINITY)'
16267
16268 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
16269 }
16270
16271 module.exports = Point
16272
16273 }).call(this,require("buffer").Buffer)
16274 },{"assert":5,"bigi":3,"buffer":7}],52:[function(require,module,exports){
16275 (function (process,global,Buffer){
16276 'use strict';
16277
16278 var crypto = global.crypto || global.msCrypto
16279 if(crypto && crypto.getRandomValues) {
16280 module.exports = randomBytes;
16281 } else {
16282 module.exports = oldBrowser;
16283 }
16284 function randomBytes(size, cb) {
16285 var bytes = new Buffer(size); //in browserify, this is an extended Uint8Array
16286 /* This will not work in older browsers.
16287 * See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
16288 */
16289
16290 crypto.getRandomValues(bytes);
16291 if (typeof cb === 'function') {
16292 return process.nextTick(function () {
16293 cb(null, bytes);
16294 });
16295 }
16296 return bytes;
16297 }
16298 function oldBrowser() {
16299 throw new Error(
16300 'secure random number generation not supported by this browser\n'+
16301 'use chrome, FireFox or Internet Explorer 11'
16302 )
16303 }
16304
16305 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
16306 },{"_process":14,"buffer":7}],53:[function(require,module,exports){
16307 (function (Buffer){
16308 'use strict';
16309
16310 function getFunctionName(fn) {
16311 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1];
16312 }
16313
16314 function getTypeTypeName(type) {
16315 if (nativeTypes.Function(type)) {
16316 type = type.toJSON ? type.toJSON() : getFunctionName(type);
16317 }
16318 if (nativeTypes.Object(type)) return JSON.stringify(type);
16319
16320 return type;
16321 }
16322
16323 function getValueTypeName(value) {
16324 if (nativeTypes.Null(value)) return '';
16325
16326 return getFunctionName(value.constructor);
16327 }
16328
16329 function tfErrorString(type, value) {
16330 var typeTypeName = getTypeTypeName(type);
16331 var valueTypeName = getValueTypeName(value);
16332
16333 return 'Expected ' + typeTypeName + ', got ' + (valueTypeName && valueTypeName + ' ') + JSON.stringify(value);
16334 }
16335
16336 function tfPropertyErrorString(type, name, value) {
16337 return tfErrorString('property \"' + name + '\" of type ' + getTypeTypeName(type), value);
16338 }
16339
16340 var nativeTypes = {
16341 Array: (function (_Array) {
16342 function Array(_x) {
16343 return _Array.apply(this, arguments);
16344 }
16345
16346 Array.toString = function () {
16347 return _Array.toString();
16348 };
16349
16350 return Array;
16351 })(function (value) {
16352 return value !== null && value !== undefined && value.constructor === Array;
16353 }),
16354 Boolean: function Boolean(value) {
16355 return typeof value === 'boolean';
16356 },
16357 Buffer: (function (_Buffer) {
16358 function Buffer(_x2) {
16359 return _Buffer.apply(this, arguments);
16360 }
16361
16362 Buffer.toString = function () {
16363 return _Buffer.toString();
16364 };
16365
16366 return Buffer;
16367 })(function (value) {
16368 return Buffer.isBuffer(value);
16369 }),
16370 Function: function Function(value) {
16371 return typeof value === 'function';
16372 },
16373 Null: function Null(value) {
16374 return value === undefined || value === null;
16375 },
16376 Number: function Number(value) {
16377 return typeof value === 'number';
16378 },
16379 Object: function Object(value) {
16380 return typeof value === 'object';
16381 },
16382 String: function String(value) {
16383 return typeof value === 'string';
16384 },
16385 '': function _() {
16386 return true;
16387 }
16388 };
16389
16390 function tJSON(type) {
16391 return type && type.toJSON ? type.toJSON() : type;
16392 }
16393
16394 function sJSON(type) {
16395 var json = tJSON(type);
16396 return nativeTypes.Object(json) ? JSON.stringify(json) : json;
16397 }
16398
16399 var otherTypes = {
16400 arrayOf: function arrayOf(type) {
16401 function arrayOf(value, strict) {
16402 try {
16403 return nativeTypes.Array(value) && value.every(function (x) {
16404 return typeforce(type, x, strict);
16405 });
16406 } catch (e) {
16407 return false;
16408 }
16409 }
16410 arrayOf.toJSON = function () {
16411 return [tJSON(type)];
16412 };
16413
16414 return arrayOf;
16415 },
16416
16417 maybe: function maybe(type) {
16418 function maybe(value, strict) {
16419 return nativeTypes.Null(value) || typeforce(type, value, strict);
16420 }
16421 maybe.toJSON = function () {
16422 return '?' + sJSON(type);
16423 };
16424
16425 return maybe;
16426 },
16427
16428 object: function object(type) {
16429 function object(value, strict) {
16430 typeforce(nativeTypes.Object, value, strict);
16431
16432 var propertyName, propertyType, propertyValue;
16433
16434 try {
16435 for (propertyName in type) {
16436 propertyType = type[propertyName];
16437 propertyValue = value[propertyName];
16438
16439 typeforce(propertyType, propertyValue, strict);
16440 }
16441 } catch (e) {
16442 throw new TypeError(tfPropertyErrorString(propertyType, propertyName, propertyValue));
16443 }
16444
16445 if (strict) {
16446 for (propertyName in value) {
16447 if (type[propertyName]) continue;
16448
16449 throw new TypeError('Unexpected property "' + propertyName + '"');
16450 }
16451 }
16452
16453 return true;
16454 }
16455 object.toJSON = function () {
16456 return type;
16457 };
16458
16459 return object;
16460 },
16461
16462 oneOf: function oneOf() {
16463 for (var _len = arguments.length, types = Array(_len), _key = 0; _key < _len; _key++) {
16464 types[_key] = arguments[_key];
16465 }
16466
16467 function oneOf(value, strict) {
16468 return types.some(function (type) {
16469 try {
16470 return typeforce(type, value, strict);
16471 } catch (e) {
16472 return false;
16473 }
16474 });
16475 }
16476 oneOf.toJSON = function () {
16477 return types.map(sJSON).join('|');
16478 };
16479
16480 return oneOf;
16481 },
16482
16483 quacksLike: function quacksLike(type) {
16484 function quacksLike(value, strict) {
16485 return type === getValueTypeName(value);
16486 }
16487 quacksLike.toJSON = function () {
16488 return type;
16489 };
16490
16491 return quacksLike;
16492 },
16493
16494 tuple: function tuple() {
16495 for (var _len2 = arguments.length, types = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
16496 types[_key2] = arguments[_key2];
16497 }
16498
16499 function tuple(value, strict) {
16500 return types.every(function (type, i) {
16501 return typeforce(type, value[i], strict);
16502 });
16503 }
16504 tuple.toJSON = function () {
16505 return '(' + types.map(sJSON).join(', ') + ')';
16506 };
16507
16508 return tuple;
16509 },
16510
16511 value: function value(expected) {
16512 function value(actual) {
16513 return actual === expected;
16514 }
16515 value.toJSON = function () {
16516 return expected;
16517 };
16518
16519 return value;
16520 }
16521 };
16522
16523 function compile(type) {
16524 if (nativeTypes.String(type)) {
16525 if (type[0] === '?') return otherTypes.maybe(compile(type.slice(1)));
16526
16527 return nativeTypes[type] || otherTypes.quacksLike(type);
16528 } else if (type && nativeTypes.Object(type)) {
16529 if (nativeTypes.Array(type)) return otherTypes.arrayOf(compile(type[0]));
16530
16531 var compiled = {};
16532
16533 for (var propertyName in type) {
16534 compiled[propertyName] = compile(type[propertyName]);
16535 }
16536
16537 return otherTypes.object(compiled);
16538 } else if (nativeTypes.Function(type)) {
16539 return type;
16540 }
16541
16542 return otherTypes.value(type);
16543 }
16544
16545 function typeforce(_x3, _x4, _x5) {
16546 var _again = true;
16547
16548 _function: while (_again) {
16549 var type = _x3,
16550 value = _x4,
16551 strict = _x5;
16552 _again = false;
16553
16554 if (nativeTypes.Function(type)) {
16555 if (type(value, strict)) return true;
16556
16557 throw new TypeError(tfErrorString(type, value));
16558 }
16559
16560 // JIT
16561 _x3 = compile(type);
16562 _x4 = value;
16563 _x5 = strict;
16564 _again = true;
16565 continue _function;
16566 }
16567 }
16568
16569 // assign all types to typeforce function
16570 var typeName;
16571 Object.keys(nativeTypes).forEach(function (typeName) {
16572 var nativeType = nativeTypes[typeName];
16573 nativeType.toJSON = function () {
16574 return typeName;
16575 };
16576
16577 typeforce[typeName] = nativeType;
16578 });
16579
16580 for (typeName in otherTypes) {
16581 typeforce[typeName] = otherTypes[typeName];
16582 }
16583
16584 module.exports = typeforce;
16585 module.exports.compile = compile;
16586 }).call(this,require("buffer").Buffer)
16587 },{"buffer":7}],54:[function(require,module,exports){
16588 (function (Buffer){
16589 var assert = require('assert')
16590 var base58check = require('bs58check')
16591 var typeForce = require('typeforce')
16592 var networks = require('./networks')
16593 var scripts = require('./scripts')
16594
16595 function findScriptTypeByVersion (version) {
16596 for (var networkName in networks) {
16597 var network = networks[networkName]
16598
16599 if (version === network.pubKeyHash) return 'pubkeyhash'
16600 if (version === network.scriptHash) return 'scripthash'
16601 }
16602 }
16603
16604 function Address (hash, version) {
16605 typeForce('Buffer', hash)
16606
16607 assert.strictEqual(hash.length, 20, 'Invalid hash length')
16608 assert.strictEqual(version & 0xff, version, 'Invalid version byte')
16609
16610 this.hash = hash
16611 this.version = version
16612 }
16613
16614 Address.fromBase58Check = function (string) {
16615 var payload = base58check.decode(string)
16616 var version = payload.readUInt8(0)
16617 var hash = payload.slice(1)
16618
16619 return new Address(hash, version)
16620 }
16621
16622 Address.fromOutputScript = function (script, network) {
16623 network = network || networks.bitcoin
16624
16625 if (scripts.isPubKeyHashOutput(script)) return new Address(script.chunks[2], network.pubKeyHash)
16626 if (scripts.isScriptHashOutput(script)) return new Address(script.chunks[1], network.scriptHash)
16627
16628 assert(false, script.toASM() + ' has no matching Address')
16629 }
16630
16631 Address.prototype.toBase58Check = function () {
16632 var payload = new Buffer(21)
16633 payload.writeUInt8(this.version, 0)
16634 this.hash.copy(payload, 1)
16635
16636 return base58check.encode(payload)
16637 }
16638
16639 Address.prototype.toOutputScript = function () {
16640 var scriptType = findScriptTypeByVersion(this.version)
16641
16642 if (scriptType === 'pubkeyhash') return scripts.pubKeyHashOutput(this.hash)
16643 if (scriptType === 'scripthash') return scripts.scriptHashOutput(this.hash)
16644
16645 assert(false, this.toString() + ' has no matching Script')
16646 }
16647
16648 Address.prototype.toString = Address.prototype.toBase58Check
16649
16650 module.exports = Address
16651
16652 }).call(this,require("buffer").Buffer)
16653 },{"./networks":66,"./scripts":69,"assert":5,"bs58check":31,"buffer":7,"typeforce":53}],55:[function(require,module,exports){
16654 var bs58check = require('bs58check')
16655
16656 function decode () {
16657 console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.')
16658
16659 return bs58check.decode.apply(undefined, arguments)
16660 }
16661
16662 function encode () {
16663 console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.')
16664
16665 return bs58check.encode.apply(undefined, arguments)
16666 }
16667
16668 module.exports = {
16669 decode: decode,
16670 encode: encode
16671 }
16672
16673 },{"bs58check":31}],56:[function(require,module,exports){
16674 (function (Buffer){
16675 var assert = require('assert')
16676 var bufferutils = require('./bufferutils')
16677 var crypto = require('./crypto')
16678
16679 var Transaction = require('./transaction')
16680
16681 function Block () {
16682 this.version = 1
16683 this.prevHash = null
16684 this.merkleRoot = null
16685 this.timestamp = 0
16686 this.bits = 0
16687 this.nonce = 0
16688 }
16689
16690 Block.fromBuffer = function (buffer) {
16691 assert(buffer.length >= 80, 'Buffer too small (< 80 bytes)')
16692
16693 var offset = 0
16694 function readSlice (n) {
16695 offset += n
16696 return buffer.slice(offset - n, offset)
16697 }
16698
16699 function readUInt32 () {
16700 var i = buffer.readUInt32LE(offset)
16701 offset += 4
16702 return i
16703 }
16704
16705 var block = new Block()
16706 block.version = readUInt32()
16707 block.prevHash = readSlice(32)
16708 block.merkleRoot = readSlice(32)
16709 block.timestamp = readUInt32()
16710 block.bits = readUInt32()
16711 block.nonce = readUInt32()
16712
16713 if (buffer.length === 80) return block
16714
16715 function readVarInt () {
16716 var vi = bufferutils.readVarInt(buffer, offset)
16717 offset += vi.size
16718 return vi.number
16719 }
16720
16721 // FIXME: poor performance
16722 function readTransaction () {
16723 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
16724
16725 offset += tx.toBuffer().length
16726 return tx
16727 }
16728
16729 var nTransactions = readVarInt()
16730 block.transactions = []
16731
16732 for (var i = 0; i < nTransactions; ++i) {
16733 var tx = readTransaction()
16734 block.transactions.push(tx)
16735 }
16736
16737 return block
16738 }
16739
16740 Block.fromHex = function (hex) {
16741 return Block.fromBuffer(new Buffer(hex, 'hex'))
16742 }
16743
16744 Block.prototype.getHash = function () {
16745 return crypto.hash256(this.toBuffer(true))
16746 }
16747
16748 Block.prototype.getId = function () {
16749 return bufferutils.reverse(this.getHash()).toString('hex')
16750 }
16751
16752 Block.prototype.getUTCDate = function () {
16753 var date = new Date(0) // epoch
16754 date.setUTCSeconds(this.timestamp)
16755
16756 return date
16757 }
16758
16759 Block.prototype.toBuffer = function (headersOnly) {
16760 var buffer = new Buffer(80)
16761
16762 var offset = 0
16763 function writeSlice (slice) {
16764 slice.copy(buffer, offset)
16765 offset += slice.length
16766 }
16767
16768 function writeUInt32 (i) {
16769 buffer.writeUInt32LE(i, offset)
16770 offset += 4
16771 }
16772
16773 writeUInt32(this.version)
16774 writeSlice(this.prevHash)
16775 writeSlice(this.merkleRoot)
16776 writeUInt32(this.timestamp)
16777 writeUInt32(this.bits)
16778 writeUInt32(this.nonce)
16779
16780 if (headersOnly || !this.transactions) return buffer
16781
16782 var txLenBuffer = bufferutils.varIntBuffer(this.transactions.length)
16783 var txBuffers = this.transactions.map(function (tx) {
16784 return tx.toBuffer()
16785 })
16786
16787 return Buffer.concat([buffer, txLenBuffer].concat(txBuffers))
16788 }
16789
16790 Block.prototype.toHex = function (headersOnly) {
16791 return this.toBuffer(headersOnly).toString('hex')
16792 }
16793
16794 module.exports = Block
16795
16796 }).call(this,require("buffer").Buffer)
16797 },{"./bufferutils":57,"./crypto":58,"./transaction":70,"assert":5,"buffer":7}],57:[function(require,module,exports){
16798 (function (Buffer){
16799 var assert = require('assert')
16800 var opcodes = require('./opcodes')
16801
16802 // https://github.com/feross/buffer/blob/master/index.js#L1127
16803 function verifuint (value, max) {
16804 assert(typeof value === 'number', 'cannot write a non-number as a number')
16805 assert(value >= 0, 'specified a negative value for writing an unsigned value')
16806 assert(value <= max, 'value is larger than maximum value for type')
16807 assert(Math.floor(value) === value, 'value has a fractional component')
16808 }
16809
16810 function pushDataSize (i) {
16811 return i < opcodes.OP_PUSHDATA1 ? 1
16812 : i < 0xff ? 2
16813 : i < 0xffff ? 3
16814 : 5
16815 }
16816
16817 function readPushDataInt (buffer, offset) {
16818 var opcode = buffer.readUInt8(offset)
16819 var number, size
16820
16821 // ~6 bit
16822 if (opcode < opcodes.OP_PUSHDATA1) {
16823 number = opcode
16824 size = 1
16825
16826 // 8 bit
16827 } else if (opcode === opcodes.OP_PUSHDATA1) {
16828 if (offset + 2 > buffer.length) return null
16829 number = buffer.readUInt8(offset + 1)
16830 size = 2
16831
16832 // 16 bit
16833 } else if (opcode === opcodes.OP_PUSHDATA2) {
16834 if (offset + 3 > buffer.length) return null
16835 number = buffer.readUInt16LE(offset + 1)
16836 size = 3
16837
16838 // 32 bit
16839 } else {
16840 if (offset + 5 > buffer.length) return null
16841 assert.equal(opcode, opcodes.OP_PUSHDATA4, 'Unexpected opcode')
16842
16843 number = buffer.readUInt32LE(offset + 1)
16844 size = 5
16845 }
16846
16847 return {
16848 opcode: opcode,
16849 number: number,
16850 size: size
16851 }
16852 }
16853
16854 function readUInt64LE (buffer, offset) {
16855 var a = buffer.readUInt32LE(offset)
16856 var b = buffer.readUInt32LE(offset + 4)
16857 b *= 0x100000000
16858
16859 verifuint(b + a, 0x001fffffffffffff)
16860
16861 return b + a
16862 }
16863
16864 function readVarInt (buffer, offset) {
16865 var t = buffer.readUInt8(offset)
16866 var number, size
16867
16868 // 8 bit
16869 if (t < 253) {
16870 number = t
16871 size = 1
16872
16873 // 16 bit
16874 } else if (t < 254) {
16875 number = buffer.readUInt16LE(offset + 1)
16876 size = 3
16877
16878 // 32 bit
16879 } else if (t < 255) {
16880 number = buffer.readUInt32LE(offset + 1)
16881 size = 5
16882
16883 // 64 bit
16884 } else {
16885 number = readUInt64LE(buffer, offset + 1)
16886 size = 9
16887 }
16888
16889 return {
16890 number: number,
16891 size: size
16892 }
16893 }
16894
16895 function writePushDataInt (buffer, number, offset) {
16896 var size = pushDataSize(number)
16897
16898 // ~6 bit
16899 if (size === 1) {
16900 buffer.writeUInt8(number, offset)
16901
16902 // 8 bit
16903 } else if (size === 2) {
16904 buffer.writeUInt8(opcodes.OP_PUSHDATA1, offset)
16905 buffer.writeUInt8(number, offset + 1)
16906
16907 // 16 bit
16908 } else if (size === 3) {
16909 buffer.writeUInt8(opcodes.OP_PUSHDATA2, offset)
16910 buffer.writeUInt16LE(number, offset + 1)
16911
16912 // 32 bit
16913 } else {
16914 buffer.writeUInt8(opcodes.OP_PUSHDATA4, offset)
16915 buffer.writeUInt32LE(number, offset + 1)
16916 }
16917
16918 return size
16919 }
16920
16921 function writeUInt64LE (buffer, value, offset) {
16922 verifuint(value, 0x001fffffffffffff)
16923
16924 buffer.writeInt32LE(value & -1, offset)
16925 buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4)
16926 }
16927
16928 function varIntSize (i) {
16929 return i < 253 ? 1
16930 : i < 0x10000 ? 3
16931 : i < 0x100000000 ? 5
16932 : 9
16933 }
16934
16935 function writeVarInt (buffer, number, offset) {
16936 var size = varIntSize(number)
16937
16938 // 8 bit
16939 if (size === 1) {
16940 buffer.writeUInt8(number, offset)
16941
16942 // 16 bit
16943 } else if (size === 3) {
16944 buffer.writeUInt8(253, offset)
16945 buffer.writeUInt16LE(number, offset + 1)
16946
16947 // 32 bit
16948 } else if (size === 5) {
16949 buffer.writeUInt8(254, offset)
16950 buffer.writeUInt32LE(number, offset + 1)
16951
16952 // 64 bit
16953 } else {
16954 buffer.writeUInt8(255, offset)
16955 writeUInt64LE(buffer, number, offset + 1)
16956 }
16957
16958 return size
16959 }
16960
16961 function varIntBuffer (i) {
16962 var size = varIntSize(i)
16963 var buffer = new Buffer(size)
16964 writeVarInt(buffer, i, 0)
16965
16966 return buffer
16967 }
16968
16969 function reverse (buffer) {
16970 var buffer2 = new Buffer(buffer)
16971 Array.prototype.reverse.call(buffer2)
16972 return buffer2
16973 }
16974
16975 module.exports = {
16976 pushDataSize: pushDataSize,
16977 readPushDataInt: readPushDataInt,
16978 readUInt64LE: readUInt64LE,
16979 readVarInt: readVarInt,
16980 reverse: reverse,
16981 varIntBuffer: varIntBuffer,
16982 varIntSize: varIntSize,
16983 writePushDataInt: writePushDataInt,
16984 writeUInt64LE: writeUInt64LE,
16985 writeVarInt: writeVarInt
16986 }
16987
16988 }).call(this,require("buffer").Buffer)
16989 },{"./opcodes":67,"assert":5,"buffer":7}],58:[function(require,module,exports){
16990 var createHash = require('create-hash')
16991
16992 function hash160 (buffer) {
16993 return ripemd160(sha256(buffer))
16994 }
16995
16996 function hash256 (buffer) {
16997 return sha256(sha256(buffer))
16998 }
16999
17000 function ripemd160 (buffer) {
17001 return createHash('rmd160').update(buffer).digest()
17002 }
17003
17004 function sha1 (buffer) {
17005 return createHash('sha1').update(buffer).digest()
17006 }
17007
17008 function sha256 (buffer) {
17009 return createHash('sha256').update(buffer).digest()
17010 }
17011
17012 // FIXME: Name not consistent with others
17013 var createHmac = require('create-hmac')
17014
17015 function HmacSHA256 (buffer, secret) {
17016 console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead')
17017 return createHmac('sha256', secret).update(buffer).digest()
17018 }
17019
17020 function HmacSHA512 (buffer, secret) {
17021 console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead')
17022 return createHmac('sha512', secret).update(buffer).digest()
17023 }
17024
17025 module.exports = {
17026 ripemd160: ripemd160,
17027 sha1: sha1,
17028 sha256: sha256,
17029 hash160: hash160,
17030 hash256: hash256,
17031 HmacSHA256: HmacSHA256,
17032 HmacSHA512: HmacSHA512
17033 }
17034
17035 },{"create-hash":32,"create-hmac":45}],59:[function(require,module,exports){
17036 (function (Buffer){
17037 var assert = require('assert')
17038 var createHmac = require('create-hmac')
17039 var typeForce = require('typeforce')
17040
17041 var BigInteger = require('bigi')
17042 var ECSignature = require('./ecsignature')
17043
17044 var ZERO = new Buffer([0])
17045 var ONE = new Buffer([1])
17046
17047 // https://tools.ietf.org/html/rfc6979#section-3.2
17048 function deterministicGenerateK (curve, hash, d, checkSig) {
17049 typeForce('Buffer', hash)
17050 typeForce('BigInteger', d)
17051
17052 // FIXME: remove/uncomment for 2.0.0
17053 // typeForce('Function', checkSig)
17054
17055 if (typeof checkSig !== 'function') {
17056 console.warn('deterministicGenerateK requires a checkSig callback in 2.0.0, see #337 for more information')
17057
17058 checkSig = function (k) {
17059 var G = curve.G
17060 var n = curve.n
17061 var e = BigInteger.fromBuffer(hash)
17062
17063 var Q = G.multiply(k)
17064
17065 if (curve.isInfinity(Q))
17066 return false
17067
17068 var r = Q.affineX.mod(n)
17069 if (r.signum() === 0)
17070 return false
17071
17072 var s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
17073 if (s.signum() === 0)
17074 return false
17075
17076 return true
17077 }
17078 }
17079
17080 // sanity check
17081 assert.equal(hash.length, 32, 'Hash must be 256 bit')
17082
17083 var x = d.toBuffer(32)
17084 var k = new Buffer(32)
17085 var v = new Buffer(32)
17086
17087 // Step A, ignored as hash already provided
17088 // Step B
17089 v.fill(1)
17090
17091 // Step C
17092 k.fill(0)
17093
17094 // Step D
17095 k = createHmac('sha256', k)
17096 .update(v)
17097 .update(ZERO)
17098 .update(x)
17099 .update(hash)
17100 .digest()
17101
17102 // Step E
17103 v = createHmac('sha256', k).update(v).digest()
17104
17105 // Step F
17106 k = createHmac('sha256', k)
17107 .update(v)
17108 .update(ONE)
17109 .update(x)
17110 .update(hash)
17111 .digest()
17112
17113 // Step G
17114 v = createHmac('sha256', k).update(v).digest()
17115
17116 // Step H1/H2a, ignored as tlen === qlen (256 bit)
17117 // Step H2b
17118 v = createHmac('sha256', k).update(v).digest()
17119
17120 var T = BigInteger.fromBuffer(v)
17121
17122 // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA
17123 while ((T.signum() <= 0) || (T.compareTo(curve.n) >= 0) || !checkSig(T)) {
17124 k = createHmac('sha256', k)
17125 .update(v)
17126 .update(ZERO)
17127 .digest()
17128
17129 v = createHmac('sha256', k).update(v).digest()
17130
17131 // Step H1/H2a, again, ignored as tlen === qlen (256 bit)
17132 // Step H2b again
17133 v = createHmac('sha256', k).update(v).digest()
17134 T = BigInteger.fromBuffer(v)
17135 }
17136
17137 return T
17138 }
17139
17140 function sign (curve, hash, d) {
17141 var r, s
17142
17143 var e = BigInteger.fromBuffer(hash)
17144 var n = curve.n
17145 var G = curve.G
17146
17147 deterministicGenerateK(curve, hash, d, function (k) {
17148 var Q = G.multiply(k)
17149
17150 if (curve.isInfinity(Q))
17151 return false
17152
17153 r = Q.affineX.mod(n)
17154 if (r.signum() === 0)
17155 return false
17156
17157 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
17158 if (s.signum() === 0)
17159 return false
17160
17161 return true
17162 })
17163
17164 var N_OVER_TWO = n.shiftRight(1)
17165
17166 // enforce low S values, see bip62: 'low s values in signatures'
17167 if (s.compareTo(N_OVER_TWO) > 0) {
17168 s = n.subtract(s)
17169 }
17170
17171 return new ECSignature(r, s)
17172 }
17173
17174 function verifyRaw (curve, e, signature, Q) {
17175 var n = curve.n
17176 var G = curve.G
17177
17178 var r = signature.r
17179 var s = signature.s
17180
17181 // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]
17182 if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
17183 if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
17184
17185 // c = s^-1 mod n
17186 var c = s.modInverse(n)
17187
17188 // 1.4.4 Compute u1 = es^−1 mod n
17189 // u2 = rs^−1 mod n
17190 var u1 = e.multiply(c).mod(n)
17191 var u2 = r.multiply(c).mod(n)
17192
17193 // 1.4.5 Compute R = (xR, yR) = u1G + u2Q
17194 var R = G.multiplyTwo(u1, Q, u2)
17195 var v = R.affineX.mod(n)
17196
17197 // 1.4.5 (cont.) Enforce R is not at infinity
17198 if (curve.isInfinity(R)) return false
17199
17200 // 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
17201 return v.equals(r)
17202 }
17203
17204 function verify (curve, hash, signature, Q) {
17205 // 1.4.2 H = Hash(M), already done by the user
17206 // 1.4.3 e = H
17207 var e = BigInteger.fromBuffer(hash)
17208
17209 return verifyRaw(curve, e, signature, Q)
17210 }
17211
17212 /**
17213 * Recover a public key from a signature.
17214 *
17215 * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, "Public
17216 * Key Recovery Operation".
17217 *
17218 * http://www.secg.org/download/aid-780/sec1-v2.pdf
17219 */
17220 function recoverPubKey (curve, e, signature, i) {
17221 assert.strictEqual(i & 3, i, 'Recovery param is more than two bits')
17222
17223 var n = curve.n
17224 var G = curve.G
17225
17226 var r = signature.r
17227 var s = signature.s
17228
17229 assert(r.signum() > 0 && r.compareTo(n) < 0, 'Invalid r value')
17230 assert(s.signum() > 0 && s.compareTo(n) < 0, 'Invalid s value')
17231
17232 // A set LSB signifies that the y-coordinate is odd
17233 var isYOdd = i & 1
17234
17235 // The more significant bit specifies whether we should use the
17236 // first or second candidate key.
17237 var isSecondKey = i >> 1
17238
17239 // 1.1 Let x = r + jn
17240 var x = isSecondKey ? r.add(n) : r
17241 var R = curve.pointFromX(isYOdd, x)
17242
17243 // 1.4 Check that nR is at infinity
17244 var nR = R.multiply(n)
17245 assert(curve.isInfinity(nR), 'nR is not a valid curve point')
17246
17247 // Compute -e from e
17248 var eNeg = e.negate().mod(n)
17249
17250 // 1.6.1 Compute Q = r^-1 (sR - eG)
17251 // Q = r^-1 (sR + -eG)
17252 var rInv = r.modInverse(n)
17253
17254 var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv)
17255 curve.validate(Q)
17256
17257 return Q
17258 }
17259
17260 /**
17261 * Calculate pubkey extraction parameter.
17262 *
17263 * When extracting a pubkey from a signature, we have to
17264 * distinguish four different cases. Rather than putting this
17265 * burden on the verifier, Bitcoin includes a 2-bit value with the
17266 * signature.
17267 *
17268 * This function simply tries all four cases and returns the value
17269 * that resulted in a successful pubkey recovery.
17270 */
17271 function calcPubKeyRecoveryParam (curve, e, signature, Q) {
17272 for (var i = 0; i < 4; i++) {
17273 var Qprime = recoverPubKey(curve, e, signature, i)
17274
17275 // 1.6.2 Verify Q
17276 if (Qprime.equals(Q)) {
17277 return i
17278 }
17279 }
17280
17281 throw new Error('Unable to find valid recovery factor')
17282 }
17283
17284 module.exports = {
17285 calcPubKeyRecoveryParam: calcPubKeyRecoveryParam,
17286 deterministicGenerateK: deterministicGenerateK,
17287 recoverPubKey: recoverPubKey,
17288 sign: sign,
17289 verify: verify,
17290 verifyRaw: verifyRaw
17291 }
17292
17293 }).call(this,require("buffer").Buffer)
17294 },{"./ecsignature":62,"assert":5,"bigi":3,"buffer":7,"create-hmac":45,"typeforce":53}],60:[function(require,module,exports){
17295 (function (Buffer){
17296 var assert = require('assert')
17297 var base58check = require('bs58check')
17298 var ecdsa = require('./ecdsa')
17299 var networks = require('./networks')
17300 var randomBytes = require('randombytes')
17301 var typeForce = require('typeforce')
17302
17303 var BigInteger = require('bigi')
17304 var ECPubKey = require('./ecpubkey')
17305
17306 var ecurve = require('ecurve')
17307 var secp256k1 = ecurve.getCurveByName('secp256k1')
17308
17309 function ECKey (d, compressed) {
17310 assert(d.signum() > 0, 'Private key must be greater than 0')
17311 assert(d.compareTo(ECKey.curve.n) < 0, 'Private key must be less than the curve order')
17312
17313 var Q = ECKey.curve.G.multiply(d)
17314
17315 this.d = d
17316 this.pub = new ECPubKey(Q, compressed)
17317 }
17318
17319 // Constants
17320 ECKey.curve = secp256k1
17321
17322 // Static constructors
17323 ECKey.fromWIF = function (string) {
17324 var payload = base58check.decode(string)
17325 var compressed = false
17326
17327 // Ignore the version byte
17328 payload = payload.slice(1)
17329
17330 if (payload.length === 33) {
17331 assert.strictEqual(payload[32], 0x01, 'Invalid compression flag')
17332
17333 // Truncate the compression flag
17334 payload = payload.slice(0, -1)
17335 compressed = true
17336 }
17337
17338 assert.equal(payload.length, 32, 'Invalid WIF payload length')
17339
17340 var d = BigInteger.fromBuffer(payload)
17341 return new ECKey(d, compressed)
17342 }
17343
17344 ECKey.makeRandom = function (compressed, rng) {
17345 rng = rng || randomBytes
17346
17347 var buffer = rng(32)
17348 typeForce('Buffer', buffer)
17349 assert.equal(buffer.length, 32, 'Expected 256-bit Buffer from RNG')
17350
17351 var d = BigInteger.fromBuffer(buffer)
17352 d = d.mod(ECKey.curve.n)
17353
17354 return new ECKey(d, compressed)
17355 }
17356
17357 // Export functions
17358 ECKey.prototype.toWIF = function (network) {
17359 network = network || networks.bitcoin
17360
17361 var bufferLen = this.pub.compressed ? 34 : 33
17362 var buffer = new Buffer(bufferLen)
17363
17364 buffer.writeUInt8(network.wif, 0)
17365 this.d.toBuffer(32).copy(buffer, 1)
17366
17367 if (this.pub.compressed) {
17368 buffer.writeUInt8(0x01, 33)
17369 }
17370
17371 return base58check.encode(buffer)
17372 }
17373
17374 // Operations
17375 ECKey.prototype.sign = function (hash) {
17376 return ecdsa.sign(ECKey.curve, hash, this.d)
17377 }
17378
17379 module.exports = ECKey
17380
17381 }).call(this,require("buffer").Buffer)
17382 },{"./ecdsa":59,"./ecpubkey":61,"./networks":66,"assert":5,"bigi":3,"bs58check":31,"buffer":7,"ecurve":49,"randombytes":52,"typeforce":53}],61:[function(require,module,exports){
17383 (function (Buffer){
17384 var crypto = require('./crypto')
17385 var ecdsa = require('./ecdsa')
17386 var typeForce = require('typeforce')
17387 var networks = require('./networks')
17388
17389 var Address = require('./address')
17390
17391 var ecurve = require('ecurve')
17392 var secp256k1 = ecurve.getCurveByName('secp256k1')
17393
17394 function ECPubKey (Q, compressed) {
17395 if (compressed === undefined) {
17396 compressed = true
17397 }
17398
17399 typeForce('Point', Q)
17400 typeForce('Boolean', compressed)
17401
17402 this.compressed = compressed
17403 this.Q = Q
17404 }
17405
17406 // Constants
17407 ECPubKey.curve = secp256k1
17408
17409 // Static constructors
17410 ECPubKey.fromBuffer = function (buffer) {
17411 var Q = ecurve.Point.decodeFrom(ECPubKey.curve, buffer)
17412 return new ECPubKey(Q, Q.compressed)
17413 }
17414
17415 ECPubKey.fromHex = function (hex) {
17416 return ECPubKey.fromBuffer(new Buffer(hex, 'hex'))
17417 }
17418
17419 // Operations
17420 ECPubKey.prototype.getAddress = function (network) {
17421 network = network || networks.bitcoin
17422
17423 return new Address(crypto.hash160(this.toBuffer()), network.pubKeyHash)
17424 }
17425
17426 ECPubKey.prototype.verify = function (hash, signature) {
17427 return ecdsa.verify(ECPubKey.curve, hash, signature, this.Q)
17428 }
17429
17430 // Export functions
17431 ECPubKey.prototype.toBuffer = function () {
17432 return this.Q.getEncoded(this.compressed)
17433 }
17434
17435 ECPubKey.prototype.toHex = function () {
17436 return this.toBuffer().toString('hex')
17437 }
17438
17439 module.exports = ECPubKey
17440
17441 }).call(this,require("buffer").Buffer)
17442 },{"./address":54,"./crypto":58,"./ecdsa":59,"./networks":66,"buffer":7,"ecurve":49,"typeforce":53}],62:[function(require,module,exports){
17443 (function (Buffer){
17444 var assert = require('assert')
17445 var typeForce = require('typeforce')
17446
17447 var BigInteger = require('bigi')
17448
17449 function ECSignature (r, s) {
17450 typeForce('BigInteger', r)
17451 typeForce('BigInteger', s)
17452
17453 this.r = r
17454 this.s = s
17455 }
17456
17457 ECSignature.parseCompact = function (buffer) {
17458 assert.equal(buffer.length, 65, 'Invalid signature length')
17459 var i = buffer.readUInt8(0) - 27
17460
17461 // At most 3 bits
17462 assert.equal(i, i & 7, 'Invalid signature parameter')
17463 var compressed = !!(i & 4)
17464
17465 // Recovery param only
17466 i = i & 3
17467
17468 var r = BigInteger.fromBuffer(buffer.slice(1, 33))
17469 var s = BigInteger.fromBuffer(buffer.slice(33))
17470
17471 return {
17472 compressed: compressed,
17473 i: i,
17474 signature: new ECSignature(r, s)
17475 }
17476 }
17477
17478 ECSignature.fromDER = function (buffer) {
17479 assert.equal(buffer.readUInt8(0), 0x30, 'Not a DER sequence')
17480 assert.equal(buffer.readUInt8(1), buffer.length - 2, 'Invalid sequence length')
17481 assert.equal(buffer.readUInt8(2), 0x02, 'Expected a DER integer')
17482
17483 var rLen = buffer.readUInt8(3)
17484 assert(rLen > 0, 'R length is zero')
17485
17486 var offset = 4 + rLen
17487 assert.equal(buffer.readUInt8(offset), 0x02, 'Expected a DER integer (2)')
17488
17489 var sLen = buffer.readUInt8(offset + 1)
17490 assert(sLen > 0, 'S length is zero')
17491
17492 var rB = buffer.slice(4, offset)
17493 var sB = buffer.slice(offset + 2)
17494 offset += 2 + sLen
17495
17496 if (rLen > 1 && rB.readUInt8(0) === 0x00) {
17497 assert(rB.readUInt8(1) & 0x80, 'R value excessively padded')
17498 }
17499
17500 if (sLen > 1 && sB.readUInt8(0) === 0x00) {
17501 assert(sB.readUInt8(1) & 0x80, 'S value excessively padded')
17502 }
17503
17504 assert.equal(offset, buffer.length, 'Invalid DER encoding')
17505 var r = BigInteger.fromDERInteger(rB)
17506 var s = BigInteger.fromDERInteger(sB)
17507
17508 assert(r.signum() >= 0, 'R value is negative')
17509 assert(s.signum() >= 0, 'S value is negative')
17510
17511 return new ECSignature(r, s)
17512 }
17513
17514 // BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
17515 ECSignature.parseScriptSignature = function (buffer) {
17516 var hashType = buffer.readUInt8(buffer.length - 1)
17517 var hashTypeMod = hashType & ~0x80
17518
17519 assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType)
17520
17521 return {
17522 signature: ECSignature.fromDER(buffer.slice(0, -1)),
17523 hashType: hashType
17524 }
17525 }
17526
17527 ECSignature.prototype.toCompact = function (i, compressed) {
17528 if (compressed) {
17529 i += 4
17530 }
17531
17532 i += 27
17533
17534 var buffer = new Buffer(65)
17535 buffer.writeUInt8(i, 0)
17536
17537 this.r.toBuffer(32).copy(buffer, 1)
17538 this.s.toBuffer(32).copy(buffer, 33)
17539
17540 return buffer
17541 }
17542
17543 ECSignature.prototype.toDER = function () {
17544 var rBa = this.r.toDERInteger()
17545 var sBa = this.s.toDERInteger()
17546
17547 var sequence = []
17548
17549 // INTEGER
17550 sequence.push(0x02, rBa.length)
17551 sequence = sequence.concat(rBa)
17552
17553 // INTEGER
17554 sequence.push(0x02, sBa.length)
17555 sequence = sequence.concat(sBa)
17556
17557 // SEQUENCE
17558 sequence.unshift(0x30, sequence.length)
17559
17560 return new Buffer(sequence)
17561 }
17562
17563 ECSignature.prototype.toScriptSignature = function (hashType) {
17564 var hashTypeMod = hashType & ~0x80
17565 assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType)
17566
17567 var hashTypeBuffer = new Buffer(1)
17568 hashTypeBuffer.writeUInt8(hashType, 0)
17569
17570 return Buffer.concat([this.toDER(), hashTypeBuffer])
17571 }
17572
17573 module.exports = ECSignature
17574
17575 }).call(this,require("buffer").Buffer)
17576 },{"assert":5,"bigi":3,"buffer":7,"typeforce":53}],63:[function(require,module,exports){
17577 (function (Buffer){
17578 var assert = require('assert')
17579 var base58check = require('bs58check')
17580 var bcrypto = require('./crypto')
17581 var createHmac = require('create-hmac')
17582 var typeForce = require('typeforce')
17583 var networks = require('./networks')
17584
17585 var BigInteger = require('bigi')
17586 var ECKey = require('./eckey')
17587 var ECPubKey = require('./ecpubkey')
17588
17589 var ecurve = require('ecurve')
17590 var curve = ecurve.getCurveByName('secp256k1')
17591
17592 function findBIP32NetworkByVersion (version) {
17593 for (var name in networks) {
17594 var network = networks[name]
17595
17596 if (version === network.bip32.private || version === network.bip32.public) {
17597 return network
17598 }
17599 }
17600
17601 assert(false, 'Could not find network for ' + version.toString(16))
17602 }
17603
17604 function HDNode (K, chainCode, network) {
17605 network = network || networks.bitcoin
17606
17607 typeForce('Buffer', chainCode)
17608
17609 assert.equal(chainCode.length, 32, 'Expected chainCode length of 32, got ' + chainCode.length)
17610 assert(network.bip32, 'Unknown BIP32 constants for network')
17611
17612 this.chainCode = chainCode
17613 this.depth = 0
17614 this.index = 0
17615 this.parentFingerprint = 0x00000000
17616 this.network = network
17617
17618 if (K instanceof BigInteger) {
17619 this.privKey = new ECKey(K, true)
17620 this.pubKey = this.privKey.pub
17621 } else if (K instanceof ECKey) {
17622 assert(K.pub.compressed, 'ECKey must be compressed')
17623 this.privKey = K
17624 this.pubKey = K.pub
17625 } else if (K instanceof ECPubKey) {
17626 assert(K.compressed, 'ECPubKey must be compressed')
17627 this.pubKey = K
17628 } else {
17629 this.pubKey = new ECPubKey(K, true)
17630 }
17631 }
17632
17633 HDNode.MASTER_SECRET = new Buffer('Bitcoin seed')
17634 HDNode.HIGHEST_BIT = 0x80000000
17635 HDNode.LENGTH = 78
17636
17637 HDNode.fromSeedBuffer = function (seed, network) {
17638 typeForce('Buffer', seed)
17639
17640 assert(seed.length >= 16, 'Seed should be at least 128 bits')
17641 assert(seed.length <= 64, 'Seed should be at most 512 bits')
17642
17643 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
17644 var IL = I.slice(0, 32)
17645 var IR = I.slice(32)
17646
17647 // In case IL is 0 or >= n, the master key is invalid
17648 // This is handled by `new ECKey` in the HDNode constructor
17649 var pIL = BigInteger.fromBuffer(IL)
17650
17651 return new HDNode(pIL, IR, network)
17652 }
17653
17654 HDNode.fromSeedHex = function (hex, network) {
17655 return HDNode.fromSeedBuffer(new Buffer(hex, 'hex'), network)
17656 }
17657
17658 HDNode.fromBase58 = function (string, network) {
17659 return HDNode.fromBuffer(base58check.decode(string), network, true)
17660 }
17661
17662 // FIXME: remove in 2.x.y
17663 HDNode.fromBuffer = function (buffer, network, __ignoreDeprecation) {
17664 if (!__ignoreDeprecation) {
17665 console.warn('HDNode.fromBuffer() is deprecated for removal in 2.x.y, use fromBase58 instead')
17666 }
17667
17668 assert.strictEqual(buffer.length, HDNode.LENGTH, 'Invalid buffer length')
17669
17670 // 4 byte: version bytes
17671 var version = buffer.readUInt32BE(0)
17672
17673 if (network) {
17674 assert(version === network.bip32.private || version === network.bip32.public, "Network doesn't match")
17675
17676 // auto-detect
17677 } else {
17678 network = findBIP32NetworkByVersion(version)
17679 }
17680
17681 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
17682 var depth = buffer.readUInt8(4)
17683
17684 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
17685 var parentFingerprint = buffer.readUInt32BE(5)
17686 if (depth === 0) {
17687 assert.strictEqual(parentFingerprint, 0x00000000, 'Invalid parent fingerprint')
17688 }
17689
17690 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
17691 // This is encoded in MSB order. (0x00000000 if master key)
17692 var index = buffer.readUInt32BE(9)
17693 assert(depth > 0 || index === 0, 'Invalid index')
17694
17695 // 32 bytes: the chain code
17696 var chainCode = buffer.slice(13, 45)
17697 var data, hd
17698
17699 // 33 bytes: private key data (0x00 + k)
17700 if (version === network.bip32.private) {
17701 assert.strictEqual(buffer.readUInt8(45), 0x00, 'Invalid private key')
17702 data = buffer.slice(46, 78)
17703 var d = BigInteger.fromBuffer(data)
17704 hd = new HDNode(d, chainCode, network)
17705
17706 // 33 bytes: public key data (0x02 + X or 0x03 + X)
17707 } else {
17708 data = buffer.slice(45, 78)
17709 var Q = ecurve.Point.decodeFrom(curve, data)
17710 assert.equal(Q.compressed, true, 'Invalid public key')
17711
17712 // Verify that the X coordinate in the public point corresponds to a point on the curve.
17713 // If not, the extended public key is invalid.
17714 curve.validate(Q)
17715
17716 hd = new HDNode(Q, chainCode, network)
17717 }
17718
17719 hd.depth = depth
17720 hd.index = index
17721 hd.parentFingerprint = parentFingerprint
17722
17723 return hd
17724 }
17725
17726 // FIXME: remove in 2.x.y
17727 HDNode.fromHex = function (hex, network) {
17728 return HDNode.fromBuffer(new Buffer(hex, 'hex'), network)
17729 }
17730
17731 HDNode.prototype.getIdentifier = function () {
17732 return bcrypto.hash160(this.pubKey.toBuffer())
17733 }
17734
17735 HDNode.prototype.getFingerprint = function () {
17736 return this.getIdentifier().slice(0, 4)
17737 }
17738
17739 HDNode.prototype.getAddress = function () {
17740 return this.pubKey.getAddress(this.network)
17741 }
17742
17743 HDNode.prototype.neutered = function () {
17744 var neutered = new HDNode(this.pubKey.Q, this.chainCode, this.network)
17745 neutered.depth = this.depth
17746 neutered.index = this.index
17747 neutered.parentFingerprint = this.parentFingerprint
17748
17749 return neutered
17750 }
17751
17752 HDNode.prototype.toBase58 = function (isPrivate) {
17753 return base58check.encode(this.toBuffer(isPrivate, true))
17754 }
17755
17756 // FIXME: remove in 2.x.y
17757 HDNode.prototype.toBuffer = function (isPrivate, __ignoreDeprecation) {
17758 if (isPrivate === undefined) {
17759 isPrivate = !!this.privKey
17760
17761 // FIXME: remove in 2.x.y
17762 } else {
17763 console.warn('isPrivate flag is deprecated, please use the .neutered() method instead')
17764 }
17765
17766 if (!__ignoreDeprecation) {
17767 console.warn('HDNode.toBuffer() is deprecated for removal in 2.x.y, use toBase58 instead')
17768 }
17769
17770 // Version
17771 var version = isPrivate ? this.network.bip32.private : this.network.bip32.public
17772 var buffer = new Buffer(HDNode.LENGTH)
17773
17774 // 4 bytes: version bytes
17775 buffer.writeUInt32BE(version, 0)
17776
17777 // Depth
17778 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
17779 buffer.writeUInt8(this.depth, 4)
17780
17781 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
17782 buffer.writeUInt32BE(this.parentFingerprint, 5)
17783
17784 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
17785 // This is encoded in Big endian. (0x00000000 if master key)
17786 buffer.writeUInt32BE(this.index, 9)
17787
17788 // 32 bytes: the chain code
17789 this.chainCode.copy(buffer, 13)
17790
17791 // 33 bytes: the public key or private key data
17792 if (isPrivate) {
17793 // FIXME: remove in 2.x.y
17794 assert(this.privKey, 'Missing private key')
17795
17796 // 0x00 + k for private keys
17797 buffer.writeUInt8(0, 45)
17798 this.privKey.d.toBuffer(32).copy(buffer, 46)
17799 } else {
17800 // X9.62 encoding for public keys
17801 this.pubKey.toBuffer().copy(buffer, 45)
17802 }
17803
17804 return buffer
17805 }
17806
17807 // FIXME: remove in 2.x.y
17808 HDNode.prototype.toHex = function (isPrivate) {
17809 return this.toBuffer(isPrivate).toString('hex')
17810 }
17811
17812 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions
17813 HDNode.prototype.derive = function (index) {
17814 var isHardened = index >= HDNode.HIGHEST_BIT
17815 var indexBuffer = new Buffer(4)
17816 indexBuffer.writeUInt32BE(index, 0)
17817
17818 var data
17819
17820 // Hardened child
17821 if (isHardened) {
17822 assert(this.privKey, 'Could not derive hardened child key')
17823
17824 // data = 0x00 || ser256(kpar) || ser32(index)
17825 data = Buffer.concat([
17826 this.privKey.d.toBuffer(33),
17827 indexBuffer
17828 ])
17829
17830 // Normal child
17831 } else {
17832 // data = serP(point(kpar)) || ser32(index)
17833 // = serP(Kpar) || ser32(index)
17834 data = Buffer.concat([
17835 this.pubKey.toBuffer(),
17836 indexBuffer
17837 ])
17838 }
17839
17840 var I = createHmac('sha512', this.chainCode).update(data).digest()
17841 var IL = I.slice(0, 32)
17842 var IR = I.slice(32)
17843
17844 var pIL = BigInteger.fromBuffer(IL)
17845
17846 // In case parse256(IL) >= n, proceed with the next value for i
17847 if (pIL.compareTo(curve.n) >= 0) {
17848 return this.derive(index + 1)
17849 }
17850
17851 // Private parent key -> private child key
17852 var hd
17853 if (this.privKey) {
17854 // ki = parse256(IL) + kpar (mod n)
17855 var ki = pIL.add(this.privKey.d).mod(curve.n)
17856
17857 // In case ki == 0, proceed with the next value for i
17858 if (ki.signum() === 0) {
17859 return this.derive(index + 1)
17860 }
17861
17862 hd = new HDNode(ki, IR, this.network)
17863
17864 // Public parent key -> public child key
17865 } else {
17866 // Ki = point(parse256(IL)) + Kpar
17867 // = G*IL + Kpar
17868 var Ki = curve.G.multiply(pIL).add(this.pubKey.Q)
17869
17870 // In case Ki is the point at infinity, proceed with the next value for i
17871 if (curve.isInfinity(Ki)) {
17872 return this.derive(index + 1)
17873 }
17874
17875 hd = new HDNode(Ki, IR, this.network)
17876 }
17877
17878 hd.depth = this.depth + 1
17879 hd.index = index
17880 hd.parentFingerprint = this.getFingerprint().readUInt32BE(0)
17881
17882 return hd
17883 }
17884
17885 HDNode.prototype.deriveHardened = function (index) {
17886 // Only derives hardened private keys by default
17887 return this.derive(index + HDNode.HIGHEST_BIT)
17888 }
17889
17890 HDNode.prototype.toString = HDNode.prototype.toBase58
17891
17892 module.exports = HDNode
17893
17894 }).call(this,require("buffer").Buffer)
17895 },{"./crypto":58,"./eckey":60,"./ecpubkey":61,"./networks":66,"assert":5,"bigi":3,"bs58check":31,"buffer":7,"create-hmac":45,"ecurve":49,"typeforce":53}],64:[function(require,module,exports){
17896 module.exports = {
17897 Address: require('./address'),
17898 base58check: require('./base58check'),
17899 Block: require('./block'),
17900 bufferutils: require('./bufferutils'),
17901 crypto: require('./crypto'),
17902 ecdsa: require('./ecdsa'),
17903 ECKey: require('./eckey'),
17904 ECPubKey: require('./ecpubkey'),
17905 ECSignature: require('./ecsignature'),
17906 Message: require('./message'),
17907 opcodes: require('./opcodes'),
17908 HDNode: require('./hdnode'),
17909 Script: require('./script'),
17910 scripts: require('./scripts'),
17911 Transaction: require('./transaction'),
17912 TransactionBuilder: require('./transaction_builder'),
17913 networks: require('./networks'),
17914 Wallet: require('./wallet')
17915 }
17916
17917 },{"./address":54,"./base58check":55,"./block":56,"./bufferutils":57,"./crypto":58,"./ecdsa":59,"./eckey":60,"./ecpubkey":61,"./ecsignature":62,"./hdnode":63,"./message":65,"./networks":66,"./opcodes":67,"./script":68,"./scripts":69,"./transaction":70,"./transaction_builder":71,"./wallet":72}],65:[function(require,module,exports){
17918 (function (Buffer){
17919 var bufferutils = require('./bufferutils')
17920 var crypto = require('./crypto')
17921 var ecdsa = require('./ecdsa')
17922 var networks = require('./networks')
17923
17924 var BigInteger = require('bigi')
17925 var ECPubKey = require('./ecpubkey')
17926 var ECSignature = require('./ecsignature')
17927
17928 var ecurve = require('ecurve')
17929 var ecparams = ecurve.getCurveByName('secp256k1')
17930
17931 function magicHash (message, network) {
17932 var magicPrefix = new Buffer(network.magicPrefix)
17933 var messageBuffer = new Buffer(message)
17934 var lengthBuffer = bufferutils.varIntBuffer(messageBuffer.length)
17935
17936 var buffer = Buffer.concat([magicPrefix, lengthBuffer, messageBuffer])
17937 return crypto.hash256(buffer)
17938 }
17939
17940 function sign (privKey, message, network) {
17941 network = network || networks.bitcoin
17942
17943 var hash = magicHash(message, network)
17944 var signature = privKey.sign(hash)
17945 var e = BigInteger.fromBuffer(hash)
17946 var i = ecdsa.calcPubKeyRecoveryParam(ecparams, e, signature, privKey.pub.Q)
17947
17948 return signature.toCompact(i, privKey.pub.compressed)
17949 }
17950
17951 // TODO: network could be implied from address
17952 function verify (address, signature, message, network) {
17953 if (!Buffer.isBuffer(signature)) {
17954 signature = new Buffer(signature, 'base64')
17955 }
17956
17957 network = network || networks.bitcoin
17958
17959 var hash = magicHash(message, network)
17960 var parsed = ECSignature.parseCompact(signature)
17961 var e = BigInteger.fromBuffer(hash)
17962 var Q = ecdsa.recoverPubKey(ecparams, e, parsed.signature, parsed.i)
17963
17964 var pubKey = new ECPubKey(Q, parsed.compressed)
17965 return pubKey.getAddress(network).toString() === address.toString()
17966 }
17967
17968 module.exports = {
17969 magicHash: magicHash,
17970 sign: sign,
17971 verify: verify
17972 }
17973
17974 }).call(this,require("buffer").Buffer)
17975 },{"./bufferutils":57,"./crypto":58,"./ecdsa":59,"./ecpubkey":61,"./ecsignature":62,"./networks":66,"bigi":3,"buffer":7,"ecurve":49}],66:[function(require,module,exports){
17976 // https://en.bitcoin.it/wiki/List_of_address_prefixes
17977 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
17978
17979 var networks = {
17980 bitcoin: {
17981 magicPrefix: '\x18Bitcoin Signed Message:\n',
17982 bip32: {
17983 public: 0x0488b21e,
17984 private: 0x0488ade4
17985 },
17986 pubKeyHash: 0x00,
17987 scriptHash: 0x05,
17988 wif: 0x80,
17989 dustThreshold: 546, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/core.h#L151-L162
17990 feePerKb: 10000, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/main.cpp#L53
17991 estimateFee: estimateFee('bitcoin')
17992 },
17993 testnet: {
17994 magicPrefix: '\x18Bitcoin Signed Message:\n',
17995 bip32: {
17996 public: 0x043587cf,
17997 private: 0x04358394
17998 },
17999 pubKeyHash: 0x6f,
18000 scriptHash: 0xc4,
18001 wif: 0xef,
18002 dustThreshold: 546,
18003 feePerKb: 10000,
18004 estimateFee: estimateFee('testnet')
18005 },
18006 litecoin: {
18007 magicPrefix: '\x19Litecoin Signed Message:\n',
18008 bip32: {
18009 public: 0x019da462,
18010 private: 0x019d9cfe
18011 },
18012 pubKeyHash: 0x30,
18013 scriptHash: 0x05,
18014 wif: 0xb0,
18015 dustThreshold: 0, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L360-L365
18016 dustSoftThreshold: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.h#L53
18017 feePerKb: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L56
18018 estimateFee: estimateFee('litecoin')
18019 },
18020 dogecoin: {
18021 magicPrefix: '\x19Dogecoin Signed Message:\n',
18022 bip32: {
18023 public: 0x02facafd,
18024 private: 0x02fac398
18025 },
18026 pubKeyHash: 0x1e,
18027 scriptHash: 0x16,
18028 wif: 0x9e,
18029 dustThreshold: 0, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/core.h#L155-L160
18030 dustSoftThreshold: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.h#L62
18031 feePerKb: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.cpp#L58
18032 estimateFee: estimateFee('dogecoin')
18033 },
18034 viacoin: {
18035 magicPrefix: '\x18Viacoin Signed Message:\n',
18036 bip32: {
18037 public: 0x0488b21e,
18038 private: 0x0488ade4
18039 },
18040 pubKeyHash: 0x47,
18041 scriptHash: 0x21,
18042 wif: 0xc7,
18043 dustThreshold: 560,
18044 dustSoftThreshold: 100000,
18045 feePerKb: 100000, //
18046 estimateFee: estimateFee('viacoin')
18047 },
18048 viacointestnet: {
18049 magicPrefix: '\x18Viacoin Signed Message:\n',
18050 bip32: {
18051 public: 0x043587cf,
18052 private: 0x04358394
18053 },
18054 pubKeyHash: 0x7f,
18055 scriptHash: 0xc4,
18056 wif: 0xff,
18057 dustThreshold: 560,
18058 dustSoftThreshold: 100000,
18059 feePerKb: 100000,
18060 estimateFee: estimateFee('viacointestnet')
18061 },
18062 gamerscoin: {
18063 magicPrefix: '\x19Gamerscoin Signed Message:\n',
18064 bip32: {
18065 public: 0x019da462,
18066 private: 0x019d9cfe
18067 },
18068 pubKeyHash: 0x26,
18069 scriptHash: 0x05,
18070 wif: 0xA6,
18071 dustThreshold: 0, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L358-L363
18072 dustSoftThreshold: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L51
18073 feePerKb: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L54
18074 estimateFee: estimateFee('gamerscoin')
18075 },
18076 jumbucks: {
18077 magicPrefix: '\x19Jumbucks Signed Message:\n',
18078 bip32: {
18079 public: 0x037a689a,
18080 private: 0x037a6460
18081 },
18082 pubKeyHash: 0x2b,
18083 scriptHash: 0x05,
18084 wif: 0xab,
18085 dustThreshold: 0,
18086 dustSoftThreshold: 10000,
18087 feePerKb: 10000,
18088 estimateFee: estimateFee('jumbucks')
18089 },
18090 zetacoin: {
18091 magicPrefix: '\x18Zetacoin Signed Message:\n',
18092 bip32: {
18093 public: 0x0488b21e,
18094 private: 0x0488ade4
18095 },
18096 pubKeyHash: 0x50,
18097 scriptHash: 0x09,
18098 wif: 0xe0,
18099 dustThreshold: 546, // https://github.com/zetacoin/zetacoin/blob/master/src/core.h#L159
18100 feePerKb: 10000, // https://github.com/zetacoin/zetacoin/blob/master/src/main.cpp#L54
18101 estimateFee: estimateFee('zetacoin')
18102 }
18103 }
18104
18105 function estimateFee (type) {
18106 return function (tx) {
18107 var network = networks[type]
18108 var baseFee = network.feePerKb
18109 var byteSize = tx.toBuffer().length
18110
18111 var fee = baseFee * Math.ceil(byteSize / 1000)
18112 if (network.dustSoftThreshold === undefined) return fee
18113
18114 tx.outs.forEach(function (e) {
18115 if (e.value < network.dustSoftThreshold) {
18116 fee += baseFee
18117 }
18118 })
18119
18120 return fee
18121 }
18122 }
18123
18124 module.exports = networks
18125
18126 },{}],67:[function(require,module,exports){
18127 module.exports = {
18128 // push value
18129 OP_FALSE: 0,
18130 OP_0: 0,
18131 OP_PUSHDATA1: 76,
18132 OP_PUSHDATA2: 77,
18133 OP_PUSHDATA4: 78,
18134 OP_1NEGATE: 79,
18135 OP_RESERVED: 80,
18136 OP_1: 81,
18137 OP_TRUE: 81,
18138 OP_2: 82,
18139 OP_3: 83,
18140 OP_4: 84,
18141 OP_5: 85,
18142 OP_6: 86,
18143 OP_7: 87,
18144 OP_8: 88,
18145 OP_9: 89,
18146 OP_10: 90,
18147 OP_11: 91,
18148 OP_12: 92,
18149 OP_13: 93,
18150 OP_14: 94,
18151 OP_15: 95,
18152 OP_16: 96,
18153
18154 // control
18155 OP_NOP: 97,
18156 OP_VER: 98,
18157 OP_IF: 99,
18158 OP_NOTIF: 100,
18159 OP_VERIF: 101,
18160 OP_VERNOTIF: 102,
18161 OP_ELSE: 103,
18162 OP_ENDIF: 104,
18163 OP_VERIFY: 105,
18164 OP_RETURN: 106,
18165
18166 // stack ops
18167 OP_TOALTSTACK: 107,
18168 OP_FROMALTSTACK: 108,
18169 OP_2DROP: 109,
18170 OP_2DUP: 110,
18171 OP_3DUP: 111,
18172 OP_2OVER: 112,
18173 OP_2ROT: 113,
18174 OP_2SWAP: 114,
18175 OP_IFDUP: 115,
18176 OP_DEPTH: 116,
18177 OP_DROP: 117,
18178 OP_DUP: 118,
18179 OP_NIP: 119,
18180 OP_OVER: 120,
18181 OP_PICK: 121,
18182 OP_ROLL: 122,
18183 OP_ROT: 123,
18184 OP_SWAP: 124,
18185 OP_TUCK: 125,
18186
18187 // splice ops
18188 OP_CAT: 126,
18189 OP_SUBSTR: 127,
18190 OP_LEFT: 128,
18191 OP_RIGHT: 129,
18192 OP_SIZE: 130,
18193
18194 // bit logic
18195 OP_INVERT: 131,
18196 OP_AND: 132,
18197 OP_OR: 133,
18198 OP_XOR: 134,
18199 OP_EQUAL: 135,
18200 OP_EQUALVERIFY: 136,
18201 OP_RESERVED1: 137,
18202 OP_RESERVED2: 138,
18203
18204 // numeric
18205 OP_1ADD: 139,
18206 OP_1SUB: 140,
18207 OP_2MUL: 141,
18208 OP_2DIV: 142,
18209 OP_NEGATE: 143,
18210 OP_ABS: 144,
18211 OP_NOT: 145,
18212 OP_0NOTEQUAL: 146,
18213
18214 OP_ADD: 147,
18215 OP_SUB: 148,
18216 OP_MUL: 149,
18217 OP_DIV: 150,
18218 OP_MOD: 151,
18219 OP_LSHIFT: 152,
18220 OP_RSHIFT: 153,
18221
18222 OP_BOOLAND: 154,
18223 OP_BOOLOR: 155,
18224 OP_NUMEQUAL: 156,
18225 OP_NUMEQUALVERIFY: 157,
18226 OP_NUMNOTEQUAL: 158,
18227 OP_LESSTHAN: 159,
18228 OP_GREATERTHAN: 160,
18229 OP_LESSTHANOREQUAL: 161,
18230 OP_GREATERTHANOREQUAL: 162,
18231 OP_MIN: 163,
18232 OP_MAX: 164,
18233
18234 OP_WITHIN: 165,
18235
18236 // crypto
18237 OP_RIPEMD160: 166,
18238 OP_SHA1: 167,
18239 OP_SHA256: 168,
18240 OP_HASH160: 169,
18241 OP_HASH256: 170,
18242 OP_CODESEPARATOR: 171,
18243 OP_CHECKSIG: 172,
18244 OP_CHECKSIGVERIFY: 173,
18245 OP_CHECKMULTISIG: 174,
18246 OP_CHECKMULTISIGVERIFY: 175,
18247
18248 // expansion
18249 OP_NOP1: 176,
18250 OP_NOP2: 177,
18251 OP_NOP3: 178,
18252 OP_NOP4: 179,
18253 OP_NOP5: 180,
18254 OP_NOP6: 181,
18255 OP_NOP7: 182,
18256 OP_NOP8: 183,
18257 OP_NOP9: 184,
18258 OP_NOP10: 185,
18259
18260 // template matching params
18261 OP_PUBKEYHASH: 253,
18262 OP_PUBKEY: 254,
18263 OP_INVALIDOPCODE: 255
18264 }
18265
18266 },{}],68:[function(require,module,exports){
18267 (function (Buffer){
18268 var assert = require('assert')
18269 var bufferutils = require('./bufferutils')
18270 var crypto = require('./crypto')
18271 var typeForce = require('typeforce')
18272 var opcodes = require('./opcodes')
18273
18274 function Script (buffer, chunks) {
18275 typeForce('Buffer', buffer)
18276 typeForce('Array', chunks)
18277
18278 this.buffer = buffer
18279 this.chunks = chunks
18280 }
18281
18282 Script.fromASM = function (asm) {
18283 var strChunks = asm.split(' ')
18284 var chunks = strChunks.map(function (strChunk) {
18285 // opcode
18286 if (strChunk in opcodes) {
18287 return opcodes[strChunk]
18288
18289 // data chunk
18290 } else {
18291 return new Buffer(strChunk, 'hex')
18292 }
18293 })
18294
18295 return Script.fromChunks(chunks)
18296 }
18297
18298 Script.fromBuffer = function (buffer) {
18299 var chunks = []
18300 var i = 0
18301
18302 while (i < buffer.length) {
18303 var opcode = buffer.readUInt8(i)
18304
18305 // data chunk
18306 if ((opcode > opcodes.OP_0) && (opcode <= opcodes.OP_PUSHDATA4)) {
18307 var d = bufferutils.readPushDataInt(buffer, i)
18308
18309 // did reading a pushDataInt fail? return non-chunked script
18310 if (d === null) return new Script(buffer, [])
18311 i += d.size
18312
18313 // attempt to read too much data?
18314 if (i + d.number > buffer.length) return new Script(buffer, [])
18315
18316 var data = buffer.slice(i, i + d.number)
18317 i += d.number
18318
18319 chunks.push(data)
18320
18321 // opcode
18322 } else {
18323 chunks.push(opcode)
18324
18325 i += 1
18326 }
18327 }
18328
18329 return new Script(buffer, chunks)
18330 }
18331
18332 Script.fromChunks = function (chunks) {
18333 typeForce('Array', chunks)
18334
18335 var bufferSize = chunks.reduce(function (accum, chunk) {
18336 // data chunk
18337 if (Buffer.isBuffer(chunk)) {
18338 return accum + bufferutils.pushDataSize(chunk.length) + chunk.length
18339 }
18340
18341 // opcode
18342 return accum + 1
18343 }, 0.0)
18344
18345 var buffer = new Buffer(bufferSize)
18346 var offset = 0
18347
18348 chunks.forEach(function (chunk) {
18349 // data chunk
18350 if (Buffer.isBuffer(chunk)) {
18351 offset += bufferutils.writePushDataInt(buffer, chunk.length, offset)
18352
18353 chunk.copy(buffer, offset)
18354 offset += chunk.length
18355
18356 // opcode
18357 } else {
18358 buffer.writeUInt8(chunk, offset)
18359 offset += 1
18360 }
18361 })
18362
18363 assert.equal(offset, buffer.length, 'Could not decode chunks')
18364 return new Script(buffer, chunks)
18365 }
18366
18367 Script.fromHex = function (hex) {
18368 return Script.fromBuffer(new Buffer(hex, 'hex'))
18369 }
18370
18371 Script.EMPTY = Script.fromChunks([])
18372
18373 Script.prototype.getHash = function () {
18374 return crypto.hash160(this.buffer)
18375 }
18376
18377 // FIXME: doesn't work for data chunks, maybe time to use buffertools.compare...
18378 Script.prototype.without = function (needle) {
18379 return Script.fromChunks(this.chunks.filter(function (op) {
18380 return op !== needle
18381 }))
18382 }
18383
18384 var reverseOps = []
18385 for (var op in opcodes) {
18386 var code = opcodes[op]
18387 reverseOps[code] = op
18388 }
18389
18390 Script.prototype.toASM = function () {
18391 return this.chunks.map(function (chunk) {
18392 // data chunk
18393 if (Buffer.isBuffer(chunk)) {
18394 return chunk.toString('hex')
18395
18396 // opcode
18397 } else {
18398 return reverseOps[chunk]
18399 }
18400 }).join(' ')
18401 }
18402
18403 Script.prototype.toBuffer = function () {
18404 return this.buffer
18405 }
18406
18407 Script.prototype.toHex = function () {
18408 return this.toBuffer().toString('hex')
18409 }
18410
18411 module.exports = Script
18412
18413 }).call(this,require("buffer").Buffer)
18414 },{"./bufferutils":57,"./crypto":58,"./opcodes":67,"assert":5,"buffer":7,"typeforce":53}],69:[function(require,module,exports){
18415 (function (Buffer){
18416 var assert = require('assert')
18417 var ops = require('./opcodes')
18418 var typeForce = require('typeforce')
18419
18420 var ecurve = require('ecurve')
18421 var curve = ecurve.getCurveByName('secp256k1')
18422
18423 var ECSignature = require('./ecsignature')
18424 var Script = require('./script')
18425
18426 function isCanonicalPubKey (buffer) {
18427 if (!Buffer.isBuffer(buffer)) return false
18428
18429 try {
18430 ecurve.Point.decodeFrom(curve, buffer)
18431 } catch (e) {
18432 if (!(e.message.match(/Invalid sequence (length|tag)/)))
18433 throw e
18434
18435 return false
18436 }
18437
18438 return true
18439 }
18440
18441 function isCanonicalSignature (buffer) {
18442 if (!Buffer.isBuffer(buffer)) return false
18443
18444 try {
18445 ECSignature.parseScriptSignature(buffer)
18446 } catch (e) {
18447 if (!(e.message.match(/Not a DER sequence|Invalid sequence length|Expected a DER integer|R length is zero|S length is zero|R value excessively padded|S value excessively padded|R value is negative|S value is negative|Invalid hashType/))) {
18448 throw e
18449 }
18450
18451 return false
18452 }
18453
18454 return true
18455 }
18456
18457 function isPubKeyHashInput (script) {
18458 return script.chunks.length === 2 &&
18459 isCanonicalSignature(script.chunks[0]) &&
18460 isCanonicalPubKey(script.chunks[1])
18461 }
18462
18463 function isPubKeyHashOutput (script) {
18464 return script.chunks.length === 5 &&
18465 script.chunks[0] === ops.OP_DUP &&
18466 script.chunks[1] === ops.OP_HASH160 &&
18467 Buffer.isBuffer(script.chunks[2]) &&
18468 script.chunks[2].length === 20 &&
18469 script.chunks[3] === ops.OP_EQUALVERIFY &&
18470 script.chunks[4] === ops.OP_CHECKSIG
18471 }
18472
18473 function isPubKeyInput (script) {
18474 return script.chunks.length === 1 &&
18475 isCanonicalSignature(script.chunks[0])
18476 }
18477
18478 function isPubKeyOutput (script) {
18479 return script.chunks.length === 2 &&
18480 isCanonicalPubKey(script.chunks[0]) &&
18481 script.chunks[1] === ops.OP_CHECKSIG
18482 }
18483
18484 function isScriptHashInput (script, allowIncomplete) {
18485 if (script.chunks.length < 2) return false
18486
18487 var lastChunk = script.chunks[script.chunks.length - 1]
18488 if (!Buffer.isBuffer(lastChunk)) return false
18489
18490 var scriptSig = Script.fromChunks(script.chunks.slice(0, -1))
18491 var redeemScript = Script.fromBuffer(lastChunk)
18492
18493 // is redeemScript a valid script?
18494 if (redeemScript.chunks.length === 0) return false
18495
18496 return classifyInput(scriptSig, allowIncomplete) === classifyOutput(redeemScript)
18497 }
18498
18499 function isScriptHashOutput (script) {
18500 return script.chunks.length === 3 &&
18501 script.chunks[0] === ops.OP_HASH160 &&
18502 Buffer.isBuffer(script.chunks[1]) &&
18503 script.chunks[1].length === 20 &&
18504 script.chunks[2] === ops.OP_EQUAL
18505 }
18506
18507 // allowIncomplete is to account for combining signatures
18508 // See https://github.com/bitcoin/bitcoin/blob/f425050546644a36b0b8e0eb2f6934a3e0f6f80f/src/script/sign.cpp#L195-L197
18509 function isMultisigInput (script, allowIncomplete) {
18510 if (script.chunks.length < 2) return false
18511 if (script.chunks[0] !== ops.OP_0) return false
18512
18513 if (allowIncomplete) {
18514 return script.chunks.slice(1).every(function (chunk) {
18515 return chunk === ops.OP_0 || isCanonicalSignature(chunk)
18516 })
18517 }
18518
18519 return script.chunks.slice(1).every(isCanonicalSignature)
18520 }
18521
18522 function isMultisigOutput (script) {
18523 if (script.chunks.length < 4) return false
18524 if (script.chunks[script.chunks.length - 1] !== ops.OP_CHECKMULTISIG) return false
18525
18526 var mOp = script.chunks[0]
18527 if (mOp === ops.OP_0) return false
18528 if (mOp < ops.OP_1) return false
18529 if (mOp > ops.OP_16) return false
18530
18531 var nOp = script.chunks[script.chunks.length - 2]
18532 if (nOp === ops.OP_0) return false
18533 if (nOp < ops.OP_1) return false
18534 if (nOp > ops.OP_16) return false
18535
18536 var m = mOp - (ops.OP_1 - 1)
18537 var n = nOp - (ops.OP_1 - 1)
18538 if (n < m) return false
18539
18540 var pubKeys = script.chunks.slice(1, -2)
18541 if (n < pubKeys.length) return false
18542
18543 return pubKeys.every(isCanonicalPubKey)
18544 }
18545
18546 function isNullDataOutput (script) {
18547 return script.chunks[0] === ops.OP_RETURN
18548 }
18549
18550 function classifyOutput (script) {
18551 typeForce('Script', script)
18552
18553 if (isPubKeyHashOutput(script)) {
18554 return 'pubkeyhash'
18555 } else if (isScriptHashOutput(script)) {
18556 return 'scripthash'
18557 } else if (isMultisigOutput(script)) {
18558 return 'multisig'
18559 } else if (isPubKeyOutput(script)) {
18560 return 'pubkey'
18561 } else if (isNullDataOutput(script)) {
18562 return 'nulldata'
18563 }
18564
18565 return 'nonstandard'
18566 }
18567
18568 function classifyInput (script, allowIncomplete) {
18569 typeForce('Script', script)
18570
18571 if (isPubKeyHashInput(script)) {
18572 return 'pubkeyhash'
18573 } else if (isMultisigInput(script, allowIncomplete)) {
18574 return 'multisig'
18575 } else if (isScriptHashInput(script, allowIncomplete)) {
18576 return 'scripthash'
18577 } else if (isPubKeyInput(script)) {
18578 return 'pubkey'
18579 }
18580
18581 return 'nonstandard'
18582 }
18583
18584 // Standard Script Templates
18585 // {pubKey} OP_CHECKSIG
18586 function pubKeyOutput (pubKey) {
18587 return Script.fromChunks([
18588 pubKey.toBuffer(),
18589 ops.OP_CHECKSIG
18590 ])
18591 }
18592
18593 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
18594 function pubKeyHashOutput (hash) {
18595 typeForce('Buffer', hash)
18596
18597 return Script.fromChunks([
18598 ops.OP_DUP,
18599 ops.OP_HASH160,
18600 hash,
18601 ops.OP_EQUALVERIFY,
18602 ops.OP_CHECKSIG
18603 ])
18604 }
18605
18606 // OP_HASH160 {scriptHash} OP_EQUAL
18607 function scriptHashOutput (hash) {
18608 typeForce('Buffer', hash)
18609
18610 return Script.fromChunks([
18611 ops.OP_HASH160,
18612 hash,
18613 ops.OP_EQUAL
18614 ])
18615 }
18616
18617 // m [pubKeys ...] n OP_CHECKMULTISIG
18618 function multisigOutput (m, pubKeys) {
18619 typeForce(['ECPubKey'], pubKeys)
18620
18621 assert(pubKeys.length >= m, 'Not enough pubKeys provided')
18622
18623 var pubKeyBuffers = pubKeys.map(function (pubKey) {
18624 return pubKey.toBuffer()
18625 })
18626 var n = pubKeys.length
18627
18628 return Script.fromChunks([].concat(
18629 (ops.OP_1 - 1) + m,
18630 pubKeyBuffers,
18631 (ops.OP_1 - 1) + n,
18632 ops.OP_CHECKMULTISIG
18633 ))
18634 }
18635
18636 // {signature}
18637 function pubKeyInput (signature) {
18638 typeForce('Buffer', signature)
18639
18640 return Script.fromChunks([signature])
18641 }
18642
18643 // {signature} {pubKey}
18644 function pubKeyHashInput (signature, pubKey) {
18645 typeForce('Buffer', signature)
18646
18647 return Script.fromChunks([signature, pubKey.toBuffer()])
18648 }
18649
18650 // <scriptSig> {serialized scriptPubKey script}
18651 function scriptHashInput (scriptSig, scriptPubKey) {
18652 return Script.fromChunks([].concat(
18653 scriptSig.chunks,
18654 scriptPubKey.toBuffer()
18655 ))
18656 }
18657
18658 // OP_0 [signatures ...]
18659 function multisigInput (signatures, scriptPubKey) {
18660 if (scriptPubKey) {
18661 assert(isMultisigOutput(scriptPubKey))
18662
18663 var mOp = scriptPubKey.chunks[0]
18664 var nOp = scriptPubKey.chunks[scriptPubKey.chunks.length - 2]
18665 var m = mOp - (ops.OP_1 - 1)
18666 var n = nOp - (ops.OP_1 - 1)
18667
18668 assert(signatures.length >= m, 'Not enough signatures provided')
18669 assert(signatures.length <= n, 'Too many signatures provided')
18670 }
18671
18672 return Script.fromChunks([].concat(ops.OP_0, signatures))
18673 }
18674
18675 function nullDataOutput (data) {
18676 return Script.fromChunks([ops.OP_RETURN, data])
18677 }
18678
18679 module.exports = {
18680 isCanonicalPubKey: isCanonicalPubKey,
18681 isCanonicalSignature: isCanonicalSignature,
18682 isPubKeyHashInput: isPubKeyHashInput,
18683 isPubKeyHashOutput: isPubKeyHashOutput,
18684 isPubKeyInput: isPubKeyInput,
18685 isPubKeyOutput: isPubKeyOutput,
18686 isScriptHashInput: isScriptHashInput,
18687 isScriptHashOutput: isScriptHashOutput,
18688 isMultisigInput: isMultisigInput,
18689 isMultisigOutput: isMultisigOutput,
18690 isNullDataOutput: isNullDataOutput,
18691 classifyOutput: classifyOutput,
18692 classifyInput: classifyInput,
18693 pubKeyOutput: pubKeyOutput,
18694 pubKeyHashOutput: pubKeyHashOutput,
18695 scriptHashOutput: scriptHashOutput,
18696 multisigOutput: multisigOutput,
18697 pubKeyInput: pubKeyInput,
18698 pubKeyHashInput: pubKeyHashInput,
18699 scriptHashInput: scriptHashInput,
18700 multisigInput: multisigInput,
18701 dataOutput: function (data) {
18702 console.warn('dataOutput is deprecated, use nullDataOutput by 2.0.0')
18703 return nullDataOutput(data)
18704 },
18705 nullDataOutput: nullDataOutput
18706 }
18707
18708 }).call(this,require("buffer").Buffer)
18709 },{"./ecsignature":62,"./opcodes":67,"./script":68,"assert":5,"buffer":7,"ecurve":49,"typeforce":53}],70:[function(require,module,exports){
18710 (function (Buffer){
18711 var assert = require('assert')
18712 var bufferutils = require('./bufferutils')
18713 var crypto = require('./crypto')
18714 var typeForce = require('typeforce')
18715 var opcodes = require('./opcodes')
18716 var scripts = require('./scripts')
18717
18718 var Address = require('./address')
18719 var ECSignature = require('./ecsignature')
18720 var Script = require('./script')
18721
18722 function Transaction () {
18723 this.version = 1
18724 this.locktime = 0
18725 this.ins = []
18726 this.outs = []
18727 }
18728
18729 Transaction.DEFAULT_SEQUENCE = 0xffffffff
18730 Transaction.SIGHASH_ALL = 0x01
18731 Transaction.SIGHASH_NONE = 0x02
18732 Transaction.SIGHASH_SINGLE = 0x03
18733 Transaction.SIGHASH_ANYONECANPAY = 0x80
18734
18735 Transaction.fromBuffer = function (buffer, __disableAssert) {
18736 var offset = 0
18737 function readSlice (n) {
18738 offset += n
18739 return buffer.slice(offset - n, offset)
18740 }
18741
18742 function readUInt32 () {
18743 var i = buffer.readUInt32LE(offset)
18744 offset += 4
18745 return i
18746 }
18747
18748 function readUInt64 () {
18749 var i = bufferutils.readUInt64LE(buffer, offset)
18750 offset += 8
18751 return i
18752 }
18753
18754 function readVarInt () {
18755 var vi = bufferutils.readVarInt(buffer, offset)
18756 offset += vi.size
18757 return vi.number
18758 }
18759
18760 function readScript () {
18761 return Script.fromBuffer(readSlice(readVarInt()))
18762 }
18763
18764 function readGenerationScript () {
18765 return new Script(readSlice(readVarInt()), [])
18766 }
18767
18768 var tx = new Transaction()
18769 tx.version = readUInt32()
18770
18771 var vinLen = readVarInt()
18772 for (var i = 0; i < vinLen; ++i) {
18773 var hash = readSlice(32)
18774
18775 if (Transaction.isCoinbaseHash(hash)) {
18776 tx.ins.push({
18777 hash: hash,
18778 index: readUInt32(),
18779 script: readGenerationScript(),
18780 sequence: readUInt32()
18781 })
18782 } else {
18783 tx.ins.push({
18784 hash: hash,
18785 index: readUInt32(),
18786 script: readScript(),
18787 sequence: readUInt32()
18788 })
18789 }
18790 }
18791
18792 var voutLen = readVarInt()
18793 for (i = 0; i < voutLen; ++i) {
18794 tx.outs.push({
18795 value: readUInt64(),
18796 script: readScript()
18797 })
18798 }
18799
18800 tx.locktime = readUInt32()
18801
18802 if (!__disableAssert) {
18803 assert.equal(offset, buffer.length, 'Transaction has unexpected data')
18804 }
18805
18806 return tx
18807 }
18808
18809 Transaction.fromHex = function (hex) {
18810 return Transaction.fromBuffer(new Buffer(hex, 'hex'))
18811 }
18812
18813 Transaction.isCoinbaseHash = function (buffer) {
18814 return Array.prototype.every.call(buffer, function (x) {
18815 return x === 0
18816 })
18817 }
18818
18819 /**
18820 * Create a new txIn.
18821 *
18822 * Can be called with any of:
18823 *
18824 * - A transaction and an index
18825 * - A transaction hash and an index
18826 *
18827 * Note that this method does not sign the created input.
18828 */
18829 Transaction.prototype.addInput = function (hash, index, sequence, script) {
18830 if (sequence === undefined || sequence === null) {
18831 sequence = Transaction.DEFAULT_SEQUENCE
18832 }
18833
18834 script = script || Script.EMPTY
18835
18836 if (typeof hash === 'string') {
18837 // TxId hex is big-endian, we need little-endian
18838 hash = bufferutils.reverse(new Buffer(hash, 'hex'))
18839 } else if (hash instanceof Transaction) {
18840 hash = hash.getHash()
18841 }
18842
18843 typeForce('Buffer', hash)
18844 typeForce('Number', index)
18845 typeForce('Number', sequence)
18846 typeForce('Script', script)
18847
18848 assert.equal(hash.length, 32, 'Expected hash length of 32, got ' + hash.length)
18849
18850 // Add the input and return the input's index
18851 return (this.ins.push({
18852 hash: hash,
18853 index: index,
18854 script: script,
18855 sequence: sequence
18856 }) - 1)
18857 }
18858
18859 /**
18860 * Create a new txOut.
18861 *
18862 * Can be called with:
18863 *
18864 * - A base58 address string and a value
18865 * - An Address object and a value
18866 * - A scriptPubKey Script and a value
18867 */
18868 Transaction.prototype.addOutput = function (scriptPubKey, value) {
18869 // Attempt to get a valid address if it's a base58 address string
18870 if (typeof scriptPubKey === 'string') {
18871 scriptPubKey = Address.fromBase58Check(scriptPubKey)
18872 }
18873
18874 // Attempt to get a valid script if it's an Address object
18875 if (scriptPubKey instanceof Address) {
18876 scriptPubKey = scriptPubKey.toOutputScript()
18877 }
18878
18879 typeForce('Script', scriptPubKey)
18880 typeForce('Number', value)
18881
18882 // Add the output and return the output's index
18883 return (this.outs.push({
18884 script: scriptPubKey,
18885 value: value
18886 }) - 1)
18887 }
18888
18889 Transaction.prototype.clone = function () {
18890 var newTx = new Transaction()
18891 newTx.version = this.version
18892 newTx.locktime = this.locktime
18893
18894 newTx.ins = this.ins.map(function (txIn) {
18895 return {
18896 hash: txIn.hash,
18897 index: txIn.index,
18898 script: txIn.script,
18899 sequence: txIn.sequence
18900 }
18901 })
18902
18903 newTx.outs = this.outs.map(function (txOut) {
18904 return {
18905 script: txOut.script,
18906 value: txOut.value
18907 }
18908 })
18909
18910 return newTx
18911 }
18912
18913 /**
18914 * Hash transaction for signing a specific input.
18915 *
18916 * Bitcoin uses a different hash for each signed transaction input. This
18917 * method copies the transaction, makes the necessary changes based on the
18918 * hashType, serializes and finally hashes the result. This hash can then be
18919 * used to sign the transaction input in question.
18920 */
18921 Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
18922 // FIXME: remove in 2.x.y
18923 if (arguments[0] instanceof Script) {
18924 console.warn('hashForSignature(prevOutScript, inIndex, ...) has been deprecated. Use hashForSignature(inIndex, prevOutScript, ...)')
18925
18926 // swap the arguments (must be stored in tmp, arguments is special)
18927 var tmp = arguments[0]
18928 inIndex = arguments[1]
18929 prevOutScript = tmp
18930 }
18931
18932 typeForce('Number', inIndex)
18933 typeForce('Script', prevOutScript)
18934 typeForce('Number', hashType)
18935
18936 assert(inIndex >= 0, 'Invalid vin index')
18937 assert(inIndex < this.ins.length, 'Invalid vin index')
18938
18939 var txTmp = this.clone()
18940 var hashScript = prevOutScript.without(opcodes.OP_CODESEPARATOR)
18941
18942 // Blank out other inputs' signatures
18943 txTmp.ins.forEach(function (txIn) {
18944 txIn.script = Script.EMPTY
18945 })
18946 txTmp.ins[inIndex].script = hashScript
18947
18948 var hashTypeModifier = hashType & 0x1f
18949
18950 if (hashTypeModifier === Transaction.SIGHASH_NONE) {
18951 assert(false, 'SIGHASH_NONE not yet supported')
18952 } else if (hashTypeModifier === Transaction.SIGHASH_SINGLE) {
18953 assert(false, 'SIGHASH_SINGLE not yet supported')
18954 }
18955
18956 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
18957 assert(false, 'SIGHASH_ANYONECANPAY not yet supported')
18958 }
18959
18960 var hashTypeBuffer = new Buffer(4)
18961 hashTypeBuffer.writeInt32LE(hashType, 0)
18962
18963 var buffer = Buffer.concat([txTmp.toBuffer(), hashTypeBuffer])
18964 return crypto.hash256(buffer)
18965 }
18966
18967 Transaction.prototype.getHash = function () {
18968 return crypto.hash256(this.toBuffer())
18969 }
18970
18971 Transaction.prototype.getId = function () {
18972 // TxHash is little-endian, we need big-endian
18973 return bufferutils.reverse(this.getHash()).toString('hex')
18974 }
18975
18976 Transaction.prototype.toBuffer = function () {
18977 function scriptSize (script) {
18978 var length = script.buffer.length
18979
18980 return bufferutils.varIntSize(length) + length
18981 }
18982
18983 var buffer = new Buffer(
18984 8 +
18985 bufferutils.varIntSize(this.ins.length) +
18986 bufferutils.varIntSize(this.outs.length) +
18987 this.ins.reduce(function (sum, input) { return sum + 40 + scriptSize(input.script) }, 0) +
18988 this.outs.reduce(function (sum, output) { return sum + 8 + scriptSize(output.script) }, 0)
18989 )
18990
18991 var offset = 0
18992 function writeSlice (slice) {
18993 slice.copy(buffer, offset)
18994 offset += slice.length
18995 }
18996
18997 function writeUInt32 (i) {
18998 buffer.writeUInt32LE(i, offset)
18999 offset += 4
19000 }
19001
19002 function writeUInt64 (i) {
19003 bufferutils.writeUInt64LE(buffer, i, offset)
19004 offset += 8
19005 }
19006
19007 function writeVarInt (i) {
19008 var n = bufferutils.writeVarInt(buffer, i, offset)
19009 offset += n
19010 }
19011
19012 writeUInt32(this.version)
19013 writeVarInt(this.ins.length)
19014
19015 this.ins.forEach(function (txIn) {
19016 writeSlice(txIn.hash)
19017 writeUInt32(txIn.index)
19018 writeVarInt(txIn.script.buffer.length)
19019 writeSlice(txIn.script.buffer)
19020 writeUInt32(txIn.sequence)
19021 })
19022
19023 writeVarInt(this.outs.length)
19024 this.outs.forEach(function (txOut) {
19025 writeUInt64(txOut.value)
19026 writeVarInt(txOut.script.buffer.length)
19027 writeSlice(txOut.script.buffer)
19028 })
19029
19030 writeUInt32(this.locktime)
19031
19032 return buffer
19033 }
19034
19035 Transaction.prototype.toHex = function () {
19036 return this.toBuffer().toString('hex')
19037 }
19038
19039 Transaction.prototype.setInputScript = function (index, script) {
19040 typeForce('Number', index)
19041 typeForce('Script', script)
19042
19043 this.ins[index].script = script
19044 }
19045
19046 // FIXME: remove in 2.x.y
19047 Transaction.prototype.sign = function (index, privKey, hashType) {
19048 console.warn('Transaction.prototype.sign is deprecated. Use TransactionBuilder instead.')
19049
19050 var prevOutScript = privKey.pub.getAddress().toOutputScript()
19051 var signature = this.signInput(index, prevOutScript, privKey, hashType)
19052
19053 var scriptSig = scripts.pubKeyHashInput(signature, privKey.pub)
19054 this.setInputScript(index, scriptSig)
19055 }
19056
19057 // FIXME: remove in 2.x.y
19058 Transaction.prototype.signInput = function (index, prevOutScript, privKey, hashType) {
19059 console.warn('Transaction.prototype.signInput is deprecated. Use TransactionBuilder instead.')
19060
19061 hashType = hashType || Transaction.SIGHASH_ALL
19062
19063 var hash = this.hashForSignature(index, prevOutScript, hashType)
19064 var signature = privKey.sign(hash)
19065
19066 return signature.toScriptSignature(hashType)
19067 }
19068
19069 // FIXME: remove in 2.x.y
19070 Transaction.prototype.validateInput = function (index, prevOutScript, pubKey, buffer) {
19071 console.warn('Transaction.prototype.validateInput is deprecated. Use TransactionBuilder instead.')
19072
19073 var parsed = ECSignature.parseScriptSignature(buffer)
19074 var hash = this.hashForSignature(index, prevOutScript, parsed.hashType)
19075
19076 return pubKey.verify(hash, parsed.signature)
19077 }
19078
19079 module.exports = Transaction
19080
19081 }).call(this,require("buffer").Buffer)
19082 },{"./address":54,"./bufferutils":57,"./crypto":58,"./ecsignature":62,"./opcodes":67,"./script":68,"./scripts":69,"assert":5,"buffer":7,"typeforce":53}],71:[function(require,module,exports){
19083 (function (Buffer){
19084 var assert = require('assert')
19085 var ops = require('./opcodes')
19086 var scripts = require('./scripts')
19087
19088 var ECPubKey = require('./ecpubkey')
19089 var ECSignature = require('./ecsignature')
19090 var Script = require('./script')
19091 var Transaction = require('./transaction')
19092
19093 function extractInput (txIn) {
19094 var redeemScript
19095 var scriptSig = txIn.script
19096 var prevOutScript
19097 var prevOutType = scripts.classifyInput(scriptSig, true)
19098 var scriptType
19099
19100 // Re-classify if scriptHash
19101 if (prevOutType === 'scripthash') {
19102 redeemScript = Script.fromBuffer(scriptSig.chunks.slice(-1)[0])
19103 prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
19104
19105 scriptSig = Script.fromChunks(scriptSig.chunks.slice(0, -1))
19106 scriptType = scripts.classifyInput(scriptSig, true)
19107 } else {
19108 scriptType = prevOutType
19109 }
19110
19111 // Extract hashType, pubKeys and signatures
19112 var hashType, parsed, pubKeys, signatures
19113
19114 switch (scriptType) {
19115 case 'pubkeyhash': {
19116 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0])
19117 hashType = parsed.hashType
19118 pubKeys = [ECPubKey.fromBuffer(scriptSig.chunks[1])]
19119 signatures = [parsed.signature]
19120 prevOutScript = pubKeys[0].getAddress().toOutputScript()
19121
19122 break
19123 }
19124
19125 case 'pubkey': {
19126 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0])
19127 hashType = parsed.hashType
19128 signatures = [parsed.signature]
19129
19130 if (redeemScript) {
19131 pubKeys = [ECPubKey.fromBuffer(redeemScript.chunks[0])]
19132 }
19133
19134 break
19135 }
19136
19137 case 'multisig': {
19138 signatures = scriptSig.chunks.slice(1).map(function (chunk) {
19139 if (chunk === ops.OP_0) return chunk
19140
19141 var parsed = ECSignature.parseScriptSignature(chunk)
19142 hashType = parsed.hashType
19143
19144 return parsed.signature
19145 })
19146
19147 if (redeemScript) {
19148 pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19149 }
19150
19151 break
19152 }
19153 }
19154
19155 return {
19156 hashType: hashType,
19157 prevOutScript: prevOutScript,
19158 prevOutType: prevOutType,
19159 pubKeys: pubKeys,
19160 redeemScript: redeemScript,
19161 scriptType: scriptType,
19162 signatures: signatures
19163 }
19164 }
19165
19166 function TransactionBuilder () {
19167 this.prevTxMap = {}
19168 this.prevOutScripts = {}
19169 this.prevOutTypes = {}
19170
19171 this.inputs = []
19172 this.tx = new Transaction()
19173 }
19174
19175 TransactionBuilder.fromTransaction = function (transaction) {
19176 var txb = new TransactionBuilder()
19177
19178 // Copy other transaction fields
19179 txb.tx.version = transaction.version
19180 txb.tx.locktime = transaction.locktime
19181
19182 // Extract/add inputs
19183 transaction.ins.forEach(function (txIn) {
19184 txb.addInput(txIn.hash, txIn.index, txIn.sequence)
19185 })
19186
19187 // Extract/add outputs
19188 transaction.outs.forEach(function (txOut) {
19189 txb.addOutput(txOut.script, txOut.value)
19190 })
19191
19192 // Extract/add signatures
19193 txb.inputs = transaction.ins.map(function (txIn) {
19194 // TODO: remove me after testcase added
19195 assert(!Transaction.isCoinbaseHash(txIn.hash), 'coinbase inputs not supported')
19196
19197 // Ignore empty scripts
19198 if (txIn.script.buffer.length === 0) return {}
19199
19200 return extractInput(txIn)
19201 })
19202
19203 return txb
19204 }
19205
19206 TransactionBuilder.prototype.addInput = function (prevTx, index, sequence, prevOutScript) {
19207 var prevOutHash
19208
19209 // txId
19210 if (typeof prevTx === 'string') {
19211 prevOutHash = new Buffer(prevTx, 'hex')
19212
19213 // TxId hex is big-endian, we want little-endian hash
19214 Array.prototype.reverse.call(prevOutHash)
19215
19216 // Transaction
19217 } else if (prevTx instanceof Transaction) {
19218 prevOutHash = prevTx.getHash()
19219 prevOutScript = prevTx.outs[index].script
19220
19221 // txHash
19222 } else {
19223 prevOutHash = prevTx
19224 }
19225
19226 var input = {}
19227 if (prevOutScript) {
19228 var prevOutType = scripts.classifyOutput(prevOutScript)
19229
19230 // if we can, extract pubKey information
19231 switch (prevOutType) {
19232 case 'multisig': {
19233 input.pubKeys = prevOutScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19234 break
19235 }
19236
19237 case 'pubkey': {
19238 input.pubKeys = prevOutScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer)
19239 break
19240 }
19241 }
19242
19243 if (prevOutType !== 'scripthash') {
19244 input.scriptType = prevOutType
19245 }
19246
19247 input.prevOutScript = prevOutScript
19248 input.prevOutType = prevOutType
19249 }
19250
19251 assert(this.inputs.every(function (input2) {
19252 if (input2.hashType === undefined) return true
19253
19254 return input2.hashType & Transaction.SIGHASH_ANYONECANPAY
19255 }), 'No, this would invalidate signatures')
19256
19257 var prevOut = prevOutHash.toString('hex') + ':' + index
19258 assert(!(prevOut in this.prevTxMap), 'Transaction is already an input')
19259
19260 var vin = this.tx.addInput(prevOutHash, index, sequence)
19261 this.inputs[vin] = input
19262 this.prevTxMap[prevOut] = vin
19263
19264 return vin
19265 }
19266
19267 TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
19268 assert(this.inputs.every(function (input) {
19269 if (input.hashType === undefined) return true
19270
19271 return (input.hashType & 0x1f) === Transaction.SIGHASH_SINGLE
19272 }), 'No, this would invalidate signatures')
19273
19274 return this.tx.addOutput(scriptPubKey, value)
19275 }
19276
19277 TransactionBuilder.prototype.build = function () {
19278 return this.__build(false)
19279 }
19280 TransactionBuilder.prototype.buildIncomplete = function () {
19281 return this.__build(true)
19282 }
19283
19284 var canSignTypes = {
19285 'pubkeyhash': true,
19286 'multisig': true,
19287 'pubkey': true
19288 }
19289
19290 TransactionBuilder.prototype.__build = function (allowIncomplete) {
19291 if (!allowIncomplete) {
19292 assert(this.tx.ins.length > 0, 'Transaction has no inputs')
19293 assert(this.tx.outs.length > 0, 'Transaction has no outputs')
19294 }
19295
19296 var tx = this.tx.clone()
19297
19298 // Create script signatures from signature meta-data
19299 this.inputs.forEach(function (input, index) {
19300 var scriptType = input.scriptType
19301 var scriptSig
19302
19303 if (!allowIncomplete) {
19304 assert(!!scriptType, 'Transaction is not complete')
19305 assert(scriptType in canSignTypes, scriptType + ' not supported')
19306 assert(input.signatures, 'Transaction is missing signatures')
19307 }
19308
19309 if (input.signatures) {
19310 switch (scriptType) {
19311 case 'pubkeyhash': {
19312 var pkhSignature = input.signatures[0].toScriptSignature(input.hashType)
19313 scriptSig = scripts.pubKeyHashInput(pkhSignature, input.pubKeys[0])
19314 break
19315 }
19316
19317 case 'multisig': {
19318 // Array.prototype.map is sparse-compatible
19319 var msSignatures = input.signatures.map(function (signature) {
19320 return signature && signature.toScriptSignature(input.hashType)
19321 })
19322
19323 // fill in blanks with OP_0
19324 if (allowIncomplete) {
19325 for (var i = 0; i < msSignatures.length; ++i) {
19326 if (msSignatures[i]) continue
19327
19328 msSignatures[i] = ops.OP_0
19329 }
19330 } else {
19331 // Array.prototype.filter returns non-sparse array
19332 msSignatures = msSignatures.filter(function (x) { return x })
19333 }
19334
19335 var redeemScript = allowIncomplete ? undefined : input.redeemScript
19336 scriptSig = scripts.multisigInput(msSignatures, redeemScript)
19337 break
19338 }
19339
19340 case 'pubkey': {
19341 var pkSignature = input.signatures[0].toScriptSignature(input.hashType)
19342 scriptSig = scripts.pubKeyInput(pkSignature)
19343 break
19344 }
19345 }
19346 }
19347
19348 // did we build a scriptSig?
19349 if (scriptSig) {
19350 // wrap as scriptHash if necessary
19351 if (input.prevOutType === 'scripthash') {
19352 scriptSig = scripts.scriptHashInput(scriptSig, input.redeemScript)
19353 }
19354
19355 tx.setInputScript(index, scriptSig)
19356 }
19357 })
19358
19359 return tx
19360 }
19361
19362 TransactionBuilder.prototype.sign = function (index, privKey, redeemScript, hashType) {
19363 assert(index in this.inputs, 'No input at index: ' + index)
19364 hashType = hashType || Transaction.SIGHASH_ALL
19365
19366 var input = this.inputs[index]
19367 var canSign = input.hashType &&
19368 input.prevOutScript &&
19369 input.prevOutType &&
19370 input.pubKeys &&
19371 input.scriptType &&
19372 input.signatures
19373
19374 // are we almost ready to sign?
19375 if (canSign) {
19376 // if redeemScript was provided, enforce consistency
19377 if (redeemScript) {
19378 assert.deepEqual(input.redeemScript, redeemScript, 'Inconsistent redeemScript')
19379 }
19380
19381 assert.equal(input.hashType, hashType, 'Inconsistent hashType')
19382
19383 // no? prepare
19384 } else {
19385 // must be pay-to-scriptHash?
19386 if (redeemScript) {
19387 // if we have a prevOutScript, enforce scriptHash equality to the redeemScript
19388 if (input.prevOutScript) {
19389 assert.equal(input.prevOutType, 'scripthash', 'PrevOutScript must be P2SH')
19390
19391 var scriptHash = input.prevOutScript.chunks[1]
19392 assert.deepEqual(scriptHash, redeemScript.getHash(), 'RedeemScript does not match ' + scriptHash.toString('hex'))
19393 }
19394
19395 var scriptType = scripts.classifyOutput(redeemScript)
19396 assert(scriptType in canSignTypes, 'RedeemScript not supported (' + scriptType + ')')
19397
19398 var pubKeys = []
19399 switch (scriptType) {
19400 case 'multisig': {
19401 pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19402 break
19403 }
19404
19405 case 'pubkeyhash': {
19406 var pkh1 = redeemScript.chunks[2]
19407 var pkh2 = privKey.pub.getAddress().hash
19408
19409 assert.deepEqual(pkh1, pkh2, 'privateKey cannot sign for this input')
19410 pubKeys = [privKey.pub]
19411 break
19412 }
19413
19414 case 'pubkey': {
19415 pubKeys = redeemScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer)
19416 break
19417 }
19418 }
19419
19420 if (!input.prevOutScript) {
19421 input.prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
19422 input.prevOutType = 'scripthash'
19423 }
19424
19425 input.pubKeys = pubKeys
19426 input.redeemScript = redeemScript
19427 input.scriptType = scriptType
19428
19429 // cannot be pay-to-scriptHash
19430 } else {
19431 assert.notEqual(input.prevOutType, 'scripthash', 'PrevOutScript is P2SH, missing redeemScript')
19432
19433 // can we otherwise sign this?
19434 if (input.scriptType) {
19435 assert(input.pubKeys, input.scriptType + ' not supported')
19436
19437 // we know nothin' Jon Snow, assume pubKeyHash
19438 } else {
19439 input.prevOutScript = privKey.pub.getAddress().toOutputScript()
19440 input.prevOutType = 'pubkeyhash'
19441 input.pubKeys = [privKey.pub]
19442 input.scriptType = input.prevOutType
19443 }
19444 }
19445
19446 input.hashType = hashType
19447 input.signatures = input.signatures || []
19448 }
19449
19450 var signatureScript = input.redeemScript || input.prevOutScript
19451 var signatureHash = this.tx.hashForSignature(index, signatureScript, hashType)
19452
19453 // enforce signature order matches public keys
19454 if (input.scriptType === 'multisig' && input.redeemScript && input.signatures.length !== input.pubKeys.length) {
19455 // maintain a local copy of unmatched signatures
19456 var unmatched = input.signatures.slice()
19457
19458 input.signatures = input.pubKeys.map(function (pubKey) {
19459 var match
19460
19461 // check for any matching signatures
19462 unmatched.some(function (signature, i) {
19463 if (!pubKey.verify(signatureHash, signature)) return false
19464 match = signature
19465
19466 // remove matched signature from unmatched
19467 unmatched.splice(i, 1)
19468
19469 return true
19470 })
19471
19472 return match || undefined
19473 })
19474 }
19475
19476 // enforce in order signing of public keys
19477 assert(input.pubKeys.some(function (pubKey, i) {
19478 if (!privKey.pub.Q.equals(pubKey.Q)) return false
19479
19480 assert(!input.signatures[i], 'Signature already exists')
19481 var signature = privKey.sign(signatureHash)
19482 input.signatures[i] = signature
19483
19484 return true
19485 }, this), 'privateKey cannot sign for this input')
19486 }
19487
19488 module.exports = TransactionBuilder
19489
19490 }).call(this,require("buffer").Buffer)
19491 },{"./ecpubkey":61,"./ecsignature":62,"./opcodes":67,"./script":68,"./scripts":69,"./transaction":70,"assert":5,"buffer":7}],72:[function(require,module,exports){
19492 (function (Buffer){
19493 var assert = require('assert')
19494 var bufferutils = require('./bufferutils')
19495 var typeForce = require('typeforce')
19496 var networks = require('./networks')
19497 var randomBytes = require('randombytes')
19498
19499 var Address = require('./address')
19500 var HDNode = require('./hdnode')
19501 var TransactionBuilder = require('./transaction_builder')
19502 var Script = require('./script')
19503
19504 function Wallet (seed, network) {
19505 console.warn('Wallet is deprecated and will be removed in 2.0.0, see #296')
19506
19507 seed = seed || randomBytes(32)
19508 network = network || networks.bitcoin
19509
19510 // Stored in a closure to make accidental serialization less likely
19511 var masterKey = HDNode.fromSeedBuffer(seed, network)
19512
19513 // HD first-level child derivation method should be hardened
19514 // See https://bitcointalk.org/index.php?topic=405179.msg4415254#msg4415254
19515 var accountZero = masterKey.deriveHardened(0)
19516 var externalAccount = accountZero.derive(0)
19517 var internalAccount = accountZero.derive(1)
19518
19519 this.addresses = []
19520 this.changeAddresses = []
19521 this.network = network
19522 this.unspents = []
19523
19524 // FIXME: remove in 2.0.0
19525 this.unspentMap = {}
19526
19527 // FIXME: remove in 2.0.0
19528 var me = this
19529 this.newMasterKey = function (seed) {
19530 console.warn('newMasterKey is deprecated, please make a new Wallet instance instead')
19531
19532 seed = seed || randomBytes(32)
19533 masterKey = HDNode.fromSeedBuffer(seed, network)
19534
19535 accountZero = masterKey.deriveHardened(0)
19536 externalAccount = accountZero.derive(0)
19537 internalAccount = accountZero.derive(1)
19538
19539 me.addresses = []
19540 me.changeAddresses = []
19541
19542 me.unspents = []
19543 me.unspentMap = {}
19544 }
19545
19546 this.getMasterKey = function () {
19547 return masterKey
19548 }
19549 this.getAccountZero = function () {
19550 return accountZero
19551 }
19552 this.getExternalAccount = function () {
19553 return externalAccount
19554 }
19555 this.getInternalAccount = function () {
19556 return internalAccount
19557 }
19558 }
19559
19560 Wallet.prototype.createTransaction = function (to, value, options) {
19561 // FIXME: remove in 2.0.0
19562 if (typeof options !== 'object') {
19563 if (options !== undefined) {
19564 console.warn('Non options object parameters are deprecated, use options object instead')
19565
19566 options = {
19567 fixedFee: arguments[2],
19568 changeAddress: arguments[3]
19569 }
19570 }
19571 }
19572
19573 options = options || {}
19574
19575 assert(value > this.network.dustThreshold, value + ' must be above dust threshold (' + this.network.dustThreshold + ' Satoshis)')
19576
19577 var changeAddress = options.changeAddress
19578 var fixedFee = options.fixedFee
19579 var minConf = options.minConf === undefined ? 0 : options.minConf // FIXME: change minConf:1 by default in 2.0.0
19580
19581 // filter by minConf, then pending and sort by descending value
19582 var unspents = this.unspents.filter(function (unspent) {
19583 return unspent.confirmations >= minConf
19584 }).filter(function (unspent) {
19585 return !unspent.pending
19586 }).sort(function (o1, o2) {
19587 return o2.value - o1.value
19588 })
19589
19590 var accum = 0
19591 var addresses = []
19592 var subTotal = value
19593
19594 var txb = new TransactionBuilder()
19595 txb.addOutput(to, value)
19596
19597 for (var i = 0; i < unspents.length; ++i) {
19598 var unspent = unspents[i]
19599 addresses.push(unspent.address)
19600
19601 txb.addInput(unspent.txHash, unspent.index)
19602
19603 var fee = fixedFee === undefined ? estimatePaddedFee(txb.buildIncomplete(), this.network) : fixedFee
19604
19605 accum += unspent.value
19606 subTotal = value + fee
19607
19608 if (accum >= subTotal) {
19609 var change = accum - subTotal
19610
19611 if (change > this.network.dustThreshold) {
19612 txb.addOutput(changeAddress || this.getChangeAddress(), change)
19613 }
19614
19615 break
19616 }
19617 }
19618
19619 assert(accum >= subTotal, 'Not enough funds (incl. fee): ' + accum + ' < ' + subTotal)
19620
19621 return this.signWith(txb, addresses).build()
19622 }
19623
19624 // FIXME: remove in 2.0.0
19625 Wallet.prototype.processPendingTx = function (tx) {
19626 this.__processTx(tx, true)
19627 }
19628
19629 // FIXME: remove in 2.0.0
19630 Wallet.prototype.processConfirmedTx = function (tx) {
19631 this.__processTx(tx, false)
19632 }
19633
19634 // FIXME: remove in 2.0.0
19635 Wallet.prototype.__processTx = function (tx, isPending) {
19636 console.warn('processTransaction is considered harmful, see issue #260 for more information')
19637
19638 var txId = tx.getId()
19639 var txHash = tx.getHash()
19640
19641 tx.outs.forEach(function (txOut, i) {
19642 var address
19643
19644 try {
19645 address = Address.fromOutputScript(txOut.script, this.network).toString()
19646 } catch (e) {
19647 if (!(e.message.match(/has no matching Address/)))
19648 throw e
19649 }
19650
19651 var myAddresses = this.addresses.concat(this.changeAddresses)
19652 if (myAddresses.indexOf(address) > -1) {
19653 var lookup = txId + ':' + i
19654 if (lookup in this.unspentMap) return
19655
19656 // its unique, add it
19657 var unspent = {
19658 address: address,
19659 confirmations: 0, // no way to determine this without more information
19660 index: i,
19661 txHash: txHash,
19662 txId: txId,
19663 value: txOut.value,
19664 pending: isPending
19665 }
19666
19667 this.unspentMap[lookup] = unspent
19668 this.unspents.push(unspent)
19669 }
19670 }, this)
19671
19672 tx.ins.forEach(function (txIn) {
19673 // copy and convert to big-endian hex
19674 var txInId = bufferutils.reverse(txIn.hash).toString('hex')
19675
19676 var lookup = txInId + ':' + txIn.index
19677 if (!(lookup in this.unspentMap)) return
19678
19679 var unspent = this.unspentMap[lookup]
19680
19681 if (isPending) {
19682 unspent.pending = true
19683 unspent.spent = true
19684 } else {
19685 delete this.unspentMap[lookup]
19686
19687 this.unspents = this.unspents.filter(function (unspent2) {
19688 return unspent !== unspent2
19689 })
19690 }
19691 }, this)
19692 }
19693
19694 Wallet.prototype.generateAddress = function () {
19695 var k = this.addresses.length
19696 var address = this.getExternalAccount().derive(k).getAddress()
19697
19698 this.addresses.push(address.toString())
19699
19700 return this.getReceiveAddress()
19701 }
19702
19703 Wallet.prototype.generateChangeAddress = function () {
19704 var k = this.changeAddresses.length
19705 var address = this.getInternalAccount().derive(k).getAddress()
19706
19707 this.changeAddresses.push(address.toString())
19708
19709 return this.getChangeAddress()
19710 }
19711
19712 Wallet.prototype.getAddress = function () {
19713 if (this.addresses.length === 0) {
19714 this.generateAddress()
19715 }
19716
19717 return this.addresses[this.addresses.length - 1]
19718 }
19719
19720 Wallet.prototype.getBalance = function (minConf) {
19721 minConf = minConf || 0
19722
19723 return this.unspents.filter(function (unspent) {
19724 return unspent.confirmations >= minConf
19725
19726 // FIXME: remove spent filter in 2.0.0
19727 }).filter(function (unspent) {
19728 return !unspent.spent
19729 }).reduce(function (accum, unspent) {
19730 return accum + unspent.value
19731 }, 0)
19732 }
19733
19734 Wallet.prototype.getChangeAddress = function () {
19735 if (this.changeAddresses.length === 0) {
19736 this.generateChangeAddress()
19737 }
19738
19739 return this.changeAddresses[this.changeAddresses.length - 1]
19740 }
19741
19742 Wallet.prototype.getInternalPrivateKey = function (index) {
19743 return this.getInternalAccount().derive(index).privKey
19744 }
19745
19746 Wallet.prototype.getPrivateKey = function (index) {
19747 return this.getExternalAccount().derive(index).privKey
19748 }
19749
19750 Wallet.prototype.getPrivateKeyForAddress = function (address) {
19751 var index
19752
19753 if ((index = this.addresses.indexOf(address)) > -1) {
19754 return this.getPrivateKey(index)
19755 }
19756
19757 if ((index = this.changeAddresses.indexOf(address)) > -1) {
19758 return this.getInternalPrivateKey(index)
19759 }
19760
19761 assert(false, 'Unknown address. Make sure the address is from the keychain and has been generated')
19762 }
19763
19764 Wallet.prototype.getUnspentOutputs = function (minConf) {
19765 minConf = minConf || 0
19766
19767 return this.unspents.filter(function (unspent) {
19768 return unspent.confirmations >= minConf
19769
19770 // FIXME: remove spent filter in 2.0.0
19771 }).filter(function (unspent) {
19772 return !unspent.spent
19773 }).map(function (unspent) {
19774 return {
19775 address: unspent.address,
19776 confirmations: unspent.confirmations,
19777 index: unspent.index,
19778 txId: unspent.txId,
19779 value: unspent.value,
19780
19781 // FIXME: remove in 2.0.0
19782 hash: unspent.txId,
19783 pending: unspent.pending
19784 }
19785 })
19786 }
19787
19788 Wallet.prototype.setUnspentOutputs = function (unspents) {
19789 this.unspentMap = {}
19790 this.unspents = unspents.map(function (unspent) {
19791 // FIXME: remove unspent.hash in 2.0.0
19792 var txId = unspent.txId || unspent.hash
19793 var index = unspent.index
19794
19795 // FIXME: remove in 2.0.0
19796 if (unspent.hash !== undefined) {
19797 console.warn('unspent.hash is deprecated, use unspent.txId instead')
19798 }
19799
19800 // FIXME: remove in 2.0.0
19801 if (index === undefined) {
19802 console.warn('unspent.outputIndex is deprecated, use unspent.index instead')
19803 index = unspent.outputIndex
19804 }
19805
19806 typeForce('String', txId)
19807 typeForce('Number', index)
19808 typeForce('Number', unspent.value)
19809
19810 assert.equal(txId.length, 64, 'Expected valid txId, got ' + txId)
19811 assert.doesNotThrow(function () {
19812 Address.fromBase58Check(unspent.address)
19813 }, 'Expected Base58 Address, got ' + unspent.address)
19814 assert(isFinite(index), 'Expected finite index, got ' + index)
19815
19816 // FIXME: remove branch in 2.0.0
19817 if (unspent.confirmations !== undefined) {
19818 typeForce('Number', unspent.confirmations)
19819 }
19820
19821 var txHash = bufferutils.reverse(new Buffer(txId, 'hex'))
19822
19823 unspent = {
19824 address: unspent.address,
19825 confirmations: unspent.confirmations || 0,
19826 index: index,
19827 txHash: txHash,
19828 txId: txId,
19829 value: unspent.value,
19830
19831 // FIXME: remove in 2.0.0
19832 pending: unspent.pending || false
19833 }
19834
19835 // FIXME: remove in 2.0.0
19836 this.unspentMap[txId + ':' + index] = unspent
19837
19838 return unspent
19839 }, this)
19840 }
19841
19842 Wallet.prototype.signWith = function (tx, addresses) {
19843 addresses.forEach(function (address, i) {
19844 var privKey = this.getPrivateKeyForAddress(address)
19845
19846 tx.sign(i, privKey)
19847 }, this)
19848
19849 return tx
19850 }
19851
19852 function estimatePaddedFee (tx, network) {
19853 var tmpTx = tx.clone()
19854 tmpTx.addOutput(Script.EMPTY, network.dustSoftThreshold || 0)
19855
19856 return network.estimateFee(tmpTx)
19857 }
19858
19859 // FIXME: 1.0.0 shims, remove in 2.0.0
19860 Wallet.prototype.getReceiveAddress = Wallet.prototype.getAddress
19861 Wallet.prototype.createTx = Wallet.prototype.createTransaction
19862
19863 module.exports = Wallet
19864
19865 }).call(this,require("buffer").Buffer)
19866 },{"./address":54,"./bufferutils":57,"./hdnode":63,"./networks":66,"./script":68,"./transaction_builder":71,"assert":5,"buffer":7,"randombytes":52,"typeforce":53}]},{},[64])(64)
19867 });</script>
19868 <script>bitcoin.networks.shadow = {
19869 magicPrefix: '\x19ShadowCash Signed Message:\n',
19870 bip32: {
19871 public: 0xEE80286A,
19872 private: 0xEE8031E8
19873 },
19874 pubKeyHash: 0x3f,
19875 scriptHash: 0x7d,
19876 wif: 0xbf,
19877 dustThreshold: 0,
19878 feePerKb: 1000,
19879 estimateFee: function() { return "unused in this app" },
19880 };
19881
19882 bitcoin.networks.shadowtn = {
19883 magicPrefix: '\x19ShadowCash Signed Message:\n',
19884 bip32: {
19885 public: 0x76C0FDFB,
19886 private: 0x76C1077A
19887 },
19888 pubKeyHash: 0x7f,
19889 scriptHash: 0xc4,
19890 wif: 0xff,
19891 dustThreshold: 0,
19892 feePerKb: 1000,
19893 estimateFee: function() { return "unused in this app" },
19894 };
19895
19896 bitcoin.networks.clam = {
19897 bip32: {
19898 public: 0xa8c26d64,
19899 private: 0xa8c17826
19900 },
19901 pubKeyHash: 0x89,
19902 wif: 0x85,
19903 };
19904
19905 bitcoin.networks.dash = {
19906 bip32: {
19907 public: 0x0488b21e,
19908 private: 0x0488ade4
19909 },
19910 pubKeyHash: 0x4c,
19911 scriptHash: 0x10,
19912 wif: 0xcc,
19913 };
19914
19915 bitcoin.networks.game = {
19916 bip32: {
19917 public: 0x0488b21e,
19918 private: 0x0488ade4
19919 },
19920 pubKeyHash: 0x26,
19921 scriptHash: 0x05,
19922 wif: 0xa6,
19923 };
19924
19925 bitcoin.networks.namecoin = {
19926 bip32: {
19927 public: 0x0488b21e,
19928 private: 0x0488ade4
19929 },
19930 pubKeyHash: 0x34,
19931 //scriptHash: 0x10,
19932 wif: 0x80,
19933 };
19934
19935 bitcoin.networks.peercoin = {
19936 bip32: {
19937 public: 0x0488b21e,
19938 private: 0x0488ade4
19939 },
19940 pubKeyHash: 0x37,
19941 //scriptHash: 0x10,
19942 wif: 0xb7,
19943 };
19944
19945 bitcoin.networks.slimcoin = {
19946 bip32: {
19947 public: 0xef6adf10,
19948 private: 0xef69ea80
19949 },
19950 pubKeyHash: 0x3f,
19951 scriptHash: 0x7d,
19952 wif: 0x46,
19953 };
19954
19955 bitcoin.networks.slimcointn = {
19956 bip32: {
19957 public: 0x043587CF,
19958 private: 0x04358394
19959 },
19960 pubKeyHash: 0x6f,
19961 scriptHash: 0xc4,
19962 wif: 0x57,
19963 };
19964
19965 </script>
19966 <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){
19967 (function (global){
19968 'use strict';
19969
19970 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
19971 // original notice:
19972
19973 /*!
19974 * The buffer module from node.js, for the browser.
19975 *
19976 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
19977 * @license MIT
19978 */
19979 function compare(a, b) {
19980 if (a === b) {
19981 return 0;
19982 }
19983
19984 var x = a.length;
19985 var y = b.length;
19986
19987 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
19988 if (a[i] !== b[i]) {
19989 x = a[i];
19990 y = b[i];
19991 break;
19992 }
19993 }
19994
19995 if (x < y) {
19996 return -1;
19997 }
19998 if (y < x) {
19999 return 1;
20000 }
20001 return 0;
20002 }
20003 function isBuffer(b) {
20004 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
20005 return global.Buffer.isBuffer(b);
20006 }
20007 return !!(b != null && b._isBuffer);
20008 }
20009
20010 // based on node assert, original notice:
20011
20012 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
20013 //
20014 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
20015 //
20016 // Originally from narwhal.js (http://narwhaljs.org)
20017 // Copyright (c) 2009 Thomas Robinson <280north.com>
20018 //
20019 // Permission is hereby granted, free of charge, to any person obtaining a copy
20020 // of this software and associated documentation files (the 'Software'), to
20021 // deal in the Software without restriction, including without limitation the
20022 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
20023 // sell copies of the Software, and to permit persons to whom the Software is
20024 // furnished to do so, subject to the following conditions:
20025 //
20026 // The above copyright notice and this permission notice shall be included in
20027 // all copies or substantial portions of the Software.
20028 //
20029 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20030 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20031 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20032 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20033 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20034 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20035
20036 var util = require('util/');
20037 var hasOwn = Object.prototype.hasOwnProperty;
20038 var pSlice = Array.prototype.slice;
20039 var functionsHaveNames = (function () {
20040 return function foo() {}.name === 'foo';
20041 }());
20042 function pToString (obj) {
20043 return Object.prototype.toString.call(obj);
20044 }
20045 function isView(arrbuf) {
20046 if (isBuffer(arrbuf)) {
20047 return false;
20048 }
20049 if (typeof global.ArrayBuffer !== 'function') {
20050 return false;
20051 }
20052 if (typeof ArrayBuffer.isView === 'function') {
20053 return ArrayBuffer.isView(arrbuf);
20054 }
20055 if (!arrbuf) {
20056 return false;
20057 }
20058 if (arrbuf instanceof DataView) {
20059 return true;
20060 }
20061 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
20062 return true;
20063 }
20064 return false;
20065 }
20066 // 1. The assert module provides functions that throw
20067 // AssertionError's when particular conditions are not met. The
20068 // assert module must conform to the following interface.
20069
20070 var assert = module.exports = ok;
20071
20072 // 2. The AssertionError is defined in assert.
20073 // new assert.AssertionError({ message: message,
20074 // actual: actual,
20075 // expected: expected })
20076
20077 var regex = /\s*function\s+([^\(\s]*)\s*/;
20078 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
20079 function getName(func) {
20080 if (!util.isFunction(func)) {
20081 return;
20082 }
20083 if (functionsHaveNames) {
20084 return func.name;
20085 }
20086 var str = func.toString();
20087 var match = str.match(regex);
20088 return match && match[1];
20089 }
20090 assert.AssertionError = function AssertionError(options) {
20091 this.name = 'AssertionError';
20092 this.actual = options.actual;
20093 this.expected = options.expected;
20094 this.operator = options.operator;
20095 if (options.message) {
20096 this.message = options.message;
20097 this.generatedMessage = false;
20098 } else {
20099 this.message = getMessage(this);
20100 this.generatedMessage = true;
20101 }
20102 var stackStartFunction = options.stackStartFunction || fail;
20103 if (Error.captureStackTrace) {
20104 Error.captureStackTrace(this, stackStartFunction);
20105 } else {
20106 // non v8 browsers so we can have a stacktrace
20107 var err = new Error();
20108 if (err.stack) {
20109 var out = err.stack;
20110
20111 // try to strip useless frames
20112 var fn_name = getName(stackStartFunction);
20113 var idx = out.indexOf('\n' + fn_name);
20114 if (idx >= 0) {
20115 // once we have located the function frame
20116 // we need to strip out everything before it (and its line)
20117 var next_line = out.indexOf('\n', idx + 1);
20118 out = out.substring(next_line + 1);
20119 }
20120
20121 this.stack = out;
20122 }
20123 }
20124 };
20125
20126 // assert.AssertionError instanceof Error
20127 util.inherits(assert.AssertionError, Error);
20128
20129 function truncate(s, n) {
20130 if (typeof s === 'string') {
20131 return s.length < n ? s : s.slice(0, n);
20132 } else {
20133 return s;
20134 }
20135 }
20136 function inspect(something) {
20137 if (functionsHaveNames || !util.isFunction(something)) {
20138 return util.inspect(something);
20139 }
20140 var rawname = getName(something);
20141 var name = rawname ? ': ' + rawname : '';
20142 return '[Function' + name + ']';
20143 }
20144 function getMessage(self) {
20145 return truncate(inspect(self.actual), 128) + ' ' +
20146 self.operator + ' ' +
20147 truncate(inspect(self.expected), 128);
20148 }
20149
20150 // At present only the three keys mentioned above are used and
20151 // understood by the spec. Implementations or sub modules can pass
20152 // other keys to the AssertionError's constructor - they will be
20153 // ignored.
20154
20155 // 3. All of the following functions must throw an AssertionError
20156 // when a corresponding condition is not met, with a message that
20157 // may be undefined if not provided. All assertion methods provide
20158 // both the actual and expected values to the assertion error for
20159 // display purposes.
20160
20161 function fail(actual, expected, message, operator, stackStartFunction) {
20162 throw new assert.AssertionError({
20163 message: message,
20164 actual: actual,
20165 expected: expected,
20166 operator: operator,
20167 stackStartFunction: stackStartFunction
20168 });
20169 }
20170
20171 // EXTENSION! allows for well behaved errors defined elsewhere.
20172 assert.fail = fail;
20173
20174 // 4. Pure assertion tests whether a value is truthy, as determined
20175 // by !!guard.
20176 // assert.ok(guard, message_opt);
20177 // This statement is equivalent to assert.equal(true, !!guard,
20178 // message_opt);. To test strictly for the value true, use
20179 // assert.strictEqual(true, guard, message_opt);.
20180
20181 function ok(value, message) {
20182 if (!value) fail(value, true, message, '==', assert.ok);
20183 }
20184 assert.ok = ok;
20185
20186 // 5. The equality assertion tests shallow, coercive equality with
20187 // ==.
20188 // assert.equal(actual, expected, message_opt);
20189
20190 assert.equal = function equal(actual, expected, message) {
20191 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
20192 };
20193
20194 // 6. The non-equality assertion tests for whether two objects are not equal
20195 // with != assert.notEqual(actual, expected, message_opt);
20196
20197 assert.notEqual = function notEqual(actual, expected, message) {
20198 if (actual == expected) {
20199 fail(actual, expected, message, '!=', assert.notEqual);
20200 }
20201 };
20202
20203 // 7. The equivalence assertion tests a deep equality relation.
20204 // assert.deepEqual(actual, expected, message_opt);
20205
20206 assert.deepEqual = function deepEqual(actual, expected, message) {
20207 if (!_deepEqual(actual, expected, false)) {
20208 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
20209 }
20210 };
20211
20212 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
20213 if (!_deepEqual(actual, expected, true)) {
20214 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
20215 }
20216 };
20217
20218 function _deepEqual(actual, expected, strict, memos) {
20219 // 7.1. All identical values are equivalent, as determined by ===.
20220 if (actual === expected) {
20221 return true;
20222 } else if (isBuffer(actual) && isBuffer(expected)) {
20223 return compare(actual, expected) === 0;
20224
20225 // 7.2. If the expected value is a Date object, the actual value is
20226 // equivalent if it is also a Date object that refers to the same time.
20227 } else if (util.isDate(actual) && util.isDate(expected)) {
20228 return actual.getTime() === expected.getTime();
20229
20230 // 7.3 If the expected value is a RegExp object, the actual value is
20231 // equivalent if it is also a RegExp object with the same source and
20232 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
20233 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
20234 return actual.source === expected.source &&
20235 actual.global === expected.global &&
20236 actual.multiline === expected.multiline &&
20237 actual.lastIndex === expected.lastIndex &&
20238 actual.ignoreCase === expected.ignoreCase;
20239
20240 // 7.4. Other pairs that do not both pass typeof value == 'object',
20241 // equivalence is determined by ==.
20242 } else if ((actual === null || typeof actual !== 'object') &&
20243 (expected === null || typeof expected !== 'object')) {
20244 return strict ? actual === expected : actual == expected;
20245
20246 // If both values are instances of typed arrays, wrap their underlying
20247 // ArrayBuffers in a Buffer each to increase performance
20248 // This optimization requires the arrays to have the same type as checked by
20249 // Object.prototype.toString (aka pToString). Never perform binary
20250 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
20251 // bit patterns are not identical.
20252 } else if (isView(actual) && isView(expected) &&
20253 pToString(actual) === pToString(expected) &&
20254 !(actual instanceof Float32Array ||
20255 actual instanceof Float64Array)) {
20256 return compare(new Uint8Array(actual.buffer),
20257 new Uint8Array(expected.buffer)) === 0;
20258
20259 // 7.5 For all other Object pairs, including Array objects, equivalence is
20260 // determined by having the same number of owned properties (as verified
20261 // with Object.prototype.hasOwnProperty.call), the same set of keys
20262 // (although not necessarily the same order), equivalent values for every
20263 // corresponding key, and an identical 'prototype' property. Note: this
20264 // accounts for both named and indexed properties on Arrays.
20265 } else if (isBuffer(actual) !== isBuffer(expected)) {
20266 return false;
20267 } else {
20268 memos = memos || {actual: [], expected: []};
20269
20270 var actualIndex = memos.actual.indexOf(actual);
20271 if (actualIndex !== -1) {
20272 if (actualIndex === memos.expected.indexOf(expected)) {
20273 return true;
20274 }
20275 }
20276
20277 memos.actual.push(actual);
20278 memos.expected.push(expected);
20279
20280 return objEquiv(actual, expected, strict, memos);
20281 }
20282 }
20283
20284 function isArguments(object) {
20285 return Object.prototype.toString.call(object) == '[object Arguments]';
20286 }
20287
20288 function objEquiv(a, b, strict, actualVisitedObjects) {
20289 if (a === null || a === undefined || b === null || b === undefined)
20290 return false;
20291 // if one is a primitive, the other must be same
20292 if (util.isPrimitive(a) || util.isPrimitive(b))
20293 return a === b;
20294 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
20295 return false;
20296 var aIsArgs = isArguments(a);
20297 var bIsArgs = isArguments(b);
20298 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
20299 return false;
20300 if (aIsArgs) {
20301 a = pSlice.call(a);
20302 b = pSlice.call(b);
20303 return _deepEqual(a, b, strict);
20304 }
20305 var ka = objectKeys(a);
20306 var kb = objectKeys(b);
20307 var key, i;
20308 // having the same number of owned properties (keys incorporates
20309 // hasOwnProperty)
20310 if (ka.length !== kb.length)
20311 return false;
20312 //the same set of keys (although not necessarily the same order),
20313 ka.sort();
20314 kb.sort();
20315 //~~~cheap key test
20316 for (i = ka.length - 1; i >= 0; i--) {
20317 if (ka[i] !== kb[i])
20318 return false;
20319 }
20320 //equivalent values for every corresponding key, and
20321 //~~~possibly expensive deep test
20322 for (i = ka.length - 1; i >= 0; i--) {
20323 key = ka[i];
20324 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
20325 return false;
20326 }
20327 return true;
20328 }
20329
20330 // 8. The non-equivalence assertion tests for any deep inequality.
20331 // assert.notDeepEqual(actual, expected, message_opt);
20332
20333 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
20334 if (_deepEqual(actual, expected, false)) {
20335 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
20336 }
20337 };
20338
20339 assert.notDeepStrictEqual = notDeepStrictEqual;
20340 function notDeepStrictEqual(actual, expected, message) {
20341 if (_deepEqual(actual, expected, true)) {
20342 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
20343 }
20344 }
20345
20346
20347 // 9. The strict equality assertion tests strict equality, as determined by ===.
20348 // assert.strictEqual(actual, expected, message_opt);
20349
20350 assert.strictEqual = function strictEqual(actual, expected, message) {
20351 if (actual !== expected) {
20352 fail(actual, expected, message, '===', assert.strictEqual);
20353 }
20354 };
20355
20356 // 10. The strict non-equality assertion tests for strict inequality, as
20357 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
20358
20359 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
20360 if (actual === expected) {
20361 fail(actual, expected, message, '!==', assert.notStrictEqual);
20362 }
20363 };
20364
20365 function expectedException(actual, expected) {
20366 if (!actual || !expected) {
20367 return false;
20368 }
20369
20370 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
20371 return expected.test(actual);
20372 }
20373
20374 try {
20375 if (actual instanceof expected) {
20376 return true;
20377 }
20378 } catch (e) {
20379 // Ignore. The instanceof check doesn't work for arrow functions.
20380 }
20381
20382 if (Error.isPrototypeOf(expected)) {
20383 return false;
20384 }
20385
20386 return expected.call({}, actual) === true;
20387 }
20388
20389 function _tryBlock(block) {
20390 var error;
20391 try {
20392 block();
20393 } catch (e) {
20394 error = e;
20395 }
20396 return error;
20397 }
20398
20399 function _throws(shouldThrow, block, expected, message) {
20400 var actual;
20401
20402 if (typeof block !== 'function') {
20403 throw new TypeError('"block" argument must be a function');
20404 }
20405
20406 if (typeof expected === 'string') {
20407 message = expected;
20408 expected = null;
20409 }
20410
20411 actual = _tryBlock(block);
20412
20413 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
20414 (message ? ' ' + message : '.');
20415
20416 if (shouldThrow && !actual) {
20417 fail(actual, expected, 'Missing expected exception' + message);
20418 }
20419
20420 var userProvidedMessage = typeof message === 'string';
20421 var isUnwantedException = !shouldThrow && util.isError(actual);
20422 var isUnexpectedException = !shouldThrow && actual && !expected;
20423
20424 if ((isUnwantedException &&
20425 userProvidedMessage &&
20426 expectedException(actual, expected)) ||
20427 isUnexpectedException) {
20428 fail(actual, expected, 'Got unwanted exception' + message);
20429 }
20430
20431 if ((shouldThrow && actual && expected &&
20432 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
20433 throw actual;
20434 }
20435 }
20436
20437 // 11. Expected to throw an error:
20438 // assert.throws(block, Error_opt, message_opt);
20439
20440 assert.throws = function(block, /*optional*/error, /*optional*/message) {
20441 _throws(true, block, error, message);
20442 };
20443
20444 // EXTENSION! This is annoying to write outside this module.
20445 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
20446 _throws(false, block, error, message);
20447 };
20448
20449 assert.ifError = function(err) { if (err) throw err; };
20450
20451 var objectKeys = Object.keys || function (obj) {
20452 var keys = [];
20453 for (var key in obj) {
20454 if (hasOwn.call(obj, key)) keys.push(key);
20455 }
20456 return keys;
20457 };
20458
20459 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20460 },{"util/":30}],2:[function(require,module,exports){
20461 'use strict'
20462
20463 exports.byteLength = byteLength
20464 exports.toByteArray = toByteArray
20465 exports.fromByteArray = fromByteArray
20466
20467 var lookup = []
20468 var revLookup = []
20469 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
20470
20471 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
20472 for (var i = 0, len = code.length; i < len; ++i) {
20473 lookup[i] = code[i]
20474 revLookup[code.charCodeAt(i)] = i
20475 }
20476
20477 revLookup['-'.charCodeAt(0)] = 62
20478 revLookup['_'.charCodeAt(0)] = 63
20479
20480 function placeHoldersCount (b64) {
20481 var len = b64.length
20482 if (len % 4 > 0) {
20483 throw new Error('Invalid string. Length must be a multiple of 4')
20484 }
20485
20486 // the number of equal signs (place holders)
20487 // if there are two placeholders, than the two characters before it
20488 // represent one byte
20489 // if there is only one, then the three characters before it represent 2 bytes
20490 // this is just a cheap hack to not do indexOf twice
20491 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
20492 }
20493
20494 function byteLength (b64) {
20495 // base64 is 4/3 + up to two characters of the original data
20496 return b64.length * 3 / 4 - placeHoldersCount(b64)
20497 }
20498
20499 function toByteArray (b64) {
20500 var i, j, l, tmp, placeHolders, arr
20501 var len = b64.length
20502 placeHolders = placeHoldersCount(b64)
20503
20504 arr = new Arr(len * 3 / 4 - placeHolders)
20505
20506 // if there are placeholders, only get up to the last complete 4 chars
20507 l = placeHolders > 0 ? len - 4 : len
20508
20509 var L = 0
20510
20511 for (i = 0, j = 0; i < l; i += 4, j += 3) {
20512 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
20513 arr[L++] = (tmp >> 16) & 0xFF
20514 arr[L++] = (tmp >> 8) & 0xFF
20515 arr[L++] = tmp & 0xFF
20516 }
20517
20518 if (placeHolders === 2) {
20519 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
20520 arr[L++] = tmp & 0xFF
20521 } else if (placeHolders === 1) {
20522 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
20523 arr[L++] = (tmp >> 8) & 0xFF
20524 arr[L++] = tmp & 0xFF
20525 }
20526
20527 return arr
20528 }
20529
20530 function tripletToBase64 (num) {
20531 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
20532 }
20533
20534 function encodeChunk (uint8, start, end) {
20535 var tmp
20536 var output = []
20537 for (var i = start; i < end; i += 3) {
20538 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
20539 output.push(tripletToBase64(tmp))
20540 }
20541 return output.join('')
20542 }
20543
20544 function fromByteArray (uint8) {
20545 var tmp
20546 var len = uint8.length
20547 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
20548 var output = ''
20549 var parts = []
20550 var maxChunkLength = 16383 // must be multiple of 3
20551
20552 // go through the array every three bytes, we'll deal with trailing stuff later
20553 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
20554 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
20555 }
20556
20557 // pad the end with zeros, but make sure to not forget the extra bytes
20558 if (extraBytes === 1) {
20559 tmp = uint8[len - 1]
20560 output += lookup[tmp >> 2]
20561 output += lookup[(tmp << 4) & 0x3F]
20562 output += '=='
20563 } else if (extraBytes === 2) {
20564 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
20565 output += lookup[tmp >> 10]
20566 output += lookup[(tmp >> 4) & 0x3F]
20567 output += lookup[(tmp << 2) & 0x3F]
20568 output += '='
20569 }
20570
20571 parts.push(output)
20572
20573 return parts.join('')
20574 }
20575
20576 },{}],3:[function(require,module,exports){
20577
20578 },{}],4:[function(require,module,exports){
20579 (function (global){
20580 'use strict';
20581
20582 var buffer = require('buffer');
20583 var Buffer = buffer.Buffer;
20584 var SlowBuffer = buffer.SlowBuffer;
20585 var MAX_LEN = buffer.kMaxLength || 2147483647;
20586 exports.alloc = function alloc(size, fill, encoding) {
20587 if (typeof Buffer.alloc === 'function') {
20588 return Buffer.alloc(size, fill, encoding);
20589 }
20590 if (typeof encoding === 'number') {
20591 throw new TypeError('encoding must not be number');
20592 }
20593 if (typeof size !== 'number') {
20594 throw new TypeError('size must be a number');
20595 }
20596 if (size > MAX_LEN) {
20597 throw new RangeError('size is too large');
20598 }
20599 var enc = encoding;
20600 var _fill = fill;
20601 if (_fill === undefined) {
20602 enc = undefined;
20603 _fill = 0;
20604 }
20605 var buf = new Buffer(size);
20606 if (typeof _fill === 'string') {
20607 var fillBuf = new Buffer(_fill, enc);
20608 var flen = fillBuf.length;
20609 var i = -1;
20610 while (++i < size) {
20611 buf[i] = fillBuf[i % flen];
20612 }
20613 } else {
20614 buf.fill(_fill);
20615 }
20616 return buf;
20617 }
20618 exports.allocUnsafe = function allocUnsafe(size) {
20619 if (typeof Buffer.allocUnsafe === 'function') {
20620 return Buffer.allocUnsafe(size);
20621 }
20622 if (typeof size !== 'number') {
20623 throw new TypeError('size must be a number');
20624 }
20625 if (size > MAX_LEN) {
20626 throw new RangeError('size is too large');
20627 }
20628 return new Buffer(size);
20629 }
20630 exports.from = function from(value, encodingOrOffset, length) {
20631 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
20632 return Buffer.from(value, encodingOrOffset, length);
20633 }
20634 if (typeof value === 'number') {
20635 throw new TypeError('"value" argument must not be a number');
20636 }
20637 if (typeof value === 'string') {
20638 return new Buffer(value, encodingOrOffset);
20639 }
20640 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
20641 var offset = encodingOrOffset;
20642 if (arguments.length === 1) {
20643 return new Buffer(value);
20644 }
20645 if (typeof offset === 'undefined') {
20646 offset = 0;
20647 }
20648 var len = length;
20649 if (typeof len === 'undefined') {
20650 len = value.byteLength - offset;
20651 }
20652 if (offset >= value.byteLength) {
20653 throw new RangeError('\'offset\' is out of bounds');
20654 }
20655 if (len > value.byteLength - offset) {
20656 throw new RangeError('\'length\' is out of bounds');
20657 }
20658 return new Buffer(value.slice(offset, offset + len));
20659 }
20660 if (Buffer.isBuffer(value)) {
20661 var out = new Buffer(value.length);
20662 value.copy(out, 0, 0, value.length);
20663 return out;
20664 }
20665 if (value) {
20666 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
20667 return new Buffer(value);
20668 }
20669 if (value.type === 'Buffer' && Array.isArray(value.data)) {
20670 return new Buffer(value.data);
20671 }
20672 }
20673
20674 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
20675 }
20676 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
20677 if (typeof Buffer.allocUnsafeSlow === 'function') {
20678 return Buffer.allocUnsafeSlow(size);
20679 }
20680 if (typeof size !== 'number') {
20681 throw new TypeError('size must be a number');
20682 }
20683 if (size >= MAX_LEN) {
20684 throw new RangeError('size is too large');
20685 }
20686 return new SlowBuffer(size);
20687 }
20688
20689 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20690 },{"buffer":5}],5:[function(require,module,exports){
20691 /*!
20692 * The buffer module from node.js, for the browser.
20693 *
20694 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
20695 * @license MIT
20696 */
20697 /* eslint-disable no-proto */
20698
20699 'use strict'
20700
20701 var base64 = require('base64-js')
20702 var ieee754 = require('ieee754')
20703
20704 exports.Buffer = Buffer
20705 exports.SlowBuffer = SlowBuffer
20706 exports.INSPECT_MAX_BYTES = 50
20707
20708 var K_MAX_LENGTH = 0x7fffffff
20709 exports.kMaxLength = K_MAX_LENGTH
20710
20711 /**
20712 * If `Buffer.TYPED_ARRAY_SUPPORT`:
20713 * === true Use Uint8Array implementation (fastest)
20714 * === false Print warning and recommend using `buffer` v4.x which has an Object
20715 * implementation (most compatible, even IE6)
20716 *
20717 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
20718 * Opera 11.6+, iOS 4.2+.
20719 *
20720 * We report that the browser does not support typed arrays if the are not subclassable
20721 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
20722 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
20723 * for __proto__ and has a buggy typed array implementation.
20724 */
20725 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
20726
20727 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
20728 typeof console.error === 'function') {
20729 console.error(
20730 'This browser lacks typed array (Uint8Array) support which is required by ' +
20731 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
20732 )
20733 }
20734
20735 function typedArraySupport () {
20736 // Can typed array instances can be augmented?
20737 try {
20738 var arr = new Uint8Array(1)
20739 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
20740 return arr.foo() === 42
20741 } catch (e) {
20742 return false
20743 }
20744 }
20745
20746 function createBuffer (length) {
20747 if (length > K_MAX_LENGTH) {
20748 throw new RangeError('Invalid typed array length')
20749 }
20750 // Return an augmented `Uint8Array` instance
20751 var buf = new Uint8Array(length)
20752 buf.__proto__ = Buffer.prototype
20753 return buf
20754 }
20755
20756 /**
20757 * The Buffer constructor returns instances of `Uint8Array` that have their
20758 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
20759 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
20760 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
20761 * returns a single octet.
20762 *
20763 * The `Uint8Array` prototype remains unmodified.
20764 */
20765
20766 function Buffer (arg, encodingOrOffset, length) {
20767 // Common case.
20768 if (typeof arg === 'number') {
20769 if (typeof encodingOrOffset === 'string') {
20770 throw new Error(
20771 'If encoding is specified then the first argument must be a string'
20772 )
20773 }
20774 return allocUnsafe(arg)
20775 }
20776 return from(arg, encodingOrOffset, length)
20777 }
20778
20779 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
20780 if (typeof Symbol !== 'undefined' && Symbol.species &&
20781 Buffer[Symbol.species] === Buffer) {
20782 Object.defineProperty(Buffer, Symbol.species, {
20783 value: null,
20784 configurable: true,
20785 enumerable: false,
20786 writable: false
20787 })
20788 }
20789
20790 Buffer.poolSize = 8192 // not used by this implementation
20791
20792 function from (value, encodingOrOffset, length) {
20793 if (typeof value === 'number') {
20794 throw new TypeError('"value" argument must not be a number')
20795 }
20796
20797 if (value instanceof ArrayBuffer) {
20798 return fromArrayBuffer(value, encodingOrOffset, length)
20799 }
20800
20801 if (typeof value === 'string') {
20802 return fromString(value, encodingOrOffset)
20803 }
20804
20805 return fromObject(value)
20806 }
20807
20808 /**
20809 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
20810 * if value is a number.
20811 * Buffer.from(str[, encoding])
20812 * Buffer.from(array)
20813 * Buffer.from(buffer)
20814 * Buffer.from(arrayBuffer[, byteOffset[, length]])
20815 **/
20816 Buffer.from = function (value, encodingOrOffset, length) {
20817 return from(value, encodingOrOffset, length)
20818 }
20819
20820 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
20821 // https://github.com/feross/buffer/pull/148
20822 Buffer.prototype.__proto__ = Uint8Array.prototype
20823 Buffer.__proto__ = Uint8Array
20824
20825 function assertSize (size) {
20826 if (typeof size !== 'number') {
20827 throw new TypeError('"size" argument must be a number')
20828 } else if (size < 0) {
20829 throw new RangeError('"size" argument must not be negative')
20830 }
20831 }
20832
20833 function alloc (size, fill, encoding) {
20834 assertSize(size)
20835 if (size <= 0) {
20836 return createBuffer(size)
20837 }
20838 if (fill !== undefined) {
20839 // Only pay attention to encoding if it's a string. This
20840 // prevents accidentally sending in a number that would
20841 // be interpretted as a start offset.
20842 return typeof encoding === 'string'
20843 ? createBuffer(size).fill(fill, encoding)
20844 : createBuffer(size).fill(fill)
20845 }
20846 return createBuffer(size)
20847 }
20848
20849 /**
20850 * Creates a new filled Buffer instance.
20851 * alloc(size[, fill[, encoding]])
20852 **/
20853 Buffer.alloc = function (size, fill, encoding) {
20854 return alloc(size, fill, encoding)
20855 }
20856
20857 function allocUnsafe (size) {
20858 assertSize(size)
20859 return createBuffer(size < 0 ? 0 : checked(size) | 0)
20860 }
20861
20862 /**
20863 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
20864 * */
20865 Buffer.allocUnsafe = function (size) {
20866 return allocUnsafe(size)
20867 }
20868 /**
20869 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
20870 */
20871 Buffer.allocUnsafeSlow = function (size) {
20872 return allocUnsafe(size)
20873 }
20874
20875 function fromString (string, encoding) {
20876 if (typeof encoding !== 'string' || encoding === '') {
20877 encoding = 'utf8'
20878 }
20879
20880 if (!Buffer.isEncoding(encoding)) {
20881 throw new TypeError('"encoding" must be a valid string encoding')
20882 }
20883
20884 var length = byteLength(string, encoding) | 0
20885 var buf = createBuffer(length)
20886
20887 var actual = buf.write(string, encoding)
20888
20889 if (actual !== length) {
20890 // Writing a hex string, for example, that contains invalid characters will
20891 // cause everything after the first invalid character to be ignored. (e.g.
20892 // 'abxxcd' will be treated as 'ab')
20893 buf = buf.slice(0, actual)
20894 }
20895
20896 return buf
20897 }
20898
20899 function fromArrayLike (array) {
20900 var length = array.length < 0 ? 0 : checked(array.length) | 0
20901 var buf = createBuffer(length)
20902 for (var i = 0; i < length; i += 1) {
20903 buf[i] = array[i] & 255
20904 }
20905 return buf
20906 }
20907
20908 function fromArrayBuffer (array, byteOffset, length) {
20909 if (byteOffset < 0 || array.byteLength < byteOffset) {
20910 throw new RangeError('\'offset\' is out of bounds')
20911 }
20912
20913 if (array.byteLength < byteOffset + (length || 0)) {
20914 throw new RangeError('\'length\' is out of bounds')
20915 }
20916
20917 var buf
20918 if (byteOffset === undefined && length === undefined) {
20919 buf = new Uint8Array(array)
20920 } else if (length === undefined) {
20921 buf = new Uint8Array(array, byteOffset)
20922 } else {
20923 buf = new Uint8Array(array, byteOffset, length)
20924 }
20925
20926 // Return an augmented `Uint8Array` instance
20927 buf.__proto__ = Buffer.prototype
20928 return buf
20929 }
20930
20931 function fromObject (obj) {
20932 if (Buffer.isBuffer(obj)) {
20933 var len = checked(obj.length) | 0
20934 var buf = createBuffer(len)
20935
20936 if (buf.length === 0) {
20937 return buf
20938 }
20939
20940 obj.copy(buf, 0, 0, len)
20941 return buf
20942 }
20943
20944 if (obj) {
20945 if (ArrayBuffer.isView(obj) || 'length' in obj) {
20946 if (typeof obj.length !== 'number' || isnan(obj.length)) {
20947 return createBuffer(0)
20948 }
20949 return fromArrayLike(obj)
20950 }
20951
20952 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
20953 return fromArrayLike(obj.data)
20954 }
20955 }
20956
20957 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
20958 }
20959
20960 function checked (length) {
20961 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
20962 // length is NaN (which is otherwise coerced to zero.)
20963 if (length >= K_MAX_LENGTH) {
20964 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
20965 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
20966 }
20967 return length | 0
20968 }
20969
20970 function SlowBuffer (length) {
20971 if (+length != length) { // eslint-disable-line eqeqeq
20972 length = 0
20973 }
20974 return Buffer.alloc(+length)
20975 }
20976
20977 Buffer.isBuffer = function isBuffer (b) {
20978 return b != null && b._isBuffer === true
20979 }
20980
20981 Buffer.compare = function compare (a, b) {
20982 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
20983 throw new TypeError('Arguments must be Buffers')
20984 }
20985
20986 if (a === b) return 0
20987
20988 var x = a.length
20989 var y = b.length
20990
20991 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
20992 if (a[i] !== b[i]) {
20993 x = a[i]
20994 y = b[i]
20995 break
20996 }
20997 }
20998
20999 if (x < y) return -1
21000 if (y < x) return 1
21001 return 0
21002 }
21003
21004 Buffer.isEncoding = function isEncoding (encoding) {
21005 switch (String(encoding).toLowerCase()) {
21006 case 'hex':
21007 case 'utf8':
21008 case 'utf-8':
21009 case 'ascii':
21010 case 'latin1':
21011 case 'binary':
21012 case 'base64':
21013 case 'ucs2':
21014 case 'ucs-2':
21015 case 'utf16le':
21016 case 'utf-16le':
21017 return true
21018 default:
21019 return false
21020 }
21021 }
21022
21023 Buffer.concat = function concat (list, length) {
21024 if (!Array.isArray(list)) {
21025 throw new TypeError('"list" argument must be an Array of Buffers')
21026 }
21027
21028 if (list.length === 0) {
21029 return Buffer.alloc(0)
21030 }
21031
21032 var i
21033 if (length === undefined) {
21034 length = 0
21035 for (i = 0; i < list.length; ++i) {
21036 length += list[i].length
21037 }
21038 }
21039
21040 var buffer = Buffer.allocUnsafe(length)
21041 var pos = 0
21042 for (i = 0; i < list.length; ++i) {
21043 var buf = list[i]
21044 if (!Buffer.isBuffer(buf)) {
21045 throw new TypeError('"list" argument must be an Array of Buffers')
21046 }
21047 buf.copy(buffer, pos)
21048 pos += buf.length
21049 }
21050 return buffer
21051 }
21052
21053 function byteLength (string, encoding) {
21054 if (Buffer.isBuffer(string)) {
21055 return string.length
21056 }
21057 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
21058 return string.byteLength
21059 }
21060 if (typeof string !== 'string') {
21061 string = '' + string
21062 }
21063
21064 var len = string.length
21065 if (len === 0) return 0
21066
21067 // Use a for loop to avoid recursion
21068 var loweredCase = false
21069 for (;;) {
21070 switch (encoding) {
21071 case 'ascii':
21072 case 'latin1':
21073 case 'binary':
21074 return len
21075 case 'utf8':
21076 case 'utf-8':
21077 case undefined:
21078 return utf8ToBytes(string).length
21079 case 'ucs2':
21080 case 'ucs-2':
21081 case 'utf16le':
21082 case 'utf-16le':
21083 return len * 2
21084 case 'hex':
21085 return len >>> 1
21086 case 'base64':
21087 return base64ToBytes(string).length
21088 default:
21089 if (loweredCase) return utf8ToBytes(string).length // assume utf8
21090 encoding = ('' + encoding).toLowerCase()
21091 loweredCase = true
21092 }
21093 }
21094 }
21095 Buffer.byteLength = byteLength
21096
21097 function slowToString (encoding, start, end) {
21098 var loweredCase = false
21099
21100 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
21101 // property of a typed array.
21102
21103 // This behaves neither like String nor Uint8Array in that we set start/end
21104 // to their upper/lower bounds if the value passed is out of range.
21105 // undefined is handled specially as per ECMA-262 6th Edition,
21106 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
21107 if (start === undefined || start < 0) {
21108 start = 0
21109 }
21110 // Return early if start > this.length. Done here to prevent potential uint32
21111 // coercion fail below.
21112 if (start > this.length) {
21113 return ''
21114 }
21115
21116 if (end === undefined || end > this.length) {
21117 end = this.length
21118 }
21119
21120 if (end <= 0) {
21121 return ''
21122 }
21123
21124 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
21125 end >>>= 0
21126 start >>>= 0
21127
21128 if (end <= start) {
21129 return ''
21130 }
21131
21132 if (!encoding) encoding = 'utf8'
21133
21134 while (true) {
21135 switch (encoding) {
21136 case 'hex':
21137 return hexSlice(this, start, end)
21138
21139 case 'utf8':
21140 case 'utf-8':
21141 return utf8Slice(this, start, end)
21142
21143 case 'ascii':
21144 return asciiSlice(this, start, end)
21145
21146 case 'latin1':
21147 case 'binary':
21148 return latin1Slice(this, start, end)
21149
21150 case 'base64':
21151 return base64Slice(this, start, end)
21152
21153 case 'ucs2':
21154 case 'ucs-2':
21155 case 'utf16le':
21156 case 'utf-16le':
21157 return utf16leSlice(this, start, end)
21158
21159 default:
21160 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
21161 encoding = (encoding + '').toLowerCase()
21162 loweredCase = true
21163 }
21164 }
21165 }
21166
21167 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
21168 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
21169 // reliably in a browserify context because there could be multiple different
21170 // copies of the 'buffer' package in use. This method works even for Buffer
21171 // instances that were created from another copy of the `buffer` package.
21172 // See: https://github.com/feross/buffer/issues/154
21173 Buffer.prototype._isBuffer = true
21174
21175 function swap (b, n, m) {
21176 var i = b[n]
21177 b[n] = b[m]
21178 b[m] = i
21179 }
21180
21181 Buffer.prototype.swap16 = function swap16 () {
21182 var len = this.length
21183 if (len % 2 !== 0) {
21184 throw new RangeError('Buffer size must be a multiple of 16-bits')
21185 }
21186 for (var i = 0; i < len; i += 2) {
21187 swap(this, i, i + 1)
21188 }
21189 return this
21190 }
21191
21192 Buffer.prototype.swap32 = function swap32 () {
21193 var len = this.length
21194 if (len % 4 !== 0) {
21195 throw new RangeError('Buffer size must be a multiple of 32-bits')
21196 }
21197 for (var i = 0; i < len; i += 4) {
21198 swap(this, i, i + 3)
21199 swap(this, i + 1, i + 2)
21200 }
21201 return this
21202 }
21203
21204 Buffer.prototype.swap64 = function swap64 () {
21205 var len = this.length
21206 if (len % 8 !== 0) {
21207 throw new RangeError('Buffer size must be a multiple of 64-bits')
21208 }
21209 for (var i = 0; i < len; i += 8) {
21210 swap(this, i, i + 7)
21211 swap(this, i + 1, i + 6)
21212 swap(this, i + 2, i + 5)
21213 swap(this, i + 3, i + 4)
21214 }
21215 return this
21216 }
21217
21218 Buffer.prototype.toString = function toString () {
21219 var length = this.length
21220 if (length === 0) return ''
21221 if (arguments.length === 0) return utf8Slice(this, 0, length)
21222 return slowToString.apply(this, arguments)
21223 }
21224
21225 Buffer.prototype.equals = function equals (b) {
21226 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
21227 if (this === b) return true
21228 return Buffer.compare(this, b) === 0
21229 }
21230
21231 Buffer.prototype.inspect = function inspect () {
21232 var str = ''
21233 var max = exports.INSPECT_MAX_BYTES
21234 if (this.length > 0) {
21235 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
21236 if (this.length > max) str += ' ... '
21237 }
21238 return '<Buffer ' + str + '>'
21239 }
21240
21241 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
21242 if (!Buffer.isBuffer(target)) {
21243 throw new TypeError('Argument must be a Buffer')
21244 }
21245
21246 if (start === undefined) {
21247 start = 0
21248 }
21249 if (end === undefined) {
21250 end = target ? target.length : 0
21251 }
21252 if (thisStart === undefined) {
21253 thisStart = 0
21254 }
21255 if (thisEnd === undefined) {
21256 thisEnd = this.length
21257 }
21258
21259 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
21260 throw new RangeError('out of range index')
21261 }
21262
21263 if (thisStart >= thisEnd && start >= end) {
21264 return 0
21265 }
21266 if (thisStart >= thisEnd) {
21267 return -1
21268 }
21269 if (start >= end) {
21270 return 1
21271 }
21272
21273 start >>>= 0
21274 end >>>= 0
21275 thisStart >>>= 0
21276 thisEnd >>>= 0
21277
21278 if (this === target) return 0
21279
21280 var x = thisEnd - thisStart
21281 var y = end - start
21282 var len = Math.min(x, y)
21283
21284 var thisCopy = this.slice(thisStart, thisEnd)
21285 var targetCopy = target.slice(start, end)
21286
21287 for (var i = 0; i < len; ++i) {
21288 if (thisCopy[i] !== targetCopy[i]) {
21289 x = thisCopy[i]
21290 y = targetCopy[i]
21291 break
21292 }
21293 }
21294
21295 if (x < y) return -1
21296 if (y < x) return 1
21297 return 0
21298 }
21299
21300 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
21301 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
21302 //
21303 // Arguments:
21304 // - buffer - a Buffer to search
21305 // - val - a string, Buffer, or number
21306 // - byteOffset - an index into `buffer`; will be clamped to an int32
21307 // - encoding - an optional encoding, relevant is val is a string
21308 // - dir - true for indexOf, false for lastIndexOf
21309 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
21310 // Empty buffer means no match
21311 if (buffer.length === 0) return -1
21312
21313 // Normalize byteOffset
21314 if (typeof byteOffset === 'string') {
21315 encoding = byteOffset
21316 byteOffset = 0
21317 } else if (byteOffset > 0x7fffffff) {
21318 byteOffset = 0x7fffffff
21319 } else if (byteOffset < -0x80000000) {
21320 byteOffset = -0x80000000
21321 }
21322 byteOffset = +byteOffset // Coerce to Number.
21323 if (isNaN(byteOffset)) {
21324 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
21325 byteOffset = dir ? 0 : (buffer.length - 1)
21326 }
21327
21328 // Normalize byteOffset: negative offsets start from the end of the buffer
21329 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
21330 if (byteOffset >= buffer.length) {
21331 if (dir) return -1
21332 else byteOffset = buffer.length - 1
21333 } else if (byteOffset < 0) {
21334 if (dir) byteOffset = 0
21335 else return -1
21336 }
21337
21338 // Normalize val
21339 if (typeof val === 'string') {
21340 val = Buffer.from(val, encoding)
21341 }
21342
21343 // Finally, search either indexOf (if dir is true) or lastIndexOf
21344 if (Buffer.isBuffer(val)) {
21345 // Special case: looking for empty string/buffer always fails
21346 if (val.length === 0) {
21347 return -1
21348 }
21349 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
21350 } else if (typeof val === 'number') {
21351 val = val & 0xFF // Search for a byte value [0-255]
21352 if (typeof Uint8Array.prototype.indexOf === 'function') {
21353 if (dir) {
21354 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
21355 } else {
21356 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
21357 }
21358 }
21359 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
21360 }
21361
21362 throw new TypeError('val must be string, number or Buffer')
21363 }
21364
21365 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
21366 var indexSize = 1
21367 var arrLength = arr.length
21368 var valLength = val.length
21369
21370 if (encoding !== undefined) {
21371 encoding = String(encoding).toLowerCase()
21372 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
21373 encoding === 'utf16le' || encoding === 'utf-16le') {
21374 if (arr.length < 2 || val.length < 2) {
21375 return -1
21376 }
21377 indexSize = 2
21378 arrLength /= 2
21379 valLength /= 2
21380 byteOffset /= 2
21381 }
21382 }
21383
21384 function read (buf, i) {
21385 if (indexSize === 1) {
21386 return buf[i]
21387 } else {
21388 return buf.readUInt16BE(i * indexSize)
21389 }
21390 }
21391
21392 var i
21393 if (dir) {
21394 var foundIndex = -1
21395 for (i = byteOffset; i < arrLength; i++) {
21396 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
21397 if (foundIndex === -1) foundIndex = i
21398 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
21399 } else {
21400 if (foundIndex !== -1) i -= i - foundIndex
21401 foundIndex = -1
21402 }
21403 }
21404 } else {
21405 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
21406 for (i = byteOffset; i >= 0; i--) {
21407 var found = true
21408 for (var j = 0; j < valLength; j++) {
21409 if (read(arr, i + j) !== read(val, j)) {
21410 found = false
21411 break
21412 }
21413 }
21414 if (found) return i
21415 }
21416 }
21417
21418 return -1
21419 }
21420
21421 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
21422 return this.indexOf(val, byteOffset, encoding) !== -1
21423 }
21424
21425 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
21426 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
21427 }
21428
21429 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
21430 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
21431 }
21432
21433 function hexWrite (buf, string, offset, length) {
21434 offset = Number(offset) || 0
21435 var remaining = buf.length - offset
21436 if (!length) {
21437 length = remaining
21438 } else {
21439 length = Number(length)
21440 if (length > remaining) {
21441 length = remaining
21442 }
21443 }
21444
21445 // must be an even number of digits
21446 var strLen = string.length
21447 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
21448
21449 if (length > strLen / 2) {
21450 length = strLen / 2
21451 }
21452 for (var i = 0; i < length; ++i) {
21453 var parsed = parseInt(string.substr(i * 2, 2), 16)
21454 if (isNaN(parsed)) return i
21455 buf[offset + i] = parsed
21456 }
21457 return i
21458 }
21459
21460 function utf8Write (buf, string, offset, length) {
21461 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
21462 }
21463
21464 function asciiWrite (buf, string, offset, length) {
21465 return blitBuffer(asciiToBytes(string), buf, offset, length)
21466 }
21467
21468 function latin1Write (buf, string, offset, length) {
21469 return asciiWrite(buf, string, offset, length)
21470 }
21471
21472 function base64Write (buf, string, offset, length) {
21473 return blitBuffer(base64ToBytes(string), buf, offset, length)
21474 }
21475
21476 function ucs2Write (buf, string, offset, length) {
21477 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
21478 }
21479
21480 Buffer.prototype.write = function write (string, offset, length, encoding) {
21481 // Buffer#write(string)
21482 if (offset === undefined) {
21483 encoding = 'utf8'
21484 length = this.length
21485 offset = 0
21486 // Buffer#write(string, encoding)
21487 } else if (length === undefined && typeof offset === 'string') {
21488 encoding = offset
21489 length = this.length
21490 offset = 0
21491 // Buffer#write(string, offset[, length][, encoding])
21492 } else if (isFinite(offset)) {
21493 offset = offset >>> 0
21494 if (isFinite(length)) {
21495 length = length >>> 0
21496 if (encoding === undefined) encoding = 'utf8'
21497 } else {
21498 encoding = length
21499 length = undefined
21500 }
21501 } else {
21502 throw new Error(
21503 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
21504 )
21505 }
21506
21507 var remaining = this.length - offset
21508 if (length === undefined || length > remaining) length = remaining
21509
21510 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
21511 throw new RangeError('Attempt to write outside buffer bounds')
21512 }
21513
21514 if (!encoding) encoding = 'utf8'
21515
21516 var loweredCase = false
21517 for (;;) {
21518 switch (encoding) {
21519 case 'hex':
21520 return hexWrite(this, string, offset, length)
21521
21522 case 'utf8':
21523 case 'utf-8':
21524 return utf8Write(this, string, offset, length)
21525
21526 case 'ascii':
21527 return asciiWrite(this, string, offset, length)
21528
21529 case 'latin1':
21530 case 'binary':
21531 return latin1Write(this, string, offset, length)
21532
21533 case 'base64':
21534 // Warning: maxLength not taken into account in base64Write
21535 return base64Write(this, string, offset, length)
21536
21537 case 'ucs2':
21538 case 'ucs-2':
21539 case 'utf16le':
21540 case 'utf-16le':
21541 return ucs2Write(this, string, offset, length)
21542
21543 default:
21544 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
21545 encoding = ('' + encoding).toLowerCase()
21546 loweredCase = true
21547 }
21548 }
21549 }
21550
21551 Buffer.prototype.toJSON = function toJSON () {
21552 return {
21553 type: 'Buffer',
21554 data: Array.prototype.slice.call(this._arr || this, 0)
21555 }
21556 }
21557
21558 function base64Slice (buf, start, end) {
21559 if (start === 0 && end === buf.length) {
21560 return base64.fromByteArray(buf)
21561 } else {
21562 return base64.fromByteArray(buf.slice(start, end))
21563 }
21564 }
21565
21566 function utf8Slice (buf, start, end) {
21567 end = Math.min(buf.length, end)
21568 var res = []
21569
21570 var i = start
21571 while (i < end) {
21572 var firstByte = buf[i]
21573 var codePoint = null
21574 var bytesPerSequence = (firstByte > 0xEF) ? 4
21575 : (firstByte > 0xDF) ? 3
21576 : (firstByte > 0xBF) ? 2
21577 : 1
21578
21579 if (i + bytesPerSequence <= end) {
21580 var secondByte, thirdByte, fourthByte, tempCodePoint
21581
21582 switch (bytesPerSequence) {
21583 case 1:
21584 if (firstByte < 0x80) {
21585 codePoint = firstByte
21586 }
21587 break
21588 case 2:
21589 secondByte = buf[i + 1]
21590 if ((secondByte & 0xC0) === 0x80) {
21591 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
21592 if (tempCodePoint > 0x7F) {
21593 codePoint = tempCodePoint
21594 }
21595 }
21596 break
21597 case 3:
21598 secondByte = buf[i + 1]
21599 thirdByte = buf[i + 2]
21600 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
21601 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
21602 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
21603 codePoint = tempCodePoint
21604 }
21605 }
21606 break
21607 case 4:
21608 secondByte = buf[i + 1]
21609 thirdByte = buf[i + 2]
21610 fourthByte = buf[i + 3]
21611 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
21612 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
21613 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
21614 codePoint = tempCodePoint
21615 }
21616 }
21617 }
21618 }
21619
21620 if (codePoint === null) {
21621 // we did not generate a valid codePoint so insert a
21622 // replacement char (U+FFFD) and advance only 1 byte
21623 codePoint = 0xFFFD
21624 bytesPerSequence = 1
21625 } else if (codePoint > 0xFFFF) {
21626 // encode to utf16 (surrogate pair dance)
21627 codePoint -= 0x10000
21628 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
21629 codePoint = 0xDC00 | codePoint & 0x3FF
21630 }
21631
21632 res.push(codePoint)
21633 i += bytesPerSequence
21634 }
21635
21636 return decodeCodePointsArray(res)
21637 }
21638
21639 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
21640 // the lowest limit is Chrome, with 0x10000 args.
21641 // We go 1 magnitude less, for safety
21642 var MAX_ARGUMENTS_LENGTH = 0x1000
21643
21644 function decodeCodePointsArray (codePoints) {
21645 var len = codePoints.length
21646 if (len <= MAX_ARGUMENTS_LENGTH) {
21647 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
21648 }
21649
21650 // Decode in chunks to avoid "call stack size exceeded".
21651 var res = ''
21652 var i = 0
21653 while (i < len) {
21654 res += String.fromCharCode.apply(
21655 String,
21656 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
21657 )
21658 }
21659 return res
21660 }
21661
21662 function asciiSlice (buf, start, end) {
21663 var ret = ''
21664 end = Math.min(buf.length, end)
21665
21666 for (var i = start; i < end; ++i) {
21667 ret += String.fromCharCode(buf[i] & 0x7F)
21668 }
21669 return ret
21670 }
21671
21672 function latin1Slice (buf, start, end) {
21673 var ret = ''
21674 end = Math.min(buf.length, end)
21675
21676 for (var i = start; i < end; ++i) {
21677 ret += String.fromCharCode(buf[i])
21678 }
21679 return ret
21680 }
21681
21682 function hexSlice (buf, start, end) {
21683 var len = buf.length
21684
21685 if (!start || start < 0) start = 0
21686 if (!end || end < 0 || end > len) end = len
21687
21688 var out = ''
21689 for (var i = start; i < end; ++i) {
21690 out += toHex(buf[i])
21691 }
21692 return out
21693 }
21694
21695 function utf16leSlice (buf, start, end) {
21696 var bytes = buf.slice(start, end)
21697 var res = ''
21698 for (var i = 0; i < bytes.length; i += 2) {
21699 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
21700 }
21701 return res
21702 }
21703
21704 Buffer.prototype.slice = function slice (start, end) {
21705 var len = this.length
21706 start = ~~start
21707 end = end === undefined ? len : ~~end
21708
21709 if (start < 0) {
21710 start += len
21711 if (start < 0) start = 0
21712 } else if (start > len) {
21713 start = len
21714 }
21715
21716 if (end < 0) {
21717 end += len
21718 if (end < 0) end = 0
21719 } else if (end > len) {
21720 end = len
21721 }
21722
21723 if (end < start) end = start
21724
21725 var newBuf = this.subarray(start, end)
21726 // Return an augmented `Uint8Array` instance
21727 newBuf.__proto__ = Buffer.prototype
21728 return newBuf
21729 }
21730
21731 /*
21732 * Need to make sure that buffer isn't trying to write out of bounds.
21733 */
21734 function checkOffset (offset, ext, length) {
21735 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
21736 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
21737 }
21738
21739 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
21740 offset = offset >>> 0
21741 byteLength = byteLength >>> 0
21742 if (!noAssert) checkOffset(offset, byteLength, this.length)
21743
21744 var val = this[offset]
21745 var mul = 1
21746 var i = 0
21747 while (++i < byteLength && (mul *= 0x100)) {
21748 val += this[offset + i] * mul
21749 }
21750
21751 return val
21752 }
21753
21754 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
21755 offset = offset >>> 0
21756 byteLength = byteLength >>> 0
21757 if (!noAssert) {
21758 checkOffset(offset, byteLength, this.length)
21759 }
21760
21761 var val = this[offset + --byteLength]
21762 var mul = 1
21763 while (byteLength > 0 && (mul *= 0x100)) {
21764 val += this[offset + --byteLength] * mul
21765 }
21766
21767 return val
21768 }
21769
21770 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
21771 offset = offset >>> 0
21772 if (!noAssert) checkOffset(offset, 1, this.length)
21773 return this[offset]
21774 }
21775
21776 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
21777 offset = offset >>> 0
21778 if (!noAssert) checkOffset(offset, 2, this.length)
21779 return this[offset] | (this[offset + 1] << 8)
21780 }
21781
21782 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
21783 offset = offset >>> 0
21784 if (!noAssert) checkOffset(offset, 2, this.length)
21785 return (this[offset] << 8) | this[offset + 1]
21786 }
21787
21788 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
21789 offset = offset >>> 0
21790 if (!noAssert) checkOffset(offset, 4, this.length)
21791
21792 return ((this[offset]) |
21793 (this[offset + 1] << 8) |
21794 (this[offset + 2] << 16)) +
21795 (this[offset + 3] * 0x1000000)
21796 }
21797
21798 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
21799 offset = offset >>> 0
21800 if (!noAssert) checkOffset(offset, 4, this.length)
21801
21802 return (this[offset] * 0x1000000) +
21803 ((this[offset + 1] << 16) |
21804 (this[offset + 2] << 8) |
21805 this[offset + 3])
21806 }
21807
21808 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
21809 offset = offset >>> 0
21810 byteLength = byteLength >>> 0
21811 if (!noAssert) checkOffset(offset, byteLength, this.length)
21812
21813 var val = this[offset]
21814 var mul = 1
21815 var i = 0
21816 while (++i < byteLength && (mul *= 0x100)) {
21817 val += this[offset + i] * mul
21818 }
21819 mul *= 0x80
21820
21821 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
21822
21823 return val
21824 }
21825
21826 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
21827 offset = offset >>> 0
21828 byteLength = byteLength >>> 0
21829 if (!noAssert) checkOffset(offset, byteLength, this.length)
21830
21831 var i = byteLength
21832 var mul = 1
21833 var val = this[offset + --i]
21834 while (i > 0 && (mul *= 0x100)) {
21835 val += this[offset + --i] * mul
21836 }
21837 mul *= 0x80
21838
21839 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
21840
21841 return val
21842 }
21843
21844 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
21845 offset = offset >>> 0
21846 if (!noAssert) checkOffset(offset, 1, this.length)
21847 if (!(this[offset] & 0x80)) return (this[offset])
21848 return ((0xff - this[offset] + 1) * -1)
21849 }
21850
21851 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
21852 offset = offset >>> 0
21853 if (!noAssert) checkOffset(offset, 2, this.length)
21854 var val = this[offset] | (this[offset + 1] << 8)
21855 return (val & 0x8000) ? val | 0xFFFF0000 : val
21856 }
21857
21858 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
21859 offset = offset >>> 0
21860 if (!noAssert) checkOffset(offset, 2, this.length)
21861 var val = this[offset + 1] | (this[offset] << 8)
21862 return (val & 0x8000) ? val | 0xFFFF0000 : val
21863 }
21864
21865 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
21866 offset = offset >>> 0
21867 if (!noAssert) checkOffset(offset, 4, this.length)
21868
21869 return (this[offset]) |
21870 (this[offset + 1] << 8) |
21871 (this[offset + 2] << 16) |
21872 (this[offset + 3] << 24)
21873 }
21874
21875 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
21876 offset = offset >>> 0
21877 if (!noAssert) checkOffset(offset, 4, this.length)
21878
21879 return (this[offset] << 24) |
21880 (this[offset + 1] << 16) |
21881 (this[offset + 2] << 8) |
21882 (this[offset + 3])
21883 }
21884
21885 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
21886 offset = offset >>> 0
21887 if (!noAssert) checkOffset(offset, 4, this.length)
21888 return ieee754.read(this, offset, true, 23, 4)
21889 }
21890
21891 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
21892 offset = offset >>> 0
21893 if (!noAssert) checkOffset(offset, 4, this.length)
21894 return ieee754.read(this, offset, false, 23, 4)
21895 }
21896
21897 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
21898 offset = offset >>> 0
21899 if (!noAssert) checkOffset(offset, 8, this.length)
21900 return ieee754.read(this, offset, true, 52, 8)
21901 }
21902
21903 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
21904 offset = offset >>> 0
21905 if (!noAssert) checkOffset(offset, 8, this.length)
21906 return ieee754.read(this, offset, false, 52, 8)
21907 }
21908
21909 function checkInt (buf, value, offset, ext, max, min) {
21910 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
21911 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
21912 if (offset + ext > buf.length) throw new RangeError('Index out of range')
21913 }
21914
21915 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
21916 value = +value
21917 offset = offset >>> 0
21918 byteLength = byteLength >>> 0
21919 if (!noAssert) {
21920 var maxBytes = Math.pow(2, 8 * byteLength) - 1
21921 checkInt(this, value, offset, byteLength, maxBytes, 0)
21922 }
21923
21924 var mul = 1
21925 var i = 0
21926 this[offset] = value & 0xFF
21927 while (++i < byteLength && (mul *= 0x100)) {
21928 this[offset + i] = (value / mul) & 0xFF
21929 }
21930
21931 return offset + byteLength
21932 }
21933
21934 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
21935 value = +value
21936 offset = offset >>> 0
21937 byteLength = byteLength >>> 0
21938 if (!noAssert) {
21939 var maxBytes = Math.pow(2, 8 * byteLength) - 1
21940 checkInt(this, value, offset, byteLength, maxBytes, 0)
21941 }
21942
21943 var i = byteLength - 1
21944 var mul = 1
21945 this[offset + i] = value & 0xFF
21946 while (--i >= 0 && (mul *= 0x100)) {
21947 this[offset + i] = (value / mul) & 0xFF
21948 }
21949
21950 return offset + byteLength
21951 }
21952
21953 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
21954 value = +value
21955 offset = offset >>> 0
21956 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
21957 this[offset] = (value & 0xff)
21958 return offset + 1
21959 }
21960
21961 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
21962 value = +value
21963 offset = offset >>> 0
21964 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
21965 this[offset] = (value & 0xff)
21966 this[offset + 1] = (value >>> 8)
21967 return offset + 2
21968 }
21969
21970 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
21971 value = +value
21972 offset = offset >>> 0
21973 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
21974 this[offset] = (value >>> 8)
21975 this[offset + 1] = (value & 0xff)
21976 return offset + 2
21977 }
21978
21979 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
21980 value = +value
21981 offset = offset >>> 0
21982 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
21983 this[offset + 3] = (value >>> 24)
21984 this[offset + 2] = (value >>> 16)
21985 this[offset + 1] = (value >>> 8)
21986 this[offset] = (value & 0xff)
21987 return offset + 4
21988 }
21989
21990 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
21991 value = +value
21992 offset = offset >>> 0
21993 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
21994 this[offset] = (value >>> 24)
21995 this[offset + 1] = (value >>> 16)
21996 this[offset + 2] = (value >>> 8)
21997 this[offset + 3] = (value & 0xff)
21998 return offset + 4
21999 }
22000
22001 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
22002 value = +value
22003 offset = offset >>> 0
22004 if (!noAssert) {
22005 var limit = Math.pow(2, (8 * byteLength) - 1)
22006
22007 checkInt(this, value, offset, byteLength, limit - 1, -limit)
22008 }
22009
22010 var i = 0
22011 var mul = 1
22012 var sub = 0
22013 this[offset] = value & 0xFF
22014 while (++i < byteLength && (mul *= 0x100)) {
22015 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
22016 sub = 1
22017 }
22018 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
22019 }
22020
22021 return offset + byteLength
22022 }
22023
22024 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
22025 value = +value
22026 offset = offset >>> 0
22027 if (!noAssert) {
22028 var limit = Math.pow(2, (8 * byteLength) - 1)
22029
22030 checkInt(this, value, offset, byteLength, limit - 1, -limit)
22031 }
22032
22033 var i = byteLength - 1
22034 var mul = 1
22035 var sub = 0
22036 this[offset + i] = value & 0xFF
22037 while (--i >= 0 && (mul *= 0x100)) {
22038 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
22039 sub = 1
22040 }
22041 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
22042 }
22043
22044 return offset + byteLength
22045 }
22046
22047 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
22048 value = +value
22049 offset = offset >>> 0
22050 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
22051 if (value < 0) value = 0xff + value + 1
22052 this[offset] = (value & 0xff)
22053 return offset + 1
22054 }
22055
22056 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
22057 value = +value
22058 offset = offset >>> 0
22059 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
22060 this[offset] = (value & 0xff)
22061 this[offset + 1] = (value >>> 8)
22062 return offset + 2
22063 }
22064
22065 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
22066 value = +value
22067 offset = offset >>> 0
22068 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
22069 this[offset] = (value >>> 8)
22070 this[offset + 1] = (value & 0xff)
22071 return offset + 2
22072 }
22073
22074 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
22075 value = +value
22076 offset = offset >>> 0
22077 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
22078 this[offset] = (value & 0xff)
22079 this[offset + 1] = (value >>> 8)
22080 this[offset + 2] = (value >>> 16)
22081 this[offset + 3] = (value >>> 24)
22082 return offset + 4
22083 }
22084
22085 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
22086 value = +value
22087 offset = offset >>> 0
22088 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
22089 if (value < 0) value = 0xffffffff + value + 1
22090 this[offset] = (value >>> 24)
22091 this[offset + 1] = (value >>> 16)
22092 this[offset + 2] = (value >>> 8)
22093 this[offset + 3] = (value & 0xff)
22094 return offset + 4
22095 }
22096
22097 function checkIEEE754 (buf, value, offset, ext, max, min) {
22098 if (offset + ext > buf.length) throw new RangeError('Index out of range')
22099 if (offset < 0) throw new RangeError('Index out of range')
22100 }
22101
22102 function writeFloat (buf, value, offset, littleEndian, noAssert) {
22103 value = +value
22104 offset = offset >>> 0
22105 if (!noAssert) {
22106 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
22107 }
22108 ieee754.write(buf, value, offset, littleEndian, 23, 4)
22109 return offset + 4
22110 }
22111
22112 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
22113 return writeFloat(this, value, offset, true, noAssert)
22114 }
22115
22116 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
22117 return writeFloat(this, value, offset, false, noAssert)
22118 }
22119
22120 function writeDouble (buf, value, offset, littleEndian, noAssert) {
22121 value = +value
22122 offset = offset >>> 0
22123 if (!noAssert) {
22124 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
22125 }
22126 ieee754.write(buf, value, offset, littleEndian, 52, 8)
22127 return offset + 8
22128 }
22129
22130 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
22131 return writeDouble(this, value, offset, true, noAssert)
22132 }
22133
22134 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
22135 return writeDouble(this, value, offset, false, noAssert)
22136 }
22137
22138 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
22139 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
22140 if (!start) start = 0
22141 if (!end && end !== 0) end = this.length
22142 if (targetStart >= target.length) targetStart = target.length
22143 if (!targetStart) targetStart = 0
22144 if (end > 0 && end < start) end = start
22145
22146 // Copy 0 bytes; we're done
22147 if (end === start) return 0
22148 if (target.length === 0 || this.length === 0) return 0
22149
22150 // Fatal error conditions
22151 if (targetStart < 0) {
22152 throw new RangeError('targetStart out of bounds')
22153 }
22154 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
22155 if (end < 0) throw new RangeError('sourceEnd out of bounds')
22156
22157 // Are we oob?
22158 if (end > this.length) end = this.length
22159 if (target.length - targetStart < end - start) {
22160 end = target.length - targetStart + start
22161 }
22162
22163 var len = end - start
22164 var i
22165
22166 if (this === target && start < targetStart && targetStart < end) {
22167 // descending copy from end
22168 for (i = len - 1; i >= 0; --i) {
22169 target[i + targetStart] = this[i + start]
22170 }
22171 } else if (len < 1000) {
22172 // ascending copy from start
22173 for (i = 0; i < len; ++i) {
22174 target[i + targetStart] = this[i + start]
22175 }
22176 } else {
22177 Uint8Array.prototype.set.call(
22178 target,
22179 this.subarray(start, start + len),
22180 targetStart
22181 )
22182 }
22183
22184 return len
22185 }
22186
22187 // Usage:
22188 // buffer.fill(number[, offset[, end]])
22189 // buffer.fill(buffer[, offset[, end]])
22190 // buffer.fill(string[, offset[, end]][, encoding])
22191 Buffer.prototype.fill = function fill (val, start, end, encoding) {
22192 // Handle string cases:
22193 if (typeof val === 'string') {
22194 if (typeof start === 'string') {
22195 encoding = start
22196 start = 0
22197 end = this.length
22198 } else if (typeof end === 'string') {
22199 encoding = end
22200 end = this.length
22201 }
22202 if (val.length === 1) {
22203 var code = val.charCodeAt(0)
22204 if (code < 256) {
22205 val = code
22206 }
22207 }
22208 if (encoding !== undefined && typeof encoding !== 'string') {
22209 throw new TypeError('encoding must be a string')
22210 }
22211 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
22212 throw new TypeError('Unknown encoding: ' + encoding)
22213 }
22214 } else if (typeof val === 'number') {
22215 val = val & 255
22216 }
22217
22218 // Invalid ranges are not set to a default, so can range check early.
22219 if (start < 0 || this.length < start || this.length < end) {
22220 throw new RangeError('Out of range index')
22221 }
22222
22223 if (end <= start) {
22224 return this
22225 }
22226
22227 start = start >>> 0
22228 end = end === undefined ? this.length : end >>> 0
22229
22230 if (!val) val = 0
22231
22232 var i
22233 if (typeof val === 'number') {
22234 for (i = start; i < end; ++i) {
22235 this[i] = val
22236 }
22237 } else {
22238 var bytes = Buffer.isBuffer(val)
22239 ? val
22240 : new Buffer(val, encoding)
22241 var len = bytes.length
22242 for (i = 0; i < end - start; ++i) {
22243 this[i + start] = bytes[i % len]
22244 }
22245 }
22246
22247 return this
22248 }
22249
22250 // HELPER FUNCTIONS
22251 // ================
22252
22253 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
22254
22255 function base64clean (str) {
22256 // Node strips out invalid characters like \n and \t from the string, base64-js does not
22257 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
22258 // Node converts strings with length < 2 to ''
22259 if (str.length < 2) return ''
22260 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
22261 while (str.length % 4 !== 0) {
22262 str = str + '='
22263 }
22264 return str
22265 }
22266
22267 function stringtrim (str) {
22268 if (str.trim) return str.trim()
22269 return str.replace(/^\s+|\s+$/g, '')
22270 }
22271
22272 function toHex (n) {
22273 if (n < 16) return '0' + n.toString(16)
22274 return n.toString(16)
22275 }
22276
22277 function utf8ToBytes (string, units) {
22278 units = units || Infinity
22279 var codePoint
22280 var length = string.length
22281 var leadSurrogate = null
22282 var bytes = []
22283
22284 for (var i = 0; i < length; ++i) {
22285 codePoint = string.charCodeAt(i)
22286
22287 // is surrogate component
22288 if (codePoint > 0xD7FF && codePoint < 0xE000) {
22289 // last char was a lead
22290 if (!leadSurrogate) {
22291 // no lead yet
22292 if (codePoint > 0xDBFF) {
22293 // unexpected trail
22294 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22295 continue
22296 } else if (i + 1 === length) {
22297 // unpaired lead
22298 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22299 continue
22300 }
22301
22302 // valid lead
22303 leadSurrogate = codePoint
22304
22305 continue
22306 }
22307
22308 // 2 leads in a row
22309 if (codePoint < 0xDC00) {
22310 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22311 leadSurrogate = codePoint
22312 continue
22313 }
22314
22315 // valid surrogate pair
22316 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
22317 } else if (leadSurrogate) {
22318 // valid bmp char, but last char was a lead
22319 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22320 }
22321
22322 leadSurrogate = null
22323
22324 // encode utf8
22325 if (codePoint < 0x80) {
22326 if ((units -= 1) < 0) break
22327 bytes.push(codePoint)
22328 } else if (codePoint < 0x800) {
22329 if ((units -= 2) < 0) break
22330 bytes.push(
22331 codePoint >> 0x6 | 0xC0,
22332 codePoint & 0x3F | 0x80
22333 )
22334 } else if (codePoint < 0x10000) {
22335 if ((units -= 3) < 0) break
22336 bytes.push(
22337 codePoint >> 0xC | 0xE0,
22338 codePoint >> 0x6 & 0x3F | 0x80,
22339 codePoint & 0x3F | 0x80
22340 )
22341 } else if (codePoint < 0x110000) {
22342 if ((units -= 4) < 0) break
22343 bytes.push(
22344 codePoint >> 0x12 | 0xF0,
22345 codePoint >> 0xC & 0x3F | 0x80,
22346 codePoint >> 0x6 & 0x3F | 0x80,
22347 codePoint & 0x3F | 0x80
22348 )
22349 } else {
22350 throw new Error('Invalid code point')
22351 }
22352 }
22353
22354 return bytes
22355 }
22356
22357 function asciiToBytes (str) {
22358 var byteArray = []
22359 for (var i = 0; i < str.length; ++i) {
22360 // Node's code seems to be doing this and not & 0x7F..
22361 byteArray.push(str.charCodeAt(i) & 0xFF)
22362 }
22363 return byteArray
22364 }
22365
22366 function utf16leToBytes (str, units) {
22367 var c, hi, lo
22368 var byteArray = []
22369 for (var i = 0; i < str.length; ++i) {
22370 if ((units -= 2) < 0) break
22371
22372 c = str.charCodeAt(i)
22373 hi = c >> 8
22374 lo = c % 256
22375 byteArray.push(lo)
22376 byteArray.push(hi)
22377 }
22378
22379 return byteArray
22380 }
22381
22382 function base64ToBytes (str) {
22383 return base64.toByteArray(base64clean(str))
22384 }
22385
22386 function blitBuffer (src, dst, offset, length) {
22387 for (var i = 0; i < length; ++i) {
22388 if ((i + offset >= dst.length) || (i >= src.length)) break
22389 dst[i + offset] = src[i]
22390 }
22391 return i
22392 }
22393
22394 function isnan (val) {
22395 return val !== val // eslint-disable-line no-self-compare
22396 }
22397
22398 },{"base64-js":2,"ieee754":8}],6:[function(require,module,exports){
22399 (function (Buffer){
22400 // Copyright Joyent, Inc. and other Node contributors.
22401 //
22402 // Permission is hereby granted, free of charge, to any person obtaining a
22403 // copy of this software and associated documentation files (the
22404 // "Software"), to deal in the Software without restriction, including
22405 // without limitation the rights to use, copy, modify, merge, publish,
22406 // distribute, sublicense, and/or sell copies of the Software, and to permit
22407 // persons to whom the Software is furnished to do so, subject to the
22408 // following conditions:
22409 //
22410 // The above copyright notice and this permission notice shall be included
22411 // in all copies or substantial portions of the Software.
22412 //
22413 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22414 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22415 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
22416 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
22417 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22418 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22419 // USE OR OTHER DEALINGS IN THE SOFTWARE.
22420
22421 // NOTE: These type checking functions intentionally don't use `instanceof`
22422 // because it is fragile and can be easily faked with `Object.create()`.
22423
22424 function isArray(arg) {
22425 if (Array.isArray) {
22426 return Array.isArray(arg);
22427 }
22428 return objectToString(arg) === '[object Array]';
22429 }
22430 exports.isArray = isArray;
22431
22432 function isBoolean(arg) {
22433 return typeof arg === 'boolean';
22434 }
22435 exports.isBoolean = isBoolean;
22436
22437 function isNull(arg) {
22438 return arg === null;
22439 }
22440 exports.isNull = isNull;
22441
22442 function isNullOrUndefined(arg) {
22443 return arg == null;
22444 }
22445 exports.isNullOrUndefined = isNullOrUndefined;
22446
22447 function isNumber(arg) {
22448 return typeof arg === 'number';
22449 }
22450 exports.isNumber = isNumber;
22451
22452 function isString(arg) {
22453 return typeof arg === 'string';
22454 }
22455 exports.isString = isString;
22456
22457 function isSymbol(arg) {
22458 return typeof arg === 'symbol';
22459 }
22460 exports.isSymbol = isSymbol;
22461
22462 function isUndefined(arg) {
22463 return arg === void 0;
22464 }
22465 exports.isUndefined = isUndefined;
22466
22467 function isRegExp(re) {
22468 return objectToString(re) === '[object RegExp]';
22469 }
22470 exports.isRegExp = isRegExp;
22471
22472 function isObject(arg) {
22473 return typeof arg === 'object' && arg !== null;
22474 }
22475 exports.isObject = isObject;
22476
22477 function isDate(d) {
22478 return objectToString(d) === '[object Date]';
22479 }
22480 exports.isDate = isDate;
22481
22482 function isError(e) {
22483 return (objectToString(e) === '[object Error]' || e instanceof Error);
22484 }
22485 exports.isError = isError;
22486
22487 function isFunction(arg) {
22488 return typeof arg === 'function';
22489 }
22490 exports.isFunction = isFunction;
22491
22492 function isPrimitive(arg) {
22493 return arg === null ||
22494 typeof arg === 'boolean' ||
22495 typeof arg === 'number' ||
22496 typeof arg === 'string' ||
22497 typeof arg === 'symbol' || // ES6 symbol
22498 typeof arg === 'undefined';
22499 }
22500 exports.isPrimitive = isPrimitive;
22501
22502 exports.isBuffer = Buffer.isBuffer;
22503
22504 function objectToString(o) {
22505 return Object.prototype.toString.call(o);
22506 }
22507
22508 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
22509 },{"../../is-buffer/index.js":10}],7:[function(require,module,exports){
22510 // Copyright Joyent, Inc. and other Node contributors.
22511 //
22512 // Permission is hereby granted, free of charge, to any person obtaining a
22513 // copy of this software and associated documentation files (the
22514 // "Software"), to deal in the Software without restriction, including
22515 // without limitation the rights to use, copy, modify, merge, publish,
22516 // distribute, sublicense, and/or sell copies of the Software, and to permit
22517 // persons to whom the Software is furnished to do so, subject to the
22518 // following conditions:
22519 //
22520 // The above copyright notice and this permission notice shall be included
22521 // in all copies or substantial portions of the Software.
22522 //
22523 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22524 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22525 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
22526 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
22527 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22528 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22529 // USE OR OTHER DEALINGS IN THE SOFTWARE.
22530
22531 function EventEmitter() {
22532 this._events = this._events || {};
22533 this._maxListeners = this._maxListeners || undefined;
22534 }
22535 module.exports = EventEmitter;
22536
22537 // Backwards-compat with node 0.10.x
22538 EventEmitter.EventEmitter = EventEmitter;
22539
22540 EventEmitter.prototype._events = undefined;
22541 EventEmitter.prototype._maxListeners = undefined;
22542
22543 // By default EventEmitters will print a warning if more than 10 listeners are
22544 // added to it. This is a useful default which helps finding memory leaks.
22545 EventEmitter.defaultMaxListeners = 10;
22546
22547 // Obviously not all Emitters should be limited to 10. This function allows
22548 // that to be increased. Set to zero for unlimited.
22549 EventEmitter.prototype.setMaxListeners = function(n) {
22550 if (!isNumber(n) || n < 0 || isNaN(n))
22551 throw TypeError('n must be a positive number');
22552 this._maxListeners = n;
22553 return this;
22554 };
22555
22556 EventEmitter.prototype.emit = function(type) {
22557 var er, handler, len, args, i, listeners;
22558
22559 if (!this._events)
22560 this._events = {};
22561
22562 // If there is no 'error' event listener then throw.
22563 if (type === 'error') {
22564 if (!this._events.error ||
22565 (isObject(this._events.error) && !this._events.error.length)) {
22566 er = arguments[1];
22567 if (er instanceof Error) {
22568 throw er; // Unhandled 'error' event
22569 } else {
22570 // At least give some kind of context to the user
22571 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
22572 err.context = er;
22573 throw err;
22574 }
22575 }
22576 }
22577
22578 handler = this._events[type];
22579
22580 if (isUndefined(handler))
22581 return false;
22582
22583 if (isFunction(handler)) {
22584 switch (arguments.length) {
22585 // fast cases
22586 case 1:
22587 handler.call(this);
22588 break;
22589 case 2:
22590 handler.call(this, arguments[1]);
22591 break;
22592 case 3:
22593 handler.call(this, arguments[1], arguments[2]);
22594 break;
22595 // slower
22596 default:
22597 args = Array.prototype.slice.call(arguments, 1);
22598 handler.apply(this, args);
22599 }
22600 } else if (isObject(handler)) {
22601 args = Array.prototype.slice.call(arguments, 1);
22602 listeners = handler.slice();
22603 len = listeners.length;
22604 for (i = 0; i < len; i++)
22605 listeners[i].apply(this, args);
22606 }
22607
22608 return true;
22609 };
22610
22611 EventEmitter.prototype.addListener = function(type, listener) {
22612 var m;
22613
22614 if (!isFunction(listener))
22615 throw TypeError('listener must be a function');
22616
22617 if (!this._events)
22618 this._events = {};
22619
22620 // To avoid recursion in the case that type === "newListener"! Before
22621 // adding it to the listeners, first emit "newListener".
22622 if (this._events.newListener)
22623 this.emit('newListener', type,
22624 isFunction(listener.listener) ?
22625 listener.listener : listener);
22626
22627 if (!this._events[type])
22628 // Optimize the case of one listener. Don't need the extra array object.
22629 this._events[type] = listener;
22630 else if (isObject(this._events[type]))
22631 // If we've already got an array, just append.
22632 this._events[type].push(listener);
22633 else
22634 // Adding the second element, need to change to array.
22635 this._events[type] = [this._events[type], listener];
22636
22637 // Check for listener leak
22638 if (isObject(this._events[type]) && !this._events[type].warned) {
22639 if (!isUndefined(this._maxListeners)) {
22640 m = this._maxListeners;
22641 } else {
22642 m = EventEmitter.defaultMaxListeners;
22643 }
22644
22645 if (m && m > 0 && this._events[type].length > m) {
22646 this._events[type].warned = true;
22647 console.error('(node) warning: possible EventEmitter memory ' +
22648 'leak detected. %d listeners added. ' +
22649 'Use emitter.setMaxListeners() to increase limit.',
22650 this._events[type].length);
22651 if (typeof console.trace === 'function') {
22652 // not supported in IE 10
22653 console.trace();
22654 }
22655 }
22656 }
22657
22658 return this;
22659 };
22660
22661 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
22662
22663 EventEmitter.prototype.once = function(type, listener) {
22664 if (!isFunction(listener))
22665 throw TypeError('listener must be a function');
22666
22667 var fired = false;
22668
22669 function g() {
22670 this.removeListener(type, g);
22671
22672 if (!fired) {
22673 fired = true;
22674 listener.apply(this, arguments);
22675 }
22676 }
22677
22678 g.listener = listener;
22679 this.on(type, g);
22680
22681 return this;
22682 };
22683
22684 // emits a 'removeListener' event iff the listener was removed
22685 EventEmitter.prototype.removeListener = function(type, listener) {
22686 var list, position, length, i;
22687
22688 if (!isFunction(listener))
22689 throw TypeError('listener must be a function');
22690
22691 if (!this._events || !this._events[type])
22692 return this;
22693
22694 list = this._events[type];
22695 length = list.length;
22696 position = -1;
22697
22698 if (list === listener ||
22699 (isFunction(list.listener) && list.listener === listener)) {
22700 delete this._events[type];
22701 if (this._events.removeListener)
22702 this.emit('removeListener', type, listener);
22703
22704 } else if (isObject(list)) {
22705 for (i = length; i-- > 0;) {
22706 if (list[i] === listener ||
22707 (list[i].listener && list[i].listener === listener)) {
22708 position = i;
22709 break;
22710 }
22711 }
22712
22713 if (position < 0)
22714 return this;
22715
22716 if (list.length === 1) {
22717 list.length = 0;
22718 delete this._events[type];
22719 } else {
22720 list.splice(position, 1);
22721 }
22722
22723 if (this._events.removeListener)
22724 this.emit('removeListener', type, listener);
22725 }
22726
22727 return this;
22728 };
22729
22730 EventEmitter.prototype.removeAllListeners = function(type) {
22731 var key, listeners;
22732
22733 if (!this._events)
22734 return this;
22735
22736 // not listening for removeListener, no need to emit
22737 if (!this._events.removeListener) {
22738 if (arguments.length === 0)
22739 this._events = {};
22740 else if (this._events[type])
22741 delete this._events[type];
22742 return this;
22743 }
22744
22745 // emit removeListener for all listeners on all events
22746 if (arguments.length === 0) {
22747 for (key in this._events) {
22748 if (key === 'removeListener') continue;
22749 this.removeAllListeners(key);
22750 }
22751 this.removeAllListeners('removeListener');
22752 this._events = {};
22753 return this;
22754 }
22755
22756 listeners = this._events[type];
22757
22758 if (isFunction(listeners)) {
22759 this.removeListener(type, listeners);
22760 } else if (listeners) {
22761 // LIFO order
22762 while (listeners.length)
22763 this.removeListener(type, listeners[listeners.length - 1]);
22764 }
22765 delete this._events[type];
22766
22767 return this;
22768 };
22769
22770 EventEmitter.prototype.listeners = function(type) {
22771 var ret;
22772 if (!this._events || !this._events[type])
22773 ret = [];
22774 else if (isFunction(this._events[type]))
22775 ret = [this._events[type]];
22776 else
22777 ret = this._events[type].slice();
22778 return ret;
22779 };
22780
22781 EventEmitter.prototype.listenerCount = function(type) {
22782 if (this._events) {
22783 var evlistener = this._events[type];
22784
22785 if (isFunction(evlistener))
22786 return 1;
22787 else if (evlistener)
22788 return evlistener.length;
22789 }
22790 return 0;
22791 };
22792
22793 EventEmitter.listenerCount = function(emitter, type) {
22794 return emitter.listenerCount(type);
22795 };
22796
22797 function isFunction(arg) {
22798 return typeof arg === 'function';
22799 }
22800
22801 function isNumber(arg) {
22802 return typeof arg === 'number';
22803 }
22804
22805 function isObject(arg) {
22806 return typeof arg === 'object' && arg !== null;
22807 }
22808
22809 function isUndefined(arg) {
22810 return arg === void 0;
22811 }
22812
22813 },{}],8:[function(require,module,exports){
22814 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
22815 var e, m
22816 var eLen = nBytes * 8 - mLen - 1
22817 var eMax = (1 << eLen) - 1
22818 var eBias = eMax >> 1
22819 var nBits = -7
22820 var i = isLE ? (nBytes - 1) : 0
22821 var d = isLE ? -1 : 1
22822 var s = buffer[offset + i]
22823
22824 i += d
22825
22826 e = s & ((1 << (-nBits)) - 1)
22827 s >>= (-nBits)
22828 nBits += eLen
22829 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
22830
22831 m = e & ((1 << (-nBits)) - 1)
22832 e >>= (-nBits)
22833 nBits += mLen
22834 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
22835
22836 if (e === 0) {
22837 e = 1 - eBias
22838 } else if (e === eMax) {
22839 return m ? NaN : ((s ? -1 : 1) * Infinity)
22840 } else {
22841 m = m + Math.pow(2, mLen)
22842 e = e - eBias
22843 }
22844 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
22845 }
22846
22847 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
22848 var e, m, c
22849 var eLen = nBytes * 8 - mLen - 1
22850 var eMax = (1 << eLen) - 1
22851 var eBias = eMax >> 1
22852 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
22853 var i = isLE ? 0 : (nBytes - 1)
22854 var d = isLE ? 1 : -1
22855 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
22856
22857 value = Math.abs(value)
22858
22859 if (isNaN(value) || value === Infinity) {
22860 m = isNaN(value) ? 1 : 0
22861 e = eMax
22862 } else {
22863 e = Math.floor(Math.log(value) / Math.LN2)
22864 if (value * (c = Math.pow(2, -e)) < 1) {
22865 e--
22866 c *= 2
22867 }
22868 if (e + eBias >= 1) {
22869 value += rt / c
22870 } else {
22871 value += rt * Math.pow(2, 1 - eBias)
22872 }
22873 if (value * c >= 2) {
22874 e++
22875 c /= 2
22876 }
22877
22878 if (e + eBias >= eMax) {
22879 m = 0
22880 e = eMax
22881 } else if (e + eBias >= 1) {
22882 m = (value * c - 1) * Math.pow(2, mLen)
22883 e = e + eBias
22884 } else {
22885 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
22886 e = 0
22887 }
22888 }
22889
22890 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
22891
22892 e = (e << mLen) | m
22893 eLen += mLen
22894 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
22895
22896 buffer[offset + i - d] |= s * 128
22897 }
22898
22899 },{}],9:[function(require,module,exports){
22900 if (typeof Object.create === 'function') {
22901 // implementation from standard node.js 'util' module
22902 module.exports = function inherits(ctor, superCtor) {
22903 ctor.super_ = superCtor
22904 ctor.prototype = Object.create(superCtor.prototype, {
22905 constructor: {
22906 value: ctor,
22907 enumerable: false,
22908 writable: true,
22909 configurable: true
22910 }
22911 });
22912 };
22913 } else {
22914 // old school shim for old browsers
22915 module.exports = function inherits(ctor, superCtor) {
22916 ctor.super_ = superCtor
22917 var TempCtor = function () {}
22918 TempCtor.prototype = superCtor.prototype
22919 ctor.prototype = new TempCtor()
22920 ctor.prototype.constructor = ctor
22921 }
22922 }
22923
22924 },{}],10:[function(require,module,exports){
22925 /*!
22926 * Determine if an object is a Buffer
22927 *
22928 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
22929 * @license MIT
22930 */
22931
22932 // The _isBuffer check is for Safari 5-7 support, because it's missing
22933 // Object.prototype.constructor. Remove this eventually
22934 module.exports = function (obj) {
22935 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
22936 }
22937
22938 function isBuffer (obj) {
22939 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
22940 }
22941
22942 // For Node v0.10 support. Remove this eventually.
22943 function isSlowBuffer (obj) {
22944 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
22945 }
22946
22947 },{}],11:[function(require,module,exports){
22948 var toString = {}.toString;
22949
22950 module.exports = Array.isArray || function (arr) {
22951 return toString.call(arr) == '[object Array]';
22952 };
22953
22954 },{}],12:[function(require,module,exports){
22955 (function (process){
22956 'use strict';
22957
22958 if (!process.version ||
22959 process.version.indexOf('v0.') === 0 ||
22960 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
22961 module.exports = nextTick;
22962 } else {
22963 module.exports = process.nextTick;
22964 }
22965
22966 function nextTick(fn, arg1, arg2, arg3) {
22967 if (typeof fn !== 'function') {
22968 throw new TypeError('"callback" argument must be a function');
22969 }
22970 var len = arguments.length;
22971 var args, i;
22972 switch (len) {
22973 case 0:
22974 case 1:
22975 return process.nextTick(fn);
22976 case 2:
22977 return process.nextTick(function afterTickOne() {
22978 fn.call(null, arg1);
22979 });
22980 case 3:
22981 return process.nextTick(function afterTickTwo() {
22982 fn.call(null, arg1, arg2);
22983 });
22984 case 4:
22985 return process.nextTick(function afterTickThree() {
22986 fn.call(null, arg1, arg2, arg3);
22987 });
22988 default:
22989 args = new Array(len - 1);
22990 i = 0;
22991 while (i < args.length) {
22992 args[i++] = arguments[i];
22993 }
22994 return process.nextTick(function afterTick() {
22995 fn.apply(null, args);
22996 });
22997 }
22998 }
22999
23000 }).call(this,require('_process'))
23001 },{"_process":13}],13:[function(require,module,exports){
23002 // shim for using process in browser
23003 var process = module.exports = {};
23004
23005 // cached from whatever global is present so that test runners that stub it
23006 // don't break things. But we need to wrap it in a try catch in case it is
23007 // wrapped in strict mode code which doesn't define any globals. It's inside a
23008 // function because try/catches deoptimize in certain engines.
23009
23010 var cachedSetTimeout;
23011 var cachedClearTimeout;
23012
23013 function defaultSetTimout() {
23014 throw new Error('setTimeout has not been defined');
23015 }
23016 function defaultClearTimeout () {
23017 throw new Error('clearTimeout has not been defined');
23018 }
23019 (function () {
23020 try {
23021 if (typeof setTimeout === 'function') {
23022 cachedSetTimeout = setTimeout;
23023 } else {
23024 cachedSetTimeout = defaultSetTimout;
23025 }
23026 } catch (e) {
23027 cachedSetTimeout = defaultSetTimout;
23028 }
23029 try {
23030 if (typeof clearTimeout === 'function') {
23031 cachedClearTimeout = clearTimeout;
23032 } else {
23033 cachedClearTimeout = defaultClearTimeout;
23034 }
23035 } catch (e) {
23036 cachedClearTimeout = defaultClearTimeout;
23037 }
23038 } ())
23039 function runTimeout(fun) {
23040 if (cachedSetTimeout === setTimeout) {
23041 //normal enviroments in sane situations
23042 return setTimeout(fun, 0);
23043 }
23044 // if setTimeout wasn't available but was latter defined
23045 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
23046 cachedSetTimeout = setTimeout;
23047 return setTimeout(fun, 0);
23048 }
23049 try {
23050 // when when somebody has screwed with setTimeout but no I.E. maddness
23051 return cachedSetTimeout(fun, 0);
23052 } catch(e){
23053 try {
23054 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
23055 return cachedSetTimeout.call(null, fun, 0);
23056 } catch(e){
23057 // 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
23058 return cachedSetTimeout.call(this, fun, 0);
23059 }
23060 }
23061
23062
23063 }
23064 function runClearTimeout(marker) {
23065 if (cachedClearTimeout === clearTimeout) {
23066 //normal enviroments in sane situations
23067 return clearTimeout(marker);
23068 }
23069 // if clearTimeout wasn't available but was latter defined
23070 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
23071 cachedClearTimeout = clearTimeout;
23072 return clearTimeout(marker);
23073 }
23074 try {
23075 // when when somebody has screwed with setTimeout but no I.E. maddness
23076 return cachedClearTimeout(marker);
23077 } catch (e){
23078 try {
23079 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
23080 return cachedClearTimeout.call(null, marker);
23081 } catch (e){
23082 // 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.
23083 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
23084 return cachedClearTimeout.call(this, marker);
23085 }
23086 }
23087
23088
23089
23090 }
23091 var queue = [];
23092 var draining = false;
23093 var currentQueue;
23094 var queueIndex = -1;
23095
23096 function cleanUpNextTick() {
23097 if (!draining || !currentQueue) {
23098 return;
23099 }
23100 draining = false;
23101 if (currentQueue.length) {
23102 queue = currentQueue.concat(queue);
23103 } else {
23104 queueIndex = -1;
23105 }
23106 if (queue.length) {
23107 drainQueue();
23108 }
23109 }
23110
23111 function drainQueue() {
23112 if (draining) {
23113 return;
23114 }
23115 var timeout = runTimeout(cleanUpNextTick);
23116 draining = true;
23117
23118 var len = queue.length;
23119 while(len) {
23120 currentQueue = queue;
23121 queue = [];
23122 while (++queueIndex < len) {
23123 if (currentQueue) {
23124 currentQueue[queueIndex].run();
23125 }
23126 }
23127 queueIndex = -1;
23128 len = queue.length;
23129 }
23130 currentQueue = null;
23131 draining = false;
23132 runClearTimeout(timeout);
23133 }
23134
23135 process.nextTick = function (fun) {
23136 var args = new Array(arguments.length - 1);
23137 if (arguments.length > 1) {
23138 for (var i = 1; i < arguments.length; i++) {
23139 args[i - 1] = arguments[i];
23140 }
23141 }
23142 queue.push(new Item(fun, args));
23143 if (queue.length === 1 && !draining) {
23144 runTimeout(drainQueue);
23145 }
23146 };
23147
23148 // v8 likes predictible objects
23149 function Item(fun, array) {
23150 this.fun = fun;
23151 this.array = array;
23152 }
23153 Item.prototype.run = function () {
23154 this.fun.apply(null, this.array);
23155 };
23156 process.title = 'browser';
23157 process.browser = true;
23158 process.env = {};
23159 process.argv = [];
23160 process.version = ''; // empty string to avoid regexp issues
23161 process.versions = {};
23162
23163 function noop() {}
23164
23165 process.on = noop;
23166 process.addListener = noop;
23167 process.once = noop;
23168 process.off = noop;
23169 process.removeListener = noop;
23170 process.removeAllListeners = noop;
23171 process.emit = noop;
23172
23173 process.binding = function (name) {
23174 throw new Error('process.binding is not supported');
23175 };
23176
23177 process.cwd = function () { return '/' };
23178 process.chdir = function (dir) {
23179 throw new Error('process.chdir is not supported');
23180 };
23181 process.umask = function() { return 0; };
23182
23183 },{}],14:[function(require,module,exports){
23184 module.exports = require("./lib/_stream_duplex.js")
23185
23186 },{"./lib/_stream_duplex.js":15}],15:[function(require,module,exports){
23187 // a duplex stream is just a stream that is both readable and writable.
23188 // Since JS doesn't have multiple prototypal inheritance, this class
23189 // prototypally inherits from Readable, and then parasitically from
23190 // Writable.
23191
23192 'use strict';
23193
23194 /*<replacement>*/
23195
23196 var objectKeys = Object.keys || function (obj) {
23197 var keys = [];
23198 for (var key in obj) {
23199 keys.push(key);
23200 }return keys;
23201 };
23202 /*</replacement>*/
23203
23204 module.exports = Duplex;
23205
23206 /*<replacement>*/
23207 var processNextTick = require('process-nextick-args');
23208 /*</replacement>*/
23209
23210 /*<replacement>*/
23211 var util = require('core-util-is');
23212 util.inherits = require('inherits');
23213 /*</replacement>*/
23214
23215 var Readable = require('./_stream_readable');
23216 var Writable = require('./_stream_writable');
23217
23218 util.inherits(Duplex, Readable);
23219
23220 var keys = objectKeys(Writable.prototype);
23221 for (var v = 0; v < keys.length; v++) {
23222 var method = keys[v];
23223 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
23224 }
23225
23226 function Duplex(options) {
23227 if (!(this instanceof Duplex)) return new Duplex(options);
23228
23229 Readable.call(this, options);
23230 Writable.call(this, options);
23231
23232 if (options && options.readable === false) this.readable = false;
23233
23234 if (options && options.writable === false) this.writable = false;
23235
23236 this.allowHalfOpen = true;
23237 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
23238
23239 this.once('end', onend);
23240 }
23241
23242 // the no-half-open enforcer
23243 function onend() {
23244 // if we allow half-open state, or if the writable side ended,
23245 // then we're ok.
23246 if (this.allowHalfOpen || this._writableState.ended) return;
23247
23248 // no more data can be written.
23249 // But allow more writes to happen in this tick.
23250 processNextTick(onEndNT, this);
23251 }
23252
23253 function onEndNT(self) {
23254 self.end();
23255 }
23256
23257 function forEach(xs, f) {
23258 for (var i = 0, l = xs.length; i < l; i++) {
23259 f(xs[i], i);
23260 }
23261 }
23262 },{"./_stream_readable":17,"./_stream_writable":19,"core-util-is":6,"inherits":9,"process-nextick-args":12}],16:[function(require,module,exports){
23263 // a passthrough stream.
23264 // basically just the most minimal sort of Transform stream.
23265 // Every written chunk gets output as-is.
23266
23267 'use strict';
23268
23269 module.exports = PassThrough;
23270
23271 var Transform = require('./_stream_transform');
23272
23273 /*<replacement>*/
23274 var util = require('core-util-is');
23275 util.inherits = require('inherits');
23276 /*</replacement>*/
23277
23278 util.inherits(PassThrough, Transform);
23279
23280 function PassThrough(options) {
23281 if (!(this instanceof PassThrough)) return new PassThrough(options);
23282
23283 Transform.call(this, options);
23284 }
23285
23286 PassThrough.prototype._transform = function (chunk, encoding, cb) {
23287 cb(null, chunk);
23288 };
23289 },{"./_stream_transform":18,"core-util-is":6,"inherits":9}],17:[function(require,module,exports){
23290 (function (process){
23291 'use strict';
23292
23293 module.exports = Readable;
23294
23295 /*<replacement>*/
23296 var processNextTick = require('process-nextick-args');
23297 /*</replacement>*/
23298
23299 /*<replacement>*/
23300 var isArray = require('isarray');
23301 /*</replacement>*/
23302
23303 /*<replacement>*/
23304 var Duplex;
23305 /*</replacement>*/
23306
23307 Readable.ReadableState = ReadableState;
23308
23309 /*<replacement>*/
23310 var EE = require('events').EventEmitter;
23311
23312 var EElistenerCount = function (emitter, type) {
23313 return emitter.listeners(type).length;
23314 };
23315 /*</replacement>*/
23316
23317 /*<replacement>*/
23318 var Stream;
23319 (function () {
23320 try {
23321 Stream = require('st' + 'ream');
23322 } catch (_) {} finally {
23323 if (!Stream) Stream = require('events').EventEmitter;
23324 }
23325 })();
23326 /*</replacement>*/
23327
23328 var Buffer = require('buffer').Buffer;
23329 /*<replacement>*/
23330 var bufferShim = require('buffer-shims');
23331 /*</replacement>*/
23332
23333 /*<replacement>*/
23334 var util = require('core-util-is');
23335 util.inherits = require('inherits');
23336 /*</replacement>*/
23337
23338 /*<replacement>*/
23339 var debugUtil = require('util');
23340 var debug = void 0;
23341 if (debugUtil && debugUtil.debuglog) {
23342 debug = debugUtil.debuglog('stream');
23343 } else {
23344 debug = function () {};
23345 }
23346 /*</replacement>*/
23347
23348 var BufferList = require('./internal/streams/BufferList');
23349 var StringDecoder;
23350
23351 util.inherits(Readable, Stream);
23352
23353 function prependListener(emitter, event, fn) {
23354 // Sadly this is not cacheable as some libraries bundle their own
23355 // event emitter implementation with them.
23356 if (typeof emitter.prependListener === 'function') {
23357 return emitter.prependListener(event, fn);
23358 } else {
23359 // This is a hack to make sure that our error handler is attached before any
23360 // userland ones. NEVER DO THIS. This is here only because this code needs
23361 // to continue to work with older versions of Node.js that do not include
23362 // the prependListener() method. The goal is to eventually remove this hack.
23363 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]];
23364 }
23365 }
23366
23367 function ReadableState(options, stream) {
23368 Duplex = Duplex || require('./_stream_duplex');
23369
23370 options = options || {};
23371
23372 // object stream flag. Used to make read(n) ignore n and to
23373 // make all the buffer merging and length checks go away
23374 this.objectMode = !!options.objectMode;
23375
23376 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
23377
23378 // the point at which it stops calling _read() to fill the buffer
23379 // Note: 0 is a valid value, means "don't call _read preemptively ever"
23380 var hwm = options.highWaterMark;
23381 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
23382 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
23383
23384 // cast to ints.
23385 this.highWaterMark = ~ ~this.highWaterMark;
23386
23387 // A linked list is used to store data chunks instead of an array because the
23388 // linked list can remove elements from the beginning faster than
23389 // array.shift()
23390 this.buffer = new BufferList();
23391 this.length = 0;
23392 this.pipes = null;
23393 this.pipesCount = 0;
23394 this.flowing = null;
23395 this.ended = false;
23396 this.endEmitted = false;
23397 this.reading = false;
23398
23399 // a flag to be able to tell if the onwrite cb is called immediately,
23400 // or on a later tick. We set this to true at first, because any
23401 // actions that shouldn't happen until "later" should generally also
23402 // not happen before the first write call.
23403 this.sync = true;
23404
23405 // whenever we return null, then we set a flag to say
23406 // that we're awaiting a 'readable' event emission.
23407 this.needReadable = false;
23408 this.emittedReadable = false;
23409 this.readableListening = false;
23410 this.resumeScheduled = false;
23411
23412 // Crypto is kind of old and crusty. Historically, its default string
23413 // encoding is 'binary' so we have to make this configurable.
23414 // Everything else in the universe uses 'utf8', though.
23415 this.defaultEncoding = options.defaultEncoding || 'utf8';
23416
23417 // when piping, we only care about 'readable' events that happen
23418 // after read()ing all the bytes and not getting any pushback.
23419 this.ranOut = false;
23420
23421 // the number of writers that are awaiting a drain event in .pipe()s
23422 this.awaitDrain = 0;
23423
23424 // if true, a maybeReadMore has been scheduled
23425 this.readingMore = false;
23426
23427 this.decoder = null;
23428 this.encoding = null;
23429 if (options.encoding) {
23430 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
23431 this.decoder = new StringDecoder(options.encoding);
23432 this.encoding = options.encoding;
23433 }
23434 }
23435
23436 function Readable(options) {
23437 Duplex = Duplex || require('./_stream_duplex');
23438
23439 if (!(this instanceof Readable)) return new Readable(options);
23440
23441 this._readableState = new ReadableState(options, this);
23442
23443 // legacy
23444 this.readable = true;
23445
23446 if (options && typeof options.read === 'function') this._read = options.read;
23447
23448 Stream.call(this);
23449 }
23450
23451 // Manually shove something into the read() buffer.
23452 // This returns true if the highWaterMark has not been hit yet,
23453 // similar to how Writable.write() returns true if you should
23454 // write() some more.
23455 Readable.prototype.push = function (chunk, encoding) {
23456 var state = this._readableState;
23457
23458 if (!state.objectMode && typeof chunk === 'string') {
23459 encoding = encoding || state.defaultEncoding;
23460 if (encoding !== state.encoding) {
23461 chunk = bufferShim.from(chunk, encoding);
23462 encoding = '';
23463 }
23464 }
23465
23466 return readableAddChunk(this, state, chunk, encoding, false);
23467 };
23468
23469 // Unshift should *always* be something directly out of read()
23470 Readable.prototype.unshift = function (chunk) {
23471 var state = this._readableState;
23472 return readableAddChunk(this, state, chunk, '', true);
23473 };
23474
23475 Readable.prototype.isPaused = function () {
23476 return this._readableState.flowing === false;
23477 };
23478
23479 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
23480 var er = chunkInvalid(state, chunk);
23481 if (er) {
23482 stream.emit('error', er);
23483 } else if (chunk === null) {
23484 state.reading = false;
23485 onEofChunk(stream, state);
23486 } else if (state.objectMode || chunk && chunk.length > 0) {
23487 if (state.ended && !addToFront) {
23488 var e = new Error('stream.push() after EOF');
23489 stream.emit('error', e);
23490 } else if (state.endEmitted && addToFront) {
23491 var _e = new Error('stream.unshift() after end event');
23492 stream.emit('error', _e);
23493 } else {
23494 var skipAdd;
23495 if (state.decoder && !addToFront && !encoding) {
23496 chunk = state.decoder.write(chunk);
23497 skipAdd = !state.objectMode && chunk.length === 0;
23498 }
23499
23500 if (!addToFront) state.reading = false;
23501
23502 // Don't add to the buffer if we've decoded to an empty string chunk and
23503 // we're not in object mode
23504 if (!skipAdd) {
23505 // if we want the data now, just emit it.
23506 if (state.flowing && state.length === 0 && !state.sync) {
23507 stream.emit('data', chunk);
23508 stream.read(0);
23509 } else {
23510 // update the buffer info.
23511 state.length += state.objectMode ? 1 : chunk.length;
23512 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
23513
23514 if (state.needReadable) emitReadable(stream);
23515 }
23516 }
23517
23518 maybeReadMore(stream, state);
23519 }
23520 } else if (!addToFront) {
23521 state.reading = false;
23522 }
23523
23524 return needMoreData(state);
23525 }
23526
23527 // if it's past the high water mark, we can push in some more.
23528 // Also, if we have no data yet, we can stand some
23529 // more bytes. This is to work around cases where hwm=0,
23530 // such as the repl. Also, if the push() triggered a
23531 // readable event, and the user called read(largeNumber) such that
23532 // needReadable was set, then we ought to push more, so that another
23533 // 'readable' event will be triggered.
23534 function needMoreData(state) {
23535 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
23536 }
23537
23538 // backwards compatibility.
23539 Readable.prototype.setEncoding = function (enc) {
23540 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
23541 this._readableState.decoder = new StringDecoder(enc);
23542 this._readableState.encoding = enc;
23543 return this;
23544 };
23545
23546 // Don't raise the hwm > 8MB
23547 var MAX_HWM = 0x800000;
23548 function computeNewHighWaterMark(n) {
23549 if (n >= MAX_HWM) {
23550 n = MAX_HWM;
23551 } else {
23552 // Get the next highest power of 2 to prevent increasing hwm excessively in
23553 // tiny amounts
23554 n--;
23555 n |= n >>> 1;
23556 n |= n >>> 2;
23557 n |= n >>> 4;
23558 n |= n >>> 8;
23559 n |= n >>> 16;
23560 n++;
23561 }
23562 return n;
23563 }
23564
23565 // This function is designed to be inlinable, so please take care when making
23566 // changes to the function body.
23567 function howMuchToRead(n, state) {
23568 if (n <= 0 || state.length === 0 && state.ended) return 0;
23569 if (state.objectMode) return 1;
23570 if (n !== n) {
23571 // Only flow one buffer at a time
23572 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
23573 }
23574 // If we're asking for more than the current hwm, then raise the hwm.
23575 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
23576 if (n <= state.length) return n;
23577 // Don't have enough
23578 if (!state.ended) {
23579 state.needReadable = true;
23580 return 0;
23581 }
23582 return state.length;
23583 }
23584
23585 // you can override either this method, or the async _read(n) below.
23586 Readable.prototype.read = function (n) {
23587 debug('read', n);
23588 n = parseInt(n, 10);
23589 var state = this._readableState;
23590 var nOrig = n;
23591
23592 if (n !== 0) state.emittedReadable = false;
23593
23594 // if we're doing read(0) to trigger a readable event, but we
23595 // already have a bunch of data in the buffer, then just trigger
23596 // the 'readable' event and move on.
23597 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
23598 debug('read: emitReadable', state.length, state.ended);
23599 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
23600 return null;
23601 }
23602
23603 n = howMuchToRead(n, state);
23604
23605 // if we've ended, and we're now clear, then finish it up.
23606 if (n === 0 && state.ended) {
23607 if (state.length === 0) endReadable(this);
23608 return null;
23609 }
23610
23611 // All the actual chunk generation logic needs to be
23612 // *below* the call to _read. The reason is that in certain
23613 // synthetic stream cases, such as passthrough streams, _read
23614 // may be a completely synchronous operation which may change
23615 // the state of the read buffer, providing enough data when
23616 // before there was *not* enough.
23617 //
23618 // So, the steps are:
23619 // 1. Figure out what the state of things will be after we do
23620 // a read from the buffer.
23621 //
23622 // 2. If that resulting state will trigger a _read, then call _read.
23623 // Note that this may be asynchronous, or synchronous. Yes, it is
23624 // deeply ugly to write APIs this way, but that still doesn't mean
23625 // that the Readable class should behave improperly, as streams are
23626 // designed to be sync/async agnostic.
23627 // Take note if the _read call is sync or async (ie, if the read call
23628 // has returned yet), so that we know whether or not it's safe to emit
23629 // 'readable' etc.
23630 //
23631 // 3. Actually pull the requested chunks out of the buffer and return.
23632
23633 // if we need a readable event, then we need to do some reading.
23634 var doRead = state.needReadable;
23635 debug('need readable', doRead);
23636
23637 // if we currently have less than the highWaterMark, then also read some
23638 if (state.length === 0 || state.length - n < state.highWaterMark) {
23639 doRead = true;
23640 debug('length less than watermark', doRead);
23641 }
23642
23643 // however, if we've ended, then there's no point, and if we're already
23644 // reading, then it's unnecessary.
23645 if (state.ended || state.reading) {
23646 doRead = false;
23647 debug('reading or ended', doRead);
23648 } else if (doRead) {
23649 debug('do read');
23650 state.reading = true;
23651 state.sync = true;
23652 // if the length is currently zero, then we *need* a readable event.
23653 if (state.length === 0) state.needReadable = true;
23654 // call internal read method
23655 this._read(state.highWaterMark);
23656 state.sync = false;
23657 // If _read pushed data synchronously, then `reading` will be false,
23658 // and we need to re-evaluate how much data we can return to the user.
23659 if (!state.reading) n = howMuchToRead(nOrig, state);
23660 }
23661
23662 var ret;
23663 if (n > 0) ret = fromList(n, state);else ret = null;
23664
23665 if (ret === null) {
23666 state.needReadable = true;
23667 n = 0;
23668 } else {
23669 state.length -= n;
23670 }
23671
23672 if (state.length === 0) {
23673 // If we have nothing in the buffer, then we want to know
23674 // as soon as we *do* get something into the buffer.
23675 if (!state.ended) state.needReadable = true;
23676
23677 // If we tried to read() past the EOF, then emit end on the next tick.
23678 if (nOrig !== n && state.ended) endReadable(this);
23679 }
23680
23681 if (ret !== null) this.emit('data', ret);
23682
23683 return ret;
23684 };
23685
23686 function chunkInvalid(state, chunk) {
23687 var er = null;
23688 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
23689 er = new TypeError('Invalid non-string/buffer chunk');
23690 }
23691 return er;
23692 }
23693
23694 function onEofChunk(stream, state) {
23695 if (state.ended) return;
23696 if (state.decoder) {
23697 var chunk = state.decoder.end();
23698 if (chunk && chunk.length) {
23699 state.buffer.push(chunk);
23700 state.length += state.objectMode ? 1 : chunk.length;
23701 }
23702 }
23703 state.ended = true;
23704
23705 // emit 'readable' now to make sure it gets picked up.
23706 emitReadable(stream);
23707 }
23708
23709 // Don't emit readable right away in sync mode, because this can trigger
23710 // another read() call => stack overflow. This way, it might trigger
23711 // a nextTick recursion warning, but that's not so bad.
23712 function emitReadable(stream) {
23713 var state = stream._readableState;
23714 state.needReadable = false;
23715 if (!state.emittedReadable) {
23716 debug('emitReadable', state.flowing);
23717 state.emittedReadable = true;
23718 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
23719 }
23720 }
23721
23722 function emitReadable_(stream) {
23723 debug('emit readable');
23724 stream.emit('readable');
23725 flow(stream);
23726 }
23727
23728 // at this point, the user has presumably seen the 'readable' event,
23729 // and called read() to consume some data. that may have triggered
23730 // in turn another _read(n) call, in which case reading = true if
23731 // it's in progress.
23732 // However, if we're not ended, or reading, and the length < hwm,
23733 // then go ahead and try to read some more preemptively.
23734 function maybeReadMore(stream, state) {
23735 if (!state.readingMore) {
23736 state.readingMore = true;
23737 processNextTick(maybeReadMore_, stream, state);
23738 }
23739 }
23740
23741 function maybeReadMore_(stream, state) {
23742 var len = state.length;
23743 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
23744 debug('maybeReadMore read 0');
23745 stream.read(0);
23746 if (len === state.length)
23747 // didn't get any data, stop spinning.
23748 break;else len = state.length;
23749 }
23750 state.readingMore = false;
23751 }
23752
23753 // abstract method. to be overridden in specific implementation classes.
23754 // call cb(er, data) where data is <= n in length.
23755 // for virtual (non-string, non-buffer) streams, "length" is somewhat
23756 // arbitrary, and perhaps not very meaningful.
23757 Readable.prototype._read = function (n) {
23758 this.emit('error', new Error('_read() is not implemented'));
23759 };
23760
23761 Readable.prototype.pipe = function (dest, pipeOpts) {
23762 var src = this;
23763 var state = this._readableState;
23764
23765 switch (state.pipesCount) {
23766 case 0:
23767 state.pipes = dest;
23768 break;
23769 case 1:
23770 state.pipes = [state.pipes, dest];
23771 break;
23772 default:
23773 state.pipes.push(dest);
23774 break;
23775 }
23776 state.pipesCount += 1;
23777 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
23778
23779 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
23780
23781 var endFn = doEnd ? onend : cleanup;
23782 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
23783
23784 dest.on('unpipe', onunpipe);
23785 function onunpipe(readable) {
23786 debug('onunpipe');
23787 if (readable === src) {
23788 cleanup();
23789 }
23790 }
23791
23792 function onend() {
23793 debug('onend');
23794 dest.end();
23795 }
23796
23797 // when the dest drains, it reduces the awaitDrain counter
23798 // on the source. This would be more elegant with a .once()
23799 // handler in flow(), but adding and removing repeatedly is
23800 // too slow.
23801 var ondrain = pipeOnDrain(src);
23802 dest.on('drain', ondrain);
23803
23804 var cleanedUp = false;
23805 function cleanup() {
23806 debug('cleanup');
23807 // cleanup event handlers once the pipe is broken
23808 dest.removeListener('close', onclose);
23809 dest.removeListener('finish', onfinish);
23810 dest.removeListener('drain', ondrain);
23811 dest.removeListener('error', onerror);
23812 dest.removeListener('unpipe', onunpipe);
23813 src.removeListener('end', onend);
23814 src.removeListener('end', cleanup);
23815 src.removeListener('data', ondata);
23816
23817 cleanedUp = true;
23818
23819 // if the reader is waiting for a drain event from this
23820 // specific writer, then it would cause it to never start
23821 // flowing again.
23822 // So, if this is awaiting a drain, then we just call it now.
23823 // If we don't know, then assume that we are waiting for one.
23824 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
23825 }
23826
23827 // If the user pushes more data while we're writing to dest then we'll end up
23828 // in ondata again. However, we only want to increase awaitDrain once because
23829 // dest will only emit one 'drain' event for the multiple writes.
23830 // => Introduce a guard on increasing awaitDrain.
23831 var increasedAwaitDrain = false;
23832 src.on('data', ondata);
23833 function ondata(chunk) {
23834 debug('ondata');
23835 increasedAwaitDrain = false;
23836 var ret = dest.write(chunk);
23837 if (false === ret && !increasedAwaitDrain) {
23838 // If the user unpiped during `dest.write()`, it is possible
23839 // to get stuck in a permanently paused state if that write
23840 // also returned false.
23841 // => Check whether `dest` is still a piping destination.
23842 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
23843 debug('false write response, pause', src._readableState.awaitDrain);
23844 src._readableState.awaitDrain++;
23845 increasedAwaitDrain = true;
23846 }
23847 src.pause();
23848 }
23849 }
23850
23851 // if the dest has an error, then stop piping into it.
23852 // however, don't suppress the throwing behavior for this.
23853 function onerror(er) {
23854 debug('onerror', er);
23855 unpipe();
23856 dest.removeListener('error', onerror);
23857 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
23858 }
23859
23860 // Make sure our error handler is attached before userland ones.
23861 prependListener(dest, 'error', onerror);
23862
23863 // Both close and finish should trigger unpipe, but only once.
23864 function onclose() {
23865 dest.removeListener('finish', onfinish);
23866 unpipe();
23867 }
23868 dest.once('close', onclose);
23869 function onfinish() {
23870 debug('onfinish');
23871 dest.removeListener('close', onclose);
23872 unpipe();
23873 }
23874 dest.once('finish', onfinish);
23875
23876 function unpipe() {
23877 debug('unpipe');
23878 src.unpipe(dest);
23879 }
23880
23881 // tell the dest that it's being piped to
23882 dest.emit('pipe', src);
23883
23884 // start the flow if it hasn't been started already.
23885 if (!state.flowing) {
23886 debug('pipe resume');
23887 src.resume();
23888 }
23889
23890 return dest;
23891 };
23892
23893 function pipeOnDrain(src) {
23894 return function () {
23895 var state = src._readableState;
23896 debug('pipeOnDrain', state.awaitDrain);
23897 if (state.awaitDrain) state.awaitDrain--;
23898 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
23899 state.flowing = true;
23900 flow(src);
23901 }
23902 };
23903 }
23904
23905 Readable.prototype.unpipe = function (dest) {
23906 var state = this._readableState;
23907
23908 // if we're not piping anywhere, then do nothing.
23909 if (state.pipesCount === 0) return this;
23910
23911 // just one destination. most common case.
23912 if (state.pipesCount === 1) {
23913 // passed in one, but it's not the right one.
23914 if (dest && dest !== state.pipes) return this;
23915
23916 if (!dest) dest = state.pipes;
23917
23918 // got a match.
23919 state.pipes = null;
23920 state.pipesCount = 0;
23921 state.flowing = false;
23922 if (dest) dest.emit('unpipe', this);
23923 return this;
23924 }
23925
23926 // slow case. multiple pipe destinations.
23927
23928 if (!dest) {
23929 // remove all.
23930 var dests = state.pipes;
23931 var len = state.pipesCount;
23932 state.pipes = null;
23933 state.pipesCount = 0;
23934 state.flowing = false;
23935
23936 for (var i = 0; i < len; i++) {
23937 dests[i].emit('unpipe', this);
23938 }return this;
23939 }
23940
23941 // try to find the right one.
23942 var index = indexOf(state.pipes, dest);
23943 if (index === -1) return this;
23944
23945 state.pipes.splice(index, 1);
23946 state.pipesCount -= 1;
23947 if (state.pipesCount === 1) state.pipes = state.pipes[0];
23948
23949 dest.emit('unpipe', this);
23950
23951 return this;
23952 };
23953
23954 // set up data events if they are asked for
23955 // Ensure readable listeners eventually get something
23956 Readable.prototype.on = function (ev, fn) {
23957 var res = Stream.prototype.on.call(this, ev, fn);
23958
23959 if (ev === 'data') {
23960 // Start flowing on next tick if stream isn't explicitly paused
23961 if (this._readableState.flowing !== false) this.resume();
23962 } else if (ev === 'readable') {
23963 var state = this._readableState;
23964 if (!state.endEmitted && !state.readableListening) {
23965 state.readableListening = state.needReadable = true;
23966 state.emittedReadable = false;
23967 if (!state.reading) {
23968 processNextTick(nReadingNextTick, this);
23969 } else if (state.length) {
23970 emitReadable(this, state);
23971 }
23972 }
23973 }
23974
23975 return res;
23976 };
23977 Readable.prototype.addListener = Readable.prototype.on;
23978
23979 function nReadingNextTick(self) {
23980 debug('readable nexttick read 0');
23981 self.read(0);
23982 }
23983
23984 // pause() and resume() are remnants of the legacy readable stream API
23985 // If the user uses them, then switch into old mode.
23986 Readable.prototype.resume = function () {
23987 var state = this._readableState;
23988 if (!state.flowing) {
23989 debug('resume');
23990 state.flowing = true;
23991 resume(this, state);
23992 }
23993 return this;
23994 };
23995
23996 function resume(stream, state) {
23997 if (!state.resumeScheduled) {
23998 state.resumeScheduled = true;
23999 processNextTick(resume_, stream, state);
24000 }
24001 }
24002
24003 function resume_(stream, state) {
24004 if (!state.reading) {
24005 debug('resume read 0');
24006 stream.read(0);
24007 }
24008
24009 state.resumeScheduled = false;
24010 state.awaitDrain = 0;
24011 stream.emit('resume');
24012 flow(stream);
24013 if (state.flowing && !state.reading) stream.read(0);
24014 }
24015
24016 Readable.prototype.pause = function () {
24017 debug('call pause flowing=%j', this._readableState.flowing);
24018 if (false !== this._readableState.flowing) {
24019 debug('pause');
24020 this._readableState.flowing = false;
24021 this.emit('pause');
24022 }
24023 return this;
24024 };
24025
24026 function flow(stream) {
24027 var state = stream._readableState;
24028 debug('flow', state.flowing);
24029 while (state.flowing && stream.read() !== null) {}
24030 }
24031
24032 // wrap an old-style stream as the async data source.
24033 // This is *not* part of the readable stream interface.
24034 // It is an ugly unfortunate mess of history.
24035 Readable.prototype.wrap = function (stream) {
24036 var state = this._readableState;
24037 var paused = false;
24038
24039 var self = this;
24040 stream.on('end', function () {
24041 debug('wrapped end');
24042 if (state.decoder && !state.ended) {
24043 var chunk = state.decoder.end();
24044 if (chunk && chunk.length) self.push(chunk);
24045 }
24046
24047 self.push(null);
24048 });
24049
24050 stream.on('data', function (chunk) {
24051 debug('wrapped data');
24052 if (state.decoder) chunk = state.decoder.write(chunk);
24053
24054 // don't skip over falsy values in objectMode
24055 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
24056
24057 var ret = self.push(chunk);
24058 if (!ret) {
24059 paused = true;
24060 stream.pause();
24061 }
24062 });
24063
24064 // proxy all the other methods.
24065 // important when wrapping filters and duplexes.
24066 for (var i in stream) {
24067 if (this[i] === undefined && typeof stream[i] === 'function') {
24068 this[i] = function (method) {
24069 return function () {
24070 return stream[method].apply(stream, arguments);
24071 };
24072 }(i);
24073 }
24074 }
24075
24076 // proxy certain important events.
24077 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
24078 forEach(events, function (ev) {
24079 stream.on(ev, self.emit.bind(self, ev));
24080 });
24081
24082 // when we try to consume some more bytes, simply unpause the
24083 // underlying stream.
24084 self._read = function (n) {
24085 debug('wrapped _read', n);
24086 if (paused) {
24087 paused = false;
24088 stream.resume();
24089 }
24090 };
24091
24092 return self;
24093 };
24094
24095 // exposed for testing purposes only.
24096 Readable._fromList = fromList;
24097
24098 // Pluck off n bytes from an array of buffers.
24099 // Length is the combined lengths of all the buffers in the list.
24100 // This function is designed to be inlinable, so please take care when making
24101 // changes to the function body.
24102 function fromList(n, state) {
24103 // nothing buffered
24104 if (state.length === 0) return null;
24105
24106 var ret;
24107 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
24108 // read it all, truncate the list
24109 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);
24110 state.buffer.clear();
24111 } else {
24112 // read part of list
24113 ret = fromListPartial(n, state.buffer, state.decoder);
24114 }
24115
24116 return ret;
24117 }
24118
24119 // Extracts only enough buffered data to satisfy the amount requested.
24120 // This function is designed to be inlinable, so please take care when making
24121 // changes to the function body.
24122 function fromListPartial(n, list, hasStrings) {
24123 var ret;
24124 if (n < list.head.data.length) {
24125 // slice is the same for buffers and strings
24126 ret = list.head.data.slice(0, n);
24127 list.head.data = list.head.data.slice(n);
24128 } else if (n === list.head.data.length) {
24129 // first chunk is a perfect match
24130 ret = list.shift();
24131 } else {
24132 // result spans more than one buffer
24133 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
24134 }
24135 return ret;
24136 }
24137
24138 // Copies a specified amount of characters from the list of buffered data
24139 // chunks.
24140 // This function is designed to be inlinable, so please take care when making
24141 // changes to the function body.
24142 function copyFromBufferString(n, list) {
24143 var p = list.head;
24144 var c = 1;
24145 var ret = p.data;
24146 n -= ret.length;
24147 while (p = p.next) {
24148 var str = p.data;
24149 var nb = n > str.length ? str.length : n;
24150 if (nb === str.length) ret += str;else ret += str.slice(0, n);
24151 n -= nb;
24152 if (n === 0) {
24153 if (nb === str.length) {
24154 ++c;
24155 if (p.next) list.head = p.next;else list.head = list.tail = null;
24156 } else {
24157 list.head = p;
24158 p.data = str.slice(nb);
24159 }
24160 break;
24161 }
24162 ++c;
24163 }
24164 list.length -= c;
24165 return ret;
24166 }
24167
24168 // Copies a specified amount of bytes from the list of buffered data chunks.
24169 // This function is designed to be inlinable, so please take care when making
24170 // changes to the function body.
24171 function copyFromBuffer(n, list) {
24172 var ret = bufferShim.allocUnsafe(n);
24173 var p = list.head;
24174 var c = 1;
24175 p.data.copy(ret);
24176 n -= p.data.length;
24177 while (p = p.next) {
24178 var buf = p.data;
24179 var nb = n > buf.length ? buf.length : n;
24180 buf.copy(ret, ret.length - n, 0, nb);
24181 n -= nb;
24182 if (n === 0) {
24183 if (nb === buf.length) {
24184 ++c;
24185 if (p.next) list.head = p.next;else list.head = list.tail = null;
24186 } else {
24187 list.head = p;
24188 p.data = buf.slice(nb);
24189 }
24190 break;
24191 }
24192 ++c;
24193 }
24194 list.length -= c;
24195 return ret;
24196 }
24197
24198 function endReadable(stream) {
24199 var state = stream._readableState;
24200
24201 // If we get here before consuming all the bytes, then that is a
24202 // bug in node. Should never happen.
24203 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
24204
24205 if (!state.endEmitted) {
24206 state.ended = true;
24207 processNextTick(endReadableNT, state, stream);
24208 }
24209 }
24210
24211 function endReadableNT(state, stream) {
24212 // Check that we didn't get one last unshift.
24213 if (!state.endEmitted && state.length === 0) {
24214 state.endEmitted = true;
24215 stream.readable = false;
24216 stream.emit('end');
24217 }
24218 }
24219
24220 function forEach(xs, f) {
24221 for (var i = 0, l = xs.length; i < l; i++) {
24222 f(xs[i], i);
24223 }
24224 }
24225
24226 function indexOf(xs, x) {
24227 for (var i = 0, l = xs.length; i < l; i++) {
24228 if (xs[i] === x) return i;
24229 }
24230 return -1;
24231 }
24232 }).call(this,require('_process'))
24233 },{"./_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){
24234 // a transform stream is a readable/writable stream where you do
24235 // something with the data. Sometimes it's called a "filter",
24236 // but that's not a great name for it, since that implies a thing where
24237 // some bits pass through, and others are simply ignored. (That would
24238 // be a valid example of a transform, of course.)
24239 //
24240 // While the output is causally related to the input, it's not a
24241 // necessarily symmetric or synchronous transformation. For example,
24242 // a zlib stream might take multiple plain-text writes(), and then
24243 // emit a single compressed chunk some time in the future.
24244 //
24245 // Here's how this works:
24246 //
24247 // The Transform stream has all the aspects of the readable and writable
24248 // stream classes. When you write(chunk), that calls _write(chunk,cb)
24249 // internally, and returns false if there's a lot of pending writes
24250 // buffered up. When you call read(), that calls _read(n) until
24251 // there's enough pending readable data buffered up.
24252 //
24253 // In a transform stream, the written data is placed in a buffer. When
24254 // _read(n) is called, it transforms the queued up data, calling the
24255 // buffered _write cb's as it consumes chunks. If consuming a single
24256 // written chunk would result in multiple output chunks, then the first
24257 // outputted bit calls the readcb, and subsequent chunks just go into
24258 // the read buffer, and will cause it to emit 'readable' if necessary.
24259 //
24260 // This way, back-pressure is actually determined by the reading side,
24261 // since _read has to be called to start processing a new chunk. However,
24262 // a pathological inflate type of transform can cause excessive buffering
24263 // here. For example, imagine a stream where every byte of input is
24264 // interpreted as an integer from 0-255, and then results in that many
24265 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
24266 // 1kb of data being output. In this case, you could write a very small
24267 // amount of input, and end up with a very large amount of output. In
24268 // such a pathological inflating mechanism, there'd be no way to tell
24269 // the system to stop doing the transform. A single 4MB write could
24270 // cause the system to run out of memory.
24271 //
24272 // However, even in such a pathological case, only a single written chunk
24273 // would be consumed, and then the rest would wait (un-transformed) until
24274 // the results of the previous transformed chunk were consumed.
24275
24276 'use strict';
24277
24278 module.exports = Transform;
24279
24280 var Duplex = require('./_stream_duplex');
24281
24282 /*<replacement>*/
24283 var util = require('core-util-is');
24284 util.inherits = require('inherits');
24285 /*</replacement>*/
24286
24287 util.inherits(Transform, Duplex);
24288
24289 function TransformState(stream) {
24290 this.afterTransform = function (er, data) {
24291 return afterTransform(stream, er, data);
24292 };
24293
24294 this.needTransform = false;
24295 this.transforming = false;
24296 this.writecb = null;
24297 this.writechunk = null;
24298 this.writeencoding = null;
24299 }
24300
24301 function afterTransform(stream, er, data) {
24302 var ts = stream._transformState;
24303 ts.transforming = false;
24304
24305 var cb = ts.writecb;
24306
24307 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
24308
24309 ts.writechunk = null;
24310 ts.writecb = null;
24311
24312 if (data !== null && data !== undefined) stream.push(data);
24313
24314 cb(er);
24315
24316 var rs = stream._readableState;
24317 rs.reading = false;
24318 if (rs.needReadable || rs.length < rs.highWaterMark) {
24319 stream._read(rs.highWaterMark);
24320 }
24321 }
24322
24323 function Transform(options) {
24324 if (!(this instanceof Transform)) return new Transform(options);
24325
24326 Duplex.call(this, options);
24327
24328 this._transformState = new TransformState(this);
24329
24330 var stream = this;
24331
24332 // start out asking for a readable event once data is transformed.
24333 this._readableState.needReadable = true;
24334
24335 // we have implemented the _read method, and done the other things
24336 // that Readable wants before the first _read call, so unset the
24337 // sync guard flag.
24338 this._readableState.sync = false;
24339
24340 if (options) {
24341 if (typeof options.transform === 'function') this._transform = options.transform;
24342
24343 if (typeof options.flush === 'function') this._flush = options.flush;
24344 }
24345
24346 // When the writable side finishes, then flush out anything remaining.
24347 this.once('prefinish', function () {
24348 if (typeof this._flush === 'function') this._flush(function (er, data) {
24349 done(stream, er, data);
24350 });else done(stream);
24351 });
24352 }
24353
24354 Transform.prototype.push = function (chunk, encoding) {
24355 this._transformState.needTransform = false;
24356 return Duplex.prototype.push.call(this, chunk, encoding);
24357 };
24358
24359 // This is the part where you do stuff!
24360 // override this function in implementation classes.
24361 // 'chunk' is an input chunk.
24362 //
24363 // Call `push(newChunk)` to pass along transformed output
24364 // to the readable side. You may call 'push' zero or more times.
24365 //
24366 // Call `cb(err)` when you are done with this chunk. If you pass
24367 // an error, then that'll put the hurt on the whole operation. If you
24368 // never call cb(), then you'll never get another chunk.
24369 Transform.prototype._transform = function (chunk, encoding, cb) {
24370 throw new Error('_transform() is not implemented');
24371 };
24372
24373 Transform.prototype._write = function (chunk, encoding, cb) {
24374 var ts = this._transformState;
24375 ts.writecb = cb;
24376 ts.writechunk = chunk;
24377 ts.writeencoding = encoding;
24378 if (!ts.transforming) {
24379 var rs = this._readableState;
24380 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
24381 }
24382 };
24383
24384 // Doesn't matter what the args are here.
24385 // _transform does all the work.
24386 // That we got here means that the readable side wants more data.
24387 Transform.prototype._read = function (n) {
24388 var ts = this._transformState;
24389
24390 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
24391 ts.transforming = true;
24392 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
24393 } else {
24394 // mark that we need a transform, so that any data that comes in
24395 // will get processed, now that we've asked for it.
24396 ts.needTransform = true;
24397 }
24398 };
24399
24400 function done(stream, er, data) {
24401 if (er) return stream.emit('error', er);
24402
24403 if (data !== null && data !== undefined) stream.push(data);
24404
24405 // if there's nothing in the write buffer, then that means
24406 // that nothing more will ever be provided
24407 var ws = stream._writableState;
24408 var ts = stream._transformState;
24409
24410 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
24411
24412 if (ts.transforming) throw new Error('Calling transform done when still transforming');
24413
24414 return stream.push(null);
24415 }
24416 },{"./_stream_duplex":15,"core-util-is":6,"inherits":9}],19:[function(require,module,exports){
24417 (function (process){
24418 // A bit simpler than readable streams.
24419 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
24420 // the drain event emission and buffering.
24421
24422 'use strict';
24423
24424 module.exports = Writable;
24425
24426 /*<replacement>*/
24427 var processNextTick = require('process-nextick-args');
24428 /*</replacement>*/
24429
24430 /*<replacement>*/
24431 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
24432 /*</replacement>*/
24433
24434 /*<replacement>*/
24435 var Duplex;
24436 /*</replacement>*/
24437
24438 Writable.WritableState = WritableState;
24439
24440 /*<replacement>*/
24441 var util = require('core-util-is');
24442 util.inherits = require('inherits');
24443 /*</replacement>*/
24444
24445 /*<replacement>*/
24446 var internalUtil = {
24447 deprecate: require('util-deprecate')
24448 };
24449 /*</replacement>*/
24450
24451 /*<replacement>*/
24452 var Stream;
24453 (function () {
24454 try {
24455 Stream = require('st' + 'ream');
24456 } catch (_) {} finally {
24457 if (!Stream) Stream = require('events').EventEmitter;
24458 }
24459 })();
24460 /*</replacement>*/
24461
24462 var Buffer = require('buffer').Buffer;
24463 /*<replacement>*/
24464 var bufferShim = require('buffer-shims');
24465 /*</replacement>*/
24466
24467 util.inherits(Writable, Stream);
24468
24469 function nop() {}
24470
24471 function WriteReq(chunk, encoding, cb) {
24472 this.chunk = chunk;
24473 this.encoding = encoding;
24474 this.callback = cb;
24475 this.next = null;
24476 }
24477
24478 function WritableState(options, stream) {
24479 Duplex = Duplex || require('./_stream_duplex');
24480
24481 options = options || {};
24482
24483 // object stream flag to indicate whether or not this stream
24484 // contains buffers or objects.
24485 this.objectMode = !!options.objectMode;
24486
24487 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
24488
24489 // the point at which write() starts returning false
24490 // Note: 0 is a valid value, means that we always return false if
24491 // the entire buffer is not flushed immediately on write()
24492 var hwm = options.highWaterMark;
24493 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
24494 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
24495
24496 // cast to ints.
24497 this.highWaterMark = ~ ~this.highWaterMark;
24498
24499 // drain event flag.
24500 this.needDrain = false;
24501 // at the start of calling end()
24502 this.ending = false;
24503 // when end() has been called, and returned
24504 this.ended = false;
24505 // when 'finish' is emitted
24506 this.finished = false;
24507
24508 // should we decode strings into buffers before passing to _write?
24509 // this is here so that some node-core streams can optimize string
24510 // handling at a lower level.
24511 var noDecode = options.decodeStrings === false;
24512 this.decodeStrings = !noDecode;
24513
24514 // Crypto is kind of old and crusty. Historically, its default string
24515 // encoding is 'binary' so we have to make this configurable.
24516 // Everything else in the universe uses 'utf8', though.
24517 this.defaultEncoding = options.defaultEncoding || 'utf8';
24518
24519 // not an actual buffer we keep track of, but a measurement
24520 // of how much we're waiting to get pushed to some underlying
24521 // socket or file.
24522 this.length = 0;
24523
24524 // a flag to see when we're in the middle of a write.
24525 this.writing = false;
24526
24527 // when true all writes will be buffered until .uncork() call
24528 this.corked = 0;
24529
24530 // a flag to be able to tell if the onwrite cb is called immediately,
24531 // or on a later tick. We set this to true at first, because any
24532 // actions that shouldn't happen until "later" should generally also
24533 // not happen before the first write call.
24534 this.sync = true;
24535
24536 // a flag to know if we're processing previously buffered items, which
24537 // may call the _write() callback in the same tick, so that we don't
24538 // end up in an overlapped onwrite situation.
24539 this.bufferProcessing = false;
24540
24541 // the callback that's passed to _write(chunk,cb)
24542 this.onwrite = function (er) {
24543 onwrite(stream, er);
24544 };
24545
24546 // the callback that the user supplies to write(chunk,encoding,cb)
24547 this.writecb = null;
24548
24549 // the amount that is being written when _write is called.
24550 this.writelen = 0;
24551
24552 this.bufferedRequest = null;
24553 this.lastBufferedRequest = null;
24554
24555 // number of pending user-supplied write callbacks
24556 // this must be 0 before 'finish' can be emitted
24557 this.pendingcb = 0;
24558
24559 // emit prefinish if the only thing we're waiting for is _write cbs
24560 // This is relevant for synchronous Transform streams
24561 this.prefinished = false;
24562
24563 // True if the error was already emitted and should not be thrown again
24564 this.errorEmitted = false;
24565
24566 // count buffered requests
24567 this.bufferedRequestCount = 0;
24568
24569 // allocate the first CorkedRequest, there is always
24570 // one allocated and free to use, and we maintain at most two
24571 this.corkedRequestsFree = new CorkedRequest(this);
24572 }
24573
24574 WritableState.prototype.getBuffer = function getBuffer() {
24575 var current = this.bufferedRequest;
24576 var out = [];
24577 while (current) {
24578 out.push(current);
24579 current = current.next;
24580 }
24581 return out;
24582 };
24583
24584 (function () {
24585 try {
24586 Object.defineProperty(WritableState.prototype, 'buffer', {
24587 get: internalUtil.deprecate(function () {
24588 return this.getBuffer();
24589 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
24590 });
24591 } catch (_) {}
24592 })();
24593
24594 // Test _writableState for inheritance to account for Duplex streams,
24595 // whose prototype chain only points to Readable.
24596 var realHasInstance;
24597 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
24598 realHasInstance = Function.prototype[Symbol.hasInstance];
24599 Object.defineProperty(Writable, Symbol.hasInstance, {
24600 value: function (object) {
24601 if (realHasInstance.call(this, object)) return true;
24602
24603 return object && object._writableState instanceof WritableState;
24604 }
24605 });
24606 } else {
24607 realHasInstance = function (object) {
24608 return object instanceof this;
24609 };
24610 }
24611
24612 function Writable(options) {
24613 Duplex = Duplex || require('./_stream_duplex');
24614
24615 // Writable ctor is applied to Duplexes, too.
24616 // `realHasInstance` is necessary because using plain `instanceof`
24617 // would return false, as no `_writableState` property is attached.
24618
24619 // Trying to use the custom `instanceof` for Writable here will also break the
24620 // Node.js LazyTransform implementation, which has a non-trivial getter for
24621 // `_writableState` that would lead to infinite recursion.
24622 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
24623 return new Writable(options);
24624 }
24625
24626 this._writableState = new WritableState(options, this);
24627
24628 // legacy.
24629 this.writable = true;
24630
24631 if (options) {
24632 if (typeof options.write === 'function') this._write = options.write;
24633
24634 if (typeof options.writev === 'function') this._writev = options.writev;
24635 }
24636
24637 Stream.call(this);
24638 }
24639
24640 // Otherwise people can pipe Writable streams, which is just wrong.
24641 Writable.prototype.pipe = function () {
24642 this.emit('error', new Error('Cannot pipe, not readable'));
24643 };
24644
24645 function writeAfterEnd(stream, cb) {
24646 var er = new Error('write after end');
24647 // TODO: defer error events consistently everywhere, not just the cb
24648 stream.emit('error', er);
24649 processNextTick(cb, er);
24650 }
24651
24652 // If we get something that is not a buffer, string, null, or undefined,
24653 // and we're not in objectMode, then that's an error.
24654 // Otherwise stream chunks are all considered to be of length=1, and the
24655 // watermarks determine how many objects to keep in the buffer, rather than
24656 // how many bytes or characters.
24657 function validChunk(stream, state, chunk, cb) {
24658 var valid = true;
24659 var er = false;
24660 // Always throw error if a null is written
24661 // if we are not in object mode then throw
24662 // if it is not a buffer, string, or undefined.
24663 if (chunk === null) {
24664 er = new TypeError('May not write null values to stream');
24665 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
24666 er = new TypeError('Invalid non-string/buffer chunk');
24667 }
24668 if (er) {
24669 stream.emit('error', er);
24670 processNextTick(cb, er);
24671 valid = false;
24672 }
24673 return valid;
24674 }
24675
24676 Writable.prototype.write = function (chunk, encoding, cb) {
24677 var state = this._writableState;
24678 var ret = false;
24679
24680 if (typeof encoding === 'function') {
24681 cb = encoding;
24682 encoding = null;
24683 }
24684
24685 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
24686
24687 if (typeof cb !== 'function') cb = nop;
24688
24689 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
24690 state.pendingcb++;
24691 ret = writeOrBuffer(this, state, chunk, encoding, cb);
24692 }
24693
24694 return ret;
24695 };
24696
24697 Writable.prototype.cork = function () {
24698 var state = this._writableState;
24699
24700 state.corked++;
24701 };
24702
24703 Writable.prototype.uncork = function () {
24704 var state = this._writableState;
24705
24706 if (state.corked) {
24707 state.corked--;
24708
24709 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
24710 }
24711 };
24712
24713 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
24714 // node::ParseEncoding() requires lower case.
24715 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
24716 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);
24717 this._writableState.defaultEncoding = encoding;
24718 return this;
24719 };
24720
24721 function decodeChunk(state, chunk, encoding) {
24722 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
24723 chunk = bufferShim.from(chunk, encoding);
24724 }
24725 return chunk;
24726 }
24727
24728 // if we're already writing something, then just put this
24729 // in the queue, and wait our turn. Otherwise, call _write
24730 // If we return false, then we need a drain event, so set that flag.
24731 function writeOrBuffer(stream, state, chunk, encoding, cb) {
24732 chunk = decodeChunk(state, chunk, encoding);
24733
24734 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
24735 var len = state.objectMode ? 1 : chunk.length;
24736
24737 state.length += len;
24738
24739 var ret = state.length < state.highWaterMark;
24740 // we must ensure that previous needDrain will not be reset to false.
24741 if (!ret) state.needDrain = true;
24742
24743 if (state.writing || state.corked) {
24744 var last = state.lastBufferedRequest;
24745 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
24746 if (last) {
24747 last.next = state.lastBufferedRequest;
24748 } else {
24749 state.bufferedRequest = state.lastBufferedRequest;
24750 }
24751 state.bufferedRequestCount += 1;
24752 } else {
24753 doWrite(stream, state, false, len, chunk, encoding, cb);
24754 }
24755
24756 return ret;
24757 }
24758
24759 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
24760 state.writelen = len;
24761 state.writecb = cb;
24762 state.writing = true;
24763 state.sync = true;
24764 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
24765 state.sync = false;
24766 }
24767
24768 function onwriteError(stream, state, sync, er, cb) {
24769 --state.pendingcb;
24770 if (sync) processNextTick(cb, er);else cb(er);
24771
24772 stream._writableState.errorEmitted = true;
24773 stream.emit('error', er);
24774 }
24775
24776 function onwriteStateUpdate(state) {
24777 state.writing = false;
24778 state.writecb = null;
24779 state.length -= state.writelen;
24780 state.writelen = 0;
24781 }
24782
24783 function onwrite(stream, er) {
24784 var state = stream._writableState;
24785 var sync = state.sync;
24786 var cb = state.writecb;
24787
24788 onwriteStateUpdate(state);
24789
24790 if (er) onwriteError(stream, state, sync, er, cb);else {
24791 // Check if we're actually ready to finish, but don't emit yet
24792 var finished = needFinish(state);
24793
24794 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
24795 clearBuffer(stream, state);
24796 }
24797
24798 if (sync) {
24799 /*<replacement>*/
24800 asyncWrite(afterWrite, stream, state, finished, cb);
24801 /*</replacement>*/
24802 } else {
24803 afterWrite(stream, state, finished, cb);
24804 }
24805 }
24806 }
24807
24808 function afterWrite(stream, state, finished, cb) {
24809 if (!finished) onwriteDrain(stream, state);
24810 state.pendingcb--;
24811 cb();
24812 finishMaybe(stream, state);
24813 }
24814
24815 // Must force callback to be called on nextTick, so that we don't
24816 // emit 'drain' before the write() consumer gets the 'false' return
24817 // value, and has a chance to attach a 'drain' listener.
24818 function onwriteDrain(stream, state) {
24819 if (state.length === 0 && state.needDrain) {
24820 state.needDrain = false;
24821 stream.emit('drain');
24822 }
24823 }
24824
24825 // if there's something in the buffer waiting, then process it
24826 function clearBuffer(stream, state) {
24827 state.bufferProcessing = true;
24828 var entry = state.bufferedRequest;
24829
24830 if (stream._writev && entry && entry.next) {
24831 // Fast case, write everything using _writev()
24832 var l = state.bufferedRequestCount;
24833 var buffer = new Array(l);
24834 var holder = state.corkedRequestsFree;
24835 holder.entry = entry;
24836
24837 var count = 0;
24838 while (entry) {
24839 buffer[count] = entry;
24840 entry = entry.next;
24841 count += 1;
24842 }
24843
24844 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
24845
24846 // doWrite is almost always async, defer these to save a bit of time
24847 // as the hot path ends with doWrite
24848 state.pendingcb++;
24849 state.lastBufferedRequest = null;
24850 if (holder.next) {
24851 state.corkedRequestsFree = holder.next;
24852 holder.next = null;
24853 } else {
24854 state.corkedRequestsFree = new CorkedRequest(state);
24855 }
24856 } else {
24857 // Slow case, write chunks one-by-one
24858 while (entry) {
24859 var chunk = entry.chunk;
24860 var encoding = entry.encoding;
24861 var cb = entry.callback;
24862 var len = state.objectMode ? 1 : chunk.length;
24863
24864 doWrite(stream, state, false, len, chunk, encoding, cb);
24865 entry = entry.next;
24866 // if we didn't call the onwrite immediately, then
24867 // it means that we need to wait until it does.
24868 // also, that means that the chunk and cb are currently
24869 // being processed, so move the buffer counter past them.
24870 if (state.writing) {
24871 break;
24872 }
24873 }
24874
24875 if (entry === null) state.lastBufferedRequest = null;
24876 }
24877
24878 state.bufferedRequestCount = 0;
24879 state.bufferedRequest = entry;
24880 state.bufferProcessing = false;
24881 }
24882
24883 Writable.prototype._write = function (chunk, encoding, cb) {
24884 cb(new Error('_write() is not implemented'));
24885 };
24886
24887 Writable.prototype._writev = null;
24888
24889 Writable.prototype.end = function (chunk, encoding, cb) {
24890 var state = this._writableState;
24891
24892 if (typeof chunk === 'function') {
24893 cb = chunk;
24894 chunk = null;
24895 encoding = null;
24896 } else if (typeof encoding === 'function') {
24897 cb = encoding;
24898 encoding = null;
24899 }
24900
24901 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
24902
24903 // .end() fully uncorks
24904 if (state.corked) {
24905 state.corked = 1;
24906 this.uncork();
24907 }
24908
24909 // ignore unnecessary end() calls.
24910 if (!state.ending && !state.finished) endWritable(this, state, cb);
24911 };
24912
24913 function needFinish(state) {
24914 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
24915 }
24916
24917 function prefinish(stream, state) {
24918 if (!state.prefinished) {
24919 state.prefinished = true;
24920 stream.emit('prefinish');
24921 }
24922 }
24923
24924 function finishMaybe(stream, state) {
24925 var need = needFinish(state);
24926 if (need) {
24927 if (state.pendingcb === 0) {
24928 prefinish(stream, state);
24929 state.finished = true;
24930 stream.emit('finish');
24931 } else {
24932 prefinish(stream, state);
24933 }
24934 }
24935 return need;
24936 }
24937
24938 function endWritable(stream, state, cb) {
24939 state.ending = true;
24940 finishMaybe(stream, state);
24941 if (cb) {
24942 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
24943 }
24944 state.ended = true;
24945 stream.writable = false;
24946 }
24947
24948 // It seems a linked list but it is not
24949 // there will be only 2 of these for each stream
24950 function CorkedRequest(state) {
24951 var _this = this;
24952
24953 this.next = null;
24954 this.entry = null;
24955
24956 this.finish = function (err) {
24957 var entry = _this.entry;
24958 _this.entry = null;
24959 while (entry) {
24960 var cb = entry.callback;
24961 state.pendingcb--;
24962 cb(err);
24963 entry = entry.next;
24964 }
24965 if (state.corkedRequestsFree) {
24966 state.corkedRequestsFree.next = _this;
24967 } else {
24968 state.corkedRequestsFree = _this;
24969 }
24970 };
24971 }
24972 }).call(this,require('_process'))
24973 },{"./_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){
24974 'use strict';
24975
24976 var Buffer = require('buffer').Buffer;
24977 /*<replacement>*/
24978 var bufferShim = require('buffer-shims');
24979 /*</replacement>*/
24980
24981 module.exports = BufferList;
24982
24983 function BufferList() {
24984 this.head = null;
24985 this.tail = null;
24986 this.length = 0;
24987 }
24988
24989 BufferList.prototype.push = function (v) {
24990 var entry = { data: v, next: null };
24991 if (this.length > 0) this.tail.next = entry;else this.head = entry;
24992 this.tail = entry;
24993 ++this.length;
24994 };
24995
24996 BufferList.prototype.unshift = function (v) {
24997 var entry = { data: v, next: this.head };
24998 if (this.length === 0) this.tail = entry;
24999 this.head = entry;
25000 ++this.length;
25001 };
25002
25003 BufferList.prototype.shift = function () {
25004 if (this.length === 0) return;
25005 var ret = this.head.data;
25006 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
25007 --this.length;
25008 return ret;
25009 };
25010
25011 BufferList.prototype.clear = function () {
25012 this.head = this.tail = null;
25013 this.length = 0;
25014 };
25015
25016 BufferList.prototype.join = function (s) {
25017 if (this.length === 0) return '';
25018 var p = this.head;
25019 var ret = '' + p.data;
25020 while (p = p.next) {
25021 ret += s + p.data;
25022 }return ret;
25023 };
25024
25025 BufferList.prototype.concat = function (n) {
25026 if (this.length === 0) return bufferShim.alloc(0);
25027 if (this.length === 1) return this.head.data;
25028 var ret = bufferShim.allocUnsafe(n >>> 0);
25029 var p = this.head;
25030 var i = 0;
25031 while (p) {
25032 p.data.copy(ret, i);
25033 i += p.data.length;
25034 p = p.next;
25035 }
25036 return ret;
25037 };
25038 },{"buffer":5,"buffer-shims":4}],21:[function(require,module,exports){
25039 module.exports = require("./lib/_stream_passthrough.js")
25040
25041 },{"./lib/_stream_passthrough.js":16}],22:[function(require,module,exports){
25042 (function (process){
25043 var Stream = (function (){
25044 try {
25045 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
25046 } catch(_){}
25047 }());
25048 exports = module.exports = require('./lib/_stream_readable.js');
25049 exports.Stream = Stream || exports;
25050 exports.Readable = exports;
25051 exports.Writable = require('./lib/_stream_writable.js');
25052 exports.Duplex = require('./lib/_stream_duplex.js');
25053 exports.Transform = require('./lib/_stream_transform.js');
25054 exports.PassThrough = require('./lib/_stream_passthrough.js');
25055
25056 if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
25057 module.exports = Stream;
25058 }
25059
25060 }).call(this,require('_process'))
25061 },{"./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){
25062 module.exports = require("./lib/_stream_transform.js")
25063
25064 },{"./lib/_stream_transform.js":18}],24:[function(require,module,exports){
25065 module.exports = require("./lib/_stream_writable.js")
25066
25067 },{"./lib/_stream_writable.js":19}],25:[function(require,module,exports){
25068 // Copyright Joyent, Inc. and other Node contributors.
25069 //
25070 // Permission is hereby granted, free of charge, to any person obtaining a
25071 // copy of this software and associated documentation files (the
25072 // "Software"), to deal in the Software without restriction, including
25073 // without limitation the rights to use, copy, modify, merge, publish,
25074 // distribute, sublicense, and/or sell copies of the Software, and to permit
25075 // persons to whom the Software is furnished to do so, subject to the
25076 // following conditions:
25077 //
25078 // The above copyright notice and this permission notice shall be included
25079 // in all copies or substantial portions of the Software.
25080 //
25081 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25082 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25083 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25084 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25085 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25086 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25087 // USE OR OTHER DEALINGS IN THE SOFTWARE.
25088
25089 module.exports = Stream;
25090
25091 var EE = require('events').EventEmitter;
25092 var inherits = require('inherits');
25093
25094 inherits(Stream, EE);
25095 Stream.Readable = require('readable-stream/readable.js');
25096 Stream.Writable = require('readable-stream/writable.js');
25097 Stream.Duplex = require('readable-stream/duplex.js');
25098 Stream.Transform = require('readable-stream/transform.js');
25099 Stream.PassThrough = require('readable-stream/passthrough.js');
25100
25101 // Backwards-compat with node 0.4.x
25102 Stream.Stream = Stream;
25103
25104
25105
25106 // old-style streams. Note that the pipe method (the only relevant
25107 // part of this class) is overridden in the Readable class.
25108
25109 function Stream() {
25110 EE.call(this);
25111 }
25112
25113 Stream.prototype.pipe = function(dest, options) {
25114 var source = this;
25115
25116 function ondata(chunk) {
25117 if (dest.writable) {
25118 if (false === dest.write(chunk) && source.pause) {
25119 source.pause();
25120 }
25121 }
25122 }
25123
25124 source.on('data', ondata);
25125
25126 function ondrain() {
25127 if (source.readable && source.resume) {
25128 source.resume();
25129 }
25130 }
25131
25132 dest.on('drain', ondrain);
25133
25134 // If the 'end' option is not supplied, dest.end() will be called when
25135 // source gets the 'end' or 'close' events. Only dest.end() once.
25136 if (!dest._isStdio && (!options || options.end !== false)) {
25137 source.on('end', onend);
25138 source.on('close', onclose);
25139 }
25140
25141 var didOnEnd = false;
25142 function onend() {
25143 if (didOnEnd) return;
25144 didOnEnd = true;
25145
25146 dest.end();
25147 }
25148
25149
25150 function onclose() {
25151 if (didOnEnd) return;
25152 didOnEnd = true;
25153
25154 if (typeof dest.destroy === 'function') dest.destroy();
25155 }
25156
25157 // don't leave dangling pipes when there are errors.
25158 function onerror(er) {
25159 cleanup();
25160 if (EE.listenerCount(this, 'error') === 0) {
25161 throw er; // Unhandled stream error in pipe.
25162 }
25163 }
25164
25165 source.on('error', onerror);
25166 dest.on('error', onerror);
25167
25168 // remove all the event listeners that were added.
25169 function cleanup() {
25170 source.removeListener('data', ondata);
25171 dest.removeListener('drain', ondrain);
25172
25173 source.removeListener('end', onend);
25174 source.removeListener('close', onclose);
25175
25176 source.removeListener('error', onerror);
25177 dest.removeListener('error', onerror);
25178
25179 source.removeListener('end', cleanup);
25180 source.removeListener('close', cleanup);
25181
25182 dest.removeListener('close', cleanup);
25183 }
25184
25185 source.on('end', cleanup);
25186 source.on('close', cleanup);
25187
25188 dest.on('close', cleanup);
25189
25190 dest.emit('pipe', source);
25191
25192 // Allow for unix-like usage: A.pipe(B).pipe(C)
25193 return dest;
25194 };
25195
25196 },{"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){
25197 // Copyright Joyent, Inc. and other Node contributors.
25198 //
25199 // Permission is hereby granted, free of charge, to any person obtaining a
25200 // copy of this software and associated documentation files (the
25201 // "Software"), to deal in the Software without restriction, including
25202 // without limitation the rights to use, copy, modify, merge, publish,
25203 // distribute, sublicense, and/or sell copies of the Software, and to permit
25204 // persons to whom the Software is furnished to do so, subject to the
25205 // following conditions:
25206 //
25207 // The above copyright notice and this permission notice shall be included
25208 // in all copies or substantial portions of the Software.
25209 //
25210 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25211 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25212 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25213 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25214 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25215 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25216 // USE OR OTHER DEALINGS IN THE SOFTWARE.
25217
25218 var Buffer = require('buffer').Buffer;
25219
25220 var isBufferEncoding = Buffer.isEncoding
25221 || function(encoding) {
25222 switch (encoding && encoding.toLowerCase()) {
25223 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;
25224 default: return false;
25225 }
25226 }
25227
25228
25229 function assertEncoding(encoding) {
25230 if (encoding && !isBufferEncoding(encoding)) {
25231 throw new Error('Unknown encoding: ' + encoding);
25232 }
25233 }
25234
25235 // StringDecoder provides an interface for efficiently splitting a series of
25236 // buffers into a series of JS strings without breaking apart multi-byte
25237 // characters. CESU-8 is handled as part of the UTF-8 encoding.
25238 //
25239 // @TODO Handling all encodings inside a single object makes it very difficult
25240 // to reason about this code, so it should be split up in the future.
25241 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
25242 // points as used by CESU-8.
25243 var StringDecoder = exports.StringDecoder = function(encoding) {
25244 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
25245 assertEncoding(encoding);
25246 switch (this.encoding) {
25247 case 'utf8':
25248 // CESU-8 represents each of Surrogate Pair by 3-bytes
25249 this.surrogateSize = 3;
25250 break;
25251 case 'ucs2':
25252 case 'utf16le':
25253 // UTF-16 represents each of Surrogate Pair by 2-bytes
25254 this.surrogateSize = 2;
25255 this.detectIncompleteChar = utf16DetectIncompleteChar;
25256 break;
25257 case 'base64':
25258 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
25259 this.surrogateSize = 3;
25260 this.detectIncompleteChar = base64DetectIncompleteChar;
25261 break;
25262 default:
25263 this.write = passThroughWrite;
25264 return;
25265 }
25266
25267 // Enough space to store all bytes of a single character. UTF-8 needs 4
25268 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
25269 this.charBuffer = new Buffer(6);
25270 // Number of bytes received for the current incomplete multi-byte character.
25271 this.charReceived = 0;
25272 // Number of bytes expected for the current incomplete multi-byte character.
25273 this.charLength = 0;
25274 };
25275
25276
25277 // write decodes the given buffer and returns it as JS string that is
25278 // guaranteed to not contain any partial multi-byte characters. Any partial
25279 // character found at the end of the buffer is buffered up, and will be
25280 // returned when calling write again with the remaining bytes.
25281 //
25282 // Note: Converting a Buffer containing an orphan surrogate to a String
25283 // currently works, but converting a String to a Buffer (via `new Buffer`, or
25284 // Buffer#write) will replace incomplete surrogates with the unicode
25285 // replacement character. See https://codereview.chromium.org/121173009/ .
25286 StringDecoder.prototype.write = function(buffer) {
25287 var charStr = '';
25288 // if our last write ended with an incomplete multibyte character
25289 while (this.charLength) {
25290 // determine how many remaining bytes this buffer has to offer for this char
25291 var available = (buffer.length >= this.charLength - this.charReceived) ?
25292 this.charLength - this.charReceived :
25293 buffer.length;
25294
25295 // add the new bytes to the char buffer
25296 buffer.copy(this.charBuffer, this.charReceived, 0, available);
25297 this.charReceived += available;
25298
25299 if (this.charReceived < this.charLength) {
25300 // still not enough chars in this buffer? wait for more ...
25301 return '';
25302 }
25303
25304 // remove bytes belonging to the current character from the buffer
25305 buffer = buffer.slice(available, buffer.length);
25306
25307 // get the character that was split
25308 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
25309
25310 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
25311 var charCode = charStr.charCodeAt(charStr.length - 1);
25312 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
25313 this.charLength += this.surrogateSize;
25314 charStr = '';
25315 continue;
25316 }
25317 this.charReceived = this.charLength = 0;
25318
25319 // if there are no more bytes in this buffer, just emit our char
25320 if (buffer.length === 0) {
25321 return charStr;
25322 }
25323 break;
25324 }
25325
25326 // determine and set charLength / charReceived
25327 this.detectIncompleteChar(buffer);
25328
25329 var end = buffer.length;
25330 if (this.charLength) {
25331 // buffer the incomplete character bytes we got
25332 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
25333 end -= this.charReceived;
25334 }
25335
25336 charStr += buffer.toString(this.encoding, 0, end);
25337
25338 var end = charStr.length - 1;
25339 var charCode = charStr.charCodeAt(end);
25340 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
25341 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
25342 var size = this.surrogateSize;
25343 this.charLength += size;
25344 this.charReceived += size;
25345 this.charBuffer.copy(this.charBuffer, size, 0, size);
25346 buffer.copy(this.charBuffer, 0, 0, size);
25347 return charStr.substring(0, end);
25348 }
25349
25350 // or just emit the charStr
25351 return charStr;
25352 };
25353
25354 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
25355 // the end of the given buffer. If so, it sets this.charLength to the byte
25356 // length that character, and sets this.charReceived to the number of bytes
25357 // that are available for this character.
25358 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
25359 // determine how many bytes we have to check at the end of this buffer
25360 var i = (buffer.length >= 3) ? 3 : buffer.length;
25361
25362 // Figure out if one of the last i bytes of our buffer announces an
25363 // incomplete char.
25364 for (; i > 0; i--) {
25365 var c = buffer[buffer.length - i];
25366
25367 // See http://en.wikipedia.org/wiki/UTF-8#Description
25368
25369 // 110XXXXX
25370 if (i == 1 && c >> 5 == 0x06) {
25371 this.charLength = 2;
25372 break;
25373 }
25374
25375 // 1110XXXX
25376 if (i <= 2 && c >> 4 == 0x0E) {
25377 this.charLength = 3;
25378 break;
25379 }
25380
25381 // 11110XXX
25382 if (i <= 3 && c >> 3 == 0x1E) {
25383 this.charLength = 4;
25384 break;
25385 }
25386 }
25387 this.charReceived = i;
25388 };
25389
25390 StringDecoder.prototype.end = function(buffer) {
25391 var res = '';
25392 if (buffer && buffer.length)
25393 res = this.write(buffer);
25394
25395 if (this.charReceived) {
25396 var cr = this.charReceived;
25397 var buf = this.charBuffer;
25398 var enc = this.encoding;
25399 res += buf.slice(0, cr).toString(enc);
25400 }
25401
25402 return res;
25403 };
25404
25405 function passThroughWrite(buffer) {
25406 return buffer.toString(this.encoding);
25407 }
25408
25409 function utf16DetectIncompleteChar(buffer) {
25410 this.charReceived = buffer.length % 2;
25411 this.charLength = this.charReceived ? 2 : 0;
25412 }
25413
25414 function base64DetectIncompleteChar(buffer) {
25415 this.charReceived = buffer.length % 3;
25416 this.charLength = this.charReceived ? 3 : 0;
25417 }
25418
25419 },{"buffer":5}],27:[function(require,module,exports){
25420 (function (global){
25421
25422 /**
25423 * Module exports.
25424 */
25425
25426 module.exports = deprecate;
25427
25428 /**
25429 * Mark that a method should not be used.
25430 * Returns a modified function which warns once by default.
25431 *
25432 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
25433 *
25434 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
25435 * will throw an Error when invoked.
25436 *
25437 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
25438 * will invoke `console.trace()` instead of `console.error()`.
25439 *
25440 * @param {Function} fn - the function to deprecate
25441 * @param {String} msg - the string to print to the console when `fn` is invoked
25442 * @returns {Function} a new "deprecated" version of `fn`
25443 * @api public
25444 */
25445
25446 function deprecate (fn, msg) {
25447 if (config('noDeprecation')) {
25448 return fn;
25449 }
25450
25451 var warned = false;
25452 function deprecated() {
25453 if (!warned) {
25454 if (config('throwDeprecation')) {
25455 throw new Error(msg);
25456 } else if (config('traceDeprecation')) {
25457 console.trace(msg);
25458 } else {
25459 console.warn(msg);
25460 }
25461 warned = true;
25462 }
25463 return fn.apply(this, arguments);
25464 }
25465
25466 return deprecated;
25467 }
25468
25469 /**
25470 * Checks `localStorage` for boolean values for the given `name`.
25471 *
25472 * @param {String} name
25473 * @returns {Boolean}
25474 * @api private
25475 */
25476
25477 function config (name) {
25478 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
25479 try {
25480 if (!global.localStorage) return false;
25481 } catch (_) {
25482 return false;
25483 }
25484 var val = global.localStorage[name];
25485 if (null == val) return false;
25486 return String(val).toLowerCase() === 'true';
25487 }
25488
25489 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
25490 },{}],28:[function(require,module,exports){
25491 arguments[4][9][0].apply(exports,arguments)
25492 },{"dup":9}],29:[function(require,module,exports){
25493 module.exports = function isBuffer(arg) {
25494 return arg && typeof arg === 'object'
25495 && typeof arg.copy === 'function'
25496 && typeof arg.fill === 'function'
25497 && typeof arg.readUInt8 === 'function';
25498 }
25499 },{}],30:[function(require,module,exports){
25500 (function (process,global){
25501 // Copyright Joyent, Inc. and other Node contributors.
25502 //
25503 // Permission is hereby granted, free of charge, to any person obtaining a
25504 // copy of this software and associated documentation files (the
25505 // "Software"), to deal in the Software without restriction, including
25506 // without limitation the rights to use, copy, modify, merge, publish,
25507 // distribute, sublicense, and/or sell copies of the Software, and to permit
25508 // persons to whom the Software is furnished to do so, subject to the
25509 // following conditions:
25510 //
25511 // The above copyright notice and this permission notice shall be included
25512 // in all copies or substantial portions of the Software.
25513 //
25514 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25515 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25516 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25517 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25518 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25519 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25520 // USE OR OTHER DEALINGS IN THE SOFTWARE.
25521
25522 var formatRegExp = /%[sdj%]/g;
25523 exports.format = function(f) {
25524 if (!isString(f)) {
25525 var objects = [];
25526 for (var i = 0; i < arguments.length; i++) {
25527 objects.push(inspect(arguments[i]));
25528 }
25529 return objects.join(' ');
25530 }
25531
25532 var i = 1;
25533 var args = arguments;
25534 var len = args.length;
25535 var str = String(f).replace(formatRegExp, function(x) {
25536 if (x === '%%') return '%';
25537 if (i >= len) return x;
25538 switch (x) {
25539 case '%s': return String(args[i++]);
25540 case '%d': return Number(args[i++]);
25541 case '%j':
25542 try {
25543 return JSON.stringify(args[i++]);
25544 } catch (_) {
25545 return '[Circular]';
25546 }
25547 default:
25548 return x;
25549 }
25550 });
25551 for (var x = args[i]; i < len; x = args[++i]) {
25552 if (isNull(x) || !isObject(x)) {
25553 str += ' ' + x;
25554 } else {
25555 str += ' ' + inspect(x);
25556 }
25557 }
25558 return str;
25559 };
25560
25561
25562 // Mark that a method should not be used.
25563 // Returns a modified function which warns once by default.
25564 // If --no-deprecation is set, then it is a no-op.
25565 exports.deprecate = function(fn, msg) {
25566 // Allow for deprecating things in the process of starting up.
25567 if (isUndefined(global.process)) {
25568 return function() {
25569 return exports.deprecate(fn, msg).apply(this, arguments);
25570 };
25571 }
25572
25573 if (process.noDeprecation === true) {
25574 return fn;
25575 }
25576
25577 var warned = false;
25578 function deprecated() {
25579 if (!warned) {
25580 if (process.throwDeprecation) {
25581 throw new Error(msg);
25582 } else if (process.traceDeprecation) {
25583 console.trace(msg);
25584 } else {
25585 console.error(msg);
25586 }
25587 warned = true;
25588 }
25589 return fn.apply(this, arguments);
25590 }
25591
25592 return deprecated;
25593 };
25594
25595
25596 var debugs = {};
25597 var debugEnviron;
25598 exports.debuglog = function(set) {
25599 if (isUndefined(debugEnviron))
25600 debugEnviron = process.env.NODE_DEBUG || '';
25601 set = set.toUpperCase();
25602 if (!debugs[set]) {
25603 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
25604 var pid = process.pid;
25605 debugs[set] = function() {
25606 var msg = exports.format.apply(exports, arguments);
25607 console.error('%s %d: %s', set, pid, msg);
25608 };
25609 } else {
25610 debugs[set] = function() {};
25611 }
25612 }
25613 return debugs[set];
25614 };
25615
25616
25617 /**
25618 * Echos the value of a value. Trys to print the value out
25619 * in the best way possible given the different types.
25620 *
25621 * @param {Object} obj The object to print out.
25622 * @param {Object} opts Optional options object that alters the output.
25623 */
25624 /* legacy: obj, showHidden, depth, colors*/
25625 function inspect(obj, opts) {
25626 // default options
25627 var ctx = {
25628 seen: [],
25629 stylize: stylizeNoColor
25630 };
25631 // legacy...
25632 if (arguments.length >= 3) ctx.depth = arguments[2];
25633 if (arguments.length >= 4) ctx.colors = arguments[3];
25634 if (isBoolean(opts)) {
25635 // legacy...
25636 ctx.showHidden = opts;
25637 } else if (opts) {
25638 // got an "options" object
25639 exports._extend(ctx, opts);
25640 }
25641 // set default options
25642 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
25643 if (isUndefined(ctx.depth)) ctx.depth = 2;
25644 if (isUndefined(ctx.colors)) ctx.colors = false;
25645 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
25646 if (ctx.colors) ctx.stylize = stylizeWithColor;
25647 return formatValue(ctx, obj, ctx.depth);
25648 }
25649 exports.inspect = inspect;
25650
25651
25652 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
25653 inspect.colors = {
25654 'bold' : [1, 22],
25655 'italic' : [3, 23],
25656 'underline' : [4, 24],
25657 'inverse' : [7, 27],
25658 'white' : [37, 39],
25659 'grey' : [90, 39],
25660 'black' : [30, 39],
25661 'blue' : [34, 39],
25662 'cyan' : [36, 39],
25663 'green' : [32, 39],
25664 'magenta' : [35, 39],
25665 'red' : [31, 39],
25666 'yellow' : [33, 39]
25667 };
25668
25669 // Don't use 'blue' not visible on cmd.exe
25670 inspect.styles = {
25671 'special': 'cyan',
25672 'number': 'yellow',
25673 'boolean': 'yellow',
25674 'undefined': 'grey',
25675 'null': 'bold',
25676 'string': 'green',
25677 'date': 'magenta',
25678 // "name": intentionally not styling
25679 'regexp': 'red'
25680 };
25681
25682
25683 function stylizeWithColor(str, styleType) {
25684 var style = inspect.styles[styleType];
25685
25686 if (style) {
25687 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
25688 '\u001b[' + inspect.colors[style][1] + 'm';
25689 } else {
25690 return str;
25691 }
25692 }
25693
25694
25695 function stylizeNoColor(str, styleType) {
25696 return str;
25697 }
25698
25699
25700 function arrayToHash(array) {
25701 var hash = {};
25702
25703 array.forEach(function(val, idx) {
25704 hash[val] = true;
25705 });
25706
25707 return hash;
25708 }
25709
25710
25711 function formatValue(ctx, value, recurseTimes) {
25712 // Provide a hook for user-specified inspect functions.
25713 // Check that value is an object with an inspect function on it
25714 if (ctx.customInspect &&
25715 value &&
25716 isFunction(value.inspect) &&
25717 // Filter out the util module, it's inspect function is special
25718 value.inspect !== exports.inspect &&
25719 // Also filter out any prototype objects using the circular check.
25720 !(value.constructor && value.constructor.prototype === value)) {
25721 var ret = value.inspect(recurseTimes, ctx);
25722 if (!isString(ret)) {
25723 ret = formatValue(ctx, ret, recurseTimes);
25724 }
25725 return ret;
25726 }
25727
25728 // Primitive types cannot have properties
25729 var primitive = formatPrimitive(ctx, value);
25730 if (primitive) {
25731 return primitive;
25732 }
25733
25734 // Look up the keys of the object.
25735 var keys = Object.keys(value);
25736 var visibleKeys = arrayToHash(keys);
25737
25738 if (ctx.showHidden) {
25739 keys = Object.getOwnPropertyNames(value);
25740 }
25741
25742 // IE doesn't make error fields non-enumerable
25743 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
25744 if (isError(value)
25745 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
25746 return formatError(value);
25747 }
25748
25749 // Some type of object without properties can be shortcutted.
25750 if (keys.length === 0) {
25751 if (isFunction(value)) {
25752 var name = value.name ? ': ' + value.name : '';
25753 return ctx.stylize('[Function' + name + ']', 'special');
25754 }
25755 if (isRegExp(value)) {
25756 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
25757 }
25758 if (isDate(value)) {
25759 return ctx.stylize(Date.prototype.toString.call(value), 'date');
25760 }
25761 if (isError(value)) {
25762 return formatError(value);
25763 }
25764 }
25765
25766 var base = '', array = false, braces = ['{', '}'];
25767
25768 // Make Array say that they are Array
25769 if (isArray(value)) {
25770 array = true;
25771 braces = ['[', ']'];
25772 }
25773
25774 // Make functions say that they are functions
25775 if (isFunction(value)) {
25776 var n = value.name ? ': ' + value.name : '';
25777 base = ' [Function' + n + ']';
25778 }
25779
25780 // Make RegExps say that they are RegExps
25781 if (isRegExp(value)) {
25782 base = ' ' + RegExp.prototype.toString.call(value);
25783 }
25784
25785 // Make dates with properties first say the date
25786 if (isDate(value)) {
25787 base = ' ' + Date.prototype.toUTCString.call(value);
25788 }
25789
25790 // Make error with message first say the error
25791 if (isError(value)) {
25792 base = ' ' + formatError(value);
25793 }
25794
25795 if (keys.length === 0 && (!array || value.length == 0)) {
25796 return braces[0] + base + braces[1];
25797 }
25798
25799 if (recurseTimes < 0) {
25800 if (isRegExp(value)) {
25801 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
25802 } else {
25803 return ctx.stylize('[Object]', 'special');
25804 }
25805 }
25806
25807 ctx.seen.push(value);
25808
25809 var output;
25810 if (array) {
25811 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
25812 } else {
25813 output = keys.map(function(key) {
25814 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
25815 });
25816 }
25817
25818 ctx.seen.pop();
25819
25820 return reduceToSingleString(output, base, braces);
25821 }
25822
25823
25824 function formatPrimitive(ctx, value) {
25825 if (isUndefined(value))
25826 return ctx.stylize('undefined', 'undefined');
25827 if (isString(value)) {
25828 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
25829 .replace(/'/g, "\\'")
25830 .replace(/\\"/g, '"') + '\'';
25831 return ctx.stylize(simple, 'string');
25832 }
25833 if (isNumber(value))
25834 return ctx.stylize('' + value, 'number');
25835 if (isBoolean(value))
25836 return ctx.stylize('' + value, 'boolean');
25837 // For some reason typeof null is "object", so special case here.
25838 if (isNull(value))
25839 return ctx.stylize('null', 'null');
25840 }
25841
25842
25843 function formatError(value) {
25844 return '[' + Error.prototype.toString.call(value) + ']';
25845 }
25846
25847
25848 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
25849 var output = [];
25850 for (var i = 0, l = value.length; i < l; ++i) {
25851 if (hasOwnProperty(value, String(i))) {
25852 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
25853 String(i), true));
25854 } else {
25855 output.push('');
25856 }
25857 }
25858 keys.forEach(function(key) {
25859 if (!key.match(/^\d+$/)) {
25860 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
25861 key, true));
25862 }
25863 });
25864 return output;
25865 }
25866
25867
25868 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
25869 var name, str, desc;
25870 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
25871 if (desc.get) {
25872 if (desc.set) {
25873 str = ctx.stylize('[Getter/Setter]', 'special');
25874 } else {
25875 str = ctx.stylize('[Getter]', 'special');
25876 }
25877 } else {
25878 if (desc.set) {
25879 str = ctx.stylize('[Setter]', 'special');
25880 }
25881 }
25882 if (!hasOwnProperty(visibleKeys, key)) {
25883 name = '[' + key + ']';
25884 }
25885 if (!str) {
25886 if (ctx.seen.indexOf(desc.value) < 0) {
25887 if (isNull(recurseTimes)) {
25888 str = formatValue(ctx, desc.value, null);
25889 } else {
25890 str = formatValue(ctx, desc.value, recurseTimes - 1);
25891 }
25892 if (str.indexOf('\n') > -1) {
25893 if (array) {
25894 str = str.split('\n').map(function(line) {
25895 return ' ' + line;
25896 }).join('\n').substr(2);
25897 } else {
25898 str = '\n' + str.split('\n').map(function(line) {
25899 return ' ' + line;
25900 }).join('\n');
25901 }
25902 }
25903 } else {
25904 str = ctx.stylize('[Circular]', 'special');
25905 }
25906 }
25907 if (isUndefined(name)) {
25908 if (array && key.match(/^\d+$/)) {
25909 return str;
25910 }
25911 name = JSON.stringify('' + key);
25912 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
25913 name = name.substr(1, name.length - 2);
25914 name = ctx.stylize(name, 'name');
25915 } else {
25916 name = name.replace(/'/g, "\\'")
25917 .replace(/\\"/g, '"')
25918 .replace(/(^"|"$)/g, "'");
25919 name = ctx.stylize(name, 'string');
25920 }
25921 }
25922
25923 return name + ': ' + str;
25924 }
25925
25926
25927 function reduceToSingleString(output, base, braces) {
25928 var numLinesEst = 0;
25929 var length = output.reduce(function(prev, cur) {
25930 numLinesEst++;
25931 if (cur.indexOf('\n') >= 0) numLinesEst++;
25932 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
25933 }, 0);
25934
25935 if (length > 60) {
25936 return braces[0] +
25937 (base === '' ? '' : base + '\n ') +
25938 ' ' +
25939 output.join(',\n ') +
25940 ' ' +
25941 braces[1];
25942 }
25943
25944 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
25945 }
25946
25947
25948 // NOTE: These type checking functions intentionally don't use `instanceof`
25949 // because it is fragile and can be easily faked with `Object.create()`.
25950 function isArray(ar) {
25951 return Array.isArray(ar);
25952 }
25953 exports.isArray = isArray;
25954
25955 function isBoolean(arg) {
25956 return typeof arg === 'boolean';
25957 }
25958 exports.isBoolean = isBoolean;
25959
25960 function isNull(arg) {
25961 return arg === null;
25962 }
25963 exports.isNull = isNull;
25964
25965 function isNullOrUndefined(arg) {
25966 return arg == null;
25967 }
25968 exports.isNullOrUndefined = isNullOrUndefined;
25969
25970 function isNumber(arg) {
25971 return typeof arg === 'number';
25972 }
25973 exports.isNumber = isNumber;
25974
25975 function isString(arg) {
25976 return typeof arg === 'string';
25977 }
25978 exports.isString = isString;
25979
25980 function isSymbol(arg) {
25981 return typeof arg === 'symbol';
25982 }
25983 exports.isSymbol = isSymbol;
25984
25985 function isUndefined(arg) {
25986 return arg === void 0;
25987 }
25988 exports.isUndefined = isUndefined;
25989
25990 function isRegExp(re) {
25991 return isObject(re) && objectToString(re) === '[object RegExp]';
25992 }
25993 exports.isRegExp = isRegExp;
25994
25995 function isObject(arg) {
25996 return typeof arg === 'object' && arg !== null;
25997 }
25998 exports.isObject = isObject;
25999
26000 function isDate(d) {
26001 return isObject(d) && objectToString(d) === '[object Date]';
26002 }
26003 exports.isDate = isDate;
26004
26005 function isError(e) {
26006 return isObject(e) &&
26007 (objectToString(e) === '[object Error]' || e instanceof Error);
26008 }
26009 exports.isError = isError;
26010
26011 function isFunction(arg) {
26012 return typeof arg === 'function';
26013 }
26014 exports.isFunction = isFunction;
26015
26016 function isPrimitive(arg) {
26017 return arg === null ||
26018 typeof arg === 'boolean' ||
26019 typeof arg === 'number' ||
26020 typeof arg === 'string' ||
26021 typeof arg === 'symbol' || // ES6 symbol
26022 typeof arg === 'undefined';
26023 }
26024 exports.isPrimitive = isPrimitive;
26025
26026 exports.isBuffer = require('./support/isBuffer');
26027
26028 function objectToString(o) {
26029 return Object.prototype.toString.call(o);
26030 }
26031
26032
26033 function pad(n) {
26034 return n < 10 ? '0' + n.toString(10) : n.toString(10);
26035 }
26036
26037
26038 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
26039 'Oct', 'Nov', 'Dec'];
26040
26041 // 26 Feb 16:19:34
26042 function timestamp() {
26043 var d = new Date();
26044 var time = [pad(d.getHours()),
26045 pad(d.getMinutes()),
26046 pad(d.getSeconds())].join(':');
26047 return [d.getDate(), months[d.getMonth()], time].join(' ');
26048 }
26049
26050
26051 // log is just a thin wrapper to console.log that prepends a timestamp
26052 exports.log = function() {
26053 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
26054 };
26055
26056
26057 /**
26058 * Inherit the prototype methods from one constructor into another.
26059 *
26060 * The Function.prototype.inherits from lang.js rewritten as a standalone
26061 * function (not on Function.prototype). NOTE: If this file is to be loaded
26062 * during bootstrapping this function needs to be rewritten using some native
26063 * functions as prototype setup using normal JavaScript does not work as
26064 * expected during bootstrapping (see mirror.js in r114903).
26065 *
26066 * @param {function} ctor Constructor function which needs to inherit the
26067 * prototype.
26068 * @param {function} superCtor Constructor function to inherit prototype from.
26069 */
26070 exports.inherits = require('inherits');
26071
26072 exports._extend = function(origin, add) {
26073 // Don't do anything if add isn't an object
26074 if (!add || !isObject(add)) return origin;
26075
26076 var keys = Object.keys(add);
26077 var i = keys.length;
26078 while (i--) {
26079 origin[keys[i]] = add[keys[i]];
26080 }
26081 return origin;
26082 };
26083
26084 function hasOwnProperty(obj, prop) {
26085 return Object.prototype.hasOwnProperty.call(obj, prop);
26086 }
26087
26088 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
26089 },{"./support/isBuffer":29,"_process":13,"inherits":28}],31:[function(require,module,exports){
26090 (function (Buffer){
26091 const createKeccakHash = require('keccak')
26092 const secp256k1 = require('secp256k1')
26093 const assert = require('assert')
26094 const rlp = require('rlp')
26095 const BN = require('bn.js')
26096 const createHash = require('create-hash')
26097 Object.assign(exports, require('ethjs-util'))
26098
26099 /**
26100 * the max integer that this VM can handle (a ```BN```)
26101 * @var {BN} MAX_INTEGER
26102 */
26103 exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)
26104
26105 /**
26106 * 2^256 (a ```BN```)
26107 * @var {BN} TWO_POW256
26108 */
26109 exports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16)
26110
26111 /**
26112 * SHA3-256 hash of null (a ```String```)
26113 * @var {String} SHA3_NULL_S
26114 */
26115 exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
26116
26117 /**
26118 * SHA3-256 hash of null (a ```Buffer```)
26119 * @var {Buffer} SHA3_NULL
26120 */
26121 exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
26122
26123 /**
26124 * SHA3-256 of an RLP of an empty array (a ```String```)
26125 * @var {String} SHA3_RLP_ARRAY_S
26126 */
26127 exports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
26128
26129 /**
26130 * SHA3-256 of an RLP of an empty array (a ```Buffer```)
26131 * @var {Buffer} SHA3_RLP_ARRAY
26132 */
26133 exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
26134
26135 /**
26136 * SHA3-256 hash of the RLP of null (a ```String```)
26137 * @var {String} SHA3_RLP_S
26138 */
26139 exports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
26140
26141 /**
26142 * SHA3-256 hash of the RLP of null (a ```Buffer```)
26143 * @var {Buffer} SHA3_RLP
26144 */
26145 exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
26146
26147 /**
26148 * [`BN`](https://github.com/indutny/bn.js)
26149 * @var {Function}
26150 */
26151 exports.BN = BN
26152
26153 /**
26154 * [`rlp`](https://github.com/ethereumjs/rlp)
26155 * @var {Function}
26156 */
26157 exports.rlp = rlp
26158
26159 /**
26160 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
26161 * @var {Object}
26162 */
26163 exports.secp256k1 = secp256k1
26164
26165 /**
26166 * Returns a buffer filled with 0s
26167 * @method zeros
26168 * @param {Number} bytes the number of bytes the buffer should be
26169 * @return {Buffer}
26170 */
26171 exports.zeros = function (bytes) {
26172 return Buffer.allocUnsafe(bytes).fill(0)
26173 }
26174
26175 /**
26176 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
26177 * Or it truncates the beginning if it exceeds.
26178 * @method lsetLength
26179 * @param {Buffer|Array} msg the value to pad
26180 * @param {Number} length the number of bytes the output should be
26181 * @param {Boolean} [right=false] whether to start padding form the left or right
26182 * @return {Buffer|Array}
26183 */
26184 exports.setLengthLeft = exports.setLength = function (msg, length, right) {
26185 var buf = exports.zeros(length)
26186 msg = exports.toBuffer(msg)
26187 if (right) {
26188 if (msg.length < length) {
26189 msg.copy(buf)
26190 return buf
26191 }
26192 return msg.slice(0, length)
26193 } else {
26194 if (msg.length < length) {
26195 msg.copy(buf, length - msg.length)
26196 return buf
26197 }
26198 return msg.slice(-length)
26199 }
26200 }
26201
26202 /**
26203 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
26204 * Or it truncates the beginning if it exceeds.
26205 * @param {Buffer|Array} msg the value to pad
26206 * @param {Number} length the number of bytes the output should be
26207 * @return {Buffer|Array}
26208 */
26209 exports.setLengthRight = function (msg, length) {
26210 return exports.setLength(msg, length, true)
26211 }
26212
26213 /**
26214 * Trims leading zeros from a `Buffer` or an `Array`
26215 * @param {Buffer|Array|String} a
26216 * @return {Buffer|Array|String}
26217 */
26218 exports.unpad = exports.stripZeros = function (a) {
26219 a = exports.stripHexPrefix(a)
26220 var first = a[0]
26221 while (a.length > 0 && first.toString() === '0') {
26222 a = a.slice(1)
26223 first = a[0]
26224 }
26225 return a
26226 }
26227 /**
26228 * 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.
26229 * @param {*} v the value
26230 */
26231 exports.toBuffer = function (v) {
26232 if (!Buffer.isBuffer(v)) {
26233 if (Array.isArray(v)) {
26234 v = Buffer.from(v)
26235 } else if (typeof v === 'string') {
26236 if (exports.isHexPrefixed(v)) {
26237 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
26238 } else {
26239 v = Buffer.from(v)
26240 }
26241 } else if (typeof v === 'number') {
26242 v = exports.intToBuffer(v)
26243 } else if (v === null || v === undefined) {
26244 v = Buffer.allocUnsafe(0)
26245 } else if (v.toArray) {
26246 // converts a BN to a Buffer
26247 v = Buffer.from(v.toArray())
26248 } else {
26249 throw new Error('invalid type')
26250 }
26251 }
26252 return v
26253 }
26254
26255 /**
26256 * Converts a `Buffer` to a `Number`
26257 * @param {Buffer} buf
26258 * @return {Number}
26259 * @throws If the input number exceeds 53 bits.
26260 */
26261 exports.bufferToInt = function (buf) {
26262 return new BN(exports.toBuffer(buf)).toNumber()
26263 }
26264
26265 /**
26266 * Converts a `Buffer` into a hex `String`
26267 * @param {Buffer} buf
26268 * @return {String}
26269 */
26270 exports.bufferToHex = function (buf) {
26271 buf = exports.toBuffer(buf)
26272 return '0x' + buf.toString('hex')
26273 }
26274
26275 /**
26276 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
26277 * @param {Buffer} num
26278 * @return {BN}
26279 */
26280 exports.fromSigned = function (num) {
26281 return new BN(num).fromTwos(256)
26282 }
26283
26284 /**
26285 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
26286 * @param {BN} num
26287 * @return {Buffer}
26288 */
26289 exports.toUnsigned = function (num) {
26290 return Buffer.from(num.toTwos(256).toArray())
26291 }
26292
26293 /**
26294 * Creates SHA-3 hash of the input
26295 * @param {Buffer|Array|String|Number} a the input data
26296 * @param {Number} [bits=256] the SHA width
26297 * @return {Buffer}
26298 */
26299 exports.sha3 = function (a, bits) {
26300 a = exports.toBuffer(a)
26301 if (!bits) bits = 256
26302
26303 return createKeccakHash('keccak' + bits).update(a).digest()
26304 }
26305
26306 /**
26307 * Creates SHA256 hash of the input
26308 * @param {Buffer|Array|String|Number} a the input data
26309 * @return {Buffer}
26310 */
26311 exports.sha256 = function (a) {
26312 a = exports.toBuffer(a)
26313 return createHash('sha256').update(a).digest()
26314 }
26315
26316 /**
26317 * Creates RIPEMD160 hash of the input
26318 * @param {Buffer|Array|String|Number} a the input data
26319 * @param {Boolean} padded whether it should be padded to 256 bits or not
26320 * @return {Buffer}
26321 */
26322 exports.ripemd160 = function (a, padded) {
26323 a = exports.toBuffer(a)
26324 var hash = createHash('rmd160').update(a).digest()
26325 if (padded === true) {
26326 return exports.setLength(hash, 32)
26327 } else {
26328 return hash
26329 }
26330 }
26331
26332 /**
26333 * Creates SHA-3 hash of the RLP encoded version of the input
26334 * @param {Buffer|Array|String|Number} a the input data
26335 * @return {Buffer}
26336 */
26337 exports.rlphash = function (a) {
26338 return exports.sha3(rlp.encode(a))
26339 }
26340
26341 /**
26342 * Checks if the private key satisfies the rules of the curve secp256k1.
26343 * @param {Buffer} privateKey
26344 * @return {Boolean}
26345 */
26346 exports.isValidPrivate = function (privateKey) {
26347 return secp256k1.privateKeyVerify(privateKey)
26348 }
26349
26350 /**
26351 * Checks if the public key satisfies the rules of the curve secp256k1
26352 * and the requirements of Ethereum.
26353 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
26354 * @param {Boolean} [sanitize=false] Accept public keys in other formats
26355 * @return {Boolean}
26356 */
26357 exports.isValidPublic = function (publicKey, sanitize) {
26358 if (publicKey.length === 64) {
26359 // Convert to SEC1 for secp256k1
26360 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([4]), publicKey ]))
26361 }
26362
26363 if (!sanitize) {
26364 return false
26365 }
26366
26367 return secp256k1.publicKeyVerify(publicKey)
26368 }
26369
26370 /**
26371 * Returns the ethereum address of a given public key.
26372 * Accepts "Ethereum public keys" and SEC1 encoded keys.
26373 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
26374 * @param {Boolean} [sanitize=false] Accept public keys in other formats
26375 * @return {Buffer}
26376 */
26377 exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
26378 pubKey = exports.toBuffer(pubKey)
26379 if (sanitize && (pubKey.length !== 64)) {
26380 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1)
26381 }
26382 assert(pubKey.length === 64)
26383 // Only take the lower 160bits of the hash
26384 return exports.sha3(pubKey).slice(-20)
26385 }
26386
26387 /**
26388 * Returns the ethereum public key of a given private key
26389 * @param {Buffer} privateKey A private key must be 256 bits wide
26390 * @return {Buffer}
26391 */
26392 var privateToPublic = exports.privateToPublic = function (privateKey) {
26393 privateKey = exports.toBuffer(privateKey)
26394 // skip the type flag and use the X, Y points
26395 return secp256k1.publicKeyCreate(privateKey, false).slice(1)
26396 }
26397
26398 /**
26399 * Converts a public key to the Ethereum format.
26400 * @param {Buffer} publicKey
26401 * @return {Buffer}
26402 */
26403 exports.importPublic = function (publicKey) {
26404 publicKey = exports.toBuffer(publicKey)
26405 if (publicKey.length !== 64) {
26406 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1)
26407 }
26408 return publicKey
26409 }
26410
26411 /**
26412 * ECDSA sign
26413 * @param {Buffer} msgHash
26414 * @param {Buffer} privateKey
26415 * @return {Object}
26416 */
26417 exports.ecsign = function (msgHash, privateKey) {
26418 var sig = secp256k1.sign(msgHash, privateKey)
26419
26420 var ret = {}
26421 ret.r = sig.signature.slice(0, 32)
26422 ret.s = sig.signature.slice(32, 64)
26423 ret.v = sig.recovery + 27
26424 return ret
26425 }
26426
26427 /**
26428 * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
26429 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
26430 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
26431 * used to produce the signature.
26432 * @param message
26433 * @returns {Buffer} hash
26434 */
26435 exports.hashPersonalMessage = function (message) {
26436 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
26437 return exports.sha3(Buffer.concat([prefix, message]))
26438 }
26439
26440 /**
26441 * ECDSA public key recovery from signature
26442 * @param {Buffer} msgHash
26443 * @param {Number} v
26444 * @param {Buffer} r
26445 * @param {Buffer} s
26446 * @return {Buffer} publicKey
26447 */
26448 exports.ecrecover = function (msgHash, v, r, s) {
26449 var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
26450 var recovery = v - 27
26451 if (recovery !== 0 && recovery !== 1) {
26452 throw new Error('Invalid signature v value')
26453 }
26454 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
26455 return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
26456 }
26457
26458 /**
26459 * Convert signature parameters into the format of `eth_sign` RPC method
26460 * @param {Number} v
26461 * @param {Buffer} r
26462 * @param {Buffer} s
26463 * @return {String} sig
26464 */
26465 exports.toRpcSig = function (v, r, s) {
26466 // NOTE: with potential introduction of chainId this might need to be updated
26467 if (v !== 27 && v !== 28) {
26468 throw new Error('Invalid recovery id')
26469 }
26470
26471 // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin
26472 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053
26473 return exports.bufferToHex(Buffer.concat([
26474 exports.setLengthLeft(r, 32),
26475 exports.setLengthLeft(s, 32),
26476 exports.toBuffer(v - 27)
26477 ]))
26478 }
26479
26480 /**
26481 * Convert signature format of the `eth_sign` RPC method to signature parameters
26482 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
26483 * @param {String} sig
26484 * @return {Object}
26485 */
26486 exports.fromRpcSig = function (sig) {
26487 sig = exports.toBuffer(sig)
26488
26489 // NOTE: with potential introduction of chainId this might need to be updated
26490 if (sig.length !== 65) {
26491 throw new Error('Invalid signature length')
26492 }
26493
26494 var v = sig[64]
26495 // support both versions of `eth_sign` responses
26496 if (v < 27) {
26497 v += 27
26498 }
26499
26500 return {
26501 v: v,
26502 r: sig.slice(0, 32),
26503 s: sig.slice(32, 64)
26504 }
26505 }
26506
26507 /**
26508 * Returns the ethereum address of a given private key
26509 * @param {Buffer} privateKey A private key must be 256 bits wide
26510 * @return {Buffer}
26511 */
26512 exports.privateToAddress = function (privateKey) {
26513 return exports.publicToAddress(privateToPublic(privateKey))
26514 }
26515
26516 /**
26517 * Checks if the address is a valid. Accepts checksummed addresses too
26518 * @param {String} address
26519 * @return {Boolean}
26520 */
26521 exports.isValidAddress = function (address) {
26522 return /^0x[0-9a-fA-F]{40}$/i.test(address)
26523 }
26524
26525 /**
26526 * Returns a checksummed address
26527 * @param {String} address
26528 * @return {String}
26529 */
26530 exports.toChecksumAddress = function (address) {
26531 address = exports.stripHexPrefix(address).toLowerCase()
26532 var hash = exports.sha3(address).toString('hex')
26533 var ret = '0x'
26534
26535 for (var i = 0; i < address.length; i++) {
26536 if (parseInt(hash[i], 16) >= 8) {
26537 ret += address[i].toUpperCase()
26538 } else {
26539 ret += address[i]
26540 }
26541 }
26542
26543 return ret
26544 }
26545
26546 /**
26547 * Checks if the address is a valid checksummed address
26548 * @param {Buffer} address
26549 * @return {Boolean}
26550 */
26551 exports.isValidChecksumAddress = function (address) {
26552 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
26553 }
26554
26555 /**
26556 * Generates an address of a newly created contract
26557 * @param {Buffer} from the address which is creating this new address
26558 * @param {Buffer} nonce the nonce of the from account
26559 * @return {Buffer}
26560 */
26561 exports.generateAddress = function (from, nonce) {
26562 from = exports.toBuffer(from)
26563 nonce = new BN(nonce)
26564
26565 if (nonce.isZero()) {
26566 // in RLP we want to encode null in the case of zero nonce
26567 // read the RLP documentation for an answer if you dare
26568 nonce = null
26569 } else {
26570 nonce = Buffer.from(nonce.toArray())
26571 }
26572
26573 // Only take the lower 160bits of the hash
26574 return exports.rlphash([from, nonce]).slice(-20)
26575 }
26576
26577 /**
26578 * Returns true if the supplied address belongs to a precompiled account
26579 * @param {Buffer|String} address
26580 * @return {Boolean}
26581 */
26582 exports.isPrecompiled = function (address) {
26583 var a = exports.unpad(address)
26584 return a.length === 1 && a[0] > 0 && a[0] < 5
26585 }
26586
26587 /**
26588 * Adds "0x" to a given `String` if it does not already start with "0x"
26589 * @param {String} str
26590 * @return {String}
26591 */
26592 exports.addHexPrefix = function (str) {
26593 if (typeof str !== 'string') {
26594 return str
26595 }
26596
26597 return exports.isHexPrefixed(str) ? str : '0x' + str
26598 }
26599
26600 /**
26601 * Validate ECDSA signature
26602 * @method isValidSignature
26603 * @param {Buffer} v
26604 * @param {Buffer} r
26605 * @param {Buffer} s
26606 * @param {Boolean} [homestead=true]
26607 * @return {Boolean}
26608 */
26609
26610 exports.isValidSignature = function (v, r, s, homestead) {
26611 const SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16)
26612 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)
26613
26614 if (r.length !== 32 || s.length !== 32) {
26615 return false
26616 }
26617
26618 if (v !== 27 && v !== 28) {
26619 return false
26620 }
26621
26622 r = new BN(r)
26623 s = new BN(s)
26624
26625 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
26626 return false
26627 }
26628
26629 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) === 1)) {
26630 return false
26631 }
26632
26633 return true
26634 }
26635
26636 /**
26637 * Converts a `Buffer` or `Array` to JSON
26638 * @param {Buffer|Array} ba
26639 * @return {Array|String|null}
26640 */
26641 exports.baToJSON = function (ba) {
26642 if (Buffer.isBuffer(ba)) {
26643 return '0x' + ba.toString('hex')
26644 } else if (ba instanceof Array) {
26645 var array = []
26646 for (var i = 0; i < ba.length; i++) {
26647 array.push(exports.baToJSON(ba[i]))
26648 }
26649 return array
26650 }
26651 }
26652
26653 /**
26654 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
26655 * @param {Object} self the `Object` to define properties on
26656 * @param {Array} fields an array fields to define. Fields can contain:
26657 * * `name` - the name of the properties
26658 * * `length` - the number of bytes the field can have
26659 * * `allowLess` - if the field can be less than the length
26660 * * `allowEmpty`
26661 * @param {*} data data to be validated against the definitions
26662 */
26663 exports.defineProperties = function (self, fields, data) {
26664 self.raw = []
26665 self._fields = []
26666
26667 // attach the `toJSON`
26668 self.toJSON = function (label) {
26669 if (label) {
26670 var obj = {}
26671 self._fields.forEach(function (field) {
26672 obj[field] = '0x' + self[field].toString('hex')
26673 })
26674 return obj
26675 }
26676 return exports.baToJSON(this.raw)
26677 }
26678
26679 self.serialize = function serialize () {
26680 return rlp.encode(self.raw)
26681 }
26682
26683 fields.forEach(function (field, i) {
26684 self._fields.push(field.name)
26685 function getter () {
26686 return self.raw[i]
26687 }
26688 function setter (v) {
26689 v = exports.toBuffer(v)
26690
26691 if (v.toString('hex') === '00' && !field.allowZero) {
26692 v = Buffer.allocUnsafe(0)
26693 }
26694
26695 if (field.allowLess && field.length) {
26696 v = exports.stripZeros(v)
26697 assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
26698 } else if (!(field.allowZero && v.length === 0) && field.length) {
26699 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
26700 }
26701
26702 self.raw[i] = v
26703 }
26704
26705 Object.defineProperty(self, field.name, {
26706 enumerable: true,
26707 configurable: true,
26708 get: getter,
26709 set: setter
26710 })
26711
26712 if (field.default) {
26713 self[field.name] = field.default
26714 }
26715
26716 // attach alias
26717 if (field.alias) {
26718 Object.defineProperty(self, field.alias, {
26719 enumerable: false,
26720 configurable: true,
26721 set: setter,
26722 get: getter
26723 })
26724 }
26725 })
26726
26727 // if the constuctor is passed data
26728 if (data) {
26729 if (typeof data === 'string') {
26730 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
26731 }
26732
26733 if (Buffer.isBuffer(data)) {
26734 data = rlp.decode(data)
26735 }
26736
26737 if (Array.isArray(data)) {
26738 if (data.length > self._fields.length) {
26739 throw (new Error('wrong number of fields in data'))
26740 }
26741
26742 // make sure all the items are buffers
26743 data.forEach(function (d, i) {
26744 self[self._fields[i]] = exports.toBuffer(d)
26745 })
26746 } else if (typeof data === 'object') {
26747 const keys = Object.keys(data)
26748 fields.forEach(function (field) {
26749 if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]
26750 if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]
26751 })
26752 } else {
26753 throw new Error('invalid data')
26754 }
26755 }
26756 }
26757
26758 }).call(this,require("buffer").Buffer)
26759 },{"assert":1,"bn.js":33,"buffer":5,"create-hash":36,"ethjs-util":56,"keccak":65,"rlp":72,"secp256k1":73}],32:[function(require,module,exports){
26760 (function (Buffer){
26761 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
26762 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
26763 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
26764
26765 function check (buffer) {
26766 if (buffer.length < 8) return false
26767 if (buffer.length > 72) return false
26768 if (buffer[0] !== 0x30) return false
26769 if (buffer[1] !== buffer.length - 2) return false
26770 if (buffer[2] !== 0x02) return false
26771
26772 var lenR = buffer[3]
26773 if (lenR === 0) return false
26774 if (5 + lenR >= buffer.length) return false
26775 if (buffer[4 + lenR] !== 0x02) return false
26776
26777 var lenS = buffer[5 + lenR]
26778 if (lenS === 0) return false
26779 if ((6 + lenR + lenS) !== buffer.length) return false
26780
26781 if (buffer[4] & 0x80) return false
26782 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
26783
26784 if (buffer[lenR + 6] & 0x80) return false
26785 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
26786 return true
26787 }
26788
26789 function decode (buffer) {
26790 if (buffer.length < 8) throw new Error('DER sequence length is too short')
26791 if (buffer.length > 72) throw new Error('DER sequence length is too long')
26792 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
26793 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
26794 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
26795
26796 var lenR = buffer[3]
26797 if (lenR === 0) throw new Error('R length is zero')
26798 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
26799 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
26800
26801 var lenS = buffer[5 + lenR]
26802 if (lenS === 0) throw new Error('S length is zero')
26803 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
26804
26805 if (buffer[4] & 0x80) throw new Error('R value is negative')
26806 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
26807
26808 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
26809 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
26810
26811 // non-BIP66 - extract R, S values
26812 return {
26813 r: buffer.slice(4, 4 + lenR),
26814 s: buffer.slice(6 + lenR)
26815 }
26816 }
26817
26818 /*
26819 * Expects r and s to be positive DER integers.
26820 *
26821 * The DER format uses the most significant bit as a sign bit (& 0x80).
26822 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
26823 *
26824 * Examples:
26825 *
26826 * 0 => 0x00
26827 * 1 => 0x01
26828 * -1 => 0xff
26829 * 127 => 0x7f
26830 * -127 => 0x81
26831 * 128 => 0x0080
26832 * -128 => 0x80
26833 * 255 => 0x00ff
26834 * -255 => 0xff01
26835 * 16300 => 0x3fac
26836 * -16300 => 0xc054
26837 * 62300 => 0x00f35c
26838 * -62300 => 0xff0ca4
26839 */
26840 function encode (r, s) {
26841 var lenR = r.length
26842 var lenS = s.length
26843 if (lenR === 0) throw new Error('R length is zero')
26844 if (lenS === 0) throw new Error('S length is zero')
26845 if (lenR > 33) throw new Error('R length is too long')
26846 if (lenS > 33) throw new Error('S length is too long')
26847 if (r[0] & 0x80) throw new Error('R value is negative')
26848 if (s[0] & 0x80) throw new Error('S value is negative')
26849 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
26850 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
26851
26852 var signature = new Buffer(6 + lenR + lenS)
26853
26854 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
26855 signature[0] = 0x30
26856 signature[1] = signature.length - 2
26857 signature[2] = 0x02
26858 signature[3] = r.length
26859 r.copy(signature, 4)
26860 signature[4 + lenR] = 0x02
26861 signature[5 + lenR] = s.length
26862 s.copy(signature, 6 + lenR)
26863
26864 return signature
26865 }
26866
26867 module.exports = {
26868 check: check,
26869 decode: decode,
26870 encode: encode
26871 }
26872
26873 }).call(this,require("buffer").Buffer)
26874 },{"buffer":5}],33:[function(require,module,exports){
26875 (function (module, exports) {
26876 'use strict';
26877
26878 // Utils
26879 function assert (val, msg) {
26880 if (!val) throw new Error(msg || 'Assertion failed');
26881 }
26882
26883 // Could use `inherits` module, but don't want to move from single file
26884 // architecture yet.
26885 function inherits (ctor, superCtor) {
26886 ctor.super_ = superCtor;
26887 var TempCtor = function () {};
26888 TempCtor.prototype = superCtor.prototype;
26889 ctor.prototype = new TempCtor();
26890 ctor.prototype.constructor = ctor;
26891 }
26892
26893 // BN
26894
26895 function BN (number, base, endian) {
26896 if (BN.isBN(number)) {
26897 return number;
26898 }
26899
26900 this.negative = 0;
26901 this.words = null;
26902 this.length = 0;
26903
26904 // Reduction context
26905 this.red = null;
26906
26907 if (number !== null) {
26908 if (base === 'le' || base === 'be') {
26909 endian = base;
26910 base = 10;
26911 }
26912
26913 this._init(number || 0, base || 10, endian || 'be');
26914 }
26915 }
26916 if (typeof module === 'object') {
26917 module.exports = BN;
26918 } else {
26919 exports.BN = BN;
26920 }
26921
26922 BN.BN = BN;
26923 BN.wordSize = 26;
26924
26925 var Buffer;
26926 try {
26927 Buffer = require('buf' + 'fer').Buffer;
26928 } catch (e) {
26929 }
26930
26931 BN.isBN = function isBN (num) {
26932 if (num instanceof BN) {
26933 return true;
26934 }
26935
26936 return num !== null && typeof num === 'object' &&
26937 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
26938 };
26939
26940 BN.max = function max (left, right) {
26941 if (left.cmp(right) > 0) return left;
26942 return right;
26943 };
26944
26945 BN.min = function min (left, right) {
26946 if (left.cmp(right) < 0) return left;
26947 return right;
26948 };
26949
26950 BN.prototype._init = function init (number, base, endian) {
26951 if (typeof number === 'number') {
26952 return this._initNumber(number, base, endian);
26953 }
26954
26955 if (typeof number === 'object') {
26956 return this._initArray(number, base, endian);
26957 }
26958
26959 if (base === 'hex') {
26960 base = 16;
26961 }
26962 assert(base === (base | 0) && base >= 2 && base <= 36);
26963
26964 number = number.toString().replace(/\s+/g, '');
26965 var start = 0;
26966 if (number[0] === '-') {
26967 start++;
26968 }
26969
26970 if (base === 16) {
26971 this._parseHex(number, start);
26972 } else {
26973 this._parseBase(number, base, start);
26974 }
26975
26976 if (number[0] === '-') {
26977 this.negative = 1;
26978 }
26979
26980 this.strip();
26981
26982 if (endian !== 'le') return;
26983
26984 this._initArray(this.toArray(), base, endian);
26985 };
26986
26987 BN.prototype._initNumber = function _initNumber (number, base, endian) {
26988 if (number < 0) {
26989 this.negative = 1;
26990 number = -number;
26991 }
26992 if (number < 0x4000000) {
26993 this.words = [ number & 0x3ffffff ];
26994 this.length = 1;
26995 } else if (number < 0x10000000000000) {
26996 this.words = [
26997 number & 0x3ffffff,
26998 (number / 0x4000000) & 0x3ffffff
26999 ];
27000 this.length = 2;
27001 } else {
27002 assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
27003 this.words = [
27004 number & 0x3ffffff,
27005 (number / 0x4000000) & 0x3ffffff,
27006 1
27007 ];
27008 this.length = 3;
27009 }
27010
27011 if (endian !== 'le') return;
27012
27013 // Reverse the bytes
27014 this._initArray(this.toArray(), base, endian);
27015 };
27016
27017 BN.prototype._initArray = function _initArray (number, base, endian) {
27018 // Perhaps a Uint8Array
27019 assert(typeof number.length === 'number');
27020 if (number.length <= 0) {
27021 this.words = [ 0 ];
27022 this.length = 1;
27023 return this;
27024 }
27025
27026 this.length = Math.ceil(number.length / 3);
27027 this.words = new Array(this.length);
27028 for (var i = 0; i < this.length; i++) {
27029 this.words[i] = 0;
27030 }
27031
27032 var j, w;
27033 var off = 0;
27034 if (endian === 'be') {
27035 for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
27036 w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
27037 this.words[j] |= (w << off) & 0x3ffffff;
27038 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
27039 off += 24;
27040 if (off >= 26) {
27041 off -= 26;
27042 j++;
27043 }
27044 }
27045 } else if (endian === 'le') {
27046 for (i = 0, j = 0; i < number.length; i += 3) {
27047 w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
27048 this.words[j] |= (w << off) & 0x3ffffff;
27049 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
27050 off += 24;
27051 if (off >= 26) {
27052 off -= 26;
27053 j++;
27054 }
27055 }
27056 }
27057 return this.strip();
27058 };
27059
27060 function parseHex (str, start, end) {
27061 var r = 0;
27062 var len = Math.min(str.length, end);
27063 for (var i = start; i < len; i++) {
27064 var c = str.charCodeAt(i) - 48;
27065
27066 r <<= 4;
27067
27068 // 'a' - 'f'
27069 if (c >= 49 && c <= 54) {
27070 r |= c - 49 + 0xa;
27071
27072 // 'A' - 'F'
27073 } else if (c >= 17 && c <= 22) {
27074 r |= c - 17 + 0xa;
27075
27076 // '0' - '9'
27077 } else {
27078 r |= c & 0xf;
27079 }
27080 }
27081 return r;
27082 }
27083
27084 BN.prototype._parseHex = function _parseHex (number, start) {
27085 // Create possibly bigger array to ensure that it fits the number
27086 this.length = Math.ceil((number.length - start) / 6);
27087 this.words = new Array(this.length);
27088 for (var i = 0; i < this.length; i++) {
27089 this.words[i] = 0;
27090 }
27091
27092 var j, w;
27093 // Scan 24-bit chunks and add them to the number
27094 var off = 0;
27095 for (i = number.length - 6, j = 0; i >= start; i -= 6) {
27096 w = parseHex(number, i, i + 6);
27097 this.words[j] |= (w << off) & 0x3ffffff;
27098 // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
27099 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
27100 off += 24;
27101 if (off >= 26) {
27102 off -= 26;
27103 j++;
27104 }
27105 }
27106 if (i + 6 !== start) {
27107 w = parseHex(number, start, i + 6);
27108 this.words[j] |= (w << off) & 0x3ffffff;
27109 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
27110 }
27111 this.strip();
27112 };
27113
27114 function parseBase (str, start, end, mul) {
27115 var r = 0;
27116 var len = Math.min(str.length, end);
27117 for (var i = start; i < len; i++) {
27118 var c = str.charCodeAt(i) - 48;
27119
27120 r *= mul;
27121
27122 // 'a'
27123 if (c >= 49) {
27124 r += c - 49 + 0xa;
27125
27126 // 'A'
27127 } else if (c >= 17) {
27128 r += c - 17 + 0xa;
27129
27130 // '0' - '9'
27131 } else {
27132 r += c;
27133 }
27134 }
27135 return r;
27136 }
27137
27138 BN.prototype._parseBase = function _parseBase (number, base, start) {
27139 // Initialize as zero
27140 this.words = [ 0 ];
27141 this.length = 1;
27142
27143 // Find length of limb in base
27144 for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
27145 limbLen++;
27146 }
27147 limbLen--;
27148 limbPow = (limbPow / base) | 0;
27149
27150 var total = number.length - start;
27151 var mod = total % limbLen;
27152 var end = Math.min(total, total - mod) + start;
27153
27154 var word = 0;
27155 for (var i = start; i < end; i += limbLen) {
27156 word = parseBase(number, i, i + limbLen, base);
27157
27158 this.imuln(limbPow);
27159 if (this.words[0] + word < 0x4000000) {
27160 this.words[0] += word;
27161 } else {
27162 this._iaddn(word);
27163 }
27164 }
27165
27166 if (mod !== 0) {
27167 var pow = 1;
27168 word = parseBase(number, i, number.length, base);
27169
27170 for (i = 0; i < mod; i++) {
27171 pow *= base;
27172 }
27173
27174 this.imuln(pow);
27175 if (this.words[0] + word < 0x4000000) {
27176 this.words[0] += word;
27177 } else {
27178 this._iaddn(word);
27179 }
27180 }
27181 };
27182
27183 BN.prototype.copy = function copy (dest) {
27184 dest.words = new Array(this.length);
27185 for (var i = 0; i < this.length; i++) {
27186 dest.words[i] = this.words[i];
27187 }
27188 dest.length = this.length;
27189 dest.negative = this.negative;
27190 dest.red = this.red;
27191 };
27192
27193 BN.prototype.clone = function clone () {
27194 var r = new BN(null);
27195 this.copy(r);
27196 return r;
27197 };
27198
27199 BN.prototype._expand = function _expand (size) {
27200 while (this.length < size) {
27201 this.words[this.length++] = 0;
27202 }
27203 return this;
27204 };
27205
27206 // Remove leading `0` from `this`
27207 BN.prototype.strip = function strip () {
27208 while (this.length > 1 && this.words[this.length - 1] === 0) {
27209 this.length--;
27210 }
27211 return this._normSign();
27212 };
27213
27214 BN.prototype._normSign = function _normSign () {
27215 // -0 = 0
27216 if (this.length === 1 && this.words[0] === 0) {
27217 this.negative = 0;
27218 }
27219 return this;
27220 };
27221
27222 BN.prototype.inspect = function inspect () {
27223 return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
27224 };
27225
27226 /*
27227
27228 var zeros = [];
27229 var groupSizes = [];
27230 var groupBases = [];
27231
27232 var s = '';
27233 var i = -1;
27234 while (++i < BN.wordSize) {
27235 zeros[i] = s;
27236 s += '0';
27237 }
27238 groupSizes[0] = 0;
27239 groupSizes[1] = 0;
27240 groupBases[0] = 0;
27241 groupBases[1] = 0;
27242 var base = 2 - 1;
27243 while (++base < 36 + 1) {
27244 var groupSize = 0;
27245 var groupBase = 1;
27246 while (groupBase < (1 << BN.wordSize) / base) {
27247 groupBase *= base;
27248 groupSize += 1;
27249 }
27250 groupSizes[base] = groupSize;
27251 groupBases[base] = groupBase;
27252 }
27253
27254 */
27255
27256 var zeros = [
27257 '',
27258 '0',
27259 '00',
27260 '000',
27261 '0000',
27262 '00000',
27263 '000000',
27264 '0000000',
27265 '00000000',
27266 '000000000',
27267 '0000000000',
27268 '00000000000',
27269 '000000000000',
27270 '0000000000000',
27271 '00000000000000',
27272 '000000000000000',
27273 '0000000000000000',
27274 '00000000000000000',
27275 '000000000000000000',
27276 '0000000000000000000',
27277 '00000000000000000000',
27278 '000000000000000000000',
27279 '0000000000000000000000',
27280 '00000000000000000000000',
27281 '000000000000000000000000',
27282 '0000000000000000000000000'
27283 ];
27284
27285 var groupSizes = [
27286 0, 0,
27287 25, 16, 12, 11, 10, 9, 8,
27288 8, 7, 7, 7, 7, 6, 6,
27289 6, 6, 6, 6, 6, 5, 5,
27290 5, 5, 5, 5, 5, 5, 5,
27291 5, 5, 5, 5, 5, 5, 5
27292 ];
27293
27294 var groupBases = [
27295 0, 0,
27296 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
27297 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
27298 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
27299 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
27300 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
27301 ];
27302
27303 BN.prototype.toString = function toString (base, padding) {
27304 base = base || 10;
27305 padding = padding | 0 || 1;
27306
27307 var out;
27308 if (base === 16 || base === 'hex') {
27309 out = '';
27310 var off = 0;
27311 var carry = 0;
27312 for (var i = 0; i < this.length; i++) {
27313 var w = this.words[i];
27314 var word = (((w << off) | carry) & 0xffffff).toString(16);
27315 carry = (w >>> (24 - off)) & 0xffffff;
27316 if (carry !== 0 || i !== this.length - 1) {
27317 out = zeros[6 - word.length] + word + out;
27318 } else {
27319 out = word + out;
27320 }
27321 off += 2;
27322 if (off >= 26) {
27323 off -= 26;
27324 i--;
27325 }
27326 }
27327 if (carry !== 0) {
27328 out = carry.toString(16) + out;
27329 }
27330 while (out.length % padding !== 0) {
27331 out = '0' + out;
27332 }
27333 if (this.negative !== 0) {
27334 out = '-' + out;
27335 }
27336 return out;
27337 }
27338
27339 if (base === (base | 0) && base >= 2 && base <= 36) {
27340 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
27341 var groupSize = groupSizes[base];
27342 // var groupBase = Math.pow(base, groupSize);
27343 var groupBase = groupBases[base];
27344 out = '';
27345 var c = this.clone();
27346 c.negative = 0;
27347 while (!c.isZero()) {
27348 var r = c.modn(groupBase).toString(base);
27349 c = c.idivn(groupBase);
27350
27351 if (!c.isZero()) {
27352 out = zeros[groupSize - r.length] + r + out;
27353 } else {
27354 out = r + out;
27355 }
27356 }
27357 if (this.isZero()) {
27358 out = '0' + out;
27359 }
27360 while (out.length % padding !== 0) {
27361 out = '0' + out;
27362 }
27363 if (this.negative !== 0) {
27364 out = '-' + out;
27365 }
27366 return out;
27367 }
27368
27369 assert(false, 'Base should be between 2 and 36');
27370 };
27371
27372 BN.prototype.toNumber = function toNumber () {
27373 var ret = this.words[0];
27374 if (this.length === 2) {
27375 ret += this.words[1] * 0x4000000;
27376 } else if (this.length === 3 && this.words[2] === 0x01) {
27377 // NOTE: at this stage it is known that the top bit is set
27378 ret += 0x10000000000000 + (this.words[1] * 0x4000000);
27379 } else if (this.length > 2) {
27380 assert(false, 'Number can only safely store up to 53 bits');
27381 }
27382 return (this.negative !== 0) ? -ret : ret;
27383 };
27384
27385 BN.prototype.toJSON = function toJSON () {
27386 return this.toString(16);
27387 };
27388
27389 BN.prototype.toBuffer = function toBuffer (endian, length) {
27390 assert(typeof Buffer !== 'undefined');
27391 return this.toArrayLike(Buffer, endian, length);
27392 };
27393
27394 BN.prototype.toArray = function toArray (endian, length) {
27395 return this.toArrayLike(Array, endian, length);
27396 };
27397
27398 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
27399 var byteLength = this.byteLength();
27400 var reqLength = length || Math.max(1, byteLength);
27401 assert(byteLength <= reqLength, 'byte array longer than desired length');
27402 assert(reqLength > 0, 'Requested array length <= 0');
27403
27404 this.strip();
27405 var littleEndian = endian === 'le';
27406 var res = new ArrayType(reqLength);
27407
27408 var b, i;
27409 var q = this.clone();
27410 if (!littleEndian) {
27411 // Assume big-endian
27412 for (i = 0; i < reqLength - byteLength; i++) {
27413 res[i] = 0;
27414 }
27415
27416 for (i = 0; !q.isZero(); i++) {
27417 b = q.andln(0xff);
27418 q.iushrn(8);
27419
27420 res[reqLength - i - 1] = b;
27421 }
27422 } else {
27423 for (i = 0; !q.isZero(); i++) {
27424 b = q.andln(0xff);
27425 q.iushrn(8);
27426
27427 res[i] = b;
27428 }
27429
27430 for (; i < reqLength; i++) {
27431 res[i] = 0;
27432 }
27433 }
27434
27435 return res;
27436 };
27437
27438 if (Math.clz32) {
27439 BN.prototype._countBits = function _countBits (w) {
27440 return 32 - Math.clz32(w);
27441 };
27442 } else {
27443 BN.prototype._countBits = function _countBits (w) {
27444 var t = w;
27445 var r = 0;
27446 if (t >= 0x1000) {
27447 r += 13;
27448 t >>>= 13;
27449 }
27450 if (t >= 0x40) {
27451 r += 7;
27452 t >>>= 7;
27453 }
27454 if (t >= 0x8) {
27455 r += 4;
27456 t >>>= 4;
27457 }
27458 if (t >= 0x02) {
27459 r += 2;
27460 t >>>= 2;
27461 }
27462 return r + t;
27463 };
27464 }
27465
27466 BN.prototype._zeroBits = function _zeroBits (w) {
27467 // Short-cut
27468 if (w === 0) return 26;
27469
27470 var t = w;
27471 var r = 0;
27472 if ((t & 0x1fff) === 0) {
27473 r += 13;
27474 t >>>= 13;
27475 }
27476 if ((t & 0x7f) === 0) {
27477 r += 7;
27478 t >>>= 7;
27479 }
27480 if ((t & 0xf) === 0) {
27481 r += 4;
27482 t >>>= 4;
27483 }
27484 if ((t & 0x3) === 0) {
27485 r += 2;
27486 t >>>= 2;
27487 }
27488 if ((t & 0x1) === 0) {
27489 r++;
27490 }
27491 return r;
27492 };
27493
27494 // Return number of used bits in a BN
27495 BN.prototype.bitLength = function bitLength () {
27496 var w = this.words[this.length - 1];
27497 var hi = this._countBits(w);
27498 return (this.length - 1) * 26 + hi;
27499 };
27500
27501 function toBitArray (num) {
27502 var w = new Array(num.bitLength());
27503
27504 for (var bit = 0; bit < w.length; bit++) {
27505 var off = (bit / 26) | 0;
27506 var wbit = bit % 26;
27507
27508 w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
27509 }
27510
27511 return w;
27512 }
27513
27514 // Number of trailing zero bits
27515 BN.prototype.zeroBits = function zeroBits () {
27516 if (this.isZero()) return 0;
27517
27518 var r = 0;
27519 for (var i = 0; i < this.length; i++) {
27520 var b = this._zeroBits(this.words[i]);
27521 r += b;
27522 if (b !== 26) break;
27523 }
27524 return r;
27525 };
27526
27527 BN.prototype.byteLength = function byteLength () {
27528 return Math.ceil(this.bitLength() / 8);
27529 };
27530
27531 BN.prototype.toTwos = function toTwos (width) {
27532 if (this.negative !== 0) {
27533 return this.abs().inotn(width).iaddn(1);
27534 }
27535 return this.clone();
27536 };
27537
27538 BN.prototype.fromTwos = function fromTwos (width) {
27539 if (this.testn(width - 1)) {
27540 return this.notn(width).iaddn(1).ineg();
27541 }
27542 return this.clone();
27543 };
27544
27545 BN.prototype.isNeg = function isNeg () {
27546 return this.negative !== 0;
27547 };
27548
27549 // Return negative clone of `this`
27550 BN.prototype.neg = function neg () {
27551 return this.clone().ineg();
27552 };
27553
27554 BN.prototype.ineg = function ineg () {
27555 if (!this.isZero()) {
27556 this.negative ^= 1;
27557 }
27558
27559 return this;
27560 };
27561
27562 // Or `num` with `this` in-place
27563 BN.prototype.iuor = function iuor (num) {
27564 while (this.length < num.length) {
27565 this.words[this.length++] = 0;
27566 }
27567
27568 for (var i = 0; i < num.length; i++) {
27569 this.words[i] = this.words[i] | num.words[i];
27570 }
27571
27572 return this.strip();
27573 };
27574
27575 BN.prototype.ior = function ior (num) {
27576 assert((this.negative | num.negative) === 0);
27577 return this.iuor(num);
27578 };
27579
27580 // Or `num` with `this`
27581 BN.prototype.or = function or (num) {
27582 if (this.length > num.length) return this.clone().ior(num);
27583 return num.clone().ior(this);
27584 };
27585
27586 BN.prototype.uor = function uor (num) {
27587 if (this.length > num.length) return this.clone().iuor(num);
27588 return num.clone().iuor(this);
27589 };
27590
27591 // And `num` with `this` in-place
27592 BN.prototype.iuand = function iuand (num) {
27593 // b = min-length(num, this)
27594 var b;
27595 if (this.length > num.length) {
27596 b = num;
27597 } else {
27598 b = this;
27599 }
27600
27601 for (var i = 0; i < b.length; i++) {
27602 this.words[i] = this.words[i] & num.words[i];
27603 }
27604
27605 this.length = b.length;
27606
27607 return this.strip();
27608 };
27609
27610 BN.prototype.iand = function iand (num) {
27611 assert((this.negative | num.negative) === 0);
27612 return this.iuand(num);
27613 };
27614
27615 // And `num` with `this`
27616 BN.prototype.and = function and (num) {
27617 if (this.length > num.length) return this.clone().iand(num);
27618 return num.clone().iand(this);
27619 };
27620
27621 BN.prototype.uand = function uand (num) {
27622 if (this.length > num.length) return this.clone().iuand(num);
27623 return num.clone().iuand(this);
27624 };
27625
27626 // Xor `num` with `this` in-place
27627 BN.prototype.iuxor = function iuxor (num) {
27628 // a.length > b.length
27629 var a;
27630 var b;
27631 if (this.length > num.length) {
27632 a = this;
27633 b = num;
27634 } else {
27635 a = num;
27636 b = this;
27637 }
27638
27639 for (var i = 0; i < b.length; i++) {
27640 this.words[i] = a.words[i] ^ b.words[i];
27641 }
27642
27643 if (this !== a) {
27644 for (; i < a.length; i++) {
27645 this.words[i] = a.words[i];
27646 }
27647 }
27648
27649 this.length = a.length;
27650
27651 return this.strip();
27652 };
27653
27654 BN.prototype.ixor = function ixor (num) {
27655 assert((this.negative | num.negative) === 0);
27656 return this.iuxor(num);
27657 };
27658
27659 // Xor `num` with `this`
27660 BN.prototype.xor = function xor (num) {
27661 if (this.length > num.length) return this.clone().ixor(num);
27662 return num.clone().ixor(this);
27663 };
27664
27665 BN.prototype.uxor = function uxor (num) {
27666 if (this.length > num.length) return this.clone().iuxor(num);
27667 return num.clone().iuxor(this);
27668 };
27669
27670 // Not ``this`` with ``width`` bitwidth
27671 BN.prototype.inotn = function inotn (width) {
27672 assert(typeof width === 'number' && width >= 0);
27673
27674 var bytesNeeded = Math.ceil(width / 26) | 0;
27675 var bitsLeft = width % 26;
27676
27677 // Extend the buffer with leading zeroes
27678 this._expand(bytesNeeded);
27679
27680 if (bitsLeft > 0) {
27681 bytesNeeded--;
27682 }
27683
27684 // Handle complete words
27685 for (var i = 0; i < bytesNeeded; i++) {
27686 this.words[i] = ~this.words[i] & 0x3ffffff;
27687 }
27688
27689 // Handle the residue
27690 if (bitsLeft > 0) {
27691 this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
27692 }
27693
27694 // And remove leading zeroes
27695 return this.strip();
27696 };
27697
27698 BN.prototype.notn = function notn (width) {
27699 return this.clone().inotn(width);
27700 };
27701
27702 // Set `bit` of `this`
27703 BN.prototype.setn = function setn (bit, val) {
27704 assert(typeof bit === 'number' && bit >= 0);
27705
27706 var off = (bit / 26) | 0;
27707 var wbit = bit % 26;
27708
27709 this._expand(off + 1);
27710
27711 if (val) {
27712 this.words[off] = this.words[off] | (1 << wbit);
27713 } else {
27714 this.words[off] = this.words[off] & ~(1 << wbit);
27715 }
27716
27717 return this.strip();
27718 };
27719
27720 // Add `num` to `this` in-place
27721 BN.prototype.iadd = function iadd (num) {
27722 var r;
27723
27724 // negative + positive
27725 if (this.negative !== 0 && num.negative === 0) {
27726 this.negative = 0;
27727 r = this.isub(num);
27728 this.negative ^= 1;
27729 return this._normSign();
27730
27731 // positive + negative
27732 } else if (this.negative === 0 && num.negative !== 0) {
27733 num.negative = 0;
27734 r = this.isub(num);
27735 num.negative = 1;
27736 return r._normSign();
27737 }
27738
27739 // a.length > b.length
27740 var a, b;
27741 if (this.length > num.length) {
27742 a = this;
27743 b = num;
27744 } else {
27745 a = num;
27746 b = this;
27747 }
27748
27749 var carry = 0;
27750 for (var i = 0; i < b.length; i++) {
27751 r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
27752 this.words[i] = r & 0x3ffffff;
27753 carry = r >>> 26;
27754 }
27755 for (; carry !== 0 && i < a.length; i++) {
27756 r = (a.words[i] | 0) + carry;
27757 this.words[i] = r & 0x3ffffff;
27758 carry = r >>> 26;
27759 }
27760
27761 this.length = a.length;
27762 if (carry !== 0) {
27763 this.words[this.length] = carry;
27764 this.length++;
27765 // Copy the rest of the words
27766 } else if (a !== this) {
27767 for (; i < a.length; i++) {
27768 this.words[i] = a.words[i];
27769 }
27770 }
27771
27772 return this;
27773 };
27774
27775 // Add `num` to `this`
27776 BN.prototype.add = function add (num) {
27777 var res;
27778 if (num.negative !== 0 && this.negative === 0) {
27779 num.negative = 0;
27780 res = this.sub(num);
27781 num.negative ^= 1;
27782 return res;
27783 } else if (num.negative === 0 && this.negative !== 0) {
27784 this.negative = 0;
27785 res = num.sub(this);
27786 this.negative = 1;
27787 return res;
27788 }
27789
27790 if (this.length > num.length) return this.clone().iadd(num);
27791
27792 return num.clone().iadd(this);
27793 };
27794
27795 // Subtract `num` from `this` in-place
27796 BN.prototype.isub = function isub (num) {
27797 // this - (-num) = this + num
27798 if (num.negative !== 0) {
27799 num.negative = 0;
27800 var r = this.iadd(num);
27801 num.negative = 1;
27802 return r._normSign();
27803
27804 // -this - num = -(this + num)
27805 } else if (this.negative !== 0) {
27806 this.negative = 0;
27807 this.iadd(num);
27808 this.negative = 1;
27809 return this._normSign();
27810 }
27811
27812 // At this point both numbers are positive
27813 var cmp = this.cmp(num);
27814
27815 // Optimization - zeroify
27816 if (cmp === 0) {
27817 this.negative = 0;
27818 this.length = 1;
27819 this.words[0] = 0;
27820 return this;
27821 }
27822
27823 // a > b
27824 var a, b;
27825 if (cmp > 0) {
27826 a = this;
27827 b = num;
27828 } else {
27829 a = num;
27830 b = this;
27831 }
27832
27833 var carry = 0;
27834 for (var i = 0; i < b.length; i++) {
27835 r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
27836 carry = r >> 26;
27837 this.words[i] = r & 0x3ffffff;
27838 }
27839 for (; carry !== 0 && i < a.length; i++) {
27840 r = (a.words[i] | 0) + carry;
27841 carry = r >> 26;
27842 this.words[i] = r & 0x3ffffff;
27843 }
27844
27845 // Copy rest of the words
27846 if (carry === 0 && i < a.length && a !== this) {
27847 for (; i < a.length; i++) {
27848 this.words[i] = a.words[i];
27849 }
27850 }
27851
27852 this.length = Math.max(this.length, i);
27853
27854 if (a !== this) {
27855 this.negative = 1;
27856 }
27857
27858 return this.strip();
27859 };
27860
27861 // Subtract `num` from `this`
27862 BN.prototype.sub = function sub (num) {
27863 return this.clone().isub(num);
27864 };
27865
27866 function smallMulTo (self, num, out) {
27867 out.negative = num.negative ^ self.negative;
27868 var len = (self.length + num.length) | 0;
27869 out.length = len;
27870 len = (len - 1) | 0;
27871
27872 // Peel one iteration (compiler can't do it, because of code complexity)
27873 var a = self.words[0] | 0;
27874 var b = num.words[0] | 0;
27875 var r = a * b;
27876
27877 var lo = r & 0x3ffffff;
27878 var carry = (r / 0x4000000) | 0;
27879 out.words[0] = lo;
27880
27881 for (var k = 1; k < len; k++) {
27882 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
27883 // note that ncarry could be >= 0x3ffffff
27884 var ncarry = carry >>> 26;
27885 var rword = carry & 0x3ffffff;
27886 var maxJ = Math.min(k, num.length - 1);
27887 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
27888 var i = (k - j) | 0;
27889 a = self.words[i] | 0;
27890 b = num.words[j] | 0;
27891 r = a * b + rword;
27892 ncarry += (r / 0x4000000) | 0;
27893 rword = r & 0x3ffffff;
27894 }
27895 out.words[k] = rword | 0;
27896 carry = ncarry | 0;
27897 }
27898 if (carry !== 0) {
27899 out.words[k] = carry | 0;
27900 } else {
27901 out.length--;
27902 }
27903
27904 return out.strip();
27905 }
27906
27907 // TODO(indutny): it may be reasonable to omit it for users who don't need
27908 // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
27909 // multiplication (like elliptic secp256k1).
27910 var comb10MulTo = function comb10MulTo (self, num, out) {
27911 var a = self.words;
27912 var b = num.words;
27913 var o = out.words;
27914 var c = 0;
27915 var lo;
27916 var mid;
27917 var hi;
27918 var a0 = a[0] | 0;
27919 var al0 = a0 & 0x1fff;
27920 var ah0 = a0 >>> 13;
27921 var a1 = a[1] | 0;
27922 var al1 = a1 & 0x1fff;
27923 var ah1 = a1 >>> 13;
27924 var a2 = a[2] | 0;
27925 var al2 = a2 & 0x1fff;
27926 var ah2 = a2 >>> 13;
27927 var a3 = a[3] | 0;
27928 var al3 = a3 & 0x1fff;
27929 var ah3 = a3 >>> 13;
27930 var a4 = a[4] | 0;
27931 var al4 = a4 & 0x1fff;
27932 var ah4 = a4 >>> 13;
27933 var a5 = a[5] | 0;
27934 var al5 = a5 & 0x1fff;
27935 var ah5 = a5 >>> 13;
27936 var a6 = a[6] | 0;
27937 var al6 = a6 & 0x1fff;
27938 var ah6 = a6 >>> 13;
27939 var a7 = a[7] | 0;
27940 var al7 = a7 & 0x1fff;
27941 var ah7 = a7 >>> 13;
27942 var a8 = a[8] | 0;
27943 var al8 = a8 & 0x1fff;
27944 var ah8 = a8 >>> 13;
27945 var a9 = a[9] | 0;
27946 var al9 = a9 & 0x1fff;
27947 var ah9 = a9 >>> 13;
27948 var b0 = b[0] | 0;
27949 var bl0 = b0 & 0x1fff;
27950 var bh0 = b0 >>> 13;
27951 var b1 = b[1] | 0;
27952 var bl1 = b1 & 0x1fff;
27953 var bh1 = b1 >>> 13;
27954 var b2 = b[2] | 0;
27955 var bl2 = b2 & 0x1fff;
27956 var bh2 = b2 >>> 13;
27957 var b3 = b[3] | 0;
27958 var bl3 = b3 & 0x1fff;
27959 var bh3 = b3 >>> 13;
27960 var b4 = b[4] | 0;
27961 var bl4 = b4 & 0x1fff;
27962 var bh4 = b4 >>> 13;
27963 var b5 = b[5] | 0;
27964 var bl5 = b5 & 0x1fff;
27965 var bh5 = b5 >>> 13;
27966 var b6 = b[6] | 0;
27967 var bl6 = b6 & 0x1fff;
27968 var bh6 = b6 >>> 13;
27969 var b7 = b[7] | 0;
27970 var bl7 = b7 & 0x1fff;
27971 var bh7 = b7 >>> 13;
27972 var b8 = b[8] | 0;
27973 var bl8 = b8 & 0x1fff;
27974 var bh8 = b8 >>> 13;
27975 var b9 = b[9] | 0;
27976 var bl9 = b9 & 0x1fff;
27977 var bh9 = b9 >>> 13;
27978
27979 out.negative = self.negative ^ num.negative;
27980 out.length = 19;
27981 /* k = 0 */
27982 lo = Math.imul(al0, bl0);
27983 mid = Math.imul(al0, bh0);
27984 mid = (mid + Math.imul(ah0, bl0)) | 0;
27985 hi = Math.imul(ah0, bh0);
27986 var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
27987 c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
27988 w0 &= 0x3ffffff;
27989 /* k = 1 */
27990 lo = Math.imul(al1, bl0);
27991 mid = Math.imul(al1, bh0);
27992 mid = (mid + Math.imul(ah1, bl0)) | 0;
27993 hi = Math.imul(ah1, bh0);
27994 lo = (lo + Math.imul(al0, bl1)) | 0;
27995 mid = (mid + Math.imul(al0, bh1)) | 0;
27996 mid = (mid + Math.imul(ah0, bl1)) | 0;
27997 hi = (hi + Math.imul(ah0, bh1)) | 0;
27998 var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
27999 c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
28000 w1 &= 0x3ffffff;
28001 /* k = 2 */
28002 lo = Math.imul(al2, bl0);
28003 mid = Math.imul(al2, bh0);
28004 mid = (mid + Math.imul(ah2, bl0)) | 0;
28005 hi = Math.imul(ah2, bh0);
28006 lo = (lo + Math.imul(al1, bl1)) | 0;
28007 mid = (mid + Math.imul(al1, bh1)) | 0;
28008 mid = (mid + Math.imul(ah1, bl1)) | 0;
28009 hi = (hi + Math.imul(ah1, bh1)) | 0;
28010 lo = (lo + Math.imul(al0, bl2)) | 0;
28011 mid = (mid + Math.imul(al0, bh2)) | 0;
28012 mid = (mid + Math.imul(ah0, bl2)) | 0;
28013 hi = (hi + Math.imul(ah0, bh2)) | 0;
28014 var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28015 c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
28016 w2 &= 0x3ffffff;
28017 /* k = 3 */
28018 lo = Math.imul(al3, bl0);
28019 mid = Math.imul(al3, bh0);
28020 mid = (mid + Math.imul(ah3, bl0)) | 0;
28021 hi = Math.imul(ah3, bh0);
28022 lo = (lo + Math.imul(al2, bl1)) | 0;
28023 mid = (mid + Math.imul(al2, bh1)) | 0;
28024 mid = (mid + Math.imul(ah2, bl1)) | 0;
28025 hi = (hi + Math.imul(ah2, bh1)) | 0;
28026 lo = (lo + Math.imul(al1, bl2)) | 0;
28027 mid = (mid + Math.imul(al1, bh2)) | 0;
28028 mid = (mid + Math.imul(ah1, bl2)) | 0;
28029 hi = (hi + Math.imul(ah1, bh2)) | 0;
28030 lo = (lo + Math.imul(al0, bl3)) | 0;
28031 mid = (mid + Math.imul(al0, bh3)) | 0;
28032 mid = (mid + Math.imul(ah0, bl3)) | 0;
28033 hi = (hi + Math.imul(ah0, bh3)) | 0;
28034 var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28035 c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
28036 w3 &= 0x3ffffff;
28037 /* k = 4 */
28038 lo = Math.imul(al4, bl0);
28039 mid = Math.imul(al4, bh0);
28040 mid = (mid + Math.imul(ah4, bl0)) | 0;
28041 hi = Math.imul(ah4, bh0);
28042 lo = (lo + Math.imul(al3, bl1)) | 0;
28043 mid = (mid + Math.imul(al3, bh1)) | 0;
28044 mid = (mid + Math.imul(ah3, bl1)) | 0;
28045 hi = (hi + Math.imul(ah3, bh1)) | 0;
28046 lo = (lo + Math.imul(al2, bl2)) | 0;
28047 mid = (mid + Math.imul(al2, bh2)) | 0;
28048 mid = (mid + Math.imul(ah2, bl2)) | 0;
28049 hi = (hi + Math.imul(ah2, bh2)) | 0;
28050 lo = (lo + Math.imul(al1, bl3)) | 0;
28051 mid = (mid + Math.imul(al1, bh3)) | 0;
28052 mid = (mid + Math.imul(ah1, bl3)) | 0;
28053 hi = (hi + Math.imul(ah1, bh3)) | 0;
28054 lo = (lo + Math.imul(al0, bl4)) | 0;
28055 mid = (mid + Math.imul(al0, bh4)) | 0;
28056 mid = (mid + Math.imul(ah0, bl4)) | 0;
28057 hi = (hi + Math.imul(ah0, bh4)) | 0;
28058 var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28059 c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
28060 w4 &= 0x3ffffff;
28061 /* k = 5 */
28062 lo = Math.imul(al5, bl0);
28063 mid = Math.imul(al5, bh0);
28064 mid = (mid + Math.imul(ah5, bl0)) | 0;
28065 hi = Math.imul(ah5, bh0);
28066 lo = (lo + Math.imul(al4, bl1)) | 0;
28067 mid = (mid + Math.imul(al4, bh1)) | 0;
28068 mid = (mid + Math.imul(ah4, bl1)) | 0;
28069 hi = (hi + Math.imul(ah4, bh1)) | 0;
28070 lo = (lo + Math.imul(al3, bl2)) | 0;
28071 mid = (mid + Math.imul(al3, bh2)) | 0;
28072 mid = (mid + Math.imul(ah3, bl2)) | 0;
28073 hi = (hi + Math.imul(ah3, bh2)) | 0;
28074 lo = (lo + Math.imul(al2, bl3)) | 0;
28075 mid = (mid + Math.imul(al2, bh3)) | 0;
28076 mid = (mid + Math.imul(ah2, bl3)) | 0;
28077 hi = (hi + Math.imul(ah2, bh3)) | 0;
28078 lo = (lo + Math.imul(al1, bl4)) | 0;
28079 mid = (mid + Math.imul(al1, bh4)) | 0;
28080 mid = (mid + Math.imul(ah1, bl4)) | 0;
28081 hi = (hi + Math.imul(ah1, bh4)) | 0;
28082 lo = (lo + Math.imul(al0, bl5)) | 0;
28083 mid = (mid + Math.imul(al0, bh5)) | 0;
28084 mid = (mid + Math.imul(ah0, bl5)) | 0;
28085 hi = (hi + Math.imul(ah0, bh5)) | 0;
28086 var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28087 c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
28088 w5 &= 0x3ffffff;
28089 /* k = 6 */
28090 lo = Math.imul(al6, bl0);
28091 mid = Math.imul(al6, bh0);
28092 mid = (mid + Math.imul(ah6, bl0)) | 0;
28093 hi = Math.imul(ah6, bh0);
28094 lo = (lo + Math.imul(al5, bl1)) | 0;
28095 mid = (mid + Math.imul(al5, bh1)) | 0;
28096 mid = (mid + Math.imul(ah5, bl1)) | 0;
28097 hi = (hi + Math.imul(ah5, bh1)) | 0;
28098 lo = (lo + Math.imul(al4, bl2)) | 0;
28099 mid = (mid + Math.imul(al4, bh2)) | 0;
28100 mid = (mid + Math.imul(ah4, bl2)) | 0;
28101 hi = (hi + Math.imul(ah4, bh2)) | 0;
28102 lo = (lo + Math.imul(al3, bl3)) | 0;
28103 mid = (mid + Math.imul(al3, bh3)) | 0;
28104 mid = (mid + Math.imul(ah3, bl3)) | 0;
28105 hi = (hi + Math.imul(ah3, bh3)) | 0;
28106 lo = (lo + Math.imul(al2, bl4)) | 0;
28107 mid = (mid + Math.imul(al2, bh4)) | 0;
28108 mid = (mid + Math.imul(ah2, bl4)) | 0;
28109 hi = (hi + Math.imul(ah2, bh4)) | 0;
28110 lo = (lo + Math.imul(al1, bl5)) | 0;
28111 mid = (mid + Math.imul(al1, bh5)) | 0;
28112 mid = (mid + Math.imul(ah1, bl5)) | 0;
28113 hi = (hi + Math.imul(ah1, bh5)) | 0;
28114 lo = (lo + Math.imul(al0, bl6)) | 0;
28115 mid = (mid + Math.imul(al0, bh6)) | 0;
28116 mid = (mid + Math.imul(ah0, bl6)) | 0;
28117 hi = (hi + Math.imul(ah0, bh6)) | 0;
28118 var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28119 c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
28120 w6 &= 0x3ffffff;
28121 /* k = 7 */
28122 lo = Math.imul(al7, bl0);
28123 mid = Math.imul(al7, bh0);
28124 mid = (mid + Math.imul(ah7, bl0)) | 0;
28125 hi = Math.imul(ah7, bh0);
28126 lo = (lo + Math.imul(al6, bl1)) | 0;
28127 mid = (mid + Math.imul(al6, bh1)) | 0;
28128 mid = (mid + Math.imul(ah6, bl1)) | 0;
28129 hi = (hi + Math.imul(ah6, bh1)) | 0;
28130 lo = (lo + Math.imul(al5, bl2)) | 0;
28131 mid = (mid + Math.imul(al5, bh2)) | 0;
28132 mid = (mid + Math.imul(ah5, bl2)) | 0;
28133 hi = (hi + Math.imul(ah5, bh2)) | 0;
28134 lo = (lo + Math.imul(al4, bl3)) | 0;
28135 mid = (mid + Math.imul(al4, bh3)) | 0;
28136 mid = (mid + Math.imul(ah4, bl3)) | 0;
28137 hi = (hi + Math.imul(ah4, bh3)) | 0;
28138 lo = (lo + Math.imul(al3, bl4)) | 0;
28139 mid = (mid + Math.imul(al3, bh4)) | 0;
28140 mid = (mid + Math.imul(ah3, bl4)) | 0;
28141 hi = (hi + Math.imul(ah3, bh4)) | 0;
28142 lo = (lo + Math.imul(al2, bl5)) | 0;
28143 mid = (mid + Math.imul(al2, bh5)) | 0;
28144 mid = (mid + Math.imul(ah2, bl5)) | 0;
28145 hi = (hi + Math.imul(ah2, bh5)) | 0;
28146 lo = (lo + Math.imul(al1, bl6)) | 0;
28147 mid = (mid + Math.imul(al1, bh6)) | 0;
28148 mid = (mid + Math.imul(ah1, bl6)) | 0;
28149 hi = (hi + Math.imul(ah1, bh6)) | 0;
28150 lo = (lo + Math.imul(al0, bl7)) | 0;
28151 mid = (mid + Math.imul(al0, bh7)) | 0;
28152 mid = (mid + Math.imul(ah0, bl7)) | 0;
28153 hi = (hi + Math.imul(ah0, bh7)) | 0;
28154 var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28155 c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
28156 w7 &= 0x3ffffff;
28157 /* k = 8 */
28158 lo = Math.imul(al8, bl0);
28159 mid = Math.imul(al8, bh0);
28160 mid = (mid + Math.imul(ah8, bl0)) | 0;
28161 hi = Math.imul(ah8, bh0);
28162 lo = (lo + Math.imul(al7, bl1)) | 0;
28163 mid = (mid + Math.imul(al7, bh1)) | 0;
28164 mid = (mid + Math.imul(ah7, bl1)) | 0;
28165 hi = (hi + Math.imul(ah7, bh1)) | 0;
28166 lo = (lo + Math.imul(al6, bl2)) | 0;
28167 mid = (mid + Math.imul(al6, bh2)) | 0;
28168 mid = (mid + Math.imul(ah6, bl2)) | 0;
28169 hi = (hi + Math.imul(ah6, bh2)) | 0;
28170 lo = (lo + Math.imul(al5, bl3)) | 0;
28171 mid = (mid + Math.imul(al5, bh3)) | 0;
28172 mid = (mid + Math.imul(ah5, bl3)) | 0;
28173 hi = (hi + Math.imul(ah5, bh3)) | 0;
28174 lo = (lo + Math.imul(al4, bl4)) | 0;
28175 mid = (mid + Math.imul(al4, bh4)) | 0;
28176 mid = (mid + Math.imul(ah4, bl4)) | 0;
28177 hi = (hi + Math.imul(ah4, bh4)) | 0;
28178 lo = (lo + Math.imul(al3, bl5)) | 0;
28179 mid = (mid + Math.imul(al3, bh5)) | 0;
28180 mid = (mid + Math.imul(ah3, bl5)) | 0;
28181 hi = (hi + Math.imul(ah3, bh5)) | 0;
28182 lo = (lo + Math.imul(al2, bl6)) | 0;
28183 mid = (mid + Math.imul(al2, bh6)) | 0;
28184 mid = (mid + Math.imul(ah2, bl6)) | 0;
28185 hi = (hi + Math.imul(ah2, bh6)) | 0;
28186 lo = (lo + Math.imul(al1, bl7)) | 0;
28187 mid = (mid + Math.imul(al1, bh7)) | 0;
28188 mid = (mid + Math.imul(ah1, bl7)) | 0;
28189 hi = (hi + Math.imul(ah1, bh7)) | 0;
28190 lo = (lo + Math.imul(al0, bl8)) | 0;
28191 mid = (mid + Math.imul(al0, bh8)) | 0;
28192 mid = (mid + Math.imul(ah0, bl8)) | 0;
28193 hi = (hi + Math.imul(ah0, bh8)) | 0;
28194 var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28195 c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
28196 w8 &= 0x3ffffff;
28197 /* k = 9 */
28198 lo = Math.imul(al9, bl0);
28199 mid = Math.imul(al9, bh0);
28200 mid = (mid + Math.imul(ah9, bl0)) | 0;
28201 hi = Math.imul(ah9, bh0);
28202 lo = (lo + Math.imul(al8, bl1)) | 0;
28203 mid = (mid + Math.imul(al8, bh1)) | 0;
28204 mid = (mid + Math.imul(ah8, bl1)) | 0;
28205 hi = (hi + Math.imul(ah8, bh1)) | 0;
28206 lo = (lo + Math.imul(al7, bl2)) | 0;
28207 mid = (mid + Math.imul(al7, bh2)) | 0;
28208 mid = (mid + Math.imul(ah7, bl2)) | 0;
28209 hi = (hi + Math.imul(ah7, bh2)) | 0;
28210 lo = (lo + Math.imul(al6, bl3)) | 0;
28211 mid = (mid + Math.imul(al6, bh3)) | 0;
28212 mid = (mid + Math.imul(ah6, bl3)) | 0;
28213 hi = (hi + Math.imul(ah6, bh3)) | 0;
28214 lo = (lo + Math.imul(al5, bl4)) | 0;
28215 mid = (mid + Math.imul(al5, bh4)) | 0;
28216 mid = (mid + Math.imul(ah5, bl4)) | 0;
28217 hi = (hi + Math.imul(ah5, bh4)) | 0;
28218 lo = (lo + Math.imul(al4, bl5)) | 0;
28219 mid = (mid + Math.imul(al4, bh5)) | 0;
28220 mid = (mid + Math.imul(ah4, bl5)) | 0;
28221 hi = (hi + Math.imul(ah4, bh5)) | 0;
28222 lo = (lo + Math.imul(al3, bl6)) | 0;
28223 mid = (mid + Math.imul(al3, bh6)) | 0;
28224 mid = (mid + Math.imul(ah3, bl6)) | 0;
28225 hi = (hi + Math.imul(ah3, bh6)) | 0;
28226 lo = (lo + Math.imul(al2, bl7)) | 0;
28227 mid = (mid + Math.imul(al2, bh7)) | 0;
28228 mid = (mid + Math.imul(ah2, bl7)) | 0;
28229 hi = (hi + Math.imul(ah2, bh7)) | 0;
28230 lo = (lo + Math.imul(al1, bl8)) | 0;
28231 mid = (mid + Math.imul(al1, bh8)) | 0;
28232 mid = (mid + Math.imul(ah1, bl8)) | 0;
28233 hi = (hi + Math.imul(ah1, bh8)) | 0;
28234 lo = (lo + Math.imul(al0, bl9)) | 0;
28235 mid = (mid + Math.imul(al0, bh9)) | 0;
28236 mid = (mid + Math.imul(ah0, bl9)) | 0;
28237 hi = (hi + Math.imul(ah0, bh9)) | 0;
28238 var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28239 c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
28240 w9 &= 0x3ffffff;
28241 /* k = 10 */
28242 lo = Math.imul(al9, bl1);
28243 mid = Math.imul(al9, bh1);
28244 mid = (mid + Math.imul(ah9, bl1)) | 0;
28245 hi = Math.imul(ah9, bh1);
28246 lo = (lo + Math.imul(al8, bl2)) | 0;
28247 mid = (mid + Math.imul(al8, bh2)) | 0;
28248 mid = (mid + Math.imul(ah8, bl2)) | 0;
28249 hi = (hi + Math.imul(ah8, bh2)) | 0;
28250 lo = (lo + Math.imul(al7, bl3)) | 0;
28251 mid = (mid + Math.imul(al7, bh3)) | 0;
28252 mid = (mid + Math.imul(ah7, bl3)) | 0;
28253 hi = (hi + Math.imul(ah7, bh3)) | 0;
28254 lo = (lo + Math.imul(al6, bl4)) | 0;
28255 mid = (mid + Math.imul(al6, bh4)) | 0;
28256 mid = (mid + Math.imul(ah6, bl4)) | 0;
28257 hi = (hi + Math.imul(ah6, bh4)) | 0;
28258 lo = (lo + Math.imul(al5, bl5)) | 0;
28259 mid = (mid + Math.imul(al5, bh5)) | 0;
28260 mid = (mid + Math.imul(ah5, bl5)) | 0;
28261 hi = (hi + Math.imul(ah5, bh5)) | 0;
28262 lo = (lo + Math.imul(al4, bl6)) | 0;
28263 mid = (mid + Math.imul(al4, bh6)) | 0;
28264 mid = (mid + Math.imul(ah4, bl6)) | 0;
28265 hi = (hi + Math.imul(ah4, bh6)) | 0;
28266 lo = (lo + Math.imul(al3, bl7)) | 0;
28267 mid = (mid + Math.imul(al3, bh7)) | 0;
28268 mid = (mid + Math.imul(ah3, bl7)) | 0;
28269 hi = (hi + Math.imul(ah3, bh7)) | 0;
28270 lo = (lo + Math.imul(al2, bl8)) | 0;
28271 mid = (mid + Math.imul(al2, bh8)) | 0;
28272 mid = (mid + Math.imul(ah2, bl8)) | 0;
28273 hi = (hi + Math.imul(ah2, bh8)) | 0;
28274 lo = (lo + Math.imul(al1, bl9)) | 0;
28275 mid = (mid + Math.imul(al1, bh9)) | 0;
28276 mid = (mid + Math.imul(ah1, bl9)) | 0;
28277 hi = (hi + Math.imul(ah1, bh9)) | 0;
28278 var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28279 c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
28280 w10 &= 0x3ffffff;
28281 /* k = 11 */
28282 lo = Math.imul(al9, bl2);
28283 mid = Math.imul(al9, bh2);
28284 mid = (mid + Math.imul(ah9, bl2)) | 0;
28285 hi = Math.imul(ah9, bh2);
28286 lo = (lo + Math.imul(al8, bl3)) | 0;
28287 mid = (mid + Math.imul(al8, bh3)) | 0;
28288 mid = (mid + Math.imul(ah8, bl3)) | 0;
28289 hi = (hi + Math.imul(ah8, bh3)) | 0;
28290 lo = (lo + Math.imul(al7, bl4)) | 0;
28291 mid = (mid + Math.imul(al7, bh4)) | 0;
28292 mid = (mid + Math.imul(ah7, bl4)) | 0;
28293 hi = (hi + Math.imul(ah7, bh4)) | 0;
28294 lo = (lo + Math.imul(al6, bl5)) | 0;
28295 mid = (mid + Math.imul(al6, bh5)) | 0;
28296 mid = (mid + Math.imul(ah6, bl5)) | 0;
28297 hi = (hi + Math.imul(ah6, bh5)) | 0;
28298 lo = (lo + Math.imul(al5, bl6)) | 0;
28299 mid = (mid + Math.imul(al5, bh6)) | 0;
28300 mid = (mid + Math.imul(ah5, bl6)) | 0;
28301 hi = (hi + Math.imul(ah5, bh6)) | 0;
28302 lo = (lo + Math.imul(al4, bl7)) | 0;
28303 mid = (mid + Math.imul(al4, bh7)) | 0;
28304 mid = (mid + Math.imul(ah4, bl7)) | 0;
28305 hi = (hi + Math.imul(ah4, bh7)) | 0;
28306 lo = (lo + Math.imul(al3, bl8)) | 0;
28307 mid = (mid + Math.imul(al3, bh8)) | 0;
28308 mid = (mid + Math.imul(ah3, bl8)) | 0;
28309 hi = (hi + Math.imul(ah3, bh8)) | 0;
28310 lo = (lo + Math.imul(al2, bl9)) | 0;
28311 mid = (mid + Math.imul(al2, bh9)) | 0;
28312 mid = (mid + Math.imul(ah2, bl9)) | 0;
28313 hi = (hi + Math.imul(ah2, bh9)) | 0;
28314 var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28315 c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
28316 w11 &= 0x3ffffff;
28317 /* k = 12 */
28318 lo = Math.imul(al9, bl3);
28319 mid = Math.imul(al9, bh3);
28320 mid = (mid + Math.imul(ah9, bl3)) | 0;
28321 hi = Math.imul(ah9, bh3);
28322 lo = (lo + Math.imul(al8, bl4)) | 0;
28323 mid = (mid + Math.imul(al8, bh4)) | 0;
28324 mid = (mid + Math.imul(ah8, bl4)) | 0;
28325 hi = (hi + Math.imul(ah8, bh4)) | 0;
28326 lo = (lo + Math.imul(al7, bl5)) | 0;
28327 mid = (mid + Math.imul(al7, bh5)) | 0;
28328 mid = (mid + Math.imul(ah7, bl5)) | 0;
28329 hi = (hi + Math.imul(ah7, bh5)) | 0;
28330 lo = (lo + Math.imul(al6, bl6)) | 0;
28331 mid = (mid + Math.imul(al6, bh6)) | 0;
28332 mid = (mid + Math.imul(ah6, bl6)) | 0;
28333 hi = (hi + Math.imul(ah6, bh6)) | 0;
28334 lo = (lo + Math.imul(al5, bl7)) | 0;
28335 mid = (mid + Math.imul(al5, bh7)) | 0;
28336 mid = (mid + Math.imul(ah5, bl7)) | 0;
28337 hi = (hi + Math.imul(ah5, bh7)) | 0;
28338 lo = (lo + Math.imul(al4, bl8)) | 0;
28339 mid = (mid + Math.imul(al4, bh8)) | 0;
28340 mid = (mid + Math.imul(ah4, bl8)) | 0;
28341 hi = (hi + Math.imul(ah4, bh8)) | 0;
28342 lo = (lo + Math.imul(al3, bl9)) | 0;
28343 mid = (mid + Math.imul(al3, bh9)) | 0;
28344 mid = (mid + Math.imul(ah3, bl9)) | 0;
28345 hi = (hi + Math.imul(ah3, bh9)) | 0;
28346 var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28347 c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
28348 w12 &= 0x3ffffff;
28349 /* k = 13 */
28350 lo = Math.imul(al9, bl4);
28351 mid = Math.imul(al9, bh4);
28352 mid = (mid + Math.imul(ah9, bl4)) | 0;
28353 hi = Math.imul(ah9, bh4);
28354 lo = (lo + Math.imul(al8, bl5)) | 0;
28355 mid = (mid + Math.imul(al8, bh5)) | 0;
28356 mid = (mid + Math.imul(ah8, bl5)) | 0;
28357 hi = (hi + Math.imul(ah8, bh5)) | 0;
28358 lo = (lo + Math.imul(al7, bl6)) | 0;
28359 mid = (mid + Math.imul(al7, bh6)) | 0;
28360 mid = (mid + Math.imul(ah7, bl6)) | 0;
28361 hi = (hi + Math.imul(ah7, bh6)) | 0;
28362 lo = (lo + Math.imul(al6, bl7)) | 0;
28363 mid = (mid + Math.imul(al6, bh7)) | 0;
28364 mid = (mid + Math.imul(ah6, bl7)) | 0;
28365 hi = (hi + Math.imul(ah6, bh7)) | 0;
28366 lo = (lo + Math.imul(al5, bl8)) | 0;
28367 mid = (mid + Math.imul(al5, bh8)) | 0;
28368 mid = (mid + Math.imul(ah5, bl8)) | 0;
28369 hi = (hi + Math.imul(ah5, bh8)) | 0;
28370 lo = (lo + Math.imul(al4, bl9)) | 0;
28371 mid = (mid + Math.imul(al4, bh9)) | 0;
28372 mid = (mid + Math.imul(ah4, bl9)) | 0;
28373 hi = (hi + Math.imul(ah4, bh9)) | 0;
28374 var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28375 c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
28376 w13 &= 0x3ffffff;
28377 /* k = 14 */
28378 lo = Math.imul(al9, bl5);
28379 mid = Math.imul(al9, bh5);
28380 mid = (mid + Math.imul(ah9, bl5)) | 0;
28381 hi = Math.imul(ah9, bh5);
28382 lo = (lo + Math.imul(al8, bl6)) | 0;
28383 mid = (mid + Math.imul(al8, bh6)) | 0;
28384 mid = (mid + Math.imul(ah8, bl6)) | 0;
28385 hi = (hi + Math.imul(ah8, bh6)) | 0;
28386 lo = (lo + Math.imul(al7, bl7)) | 0;
28387 mid = (mid + Math.imul(al7, bh7)) | 0;
28388 mid = (mid + Math.imul(ah7, bl7)) | 0;
28389 hi = (hi + Math.imul(ah7, bh7)) | 0;
28390 lo = (lo + Math.imul(al6, bl8)) | 0;
28391 mid = (mid + Math.imul(al6, bh8)) | 0;
28392 mid = (mid + Math.imul(ah6, bl8)) | 0;
28393 hi = (hi + Math.imul(ah6, bh8)) | 0;
28394 lo = (lo + Math.imul(al5, bl9)) | 0;
28395 mid = (mid + Math.imul(al5, bh9)) | 0;
28396 mid = (mid + Math.imul(ah5, bl9)) | 0;
28397 hi = (hi + Math.imul(ah5, bh9)) | 0;
28398 var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28399 c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
28400 w14 &= 0x3ffffff;
28401 /* k = 15 */
28402 lo = Math.imul(al9, bl6);
28403 mid = Math.imul(al9, bh6);
28404 mid = (mid + Math.imul(ah9, bl6)) | 0;
28405 hi = Math.imul(ah9, bh6);
28406 lo = (lo + Math.imul(al8, bl7)) | 0;
28407 mid = (mid + Math.imul(al8, bh7)) | 0;
28408 mid = (mid + Math.imul(ah8, bl7)) | 0;
28409 hi = (hi + Math.imul(ah8, bh7)) | 0;
28410 lo = (lo + Math.imul(al7, bl8)) | 0;
28411 mid = (mid + Math.imul(al7, bh8)) | 0;
28412 mid = (mid + Math.imul(ah7, bl8)) | 0;
28413 hi = (hi + Math.imul(ah7, bh8)) | 0;
28414 lo = (lo + Math.imul(al6, bl9)) | 0;
28415 mid = (mid + Math.imul(al6, bh9)) | 0;
28416 mid = (mid + Math.imul(ah6, bl9)) | 0;
28417 hi = (hi + Math.imul(ah6, bh9)) | 0;
28418 var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28419 c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
28420 w15 &= 0x3ffffff;
28421 /* k = 16 */
28422 lo = Math.imul(al9, bl7);
28423 mid = Math.imul(al9, bh7);
28424 mid = (mid + Math.imul(ah9, bl7)) | 0;
28425 hi = Math.imul(ah9, bh7);
28426 lo = (lo + Math.imul(al8, bl8)) | 0;
28427 mid = (mid + Math.imul(al8, bh8)) | 0;
28428 mid = (mid + Math.imul(ah8, bl8)) | 0;
28429 hi = (hi + Math.imul(ah8, bh8)) | 0;
28430 lo = (lo + Math.imul(al7, bl9)) | 0;
28431 mid = (mid + Math.imul(al7, bh9)) | 0;
28432 mid = (mid + Math.imul(ah7, bl9)) | 0;
28433 hi = (hi + Math.imul(ah7, bh9)) | 0;
28434 var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28435 c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
28436 w16 &= 0x3ffffff;
28437 /* k = 17 */
28438 lo = Math.imul(al9, bl8);
28439 mid = Math.imul(al9, bh8);
28440 mid = (mid + Math.imul(ah9, bl8)) | 0;
28441 hi = Math.imul(ah9, bh8);
28442 lo = (lo + Math.imul(al8, bl9)) | 0;
28443 mid = (mid + Math.imul(al8, bh9)) | 0;
28444 mid = (mid + Math.imul(ah8, bl9)) | 0;
28445 hi = (hi + Math.imul(ah8, bh9)) | 0;
28446 var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28447 c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
28448 w17 &= 0x3ffffff;
28449 /* k = 18 */
28450 lo = Math.imul(al9, bl9);
28451 mid = Math.imul(al9, bh9);
28452 mid = (mid + Math.imul(ah9, bl9)) | 0;
28453 hi = Math.imul(ah9, bh9);
28454 var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28455 c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
28456 w18 &= 0x3ffffff;
28457 o[0] = w0;
28458 o[1] = w1;
28459 o[2] = w2;
28460 o[3] = w3;
28461 o[4] = w4;
28462 o[5] = w5;
28463 o[6] = w6;
28464 o[7] = w7;
28465 o[8] = w8;
28466 o[9] = w9;
28467 o[10] = w10;
28468 o[11] = w11;
28469 o[12] = w12;
28470 o[13] = w13;
28471 o[14] = w14;
28472 o[15] = w15;
28473 o[16] = w16;
28474 o[17] = w17;
28475 o[18] = w18;
28476 if (c !== 0) {
28477 o[19] = c;
28478 out.length++;
28479 }
28480 return out;
28481 };
28482
28483 // Polyfill comb
28484 if (!Math.imul) {
28485 comb10MulTo = smallMulTo;
28486 }
28487
28488 function bigMulTo (self, num, out) {
28489 out.negative = num.negative ^ self.negative;
28490 out.length = self.length + num.length;
28491
28492 var carry = 0;
28493 var hncarry = 0;
28494 for (var k = 0; k < out.length - 1; k++) {
28495 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
28496 // note that ncarry could be >= 0x3ffffff
28497 var ncarry = hncarry;
28498 hncarry = 0;
28499 var rword = carry & 0x3ffffff;
28500 var maxJ = Math.min(k, num.length - 1);
28501 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
28502 var i = k - j;
28503 var a = self.words[i] | 0;
28504 var b = num.words[j] | 0;
28505 var r = a * b;
28506
28507 var lo = r & 0x3ffffff;
28508 ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
28509 lo = (lo + rword) | 0;
28510 rword = lo & 0x3ffffff;
28511 ncarry = (ncarry + (lo >>> 26)) | 0;
28512
28513 hncarry += ncarry >>> 26;
28514 ncarry &= 0x3ffffff;
28515 }
28516 out.words[k] = rword;
28517 carry = ncarry;
28518 ncarry = hncarry;
28519 }
28520 if (carry !== 0) {
28521 out.words[k] = carry;
28522 } else {
28523 out.length--;
28524 }
28525
28526 return out.strip();
28527 }
28528
28529 function jumboMulTo (self, num, out) {
28530 var fftm = new FFTM();
28531 return fftm.mulp(self, num, out);
28532 }
28533
28534 BN.prototype.mulTo = function mulTo (num, out) {
28535 var res;
28536 var len = this.length + num.length;
28537 if (this.length === 10 && num.length === 10) {
28538 res = comb10MulTo(this, num, out);
28539 } else if (len < 63) {
28540 res = smallMulTo(this, num, out);
28541 } else if (len < 1024) {
28542 res = bigMulTo(this, num, out);
28543 } else {
28544 res = jumboMulTo(this, num, out);
28545 }
28546
28547 return res;
28548 };
28549
28550 // Cooley-Tukey algorithm for FFT
28551 // slightly revisited to rely on looping instead of recursion
28552
28553 function FFTM (x, y) {
28554 this.x = x;
28555 this.y = y;
28556 }
28557
28558 FFTM.prototype.makeRBT = function makeRBT (N) {
28559 var t = new Array(N);
28560 var l = BN.prototype._countBits(N) - 1;
28561 for (var i = 0; i < N; i++) {
28562 t[i] = this.revBin(i, l, N);
28563 }
28564
28565 return t;
28566 };
28567
28568 // Returns binary-reversed representation of `x`
28569 FFTM.prototype.revBin = function revBin (x, l, N) {
28570 if (x === 0 || x === N - 1) return x;
28571
28572 var rb = 0;
28573 for (var i = 0; i < l; i++) {
28574 rb |= (x & 1) << (l - i - 1);
28575 x >>= 1;
28576 }
28577
28578 return rb;
28579 };
28580
28581 // Performs "tweedling" phase, therefore 'emulating'
28582 // behaviour of the recursive algorithm
28583 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
28584 for (var i = 0; i < N; i++) {
28585 rtws[i] = rws[rbt[i]];
28586 itws[i] = iws[rbt[i]];
28587 }
28588 };
28589
28590 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
28591 this.permute(rbt, rws, iws, rtws, itws, N);
28592
28593 for (var s = 1; s < N; s <<= 1) {
28594 var l = s << 1;
28595
28596 var rtwdf = Math.cos(2 * Math.PI / l);
28597 var itwdf = Math.sin(2 * Math.PI / l);
28598
28599 for (var p = 0; p < N; p += l) {
28600 var rtwdf_ = rtwdf;
28601 var itwdf_ = itwdf;
28602
28603 for (var j = 0; j < s; j++) {
28604 var re = rtws[p + j];
28605 var ie = itws[p + j];
28606
28607 var ro = rtws[p + j + s];
28608 var io = itws[p + j + s];
28609
28610 var rx = rtwdf_ * ro - itwdf_ * io;
28611
28612 io = rtwdf_ * io + itwdf_ * ro;
28613 ro = rx;
28614
28615 rtws[p + j] = re + ro;
28616 itws[p + j] = ie + io;
28617
28618 rtws[p + j + s] = re - ro;
28619 itws[p + j + s] = ie - io;
28620
28621 /* jshint maxdepth : false */
28622 if (j !== l) {
28623 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
28624
28625 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
28626 rtwdf_ = rx;
28627 }
28628 }
28629 }
28630 }
28631 };
28632
28633 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
28634 var N = Math.max(m, n) | 1;
28635 var odd = N & 1;
28636 var i = 0;
28637 for (N = N / 2 | 0; N; N = N >>> 1) {
28638 i++;
28639 }
28640
28641 return 1 << i + 1 + odd;
28642 };
28643
28644 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
28645 if (N <= 1) return;
28646
28647 for (var i = 0; i < N / 2; i++) {
28648 var t = rws[i];
28649
28650 rws[i] = rws[N - i - 1];
28651 rws[N - i - 1] = t;
28652
28653 t = iws[i];
28654
28655 iws[i] = -iws[N - i - 1];
28656 iws[N - i - 1] = -t;
28657 }
28658 };
28659
28660 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
28661 var carry = 0;
28662 for (var i = 0; i < N / 2; i++) {
28663 var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
28664 Math.round(ws[2 * i] / N) +
28665 carry;
28666
28667 ws[i] = w & 0x3ffffff;
28668
28669 if (w < 0x4000000) {
28670 carry = 0;
28671 } else {
28672 carry = w / 0x4000000 | 0;
28673 }
28674 }
28675
28676 return ws;
28677 };
28678
28679 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
28680 var carry = 0;
28681 for (var i = 0; i < len; i++) {
28682 carry = carry + (ws[i] | 0);
28683
28684 rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
28685 rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
28686 }
28687
28688 // Pad with zeroes
28689 for (i = 2 * len; i < N; ++i) {
28690 rws[i] = 0;
28691 }
28692
28693 assert(carry === 0);
28694 assert((carry & ~0x1fff) === 0);
28695 };
28696
28697 FFTM.prototype.stub = function stub (N) {
28698 var ph = new Array(N);
28699 for (var i = 0; i < N; i++) {
28700 ph[i] = 0;
28701 }
28702
28703 return ph;
28704 };
28705
28706 FFTM.prototype.mulp = function mulp (x, y, out) {
28707 var N = 2 * this.guessLen13b(x.length, y.length);
28708
28709 var rbt = this.makeRBT(N);
28710
28711 var _ = this.stub(N);
28712
28713 var rws = new Array(N);
28714 var rwst = new Array(N);
28715 var iwst = new Array(N);
28716
28717 var nrws = new Array(N);
28718 var nrwst = new Array(N);
28719 var niwst = new Array(N);
28720
28721 var rmws = out.words;
28722 rmws.length = N;
28723
28724 this.convert13b(x.words, x.length, rws, N);
28725 this.convert13b(y.words, y.length, nrws, N);
28726
28727 this.transform(rws, _, rwst, iwst, N, rbt);
28728 this.transform(nrws, _, nrwst, niwst, N, rbt);
28729
28730 for (var i = 0; i < N; i++) {
28731 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
28732 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
28733 rwst[i] = rx;
28734 }
28735
28736 this.conjugate(rwst, iwst, N);
28737 this.transform(rwst, iwst, rmws, _, N, rbt);
28738 this.conjugate(rmws, _, N);
28739 this.normalize13b(rmws, N);
28740
28741 out.negative = x.negative ^ y.negative;
28742 out.length = x.length + y.length;
28743 return out.strip();
28744 };
28745
28746 // Multiply `this` by `num`
28747 BN.prototype.mul = function mul (num) {
28748 var out = new BN(null);
28749 out.words = new Array(this.length + num.length);
28750 return this.mulTo(num, out);
28751 };
28752
28753 // Multiply employing FFT
28754 BN.prototype.mulf = function mulf (num) {
28755 var out = new BN(null);
28756 out.words = new Array(this.length + num.length);
28757 return jumboMulTo(this, num, out);
28758 };
28759
28760 // In-place Multiplication
28761 BN.prototype.imul = function imul (num) {
28762 return this.clone().mulTo(num, this);
28763 };
28764
28765 BN.prototype.imuln = function imuln (num) {
28766 assert(typeof num === 'number');
28767 assert(num < 0x4000000);
28768
28769 // Carry
28770 var carry = 0;
28771 for (var i = 0; i < this.length; i++) {
28772 var w = (this.words[i] | 0) * num;
28773 var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
28774 carry >>= 26;
28775 carry += (w / 0x4000000) | 0;
28776 // NOTE: lo is 27bit maximum
28777 carry += lo >>> 26;
28778 this.words[i] = lo & 0x3ffffff;
28779 }
28780
28781 if (carry !== 0) {
28782 this.words[i] = carry;
28783 this.length++;
28784 }
28785
28786 return this;
28787 };
28788
28789 BN.prototype.muln = function muln (num) {
28790 return this.clone().imuln(num);
28791 };
28792
28793 // `this` * `this`
28794 BN.prototype.sqr = function sqr () {
28795 return this.mul(this);
28796 };
28797
28798 // `this` * `this` in-place
28799 BN.prototype.isqr = function isqr () {
28800 return this.imul(this.clone());
28801 };
28802
28803 // Math.pow(`this`, `num`)
28804 BN.prototype.pow = function pow (num) {
28805 var w = toBitArray(num);
28806 if (w.length === 0) return new BN(1);
28807
28808 // Skip leading zeroes
28809 var res = this;
28810 for (var i = 0; i < w.length; i++, res = res.sqr()) {
28811 if (w[i] !== 0) break;
28812 }
28813
28814 if (++i < w.length) {
28815 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
28816 if (w[i] === 0) continue;
28817
28818 res = res.mul(q);
28819 }
28820 }
28821
28822 return res;
28823 };
28824
28825 // Shift-left in-place
28826 BN.prototype.iushln = function iushln (bits) {
28827 assert(typeof bits === 'number' && bits >= 0);
28828 var r = bits % 26;
28829 var s = (bits - r) / 26;
28830 var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
28831 var i;
28832
28833 if (r !== 0) {
28834 var carry = 0;
28835
28836 for (i = 0; i < this.length; i++) {
28837 var newCarry = this.words[i] & carryMask;
28838 var c = ((this.words[i] | 0) - newCarry) << r;
28839 this.words[i] = c | carry;
28840 carry = newCarry >>> (26 - r);
28841 }
28842
28843 if (carry) {
28844 this.words[i] = carry;
28845 this.length++;
28846 }
28847 }
28848
28849 if (s !== 0) {
28850 for (i = this.length - 1; i >= 0; i--) {
28851 this.words[i + s] = this.words[i];
28852 }
28853
28854 for (i = 0; i < s; i++) {
28855 this.words[i] = 0;
28856 }
28857
28858 this.length += s;
28859 }
28860
28861 return this.strip();
28862 };
28863
28864 BN.prototype.ishln = function ishln (bits) {
28865 // TODO(indutny): implement me
28866 assert(this.negative === 0);
28867 return this.iushln(bits);
28868 };
28869
28870 // Shift-right in-place
28871 // NOTE: `hint` is a lowest bit before trailing zeroes
28872 // NOTE: if `extended` is present - it will be filled with destroyed bits
28873 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
28874 assert(typeof bits === 'number' && bits >= 0);
28875 var h;
28876 if (hint) {
28877 h = (hint - (hint % 26)) / 26;
28878 } else {
28879 h = 0;
28880 }
28881
28882 var r = bits % 26;
28883 var s = Math.min((bits - r) / 26, this.length);
28884 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
28885 var maskedWords = extended;
28886
28887 h -= s;
28888 h = Math.max(0, h);
28889
28890 // Extended mode, copy masked part
28891 if (maskedWords) {
28892 for (var i = 0; i < s; i++) {
28893 maskedWords.words[i] = this.words[i];
28894 }
28895 maskedWords.length = s;
28896 }
28897
28898 if (s === 0) {
28899 // No-op, we should not move anything at all
28900 } else if (this.length > s) {
28901 this.length -= s;
28902 for (i = 0; i < this.length; i++) {
28903 this.words[i] = this.words[i + s];
28904 }
28905 } else {
28906 this.words[0] = 0;
28907 this.length = 1;
28908 }
28909
28910 var carry = 0;
28911 for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
28912 var word = this.words[i] | 0;
28913 this.words[i] = (carry << (26 - r)) | (word >>> r);
28914 carry = word & mask;
28915 }
28916
28917 // Push carried bits as a mask
28918 if (maskedWords && carry !== 0) {
28919 maskedWords.words[maskedWords.length++] = carry;
28920 }
28921
28922 if (this.length === 0) {
28923 this.words[0] = 0;
28924 this.length = 1;
28925 }
28926
28927 return this.strip();
28928 };
28929
28930 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
28931 // TODO(indutny): implement me
28932 assert(this.negative === 0);
28933 return this.iushrn(bits, hint, extended);
28934 };
28935
28936 // Shift-left
28937 BN.prototype.shln = function shln (bits) {
28938 return this.clone().ishln(bits);
28939 };
28940
28941 BN.prototype.ushln = function ushln (bits) {
28942 return this.clone().iushln(bits);
28943 };
28944
28945 // Shift-right
28946 BN.prototype.shrn = function shrn (bits) {
28947 return this.clone().ishrn(bits);
28948 };
28949
28950 BN.prototype.ushrn = function ushrn (bits) {
28951 return this.clone().iushrn(bits);
28952 };
28953
28954 // Test if n bit is set
28955 BN.prototype.testn = function testn (bit) {
28956 assert(typeof bit === 'number' && bit >= 0);
28957 var r = bit % 26;
28958 var s = (bit - r) / 26;
28959 var q = 1 << r;
28960
28961 // Fast case: bit is much higher than all existing words
28962 if (this.length <= s) return false;
28963
28964 // Check bit and return
28965 var w = this.words[s];
28966
28967 return !!(w & q);
28968 };
28969
28970 // Return only lowers bits of number (in-place)
28971 BN.prototype.imaskn = function imaskn (bits) {
28972 assert(typeof bits === 'number' && bits >= 0);
28973 var r = bits % 26;
28974 var s = (bits - r) / 26;
28975
28976 assert(this.negative === 0, 'imaskn works only with positive numbers');
28977
28978 if (this.length <= s) {
28979 return this;
28980 }
28981
28982 if (r !== 0) {
28983 s++;
28984 }
28985 this.length = Math.min(s, this.length);
28986
28987 if (r !== 0) {
28988 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
28989 this.words[this.length - 1] &= mask;
28990 }
28991
28992 return this.strip();
28993 };
28994
28995 // Return only lowers bits of number
28996 BN.prototype.maskn = function maskn (bits) {
28997 return this.clone().imaskn(bits);
28998 };
28999
29000 // Add plain number `num` to `this`
29001 BN.prototype.iaddn = function iaddn (num) {
29002 assert(typeof num === 'number');
29003 assert(num < 0x4000000);
29004 if (num < 0) return this.isubn(-num);
29005
29006 // Possible sign change
29007 if (this.negative !== 0) {
29008 if (this.length === 1 && (this.words[0] | 0) < num) {
29009 this.words[0] = num - (this.words[0] | 0);
29010 this.negative = 0;
29011 return this;
29012 }
29013
29014 this.negative = 0;
29015 this.isubn(num);
29016 this.negative = 1;
29017 return this;
29018 }
29019
29020 // Add without checks
29021 return this._iaddn(num);
29022 };
29023
29024 BN.prototype._iaddn = function _iaddn (num) {
29025 this.words[0] += num;
29026
29027 // Carry
29028 for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
29029 this.words[i] -= 0x4000000;
29030 if (i === this.length - 1) {
29031 this.words[i + 1] = 1;
29032 } else {
29033 this.words[i + 1]++;
29034 }
29035 }
29036 this.length = Math.max(this.length, i + 1);
29037
29038 return this;
29039 };
29040
29041 // Subtract plain number `num` from `this`
29042 BN.prototype.isubn = function isubn (num) {
29043 assert(typeof num === 'number');
29044 assert(num < 0x4000000);
29045 if (num < 0) return this.iaddn(-num);
29046
29047 if (this.negative !== 0) {
29048 this.negative = 0;
29049 this.iaddn(num);
29050 this.negative = 1;
29051 return this;
29052 }
29053
29054 this.words[0] -= num;
29055
29056 if (this.length === 1 && this.words[0] < 0) {
29057 this.words[0] = -this.words[0];
29058 this.negative = 1;
29059 } else {
29060 // Carry
29061 for (var i = 0; i < this.length && this.words[i] < 0; i++) {
29062 this.words[i] += 0x4000000;
29063 this.words[i + 1] -= 1;
29064 }
29065 }
29066
29067 return this.strip();
29068 };
29069
29070 BN.prototype.addn = function addn (num) {
29071 return this.clone().iaddn(num);
29072 };
29073
29074 BN.prototype.subn = function subn (num) {
29075 return this.clone().isubn(num);
29076 };
29077
29078 BN.prototype.iabs = function iabs () {
29079 this.negative = 0;
29080
29081 return this;
29082 };
29083
29084 BN.prototype.abs = function abs () {
29085 return this.clone().iabs();
29086 };
29087
29088 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
29089 var len = num.length + shift;
29090 var i;
29091
29092 this._expand(len);
29093
29094 var w;
29095 var carry = 0;
29096 for (i = 0; i < num.length; i++) {
29097 w = (this.words[i + shift] | 0) + carry;
29098 var right = (num.words[i] | 0) * mul;
29099 w -= right & 0x3ffffff;
29100 carry = (w >> 26) - ((right / 0x4000000) | 0);
29101 this.words[i + shift] = w & 0x3ffffff;
29102 }
29103 for (; i < this.length - shift; i++) {
29104 w = (this.words[i + shift] | 0) + carry;
29105 carry = w >> 26;
29106 this.words[i + shift] = w & 0x3ffffff;
29107 }
29108
29109 if (carry === 0) return this.strip();
29110
29111 // Subtraction overflow
29112 assert(carry === -1);
29113 carry = 0;
29114 for (i = 0; i < this.length; i++) {
29115 w = -(this.words[i] | 0) + carry;
29116 carry = w >> 26;
29117 this.words[i] = w & 0x3ffffff;
29118 }
29119 this.negative = 1;
29120
29121 return this.strip();
29122 };
29123
29124 BN.prototype._wordDiv = function _wordDiv (num, mode) {
29125 var shift = this.length - num.length;
29126
29127 var a = this.clone();
29128 var b = num;
29129
29130 // Normalize
29131 var bhi = b.words[b.length - 1] | 0;
29132 var bhiBits = this._countBits(bhi);
29133 shift = 26 - bhiBits;
29134 if (shift !== 0) {
29135 b = b.ushln(shift);
29136 a.iushln(shift);
29137 bhi = b.words[b.length - 1] | 0;
29138 }
29139
29140 // Initialize quotient
29141 var m = a.length - b.length;
29142 var q;
29143
29144 if (mode !== 'mod') {
29145 q = new BN(null);
29146 q.length = m + 1;
29147 q.words = new Array(q.length);
29148 for (var i = 0; i < q.length; i++) {
29149 q.words[i] = 0;
29150 }
29151 }
29152
29153 var diff = a.clone()._ishlnsubmul(b, 1, m);
29154 if (diff.negative === 0) {
29155 a = diff;
29156 if (q) {
29157 q.words[m] = 1;
29158 }
29159 }
29160
29161 for (var j = m - 1; j >= 0; j--) {
29162 var qj = (a.words[b.length + j] | 0) * 0x4000000 +
29163 (a.words[b.length + j - 1] | 0);
29164
29165 // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
29166 // (0x7ffffff)
29167 qj = Math.min((qj / bhi) | 0, 0x3ffffff);
29168
29169 a._ishlnsubmul(b, qj, j);
29170 while (a.negative !== 0) {
29171 qj--;
29172 a.negative = 0;
29173 a._ishlnsubmul(b, 1, j);
29174 if (!a.isZero()) {
29175 a.negative ^= 1;
29176 }
29177 }
29178 if (q) {
29179 q.words[j] = qj;
29180 }
29181 }
29182 if (q) {
29183 q.strip();
29184 }
29185 a.strip();
29186
29187 // Denormalize
29188 if (mode !== 'div' && shift !== 0) {
29189 a.iushrn(shift);
29190 }
29191
29192 return {
29193 div: q || null,
29194 mod: a
29195 };
29196 };
29197
29198 // NOTE: 1) `mode` can be set to `mod` to request mod only,
29199 // to `div` to request div only, or be absent to
29200 // request both div & mod
29201 // 2) `positive` is true if unsigned mod is requested
29202 BN.prototype.divmod = function divmod (num, mode, positive) {
29203 assert(!num.isZero());
29204
29205 if (this.isZero()) {
29206 return {
29207 div: new BN(0),
29208 mod: new BN(0)
29209 };
29210 }
29211
29212 var div, mod, res;
29213 if (this.negative !== 0 && num.negative === 0) {
29214 res = this.neg().divmod(num, mode);
29215
29216 if (mode !== 'mod') {
29217 div = res.div.neg();
29218 }
29219
29220 if (mode !== 'div') {
29221 mod = res.mod.neg();
29222 if (positive && mod.negative !== 0) {
29223 mod.iadd(num);
29224 }
29225 }
29226
29227 return {
29228 div: div,
29229 mod: mod
29230 };
29231 }
29232
29233 if (this.negative === 0 && num.negative !== 0) {
29234 res = this.divmod(num.neg(), mode);
29235
29236 if (mode !== 'mod') {
29237 div = res.div.neg();
29238 }
29239
29240 return {
29241 div: div,
29242 mod: res.mod
29243 };
29244 }
29245
29246 if ((this.negative & num.negative) !== 0) {
29247 res = this.neg().divmod(num.neg(), mode);
29248
29249 if (mode !== 'div') {
29250 mod = res.mod.neg();
29251 if (positive && mod.negative !== 0) {
29252 mod.isub(num);
29253 }
29254 }
29255
29256 return {
29257 div: res.div,
29258 mod: mod
29259 };
29260 }
29261
29262 // Both numbers are positive at this point
29263
29264 // Strip both numbers to approximate shift value
29265 if (num.length > this.length || this.cmp(num) < 0) {
29266 return {
29267 div: new BN(0),
29268 mod: this
29269 };
29270 }
29271
29272 // Very short reduction
29273 if (num.length === 1) {
29274 if (mode === 'div') {
29275 return {
29276 div: this.divn(num.words[0]),
29277 mod: null
29278 };
29279 }
29280
29281 if (mode === 'mod') {
29282 return {
29283 div: null,
29284 mod: new BN(this.modn(num.words[0]))
29285 };
29286 }
29287
29288 return {
29289 div: this.divn(num.words[0]),
29290 mod: new BN(this.modn(num.words[0]))
29291 };
29292 }
29293
29294 return this._wordDiv(num, mode);
29295 };
29296
29297 // Find `this` / `num`
29298 BN.prototype.div = function div (num) {
29299 return this.divmod(num, 'div', false).div;
29300 };
29301
29302 // Find `this` % `num`
29303 BN.prototype.mod = function mod (num) {
29304 return this.divmod(num, 'mod', false).mod;
29305 };
29306
29307 BN.prototype.umod = function umod (num) {
29308 return this.divmod(num, 'mod', true).mod;
29309 };
29310
29311 // Find Round(`this` / `num`)
29312 BN.prototype.divRound = function divRound (num) {
29313 var dm = this.divmod(num);
29314
29315 // Fast case - exact division
29316 if (dm.mod.isZero()) return dm.div;
29317
29318 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
29319
29320 var half = num.ushrn(1);
29321 var r2 = num.andln(1);
29322 var cmp = mod.cmp(half);
29323
29324 // Round down
29325 if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
29326
29327 // Round up
29328 return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
29329 };
29330
29331 BN.prototype.modn = function modn (num) {
29332 assert(num <= 0x3ffffff);
29333 var p = (1 << 26) % num;
29334
29335 var acc = 0;
29336 for (var i = this.length - 1; i >= 0; i--) {
29337 acc = (p * acc + (this.words[i] | 0)) % num;
29338 }
29339
29340 return acc;
29341 };
29342
29343 // In-place division by number
29344 BN.prototype.idivn = function idivn (num) {
29345 assert(num <= 0x3ffffff);
29346
29347 var carry = 0;
29348 for (var i = this.length - 1; i >= 0; i--) {
29349 var w = (this.words[i] | 0) + carry * 0x4000000;
29350 this.words[i] = (w / num) | 0;
29351 carry = w % num;
29352 }
29353
29354 return this.strip();
29355 };
29356
29357 BN.prototype.divn = function divn (num) {
29358 return this.clone().idivn(num);
29359 };
29360
29361 BN.prototype.egcd = function egcd (p) {
29362 assert(p.negative === 0);
29363 assert(!p.isZero());
29364
29365 var x = this;
29366 var y = p.clone();
29367
29368 if (x.negative !== 0) {
29369 x = x.umod(p);
29370 } else {
29371 x = x.clone();
29372 }
29373
29374 // A * x + B * y = x
29375 var A = new BN(1);
29376 var B = new BN(0);
29377
29378 // C * x + D * y = y
29379 var C = new BN(0);
29380 var D = new BN(1);
29381
29382 var g = 0;
29383
29384 while (x.isEven() && y.isEven()) {
29385 x.iushrn(1);
29386 y.iushrn(1);
29387 ++g;
29388 }
29389
29390 var yp = y.clone();
29391 var xp = x.clone();
29392
29393 while (!x.isZero()) {
29394 for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
29395 if (i > 0) {
29396 x.iushrn(i);
29397 while (i-- > 0) {
29398 if (A.isOdd() || B.isOdd()) {
29399 A.iadd(yp);
29400 B.isub(xp);
29401 }
29402
29403 A.iushrn(1);
29404 B.iushrn(1);
29405 }
29406 }
29407
29408 for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
29409 if (j > 0) {
29410 y.iushrn(j);
29411 while (j-- > 0) {
29412 if (C.isOdd() || D.isOdd()) {
29413 C.iadd(yp);
29414 D.isub(xp);
29415 }
29416
29417 C.iushrn(1);
29418 D.iushrn(1);
29419 }
29420 }
29421
29422 if (x.cmp(y) >= 0) {
29423 x.isub(y);
29424 A.isub(C);
29425 B.isub(D);
29426 } else {
29427 y.isub(x);
29428 C.isub(A);
29429 D.isub(B);
29430 }
29431 }
29432
29433 return {
29434 a: C,
29435 b: D,
29436 gcd: y.iushln(g)
29437 };
29438 };
29439
29440 // This is reduced incarnation of the binary EEA
29441 // above, designated to invert members of the
29442 // _prime_ fields F(p) at a maximal speed
29443 BN.prototype._invmp = function _invmp (p) {
29444 assert(p.negative === 0);
29445 assert(!p.isZero());
29446
29447 var a = this;
29448 var b = p.clone();
29449
29450 if (a.negative !== 0) {
29451 a = a.umod(p);
29452 } else {
29453 a = a.clone();
29454 }
29455
29456 var x1 = new BN(1);
29457 var x2 = new BN(0);
29458
29459 var delta = b.clone();
29460
29461 while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
29462 for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
29463 if (i > 0) {
29464 a.iushrn(i);
29465 while (i-- > 0) {
29466 if (x1.isOdd()) {
29467 x1.iadd(delta);
29468 }
29469
29470 x1.iushrn(1);
29471 }
29472 }
29473
29474 for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
29475 if (j > 0) {
29476 b.iushrn(j);
29477 while (j-- > 0) {
29478 if (x2.isOdd()) {
29479 x2.iadd(delta);
29480 }
29481
29482 x2.iushrn(1);
29483 }
29484 }
29485
29486 if (a.cmp(b) >= 0) {
29487 a.isub(b);
29488 x1.isub(x2);
29489 } else {
29490 b.isub(a);
29491 x2.isub(x1);
29492 }
29493 }
29494
29495 var res;
29496 if (a.cmpn(1) === 0) {
29497 res = x1;
29498 } else {
29499 res = x2;
29500 }
29501
29502 if (res.cmpn(0) < 0) {
29503 res.iadd(p);
29504 }
29505
29506 return res;
29507 };
29508
29509 BN.prototype.gcd = function gcd (num) {
29510 if (this.isZero()) return num.abs();
29511 if (num.isZero()) return this.abs();
29512
29513 var a = this.clone();
29514 var b = num.clone();
29515 a.negative = 0;
29516 b.negative = 0;
29517
29518 // Remove common factor of two
29519 for (var shift = 0; a.isEven() && b.isEven(); shift++) {
29520 a.iushrn(1);
29521 b.iushrn(1);
29522 }
29523
29524 do {
29525 while (a.isEven()) {
29526 a.iushrn(1);
29527 }
29528 while (b.isEven()) {
29529 b.iushrn(1);
29530 }
29531
29532 var r = a.cmp(b);
29533 if (r < 0) {
29534 // Swap `a` and `b` to make `a` always bigger than `b`
29535 var t = a;
29536 a = b;
29537 b = t;
29538 } else if (r === 0 || b.cmpn(1) === 0) {
29539 break;
29540 }
29541
29542 a.isub(b);
29543 } while (true);
29544
29545 return b.iushln(shift);
29546 };
29547
29548 // Invert number in the field F(num)
29549 BN.prototype.invm = function invm (num) {
29550 return this.egcd(num).a.umod(num);
29551 };
29552
29553 BN.prototype.isEven = function isEven () {
29554 return (this.words[0] & 1) === 0;
29555 };
29556
29557 BN.prototype.isOdd = function isOdd () {
29558 return (this.words[0] & 1) === 1;
29559 };
29560
29561 // And first word and num
29562 BN.prototype.andln = function andln (num) {
29563 return this.words[0] & num;
29564 };
29565
29566 // Increment at the bit position in-line
29567 BN.prototype.bincn = function bincn (bit) {
29568 assert(typeof bit === 'number');
29569 var r = bit % 26;
29570 var s = (bit - r) / 26;
29571 var q = 1 << r;
29572
29573 // Fast case: bit is much higher than all existing words
29574 if (this.length <= s) {
29575 this._expand(s + 1);
29576 this.words[s] |= q;
29577 return this;
29578 }
29579
29580 // Add bit and propagate, if needed
29581 var carry = q;
29582 for (var i = s; carry !== 0 && i < this.length; i++) {
29583 var w = this.words[i] | 0;
29584 w += carry;
29585 carry = w >>> 26;
29586 w &= 0x3ffffff;
29587 this.words[i] = w;
29588 }
29589 if (carry !== 0) {
29590 this.words[i] = carry;
29591 this.length++;
29592 }
29593 return this;
29594 };
29595
29596 BN.prototype.isZero = function isZero () {
29597 return this.length === 1 && this.words[0] === 0;
29598 };
29599
29600 BN.prototype.cmpn = function cmpn (num) {
29601 var negative = num < 0;
29602
29603 if (this.negative !== 0 && !negative) return -1;
29604 if (this.negative === 0 && negative) return 1;
29605
29606 this.strip();
29607
29608 var res;
29609 if (this.length > 1) {
29610 res = 1;
29611 } else {
29612 if (negative) {
29613 num = -num;
29614 }
29615
29616 assert(num <= 0x3ffffff, 'Number is too big');
29617
29618 var w = this.words[0] | 0;
29619 res = w === num ? 0 : w < num ? -1 : 1;
29620 }
29621 if (this.negative !== 0) return -res | 0;
29622 return res;
29623 };
29624
29625 // Compare two numbers and return:
29626 // 1 - if `this` > `num`
29627 // 0 - if `this` == `num`
29628 // -1 - if `this` < `num`
29629 BN.prototype.cmp = function cmp (num) {
29630 if (this.negative !== 0 && num.negative === 0) return -1;
29631 if (this.negative === 0 && num.negative !== 0) return 1;
29632
29633 var res = this.ucmp(num);
29634 if (this.negative !== 0) return -res | 0;
29635 return res;
29636 };
29637
29638 // Unsigned comparison
29639 BN.prototype.ucmp = function ucmp (num) {
29640 // At this point both numbers have the same sign
29641 if (this.length > num.length) return 1;
29642 if (this.length < num.length) return -1;
29643
29644 var res = 0;
29645 for (var i = this.length - 1; i >= 0; i--) {
29646 var a = this.words[i] | 0;
29647 var b = num.words[i] | 0;
29648
29649 if (a === b) continue;
29650 if (a < b) {
29651 res = -1;
29652 } else if (a > b) {
29653 res = 1;
29654 }
29655 break;
29656 }
29657 return res;
29658 };
29659
29660 BN.prototype.gtn = function gtn (num) {
29661 return this.cmpn(num) === 1;
29662 };
29663
29664 BN.prototype.gt = function gt (num) {
29665 return this.cmp(num) === 1;
29666 };
29667
29668 BN.prototype.gten = function gten (num) {
29669 return this.cmpn(num) >= 0;
29670 };
29671
29672 BN.prototype.gte = function gte (num) {
29673 return this.cmp(num) >= 0;
29674 };
29675
29676 BN.prototype.ltn = function ltn (num) {
29677 return this.cmpn(num) === -1;
29678 };
29679
29680 BN.prototype.lt = function lt (num) {
29681 return this.cmp(num) === -1;
29682 };
29683
29684 BN.prototype.lten = function lten (num) {
29685 return this.cmpn(num) <= 0;
29686 };
29687
29688 BN.prototype.lte = function lte (num) {
29689 return this.cmp(num) <= 0;
29690 };
29691
29692 BN.prototype.eqn = function eqn (num) {
29693 return this.cmpn(num) === 0;
29694 };
29695
29696 BN.prototype.eq = function eq (num) {
29697 return this.cmp(num) === 0;
29698 };
29699
29700 //
29701 // A reduce context, could be using montgomery or something better, depending
29702 // on the `m` itself.
29703 //
29704 BN.red = function red (num) {
29705 return new Red(num);
29706 };
29707
29708 BN.prototype.toRed = function toRed (ctx) {
29709 assert(!this.red, 'Already a number in reduction context');
29710 assert(this.negative === 0, 'red works only with positives');
29711 return ctx.convertTo(this)._forceRed(ctx);
29712 };
29713
29714 BN.prototype.fromRed = function fromRed () {
29715 assert(this.red, 'fromRed works only with numbers in reduction context');
29716 return this.red.convertFrom(this);
29717 };
29718
29719 BN.prototype._forceRed = function _forceRed (ctx) {
29720 this.red = ctx;
29721 return this;
29722 };
29723
29724 BN.prototype.forceRed = function forceRed (ctx) {
29725 assert(!this.red, 'Already a number in reduction context');
29726 return this._forceRed(ctx);
29727 };
29728
29729 BN.prototype.redAdd = function redAdd (num) {
29730 assert(this.red, 'redAdd works only with red numbers');
29731 return this.red.add(this, num);
29732 };
29733
29734 BN.prototype.redIAdd = function redIAdd (num) {
29735 assert(this.red, 'redIAdd works only with red numbers');
29736 return this.red.iadd(this, num);
29737 };
29738
29739 BN.prototype.redSub = function redSub (num) {
29740 assert(this.red, 'redSub works only with red numbers');
29741 return this.red.sub(this, num);
29742 };
29743
29744 BN.prototype.redISub = function redISub (num) {
29745 assert(this.red, 'redISub works only with red numbers');
29746 return this.red.isub(this, num);
29747 };
29748
29749 BN.prototype.redShl = function redShl (num) {
29750 assert(this.red, 'redShl works only with red numbers');
29751 return this.red.shl(this, num);
29752 };
29753
29754 BN.prototype.redMul = function redMul (num) {
29755 assert(this.red, 'redMul works only with red numbers');
29756 this.red._verify2(this, num);
29757 return this.red.mul(this, num);
29758 };
29759
29760 BN.prototype.redIMul = function redIMul (num) {
29761 assert(this.red, 'redMul works only with red numbers');
29762 this.red._verify2(this, num);
29763 return this.red.imul(this, num);
29764 };
29765
29766 BN.prototype.redSqr = function redSqr () {
29767 assert(this.red, 'redSqr works only with red numbers');
29768 this.red._verify1(this);
29769 return this.red.sqr(this);
29770 };
29771
29772 BN.prototype.redISqr = function redISqr () {
29773 assert(this.red, 'redISqr works only with red numbers');
29774 this.red._verify1(this);
29775 return this.red.isqr(this);
29776 };
29777
29778 // Square root over p
29779 BN.prototype.redSqrt = function redSqrt () {
29780 assert(this.red, 'redSqrt works only with red numbers');
29781 this.red._verify1(this);
29782 return this.red.sqrt(this);
29783 };
29784
29785 BN.prototype.redInvm = function redInvm () {
29786 assert(this.red, 'redInvm works only with red numbers');
29787 this.red._verify1(this);
29788 return this.red.invm(this);
29789 };
29790
29791 // Return negative clone of `this` % `red modulo`
29792 BN.prototype.redNeg = function redNeg () {
29793 assert(this.red, 'redNeg works only with red numbers');
29794 this.red._verify1(this);
29795 return this.red.neg(this);
29796 };
29797
29798 BN.prototype.redPow = function redPow (num) {
29799 assert(this.red && !num.red, 'redPow(normalNum)');
29800 this.red._verify1(this);
29801 return this.red.pow(this, num);
29802 };
29803
29804 // Prime numbers with efficient reduction
29805 var primes = {
29806 k256: null,
29807 p224: null,
29808 p192: null,
29809 p25519: null
29810 };
29811
29812 // Pseudo-Mersenne prime
29813 function MPrime (name, p) {
29814 // P = 2 ^ N - K
29815 this.name = name;
29816 this.p = new BN(p, 16);
29817 this.n = this.p.bitLength();
29818 this.k = new BN(1).iushln(this.n).isub(this.p);
29819
29820 this.tmp = this._tmp();
29821 }
29822
29823 MPrime.prototype._tmp = function _tmp () {
29824 var tmp = new BN(null);
29825 tmp.words = new Array(Math.ceil(this.n / 13));
29826 return tmp;
29827 };
29828
29829 MPrime.prototype.ireduce = function ireduce (num) {
29830 // Assumes that `num` is less than `P^2`
29831 // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
29832 var r = num;
29833 var rlen;
29834
29835 do {
29836 this.split(r, this.tmp);
29837 r = this.imulK(r);
29838 r = r.iadd(this.tmp);
29839 rlen = r.bitLength();
29840 } while (rlen > this.n);
29841
29842 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
29843 if (cmp === 0) {
29844 r.words[0] = 0;
29845 r.length = 1;
29846 } else if (cmp > 0) {
29847 r.isub(this.p);
29848 } else {
29849 r.strip();
29850 }
29851
29852 return r;
29853 };
29854
29855 MPrime.prototype.split = function split (input, out) {
29856 input.iushrn(this.n, 0, out);
29857 };
29858
29859 MPrime.prototype.imulK = function imulK (num) {
29860 return num.imul(this.k);
29861 };
29862
29863 function K256 () {
29864 MPrime.call(
29865 this,
29866 'k256',
29867 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
29868 }
29869 inherits(K256, MPrime);
29870
29871 K256.prototype.split = function split (input, output) {
29872 // 256 = 9 * 26 + 22
29873 var mask = 0x3fffff;
29874
29875 var outLen = Math.min(input.length, 9);
29876 for (var i = 0; i < outLen; i++) {
29877 output.words[i] = input.words[i];
29878 }
29879 output.length = outLen;
29880
29881 if (input.length <= 9) {
29882 input.words[0] = 0;
29883 input.length = 1;
29884 return;
29885 }
29886
29887 // Shift by 9 limbs
29888 var prev = input.words[9];
29889 output.words[output.length++] = prev & mask;
29890
29891 for (i = 10; i < input.length; i++) {
29892 var next = input.words[i] | 0;
29893 input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
29894 prev = next;
29895 }
29896 prev >>>= 22;
29897 input.words[i - 10] = prev;
29898 if (prev === 0 && input.length > 10) {
29899 input.length -= 10;
29900 } else {
29901 input.length -= 9;
29902 }
29903 };
29904
29905 K256.prototype.imulK = function imulK (num) {
29906 // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
29907 num.words[num.length] = 0;
29908 num.words[num.length + 1] = 0;
29909 num.length += 2;
29910
29911 // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
29912 var lo = 0;
29913 for (var i = 0; i < num.length; i++) {
29914 var w = num.words[i] | 0;
29915 lo += w * 0x3d1;
29916 num.words[i] = lo & 0x3ffffff;
29917 lo = w * 0x40 + ((lo / 0x4000000) | 0);
29918 }
29919
29920 // Fast length reduction
29921 if (num.words[num.length - 1] === 0) {
29922 num.length--;
29923 if (num.words[num.length - 1] === 0) {
29924 num.length--;
29925 }
29926 }
29927 return num;
29928 };
29929
29930 function P224 () {
29931 MPrime.call(
29932 this,
29933 'p224',
29934 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
29935 }
29936 inherits(P224, MPrime);
29937
29938 function P192 () {
29939 MPrime.call(
29940 this,
29941 'p192',
29942 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
29943 }
29944 inherits(P192, MPrime);
29945
29946 function P25519 () {
29947 // 2 ^ 255 - 19
29948 MPrime.call(
29949 this,
29950 '25519',
29951 '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
29952 }
29953 inherits(P25519, MPrime);
29954
29955 P25519.prototype.imulK = function imulK (num) {
29956 // K = 0x13
29957 var carry = 0;
29958 for (var i = 0; i < num.length; i++) {
29959 var hi = (num.words[i] | 0) * 0x13 + carry;
29960 var lo = hi & 0x3ffffff;
29961 hi >>>= 26;
29962
29963 num.words[i] = lo;
29964 carry = hi;
29965 }
29966 if (carry !== 0) {
29967 num.words[num.length++] = carry;
29968 }
29969 return num;
29970 };
29971
29972 // Exported mostly for testing purposes, use plain name instead
29973 BN._prime = function prime (name) {
29974 // Cached version of prime
29975 if (primes[name]) return primes[name];
29976
29977 var prime;
29978 if (name === 'k256') {
29979 prime = new K256();
29980 } else if (name === 'p224') {
29981 prime = new P224();
29982 } else if (name === 'p192') {
29983 prime = new P192();
29984 } else if (name === 'p25519') {
29985 prime = new P25519();
29986 } else {
29987 throw new Error('Unknown prime ' + name);
29988 }
29989 primes[name] = prime;
29990
29991 return prime;
29992 };
29993
29994 //
29995 // Base reduction engine
29996 //
29997 function Red (m) {
29998 if (typeof m === 'string') {
29999 var prime = BN._prime(m);
30000 this.m = prime.p;
30001 this.prime = prime;
30002 } else {
30003 assert(m.gtn(1), 'modulus must be greater than 1');
30004 this.m = m;
30005 this.prime = null;
30006 }
30007 }
30008
30009 Red.prototype._verify1 = function _verify1 (a) {
30010 assert(a.negative === 0, 'red works only with positives');
30011 assert(a.red, 'red works only with red numbers');
30012 };
30013
30014 Red.prototype._verify2 = function _verify2 (a, b) {
30015 assert((a.negative | b.negative) === 0, 'red works only with positives');
30016 assert(a.red && a.red === b.red,
30017 'red works only with red numbers');
30018 };
30019
30020 Red.prototype.imod = function imod (a) {
30021 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
30022 return a.umod(this.m)._forceRed(this);
30023 };
30024
30025 Red.prototype.neg = function neg (a) {
30026 if (a.isZero()) {
30027 return a.clone();
30028 }
30029
30030 return this.m.sub(a)._forceRed(this);
30031 };
30032
30033 Red.prototype.add = function add (a, b) {
30034 this._verify2(a, b);
30035
30036 var res = a.add(b);
30037 if (res.cmp(this.m) >= 0) {
30038 res.isub(this.m);
30039 }
30040 return res._forceRed(this);
30041 };
30042
30043 Red.prototype.iadd = function iadd (a, b) {
30044 this._verify2(a, b);
30045
30046 var res = a.iadd(b);
30047 if (res.cmp(this.m) >= 0) {
30048 res.isub(this.m);
30049 }
30050 return res;
30051 };
30052
30053 Red.prototype.sub = function sub (a, b) {
30054 this._verify2(a, b);
30055
30056 var res = a.sub(b);
30057 if (res.cmpn(0) < 0) {
30058 res.iadd(this.m);
30059 }
30060 return res._forceRed(this);
30061 };
30062
30063 Red.prototype.isub = function isub (a, b) {
30064 this._verify2(a, b);
30065
30066 var res = a.isub(b);
30067 if (res.cmpn(0) < 0) {
30068 res.iadd(this.m);
30069 }
30070 return res;
30071 };
30072
30073 Red.prototype.shl = function shl (a, num) {
30074 this._verify1(a);
30075 return this.imod(a.ushln(num));
30076 };
30077
30078 Red.prototype.imul = function imul (a, b) {
30079 this._verify2(a, b);
30080 return this.imod(a.imul(b));
30081 };
30082
30083 Red.prototype.mul = function mul (a, b) {
30084 this._verify2(a, b);
30085 return this.imod(a.mul(b));
30086 };
30087
30088 Red.prototype.isqr = function isqr (a) {
30089 return this.imul(a, a.clone());
30090 };
30091
30092 Red.prototype.sqr = function sqr (a) {
30093 return this.mul(a, a);
30094 };
30095
30096 Red.prototype.sqrt = function sqrt (a) {
30097 if (a.isZero()) return a.clone();
30098
30099 var mod3 = this.m.andln(3);
30100 assert(mod3 % 2 === 1);
30101
30102 // Fast case
30103 if (mod3 === 3) {
30104 var pow = this.m.add(new BN(1)).iushrn(2);
30105 return this.pow(a, pow);
30106 }
30107
30108 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
30109 //
30110 // Find Q and S, that Q * 2 ^ S = (P - 1)
30111 var q = this.m.subn(1);
30112 var s = 0;
30113 while (!q.isZero() && q.andln(1) === 0) {
30114 s++;
30115 q.iushrn(1);
30116 }
30117 assert(!q.isZero());
30118
30119 var one = new BN(1).toRed(this);
30120 var nOne = one.redNeg();
30121
30122 // Find quadratic non-residue
30123 // NOTE: Max is such because of generalized Riemann hypothesis.
30124 var lpow = this.m.subn(1).iushrn(1);
30125 var z = this.m.bitLength();
30126 z = new BN(2 * z * z).toRed(this);
30127
30128 while (this.pow(z, lpow).cmp(nOne) !== 0) {
30129 z.redIAdd(nOne);
30130 }
30131
30132 var c = this.pow(z, q);
30133 var r = this.pow(a, q.addn(1).iushrn(1));
30134 var t = this.pow(a, q);
30135 var m = s;
30136 while (t.cmp(one) !== 0) {
30137 var tmp = t;
30138 for (var i = 0; tmp.cmp(one) !== 0; i++) {
30139 tmp = tmp.redSqr();
30140 }
30141 assert(i < m);
30142 var b = this.pow(c, new BN(1).iushln(m - i - 1));
30143
30144 r = r.redMul(b);
30145 c = b.redSqr();
30146 t = t.redMul(c);
30147 m = i;
30148 }
30149
30150 return r;
30151 };
30152
30153 Red.prototype.invm = function invm (a) {
30154 var inv = a._invmp(this.m);
30155 if (inv.negative !== 0) {
30156 inv.negative = 0;
30157 return this.imod(inv).redNeg();
30158 } else {
30159 return this.imod(inv);
30160 }
30161 };
30162
30163 Red.prototype.pow = function pow (a, num) {
30164 if (num.isZero()) return new BN(1);
30165 if (num.cmpn(1) === 0) return a.clone();
30166
30167 var windowSize = 4;
30168 var wnd = new Array(1 << windowSize);
30169 wnd[0] = new BN(1).toRed(this);
30170 wnd[1] = a;
30171 for (var i = 2; i < wnd.length; i++) {
30172 wnd[i] = this.mul(wnd[i - 1], a);
30173 }
30174
30175 var res = wnd[0];
30176 var current = 0;
30177 var currentLen = 0;
30178 var start = num.bitLength() % 26;
30179 if (start === 0) {
30180 start = 26;
30181 }
30182
30183 for (i = num.length - 1; i >= 0; i--) {
30184 var word = num.words[i];
30185 for (var j = start - 1; j >= 0; j--) {
30186 var bit = (word >> j) & 1;
30187 if (res !== wnd[0]) {
30188 res = this.sqr(res);
30189 }
30190
30191 if (bit === 0 && current === 0) {
30192 currentLen = 0;
30193 continue;
30194 }
30195
30196 current <<= 1;
30197 current |= bit;
30198 currentLen++;
30199 if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
30200
30201 res = this.mul(res, wnd[current]);
30202 currentLen = 0;
30203 current = 0;
30204 }
30205 start = 26;
30206 }
30207
30208 return res;
30209 };
30210
30211 Red.prototype.convertTo = function convertTo (num) {
30212 var r = num.umod(this.m);
30213
30214 return r === num ? r.clone() : r;
30215 };
30216
30217 Red.prototype.convertFrom = function convertFrom (num) {
30218 var res = num.clone();
30219 res.red = null;
30220 return res;
30221 };
30222
30223 //
30224 // Montgomery method engine
30225 //
30226
30227 BN.mont = function mont (num) {
30228 return new Mont(num);
30229 };
30230
30231 function Mont (m) {
30232 Red.call(this, m);
30233
30234 this.shift = this.m.bitLength();
30235 if (this.shift % 26 !== 0) {
30236 this.shift += 26 - (this.shift % 26);
30237 }
30238
30239 this.r = new BN(1).iushln(this.shift);
30240 this.r2 = this.imod(this.r.sqr());
30241 this.rinv = this.r._invmp(this.m);
30242
30243 this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
30244 this.minv = this.minv.umod(this.r);
30245 this.minv = this.r.sub(this.minv);
30246 }
30247 inherits(Mont, Red);
30248
30249 Mont.prototype.convertTo = function convertTo (num) {
30250 return this.imod(num.ushln(this.shift));
30251 };
30252
30253 Mont.prototype.convertFrom = function convertFrom (num) {
30254 var r = this.imod(num.mul(this.rinv));
30255 r.red = null;
30256 return r;
30257 };
30258
30259 Mont.prototype.imul = function imul (a, b) {
30260 if (a.isZero() || b.isZero()) {
30261 a.words[0] = 0;
30262 a.length = 1;
30263 return a;
30264 }
30265
30266 var t = a.imul(b);
30267 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
30268 var u = t.isub(c).iushrn(this.shift);
30269 var res = u;
30270
30271 if (u.cmp(this.m) >= 0) {
30272 res = u.isub(this.m);
30273 } else if (u.cmpn(0) < 0) {
30274 res = u.iadd(this.m);
30275 }
30276
30277 return res._forceRed(this);
30278 };
30279
30280 Mont.prototype.mul = function mul (a, b) {
30281 if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
30282
30283 var t = a.mul(b);
30284 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
30285 var u = t.isub(c).iushrn(this.shift);
30286 var res = u;
30287 if (u.cmp(this.m) >= 0) {
30288 res = u.isub(this.m);
30289 } else if (u.cmpn(0) < 0) {
30290 res = u.iadd(this.m);
30291 }
30292
30293 return res._forceRed(this);
30294 };
30295
30296 Mont.prototype.invm = function invm (a) {
30297 // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
30298 var res = this.imod(a._invmp(this.m).mul(this.r2));
30299 return res._forceRed(this);
30300 };
30301 })(typeof module === 'undefined' || module, this);
30302
30303 },{}],34:[function(require,module,exports){
30304 var r;
30305
30306 module.exports = function rand(len) {
30307 if (!r)
30308 r = new Rand(null);
30309
30310 return r.generate(len);
30311 };
30312
30313 function Rand(rand) {
30314 this.rand = rand;
30315 }
30316 module.exports.Rand = Rand;
30317
30318 Rand.prototype.generate = function generate(len) {
30319 return this._rand(len);
30320 };
30321
30322 if (typeof self === 'object') {
30323 if (self.crypto && self.crypto.getRandomValues) {
30324 // Modern browsers
30325 Rand.prototype._rand = function _rand(n) {
30326 var arr = new Uint8Array(n);
30327 self.crypto.getRandomValues(arr);
30328 return arr;
30329 };
30330 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
30331 // IE
30332 Rand.prototype._rand = function _rand(n) {
30333 var arr = new Uint8Array(n);
30334 self.msCrypto.getRandomValues(arr);
30335 return arr;
30336 };
30337 } else {
30338 // Old junk
30339 Rand.prototype._rand = function() {
30340 throw new Error('Not implemented yet');
30341 };
30342 }
30343 } else {
30344 // Node.js or Web worker with no crypto support
30345 try {
30346 var crypto = require('crypto');
30347
30348 Rand.prototype._rand = function _rand(n) {
30349 return crypto.randomBytes(n);
30350 };
30351 } catch (e) {
30352 // Emulate crypto API using randy
30353 Rand.prototype._rand = function _rand(n) {
30354 var res = new Uint8Array(n);
30355 for (var i = 0; i < res.length; i++)
30356 res[i] = this.rand.getByte();
30357 return res;
30358 };
30359 }
30360 }
30361
30362 },{"crypto":3}],35:[function(require,module,exports){
30363 (function (Buffer){
30364 var Transform = require('stream').Transform
30365 var inherits = require('inherits')
30366 var StringDecoder = require('string_decoder').StringDecoder
30367 module.exports = CipherBase
30368 inherits(CipherBase, Transform)
30369 function CipherBase (hashMode) {
30370 Transform.call(this)
30371 this.hashMode = typeof hashMode === 'string'
30372 if (this.hashMode) {
30373 this[hashMode] = this._finalOrDigest
30374 } else {
30375 this.final = this._finalOrDigest
30376 }
30377 this._decoder = null
30378 this._encoding = null
30379 }
30380 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
30381 if (typeof data === 'string') {
30382 data = new Buffer(data, inputEnc)
30383 }
30384 var outData = this._update(data)
30385 if (this.hashMode) {
30386 return this
30387 }
30388 if (outputEnc) {
30389 outData = this._toString(outData, outputEnc)
30390 }
30391 return outData
30392 }
30393
30394 CipherBase.prototype.setAutoPadding = function () {}
30395
30396 CipherBase.prototype.getAuthTag = function () {
30397 throw new Error('trying to get auth tag in unsupported state')
30398 }
30399
30400 CipherBase.prototype.setAuthTag = function () {
30401 throw new Error('trying to set auth tag in unsupported state')
30402 }
30403
30404 CipherBase.prototype.setAAD = function () {
30405 throw new Error('trying to set aad in unsupported state')
30406 }
30407
30408 CipherBase.prototype._transform = function (data, _, next) {
30409 var err
30410 try {
30411 if (this.hashMode) {
30412 this._update(data)
30413 } else {
30414 this.push(this._update(data))
30415 }
30416 } catch (e) {
30417 err = e
30418 } finally {
30419 next(err)
30420 }
30421 }
30422 CipherBase.prototype._flush = function (done) {
30423 var err
30424 try {
30425 this.push(this._final())
30426 } catch (e) {
30427 err = e
30428 } finally {
30429 done(err)
30430 }
30431 }
30432 CipherBase.prototype._finalOrDigest = function (outputEnc) {
30433 var outData = this._final() || new Buffer('')
30434 if (outputEnc) {
30435 outData = this._toString(outData, outputEnc, true)
30436 }
30437 return outData
30438 }
30439
30440 CipherBase.prototype._toString = function (value, enc, fin) {
30441 if (!this._decoder) {
30442 this._decoder = new StringDecoder(enc)
30443 this._encoding = enc
30444 }
30445 if (this._encoding !== enc) {
30446 throw new Error('can\'t switch encodings')
30447 }
30448 var out = this._decoder.write(value)
30449 if (fin) {
30450 out += this._decoder.end()
30451 }
30452 return out
30453 }
30454
30455 }).call(this,require("buffer").Buffer)
30456 },{"buffer":5,"inherits":63,"stream":25,"string_decoder":26}],36:[function(require,module,exports){
30457 (function (Buffer){
30458 'use strict';
30459 var inherits = require('inherits')
30460 var md5 = require('./md5')
30461 var rmd160 = require('ripemd160')
30462 var sha = require('sha.js')
30463
30464 var Base = require('cipher-base')
30465
30466 function HashNoConstructor(hash) {
30467 Base.call(this, 'digest')
30468
30469 this._hash = hash
30470 this.buffers = []
30471 }
30472
30473 inherits(HashNoConstructor, Base)
30474
30475 HashNoConstructor.prototype._update = function (data) {
30476 this.buffers.push(data)
30477 }
30478
30479 HashNoConstructor.prototype._final = function () {
30480 var buf = Buffer.concat(this.buffers)
30481 var r = this._hash(buf)
30482 this.buffers = null
30483
30484 return r
30485 }
30486
30487 function Hash(hash) {
30488 Base.call(this, 'digest')
30489
30490 this._hash = hash
30491 }
30492
30493 inherits(Hash, Base)
30494
30495 Hash.prototype._update = function (data) {
30496 this._hash.update(data)
30497 }
30498
30499 Hash.prototype._final = function () {
30500 return this._hash.digest()
30501 }
30502
30503 module.exports = function createHash (alg) {
30504 alg = alg.toLowerCase()
30505 if ('md5' === alg) return new HashNoConstructor(md5)
30506 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
30507
30508 return new Hash(sha(alg))
30509 }
30510
30511 }).call(this,require("buffer").Buffer)
30512 },{"./md5":38,"buffer":5,"cipher-base":35,"inherits":63,"ripemd160":71,"sha.js":80}],37:[function(require,module,exports){
30513 (function (Buffer){
30514 'use strict';
30515 var intSize = 4;
30516 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
30517 var chrsz = 8;
30518
30519 function toArray(buf, bigEndian) {
30520 if ((buf.length % intSize) !== 0) {
30521 var len = buf.length + (intSize - (buf.length % intSize));
30522 buf = Buffer.concat([buf, zeroBuffer], len);
30523 }
30524
30525 var arr = [];
30526 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
30527 for (var i = 0; i < buf.length; i += intSize) {
30528 arr.push(fn.call(buf, i));
30529 }
30530 return arr;
30531 }
30532
30533 function toBuffer(arr, size, bigEndian) {
30534 var buf = new Buffer(size);
30535 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
30536 for (var i = 0; i < arr.length; i++) {
30537 fn.call(buf, arr[i], i * 4, true);
30538 }
30539 return buf;
30540 }
30541
30542 function hash(buf, fn, hashSize, bigEndian) {
30543 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
30544 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
30545 return toBuffer(arr, hashSize, bigEndian);
30546 }
30547 exports.hash = hash;
30548 }).call(this,require("buffer").Buffer)
30549 },{"buffer":5}],38:[function(require,module,exports){
30550 'use strict';
30551 /*
30552 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
30553 * Digest Algorithm, as defined in RFC 1321.
30554 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
30555 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
30556 * Distributed under the BSD License
30557 * See http://pajhome.org.uk/crypt/md5 for more info.
30558 */
30559
30560 var helpers = require('./helpers');
30561
30562 /*
30563 * Calculate the MD5 of an array of little-endian words, and a bit length
30564 */
30565 function core_md5(x, len)
30566 {
30567 /* append padding */
30568 x[len >> 5] |= 0x80 << ((len) % 32);
30569 x[(((len + 64) >>> 9) << 4) + 14] = len;
30570
30571 var a = 1732584193;
30572 var b = -271733879;
30573 var c = -1732584194;
30574 var d = 271733878;
30575
30576 for(var i = 0; i < x.length; i += 16)
30577 {
30578 var olda = a;
30579 var oldb = b;
30580 var oldc = c;
30581 var oldd = d;
30582
30583 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
30584 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
30585 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
30586 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
30587 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
30588 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
30589 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
30590 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
30591 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
30592 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
30593 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
30594 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
30595 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
30596 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
30597 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
30598 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
30599
30600 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
30601 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
30602 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
30603 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
30604 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
30605 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
30606 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
30607 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
30608 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
30609 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
30610 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
30611 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
30612 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
30613 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
30614 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
30615 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
30616
30617 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
30618 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
30619 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
30620 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
30621 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
30622 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
30623 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
30624 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
30625 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
30626 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
30627 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
30628 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
30629 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
30630 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
30631 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
30632 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
30633
30634 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
30635 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
30636 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
30637 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
30638 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
30639 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
30640 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
30641 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
30642 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
30643 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
30644 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
30645 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
30646 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
30647 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
30648 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
30649 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
30650
30651 a = safe_add(a, olda);
30652 b = safe_add(b, oldb);
30653 c = safe_add(c, oldc);
30654 d = safe_add(d, oldd);
30655 }
30656 return Array(a, b, c, d);
30657
30658 }
30659
30660 /*
30661 * These functions implement the four basic operations the algorithm uses.
30662 */
30663 function md5_cmn(q, a, b, x, s, t)
30664 {
30665 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
30666 }
30667 function md5_ff(a, b, c, d, x, s, t)
30668 {
30669 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
30670 }
30671 function md5_gg(a, b, c, d, x, s, t)
30672 {
30673 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
30674 }
30675 function md5_hh(a, b, c, d, x, s, t)
30676 {
30677 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
30678 }
30679 function md5_ii(a, b, c, d, x, s, t)
30680 {
30681 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
30682 }
30683
30684 /*
30685 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
30686 * to work around bugs in some JS interpreters.
30687 */
30688 function safe_add(x, y)
30689 {
30690 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
30691 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
30692 return (msw << 16) | (lsw & 0xFFFF);
30693 }
30694
30695 /*
30696 * Bitwise rotate a 32-bit number to the left.
30697 */
30698 function bit_rol(num, cnt)
30699 {
30700 return (num << cnt) | (num >>> (32 - cnt));
30701 }
30702
30703 module.exports = function md5(buf) {
30704 return helpers.hash(buf, core_md5, 16);
30705 };
30706 },{"./helpers":37}],39:[function(require,module,exports){
30707 'use strict';
30708
30709 var elliptic = exports;
30710
30711 elliptic.version = require('../package.json').version;
30712 elliptic.utils = require('./elliptic/utils');
30713 elliptic.rand = require('brorand');
30714 elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
30715 elliptic.curve = require('./elliptic/curve');
30716 elliptic.curves = require('./elliptic/curves');
30717
30718 // Protocols
30719 elliptic.ec = require('./elliptic/ec');
30720 elliptic.eddsa = require('./elliptic/eddsa');
30721
30722 },{"../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){
30723 'use strict';
30724
30725 var BN = require('bn.js');
30726 var elliptic = require('../../elliptic');
30727 var utils = elliptic.utils;
30728 var getNAF = utils.getNAF;
30729 var getJSF = utils.getJSF;
30730 var assert = utils.assert;
30731
30732 function BaseCurve(type, conf) {
30733 this.type = type;
30734 this.p = new BN(conf.p, 16);
30735
30736 // Use Montgomery, when there is no fast reduction for the prime
30737 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
30738
30739 // Useful for many curves
30740 this.zero = new BN(0).toRed(this.red);
30741 this.one = new BN(1).toRed(this.red);
30742 this.two = new BN(2).toRed(this.red);
30743
30744 // Curve configuration, optional
30745 this.n = conf.n && new BN(conf.n, 16);
30746 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
30747
30748 // Temporary arrays
30749 this._wnafT1 = new Array(4);
30750 this._wnafT2 = new Array(4);
30751 this._wnafT3 = new Array(4);
30752 this._wnafT4 = new Array(4);
30753
30754 // Generalized Greg Maxwell's trick
30755 var adjustCount = this.n && this.p.div(this.n);
30756 if (!adjustCount || adjustCount.cmpn(100) > 0) {
30757 this.redN = null;
30758 } else {
30759 this._maxwellTrick = true;
30760 this.redN = this.n.toRed(this.red);
30761 }
30762 }
30763 module.exports = BaseCurve;
30764
30765 BaseCurve.prototype.point = function point() {
30766 throw new Error('Not implemented');
30767 };
30768
30769 BaseCurve.prototype.validate = function validate() {
30770 throw new Error('Not implemented');
30771 };
30772
30773 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
30774 assert(p.precomputed);
30775 var doubles = p._getDoubles();
30776
30777 var naf = getNAF(k, 1);
30778 var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
30779 I /= 3;
30780
30781 // Translate into more windowed form
30782 var repr = [];
30783 for (var j = 0; j < naf.length; j += doubles.step) {
30784 var nafW = 0;
30785 for (var k = j + doubles.step - 1; k >= j; k--)
30786 nafW = (nafW << 1) + naf[k];
30787 repr.push(nafW);
30788 }
30789
30790 var a = this.jpoint(null, null, null);
30791 var b = this.jpoint(null, null, null);
30792 for (var i = I; i > 0; i--) {
30793 for (var j = 0; j < repr.length; j++) {
30794 var nafW = repr[j];
30795 if (nafW === i)
30796 b = b.mixedAdd(doubles.points[j]);
30797 else if (nafW === -i)
30798 b = b.mixedAdd(doubles.points[j].neg());
30799 }
30800 a = a.add(b);
30801 }
30802 return a.toP();
30803 };
30804
30805 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
30806 var w = 4;
30807
30808 // Precompute window
30809 var nafPoints = p._getNAFPoints(w);
30810 w = nafPoints.wnd;
30811 var wnd = nafPoints.points;
30812
30813 // Get NAF form
30814 var naf = getNAF(k, w);
30815
30816 // Add `this`*(N+1) for every w-NAF index
30817 var acc = this.jpoint(null, null, null);
30818 for (var i = naf.length - 1; i >= 0; i--) {
30819 // Count zeroes
30820 for (var k = 0; i >= 0 && naf[i] === 0; i--)
30821 k++;
30822 if (i >= 0)
30823 k++;
30824 acc = acc.dblp(k);
30825
30826 if (i < 0)
30827 break;
30828 var z = naf[i];
30829 assert(z !== 0);
30830 if (p.type === 'affine') {
30831 // J +- P
30832 if (z > 0)
30833 acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
30834 else
30835 acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
30836 } else {
30837 // J +- J
30838 if (z > 0)
30839 acc = acc.add(wnd[(z - 1) >> 1]);
30840 else
30841 acc = acc.add(wnd[(-z - 1) >> 1].neg());
30842 }
30843 }
30844 return p.type === 'affine' ? acc.toP() : acc;
30845 };
30846
30847 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
30848 points,
30849 coeffs,
30850 len,
30851 jacobianResult) {
30852 var wndWidth = this._wnafT1;
30853 var wnd = this._wnafT2;
30854 var naf = this._wnafT3;
30855
30856 // Fill all arrays
30857 var max = 0;
30858 for (var i = 0; i < len; i++) {
30859 var p = points[i];
30860 var nafPoints = p._getNAFPoints(defW);
30861 wndWidth[i] = nafPoints.wnd;
30862 wnd[i] = nafPoints.points;
30863 }
30864
30865 // Comb small window NAFs
30866 for (var i = len - 1; i >= 1; i -= 2) {
30867 var a = i - 1;
30868 var b = i;
30869 if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
30870 naf[a] = getNAF(coeffs[a], wndWidth[a]);
30871 naf[b] = getNAF(coeffs[b], wndWidth[b]);
30872 max = Math.max(naf[a].length, max);
30873 max = Math.max(naf[b].length, max);
30874 continue;
30875 }
30876
30877 var comb = [
30878 points[a], /* 1 */
30879 null, /* 3 */
30880 null, /* 5 */
30881 points[b] /* 7 */
30882 ];
30883
30884 // Try to avoid Projective points, if possible
30885 if (points[a].y.cmp(points[b].y) === 0) {
30886 comb[1] = points[a].add(points[b]);
30887 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
30888 } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
30889 comb[1] = points[a].toJ().mixedAdd(points[b]);
30890 comb[2] = points[a].add(points[b].neg());
30891 } else {
30892 comb[1] = points[a].toJ().mixedAdd(points[b]);
30893 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
30894 }
30895
30896 var index = [
30897 -3, /* -1 -1 */
30898 -1, /* -1 0 */
30899 -5, /* -1 1 */
30900 -7, /* 0 -1 */
30901 0, /* 0 0 */
30902 7, /* 0 1 */
30903 5, /* 1 -1 */
30904 1, /* 1 0 */
30905 3 /* 1 1 */
30906 ];
30907
30908 var jsf = getJSF(coeffs[a], coeffs[b]);
30909 max = Math.max(jsf[0].length, max);
30910 naf[a] = new Array(max);
30911 naf[b] = new Array(max);
30912 for (var j = 0; j < max; j++) {
30913 var ja = jsf[0][j] | 0;
30914 var jb = jsf[1][j] | 0;
30915
30916 naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
30917 naf[b][j] = 0;
30918 wnd[a] = comb;
30919 }
30920 }
30921
30922 var acc = this.jpoint(null, null, null);
30923 var tmp = this._wnafT4;
30924 for (var i = max; i >= 0; i--) {
30925 var k = 0;
30926
30927 while (i >= 0) {
30928 var zero = true;
30929 for (var j = 0; j < len; j++) {
30930 tmp[j] = naf[j][i] | 0;
30931 if (tmp[j] !== 0)
30932 zero = false;
30933 }
30934 if (!zero)
30935 break;
30936 k++;
30937 i--;
30938 }
30939 if (i >= 0)
30940 k++;
30941 acc = acc.dblp(k);
30942 if (i < 0)
30943 break;
30944
30945 for (var j = 0; j < len; j++) {
30946 var z = tmp[j];
30947 var p;
30948 if (z === 0)
30949 continue;
30950 else if (z > 0)
30951 p = wnd[j][(z - 1) >> 1];
30952 else if (z < 0)
30953 p = wnd[j][(-z - 1) >> 1].neg();
30954
30955 if (p.type === 'affine')
30956 acc = acc.mixedAdd(p);
30957 else
30958 acc = acc.add(p);
30959 }
30960 }
30961 // Zeroify references
30962 for (var i = 0; i < len; i++)
30963 wnd[i] = null;
30964
30965 if (jacobianResult)
30966 return acc;
30967 else
30968 return acc.toP();
30969 };
30970
30971 function BasePoint(curve, type) {
30972 this.curve = curve;
30973 this.type = type;
30974 this.precomputed = null;
30975 }
30976 BaseCurve.BasePoint = BasePoint;
30977
30978 BasePoint.prototype.eq = function eq(/*other*/) {
30979 throw new Error('Not implemented');
30980 };
30981
30982 BasePoint.prototype.validate = function validate() {
30983 return this.curve.validate(this);
30984 };
30985
30986 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
30987 bytes = utils.toArray(bytes, enc);
30988
30989 var len = this.p.byteLength();
30990
30991 // uncompressed, hybrid-odd, hybrid-even
30992 if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
30993 bytes.length - 1 === 2 * len) {
30994 if (bytes[0] === 0x06)
30995 assert(bytes[bytes.length - 1] % 2 === 0);
30996 else if (bytes[0] === 0x07)
30997 assert(bytes[bytes.length - 1] % 2 === 1);
30998
30999 var res = this.point(bytes.slice(1, 1 + len),
31000 bytes.slice(1 + len, 1 + 2 * len));
31001
31002 return res;
31003 } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
31004 bytes.length - 1 === len) {
31005 return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
31006 }
31007 throw new Error('Unknown point format');
31008 };
31009
31010 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
31011 return this.encode(enc, true);
31012 };
31013
31014 BasePoint.prototype._encode = function _encode(compact) {
31015 var len = this.curve.p.byteLength();
31016 var x = this.getX().toArray('be', len);
31017
31018 if (compact)
31019 return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
31020
31021 return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
31022 };
31023
31024 BasePoint.prototype.encode = function encode(enc, compact) {
31025 return utils.encode(this._encode(compact), enc);
31026 };
31027
31028 BasePoint.prototype.precompute = function precompute(power) {
31029 if (this.precomputed)
31030 return this;
31031
31032 var precomputed = {
31033 doubles: null,
31034 naf: null,
31035 beta: null
31036 };
31037 precomputed.naf = this._getNAFPoints(8);
31038 precomputed.doubles = this._getDoubles(4, power);
31039 precomputed.beta = this._getBeta();
31040 this.precomputed = precomputed;
31041
31042 return this;
31043 };
31044
31045 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
31046 if (!this.precomputed)
31047 return false;
31048
31049 var doubles = this.precomputed.doubles;
31050 if (!doubles)
31051 return false;
31052
31053 return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
31054 };
31055
31056 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
31057 if (this.precomputed && this.precomputed.doubles)
31058 return this.precomputed.doubles;
31059
31060 var doubles = [ this ];
31061 var acc = this;
31062 for (var i = 0; i < power; i += step) {
31063 for (var j = 0; j < step; j++)
31064 acc = acc.dbl();
31065 doubles.push(acc);
31066 }
31067 return {
31068 step: step,
31069 points: doubles
31070 };
31071 };
31072
31073 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
31074 if (this.precomputed && this.precomputed.naf)
31075 return this.precomputed.naf;
31076
31077 var res = [ this ];
31078 var max = (1 << wnd) - 1;
31079 var dbl = max === 1 ? null : this.dbl();
31080 for (var i = 1; i < max; i++)
31081 res[i] = res[i - 1].add(dbl);
31082 return {
31083 wnd: wnd,
31084 points: res
31085 };
31086 };
31087
31088 BasePoint.prototype._getBeta = function _getBeta() {
31089 return null;
31090 };
31091
31092 BasePoint.prototype.dblp = function dblp(k) {
31093 var r = this;
31094 for (var i = 0; i < k; i++)
31095 r = r.dbl();
31096 return r;
31097 };
31098
31099 },{"../../elliptic":39,"bn.js":33}],41:[function(require,module,exports){
31100 'use strict';
31101
31102 var curve = require('../curve');
31103 var elliptic = require('../../elliptic');
31104 var BN = require('bn.js');
31105 var inherits = require('inherits');
31106 var Base = curve.base;
31107
31108 var assert = elliptic.utils.assert;
31109
31110 function EdwardsCurve(conf) {
31111 // NOTE: Important as we are creating point in Base.call()
31112 this.twisted = (conf.a | 0) !== 1;
31113 this.mOneA = this.twisted && (conf.a | 0) === -1;
31114 this.extended = this.mOneA;
31115
31116 Base.call(this, 'edwards', conf);
31117
31118 this.a = new BN(conf.a, 16).umod(this.red.m);
31119 this.a = this.a.toRed(this.red);
31120 this.c = new BN(conf.c, 16).toRed(this.red);
31121 this.c2 = this.c.redSqr();
31122 this.d = new BN(conf.d, 16).toRed(this.red);
31123 this.dd = this.d.redAdd(this.d);
31124
31125 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
31126 this.oneC = (conf.c | 0) === 1;
31127 }
31128 inherits(EdwardsCurve, Base);
31129 module.exports = EdwardsCurve;
31130
31131 EdwardsCurve.prototype._mulA = function _mulA(num) {
31132 if (this.mOneA)
31133 return num.redNeg();
31134 else
31135 return this.a.redMul(num);
31136 };
31137
31138 EdwardsCurve.prototype._mulC = function _mulC(num) {
31139 if (this.oneC)
31140 return num;
31141 else
31142 return this.c.redMul(num);
31143 };
31144
31145 // Just for compatibility with Short curve
31146 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
31147 return this.point(x, y, z, t);
31148 };
31149
31150 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
31151 x = new BN(x, 16);
31152 if (!x.red)
31153 x = x.toRed(this.red);
31154
31155 var x2 = x.redSqr();
31156 var rhs = this.c2.redSub(this.a.redMul(x2));
31157 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
31158
31159 var y2 = rhs.redMul(lhs.redInvm());
31160 var y = y2.redSqrt();
31161 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
31162 throw new Error('invalid point');
31163
31164 var isOdd = y.fromRed().isOdd();
31165 if (odd && !isOdd || !odd && isOdd)
31166 y = y.redNeg();
31167
31168 return this.point(x, y);
31169 };
31170
31171 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
31172 y = new BN(y, 16);
31173 if (!y.red)
31174 y = y.toRed(this.red);
31175
31176 // x^2 = (y^2 - 1) / (d y^2 + 1)
31177 var y2 = y.redSqr();
31178 var lhs = y2.redSub(this.one);
31179 var rhs = y2.redMul(this.d).redAdd(this.one);
31180 var x2 = lhs.redMul(rhs.redInvm());
31181
31182 if (x2.cmp(this.zero) === 0) {
31183 if (odd)
31184 throw new Error('invalid point');
31185 else
31186 return this.point(this.zero, y);
31187 }
31188
31189 var x = x2.redSqrt();
31190 if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
31191 throw new Error('invalid point');
31192
31193 if (x.isOdd() !== odd)
31194 x = x.redNeg();
31195
31196 return this.point(x, y);
31197 };
31198
31199 EdwardsCurve.prototype.validate = function validate(point) {
31200 if (point.isInfinity())
31201 return true;
31202
31203 // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
31204 point.normalize();
31205
31206 var x2 = point.x.redSqr();
31207 var y2 = point.y.redSqr();
31208 var lhs = x2.redMul(this.a).redAdd(y2);
31209 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
31210
31211 return lhs.cmp(rhs) === 0;
31212 };
31213
31214 function Point(curve, x, y, z, t) {
31215 Base.BasePoint.call(this, curve, 'projective');
31216 if (x === null && y === null && z === null) {
31217 this.x = this.curve.zero;
31218 this.y = this.curve.one;
31219 this.z = this.curve.one;
31220 this.t = this.curve.zero;
31221 this.zOne = true;
31222 } else {
31223 this.x = new BN(x, 16);
31224 this.y = new BN(y, 16);
31225 this.z = z ? new BN(z, 16) : this.curve.one;
31226 this.t = t && new BN(t, 16);
31227 if (!this.x.red)
31228 this.x = this.x.toRed(this.curve.red);
31229 if (!this.y.red)
31230 this.y = this.y.toRed(this.curve.red);
31231 if (!this.z.red)
31232 this.z = this.z.toRed(this.curve.red);
31233 if (this.t && !this.t.red)
31234 this.t = this.t.toRed(this.curve.red);
31235 this.zOne = this.z === this.curve.one;
31236
31237 // Use extended coordinates
31238 if (this.curve.extended && !this.t) {
31239 this.t = this.x.redMul(this.y);
31240 if (!this.zOne)
31241 this.t = this.t.redMul(this.z.redInvm());
31242 }
31243 }
31244 }
31245 inherits(Point, Base.BasePoint);
31246
31247 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
31248 return Point.fromJSON(this, obj);
31249 };
31250
31251 EdwardsCurve.prototype.point = function point(x, y, z, t) {
31252 return new Point(this, x, y, z, t);
31253 };
31254
31255 Point.fromJSON = function fromJSON(curve, obj) {
31256 return new Point(curve, obj[0], obj[1], obj[2]);
31257 };
31258
31259 Point.prototype.inspect = function inspect() {
31260 if (this.isInfinity())
31261 return '<EC Point Infinity>';
31262 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
31263 ' y: ' + this.y.fromRed().toString(16, 2) +
31264 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
31265 };
31266
31267 Point.prototype.isInfinity = function isInfinity() {
31268 // XXX This code assumes that zero is always zero in red
31269 return this.x.cmpn(0) === 0 &&
31270 this.y.cmp(this.z) === 0;
31271 };
31272
31273 Point.prototype._extDbl = function _extDbl() {
31274 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
31275 // #doubling-dbl-2008-hwcd
31276 // 4M + 4S
31277
31278 // A = X1^2
31279 var a = this.x.redSqr();
31280 // B = Y1^2
31281 var b = this.y.redSqr();
31282 // C = 2 * Z1^2
31283 var c = this.z.redSqr();
31284 c = c.redIAdd(c);
31285 // D = a * A
31286 var d = this.curve._mulA(a);
31287 // E = (X1 + Y1)^2 - A - B
31288 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
31289 // G = D + B
31290 var g = d.redAdd(b);
31291 // F = G - C
31292 var f = g.redSub(c);
31293 // H = D - B
31294 var h = d.redSub(b);
31295 // X3 = E * F
31296 var nx = e.redMul(f);
31297 // Y3 = G * H
31298 var ny = g.redMul(h);
31299 // T3 = E * H
31300 var nt = e.redMul(h);
31301 // Z3 = F * G
31302 var nz = f.redMul(g);
31303 return this.curve.point(nx, ny, nz, nt);
31304 };
31305
31306 Point.prototype._projDbl = function _projDbl() {
31307 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
31308 // #doubling-dbl-2008-bbjlp
31309 // #doubling-dbl-2007-bl
31310 // and others
31311 // Generally 3M + 4S or 2M + 4S
31312
31313 // B = (X1 + Y1)^2
31314 var b = this.x.redAdd(this.y).redSqr();
31315 // C = X1^2
31316 var c = this.x.redSqr();
31317 // D = Y1^2
31318 var d = this.y.redSqr();
31319
31320 var nx;
31321 var ny;
31322 var nz;
31323 if (this.curve.twisted) {
31324 // E = a * C
31325 var e = this.curve._mulA(c);
31326 // F = E + D
31327 var f = e.redAdd(d);
31328 if (this.zOne) {
31329 // X3 = (B - C - D) * (F - 2)
31330 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
31331 // Y3 = F * (E - D)
31332 ny = f.redMul(e.redSub(d));
31333 // Z3 = F^2 - 2 * F
31334 nz = f.redSqr().redSub(f).redSub(f);
31335 } else {
31336 // H = Z1^2
31337 var h = this.z.redSqr();
31338 // J = F - 2 * H
31339 var j = f.redSub(h).redISub(h);
31340 // X3 = (B-C-D)*J
31341 nx = b.redSub(c).redISub(d).redMul(j);
31342 // Y3 = F * (E - D)
31343 ny = f.redMul(e.redSub(d));
31344 // Z3 = F * J
31345 nz = f.redMul(j);
31346 }
31347 } else {
31348 // E = C + D
31349 var e = c.redAdd(d);
31350 // H = (c * Z1)^2
31351 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
31352 // J = E - 2 * H
31353 var j = e.redSub(h).redSub(h);
31354 // X3 = c * (B - E) * J
31355 nx = this.curve._mulC(b.redISub(e)).redMul(j);
31356 // Y3 = c * E * (C - D)
31357 ny = this.curve._mulC(e).redMul(c.redISub(d));
31358 // Z3 = E * J
31359 nz = e.redMul(j);
31360 }
31361 return this.curve.point(nx, ny, nz);
31362 };
31363
31364 Point.prototype.dbl = function dbl() {
31365 if (this.isInfinity())
31366 return this;
31367
31368 // Double in extended coordinates
31369 if (this.curve.extended)
31370 return this._extDbl();
31371 else
31372 return this._projDbl();
31373 };
31374
31375 Point.prototype._extAdd = function _extAdd(p) {
31376 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
31377 // #addition-add-2008-hwcd-3
31378 // 8M
31379
31380 // A = (Y1 - X1) * (Y2 - X2)
31381 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
31382 // B = (Y1 + X1) * (Y2 + X2)
31383 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
31384 // C = T1 * k * T2
31385 var c = this.t.redMul(this.curve.dd).redMul(p.t);
31386 // D = Z1 * 2 * Z2
31387 var d = this.z.redMul(p.z.redAdd(p.z));
31388 // E = B - A
31389 var e = b.redSub(a);
31390 // F = D - C
31391 var f = d.redSub(c);
31392 // G = D + C
31393 var g = d.redAdd(c);
31394 // H = B + A
31395 var h = b.redAdd(a);
31396 // X3 = E * F
31397 var nx = e.redMul(f);
31398 // Y3 = G * H
31399 var ny = g.redMul(h);
31400 // T3 = E * H
31401 var nt = e.redMul(h);
31402 // Z3 = F * G
31403 var nz = f.redMul(g);
31404 return this.curve.point(nx, ny, nz, nt);
31405 };
31406
31407 Point.prototype._projAdd = function _projAdd(p) {
31408 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
31409 // #addition-add-2008-bbjlp
31410 // #addition-add-2007-bl
31411 // 10M + 1S
31412
31413 // A = Z1 * Z2
31414 var a = this.z.redMul(p.z);
31415 // B = A^2
31416 var b = a.redSqr();
31417 // C = X1 * X2
31418 var c = this.x.redMul(p.x);
31419 // D = Y1 * Y2
31420 var d = this.y.redMul(p.y);
31421 // E = d * C * D
31422 var e = this.curve.d.redMul(c).redMul(d);
31423 // F = B - E
31424 var f = b.redSub(e);
31425 // G = B + E
31426 var g = b.redAdd(e);
31427 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
31428 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
31429 var nx = a.redMul(f).redMul(tmp);
31430 var ny;
31431 var nz;
31432 if (this.curve.twisted) {
31433 // Y3 = A * G * (D - a * C)
31434 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
31435 // Z3 = F * G
31436 nz = f.redMul(g);
31437 } else {
31438 // Y3 = A * G * (D - C)
31439 ny = a.redMul(g).redMul(d.redSub(c));
31440 // Z3 = c * F * G
31441 nz = this.curve._mulC(f).redMul(g);
31442 }
31443 return this.curve.point(nx, ny, nz);
31444 };
31445
31446 Point.prototype.add = function add(p) {
31447 if (this.isInfinity())
31448 return p;
31449 if (p.isInfinity())
31450 return this;
31451
31452 if (this.curve.extended)
31453 return this._extAdd(p);
31454 else
31455 return this._projAdd(p);
31456 };
31457
31458 Point.prototype.mul = function mul(k) {
31459 if (this._hasDoubles(k))
31460 return this.curve._fixedNafMul(this, k);
31461 else
31462 return this.curve._wnafMul(this, k);
31463 };
31464
31465 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
31466 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
31467 };
31468
31469 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
31470 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
31471 };
31472
31473 Point.prototype.normalize = function normalize() {
31474 if (this.zOne)
31475 return this;
31476
31477 // Normalize coordinates
31478 var zi = this.z.redInvm();
31479 this.x = this.x.redMul(zi);
31480 this.y = this.y.redMul(zi);
31481 if (this.t)
31482 this.t = this.t.redMul(zi);
31483 this.z = this.curve.one;
31484 this.zOne = true;
31485 return this;
31486 };
31487
31488 Point.prototype.neg = function neg() {
31489 return this.curve.point(this.x.redNeg(),
31490 this.y,
31491 this.z,
31492 this.t && this.t.redNeg());
31493 };
31494
31495 Point.prototype.getX = function getX() {
31496 this.normalize();
31497 return this.x.fromRed();
31498 };
31499
31500 Point.prototype.getY = function getY() {
31501 this.normalize();
31502 return this.y.fromRed();
31503 };
31504
31505 Point.prototype.eq = function eq(other) {
31506 return this === other ||
31507 this.getX().cmp(other.getX()) === 0 &&
31508 this.getY().cmp(other.getY()) === 0;
31509 };
31510
31511 Point.prototype.eqXToP = function eqXToP(x) {
31512 var rx = x.toRed(this.curve.red).redMul(this.z);
31513 if (this.x.cmp(rx) === 0)
31514 return true;
31515
31516 var xc = x.clone();
31517 var t = this.curve.redN.redMul(this.z);
31518 for (;;) {
31519 xc.iadd(this.curve.n);
31520 if (xc.cmp(this.curve.p) >= 0)
31521 return false;
31522
31523 rx.redIAdd(t);
31524 if (this.x.cmp(rx) === 0)
31525 return true;
31526 }
31527 return false;
31528 };
31529
31530 // Compatibility with BaseCurve
31531 Point.prototype.toP = Point.prototype.normalize;
31532 Point.prototype.mixedAdd = Point.prototype.add;
31533
31534 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],42:[function(require,module,exports){
31535 'use strict';
31536
31537 var curve = exports;
31538
31539 curve.base = require('./base');
31540 curve.short = require('./short');
31541 curve.mont = require('./mont');
31542 curve.edwards = require('./edwards');
31543
31544 },{"./base":40,"./edwards":41,"./mont":43,"./short":44}],43:[function(require,module,exports){
31545 'use strict';
31546
31547 var curve = require('../curve');
31548 var BN = require('bn.js');
31549 var inherits = require('inherits');
31550 var Base = curve.base;
31551
31552 var elliptic = require('../../elliptic');
31553 var utils = elliptic.utils;
31554
31555 function MontCurve(conf) {
31556 Base.call(this, 'mont', conf);
31557
31558 this.a = new BN(conf.a, 16).toRed(this.red);
31559 this.b = new BN(conf.b, 16).toRed(this.red);
31560 this.i4 = new BN(4).toRed(this.red).redInvm();
31561 this.two = new BN(2).toRed(this.red);
31562 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
31563 }
31564 inherits(MontCurve, Base);
31565 module.exports = MontCurve;
31566
31567 MontCurve.prototype.validate = function validate(point) {
31568 var x = point.normalize().x;
31569 var x2 = x.redSqr();
31570 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
31571 var y = rhs.redSqrt();
31572
31573 return y.redSqr().cmp(rhs) === 0;
31574 };
31575
31576 function Point(curve, x, z) {
31577 Base.BasePoint.call(this, curve, 'projective');
31578 if (x === null && z === null) {
31579 this.x = this.curve.one;
31580 this.z = this.curve.zero;
31581 } else {
31582 this.x = new BN(x, 16);
31583 this.z = new BN(z, 16);
31584 if (!this.x.red)
31585 this.x = this.x.toRed(this.curve.red);
31586 if (!this.z.red)
31587 this.z = this.z.toRed(this.curve.red);
31588 }
31589 }
31590 inherits(Point, Base.BasePoint);
31591
31592 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
31593 return this.point(utils.toArray(bytes, enc), 1);
31594 };
31595
31596 MontCurve.prototype.point = function point(x, z) {
31597 return new Point(this, x, z);
31598 };
31599
31600 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
31601 return Point.fromJSON(this, obj);
31602 };
31603
31604 Point.prototype.precompute = function precompute() {
31605 // No-op
31606 };
31607
31608 Point.prototype._encode = function _encode() {
31609 return this.getX().toArray('be', this.curve.p.byteLength());
31610 };
31611
31612 Point.fromJSON = function fromJSON(curve, obj) {
31613 return new Point(curve, obj[0], obj[1] || curve.one);
31614 };
31615
31616 Point.prototype.inspect = function inspect() {
31617 if (this.isInfinity())
31618 return '<EC Point Infinity>';
31619 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
31620 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
31621 };
31622
31623 Point.prototype.isInfinity = function isInfinity() {
31624 // XXX This code assumes that zero is always zero in red
31625 return this.z.cmpn(0) === 0;
31626 };
31627
31628 Point.prototype.dbl = function dbl() {
31629 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
31630 // 2M + 2S + 4A
31631
31632 // A = X1 + Z1
31633 var a = this.x.redAdd(this.z);
31634 // AA = A^2
31635 var aa = a.redSqr();
31636 // B = X1 - Z1
31637 var b = this.x.redSub(this.z);
31638 // BB = B^2
31639 var bb = b.redSqr();
31640 // C = AA - BB
31641 var c = aa.redSub(bb);
31642 // X3 = AA * BB
31643 var nx = aa.redMul(bb);
31644 // Z3 = C * (BB + A24 * C)
31645 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
31646 return this.curve.point(nx, nz);
31647 };
31648
31649 Point.prototype.add = function add() {
31650 throw new Error('Not supported on Montgomery curve');
31651 };
31652
31653 Point.prototype.diffAdd = function diffAdd(p, diff) {
31654 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
31655 // 4M + 2S + 6A
31656
31657 // A = X2 + Z2
31658 var a = this.x.redAdd(this.z);
31659 // B = X2 - Z2
31660 var b = this.x.redSub(this.z);
31661 // C = X3 + Z3
31662 var c = p.x.redAdd(p.z);
31663 // D = X3 - Z3
31664 var d = p.x.redSub(p.z);
31665 // DA = D * A
31666 var da = d.redMul(a);
31667 // CB = C * B
31668 var cb = c.redMul(b);
31669 // X5 = Z1 * (DA + CB)^2
31670 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
31671 // Z5 = X1 * (DA - CB)^2
31672 var nz = diff.x.redMul(da.redISub(cb).redSqr());
31673 return this.curve.point(nx, nz);
31674 };
31675
31676 Point.prototype.mul = function mul(k) {
31677 var t = k.clone();
31678 var a = this; // (N / 2) * Q + Q
31679 var b = this.curve.point(null, null); // (N / 2) * Q
31680 var c = this; // Q
31681
31682 for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
31683 bits.push(t.andln(1));
31684
31685 for (var i = bits.length - 1; i >= 0; i--) {
31686 if (bits[i] === 0) {
31687 // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
31688 a = a.diffAdd(b, c);
31689 // N * Q = 2 * ((N / 2) * Q + Q))
31690 b = b.dbl();
31691 } else {
31692 // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
31693 b = a.diffAdd(b, c);
31694 // N * Q + Q = 2 * ((N / 2) * Q + Q)
31695 a = a.dbl();
31696 }
31697 }
31698 return b;
31699 };
31700
31701 Point.prototype.mulAdd = function mulAdd() {
31702 throw new Error('Not supported on Montgomery curve');
31703 };
31704
31705 Point.prototype.jumlAdd = function jumlAdd() {
31706 throw new Error('Not supported on Montgomery curve');
31707 };
31708
31709 Point.prototype.eq = function eq(other) {
31710 return this.getX().cmp(other.getX()) === 0;
31711 };
31712
31713 Point.prototype.normalize = function normalize() {
31714 this.x = this.x.redMul(this.z.redInvm());
31715 this.z = this.curve.one;
31716 return this;
31717 };
31718
31719 Point.prototype.getX = function getX() {
31720 // Normalize coordinates
31721 this.normalize();
31722
31723 return this.x.fromRed();
31724 };
31725
31726 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],44:[function(require,module,exports){
31727 'use strict';
31728
31729 var curve = require('../curve');
31730 var elliptic = require('../../elliptic');
31731 var BN = require('bn.js');
31732 var inherits = require('inherits');
31733 var Base = curve.base;
31734
31735 var assert = elliptic.utils.assert;
31736
31737 function ShortCurve(conf) {
31738 Base.call(this, 'short', conf);
31739
31740 this.a = new BN(conf.a, 16).toRed(this.red);
31741 this.b = new BN(conf.b, 16).toRed(this.red);
31742 this.tinv = this.two.redInvm();
31743
31744 this.zeroA = this.a.fromRed().cmpn(0) === 0;
31745 this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
31746
31747 // If the curve is endomorphic, precalculate beta and lambda
31748 this.endo = this._getEndomorphism(conf);
31749 this._endoWnafT1 = new Array(4);
31750 this._endoWnafT2 = new Array(4);
31751 }
31752 inherits(ShortCurve, Base);
31753 module.exports = ShortCurve;
31754
31755 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
31756 // No efficient endomorphism
31757 if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
31758 return;
31759
31760 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
31761 var beta;
31762 var lambda;
31763 if (conf.beta) {
31764 beta = new BN(conf.beta, 16).toRed(this.red);
31765 } else {
31766 var betas = this._getEndoRoots(this.p);
31767 // Choose the smallest beta
31768 beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
31769 beta = beta.toRed(this.red);
31770 }
31771 if (conf.lambda) {
31772 lambda = new BN(conf.lambda, 16);
31773 } else {
31774 // Choose the lambda that is matching selected beta
31775 var lambdas = this._getEndoRoots(this.n);
31776 if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
31777 lambda = lambdas[0];
31778 } else {
31779 lambda = lambdas[1];
31780 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
31781 }
31782 }
31783
31784 // Get basis vectors, used for balanced length-two representation
31785 var basis;
31786 if (conf.basis) {
31787 basis = conf.basis.map(function(vec) {
31788 return {
31789 a: new BN(vec.a, 16),
31790 b: new BN(vec.b, 16)
31791 };
31792 });
31793 } else {
31794 basis = this._getEndoBasis(lambda);
31795 }
31796
31797 return {
31798 beta: beta,
31799 lambda: lambda,
31800 basis: basis
31801 };
31802 };
31803
31804 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
31805 // Find roots of for x^2 + x + 1 in F
31806 // Root = (-1 +- Sqrt(-3)) / 2
31807 //
31808 var red = num === this.p ? this.red : BN.mont(num);
31809 var tinv = new BN(2).toRed(red).redInvm();
31810 var ntinv = tinv.redNeg();
31811
31812 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
31813
31814 var l1 = ntinv.redAdd(s).fromRed();
31815 var l2 = ntinv.redSub(s).fromRed();
31816 return [ l1, l2 ];
31817 };
31818
31819 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
31820 // aprxSqrt >= sqrt(this.n)
31821 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
31822
31823 // 3.74
31824 // Run EGCD, until r(L + 1) < aprxSqrt
31825 var u = lambda;
31826 var v = this.n.clone();
31827 var x1 = new BN(1);
31828 var y1 = new BN(0);
31829 var x2 = new BN(0);
31830 var y2 = new BN(1);
31831
31832 // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
31833 var a0;
31834 var b0;
31835 // First vector
31836 var a1;
31837 var b1;
31838 // Second vector
31839 var a2;
31840 var b2;
31841
31842 var prevR;
31843 var i = 0;
31844 var r;
31845 var x;
31846 while (u.cmpn(0) !== 0) {
31847 var q = v.div(u);
31848 r = v.sub(q.mul(u));
31849 x = x2.sub(q.mul(x1));
31850 var y = y2.sub(q.mul(y1));
31851
31852 if (!a1 && r.cmp(aprxSqrt) < 0) {
31853 a0 = prevR.neg();
31854 b0 = x1;
31855 a1 = r.neg();
31856 b1 = x;
31857 } else if (a1 && ++i === 2) {
31858 break;
31859 }
31860 prevR = r;
31861
31862 v = u;
31863 u = r;
31864 x2 = x1;
31865 x1 = x;
31866 y2 = y1;
31867 y1 = y;
31868 }
31869 a2 = r.neg();
31870 b2 = x;
31871
31872 var len1 = a1.sqr().add(b1.sqr());
31873 var len2 = a2.sqr().add(b2.sqr());
31874 if (len2.cmp(len1) >= 0) {
31875 a2 = a0;
31876 b2 = b0;
31877 }
31878
31879 // Normalize signs
31880 if (a1.negative) {
31881 a1 = a1.neg();
31882 b1 = b1.neg();
31883 }
31884 if (a2.negative) {
31885 a2 = a2.neg();
31886 b2 = b2.neg();
31887 }
31888
31889 return [
31890 { a: a1, b: b1 },
31891 { a: a2, b: b2 }
31892 ];
31893 };
31894
31895 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
31896 var basis = this.endo.basis;
31897 var v1 = basis[0];
31898 var v2 = basis[1];
31899
31900 var c1 = v2.b.mul(k).divRound(this.n);
31901 var c2 = v1.b.neg().mul(k).divRound(this.n);
31902
31903 var p1 = c1.mul(v1.a);
31904 var p2 = c2.mul(v2.a);
31905 var q1 = c1.mul(v1.b);
31906 var q2 = c2.mul(v2.b);
31907
31908 // Calculate answer
31909 var k1 = k.sub(p1).sub(p2);
31910 var k2 = q1.add(q2).neg();
31911 return { k1: k1, k2: k2 };
31912 };
31913
31914 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
31915 x = new BN(x, 16);
31916 if (!x.red)
31917 x = x.toRed(this.red);
31918
31919 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
31920 var y = y2.redSqrt();
31921 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
31922 throw new Error('invalid point');
31923
31924 // XXX Is there any way to tell if the number is odd without converting it
31925 // to non-red form?
31926 var isOdd = y.fromRed().isOdd();
31927 if (odd && !isOdd || !odd && isOdd)
31928 y = y.redNeg();
31929
31930 return this.point(x, y);
31931 };
31932
31933 ShortCurve.prototype.validate = function validate(point) {
31934 if (point.inf)
31935 return true;
31936
31937 var x = point.x;
31938 var y = point.y;
31939
31940 var ax = this.a.redMul(x);
31941 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
31942 return y.redSqr().redISub(rhs).cmpn(0) === 0;
31943 };
31944
31945 ShortCurve.prototype._endoWnafMulAdd =
31946 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
31947 var npoints = this._endoWnafT1;
31948 var ncoeffs = this._endoWnafT2;
31949 for (var i = 0; i < points.length; i++) {
31950 var split = this._endoSplit(coeffs[i]);
31951 var p = points[i];
31952 var beta = p._getBeta();
31953
31954 if (split.k1.negative) {
31955 split.k1.ineg();
31956 p = p.neg(true);
31957 }
31958 if (split.k2.negative) {
31959 split.k2.ineg();
31960 beta = beta.neg(true);
31961 }
31962
31963 npoints[i * 2] = p;
31964 npoints[i * 2 + 1] = beta;
31965 ncoeffs[i * 2] = split.k1;
31966 ncoeffs[i * 2 + 1] = split.k2;
31967 }
31968 var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
31969
31970 // Clean-up references to points and coefficients
31971 for (var j = 0; j < i * 2; j++) {
31972 npoints[j] = null;
31973 ncoeffs[j] = null;
31974 }
31975 return res;
31976 };
31977
31978 function Point(curve, x, y, isRed) {
31979 Base.BasePoint.call(this, curve, 'affine');
31980 if (x === null && y === null) {
31981 this.x = null;
31982 this.y = null;
31983 this.inf = true;
31984 } else {
31985 this.x = new BN(x, 16);
31986 this.y = new BN(y, 16);
31987 // Force redgomery representation when loading from JSON
31988 if (isRed) {
31989 this.x.forceRed(this.curve.red);
31990 this.y.forceRed(this.curve.red);
31991 }
31992 if (!this.x.red)
31993 this.x = this.x.toRed(this.curve.red);
31994 if (!this.y.red)
31995 this.y = this.y.toRed(this.curve.red);
31996 this.inf = false;
31997 }
31998 }
31999 inherits(Point, Base.BasePoint);
32000
32001 ShortCurve.prototype.point = function point(x, y, isRed) {
32002 return new Point(this, x, y, isRed);
32003 };
32004
32005 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
32006 return Point.fromJSON(this, obj, red);
32007 };
32008
32009 Point.prototype._getBeta = function _getBeta() {
32010 if (!this.curve.endo)
32011 return;
32012
32013 var pre = this.precomputed;
32014 if (pre && pre.beta)
32015 return pre.beta;
32016
32017 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
32018 if (pre) {
32019 var curve = this.curve;
32020 var endoMul = function(p) {
32021 return curve.point(p.x.redMul(curve.endo.beta), p.y);
32022 };
32023 pre.beta = beta;
32024 beta.precomputed = {
32025 beta: null,
32026 naf: pre.naf && {
32027 wnd: pre.naf.wnd,
32028 points: pre.naf.points.map(endoMul)
32029 },
32030 doubles: pre.doubles && {
32031 step: pre.doubles.step,
32032 points: pre.doubles.points.map(endoMul)
32033 }
32034 };
32035 }
32036 return beta;
32037 };
32038
32039 Point.prototype.toJSON = function toJSON() {
32040 if (!this.precomputed)
32041 return [ this.x, this.y ];
32042
32043 return [ this.x, this.y, this.precomputed && {
32044 doubles: this.precomputed.doubles && {
32045 step: this.precomputed.doubles.step,
32046 points: this.precomputed.doubles.points.slice(1)
32047 },
32048 naf: this.precomputed.naf && {
32049 wnd: this.precomputed.naf.wnd,
32050 points: this.precomputed.naf.points.slice(1)
32051 }
32052 } ];
32053 };
32054
32055 Point.fromJSON = function fromJSON(curve, obj, red) {
32056 if (typeof obj === 'string')
32057 obj = JSON.parse(obj);
32058 var res = curve.point(obj[0], obj[1], red);
32059 if (!obj[2])
32060 return res;
32061
32062 function obj2point(obj) {
32063 return curve.point(obj[0], obj[1], red);
32064 }
32065
32066 var pre = obj[2];
32067 res.precomputed = {
32068 beta: null,
32069 doubles: pre.doubles && {
32070 step: pre.doubles.step,
32071 points: [ res ].concat(pre.doubles.points.map(obj2point))
32072 },
32073 naf: pre.naf && {
32074 wnd: pre.naf.wnd,
32075 points: [ res ].concat(pre.naf.points.map(obj2point))
32076 }
32077 };
32078 return res;
32079 };
32080
32081 Point.prototype.inspect = function inspect() {
32082 if (this.isInfinity())
32083 return '<EC Point Infinity>';
32084 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
32085 ' y: ' + this.y.fromRed().toString(16, 2) + '>';
32086 };
32087
32088 Point.prototype.isInfinity = function isInfinity() {
32089 return this.inf;
32090 };
32091
32092 Point.prototype.add = function add(p) {
32093 // O + P = P
32094 if (this.inf)
32095 return p;
32096
32097 // P + O = P
32098 if (p.inf)
32099 return this;
32100
32101 // P + P = 2P
32102 if (this.eq(p))
32103 return this.dbl();
32104
32105 // P + (-P) = O
32106 if (this.neg().eq(p))
32107 return this.curve.point(null, null);
32108
32109 // P + Q = O
32110 if (this.x.cmp(p.x) === 0)
32111 return this.curve.point(null, null);
32112
32113 var c = this.y.redSub(p.y);
32114 if (c.cmpn(0) !== 0)
32115 c = c.redMul(this.x.redSub(p.x).redInvm());
32116 var nx = c.redSqr().redISub(this.x).redISub(p.x);
32117 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
32118 return this.curve.point(nx, ny);
32119 };
32120
32121 Point.prototype.dbl = function dbl() {
32122 if (this.inf)
32123 return this;
32124
32125 // 2P = O
32126 var ys1 = this.y.redAdd(this.y);
32127 if (ys1.cmpn(0) === 0)
32128 return this.curve.point(null, null);
32129
32130 var a = this.curve.a;
32131
32132 var x2 = this.x.redSqr();
32133 var dyinv = ys1.redInvm();
32134 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
32135
32136 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
32137 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
32138 return this.curve.point(nx, ny);
32139 };
32140
32141 Point.prototype.getX = function getX() {
32142 return this.x.fromRed();
32143 };
32144
32145 Point.prototype.getY = function getY() {
32146 return this.y.fromRed();
32147 };
32148
32149 Point.prototype.mul = function mul(k) {
32150 k = new BN(k, 16);
32151
32152 if (this._hasDoubles(k))
32153 return this.curve._fixedNafMul(this, k);
32154 else if (this.curve.endo)
32155 return this.curve._endoWnafMulAdd([ this ], [ k ]);
32156 else
32157 return this.curve._wnafMul(this, k);
32158 };
32159
32160 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
32161 var points = [ this, p2 ];
32162 var coeffs = [ k1, k2 ];
32163 if (this.curve.endo)
32164 return this.curve._endoWnafMulAdd(points, coeffs);
32165 else
32166 return this.curve._wnafMulAdd(1, points, coeffs, 2);
32167 };
32168
32169 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
32170 var points = [ this, p2 ];
32171 var coeffs = [ k1, k2 ];
32172 if (this.curve.endo)
32173 return this.curve._endoWnafMulAdd(points, coeffs, true);
32174 else
32175 return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
32176 };
32177
32178 Point.prototype.eq = function eq(p) {
32179 return this === p ||
32180 this.inf === p.inf &&
32181 (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
32182 };
32183
32184 Point.prototype.neg = function neg(_precompute) {
32185 if (this.inf)
32186 return this;
32187
32188 var res = this.curve.point(this.x, this.y.redNeg());
32189 if (_precompute && this.precomputed) {
32190 var pre = this.precomputed;
32191 var negate = function(p) {
32192 return p.neg();
32193 };
32194 res.precomputed = {
32195 naf: pre.naf && {
32196 wnd: pre.naf.wnd,
32197 points: pre.naf.points.map(negate)
32198 },
32199 doubles: pre.doubles && {
32200 step: pre.doubles.step,
32201 points: pre.doubles.points.map(negate)
32202 }
32203 };
32204 }
32205 return res;
32206 };
32207
32208 Point.prototype.toJ = function toJ() {
32209 if (this.inf)
32210 return this.curve.jpoint(null, null, null);
32211
32212 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
32213 return res;
32214 };
32215
32216 function JPoint(curve, x, y, z) {
32217 Base.BasePoint.call(this, curve, 'jacobian');
32218 if (x === null && y === null && z === null) {
32219 this.x = this.curve.one;
32220 this.y = this.curve.one;
32221 this.z = new BN(0);
32222 } else {
32223 this.x = new BN(x, 16);
32224 this.y = new BN(y, 16);
32225 this.z = new BN(z, 16);
32226 }
32227 if (!this.x.red)
32228 this.x = this.x.toRed(this.curve.red);
32229 if (!this.y.red)
32230 this.y = this.y.toRed(this.curve.red);
32231 if (!this.z.red)
32232 this.z = this.z.toRed(this.curve.red);
32233
32234 this.zOne = this.z === this.curve.one;
32235 }
32236 inherits(JPoint, Base.BasePoint);
32237
32238 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
32239 return new JPoint(this, x, y, z);
32240 };
32241
32242 JPoint.prototype.toP = function toP() {
32243 if (this.isInfinity())
32244 return this.curve.point(null, null);
32245
32246 var zinv = this.z.redInvm();
32247 var zinv2 = zinv.redSqr();
32248 var ax = this.x.redMul(zinv2);
32249 var ay = this.y.redMul(zinv2).redMul(zinv);
32250
32251 return this.curve.point(ax, ay);
32252 };
32253
32254 JPoint.prototype.neg = function neg() {
32255 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
32256 };
32257
32258 JPoint.prototype.add = function add(p) {
32259 // O + P = P
32260 if (this.isInfinity())
32261 return p;
32262
32263 // P + O = P
32264 if (p.isInfinity())
32265 return this;
32266
32267 // 12M + 4S + 7A
32268 var pz2 = p.z.redSqr();
32269 var z2 = this.z.redSqr();
32270 var u1 = this.x.redMul(pz2);
32271 var u2 = p.x.redMul(z2);
32272 var s1 = this.y.redMul(pz2.redMul(p.z));
32273 var s2 = p.y.redMul(z2.redMul(this.z));
32274
32275 var h = u1.redSub(u2);
32276 var r = s1.redSub(s2);
32277 if (h.cmpn(0) === 0) {
32278 if (r.cmpn(0) !== 0)
32279 return this.curve.jpoint(null, null, null);
32280 else
32281 return this.dbl();
32282 }
32283
32284 var h2 = h.redSqr();
32285 var h3 = h2.redMul(h);
32286 var v = u1.redMul(h2);
32287
32288 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
32289 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
32290 var nz = this.z.redMul(p.z).redMul(h);
32291
32292 return this.curve.jpoint(nx, ny, nz);
32293 };
32294
32295 JPoint.prototype.mixedAdd = function mixedAdd(p) {
32296 // O + P = P
32297 if (this.isInfinity())
32298 return p.toJ();
32299
32300 // P + O = P
32301 if (p.isInfinity())
32302 return this;
32303
32304 // 8M + 3S + 7A
32305 var z2 = this.z.redSqr();
32306 var u1 = this.x;
32307 var u2 = p.x.redMul(z2);
32308 var s1 = this.y;
32309 var s2 = p.y.redMul(z2).redMul(this.z);
32310
32311 var h = u1.redSub(u2);
32312 var r = s1.redSub(s2);
32313 if (h.cmpn(0) === 0) {
32314 if (r.cmpn(0) !== 0)
32315 return this.curve.jpoint(null, null, null);
32316 else
32317 return this.dbl();
32318 }
32319
32320 var h2 = h.redSqr();
32321 var h3 = h2.redMul(h);
32322 var v = u1.redMul(h2);
32323
32324 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
32325 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
32326 var nz = this.z.redMul(h);
32327
32328 return this.curve.jpoint(nx, ny, nz);
32329 };
32330
32331 JPoint.prototype.dblp = function dblp(pow) {
32332 if (pow === 0)
32333 return this;
32334 if (this.isInfinity())
32335 return this;
32336 if (!pow)
32337 return this.dbl();
32338
32339 if (this.curve.zeroA || this.curve.threeA) {
32340 var r = this;
32341 for (var i = 0; i < pow; i++)
32342 r = r.dbl();
32343 return r;
32344 }
32345
32346 // 1M + 2S + 1A + N * (4S + 5M + 8A)
32347 // N = 1 => 6M + 6S + 9A
32348 var a = this.curve.a;
32349 var tinv = this.curve.tinv;
32350
32351 var jx = this.x;
32352 var jy = this.y;
32353 var jz = this.z;
32354 var jz4 = jz.redSqr().redSqr();
32355
32356 // Reuse results
32357 var jyd = jy.redAdd(jy);
32358 for (var i = 0; i < pow; i++) {
32359 var jx2 = jx.redSqr();
32360 var jyd2 = jyd.redSqr();
32361 var jyd4 = jyd2.redSqr();
32362 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
32363
32364 var t1 = jx.redMul(jyd2);
32365 var nx = c.redSqr().redISub(t1.redAdd(t1));
32366 var t2 = t1.redISub(nx);
32367 var dny = c.redMul(t2);
32368 dny = dny.redIAdd(dny).redISub(jyd4);
32369 var nz = jyd.redMul(jz);
32370 if (i + 1 < pow)
32371 jz4 = jz4.redMul(jyd4);
32372
32373 jx = nx;
32374 jz = nz;
32375 jyd = dny;
32376 }
32377
32378 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
32379 };
32380
32381 JPoint.prototype.dbl = function dbl() {
32382 if (this.isInfinity())
32383 return this;
32384
32385 if (this.curve.zeroA)
32386 return this._zeroDbl();
32387 else if (this.curve.threeA)
32388 return this._threeDbl();
32389 else
32390 return this._dbl();
32391 };
32392
32393 JPoint.prototype._zeroDbl = function _zeroDbl() {
32394 var nx;
32395 var ny;
32396 var nz;
32397 // Z = 1
32398 if (this.zOne) {
32399 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
32400 // #doubling-mdbl-2007-bl
32401 // 1M + 5S + 14A
32402
32403 // XX = X1^2
32404 var xx = this.x.redSqr();
32405 // YY = Y1^2
32406 var yy = this.y.redSqr();
32407 // YYYY = YY^2
32408 var yyyy = yy.redSqr();
32409 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
32410 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32411 s = s.redIAdd(s);
32412 // M = 3 * XX + a; a = 0
32413 var m = xx.redAdd(xx).redIAdd(xx);
32414 // T = M ^ 2 - 2*S
32415 var t = m.redSqr().redISub(s).redISub(s);
32416
32417 // 8 * YYYY
32418 var yyyy8 = yyyy.redIAdd(yyyy);
32419 yyyy8 = yyyy8.redIAdd(yyyy8);
32420 yyyy8 = yyyy8.redIAdd(yyyy8);
32421
32422 // X3 = T
32423 nx = t;
32424 // Y3 = M * (S - T) - 8 * YYYY
32425 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
32426 // Z3 = 2*Y1
32427 nz = this.y.redAdd(this.y);
32428 } else {
32429 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
32430 // #doubling-dbl-2009-l
32431 // 2M + 5S + 13A
32432
32433 // A = X1^2
32434 var a = this.x.redSqr();
32435 // B = Y1^2
32436 var b = this.y.redSqr();
32437 // C = B^2
32438 var c = b.redSqr();
32439 // D = 2 * ((X1 + B)^2 - A - C)
32440 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
32441 d = d.redIAdd(d);
32442 // E = 3 * A
32443 var e = a.redAdd(a).redIAdd(a);
32444 // F = E^2
32445 var f = e.redSqr();
32446
32447 // 8 * C
32448 var c8 = c.redIAdd(c);
32449 c8 = c8.redIAdd(c8);
32450 c8 = c8.redIAdd(c8);
32451
32452 // X3 = F - 2 * D
32453 nx = f.redISub(d).redISub(d);
32454 // Y3 = E * (D - X3) - 8 * C
32455 ny = e.redMul(d.redISub(nx)).redISub(c8);
32456 // Z3 = 2 * Y1 * Z1
32457 nz = this.y.redMul(this.z);
32458 nz = nz.redIAdd(nz);
32459 }
32460
32461 return this.curve.jpoint(nx, ny, nz);
32462 };
32463
32464 JPoint.prototype._threeDbl = function _threeDbl() {
32465 var nx;
32466 var ny;
32467 var nz;
32468 // Z = 1
32469 if (this.zOne) {
32470 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
32471 // #doubling-mdbl-2007-bl
32472 // 1M + 5S + 15A
32473
32474 // XX = X1^2
32475 var xx = this.x.redSqr();
32476 // YY = Y1^2
32477 var yy = this.y.redSqr();
32478 // YYYY = YY^2
32479 var yyyy = yy.redSqr();
32480 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
32481 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32482 s = s.redIAdd(s);
32483 // M = 3 * XX + a
32484 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
32485 // T = M^2 - 2 * S
32486 var t = m.redSqr().redISub(s).redISub(s);
32487 // X3 = T
32488 nx = t;
32489 // Y3 = M * (S - T) - 8 * YYYY
32490 var yyyy8 = yyyy.redIAdd(yyyy);
32491 yyyy8 = yyyy8.redIAdd(yyyy8);
32492 yyyy8 = yyyy8.redIAdd(yyyy8);
32493 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
32494 // Z3 = 2 * Y1
32495 nz = this.y.redAdd(this.y);
32496 } else {
32497 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
32498 // 3M + 5S
32499
32500 // delta = Z1^2
32501 var delta = this.z.redSqr();
32502 // gamma = Y1^2
32503 var gamma = this.y.redSqr();
32504 // beta = X1 * gamma
32505 var beta = this.x.redMul(gamma);
32506 // alpha = 3 * (X1 - delta) * (X1 + delta)
32507 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
32508 alpha = alpha.redAdd(alpha).redIAdd(alpha);
32509 // X3 = alpha^2 - 8 * beta
32510 var beta4 = beta.redIAdd(beta);
32511 beta4 = beta4.redIAdd(beta4);
32512 var beta8 = beta4.redAdd(beta4);
32513 nx = alpha.redSqr().redISub(beta8);
32514 // Z3 = (Y1 + Z1)^2 - gamma - delta
32515 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
32516 // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
32517 var ggamma8 = gamma.redSqr();
32518 ggamma8 = ggamma8.redIAdd(ggamma8);
32519 ggamma8 = ggamma8.redIAdd(ggamma8);
32520 ggamma8 = ggamma8.redIAdd(ggamma8);
32521 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
32522 }
32523
32524 return this.curve.jpoint(nx, ny, nz);
32525 };
32526
32527 JPoint.prototype._dbl = function _dbl() {
32528 var a = this.curve.a;
32529
32530 // 4M + 6S + 10A
32531 var jx = this.x;
32532 var jy = this.y;
32533 var jz = this.z;
32534 var jz4 = jz.redSqr().redSqr();
32535
32536 var jx2 = jx.redSqr();
32537 var jy2 = jy.redSqr();
32538
32539 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
32540
32541 var jxd4 = jx.redAdd(jx);
32542 jxd4 = jxd4.redIAdd(jxd4);
32543 var t1 = jxd4.redMul(jy2);
32544 var nx = c.redSqr().redISub(t1.redAdd(t1));
32545 var t2 = t1.redISub(nx);
32546
32547 var jyd8 = jy2.redSqr();
32548 jyd8 = jyd8.redIAdd(jyd8);
32549 jyd8 = jyd8.redIAdd(jyd8);
32550 jyd8 = jyd8.redIAdd(jyd8);
32551 var ny = c.redMul(t2).redISub(jyd8);
32552 var nz = jy.redAdd(jy).redMul(jz);
32553
32554 return this.curve.jpoint(nx, ny, nz);
32555 };
32556
32557 JPoint.prototype.trpl = function trpl() {
32558 if (!this.curve.zeroA)
32559 return this.dbl().add(this);
32560
32561 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
32562 // 5M + 10S + ...
32563
32564 // XX = X1^2
32565 var xx = this.x.redSqr();
32566 // YY = Y1^2
32567 var yy = this.y.redSqr();
32568 // ZZ = Z1^2
32569 var zz = this.z.redSqr();
32570 // YYYY = YY^2
32571 var yyyy = yy.redSqr();
32572 // M = 3 * XX + a * ZZ2; a = 0
32573 var m = xx.redAdd(xx).redIAdd(xx);
32574 // MM = M^2
32575 var mm = m.redSqr();
32576 // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
32577 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32578 e = e.redIAdd(e);
32579 e = e.redAdd(e).redIAdd(e);
32580 e = e.redISub(mm);
32581 // EE = E^2
32582 var ee = e.redSqr();
32583 // T = 16*YYYY
32584 var t = yyyy.redIAdd(yyyy);
32585 t = t.redIAdd(t);
32586 t = t.redIAdd(t);
32587 t = t.redIAdd(t);
32588 // U = (M + E)^2 - MM - EE - T
32589 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
32590 // X3 = 4 * (X1 * EE - 4 * YY * U)
32591 var yyu4 = yy.redMul(u);
32592 yyu4 = yyu4.redIAdd(yyu4);
32593 yyu4 = yyu4.redIAdd(yyu4);
32594 var nx = this.x.redMul(ee).redISub(yyu4);
32595 nx = nx.redIAdd(nx);
32596 nx = nx.redIAdd(nx);
32597 // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
32598 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
32599 ny = ny.redIAdd(ny);
32600 ny = ny.redIAdd(ny);
32601 ny = ny.redIAdd(ny);
32602 // Z3 = (Z1 + E)^2 - ZZ - EE
32603 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
32604
32605 return this.curve.jpoint(nx, ny, nz);
32606 };
32607
32608 JPoint.prototype.mul = function mul(k, kbase) {
32609 k = new BN(k, kbase);
32610
32611 return this.curve._wnafMul(this, k);
32612 };
32613
32614 JPoint.prototype.eq = function eq(p) {
32615 if (p.type === 'affine')
32616 return this.eq(p.toJ());
32617
32618 if (this === p)
32619 return true;
32620
32621 // x1 * z2^2 == x2 * z1^2
32622 var z2 = this.z.redSqr();
32623 var pz2 = p.z.redSqr();
32624 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
32625 return false;
32626
32627 // y1 * z2^3 == y2 * z1^3
32628 var z3 = z2.redMul(this.z);
32629 var pz3 = pz2.redMul(p.z);
32630 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
32631 };
32632
32633 JPoint.prototype.eqXToP = function eqXToP(x) {
32634 var zs = this.z.redSqr();
32635 var rx = x.toRed(this.curve.red).redMul(zs);
32636 if (this.x.cmp(rx) === 0)
32637 return true;
32638
32639 var xc = x.clone();
32640 var t = this.curve.redN.redMul(zs);
32641 for (;;) {
32642 xc.iadd(this.curve.n);
32643 if (xc.cmp(this.curve.p) >= 0)
32644 return false;
32645
32646 rx.redIAdd(t);
32647 if (this.x.cmp(rx) === 0)
32648 return true;
32649 }
32650 return false;
32651 };
32652
32653 JPoint.prototype.inspect = function inspect() {
32654 if (this.isInfinity())
32655 return '<EC JPoint Infinity>';
32656 return '<EC JPoint x: ' + this.x.toString(16, 2) +
32657 ' y: ' + this.y.toString(16, 2) +
32658 ' z: ' + this.z.toString(16, 2) + '>';
32659 };
32660
32661 JPoint.prototype.isInfinity = function isInfinity() {
32662 // XXX This code assumes that zero is always zero in red
32663 return this.z.cmpn(0) === 0;
32664 };
32665
32666 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],45:[function(require,module,exports){
32667 'use strict';
32668
32669 var curves = exports;
32670
32671 var hash = require('hash.js');
32672 var elliptic = require('../elliptic');
32673
32674 var assert = elliptic.utils.assert;
32675
32676 function PresetCurve(options) {
32677 if (options.type === 'short')
32678 this.curve = new elliptic.curve.short(options);
32679 else if (options.type === 'edwards')
32680 this.curve = new elliptic.curve.edwards(options);
32681 else
32682 this.curve = new elliptic.curve.mont(options);
32683 this.g = this.curve.g;
32684 this.n = this.curve.n;
32685 this.hash = options.hash;
32686
32687 assert(this.g.validate(), 'Invalid curve');
32688 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
32689 }
32690 curves.PresetCurve = PresetCurve;
32691
32692 function defineCurve(name, options) {
32693 Object.defineProperty(curves, name, {
32694 configurable: true,
32695 enumerable: true,
32696 get: function() {
32697 var curve = new PresetCurve(options);
32698 Object.defineProperty(curves, name, {
32699 configurable: true,
32700 enumerable: true,
32701 value: curve
32702 });
32703 return curve;
32704 }
32705 });
32706 }
32707
32708 defineCurve('p192', {
32709 type: 'short',
32710 prime: 'p192',
32711 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
32712 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
32713 b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
32714 n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
32715 hash: hash.sha256,
32716 gRed: false,
32717 g: [
32718 '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
32719 '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
32720 ]
32721 });
32722
32723 defineCurve('p224', {
32724 type: 'short',
32725 prime: 'p224',
32726 p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
32727 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
32728 b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
32729 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
32730 hash: hash.sha256,
32731 gRed: false,
32732 g: [
32733 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
32734 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
32735 ]
32736 });
32737
32738 defineCurve('p256', {
32739 type: 'short',
32740 prime: null,
32741 p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
32742 a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
32743 b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
32744 n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
32745 hash: hash.sha256,
32746 gRed: false,
32747 g: [
32748 '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
32749 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
32750 ]
32751 });
32752
32753 defineCurve('p384', {
32754 type: 'short',
32755 prime: null,
32756 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32757 'fffffffe ffffffff 00000000 00000000 ffffffff',
32758 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32759 'fffffffe ffffffff 00000000 00000000 fffffffc',
32760 b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
32761 '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
32762 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
32763 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
32764 hash: hash.sha384,
32765 gRed: false,
32766 g: [
32767 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
32768 '5502f25d bf55296c 3a545e38 72760ab7',
32769 '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
32770 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
32771 ]
32772 });
32773
32774 defineCurve('p521', {
32775 type: 'short',
32776 prime: null,
32777 p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32778 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32779 'ffffffff ffffffff ffffffff ffffffff ffffffff',
32780 a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32781 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32782 'ffffffff ffffffff ffffffff ffffffff fffffffc',
32783 b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
32784 '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
32785 '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
32786 n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32787 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
32788 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
32789 hash: hash.sha512,
32790 gRed: false,
32791 g: [
32792 '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
32793 '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
32794 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
32795 '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
32796 '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
32797 '3fad0761 353c7086 a272c240 88be9476 9fd16650'
32798 ]
32799 });
32800
32801 defineCurve('curve25519', {
32802 type: 'mont',
32803 prime: 'p25519',
32804 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
32805 a: '76d06',
32806 b: '1',
32807 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
32808 hash: hash.sha256,
32809 gRed: false,
32810 g: [
32811 '9'
32812 ]
32813 });
32814
32815 defineCurve('ed25519', {
32816 type: 'edwards',
32817 prime: 'p25519',
32818 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
32819 a: '-1',
32820 c: '1',
32821 // -121665 * (121666^(-1)) (mod P)
32822 d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
32823 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
32824 hash: hash.sha256,
32825 gRed: false,
32826 g: [
32827 '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
32828
32829 // 4/5
32830 '6666666666666666666666666666666666666666666666666666666666666658'
32831 ]
32832 });
32833
32834 var pre;
32835 try {
32836 pre = require('./precomputed/secp256k1');
32837 } catch (e) {
32838 pre = undefined;
32839 }
32840
32841 defineCurve('secp256k1', {
32842 type: 'short',
32843 prime: 'k256',
32844 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
32845 a: '0',
32846 b: '7',
32847 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
32848 h: '1',
32849 hash: hash.sha256,
32850
32851 // Precomputed endomorphism
32852 beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
32853 lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
32854 basis: [
32855 {
32856 a: '3086d221a7d46bcde86c90e49284eb15',
32857 b: '-e4437ed6010e88286f547fa90abfe4c3'
32858 },
32859 {
32860 a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
32861 b: '3086d221a7d46bcde86c90e49284eb15'
32862 }
32863 ],
32864
32865 gRed: false,
32866 g: [
32867 '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
32868 '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
32869 pre
32870 ]
32871 });
32872
32873 },{"../elliptic":39,"./precomputed/secp256k1":53,"hash.js":57}],46:[function(require,module,exports){
32874 'use strict';
32875
32876 var BN = require('bn.js');
32877 var elliptic = require('../../elliptic');
32878 var utils = elliptic.utils;
32879 var assert = utils.assert;
32880
32881 var KeyPair = require('./key');
32882 var Signature = require('./signature');
32883
32884 function EC(options) {
32885 if (!(this instanceof EC))
32886 return new EC(options);
32887
32888 // Shortcut `elliptic.ec(curve-name)`
32889 if (typeof options === 'string') {
32890 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
32891
32892 options = elliptic.curves[options];
32893 }
32894
32895 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
32896 if (options instanceof elliptic.curves.PresetCurve)
32897 options = { curve: options };
32898
32899 this.curve = options.curve.curve;
32900 this.n = this.curve.n;
32901 this.nh = this.n.ushrn(1);
32902 this.g = this.curve.g;
32903
32904 // Point on curve
32905 this.g = options.curve.g;
32906 this.g.precompute(options.curve.n.bitLength() + 1);
32907
32908 // Hash for function for DRBG
32909 this.hash = options.hash || options.curve.hash;
32910 }
32911 module.exports = EC;
32912
32913 EC.prototype.keyPair = function keyPair(options) {
32914 return new KeyPair(this, options);
32915 };
32916
32917 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
32918 return KeyPair.fromPrivate(this, priv, enc);
32919 };
32920
32921 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
32922 return KeyPair.fromPublic(this, pub, enc);
32923 };
32924
32925 EC.prototype.genKeyPair = function genKeyPair(options) {
32926 if (!options)
32927 options = {};
32928
32929 // Instantiate Hmac_DRBG
32930 var drbg = new elliptic.hmacDRBG({
32931 hash: this.hash,
32932 pers: options.pers,
32933 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
32934 nonce: this.n.toArray()
32935 });
32936
32937 var bytes = this.n.byteLength();
32938 var ns2 = this.n.sub(new BN(2));
32939 do {
32940 var priv = new BN(drbg.generate(bytes));
32941 if (priv.cmp(ns2) > 0)
32942 continue;
32943
32944 priv.iaddn(1);
32945 return this.keyFromPrivate(priv);
32946 } while (true);
32947 };
32948
32949 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
32950 var delta = msg.byteLength() * 8 - this.n.bitLength();
32951 if (delta > 0)
32952 msg = msg.ushrn(delta);
32953 if (!truncOnly && msg.cmp(this.n) >= 0)
32954 return msg.sub(this.n);
32955 else
32956 return msg;
32957 };
32958
32959 EC.prototype.sign = function sign(msg, key, enc, options) {
32960 if (typeof enc === 'object') {
32961 options = enc;
32962 enc = null;
32963 }
32964 if (!options)
32965 options = {};
32966
32967 key = this.keyFromPrivate(key, enc);
32968 msg = this._truncateToN(new BN(msg, 16));
32969
32970 // Zero-extend key to provide enough entropy
32971 var bytes = this.n.byteLength();
32972 var bkey = key.getPrivate().toArray('be', bytes);
32973
32974 // Zero-extend nonce to have the same byte size as N
32975 var nonce = msg.toArray('be', bytes);
32976
32977 // Instantiate Hmac_DRBG
32978 var drbg = new elliptic.hmacDRBG({
32979 hash: this.hash,
32980 entropy: bkey,
32981 nonce: nonce,
32982 pers: options.pers,
32983 persEnc: options.persEnc
32984 });
32985
32986 // Number of bytes to generate
32987 var ns1 = this.n.sub(new BN(1));
32988
32989 for (var iter = 0; true; iter++) {
32990 var k = options.k ?
32991 options.k(iter) :
32992 new BN(drbg.generate(this.n.byteLength()));
32993 k = this._truncateToN(k, true);
32994 if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
32995 continue;
32996
32997 var kp = this.g.mul(k);
32998 if (kp.isInfinity())
32999 continue;
33000
33001 var kpX = kp.getX();
33002 var r = kpX.umod(this.n);
33003 if (r.cmpn(0) === 0)
33004 continue;
33005
33006 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
33007 s = s.umod(this.n);
33008 if (s.cmpn(0) === 0)
33009 continue;
33010
33011 var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
33012 (kpX.cmp(r) !== 0 ? 2 : 0);
33013
33014 // Use complement of `s`, if it is > `n / 2`
33015 if (options.canonical && s.cmp(this.nh) > 0) {
33016 s = this.n.sub(s);
33017 recoveryParam ^= 1;
33018 }
33019
33020 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
33021 }
33022 };
33023
33024 EC.prototype.verify = function verify(msg, signature, key, enc) {
33025 msg = this._truncateToN(new BN(msg, 16));
33026 key = this.keyFromPublic(key, enc);
33027 signature = new Signature(signature, 'hex');
33028
33029 // Perform primitive values validation
33030 var r = signature.r;
33031 var s = signature.s;
33032 if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
33033 return false;
33034 if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
33035 return false;
33036
33037 // Validate signature
33038 var sinv = s.invm(this.n);
33039 var u1 = sinv.mul(msg).umod(this.n);
33040 var u2 = sinv.mul(r).umod(this.n);
33041
33042 if (!this.curve._maxwellTrick) {
33043 var p = this.g.mulAdd(u1, key.getPublic(), u2);
33044 if (p.isInfinity())
33045 return false;
33046
33047 return p.getX().umod(this.n).cmp(r) === 0;
33048 }
33049
33050 // NOTE: Greg Maxwell's trick, inspired by:
33051 // https://git.io/vad3K
33052
33053 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
33054 if (p.isInfinity())
33055 return false;
33056
33057 // Compare `p.x` of Jacobian point with `r`,
33058 // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
33059 // inverse of `p.z^2`
33060 return p.eqXToP(r);
33061 };
33062
33063 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
33064 assert((3 & j) === j, 'The recovery param is more than two bits');
33065 signature = new Signature(signature, enc);
33066
33067 var n = this.n;
33068 var e = new BN(msg);
33069 var r = signature.r;
33070 var s = signature.s;
33071
33072 // A set LSB signifies that the y-coordinate is odd
33073 var isYOdd = j & 1;
33074 var isSecondKey = j >> 1;
33075 if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
33076 throw new Error('Unable to find sencond key candinate');
33077
33078 // 1.1. Let x = r + jn.
33079 if (isSecondKey)
33080 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
33081 else
33082 r = this.curve.pointFromX(r, isYOdd);
33083
33084 var rInv = signature.r.invm(n);
33085 var s1 = n.sub(e).mul(rInv).umod(n);
33086 var s2 = s.mul(rInv).umod(n);
33087
33088 // 1.6.1 Compute Q = r^-1 (sR - eG)
33089 // Q = r^-1 (sR + -eG)
33090 return this.g.mulAdd(s1, r, s2);
33091 };
33092
33093 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
33094 signature = new Signature(signature, enc);
33095 if (signature.recoveryParam !== null)
33096 return signature.recoveryParam;
33097
33098 for (var i = 0; i < 4; i++) {
33099 var Qprime;
33100 try {
33101 Qprime = this.recoverPubKey(e, signature, i);
33102 } catch (e) {
33103 continue;
33104 }
33105
33106 if (Qprime.eq(Q))
33107 return i;
33108 }
33109 throw new Error('Unable to find valid recovery factor');
33110 };
33111
33112 },{"../../elliptic":39,"./key":47,"./signature":48,"bn.js":33}],47:[function(require,module,exports){
33113 'use strict';
33114
33115 var BN = require('bn.js');
33116 var elliptic = require('../../elliptic');
33117 var utils = elliptic.utils;
33118 var assert = utils.assert;
33119
33120 function KeyPair(ec, options) {
33121 this.ec = ec;
33122 this.priv = null;
33123 this.pub = null;
33124
33125 // KeyPair(ec, { priv: ..., pub: ... })
33126 if (options.priv)
33127 this._importPrivate(options.priv, options.privEnc);
33128 if (options.pub)
33129 this._importPublic(options.pub, options.pubEnc);
33130 }
33131 module.exports = KeyPair;
33132
33133 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
33134 if (pub instanceof KeyPair)
33135 return pub;
33136
33137 return new KeyPair(ec, {
33138 pub: pub,
33139 pubEnc: enc
33140 });
33141 };
33142
33143 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
33144 if (priv instanceof KeyPair)
33145 return priv;
33146
33147 return new KeyPair(ec, {
33148 priv: priv,
33149 privEnc: enc
33150 });
33151 };
33152
33153 KeyPair.prototype.validate = function validate() {
33154 var pub = this.getPublic();
33155
33156 if (pub.isInfinity())
33157 return { result: false, reason: 'Invalid public key' };
33158 if (!pub.validate())
33159 return { result: false, reason: 'Public key is not a point' };
33160 if (!pub.mul(this.ec.curve.n).isInfinity())
33161 return { result: false, reason: 'Public key * N != O' };
33162
33163 return { result: true, reason: null };
33164 };
33165
33166 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
33167 // compact is optional argument
33168 if (typeof compact === 'string') {
33169 enc = compact;
33170 compact = null;
33171 }
33172
33173 if (!this.pub)
33174 this.pub = this.ec.g.mul(this.priv);
33175
33176 if (!enc)
33177 return this.pub;
33178
33179 return this.pub.encode(enc, compact);
33180 };
33181
33182 KeyPair.prototype.getPrivate = function getPrivate(enc) {
33183 if (enc === 'hex')
33184 return this.priv.toString(16, 2);
33185 else
33186 return this.priv;
33187 };
33188
33189 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
33190 this.priv = new BN(key, enc || 16);
33191
33192 // Ensure that the priv won't be bigger than n, otherwise we may fail
33193 // in fixed multiplication method
33194 this.priv = this.priv.umod(this.ec.curve.n);
33195 };
33196
33197 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
33198 if (key.x || key.y) {
33199 // Montgomery points only have an `x` coordinate.
33200 // Weierstrass/Edwards points on the other hand have both `x` and
33201 // `y` coordinates.
33202 if (this.ec.curve.type === 'mont') {
33203 assert(key.x, 'Need x coordinate');
33204 } else if (this.ec.curve.type === 'short' ||
33205 this.ec.curve.type === 'edwards') {
33206 assert(key.x && key.y, 'Need both x and y coordinate');
33207 }
33208 this.pub = this.ec.curve.point(key.x, key.y);
33209 return;
33210 }
33211 this.pub = this.ec.curve.decodePoint(key, enc);
33212 };
33213
33214 // ECDH
33215 KeyPair.prototype.derive = function derive(pub) {
33216 return pub.mul(this.priv).getX();
33217 };
33218
33219 // ECDSA
33220 KeyPair.prototype.sign = function sign(msg, enc, options) {
33221 return this.ec.sign(msg, this, enc, options);
33222 };
33223
33224 KeyPair.prototype.verify = function verify(msg, signature) {
33225 return this.ec.verify(msg, signature, this);
33226 };
33227
33228 KeyPair.prototype.inspect = function inspect() {
33229 return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
33230 ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
33231 };
33232
33233 },{"../../elliptic":39,"bn.js":33}],48:[function(require,module,exports){
33234 'use strict';
33235
33236 var BN = require('bn.js');
33237
33238 var elliptic = require('../../elliptic');
33239 var utils = elliptic.utils;
33240 var assert = utils.assert;
33241
33242 function Signature(options, enc) {
33243 if (options instanceof Signature)
33244 return options;
33245
33246 if (this._importDER(options, enc))
33247 return;
33248
33249 assert(options.r && options.s, 'Signature without r or s');
33250 this.r = new BN(options.r, 16);
33251 this.s = new BN(options.s, 16);
33252 if (options.recoveryParam === undefined)
33253 this.recoveryParam = null;
33254 else
33255 this.recoveryParam = options.recoveryParam;
33256 }
33257 module.exports = Signature;
33258
33259 function Position() {
33260 this.place = 0;
33261 }
33262
33263 function getLength(buf, p) {
33264 var initial = buf[p.place++];
33265 if (!(initial & 0x80)) {
33266 return initial;
33267 }
33268 var octetLen = initial & 0xf;
33269 var val = 0;
33270 for (var i = 0, off = p.place; i < octetLen; i++, off++) {
33271 val <<= 8;
33272 val |= buf[off];
33273 }
33274 p.place = off;
33275 return val;
33276 }
33277
33278 function rmPadding(buf) {
33279 var i = 0;
33280 var len = buf.length - 1;
33281 while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
33282 i++;
33283 }
33284 if (i === 0) {
33285 return buf;
33286 }
33287 return buf.slice(i);
33288 }
33289
33290 Signature.prototype._importDER = function _importDER(data, enc) {
33291 data = utils.toArray(data, enc);
33292 var p = new Position();
33293 if (data[p.place++] !== 0x30) {
33294 return false;
33295 }
33296 var len = getLength(data, p);
33297 if ((len + p.place) !== data.length) {
33298 return false;
33299 }
33300 if (data[p.place++] !== 0x02) {
33301 return false;
33302 }
33303 var rlen = getLength(data, p);
33304 var r = data.slice(p.place, rlen + p.place);
33305 p.place += rlen;
33306 if (data[p.place++] !== 0x02) {
33307 return false;
33308 }
33309 var slen = getLength(data, p);
33310 if (data.length !== slen + p.place) {
33311 return false;
33312 }
33313 var s = data.slice(p.place, slen + p.place);
33314 if (r[0] === 0 && (r[1] & 0x80)) {
33315 r = r.slice(1);
33316 }
33317 if (s[0] === 0 && (s[1] & 0x80)) {
33318 s = s.slice(1);
33319 }
33320
33321 this.r = new BN(r);
33322 this.s = new BN(s);
33323 this.recoveryParam = null;
33324
33325 return true;
33326 };
33327
33328 function constructLength(arr, len) {
33329 if (len < 0x80) {
33330 arr.push(len);
33331 return;
33332 }
33333 var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
33334 arr.push(octets | 0x80);
33335 while (--octets) {
33336 arr.push((len >>> (octets << 3)) & 0xff);
33337 }
33338 arr.push(len);
33339 }
33340
33341 Signature.prototype.toDER = function toDER(enc) {
33342 var r = this.r.toArray();
33343 var s = this.s.toArray();
33344
33345 // Pad values
33346 if (r[0] & 0x80)
33347 r = [ 0 ].concat(r);
33348 // Pad values
33349 if (s[0] & 0x80)
33350 s = [ 0 ].concat(s);
33351
33352 r = rmPadding(r);
33353 s = rmPadding(s);
33354
33355 while (!s[0] && !(s[1] & 0x80)) {
33356 s = s.slice(1);
33357 }
33358 var arr = [ 0x02 ];
33359 constructLength(arr, r.length);
33360 arr = arr.concat(r);
33361 arr.push(0x02);
33362 constructLength(arr, s.length);
33363 var backHalf = arr.concat(s);
33364 var res = [ 0x30 ];
33365 constructLength(res, backHalf.length);
33366 res = res.concat(backHalf);
33367 return utils.encode(res, enc);
33368 };
33369
33370 },{"../../elliptic":39,"bn.js":33}],49:[function(require,module,exports){
33371 'use strict';
33372
33373 var hash = require('hash.js');
33374 var elliptic = require('../../elliptic');
33375 var utils = elliptic.utils;
33376 var assert = utils.assert;
33377 var parseBytes = utils.parseBytes;
33378 var KeyPair = require('./key');
33379 var Signature = require('./signature');
33380
33381 function EDDSA(curve) {
33382 assert(curve === 'ed25519', 'only tested with ed25519 so far');
33383
33384 if (!(this instanceof EDDSA))
33385 return new EDDSA(curve);
33386
33387 var curve = elliptic.curves[curve].curve;
33388 this.curve = curve;
33389 this.g = curve.g;
33390 this.g.precompute(curve.n.bitLength() + 1);
33391
33392 this.pointClass = curve.point().constructor;
33393 this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
33394 this.hash = hash.sha512;
33395 }
33396
33397 module.exports = EDDSA;
33398
33399 /**
33400 * @param {Array|String} message - message bytes
33401 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
33402 * @returns {Signature} - signature
33403 */
33404 EDDSA.prototype.sign = function sign(message, secret) {
33405 message = parseBytes(message);
33406 var key = this.keyFromSecret(secret);
33407 var r = this.hashInt(key.messagePrefix(), message);
33408 var R = this.g.mul(r);
33409 var Rencoded = this.encodePoint(R);
33410 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
33411 .mul(key.priv());
33412 var S = r.add(s_).umod(this.curve.n);
33413 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
33414 };
33415
33416 /**
33417 * @param {Array} message - message bytes
33418 * @param {Array|String|Signature} sig - sig bytes
33419 * @param {Array|String|Point|KeyPair} pub - public key
33420 * @returns {Boolean} - true if public key matches sig of message
33421 */
33422 EDDSA.prototype.verify = function verify(message, sig, pub) {
33423 message = parseBytes(message);
33424 sig = this.makeSignature(sig);
33425 var key = this.keyFromPublic(pub);
33426 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
33427 var SG = this.g.mul(sig.S());
33428 var RplusAh = sig.R().add(key.pub().mul(h));
33429 return RplusAh.eq(SG);
33430 };
33431
33432 EDDSA.prototype.hashInt = function hashInt() {
33433 var hash = this.hash();
33434 for (var i = 0; i < arguments.length; i++)
33435 hash.update(arguments[i]);
33436 return utils.intFromLE(hash.digest()).umod(this.curve.n);
33437 };
33438
33439 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
33440 return KeyPair.fromPublic(this, pub);
33441 };
33442
33443 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
33444 return KeyPair.fromSecret(this, secret);
33445 };
33446
33447 EDDSA.prototype.makeSignature = function makeSignature(sig) {
33448 if (sig instanceof Signature)
33449 return sig;
33450 return new Signature(this, sig);
33451 };
33452
33453 /**
33454 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
33455 *
33456 * EDDSA defines methods for encoding and decoding points and integers. These are
33457 * helper convenience methods, that pass along to utility functions implied
33458 * parameters.
33459 *
33460 */
33461 EDDSA.prototype.encodePoint = function encodePoint(point) {
33462 var enc = point.getY().toArray('le', this.encodingLength);
33463 enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
33464 return enc;
33465 };
33466
33467 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
33468 bytes = utils.parseBytes(bytes);
33469
33470 var lastIx = bytes.length - 1;
33471 var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
33472 var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
33473
33474 var y = utils.intFromLE(normed);
33475 return this.curve.pointFromY(y, xIsOdd);
33476 };
33477
33478 EDDSA.prototype.encodeInt = function encodeInt(num) {
33479 return num.toArray('le', this.encodingLength);
33480 };
33481
33482 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
33483 return utils.intFromLE(bytes);
33484 };
33485
33486 EDDSA.prototype.isPoint = function isPoint(val) {
33487 return val instanceof this.pointClass;
33488 };
33489
33490 },{"../../elliptic":39,"./key":50,"./signature":51,"hash.js":57}],50:[function(require,module,exports){
33491 'use strict';
33492
33493 var elliptic = require('../../elliptic');
33494 var utils = elliptic.utils;
33495 var assert = utils.assert;
33496 var parseBytes = utils.parseBytes;
33497 var cachedProperty = utils.cachedProperty;
33498
33499 /**
33500 * @param {EDDSA} eddsa - instance
33501 * @param {Object} params - public/private key parameters
33502 *
33503 * @param {Array<Byte>} [params.secret] - secret seed bytes
33504 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
33505 * @param {Array<Byte>} [params.pub] - public key point encoded as bytes
33506 *
33507 */
33508 function KeyPair(eddsa, params) {
33509 this.eddsa = eddsa;
33510 this._secret = parseBytes(params.secret);
33511 if (eddsa.isPoint(params.pub))
33512 this._pub = params.pub;
33513 else
33514 this._pubBytes = parseBytes(params.pub);
33515 }
33516
33517 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
33518 if (pub instanceof KeyPair)
33519 return pub;
33520 return new KeyPair(eddsa, { pub: pub });
33521 };
33522
33523 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
33524 if (secret instanceof KeyPair)
33525 return secret;
33526 return new KeyPair(eddsa, { secret: secret });
33527 };
33528
33529 KeyPair.prototype.secret = function secret() {
33530 return this._secret;
33531 };
33532
33533 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
33534 return this.eddsa.encodePoint(this.pub());
33535 });
33536
33537 cachedProperty(KeyPair, 'pub', function pub() {
33538 if (this._pubBytes)
33539 return this.eddsa.decodePoint(this._pubBytes);
33540 return this.eddsa.g.mul(this.priv());
33541 });
33542
33543 cachedProperty(KeyPair, 'privBytes', function privBytes() {
33544 var eddsa = this.eddsa;
33545 var hash = this.hash();
33546 var lastIx = eddsa.encodingLength - 1;
33547
33548 var a = hash.slice(0, eddsa.encodingLength);
33549 a[0] &= 248;
33550 a[lastIx] &= 127;
33551 a[lastIx] |= 64;
33552
33553 return a;
33554 });
33555
33556 cachedProperty(KeyPair, 'priv', function priv() {
33557 return this.eddsa.decodeInt(this.privBytes());
33558 });
33559
33560 cachedProperty(KeyPair, 'hash', function hash() {
33561 return this.eddsa.hash().update(this.secret()).digest();
33562 });
33563
33564 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
33565 return this.hash().slice(this.eddsa.encodingLength);
33566 });
33567
33568 KeyPair.prototype.sign = function sign(message) {
33569 assert(this._secret, 'KeyPair can only verify');
33570 return this.eddsa.sign(message, this);
33571 };
33572
33573 KeyPair.prototype.verify = function verify(message, sig) {
33574 return this.eddsa.verify(message, sig, this);
33575 };
33576
33577 KeyPair.prototype.getSecret = function getSecret(enc) {
33578 assert(this._secret, 'KeyPair is public only');
33579 return utils.encode(this.secret(), enc);
33580 };
33581
33582 KeyPair.prototype.getPublic = function getPublic(enc) {
33583 return utils.encode(this.pubBytes(), enc);
33584 };
33585
33586 module.exports = KeyPair;
33587
33588 },{"../../elliptic":39}],51:[function(require,module,exports){
33589 'use strict';
33590
33591 var BN = require('bn.js');
33592 var elliptic = require('../../elliptic');
33593 var utils = elliptic.utils;
33594 var assert = utils.assert;
33595 var cachedProperty = utils.cachedProperty;
33596 var parseBytes = utils.parseBytes;
33597
33598 /**
33599 * @param {EDDSA} eddsa - eddsa instance
33600 * @param {Array<Bytes>|Object} sig -
33601 * @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
33602 * @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
33603 * @param {Array<Bytes>} [sig.Rencoded] - R point encoded
33604 * @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
33605 */
33606 function Signature(eddsa, sig) {
33607 this.eddsa = eddsa;
33608
33609 if (typeof sig !== 'object')
33610 sig = parseBytes(sig);
33611
33612 if (Array.isArray(sig)) {
33613 sig = {
33614 R: sig.slice(0, eddsa.encodingLength),
33615 S: sig.slice(eddsa.encodingLength)
33616 };
33617 }
33618
33619 assert(sig.R && sig.S, 'Signature without R or S');
33620
33621 if (eddsa.isPoint(sig.R))
33622 this._R = sig.R;
33623 if (sig.S instanceof BN)
33624 this._S = sig.S;
33625
33626 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
33627 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
33628 }
33629
33630 cachedProperty(Signature, 'S', function S() {
33631 return this.eddsa.decodeInt(this.Sencoded());
33632 });
33633
33634 cachedProperty(Signature, 'R', function R() {
33635 return this.eddsa.decodePoint(this.Rencoded());
33636 });
33637
33638 cachedProperty(Signature, 'Rencoded', function Rencoded() {
33639 return this.eddsa.encodePoint(this.R());
33640 });
33641
33642 cachedProperty(Signature, 'Sencoded', function Sencoded() {
33643 return this.eddsa.encodeInt(this.S());
33644 });
33645
33646 Signature.prototype.toBytes = function toBytes() {
33647 return this.Rencoded().concat(this.Sencoded());
33648 };
33649
33650 Signature.prototype.toHex = function toHex() {
33651 return utils.encode(this.toBytes(), 'hex').toUpperCase();
33652 };
33653
33654 module.exports = Signature;
33655
33656 },{"../../elliptic":39,"bn.js":33}],52:[function(require,module,exports){
33657 'use strict';
33658
33659 var hash = require('hash.js');
33660 var elliptic = require('../elliptic');
33661 var utils = elliptic.utils;
33662 var assert = utils.assert;
33663
33664 function HmacDRBG(options) {
33665 if (!(this instanceof HmacDRBG))
33666 return new HmacDRBG(options);
33667 this.hash = options.hash;
33668 this.predResist = !!options.predResist;
33669
33670 this.outLen = this.hash.outSize;
33671 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
33672
33673 this.reseed = null;
33674 this.reseedInterval = null;
33675 this.K = null;
33676 this.V = null;
33677
33678 var entropy = utils.toArray(options.entropy, options.entropyEnc);
33679 var nonce = utils.toArray(options.nonce, options.nonceEnc);
33680 var pers = utils.toArray(options.pers, options.persEnc);
33681 assert(entropy.length >= (this.minEntropy / 8),
33682 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
33683 this._init(entropy, nonce, pers);
33684 }
33685 module.exports = HmacDRBG;
33686
33687 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
33688 var seed = entropy.concat(nonce).concat(pers);
33689
33690 this.K = new Array(this.outLen / 8);
33691 this.V = new Array(this.outLen / 8);
33692 for (var i = 0; i < this.V.length; i++) {
33693 this.K[i] = 0x00;
33694 this.V[i] = 0x01;
33695 }
33696
33697 this._update(seed);
33698 this.reseed = 1;
33699 this.reseedInterval = 0x1000000000000; // 2^48
33700 };
33701
33702 HmacDRBG.prototype._hmac = function hmac() {
33703 return new hash.hmac(this.hash, this.K);
33704 };
33705
33706 HmacDRBG.prototype._update = function update(seed) {
33707 var kmac = this._hmac()
33708 .update(this.V)
33709 .update([ 0x00 ]);
33710 if (seed)
33711 kmac = kmac.update(seed);
33712 this.K = kmac.digest();
33713 this.V = this._hmac().update(this.V).digest();
33714 if (!seed)
33715 return;
33716
33717 this.K = this._hmac()
33718 .update(this.V)
33719 .update([ 0x01 ])
33720 .update(seed)
33721 .digest();
33722 this.V = this._hmac().update(this.V).digest();
33723 };
33724
33725 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
33726 // Optional entropy enc
33727 if (typeof entropyEnc !== 'string') {
33728 addEnc = add;
33729 add = entropyEnc;
33730 entropyEnc = null;
33731 }
33732
33733 entropy = utils.toBuffer(entropy, entropyEnc);
33734 add = utils.toBuffer(add, addEnc);
33735
33736 assert(entropy.length >= (this.minEntropy / 8),
33737 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
33738
33739 this._update(entropy.concat(add || []));
33740 this.reseed = 1;
33741 };
33742
33743 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
33744 if (this.reseed > this.reseedInterval)
33745 throw new Error('Reseed is required');
33746
33747 // Optional encoding
33748 if (typeof enc !== 'string') {
33749 addEnc = add;
33750 add = enc;
33751 enc = null;
33752 }
33753
33754 // Optional additional data
33755 if (add) {
33756 add = utils.toArray(add, addEnc);
33757 this._update(add);
33758 }
33759
33760 var temp = [];
33761 while (temp.length < len) {
33762 this.V = this._hmac().update(this.V).digest();
33763 temp = temp.concat(this.V);
33764 }
33765
33766 var res = temp.slice(0, len);
33767 this._update(add);
33768 this.reseed++;
33769 return utils.encode(res, enc);
33770 };
33771
33772 },{"../elliptic":39,"hash.js":57}],53:[function(require,module,exports){
33773 module.exports = {
33774 doubles: {
33775 step: 4,
33776 points: [
33777 [
33778 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
33779 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
33780 ],
33781 [
33782 '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
33783 '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
33784 ],
33785 [
33786 '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
33787 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
33788 ],
33789 [
33790 '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
33791 '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
33792 ],
33793 [
33794 '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
33795 '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
33796 ],
33797 [
33798 '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
33799 '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
33800 ],
33801 [
33802 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
33803 '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
33804 ],
33805 [
33806 '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
33807 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
33808 ],
33809 [
33810 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
33811 '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
33812 ],
33813 [
33814 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
33815 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
33816 ],
33817 [
33818 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
33819 '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
33820 ],
33821 [
33822 '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
33823 '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
33824 ],
33825 [
33826 '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
33827 '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
33828 ],
33829 [
33830 '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
33831 '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
33832 ],
33833 [
33834 '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
33835 '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
33836 ],
33837 [
33838 '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
33839 '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
33840 ],
33841 [
33842 '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
33843 '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
33844 ],
33845 [
33846 '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
33847 '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
33848 ],
33849 [
33850 '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
33851 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
33852 ],
33853 [
33854 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
33855 '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
33856 ],
33857 [
33858 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
33859 '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
33860 ],
33861 [
33862 '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
33863 '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
33864 ],
33865 [
33866 '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
33867 '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
33868 ],
33869 [
33870 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
33871 '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
33872 ],
33873 [
33874 '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
33875 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
33876 ],
33877 [
33878 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
33879 '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
33880 ],
33881 [
33882 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
33883 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
33884 ],
33885 [
33886 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
33887 '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
33888 ],
33889 [
33890 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
33891 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
33892 ],
33893 [
33894 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
33895 '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
33896 ],
33897 [
33898 '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
33899 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
33900 ],
33901 [
33902 '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
33903 '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
33904 ],
33905 [
33906 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
33907 '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
33908 ],
33909 [
33910 '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
33911 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
33912 ],
33913 [
33914 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
33915 '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
33916 ],
33917 [
33918 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
33919 '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
33920 ],
33921 [
33922 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
33923 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
33924 ],
33925 [
33926 '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
33927 '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
33928 ],
33929 [
33930 '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
33931 '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
33932 ],
33933 [
33934 '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
33935 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
33936 ],
33937 [
33938 '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
33939 '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
33940 ],
33941 [
33942 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
33943 '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
33944 ],
33945 [
33946 '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
33947 '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
33948 ],
33949 [
33950 '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
33951 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
33952 ],
33953 [
33954 '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
33955 '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
33956 ],
33957 [
33958 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
33959 '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
33960 ],
33961 [
33962 '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
33963 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
33964 ],
33965 [
33966 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
33967 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
33968 ],
33969 [
33970 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
33971 '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
33972 ],
33973 [
33974 '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
33975 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
33976 ],
33977 [
33978 '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
33979 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
33980 ],
33981 [
33982 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
33983 '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
33984 ],
33985 [
33986 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
33987 '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
33988 ],
33989 [
33990 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
33991 '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
33992 ],
33993 [
33994 '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
33995 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
33996 ],
33997 [
33998 '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
33999 '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
34000 ],
34001 [
34002 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
34003 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
34004 ],
34005 [
34006 '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
34007 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
34008 ],
34009 [
34010 '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
34011 '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
34012 ],
34013 [
34014 '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
34015 '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
34016 ],
34017 [
34018 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
34019 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
34020 ],
34021 [
34022 '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
34023 '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
34024 ],
34025 [
34026 '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
34027 '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
34028 ],
34029 [
34030 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
34031 '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
34032 ],
34033 [
34034 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
34035 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
34036 ]
34037 ]
34038 },
34039 naf: {
34040 wnd: 7,
34041 points: [
34042 [
34043 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
34044 '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
34045 ],
34046 [
34047 '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
34048 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
34049 ],
34050 [
34051 '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
34052 '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
34053 ],
34054 [
34055 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
34056 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
34057 ],
34058 [
34059 '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
34060 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
34061 ],
34062 [
34063 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
34064 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
34065 ],
34066 [
34067 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
34068 '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
34069 ],
34070 [
34071 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
34072 '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
34073 ],
34074 [
34075 '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
34076 '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
34077 ],
34078 [
34079 '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
34080 '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
34081 ],
34082 [
34083 '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
34084 '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
34085 ],
34086 [
34087 '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
34088 '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
34089 ],
34090 [
34091 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
34092 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
34093 ],
34094 [
34095 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
34096 '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
34097 ],
34098 [
34099 '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
34100 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
34101 ],
34102 [
34103 '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
34104 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
34105 ],
34106 [
34107 '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
34108 '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
34109 ],
34110 [
34111 '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
34112 '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
34113 ],
34114 [
34115 '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
34116 '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
34117 ],
34118 [
34119 '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
34120 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
34121 ],
34122 [
34123 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
34124 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
34125 ],
34126 [
34127 '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
34128 '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
34129 ],
34130 [
34131 '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
34132 '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
34133 ],
34134 [
34135 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
34136 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
34137 ],
34138 [
34139 '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
34140 '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
34141 ],
34142 [
34143 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
34144 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
34145 ],
34146 [
34147 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
34148 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
34149 ],
34150 [
34151 '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
34152 '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
34153 ],
34154 [
34155 '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
34156 '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
34157 ],
34158 [
34159 '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
34160 '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
34161 ],
34162 [
34163 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
34164 '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
34165 ],
34166 [
34167 '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
34168 '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
34169 ],
34170 [
34171 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
34172 '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
34173 ],
34174 [
34175 '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
34176 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
34177 ],
34178 [
34179 '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
34180 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
34181 ],
34182 [
34183 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
34184 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
34185 ],
34186 [
34187 '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
34188 '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
34189 ],
34190 [
34191 '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
34192 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
34193 ],
34194 [
34195 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
34196 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
34197 ],
34198 [
34199 '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
34200 '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
34201 ],
34202 [
34203 '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
34204 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
34205 ],
34206 [
34207 '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
34208 '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
34209 ],
34210 [
34211 '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
34212 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
34213 ],
34214 [
34215 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
34216 '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
34217 ],
34218 [
34219 '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
34220 '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
34221 ],
34222 [
34223 '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
34224 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
34225 ],
34226 [
34227 '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
34228 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
34229 ],
34230 [
34231 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
34232 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
34233 ],
34234 [
34235 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
34236 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
34237 ],
34238 [
34239 '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
34240 '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
34241 ],
34242 [
34243 '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
34244 '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
34245 ],
34246 [
34247 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
34248 '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
34249 ],
34250 [
34251 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
34252 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
34253 ],
34254 [
34255 '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
34256 '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
34257 ],
34258 [
34259 '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
34260 '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
34261 ],
34262 [
34263 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
34264 '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
34265 ],
34266 [
34267 '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
34268 '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
34269 ],
34270 [
34271 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
34272 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
34273 ],
34274 [
34275 '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
34276 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
34277 ],
34278 [
34279 '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
34280 '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
34281 ],
34282 [
34283 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
34284 '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
34285 ],
34286 [
34287 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
34288 '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
34289 ],
34290 [
34291 '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
34292 '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
34293 ],
34294 [
34295 '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
34296 '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
34297 ],
34298 [
34299 '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
34300 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
34301 ],
34302 [
34303 '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
34304 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
34305 ],
34306 [
34307 '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
34308 '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
34309 ],
34310 [
34311 '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
34312 '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
34313 ],
34314 [
34315 '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
34316 '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
34317 ],
34318 [
34319 '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
34320 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
34321 ],
34322 [
34323 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
34324 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
34325 ],
34326 [
34327 '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
34328 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
34329 ],
34330 [
34331 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
34332 '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
34333 ],
34334 [
34335 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
34336 '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
34337 ],
34338 [
34339 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
34340 '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
34341 ],
34342 [
34343 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
34344 '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
34345 ],
34346 [
34347 '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
34348 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
34349 ],
34350 [
34351 '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
34352 '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
34353 ],
34354 [
34355 '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
34356 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
34357 ],
34358 [
34359 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
34360 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
34361 ],
34362 [
34363 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
34364 '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
34365 ],
34366 [
34367 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
34368 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
34369 ],
34370 [
34371 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
34372 '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
34373 ],
34374 [
34375 '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
34376 '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
34377 ],
34378 [
34379 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
34380 '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
34381 ],
34382 [
34383 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
34384 '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
34385 ],
34386 [
34387 '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
34388 '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
34389 ],
34390 [
34391 '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
34392 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
34393 ],
34394 [
34395 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
34396 '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
34397 ],
34398 [
34399 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
34400 '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
34401 ],
34402 [
34403 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
34404 '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
34405 ],
34406 [
34407 '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
34408 '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
34409 ],
34410 [
34411 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
34412 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
34413 ],
34414 [
34415 '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
34416 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
34417 ],
34418 [
34419 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
34420 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
34421 ],
34422 [
34423 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
34424 '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
34425 ],
34426 [
34427 '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
34428 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
34429 ],
34430 [
34431 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
34432 '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
34433 ],
34434 [
34435 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
34436 '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
34437 ],
34438 [
34439 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
34440 '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
34441 ],
34442 [
34443 '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
34444 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
34445 ],
34446 [
34447 '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
34448 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
34449 ],
34450 [
34451 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
34452 '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
34453 ],
34454 [
34455 '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
34456 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
34457 ],
34458 [
34459 '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
34460 '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
34461 ],
34462 [
34463 '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
34464 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
34465 ],
34466 [
34467 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
34468 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
34469 ],
34470 [
34471 '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
34472 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
34473 ],
34474 [
34475 '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
34476 '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
34477 ],
34478 [
34479 '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
34480 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
34481 ],
34482 [
34483 '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
34484 '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
34485 ],
34486 [
34487 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
34488 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
34489 ],
34490 [
34491 '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
34492 '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
34493 ],
34494 [
34495 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
34496 '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
34497 ],
34498 [
34499 '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
34500 '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
34501 ],
34502 [
34503 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
34504 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
34505 ],
34506 [
34507 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
34508 '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
34509 ],
34510 [
34511 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
34512 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
34513 ],
34514 [
34515 '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
34516 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
34517 ],
34518 [
34519 '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
34520 '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
34521 ],
34522 [
34523 '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
34524 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
34525 ],
34526 [
34527 '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
34528 '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
34529 ],
34530 [
34531 '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
34532 '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
34533 ],
34534 [
34535 '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
34536 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
34537 ],
34538 [
34539 '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
34540 '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
34541 ],
34542 [
34543 '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
34544 '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
34545 ],
34546 [
34547 '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
34548 '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
34549 ]
34550 ]
34551 }
34552 };
34553
34554 },{}],54:[function(require,module,exports){
34555 'use strict';
34556
34557 var utils = exports;
34558 var BN = require('bn.js');
34559
34560 utils.assert = function assert(val, msg) {
34561 if (!val)
34562 throw new Error(msg || 'Assertion failed');
34563 };
34564
34565 function toArray(msg, enc) {
34566 if (Array.isArray(msg))
34567 return msg.slice();
34568 if (!msg)
34569 return [];
34570 var res = [];
34571 if (typeof msg !== 'string') {
34572 for (var i = 0; i < msg.length; i++)
34573 res[i] = msg[i] | 0;
34574 return res;
34575 }
34576 if (!enc) {
34577 for (var i = 0; i < msg.length; i++) {
34578 var c = msg.charCodeAt(i);
34579 var hi = c >> 8;
34580 var lo = c & 0xff;
34581 if (hi)
34582 res.push(hi, lo);
34583 else
34584 res.push(lo);
34585 }
34586 } else if (enc === 'hex') {
34587 msg = msg.replace(/[^a-z0-9]+/ig, '');
34588 if (msg.length % 2 !== 0)
34589 msg = '0' + msg;
34590 for (var i = 0; i < msg.length; i += 2)
34591 res.push(parseInt(msg[i] + msg[i + 1], 16));
34592 }
34593 return res;
34594 }
34595 utils.toArray = toArray;
34596
34597 function zero2(word) {
34598 if (word.length === 1)
34599 return '0' + word;
34600 else
34601 return word;
34602 }
34603 utils.zero2 = zero2;
34604
34605 function toHex(msg) {
34606 var res = '';
34607 for (var i = 0; i < msg.length; i++)
34608 res += zero2(msg[i].toString(16));
34609 return res;
34610 }
34611 utils.toHex = toHex;
34612
34613 utils.encode = function encode(arr, enc) {
34614 if (enc === 'hex')
34615 return toHex(arr);
34616 else
34617 return arr;
34618 };
34619
34620 // Represent num in a w-NAF form
34621 function getNAF(num, w) {
34622 var naf = [];
34623 var ws = 1 << (w + 1);
34624 var k = num.clone();
34625 while (k.cmpn(1) >= 0) {
34626 var z;
34627 if (k.isOdd()) {
34628 var mod = k.andln(ws - 1);
34629 if (mod > (ws >> 1) - 1)
34630 z = (ws >> 1) - mod;
34631 else
34632 z = mod;
34633 k.isubn(z);
34634 } else {
34635 z = 0;
34636 }
34637 naf.push(z);
34638
34639 // Optimization, shift by word if possible
34640 var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
34641 for (var i = 1; i < shift; i++)
34642 naf.push(0);
34643 k.iushrn(shift);
34644 }
34645
34646 return naf;
34647 }
34648 utils.getNAF = getNAF;
34649
34650 // Represent k1, k2 in a Joint Sparse Form
34651 function getJSF(k1, k2) {
34652 var jsf = [
34653 [],
34654 []
34655 ];
34656
34657 k1 = k1.clone();
34658 k2 = k2.clone();
34659 var d1 = 0;
34660 var d2 = 0;
34661 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
34662
34663 // First phase
34664 var m14 = (k1.andln(3) + d1) & 3;
34665 var m24 = (k2.andln(3) + d2) & 3;
34666 if (m14 === 3)
34667 m14 = -1;
34668 if (m24 === 3)
34669 m24 = -1;
34670 var u1;
34671 if ((m14 & 1) === 0) {
34672 u1 = 0;
34673 } else {
34674 var m8 = (k1.andln(7) + d1) & 7;
34675 if ((m8 === 3 || m8 === 5) && m24 === 2)
34676 u1 = -m14;
34677 else
34678 u1 = m14;
34679 }
34680 jsf[0].push(u1);
34681
34682 var u2;
34683 if ((m24 & 1) === 0) {
34684 u2 = 0;
34685 } else {
34686 var m8 = (k2.andln(7) + d2) & 7;
34687 if ((m8 === 3 || m8 === 5) && m14 === 2)
34688 u2 = -m24;
34689 else
34690 u2 = m24;
34691 }
34692 jsf[1].push(u2);
34693
34694 // Second phase
34695 if (2 * d1 === u1 + 1)
34696 d1 = 1 - d1;
34697 if (2 * d2 === u2 + 1)
34698 d2 = 1 - d2;
34699 k1.iushrn(1);
34700 k2.iushrn(1);
34701 }
34702
34703 return jsf;
34704 }
34705 utils.getJSF = getJSF;
34706
34707 function cachedProperty(obj, name, computer) {
34708 var key = '_' + name;
34709 obj.prototype[name] = function cachedProperty() {
34710 return this[key] !== undefined ? this[key] :
34711 this[key] = computer.call(this);
34712 };
34713 }
34714 utils.cachedProperty = cachedProperty;
34715
34716 function parseBytes(bytes) {
34717 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
34718 bytes;
34719 }
34720 utils.parseBytes = parseBytes;
34721
34722 function intFromLE(bytes) {
34723 return new BN(bytes, 'hex', 'le');
34724 }
34725 utils.intFromLE = intFromLE;
34726
34727
34728 },{"bn.js":33}],55:[function(require,module,exports){
34729 module.exports={
34730 "_args": [
34731 [
34732 {
34733 "raw": "elliptic@^6.2.3",
34734 "scope": null,
34735 "escapedName": "elliptic",
34736 "name": "elliptic",
34737 "rawSpec": "^6.2.3",
34738 "spec": ">=6.2.3 <7.0.0",
34739 "type": "range"
34740 },
34741 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
34742 ]
34743 ],
34744 "_from": "elliptic@>=6.2.3 <7.0.0",
34745 "_id": "elliptic@6.3.3",
34746 "_inCache": true,
34747 "_location": "/elliptic",
34748 "_nodeVersion": "7.0.0",
34749 "_npmOperationalInternal": {
34750 "host": "packages-18-east.internal.npmjs.com",
34751 "tmp": "tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
34752 },
34753 "_npmUser": {
34754 "name": "indutny",
34755 "email": "fedor@indutny.com"
34756 },
34757 "_npmVersion": "3.10.8",
34758 "_phantomChildren": {},
34759 "_requested": {
34760 "raw": "elliptic@^6.2.3",
34761 "scope": null,
34762 "escapedName": "elliptic",
34763 "name": "elliptic",
34764 "rawSpec": "^6.2.3",
34765 "spec": ">=6.2.3 <7.0.0",
34766 "type": "range"
34767 },
34768 "_requiredBy": [
34769 "/browserify-sign",
34770 "/create-ecdh",
34771 "/secp256k1"
34772 ],
34773 "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
34774 "_shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
34775 "_shrinkwrap": null,
34776 "_spec": "elliptic@^6.2.3",
34777 "_where": "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
34778 "author": {
34779 "name": "Fedor Indutny",
34780 "email": "fedor@indutny.com"
34781 },
34782 "bugs": {
34783 "url": "https://github.com/indutny/elliptic/issues"
34784 },
34785 "dependencies": {
34786 "bn.js": "^4.4.0",
34787 "brorand": "^1.0.1",
34788 "hash.js": "^1.0.0",
34789 "inherits": "^2.0.1"
34790 },
34791 "description": "EC cryptography",
34792 "devDependencies": {
34793 "brfs": "^1.4.3",
34794 "coveralls": "^2.11.3",
34795 "grunt": "^0.4.5",
34796 "grunt-browserify": "^5.0.0",
34797 "grunt-cli": "^1.2.0",
34798 "grunt-contrib-connect": "^1.0.0",
34799 "grunt-contrib-copy": "^1.0.0",
34800 "grunt-contrib-uglify": "^1.0.1",
34801 "grunt-mocha-istanbul": "^3.0.1",
34802 "grunt-saucelabs": "^8.6.2",
34803 "istanbul": "^0.4.2",
34804 "jscs": "^2.9.0",
34805 "jshint": "^2.6.0",
34806 "mocha": "^2.1.0"
34807 },
34808 "directories": {},
34809 "dist": {
34810 "shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
34811 "tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
34812 },
34813 "files": [
34814 "lib"
34815 ],
34816 "gitHead": "63aee8d697e9b7fac37ece24222029117a890a7e",
34817 "homepage": "https://github.com/indutny/elliptic",
34818 "keywords": [
34819 "EC",
34820 "Elliptic",
34821 "curve",
34822 "Cryptography"
34823 ],
34824 "license": "MIT",
34825 "main": "lib/elliptic.js",
34826 "maintainers": [
34827 {
34828 "name": "indutny",
34829 "email": "fedor@indutny.com"
34830 }
34831 ],
34832 "name": "elliptic",
34833 "optionalDependencies": {},
34834 "readme": "ERROR: No README data found!",
34835 "repository": {
34836 "type": "git",
34837 "url": "git+ssh://git@github.com/indutny/elliptic.git"
34838 },
34839 "scripts": {
34840 "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
34841 "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
34842 "lint": "npm run jscs && npm run jshint",
34843 "test": "npm run lint && npm run unit",
34844 "unit": "istanbul test _mocha --reporter=spec test/index.js",
34845 "version": "grunt dist && git add dist/"
34846 },
34847 "version": "6.3.3"
34848 }
34849
34850 },{}],56:[function(require,module,exports){
34851 (function (Buffer){
34852 'use strict';
34853
34854 var isHexPrefixed = require('is-hex-prefixed');
34855 var stripHexPrefix = require('strip-hex-prefix');
34856
34857 /**
34858 * Pads a `String` to have an even length
34859 * @param {String} value
34860 * @return {String} output
34861 */
34862 function padToEven(value) {
34863 var a = value; // eslint-disable-line
34864
34865 if (typeof a !== 'string') {
34866 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
34867 }
34868
34869 if (a.length % 2) {
34870 a = '0' + a;
34871 }
34872
34873 return a;
34874 }
34875
34876 /**
34877 * Converts a `Number` into a hex `String`
34878 * @param {Number} i
34879 * @return {String}
34880 */
34881 function intToHex(i) {
34882 var hex = i.toString(16); // eslint-disable-line
34883
34884 return '0x' + padToEven(hex);
34885 }
34886
34887 /**
34888 * Converts an `Number` to a `Buffer`
34889 * @param {Number} i
34890 * @return {Buffer}
34891 */
34892 function intToBuffer(i) {
34893 var hex = intToHex(i);
34894
34895 return new Buffer(hex.slice(2), 'hex');
34896 }
34897
34898 /**
34899 * Get the binary size of a string
34900 * @param {String} str
34901 * @return {Number}
34902 */
34903 function getBinarySize(str) {
34904 if (typeof str !== 'string') {
34905 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
34906 }
34907
34908 return Buffer.byteLength(str, 'utf8');
34909 }
34910
34911 /**
34912 * Returns TRUE if the first specified array contains all elements
34913 * from the second one. FALSE otherwise.
34914 *
34915 * @param {array} superset
34916 * @param {array} subset
34917 *
34918 * @returns {boolean}
34919 */
34920 function arrayContainsArray(superset, subset, some) {
34921 if (Array.isArray(superset) !== true) {
34922 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
34923 }
34924 if (Array.isArray(subset) !== true) {
34925 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
34926 }
34927
34928 return subset[Boolean(some) && 'some' || 'every'](function (value) {
34929 return superset.indexOf(value) >= 0;
34930 });
34931 }
34932
34933 /**
34934 * Should be called to get utf8 from it's hex representation
34935 *
34936 * @method toUtf8
34937 * @param {String} string in hex
34938 * @returns {String} ascii string representation of hex value
34939 */
34940 function toUtf8(hex) {
34941 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');
34942
34943 return bufferValue.toString('utf8');
34944 }
34945
34946 /**
34947 * Should be called to get ascii from it's hex representation
34948 *
34949 * @method toAscii
34950 * @param {String} string in hex
34951 * @returns {String} ascii string representation of hex value
34952 */
34953 function toAscii(hex) {
34954 var str = ''; // eslint-disable-line
34955 var i = 0,
34956 l = hex.length; // eslint-disable-line
34957
34958 if (hex.substring(0, 2) === '0x') {
34959 i = 2;
34960 }
34961
34962 for (; i < l; i += 2) {
34963 var code = parseInt(hex.substr(i, 2), 16);
34964 str += String.fromCharCode(code);
34965 }
34966
34967 return str;
34968 }
34969
34970 /**
34971 * Should be called to get hex representation (prefixed by 0x) of utf8 string
34972 *
34973 * @method fromUtf8
34974 * @param {String} string
34975 * @param {Number} optional padding
34976 * @returns {String} hex representation of input string
34977 */
34978 function fromUtf8(stringValue) {
34979 var str = new Buffer(stringValue, 'utf8');
34980
34981 return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');
34982 }
34983
34984 /**
34985 * Should be called to get hex representation (prefixed by 0x) of ascii string
34986 *
34987 * @method fromAscii
34988 * @param {String} string
34989 * @param {Number} optional padding
34990 * @returns {String} hex representation of input string
34991 */
34992 function fromAscii(stringValue) {
34993 var hex = ''; // eslint-disable-line
34994 for (var i = 0; i < stringValue.length; i++) {
34995 // eslint-disable-line
34996 var code = stringValue.charCodeAt(i);
34997 var n = code.toString(16);
34998 hex += n.length < 2 ? '0' + n : n;
34999 }
35000
35001 return '0x' + hex;
35002 }
35003
35004 /**
35005 * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]
35006 *
35007 * @method getKeys get specific key from inner object array of objects
35008 * @param {String} params
35009 * @param {String} key
35010 * @param {Boolean} allowEmpty
35011 * @returns {Array} output just a simple array of output keys
35012 */
35013 function getKeys(params, key, allowEmpty) {
35014 if (!Array.isArray(params)) {
35015 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
35016 }
35017 if (typeof key !== 'string') {
35018 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
35019 }
35020
35021 var result = []; // eslint-disable-line
35022
35023 for (var i = 0; i < params.length; i++) {
35024 // eslint-disable-line
35025 var value = params[i][key]; // eslint-disable-line
35026 if (allowEmpty && !value) {
35027 value = '';
35028 } else if (typeof value !== 'string') {
35029 throw new Error('invalid abi');
35030 }
35031 result.push(value);
35032 }
35033
35034 return result;
35035 }
35036
35037 /**
35038 * Is the string a hex string.
35039 *
35040 * @method check if string is hex string of specific length
35041 * @param {String} value
35042 * @param {Number} length
35043 * @returns {Boolean} output the string is a hex string
35044 */
35045 function isHexString(value, length) {
35046 if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
35047 return false;
35048 }
35049
35050 if (length && value.length !== 2 + 2 * length) {
35051 return false;
35052 }
35053
35054 return true;
35055 }
35056
35057 module.exports = {
35058 arrayContainsArray: arrayContainsArray,
35059 intToBuffer: intToBuffer,
35060 getBinarySize: getBinarySize,
35061 isHexPrefixed: isHexPrefixed,
35062 stripHexPrefix: stripHexPrefix,
35063 padToEven: padToEven,
35064 intToHex: intToHex,
35065 fromAscii: fromAscii,
35066 fromUtf8: fromUtf8,
35067 toAscii: toAscii,
35068 toUtf8: toUtf8,
35069 getKeys: getKeys,
35070 isHexString: isHexString
35071 };
35072 }).call(this,require("buffer").Buffer)
35073 },{"buffer":5,"is-hex-prefixed":64,"strip-hex-prefix":87}],57:[function(require,module,exports){
35074 var hash = exports;
35075
35076 hash.utils = require('./hash/utils');
35077 hash.common = require('./hash/common');
35078 hash.sha = require('./hash/sha');
35079 hash.ripemd = require('./hash/ripemd');
35080 hash.hmac = require('./hash/hmac');
35081
35082 // Proxy hash functions to the main object
35083 hash.sha1 = hash.sha.sha1;
35084 hash.sha256 = hash.sha.sha256;
35085 hash.sha224 = hash.sha.sha224;
35086 hash.sha384 = hash.sha.sha384;
35087 hash.sha512 = hash.sha.sha512;
35088 hash.ripemd160 = hash.ripemd.ripemd160;
35089
35090 },{"./hash/common":58,"./hash/hmac":59,"./hash/ripemd":60,"./hash/sha":61,"./hash/utils":62}],58:[function(require,module,exports){
35091 var hash = require('../hash');
35092 var utils = hash.utils;
35093 var assert = utils.assert;
35094
35095 function BlockHash() {
35096 this.pending = null;
35097 this.pendingTotal = 0;
35098 this.blockSize = this.constructor.blockSize;
35099 this.outSize = this.constructor.outSize;
35100 this.hmacStrength = this.constructor.hmacStrength;
35101 this.padLength = this.constructor.padLength / 8;
35102 this.endian = 'big';
35103
35104 this._delta8 = this.blockSize / 8;
35105 this._delta32 = this.blockSize / 32;
35106 }
35107 exports.BlockHash = BlockHash;
35108
35109 BlockHash.prototype.update = function update(msg, enc) {
35110 // Convert message to array, pad it, and join into 32bit blocks
35111 msg = utils.toArray(msg, enc);
35112 if (!this.pending)
35113 this.pending = msg;
35114 else
35115 this.pending = this.pending.concat(msg);
35116 this.pendingTotal += msg.length;
35117
35118 // Enough data, try updating
35119 if (this.pending.length >= this._delta8) {
35120 msg = this.pending;
35121
35122 // Process pending data in blocks
35123 var r = msg.length % this._delta8;
35124 this.pending = msg.slice(msg.length - r, msg.length);
35125 if (this.pending.length === 0)
35126 this.pending = null;
35127
35128 msg = utils.join32(msg, 0, msg.length - r, this.endian);
35129 for (var i = 0; i < msg.length; i += this._delta32)
35130 this._update(msg, i, i + this._delta32);
35131 }
35132
35133 return this;
35134 };
35135
35136 BlockHash.prototype.digest = function digest(enc) {
35137 this.update(this._pad());
35138 assert(this.pending === null);
35139
35140 return this._digest(enc);
35141 };
35142
35143 BlockHash.prototype._pad = function pad() {
35144 var len = this.pendingTotal;
35145 var bytes = this._delta8;
35146 var k = bytes - ((len + this.padLength) % bytes);
35147 var res = new Array(k + this.padLength);
35148 res[0] = 0x80;
35149 for (var i = 1; i < k; i++)
35150 res[i] = 0;
35151
35152 // Append length
35153 len <<= 3;
35154 if (this.endian === 'big') {
35155 for (var t = 8; t < this.padLength; t++)
35156 res[i++] = 0;
35157
35158 res[i++] = 0;
35159 res[i++] = 0;
35160 res[i++] = 0;
35161 res[i++] = 0;
35162 res[i++] = (len >>> 24) & 0xff;
35163 res[i++] = (len >>> 16) & 0xff;
35164 res[i++] = (len >>> 8) & 0xff;
35165 res[i++] = len & 0xff;
35166 } else {
35167 res[i++] = len & 0xff;
35168 res[i++] = (len >>> 8) & 0xff;
35169 res[i++] = (len >>> 16) & 0xff;
35170 res[i++] = (len >>> 24) & 0xff;
35171 res[i++] = 0;
35172 res[i++] = 0;
35173 res[i++] = 0;
35174 res[i++] = 0;
35175
35176 for (var t = 8; t < this.padLength; t++)
35177 res[i++] = 0;
35178 }
35179
35180 return res;
35181 };
35182
35183 },{"../hash":57}],59:[function(require,module,exports){
35184 var hmac = exports;
35185
35186 var hash = require('../hash');
35187 var utils = hash.utils;
35188 var assert = utils.assert;
35189
35190 function Hmac(hash, key, enc) {
35191 if (!(this instanceof Hmac))
35192 return new Hmac(hash, key, enc);
35193 this.Hash = hash;
35194 this.blockSize = hash.blockSize / 8;
35195 this.outSize = hash.outSize / 8;
35196 this.inner = null;
35197 this.outer = null;
35198
35199 this._init(utils.toArray(key, enc));
35200 }
35201 module.exports = Hmac;
35202
35203 Hmac.prototype._init = function init(key) {
35204 // Shorten key, if needed
35205 if (key.length > this.blockSize)
35206 key = new this.Hash().update(key).digest();
35207 assert(key.length <= this.blockSize);
35208
35209 // Add padding to key
35210 for (var i = key.length; i < this.blockSize; i++)
35211 key.push(0);
35212
35213 for (var i = 0; i < key.length; i++)
35214 key[i] ^= 0x36;
35215 this.inner = new this.Hash().update(key);
35216
35217 // 0x36 ^ 0x5c = 0x6a
35218 for (var i = 0; i < key.length; i++)
35219 key[i] ^= 0x6a;
35220 this.outer = new this.Hash().update(key);
35221 };
35222
35223 Hmac.prototype.update = function update(msg, enc) {
35224 this.inner.update(msg, enc);
35225 return this;
35226 };
35227
35228 Hmac.prototype.digest = function digest(enc) {
35229 this.outer.update(this.inner.digest());
35230 return this.outer.digest(enc);
35231 };
35232
35233 },{"../hash":57}],60:[function(require,module,exports){
35234 var hash = require('../hash');
35235 var utils = hash.utils;
35236
35237 var rotl32 = utils.rotl32;
35238 var sum32 = utils.sum32;
35239 var sum32_3 = utils.sum32_3;
35240 var sum32_4 = utils.sum32_4;
35241 var BlockHash = hash.common.BlockHash;
35242
35243 function RIPEMD160() {
35244 if (!(this instanceof RIPEMD160))
35245 return new RIPEMD160();
35246
35247 BlockHash.call(this);
35248
35249 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
35250 this.endian = 'little';
35251 }
35252 utils.inherits(RIPEMD160, BlockHash);
35253 exports.ripemd160 = RIPEMD160;
35254
35255 RIPEMD160.blockSize = 512;
35256 RIPEMD160.outSize = 160;
35257 RIPEMD160.hmacStrength = 192;
35258 RIPEMD160.padLength = 64;
35259
35260 RIPEMD160.prototype._update = function update(msg, start) {
35261 var A = this.h[0];
35262 var B = this.h[1];
35263 var C = this.h[2];
35264 var D = this.h[3];
35265 var E = this.h[4];
35266 var Ah = A;
35267 var Bh = B;
35268 var Ch = C;
35269 var Dh = D;
35270 var Eh = E;
35271 for (var j = 0; j < 80; j++) {
35272 var T = sum32(
35273 rotl32(
35274 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
35275 s[j]),
35276 E);
35277 A = E;
35278 E = D;
35279 D = rotl32(C, 10);
35280 C = B;
35281 B = T;
35282 T = sum32(
35283 rotl32(
35284 sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
35285 sh[j]),
35286 Eh);
35287 Ah = Eh;
35288 Eh = Dh;
35289 Dh = rotl32(Ch, 10);
35290 Ch = Bh;
35291 Bh = T;
35292 }
35293 T = sum32_3(this.h[1], C, Dh);
35294 this.h[1] = sum32_3(this.h[2], D, Eh);
35295 this.h[2] = sum32_3(this.h[3], E, Ah);
35296 this.h[3] = sum32_3(this.h[4], A, Bh);
35297 this.h[4] = sum32_3(this.h[0], B, Ch);
35298 this.h[0] = T;
35299 };
35300
35301 RIPEMD160.prototype._digest = function digest(enc) {
35302 if (enc === 'hex')
35303 return utils.toHex32(this.h, 'little');
35304 else
35305 return utils.split32(this.h, 'little');
35306 };
35307
35308 function f(j, x, y, z) {
35309 if (j <= 15)
35310 return x ^ y ^ z;
35311 else if (j <= 31)
35312 return (x & y) | ((~x) & z);
35313 else if (j <= 47)
35314 return (x | (~y)) ^ z;
35315 else if (j <= 63)
35316 return (x & z) | (y & (~z));
35317 else
35318 return x ^ (y | (~z));
35319 }
35320
35321 function K(j) {
35322 if (j <= 15)
35323 return 0x00000000;
35324 else if (j <= 31)
35325 return 0x5a827999;
35326 else if (j <= 47)
35327 return 0x6ed9eba1;
35328 else if (j <= 63)
35329 return 0x8f1bbcdc;
35330 else
35331 return 0xa953fd4e;
35332 }
35333
35334 function Kh(j) {
35335 if (j <= 15)
35336 return 0x50a28be6;
35337 else if (j <= 31)
35338 return 0x5c4dd124;
35339 else if (j <= 47)
35340 return 0x6d703ef3;
35341 else if (j <= 63)
35342 return 0x7a6d76e9;
35343 else
35344 return 0x00000000;
35345 }
35346
35347 var r = [
35348 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
35349 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
35350 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
35351 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
35352 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
35353 ];
35354
35355 var rh = [
35356 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
35357 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
35358 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
35359 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
35360 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
35361 ];
35362
35363 var s = [
35364 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
35365 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
35366 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
35367 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
35368 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
35369 ];
35370
35371 var sh = [
35372 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
35373 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
35374 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
35375 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
35376 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
35377 ];
35378
35379 },{"../hash":57}],61:[function(require,module,exports){
35380 var hash = require('../hash');
35381 var utils = hash.utils;
35382 var assert = utils.assert;
35383
35384 var rotr32 = utils.rotr32;
35385 var rotl32 = utils.rotl32;
35386 var sum32 = utils.sum32;
35387 var sum32_4 = utils.sum32_4;
35388 var sum32_5 = utils.sum32_5;
35389 var rotr64_hi = utils.rotr64_hi;
35390 var rotr64_lo = utils.rotr64_lo;
35391 var shr64_hi = utils.shr64_hi;
35392 var shr64_lo = utils.shr64_lo;
35393 var sum64 = utils.sum64;
35394 var sum64_hi = utils.sum64_hi;
35395 var sum64_lo = utils.sum64_lo;
35396 var sum64_4_hi = utils.sum64_4_hi;
35397 var sum64_4_lo = utils.sum64_4_lo;
35398 var sum64_5_hi = utils.sum64_5_hi;
35399 var sum64_5_lo = utils.sum64_5_lo;
35400 var BlockHash = hash.common.BlockHash;
35401
35402 var sha256_K = [
35403 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
35404 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
35405 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
35406 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
35407 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
35408 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
35409 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
35410 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
35411 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
35412 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
35413 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
35414 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
35415 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
35416 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
35417 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
35418 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
35419 ];
35420
35421 var sha512_K = [
35422 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
35423 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
35424 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
35425 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
35426 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
35427 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
35428 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
35429 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
35430 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
35431 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
35432 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
35433 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
35434 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
35435 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
35436 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
35437 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
35438 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
35439 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
35440 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
35441 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
35442 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
35443 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
35444 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
35445 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
35446 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
35447 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
35448 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
35449 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
35450 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
35451 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
35452 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
35453 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
35454 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
35455 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
35456 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
35457 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
35458 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
35459 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
35460 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
35461 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
35462 ];
35463
35464 var sha1_K = [
35465 0x5A827999, 0x6ED9EBA1,
35466 0x8F1BBCDC, 0xCA62C1D6
35467 ];
35468
35469 function SHA256() {
35470 if (!(this instanceof SHA256))
35471 return new SHA256();
35472
35473 BlockHash.call(this);
35474 this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
35475 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];
35476 this.k = sha256_K;
35477 this.W = new Array(64);
35478 }
35479 utils.inherits(SHA256, BlockHash);
35480 exports.sha256 = SHA256;
35481
35482 SHA256.blockSize = 512;
35483 SHA256.outSize = 256;
35484 SHA256.hmacStrength = 192;
35485 SHA256.padLength = 64;
35486
35487 SHA256.prototype._update = function _update(msg, start) {
35488 var W = this.W;
35489
35490 for (var i = 0; i < 16; i++)
35491 W[i] = msg[start + i];
35492 for (; i < W.length; i++)
35493 W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
35494
35495 var a = this.h[0];
35496 var b = this.h[1];
35497 var c = this.h[2];
35498 var d = this.h[3];
35499 var e = this.h[4];
35500 var f = this.h[5];
35501 var g = this.h[6];
35502 var h = this.h[7];
35503
35504 assert(this.k.length === W.length);
35505 for (var i = 0; i < W.length; i++) {
35506 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
35507 var T2 = sum32(s0_256(a), maj32(a, b, c));
35508 h = g;
35509 g = f;
35510 f = e;
35511 e = sum32(d, T1);
35512 d = c;
35513 c = b;
35514 b = a;
35515 a = sum32(T1, T2);
35516 }
35517
35518 this.h[0] = sum32(this.h[0], a);
35519 this.h[1] = sum32(this.h[1], b);
35520 this.h[2] = sum32(this.h[2], c);
35521 this.h[3] = sum32(this.h[3], d);
35522 this.h[4] = sum32(this.h[4], e);
35523 this.h[5] = sum32(this.h[5], f);
35524 this.h[6] = sum32(this.h[6], g);
35525 this.h[7] = sum32(this.h[7], h);
35526 };
35527
35528 SHA256.prototype._digest = function digest(enc) {
35529 if (enc === 'hex')
35530 return utils.toHex32(this.h, 'big');
35531 else
35532 return utils.split32(this.h, 'big');
35533 };
35534
35535 function SHA224() {
35536 if (!(this instanceof SHA224))
35537 return new SHA224();
35538
35539 SHA256.call(this);
35540 this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
35541 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
35542 }
35543 utils.inherits(SHA224, SHA256);
35544 exports.sha224 = SHA224;
35545
35546 SHA224.blockSize = 512;
35547 SHA224.outSize = 224;
35548 SHA224.hmacStrength = 192;
35549 SHA224.padLength = 64;
35550
35551 SHA224.prototype._digest = function digest(enc) {
35552 // Just truncate output
35553 if (enc === 'hex')
35554 return utils.toHex32(this.h.slice(0, 7), 'big');
35555 else
35556 return utils.split32(this.h.slice(0, 7), 'big');
35557 };
35558
35559 function SHA512() {
35560 if (!(this instanceof SHA512))
35561 return new SHA512();
35562
35563 BlockHash.call(this);
35564 this.h = [ 0x6a09e667, 0xf3bcc908,
35565 0xbb67ae85, 0x84caa73b,
35566 0x3c6ef372, 0xfe94f82b,
35567 0xa54ff53a, 0x5f1d36f1,
35568 0x510e527f, 0xade682d1,
35569 0x9b05688c, 0x2b3e6c1f,
35570 0x1f83d9ab, 0xfb41bd6b,
35571 0x5be0cd19, 0x137e2179 ];
35572 this.k = sha512_K;
35573 this.W = new Array(160);
35574 }
35575 utils.inherits(SHA512, BlockHash);
35576 exports.sha512 = SHA512;
35577
35578 SHA512.blockSize = 1024;
35579 SHA512.outSize = 512;
35580 SHA512.hmacStrength = 192;
35581 SHA512.padLength = 128;
35582
35583 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
35584 var W = this.W;
35585
35586 // 32 x 32bit words
35587 for (var i = 0; i < 32; i++)
35588 W[i] = msg[start + i];
35589 for (; i < W.length; i += 2) {
35590 var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
35591 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
35592 var c1_hi = W[i - 14]; // i - 7
35593 var c1_lo = W[i - 13];
35594 var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
35595 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
35596 var c3_hi = W[i - 32]; // i - 16
35597 var c3_lo = W[i - 31];
35598
35599 W[i] = sum64_4_hi(c0_hi, c0_lo,
35600 c1_hi, c1_lo,
35601 c2_hi, c2_lo,
35602 c3_hi, c3_lo);
35603 W[i + 1] = sum64_4_lo(c0_hi, c0_lo,
35604 c1_hi, c1_lo,
35605 c2_hi, c2_lo,
35606 c3_hi, c3_lo);
35607 }
35608 };
35609
35610 SHA512.prototype._update = function _update(msg, start) {
35611 this._prepareBlock(msg, start);
35612
35613 var W = this.W;
35614
35615 var ah = this.h[0];
35616 var al = this.h[1];
35617 var bh = this.h[2];
35618 var bl = this.h[3];
35619 var ch = this.h[4];
35620 var cl = this.h[5];
35621 var dh = this.h[6];
35622 var dl = this.h[7];
35623 var eh = this.h[8];
35624 var el = this.h[9];
35625 var fh = this.h[10];
35626 var fl = this.h[11];
35627 var gh = this.h[12];
35628 var gl = this.h[13];
35629 var hh = this.h[14];
35630 var hl = this.h[15];
35631
35632 assert(this.k.length === W.length);
35633 for (var i = 0; i < W.length; i += 2) {
35634 var c0_hi = hh;
35635 var c0_lo = hl;
35636 var c1_hi = s1_512_hi(eh, el);
35637 var c1_lo = s1_512_lo(eh, el);
35638 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
35639 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
35640 var c3_hi = this.k[i];
35641 var c3_lo = this.k[i + 1];
35642 var c4_hi = W[i];
35643 var c4_lo = W[i + 1];
35644
35645 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
35646 c1_hi, c1_lo,
35647 c2_hi, c2_lo,
35648 c3_hi, c3_lo,
35649 c4_hi, c4_lo);
35650 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
35651 c1_hi, c1_lo,
35652 c2_hi, c2_lo,
35653 c3_hi, c3_lo,
35654 c4_hi, c4_lo);
35655
35656 var c0_hi = s0_512_hi(ah, al);
35657 var c0_lo = s0_512_lo(ah, al);
35658 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
35659 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
35660
35661 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
35662 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
35663
35664 hh = gh;
35665 hl = gl;
35666
35667 gh = fh;
35668 gl = fl;
35669
35670 fh = eh;
35671 fl = el;
35672
35673 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
35674 el = sum64_lo(dl, dl, T1_hi, T1_lo);
35675
35676 dh = ch;
35677 dl = cl;
35678
35679 ch = bh;
35680 cl = bl;
35681
35682 bh = ah;
35683 bl = al;
35684
35685 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
35686 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
35687 }
35688
35689 sum64(this.h, 0, ah, al);
35690 sum64(this.h, 2, bh, bl);
35691 sum64(this.h, 4, ch, cl);
35692 sum64(this.h, 6, dh, dl);
35693 sum64(this.h, 8, eh, el);
35694 sum64(this.h, 10, fh, fl);
35695 sum64(this.h, 12, gh, gl);
35696 sum64(this.h, 14, hh, hl);
35697 };
35698
35699 SHA512.prototype._digest = function digest(enc) {
35700 if (enc === 'hex')
35701 return utils.toHex32(this.h, 'big');
35702 else
35703 return utils.split32(this.h, 'big');
35704 };
35705
35706 function SHA384() {
35707 if (!(this instanceof SHA384))
35708 return new SHA384();
35709
35710 SHA512.call(this);
35711 this.h = [ 0xcbbb9d5d, 0xc1059ed8,
35712 0x629a292a, 0x367cd507,
35713 0x9159015a, 0x3070dd17,
35714 0x152fecd8, 0xf70e5939,
35715 0x67332667, 0xffc00b31,
35716 0x8eb44a87, 0x68581511,
35717 0xdb0c2e0d, 0x64f98fa7,
35718 0x47b5481d, 0xbefa4fa4 ];
35719 }
35720 utils.inherits(SHA384, SHA512);
35721 exports.sha384 = SHA384;
35722
35723 SHA384.blockSize = 1024;
35724 SHA384.outSize = 384;
35725 SHA384.hmacStrength = 192;
35726 SHA384.padLength = 128;
35727
35728 SHA384.prototype._digest = function digest(enc) {
35729 if (enc === 'hex')
35730 return utils.toHex32(this.h.slice(0, 12), 'big');
35731 else
35732 return utils.split32(this.h.slice(0, 12), 'big');
35733 };
35734
35735 function SHA1() {
35736 if (!(this instanceof SHA1))
35737 return new SHA1();
35738
35739 BlockHash.call(this);
35740 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,
35741 0x10325476, 0xc3d2e1f0 ];
35742 this.W = new Array(80);
35743 }
35744
35745 utils.inherits(SHA1, BlockHash);
35746 exports.sha1 = SHA1;
35747
35748 SHA1.blockSize = 512;
35749 SHA1.outSize = 160;
35750 SHA1.hmacStrength = 80;
35751 SHA1.padLength = 64;
35752
35753 SHA1.prototype._update = function _update(msg, start) {
35754 var W = this.W;
35755
35756 for (var i = 0; i < 16; i++)
35757 W[i] = msg[start + i];
35758
35759 for(; i < W.length; i++)
35760 W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
35761
35762 var a = this.h[0];
35763 var b = this.h[1];
35764 var c = this.h[2];
35765 var d = this.h[3];
35766 var e = this.h[4];
35767
35768 for (var i = 0; i < W.length; i++) {
35769 var s = ~~(i / 20);
35770 var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
35771 e = d;
35772 d = c;
35773 c = rotl32(b, 30);
35774 b = a;
35775 a = t;
35776 }
35777
35778 this.h[0] = sum32(this.h[0], a);
35779 this.h[1] = sum32(this.h[1], b);
35780 this.h[2] = sum32(this.h[2], c);
35781 this.h[3] = sum32(this.h[3], d);
35782 this.h[4] = sum32(this.h[4], e);
35783 };
35784
35785 SHA1.prototype._digest = function digest(enc) {
35786 if (enc === 'hex')
35787 return utils.toHex32(this.h, 'big');
35788 else
35789 return utils.split32(this.h, 'big');
35790 };
35791
35792 function ch32(x, y, z) {
35793 return (x & y) ^ ((~x) & z);
35794 }
35795
35796 function maj32(x, y, z) {
35797 return (x & y) ^ (x & z) ^ (y & z);
35798 }
35799
35800 function p32(x, y, z) {
35801 return x ^ y ^ z;
35802 }
35803
35804 function s0_256(x) {
35805 return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
35806 }
35807
35808 function s1_256(x) {
35809 return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
35810 }
35811
35812 function g0_256(x) {
35813 return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
35814 }
35815
35816 function g1_256(x) {
35817 return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
35818 }
35819
35820 function ft_1(s, x, y, z) {
35821 if (s === 0)
35822 return ch32(x, y, z);
35823 if (s === 1 || s === 3)
35824 return p32(x, y, z);
35825 if (s === 2)
35826 return maj32(x, y, z);
35827 }
35828
35829 function ch64_hi(xh, xl, yh, yl, zh, zl) {
35830 var r = (xh & yh) ^ ((~xh) & zh);
35831 if (r < 0)
35832 r += 0x100000000;
35833 return r;
35834 }
35835
35836 function ch64_lo(xh, xl, yh, yl, zh, zl) {
35837 var r = (xl & yl) ^ ((~xl) & zl);
35838 if (r < 0)
35839 r += 0x100000000;
35840 return r;
35841 }
35842
35843 function maj64_hi(xh, xl, yh, yl, zh, zl) {
35844 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
35845 if (r < 0)
35846 r += 0x100000000;
35847 return r;
35848 }
35849
35850 function maj64_lo(xh, xl, yh, yl, zh, zl) {
35851 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
35852 if (r < 0)
35853 r += 0x100000000;
35854 return r;
35855 }
35856
35857 function s0_512_hi(xh, xl) {
35858 var c0_hi = rotr64_hi(xh, xl, 28);
35859 var c1_hi = rotr64_hi(xl, xh, 2); // 34
35860 var c2_hi = rotr64_hi(xl, xh, 7); // 39
35861
35862 var r = c0_hi ^ c1_hi ^ c2_hi;
35863 if (r < 0)
35864 r += 0x100000000;
35865 return r;
35866 }
35867
35868 function s0_512_lo(xh, xl) {
35869 var c0_lo = rotr64_lo(xh, xl, 28);
35870 var c1_lo = rotr64_lo(xl, xh, 2); // 34
35871 var c2_lo = rotr64_lo(xl, xh, 7); // 39
35872
35873 var r = c0_lo ^ c1_lo ^ c2_lo;
35874 if (r < 0)
35875 r += 0x100000000;
35876 return r;
35877 }
35878
35879 function s1_512_hi(xh, xl) {
35880 var c0_hi = rotr64_hi(xh, xl, 14);
35881 var c1_hi = rotr64_hi(xh, xl, 18);
35882 var c2_hi = rotr64_hi(xl, xh, 9); // 41
35883
35884 var r = c0_hi ^ c1_hi ^ c2_hi;
35885 if (r < 0)
35886 r += 0x100000000;
35887 return r;
35888 }
35889
35890 function s1_512_lo(xh, xl) {
35891 var c0_lo = rotr64_lo(xh, xl, 14);
35892 var c1_lo = rotr64_lo(xh, xl, 18);
35893 var c2_lo = rotr64_lo(xl, xh, 9); // 41
35894
35895 var r = c0_lo ^ c1_lo ^ c2_lo;
35896 if (r < 0)
35897 r += 0x100000000;
35898 return r;
35899 }
35900
35901 function g0_512_hi(xh, xl) {
35902 var c0_hi = rotr64_hi(xh, xl, 1);
35903 var c1_hi = rotr64_hi(xh, xl, 8);
35904 var c2_hi = shr64_hi(xh, xl, 7);
35905
35906 var r = c0_hi ^ c1_hi ^ c2_hi;
35907 if (r < 0)
35908 r += 0x100000000;
35909 return r;
35910 }
35911
35912 function g0_512_lo(xh, xl) {
35913 var c0_lo = rotr64_lo(xh, xl, 1);
35914 var c1_lo = rotr64_lo(xh, xl, 8);
35915 var c2_lo = shr64_lo(xh, xl, 7);
35916
35917 var r = c0_lo ^ c1_lo ^ c2_lo;
35918 if (r < 0)
35919 r += 0x100000000;
35920 return r;
35921 }
35922
35923 function g1_512_hi(xh, xl) {
35924 var c0_hi = rotr64_hi(xh, xl, 19);
35925 var c1_hi = rotr64_hi(xl, xh, 29); // 61
35926 var c2_hi = shr64_hi(xh, xl, 6);
35927
35928 var r = c0_hi ^ c1_hi ^ c2_hi;
35929 if (r < 0)
35930 r += 0x100000000;
35931 return r;
35932 }
35933
35934 function g1_512_lo(xh, xl) {
35935 var c0_lo = rotr64_lo(xh, xl, 19);
35936 var c1_lo = rotr64_lo(xl, xh, 29); // 61
35937 var c2_lo = shr64_lo(xh, xl, 6);
35938
35939 var r = c0_lo ^ c1_lo ^ c2_lo;
35940 if (r < 0)
35941 r += 0x100000000;
35942 return r;
35943 }
35944
35945 },{"../hash":57}],62:[function(require,module,exports){
35946 var utils = exports;
35947 var inherits = require('inherits');
35948
35949 function toArray(msg, enc) {
35950 if (Array.isArray(msg))
35951 return msg.slice();
35952 if (!msg)
35953 return [];
35954 var res = [];
35955 if (typeof msg === 'string') {
35956 if (!enc) {
35957 for (var i = 0; i < msg.length; i++) {
35958 var c = msg.charCodeAt(i);
35959 var hi = c >> 8;
35960 var lo = c & 0xff;
35961 if (hi)
35962 res.push(hi, lo);
35963 else
35964 res.push(lo);
35965 }
35966 } else if (enc === 'hex') {
35967 msg = msg.replace(/[^a-z0-9]+/ig, '');
35968 if (msg.length % 2 !== 0)
35969 msg = '0' + msg;
35970 for (var i = 0; i < msg.length; i += 2)
35971 res.push(parseInt(msg[i] + msg[i + 1], 16));
35972 }
35973 } else {
35974 for (var i = 0; i < msg.length; i++)
35975 res[i] = msg[i] | 0;
35976 }
35977 return res;
35978 }
35979 utils.toArray = toArray;
35980
35981 function toHex(msg) {
35982 var res = '';
35983 for (var i = 0; i < msg.length; i++)
35984 res += zero2(msg[i].toString(16));
35985 return res;
35986 }
35987 utils.toHex = toHex;
35988
35989 function htonl(w) {
35990 var res = (w >>> 24) |
35991 ((w >>> 8) & 0xff00) |
35992 ((w << 8) & 0xff0000) |
35993 ((w & 0xff) << 24);
35994 return res >>> 0;
35995 }
35996 utils.htonl = htonl;
35997
35998 function toHex32(msg, endian) {
35999 var res = '';
36000 for (var i = 0; i < msg.length; i++) {
36001 var w = msg[i];
36002 if (endian === 'little')
36003 w = htonl(w);
36004 res += zero8(w.toString(16));
36005 }
36006 return res;
36007 }
36008 utils.toHex32 = toHex32;
36009
36010 function zero2(word) {
36011 if (word.length === 1)
36012 return '0' + word;
36013 else
36014 return word;
36015 }
36016 utils.zero2 = zero2;
36017
36018 function zero8(word) {
36019 if (word.length === 7)
36020 return '0' + word;
36021 else if (word.length === 6)
36022 return '00' + word;
36023 else if (word.length === 5)
36024 return '000' + word;
36025 else if (word.length === 4)
36026 return '0000' + word;
36027 else if (word.length === 3)
36028 return '00000' + word;
36029 else if (word.length === 2)
36030 return '000000' + word;
36031 else if (word.length === 1)
36032 return '0000000' + word;
36033 else
36034 return word;
36035 }
36036 utils.zero8 = zero8;
36037
36038 function join32(msg, start, end, endian) {
36039 var len = end - start;
36040 assert(len % 4 === 0);
36041 var res = new Array(len / 4);
36042 for (var i = 0, k = start; i < res.length; i++, k += 4) {
36043 var w;
36044 if (endian === 'big')
36045 w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
36046 else
36047 w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
36048 res[i] = w >>> 0;
36049 }
36050 return res;
36051 }
36052 utils.join32 = join32;
36053
36054 function split32(msg, endian) {
36055 var res = new Array(msg.length * 4);
36056 for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
36057 var m = msg[i];
36058 if (endian === 'big') {
36059 res[k] = m >>> 24;
36060 res[k + 1] = (m >>> 16) & 0xff;
36061 res[k + 2] = (m >>> 8) & 0xff;
36062 res[k + 3] = m & 0xff;
36063 } else {
36064 res[k + 3] = m >>> 24;
36065 res[k + 2] = (m >>> 16) & 0xff;
36066 res[k + 1] = (m >>> 8) & 0xff;
36067 res[k] = m & 0xff;
36068 }
36069 }
36070 return res;
36071 }
36072 utils.split32 = split32;
36073
36074 function rotr32(w, b) {
36075 return (w >>> b) | (w << (32 - b));
36076 }
36077 utils.rotr32 = rotr32;
36078
36079 function rotl32(w, b) {
36080 return (w << b) | (w >>> (32 - b));
36081 }
36082 utils.rotl32 = rotl32;
36083
36084 function sum32(a, b) {
36085 return (a + b) >>> 0;
36086 }
36087 utils.sum32 = sum32;
36088
36089 function sum32_3(a, b, c) {
36090 return (a + b + c) >>> 0;
36091 }
36092 utils.sum32_3 = sum32_3;
36093
36094 function sum32_4(a, b, c, d) {
36095 return (a + b + c + d) >>> 0;
36096 }
36097 utils.sum32_4 = sum32_4;
36098
36099 function sum32_5(a, b, c, d, e) {
36100 return (a + b + c + d + e) >>> 0;
36101 }
36102 utils.sum32_5 = sum32_5;
36103
36104 function assert(cond, msg) {
36105 if (!cond)
36106 throw new Error(msg || 'Assertion failed');
36107 }
36108 utils.assert = assert;
36109
36110 utils.inherits = inherits;
36111
36112 function sum64(buf, pos, ah, al) {
36113 var bh = buf[pos];
36114 var bl = buf[pos + 1];
36115
36116 var lo = (al + bl) >>> 0;
36117 var hi = (lo < al ? 1 : 0) + ah + bh;
36118 buf[pos] = hi >>> 0;
36119 buf[pos + 1] = lo;
36120 }
36121 exports.sum64 = sum64;
36122
36123 function sum64_hi(ah, al, bh, bl) {
36124 var lo = (al + bl) >>> 0;
36125 var hi = (lo < al ? 1 : 0) + ah + bh;
36126 return hi >>> 0;
36127 };
36128 exports.sum64_hi = sum64_hi;
36129
36130 function sum64_lo(ah, al, bh, bl) {
36131 var lo = al + bl;
36132 return lo >>> 0;
36133 };
36134 exports.sum64_lo = sum64_lo;
36135
36136 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
36137 var carry = 0;
36138 var lo = al;
36139 lo = (lo + bl) >>> 0;
36140 carry += lo < al ? 1 : 0;
36141 lo = (lo + cl) >>> 0;
36142 carry += lo < cl ? 1 : 0;
36143 lo = (lo + dl) >>> 0;
36144 carry += lo < dl ? 1 : 0;
36145
36146 var hi = ah + bh + ch + dh + carry;
36147 return hi >>> 0;
36148 };
36149 exports.sum64_4_hi = sum64_4_hi;
36150
36151 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
36152 var lo = al + bl + cl + dl;
36153 return lo >>> 0;
36154 };
36155 exports.sum64_4_lo = sum64_4_lo;
36156
36157 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
36158 var carry = 0;
36159 var lo = al;
36160 lo = (lo + bl) >>> 0;
36161 carry += lo < al ? 1 : 0;
36162 lo = (lo + cl) >>> 0;
36163 carry += lo < cl ? 1 : 0;
36164 lo = (lo + dl) >>> 0;
36165 carry += lo < dl ? 1 : 0;
36166 lo = (lo + el) >>> 0;
36167 carry += lo < el ? 1 : 0;
36168
36169 var hi = ah + bh + ch + dh + eh + carry;
36170 return hi >>> 0;
36171 };
36172 exports.sum64_5_hi = sum64_5_hi;
36173
36174 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
36175 var lo = al + bl + cl + dl + el;
36176
36177 return lo >>> 0;
36178 };
36179 exports.sum64_5_lo = sum64_5_lo;
36180
36181 function rotr64_hi(ah, al, num) {
36182 var r = (al << (32 - num)) | (ah >>> num);
36183 return r >>> 0;
36184 };
36185 exports.rotr64_hi = rotr64_hi;
36186
36187 function rotr64_lo(ah, al, num) {
36188 var r = (ah << (32 - num)) | (al >>> num);
36189 return r >>> 0;
36190 };
36191 exports.rotr64_lo = rotr64_lo;
36192
36193 function shr64_hi(ah, al, num) {
36194 return ah >>> num;
36195 };
36196 exports.shr64_hi = shr64_hi;
36197
36198 function shr64_lo(ah, al, num) {
36199 var r = (ah << (32 - num)) | (al >>> num);
36200 return r >>> 0;
36201 };
36202 exports.shr64_lo = shr64_lo;
36203
36204 },{"inherits":63}],63:[function(require,module,exports){
36205 arguments[4][9][0].apply(exports,arguments)
36206 },{"dup":9}],64:[function(require,module,exports){
36207 /**
36208 * Returns a `Boolean` on whether or not the a `String` starts with '0x'
36209 * @param {String} str the string input value
36210 * @return {Boolean} a boolean if it is or is not hex prefixed
36211 * @throws if the str input is not a string
36212 */
36213 module.exports = function isHexPrefixed(str) {
36214 if (typeof str !== 'string') {
36215 throw new Error("[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) + ", while checking isHexPrefixed.");
36216 }
36217
36218 return str.slice(0, 2) === '0x';
36219 }
36220
36221 },{}],65:[function(require,module,exports){
36222 'use strict'
36223 module.exports = require('./lib/api')(require('./lib/keccak'))
36224
36225 },{"./lib/api":66,"./lib/keccak":70}],66:[function(require,module,exports){
36226 'use strict'
36227 var createKeccak = require('./keccak')
36228 var createShake = require('./shake')
36229
36230 module.exports = function (KeccakState) {
36231 var Keccak = createKeccak(KeccakState)
36232 var Shake = createShake(KeccakState)
36233
36234 return function (algorithm, options) {
36235 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
36236 switch (hash) {
36237 case 'keccak224': return new Keccak(1152, 448, null, 224, options)
36238 case 'keccak256': return new Keccak(1088, 512, null, 256, options)
36239 case 'keccak384': return new Keccak(832, 768, null, 384, options)
36240 case 'keccak512': return new Keccak(576, 1024, null, 512, options)
36241
36242 case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)
36243 case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)
36244 case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)
36245 case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)
36246
36247 case 'shake128': return new Shake(1344, 256, 0x1f, options)
36248 case 'shake256': return new Shake(1088, 512, 0x1f, options)
36249
36250 default: throw new Error('Invald algorithm: ' + algorithm)
36251 }
36252 }
36253 }
36254
36255 },{"./keccak":67,"./shake":68}],67:[function(require,module,exports){
36256 (function (Buffer){
36257 'use strict'
36258 var Transform = require('stream').Transform
36259 var inherits = require('inherits')
36260
36261 module.exports = function (KeccakState) {
36262 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
36263 Transform.call(this, options)
36264
36265 this._rate = rate
36266 this._capacity = capacity
36267 this._delimitedSuffix = delimitedSuffix
36268 this._hashBitLength = hashBitLength
36269 this._options = options
36270
36271 this._state = new KeccakState()
36272 this._state.initialize(rate, capacity)
36273 this._finalized = false
36274 }
36275
36276 inherits(Keccak, Transform)
36277
36278 Keccak.prototype._transform = function (chunk, encoding, callback) {
36279 var error = null
36280 try {
36281 this.update(chunk, encoding)
36282 } catch (err) {
36283 error = err
36284 }
36285
36286 callback(error)
36287 }
36288
36289 Keccak.prototype._flush = function (callback) {
36290 var error = null
36291 try {
36292 this.push(this.digest())
36293 } catch (err) {
36294 error = err
36295 }
36296
36297 callback(error)
36298 }
36299
36300 Keccak.prototype.update = function (data, encoding) {
36301 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
36302 if (this._finalized) throw new Error('Digest already called')
36303 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
36304
36305 this._state.absorb(data)
36306
36307 return this
36308 }
36309
36310 Keccak.prototype.digest = function (encoding) {
36311 if (this._finalized) throw new Error('Digest already called')
36312 this._finalized = true
36313
36314 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
36315 var digest = this._state.squeeze(this._hashBitLength / 8)
36316 if (encoding !== undefined) digest = digest.toString(encoding)
36317
36318 this._resetState()
36319
36320 return digest
36321 }
36322
36323 // remove result from memory
36324 Keccak.prototype._resetState = function () {
36325 this._state.initialize(this._rate, this._capacity)
36326 return this
36327 }
36328
36329 // because sometimes we need hash right now and little later
36330 Keccak.prototype._clone = function () {
36331 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
36332 this._state.copy(clone._state)
36333 clone._finalized = this._finalized
36334
36335 return clone
36336 }
36337
36338 return Keccak
36339 }
36340
36341 }).call(this,require("buffer").Buffer)
36342 },{"buffer":5,"inherits":63,"stream":25}],68:[function(require,module,exports){
36343 (function (Buffer){
36344 'use strict'
36345 var Transform = require('stream').Transform
36346 var inherits = require('inherits')
36347
36348 module.exports = function (KeccakState) {
36349 function Shake (rate, capacity, delimitedSuffix, options) {
36350 Transform.call(this, options)
36351
36352 this._rate = rate
36353 this._capacity = capacity
36354 this._delimitedSuffix = delimitedSuffix
36355 this._options = options
36356
36357 this._state = new KeccakState()
36358 this._state.initialize(rate, capacity)
36359 this._finalized = false
36360 }
36361
36362 inherits(Shake, Transform)
36363
36364 Shake.prototype._transform = function (chunk, encoding, callback) {
36365 var error = null
36366 try {
36367 this.update(chunk, encoding)
36368 } catch (err) {
36369 error = err
36370 }
36371
36372 callback(error)
36373 }
36374
36375 Shake.prototype._flush = function () {}
36376
36377 Shake.prototype._read = function (size) {
36378 this.push(this.squeeze(size))
36379 }
36380
36381 Shake.prototype.update = function (data, encoding) {
36382 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
36383 if (this._finalized) throw new Error('Squeeze already called')
36384 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
36385
36386 this._state.absorb(data)
36387
36388 return this
36389 }
36390
36391 Shake.prototype.squeeze = function (dataByteLength, encoding) {
36392 if (!this._finalized) {
36393 this._finalized = true
36394 this._state.absorbLastFewBits(this._delimitedSuffix)
36395 }
36396
36397 var data = this._state.squeeze(dataByteLength)
36398 if (encoding !== undefined) data = data.toString(encoding)
36399
36400 return data
36401 }
36402
36403 Shake.prototype._resetState = function () {
36404 this._state.initialize(this._rate, this._capacity)
36405 return this
36406 }
36407
36408 Shake.prototype._clone = function () {
36409 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
36410 this._state.copy(clone._state)
36411 clone._finalized = this._finalized
36412
36413 return clone
36414 }
36415
36416 return Shake
36417 }
36418
36419 }).call(this,require("buffer").Buffer)
36420 },{"buffer":5,"inherits":63,"stream":25}],69:[function(require,module,exports){
36421 'use strict'
36422 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]
36423
36424 exports.p1600 = function (s) {
36425 for (var round = 0; round < 24; ++round) {
36426 // theta
36427 var lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]
36428 var hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]
36429 var lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]
36430 var hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]
36431 var lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]
36432 var hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]
36433 var lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]
36434 var hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]
36435 var lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]
36436 var hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]
36437
36438 var lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)
36439 var hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)
36440 var t1slo0 = s[0] ^ lo
36441 var t1shi0 = s[1] ^ hi
36442 var t1slo5 = s[10] ^ lo
36443 var t1shi5 = s[11] ^ hi
36444 var t1slo10 = s[20] ^ lo
36445 var t1shi10 = s[21] ^ hi
36446 var t1slo15 = s[30] ^ lo
36447 var t1shi15 = s[31] ^ hi
36448 var t1slo20 = s[40] ^ lo
36449 var t1shi20 = s[41] ^ hi
36450 lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)
36451 hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)
36452 var t1slo1 = s[2] ^ lo
36453 var t1shi1 = s[3] ^ hi
36454 var t1slo6 = s[12] ^ lo
36455 var t1shi6 = s[13] ^ hi
36456 var t1slo11 = s[22] ^ lo
36457 var t1shi11 = s[23] ^ hi
36458 var t1slo16 = s[32] ^ lo
36459 var t1shi16 = s[33] ^ hi
36460 var t1slo21 = s[42] ^ lo
36461 var t1shi21 = s[43] ^ hi
36462 lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)
36463 hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)
36464 var t1slo2 = s[4] ^ lo
36465 var t1shi2 = s[5] ^ hi
36466 var t1slo7 = s[14] ^ lo
36467 var t1shi7 = s[15] ^ hi
36468 var t1slo12 = s[24] ^ lo
36469 var t1shi12 = s[25] ^ hi
36470 var t1slo17 = s[34] ^ lo
36471 var t1shi17 = s[35] ^ hi
36472 var t1slo22 = s[44] ^ lo
36473 var t1shi22 = s[45] ^ hi
36474 lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)
36475 hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)
36476 var t1slo3 = s[6] ^ lo
36477 var t1shi3 = s[7] ^ hi
36478 var t1slo8 = s[16] ^ lo
36479 var t1shi8 = s[17] ^ hi
36480 var t1slo13 = s[26] ^ lo
36481 var t1shi13 = s[27] ^ hi
36482 var t1slo18 = s[36] ^ lo
36483 var t1shi18 = s[37] ^ hi
36484 var t1slo23 = s[46] ^ lo
36485 var t1shi23 = s[47] ^ hi
36486 lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)
36487 hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)
36488 var t1slo4 = s[8] ^ lo
36489 var t1shi4 = s[9] ^ hi
36490 var t1slo9 = s[18] ^ lo
36491 var t1shi9 = s[19] ^ hi
36492 var t1slo14 = s[28] ^ lo
36493 var t1shi14 = s[29] ^ hi
36494 var t1slo19 = s[38] ^ lo
36495 var t1shi19 = s[39] ^ hi
36496 var t1slo24 = s[48] ^ lo
36497 var t1shi24 = s[49] ^ hi
36498
36499 // rho & pi
36500 var t2slo0 = t1slo0
36501 var t2shi0 = t1shi0
36502 var t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)
36503 var t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)
36504 var t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)
36505 var t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)
36506 var t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)
36507 var t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)
36508 var t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)
36509 var t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)
36510 var t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)
36511 var t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)
36512 var t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)
36513 var t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)
36514 var t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)
36515 var t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)
36516 var t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)
36517 var t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)
36518 var t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)
36519 var t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)
36520 var t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)
36521 var t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)
36522 var t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)
36523 var t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)
36524 var t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)
36525 var t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)
36526 var t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)
36527 var t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)
36528 var t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)
36529 var t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)
36530 var t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)
36531 var t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)
36532 var t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)
36533 var t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)
36534 var t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)
36535 var t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)
36536 var t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)
36537 var t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)
36538 var t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)
36539 var t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)
36540 var t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)
36541 var t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)
36542 var t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)
36543 var t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)
36544 var t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)
36545 var t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)
36546 var t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)
36547 var t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)
36548 var t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)
36549 var t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)
36550
36551 // chi
36552 s[0] = t2slo0 ^ (~t2slo1 & t2slo2)
36553 s[1] = t2shi0 ^ (~t2shi1 & t2shi2)
36554 s[10] = t2slo5 ^ (~t2slo6 & t2slo7)
36555 s[11] = t2shi5 ^ (~t2shi6 & t2shi7)
36556 s[20] = t2slo10 ^ (~t2slo11 & t2slo12)
36557 s[21] = t2shi10 ^ (~t2shi11 & t2shi12)
36558 s[30] = t2slo15 ^ (~t2slo16 & t2slo17)
36559 s[31] = t2shi15 ^ (~t2shi16 & t2shi17)
36560 s[40] = t2slo20 ^ (~t2slo21 & t2slo22)
36561 s[41] = t2shi20 ^ (~t2shi21 & t2shi22)
36562 s[2] = t2slo1 ^ (~t2slo2 & t2slo3)
36563 s[3] = t2shi1 ^ (~t2shi2 & t2shi3)
36564 s[12] = t2slo6 ^ (~t2slo7 & t2slo8)
36565 s[13] = t2shi6 ^ (~t2shi7 & t2shi8)
36566 s[22] = t2slo11 ^ (~t2slo12 & t2slo13)
36567 s[23] = t2shi11 ^ (~t2shi12 & t2shi13)
36568 s[32] = t2slo16 ^ (~t2slo17 & t2slo18)
36569 s[33] = t2shi16 ^ (~t2shi17 & t2shi18)
36570 s[42] = t2slo21 ^ (~t2slo22 & t2slo23)
36571 s[43] = t2shi21 ^ (~t2shi22 & t2shi23)
36572 s[4] = t2slo2 ^ (~t2slo3 & t2slo4)
36573 s[5] = t2shi2 ^ (~t2shi3 & t2shi4)
36574 s[14] = t2slo7 ^ (~t2slo8 & t2slo9)
36575 s[15] = t2shi7 ^ (~t2shi8 & t2shi9)
36576 s[24] = t2slo12 ^ (~t2slo13 & t2slo14)
36577 s[25] = t2shi12 ^ (~t2shi13 & t2shi14)
36578 s[34] = t2slo17 ^ (~t2slo18 & t2slo19)
36579 s[35] = t2shi17 ^ (~t2shi18 & t2shi19)
36580 s[44] = t2slo22 ^ (~t2slo23 & t2slo24)
36581 s[45] = t2shi22 ^ (~t2shi23 & t2shi24)
36582 s[6] = t2slo3 ^ (~t2slo4 & t2slo0)
36583 s[7] = t2shi3 ^ (~t2shi4 & t2shi0)
36584 s[16] = t2slo8 ^ (~t2slo9 & t2slo5)
36585 s[17] = t2shi8 ^ (~t2shi9 & t2shi5)
36586 s[26] = t2slo13 ^ (~t2slo14 & t2slo10)
36587 s[27] = t2shi13 ^ (~t2shi14 & t2shi10)
36588 s[36] = t2slo18 ^ (~t2slo19 & t2slo15)
36589 s[37] = t2shi18 ^ (~t2shi19 & t2shi15)
36590 s[46] = t2slo23 ^ (~t2slo24 & t2slo20)
36591 s[47] = t2shi23 ^ (~t2shi24 & t2shi20)
36592 s[8] = t2slo4 ^ (~t2slo0 & t2slo1)
36593 s[9] = t2shi4 ^ (~t2shi0 & t2shi1)
36594 s[18] = t2slo9 ^ (~t2slo5 & t2slo6)
36595 s[19] = t2shi9 ^ (~t2shi5 & t2shi6)
36596 s[28] = t2slo14 ^ (~t2slo10 & t2slo11)
36597 s[29] = t2shi14 ^ (~t2shi10 & t2shi11)
36598 s[38] = t2slo19 ^ (~t2slo15 & t2slo16)
36599 s[39] = t2shi19 ^ (~t2shi15 & t2shi16)
36600 s[48] = t2slo24 ^ (~t2slo20 & t2slo21)
36601 s[49] = t2shi24 ^ (~t2shi20 & t2shi21)
36602
36603 // iota
36604 s[0] ^= P1600_ROUND_CONSTANTS[round * 2]
36605 s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]
36606 }
36607 }
36608
36609 },{}],70:[function(require,module,exports){
36610 (function (Buffer){
36611 'use strict'
36612 var keccakState = require('./keccak-state-unroll')
36613
36614 function Keccak () {
36615 // much faster than `new Array(50)`
36616 this.state = [
36617 0, 0, 0, 0, 0,
36618 0, 0, 0, 0, 0,
36619 0, 0, 0, 0, 0,
36620 0, 0, 0, 0, 0,
36621 0, 0, 0, 0, 0
36622 ]
36623
36624 this.blockSize = null
36625 this.count = 0
36626 this.squeezing = false
36627 }
36628
36629 Keccak.prototype.initialize = function (rate, capacity) {
36630 for (var i = 0; i < 50; ++i) this.state[i] = 0
36631 this.blockSize = rate / 8
36632 this.count = 0
36633 this.squeezing = false
36634 }
36635
36636 Keccak.prototype.absorb = function (data) {
36637 for (var i = 0; i < data.length; ++i) {
36638 this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))
36639 this.count += 1
36640 if (this.count === this.blockSize) {
36641 keccakState.p1600(this.state)
36642 this.count = 0
36643 }
36644 }
36645 }
36646
36647 Keccak.prototype.absorbLastFewBits = function (bits) {
36648 this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))
36649 if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)
36650 this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))
36651 keccakState.p1600(this.state)
36652 this.count = 0
36653 this.squeezing = true
36654 }
36655
36656 Keccak.prototype.squeeze = function (length) {
36657 if (!this.squeezing) this.absorbLastFewBits(0x01)
36658
36659 var output = Buffer.allocUnsafe(length)
36660 for (var i = 0; i < length; ++i) {
36661 output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff
36662 this.count += 1
36663 if (this.count === this.blockSize) {
36664 keccakState.p1600(this.state)
36665 this.count = 0
36666 }
36667 }
36668
36669 return output
36670 }
36671
36672 Keccak.prototype.copy = function (dest) {
36673 for (var i = 0; i < 50; ++i) dest.state[i] = this.state[i]
36674 dest.blockSize = this.blockSize
36675 dest.count = this.count
36676 dest.squeezing = this.squeezing
36677 }
36678
36679 module.exports = Keccak
36680
36681 }).call(this,require("buffer").Buffer)
36682 },{"./keccak-state-unroll":69,"buffer":5}],71:[function(require,module,exports){
36683 (function (Buffer){
36684 /*
36685 CryptoJS v3.1.2
36686 code.google.com/p/crypto-js
36687 (c) 2009-2013 by Jeff Mott. All rights reserved.
36688 code.google.com/p/crypto-js/wiki/License
36689 */
36690 /** @preserve
36691 (c) 2012 by Cédric Mesnil. All rights reserved.
36692
36693 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
36694
36695 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
36696 - 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.
36697
36698 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.
36699 */
36700
36701 // constants table
36702 var zl = [
36703 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
36704 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
36705 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
36706 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
36707 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
36708 ]
36709
36710 var zr = [
36711 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
36712 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
36713 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
36714 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
36715 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
36716 ]
36717
36718 var sl = [
36719 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
36720 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
36721 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
36722 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
36723 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
36724 ]
36725
36726 var sr = [
36727 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
36728 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
36729 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
36730 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
36731 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
36732 ]
36733
36734 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
36735 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
36736
36737 function bytesToWords (bytes) {
36738 var words = []
36739 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
36740 words[b >>> 5] |= bytes[i] << (24 - b % 32)
36741 }
36742 return words
36743 }
36744
36745 function wordsToBytes (words) {
36746 var bytes = []
36747 for (var b = 0; b < words.length * 32; b += 8) {
36748 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
36749 }
36750 return bytes
36751 }
36752
36753 function processBlock (H, M, offset) {
36754 // swap endian
36755 for (var i = 0; i < 16; i++) {
36756 var offset_i = offset + i
36757 var M_offset_i = M[offset_i]
36758
36759 // Swap
36760 M[offset_i] = (
36761 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
36762 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
36763 )
36764 }
36765
36766 // Working variables
36767 var al, bl, cl, dl, el
36768 var ar, br, cr, dr, er
36769
36770 ar = al = H[0]
36771 br = bl = H[1]
36772 cr = cl = H[2]
36773 dr = dl = H[3]
36774 er = el = H[4]
36775
36776 // computation
36777 var t
36778 for (i = 0; i < 80; i += 1) {
36779 t = (al + M[offset + zl[i]]) | 0
36780 if (i < 16) {
36781 t += f1(bl, cl, dl) + hl[0]
36782 } else if (i < 32) {
36783 t += f2(bl, cl, dl) + hl[1]
36784 } else if (i < 48) {
36785 t += f3(bl, cl, dl) + hl[2]
36786 } else if (i < 64) {
36787 t += f4(bl, cl, dl) + hl[3]
36788 } else {// if (i<80) {
36789 t += f5(bl, cl, dl) + hl[4]
36790 }
36791 t = t | 0
36792 t = rotl(t, sl[i])
36793 t = (t + el) | 0
36794 al = el
36795 el = dl
36796 dl = rotl(cl, 10)
36797 cl = bl
36798 bl = t
36799
36800 t = (ar + M[offset + zr[i]]) | 0
36801 if (i < 16) {
36802 t += f5(br, cr, dr) + hr[0]
36803 } else if (i < 32) {
36804 t += f4(br, cr, dr) + hr[1]
36805 } else if (i < 48) {
36806 t += f3(br, cr, dr) + hr[2]
36807 } else if (i < 64) {
36808 t += f2(br, cr, dr) + hr[3]
36809 } else {// if (i<80) {
36810 t += f1(br, cr, dr) + hr[4]
36811 }
36812
36813 t = t | 0
36814 t = rotl(t, sr[i])
36815 t = (t + er) | 0
36816 ar = er
36817 er = dr
36818 dr = rotl(cr, 10)
36819 cr = br
36820 br = t
36821 }
36822
36823 // intermediate hash value
36824 t = (H[1] + cl + dr) | 0
36825 H[1] = (H[2] + dl + er) | 0
36826 H[2] = (H[3] + el + ar) | 0
36827 H[3] = (H[4] + al + br) | 0
36828 H[4] = (H[0] + bl + cr) | 0
36829 H[0] = t
36830 }
36831
36832 function f1 (x, y, z) {
36833 return ((x) ^ (y) ^ (z))
36834 }
36835
36836 function f2 (x, y, z) {
36837 return (((x) & (y)) | ((~x) & (z)))
36838 }
36839
36840 function f3 (x, y, z) {
36841 return (((x) | (~(y))) ^ (z))
36842 }
36843
36844 function f4 (x, y, z) {
36845 return (((x) & (z)) | ((y) & (~(z))))
36846 }
36847
36848 function f5 (x, y, z) {
36849 return ((x) ^ ((y) | (~(z))))
36850 }
36851
36852 function rotl (x, n) {
36853 return (x << n) | (x >>> (32 - n))
36854 }
36855
36856 function ripemd160 (message) {
36857 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
36858
36859 if (typeof message === 'string') {
36860 message = new Buffer(message, 'utf8')
36861 }
36862
36863 var m = bytesToWords(message)
36864
36865 var nBitsLeft = message.length * 8
36866 var nBitsTotal = message.length * 8
36867
36868 // Add padding
36869 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
36870 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
36871 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
36872 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
36873 )
36874
36875 for (var i = 0; i < m.length; i += 16) {
36876 processBlock(H, m, i)
36877 }
36878
36879 // swap endian
36880 for (i = 0; i < 5; i++) {
36881 // shortcut
36882 var H_i = H[i]
36883
36884 // Swap
36885 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
36886 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
36887 }
36888
36889 var digestbytes = wordsToBytes(H)
36890 return new Buffer(digestbytes)
36891 }
36892
36893 module.exports = ripemd160
36894
36895 }).call(this,require("buffer").Buffer)
36896 },{"buffer":5}],72:[function(require,module,exports){
36897 (function (Buffer){
36898 const assert = require('assert')
36899 /**
36900 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
36901 * This function takes in a data, convert it to buffer if not, and a length for recursion
36902 *
36903 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
36904 * @returns {Buffer} - returns buffer of encoded data
36905 **/
36906 exports.encode = function (input) {
36907 if (input instanceof Array) {
36908 var output = []
36909 for (var i = 0; i < input.length; i++) {
36910 output.push(exports.encode(input[i]))
36911 }
36912 var buf = Buffer.concat(output)
36913 return Buffer.concat([encodeLength(buf.length, 192), buf])
36914 } else {
36915 input = toBuffer(input)
36916 if (input.length === 1 && input[0] < 128) {
36917 return input
36918 } else {
36919 return Buffer.concat([encodeLength(input.length, 128), input])
36920 }
36921 }
36922 }
36923
36924 function safeParseInt (v, base) {
36925 if (v.slice(0, 2) === '00') {
36926 throw (new Error('invalid RLP: extra zeros'))
36927 }
36928
36929 return parseInt(v, base)
36930 }
36931
36932 function encodeLength (len, offset) {
36933 if (len < 56) {
36934 return new Buffer([len + offset])
36935 } else {
36936 var hexLength = intToHex(len)
36937 var lLength = hexLength.length / 2
36938 var firstByte = intToHex(offset + 55 + lLength)
36939 return new Buffer(firstByte + hexLength, 'hex')
36940 }
36941 }
36942
36943 /**
36944 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}
36945 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
36946 * @returns {Array} - returns decode Array of Buffers containg the original message
36947 **/
36948 exports.decode = function (input, stream) {
36949 if (!input || input.length === 0) {
36950 return new Buffer([])
36951 }
36952
36953 input = toBuffer(input)
36954 var decoded = _decode(input)
36955
36956 if (stream) {
36957 return decoded
36958 }
36959
36960 assert.equal(decoded.remainder.length, 0, 'invalid remainder')
36961 return decoded.data
36962 }
36963
36964 exports.getLength = function (input) {
36965 if (!input || input.length === 0) {
36966 return new Buffer([])
36967 }
36968
36969 input = toBuffer(input)
36970 var firstByte = input[0]
36971 if (firstByte <= 0x7f) {
36972 return input.length
36973 } else if (firstByte <= 0xb7) {
36974 return firstByte - 0x7f
36975 } else if (firstByte <= 0xbf) {
36976 return firstByte - 0xb6
36977 } else if (firstByte <= 0xf7) {
36978 // a list between 0-55 bytes long
36979 return firstByte - 0xbf
36980 } else {
36981 // a list over 55 bytes long
36982 var llength = firstByte - 0xf6
36983 var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
36984 return llength + length
36985 }
36986 }
36987
36988 function _decode (input) {
36989 var length, llength, data, innerRemainder, d
36990 var decoded = []
36991 var firstByte = input[0]
36992
36993 if (firstByte <= 0x7f) {
36994 // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
36995 return {
36996 data: input.slice(0, 1),
36997 remainder: input.slice(1)
36998 }
36999 } else if (firstByte <= 0xb7) {
37000 // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string
37001 // The range of the first byte is [0x80, 0xb7]
37002 length = firstByte - 0x7f
37003
37004 // set 0x80 null to 0
37005 if (firstByte === 0x80) {
37006 data = new Buffer([])
37007 } else {
37008 data = input.slice(1, length)
37009 }
37010
37011 if (length === 2 && data[0] < 0x80) {
37012 throw new Error('invalid rlp encoding: byte must be less 0x80')
37013 }
37014
37015 return {
37016 data: data,
37017 remainder: input.slice(length)
37018 }
37019 } else if (firstByte <= 0xbf) {
37020 llength = firstByte - 0xb6
37021 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
37022 data = input.slice(llength, length + llength)
37023 if (data.length < length) {
37024 throw (new Error('invalid RLP'))
37025 }
37026
37027 return {
37028 data: data,
37029 remainder: input.slice(length + llength)
37030 }
37031 } else if (firstByte <= 0xf7) {
37032 // a list between 0-55 bytes long
37033 length = firstByte - 0xbf
37034 innerRemainder = input.slice(1, length)
37035 while (innerRemainder.length) {
37036 d = _decode(innerRemainder)
37037 decoded.push(d.data)
37038 innerRemainder = d.remainder
37039 }
37040
37041 return {
37042 data: decoded,
37043 remainder: input.slice(length)
37044 }
37045 } else {
37046 // a list over 55 bytes long
37047 llength = firstByte - 0xf6
37048 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
37049 var totalLength = llength + length
37050 if (totalLength > input.length) {
37051 throw new Error('invalid rlp: total length is larger than the data')
37052 }
37053
37054 innerRemainder = input.slice(llength, totalLength)
37055 if (innerRemainder.length === 0) {
37056 throw new Error('invalid rlp, List has a invalid length')
37057 }
37058
37059 while (innerRemainder.length) {
37060 d = _decode(innerRemainder)
37061 decoded.push(d.data)
37062 innerRemainder = d.remainder
37063 }
37064 return {
37065 data: decoded,
37066 remainder: input.slice(totalLength)
37067 }
37068 }
37069 }
37070
37071 function isHexPrefixed (str) {
37072 return str.slice(0, 2) === '0x'
37073 }
37074
37075 // Removes 0x from a given String
37076 function stripHexPrefix (str) {
37077 if (typeof str !== 'string') {
37078 return str
37079 }
37080 return isHexPrefixed(str) ? str.slice(2) : str
37081 }
37082
37083 function intToHex (i) {
37084 var hex = i.toString(16)
37085 if (hex.length % 2) {
37086 hex = '0' + hex
37087 }
37088
37089 return hex
37090 }
37091
37092 function padToEven (a) {
37093 if (a.length % 2) a = '0' + a
37094 return a
37095 }
37096
37097 function intToBuffer (i) {
37098 var hex = intToHex(i)
37099 return new Buffer(hex, 'hex')
37100 }
37101
37102 function toBuffer (v) {
37103 if (!Buffer.isBuffer(v)) {
37104 if (typeof v === 'string') {
37105 if (isHexPrefixed(v)) {
37106 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
37107 } else {
37108 v = new Buffer(v)
37109 }
37110 } else if (typeof v === 'number') {
37111 if (!v) {
37112 v = new Buffer([])
37113 } else {
37114 v = intToBuffer(v)
37115 }
37116 } else if (v === null || v === undefined) {
37117 v = new Buffer([])
37118 } else if (v.toArray) {
37119 // converts a BN to a Buffer
37120 v = new Buffer(v.toArray())
37121 } else {
37122 throw new Error('invalid type')
37123 }
37124 }
37125 return v
37126 }
37127
37128 }).call(this,require("buffer").Buffer)
37129 },{"assert":1,"buffer":5}],73:[function(require,module,exports){
37130 'use strict'
37131 module.exports = require('./lib')(require('./lib/elliptic'))
37132
37133 },{"./lib":77,"./lib/elliptic":76}],74:[function(require,module,exports){
37134 (function (Buffer){
37135 'use strict'
37136 var toString = Object.prototype.toString
37137
37138 // TypeError
37139 exports.isArray = function (value, message) {
37140 if (!Array.isArray(value)) throw TypeError(message)
37141 }
37142
37143 exports.isBoolean = function (value, message) {
37144 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
37145 }
37146
37147 exports.isBuffer = function (value, message) {
37148 if (!Buffer.isBuffer(value)) throw TypeError(message)
37149 }
37150
37151 exports.isFunction = function (value, message) {
37152 if (toString.call(value) !== '[object Function]') throw TypeError(message)
37153 }
37154
37155 exports.isNumber = function (value, message) {
37156 if (toString.call(value) !== '[object Number]') throw TypeError(message)
37157 }
37158
37159 exports.isObject = function (value, message) {
37160 if (toString.call(value) !== '[object Object]') throw TypeError(message)
37161 }
37162
37163 // RangeError
37164 exports.isBufferLength = function (buffer, length, message) {
37165 if (buffer.length !== length) throw RangeError(message)
37166 }
37167
37168 exports.isBufferLength2 = function (buffer, length1, length2, message) {
37169 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
37170 }
37171
37172 exports.isLengthGTZero = function (value, message) {
37173 if (value.length === 0) throw RangeError(message)
37174 }
37175
37176 exports.isNumberInInterval = function (number, x, y, message) {
37177 if (number <= x || number >= y) throw RangeError(message)
37178 }
37179
37180 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
37181 },{"../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":10}],75:[function(require,module,exports){
37182 (function (Buffer){
37183 'use strict'
37184 var bip66 = require('bip66')
37185
37186 var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
37187 // begin
37188 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,
37189 // private key
37190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37191 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37192 // middle
37193 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
37194 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37195 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37196 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
37197 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
37198 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
37199 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37200 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
37201 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,
37202 // public key
37203 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37204 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37205 0x00
37206 ])
37207
37208 var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
37209 // begin
37210 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,
37211 // private key
37212 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37214 // middle
37215 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
37216 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37217 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37218 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
37219 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
37220 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
37221 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,
37222 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
37223 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37224 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
37225 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,
37226 // public key
37227 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37228 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37229 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37230 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37231 0x00
37232 ])
37233
37234 var ZERO_BUFFER_32 = new Buffer([
37235 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37236 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
37237 ])
37238
37239 exports.privateKeyExport = function (privateKey, publicKey, compressed) {
37240 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
37241 privateKey.copy(result, compressed ? 8 : 9)
37242 publicKey.copy(result, compressed ? 181 : 214)
37243 return result
37244 }
37245
37246 exports.privateKeyImport = function (privateKey) {
37247 var length = privateKey.length
37248
37249 // sequence header
37250 var index = 0
37251 if (length < index + 1 || privateKey[index] !== 0x30) return
37252 index += 1
37253
37254 // sequence length constructor
37255 if (length < index + 1 || !(privateKey[index] & 0x80)) return
37256
37257 var lenb = privateKey[index] & 0x7f
37258 index += 1
37259 if (lenb < 1 || lenb > 2) return
37260 if (length < index + lenb) return
37261
37262 // sequence length
37263 var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)
37264 index += lenb
37265 if (length < index + len) return
37266
37267 // sequence element 0: version number (=1)
37268 if (length < index + 3 ||
37269 privateKey[index] !== 0x02 ||
37270 privateKey[index + 1] !== 0x01 ||
37271 privateKey[index + 2] !== 0x01) {
37272 return
37273 }
37274 index += 3
37275
37276 // sequence element 1: octet string, up to 32 bytes
37277 if (length < index + 2 ||
37278 privateKey[index] !== 0x04 ||
37279 privateKey[index + 1] > 0x20 ||
37280 length < index + 2 + privateKey[index + 1]) {
37281 return
37282 }
37283
37284 return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])
37285 }
37286
37287 exports.signatureExport = function (sigObj) {
37288 var r = Buffer.concat([new Buffer([0]), sigObj.r])
37289 for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);
37290
37291 var s = Buffer.concat([new Buffer([0]), sigObj.s])
37292 for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);
37293
37294 return bip66.encode(r.slice(posR), s.slice(posS))
37295 }
37296
37297 exports.signatureImport = function (sig) {
37298 var r = new Buffer(ZERO_BUFFER_32)
37299 var s = new Buffer(ZERO_BUFFER_32)
37300
37301 try {
37302 var sigObj = bip66.decode(sig)
37303 if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)
37304 if (sigObj.r.length > 32) throw new Error('R length is too long')
37305 if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)
37306 if (sigObj.s.length > 32) throw new Error('S length is too long')
37307 } catch (err) {
37308 return
37309 }
37310
37311 sigObj.r.copy(r, 32 - sigObj.r.length)
37312 sigObj.s.copy(s, 32 - sigObj.s.length)
37313
37314 return { r: r, s: s }
37315 }
37316
37317 exports.signatureImportLax = function (sig) {
37318 var r = new Buffer(ZERO_BUFFER_32)
37319 var s = new Buffer(ZERO_BUFFER_32)
37320
37321 var length = sig.length
37322 var index = 0
37323
37324 // sequence tag byte
37325 if (sig[index++] !== 0x30) return
37326
37327 // sequence length byte
37328 var lenbyte = sig[index++]
37329 if (lenbyte & 0x80) {
37330 index += lenbyte - 0x80
37331 if (index > length) return
37332 }
37333
37334 // sequence tag byte for r
37335 if (sig[index++] !== 0x02) return
37336
37337 // length for r
37338 var rlen = sig[index++]
37339 if (rlen & 0x80) {
37340 lenbyte = rlen - 0x80
37341 if (index + lenbyte > length) return
37342 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
37343 for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]
37344 }
37345 if (rlen > length - index) return
37346 var rindex = index
37347 index += rlen
37348
37349 // sequence tag byte for s
37350 if (sig[index++] !== 0x02) return
37351
37352 // length for s
37353 var slen = sig[index++]
37354 if (slen & 0x80) {
37355 lenbyte = slen - 0x80
37356 if (index + lenbyte > length) return
37357 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
37358 for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]
37359 }
37360 if (slen > length - index) return
37361 var sindex = index
37362 index += slen
37363
37364 // ignore leading zeros in r
37365 for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);
37366 // copy r value
37367 if (rlen > 32) return
37368 var rvalue = sig.slice(rindex, rindex + rlen)
37369 rvalue.copy(r, 32 - rvalue.length)
37370
37371 // ignore leading zeros in s
37372 for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);
37373 // copy s value
37374 if (slen > 32) return
37375 var svalue = sig.slice(sindex, sindex + slen)
37376 svalue.copy(s, 32 - svalue.length)
37377
37378 return { r: r, s: s }
37379 }
37380
37381 }).call(this,require("buffer").Buffer)
37382 },{"bip66":32,"buffer":5}],76:[function(require,module,exports){
37383 (function (Buffer){
37384 'use strict'
37385 var createHash = require('create-hash')
37386 var BN = require('bn.js')
37387 var EC = require('elliptic').ec
37388
37389 var messages = require('../messages.json')
37390
37391 var ec = new EC('secp256k1')
37392 var ecparams = ec.curve
37393
37394 function loadCompressedPublicKey (first, xBuffer) {
37395 var x = new BN(xBuffer)
37396
37397 // overflow
37398 if (x.cmp(ecparams.p) >= 0) return null
37399 x = x.toRed(ecparams.red)
37400
37401 // compute corresponding Y
37402 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
37403 if ((first === 0x03) !== y.isOdd()) y = y.redNeg()
37404
37405 return ec.keyPair({ pub: { x: x, y: y } })
37406 }
37407
37408 function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
37409 var x = new BN(xBuffer)
37410 var y = new BN(yBuffer)
37411
37412 // overflow
37413 if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null
37414
37415 x = x.toRed(ecparams.red)
37416 y = y.toRed(ecparams.red)
37417
37418 // is odd flag
37419 if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null
37420
37421 // x*x*x + b = y*y
37422 var x3 = x.redSqr().redIMul(x)
37423 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
37424
37425 return ec.keyPair({ pub: { x: x, y: y } })
37426 }
37427
37428 function loadPublicKey (publicKey) {
37429 var first = publicKey[0]
37430 switch (first) {
37431 case 0x02:
37432 case 0x03:
37433 if (publicKey.length !== 33) return null
37434 return loadCompressedPublicKey(first, publicKey.slice(1, 33))
37435 case 0x04:
37436 case 0x06:
37437 case 0x07:
37438 if (publicKey.length !== 65) return null
37439 return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))
37440 default:
37441 return null
37442 }
37443 }
37444
37445 exports.privateKeyVerify = function (privateKey) {
37446 var bn = new BN(privateKey)
37447 return bn.cmp(ecparams.n) < 0 && !bn.isZero()
37448 }
37449
37450 exports.privateKeyExport = function (privateKey, compressed) {
37451 var d = new BN(privateKey)
37452 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
37453
37454 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
37455 }
37456
37457 exports.privateKeyTweakAdd = function (privateKey, tweak) {
37458 var bn = new BN(tweak)
37459 if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
37460
37461 bn.iadd(new BN(privateKey))
37462 if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)
37463 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
37464
37465 return bn.toArrayLike(Buffer, 'be', 32)
37466 }
37467
37468 exports.privateKeyTweakMul = function (privateKey, tweak) {
37469 var bn = new BN(tweak)
37470 if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
37471
37472 bn.imul(new BN(privateKey))
37473 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
37474
37475 return bn.toArrayLike(Buffer, 'be', 32)
37476 }
37477
37478 exports.publicKeyCreate = function (privateKey, compressed) {
37479 var d = new BN(privateKey)
37480 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
37481
37482 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
37483 }
37484
37485 exports.publicKeyConvert = function (publicKey, compressed) {
37486 var pair = loadPublicKey(publicKey)
37487 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37488
37489 return new Buffer(pair.getPublic(compressed, true))
37490 }
37491
37492 exports.publicKeyVerify = function (publicKey) {
37493 return loadPublicKey(publicKey) !== null
37494 }
37495
37496 exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
37497 var pair = loadPublicKey(publicKey)
37498 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37499
37500 tweak = new BN(tweak)
37501 if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
37502
37503 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
37504 }
37505
37506 exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
37507 var pair = loadPublicKey(publicKey)
37508 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37509
37510 tweak = new BN(tweak)
37511 if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
37512
37513 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
37514 }
37515
37516 exports.publicKeyCombine = function (publicKeys, compressed) {
37517 var pairs = new Array(publicKeys.length)
37518 for (var i = 0; i < publicKeys.length; ++i) {
37519 pairs[i] = loadPublicKey(publicKeys[i])
37520 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37521 }
37522
37523 var point = pairs[0].pub
37524 for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
37525 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
37526
37527 return new Buffer(point.encode(true, compressed))
37528 }
37529
37530 exports.signatureNormalize = function (signature) {
37531 var r = new BN(signature.slice(0, 32))
37532 var s = new BN(signature.slice(32, 64))
37533 if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37534
37535 var result = new Buffer(signature)
37536 if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)
37537
37538 return result
37539 }
37540
37541 exports.signatureExport = function (signature) {
37542 var r = signature.slice(0, 32)
37543 var s = signature.slice(32, 64)
37544 if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37545
37546 return { r: r, s: s }
37547 }
37548
37549 exports.signatureImport = function (sigObj) {
37550 var r = new BN(sigObj.r)
37551 if (r.cmp(ecparams.n) >= 0) r = new BN(0)
37552
37553 var s = new BN(sigObj.s)
37554 if (s.cmp(ecparams.n) >= 0) s = new BN(0)
37555
37556 return Buffer.concat([
37557 r.toArrayLike(Buffer, 'be', 32),
37558 s.toArrayLike(Buffer, 'be', 32)
37559 ])
37560 }
37561
37562 exports.sign = function (message, privateKey, noncefn, data) {
37563 if (typeof noncefn === 'function') {
37564 var getNonce = noncefn
37565 noncefn = function (counter) {
37566 var nonce = getNonce(message, privateKey, null, data, counter)
37567 if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)
37568
37569 return new BN(nonce)
37570 }
37571 }
37572
37573 var d = new BN(privateKey)
37574 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
37575
37576 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
37577 return {
37578 signature: Buffer.concat([
37579 result.r.toArrayLike(Buffer, 'be', 32),
37580 result.s.toArrayLike(Buffer, 'be', 32)
37581 ]),
37582 recovery: result.recoveryParam
37583 }
37584 }
37585
37586 exports.verify = function (message, signature, publicKey) {
37587 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
37588
37589 var sigr = new BN(sigObj.r)
37590 var sigs = new BN(sigObj.s)
37591 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37592 if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false
37593
37594 var pair = loadPublicKey(publicKey)
37595 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37596
37597 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
37598 }
37599
37600 exports.recover = function (message, signature, recovery, compressed) {
37601 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
37602
37603 var sigr = new BN(sigObj.r)
37604 var sigs = new BN(sigObj.s)
37605 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37606
37607 try {
37608 if (sigr.isZero() || sigs.isZero()) throw new Error()
37609
37610 var point = ec.recoverPubKey(message, sigObj, recovery)
37611 return new Buffer(point.encode(true, compressed))
37612 } catch (err) {
37613 throw new Error(messages.ECDSA_RECOVER_FAIL)
37614 }
37615 }
37616
37617 exports.ecdh = function (publicKey, privateKey) {
37618 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
37619 return createHash('sha256').update(shared).digest()
37620 }
37621
37622 exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
37623 var pair = loadPublicKey(publicKey)
37624 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37625
37626 var scalar = new BN(privateKey)
37627 if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
37628
37629 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
37630 }
37631
37632 }).call(this,require("buffer").Buffer)
37633 },{"../messages.json":78,"bn.js":33,"buffer":5,"create-hash":36,"elliptic":39}],77:[function(require,module,exports){
37634 'use strict'
37635 var assert = require('./assert')
37636 var der = require('./der')
37637 var messages = require('./messages.json')
37638
37639 function initCompressedValue (value, defaultValue) {
37640 if (value === undefined) return defaultValue
37641
37642 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
37643 return value
37644 }
37645
37646 module.exports = function (secp256k1) {
37647 return {
37648 privateKeyVerify: function (privateKey) {
37649 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37650 return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)
37651 },
37652
37653 privateKeyExport: function (privateKey, compressed) {
37654 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37655 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37656
37657 compressed = initCompressedValue(compressed, true)
37658 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
37659
37660 return der.privateKeyExport(privateKey, publicKey, compressed)
37661 },
37662
37663 privateKeyImport: function (privateKey) {
37664 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37665
37666 privateKey = der.privateKeyImport(privateKey)
37667 if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
37668
37669 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
37670 },
37671
37672 privateKeyTweakAdd: function (privateKey, tweak) {
37673 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37674 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37675
37676 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37677 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37678
37679 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
37680 },
37681
37682 privateKeyTweakMul: function (privateKey, tweak) {
37683 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37684 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37685
37686 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37687 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37688
37689 return secp256k1.privateKeyTweakMul(privateKey, tweak)
37690 },
37691
37692 publicKeyCreate: function (privateKey, compressed) {
37693 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37694 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37695
37696 compressed = initCompressedValue(compressed, true)
37697
37698 return secp256k1.publicKeyCreate(privateKey, compressed)
37699 },
37700
37701 publicKeyConvert: function (publicKey, compressed) {
37702 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37703 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37704
37705 compressed = initCompressedValue(compressed, true)
37706
37707 return secp256k1.publicKeyConvert(publicKey, compressed)
37708 },
37709
37710 publicKeyVerify: function (publicKey) {
37711 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37712 return secp256k1.publicKeyVerify(publicKey)
37713 },
37714
37715 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
37716 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37717 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37718
37719 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37720 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37721
37722 compressed = initCompressedValue(compressed, true)
37723
37724 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
37725 },
37726
37727 publicKeyTweakMul: function (publicKey, tweak, compressed) {
37728 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37729 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37730
37731 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37732 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37733
37734 compressed = initCompressedValue(compressed, true)
37735
37736 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
37737 },
37738
37739 publicKeyCombine: function (publicKeys, compressed) {
37740 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
37741 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
37742 for (var i = 0; i < publicKeys.length; ++i) {
37743 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
37744 assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37745 }
37746
37747 compressed = initCompressedValue(compressed, true)
37748
37749 return secp256k1.publicKeyCombine(publicKeys, compressed)
37750 },
37751
37752 signatureNormalize: function (signature) {
37753 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37754 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37755
37756 return secp256k1.signatureNormalize(signature)
37757 },
37758
37759 signatureExport: function (signature) {
37760 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37761 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37762
37763 var sigObj = secp256k1.signatureExport(signature)
37764 return der.signatureExport(sigObj)
37765 },
37766
37767 signatureImport: function (sig) {
37768 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37769 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37770
37771 var sigObj = der.signatureImport(sig)
37772 if (sigObj) return secp256k1.signatureImport(sigObj)
37773
37774 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
37775 },
37776
37777 signatureImportLax: function (sig) {
37778 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37779 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37780
37781 var sigObj = der.signatureImportLax(sig)
37782 if (sigObj) return secp256k1.signatureImport(sigObj)
37783
37784 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
37785 },
37786
37787 sign: function (message, privateKey, options) {
37788 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37789 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
37790
37791 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37792 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37793
37794 var data = null
37795 var noncefn = null
37796 if (options !== undefined) {
37797 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
37798
37799 if (options.data !== undefined) {
37800 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
37801 assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)
37802 data = options.data
37803 }
37804
37805 if (options.noncefn !== undefined) {
37806 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
37807 noncefn = options.noncefn
37808 }
37809 }
37810
37811 return secp256k1.sign(message, privateKey, noncefn, data)
37812 },
37813
37814 verify: function (message, signature, publicKey) {
37815 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37816 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
37817
37818 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37819 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37820
37821 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37822 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37823
37824 return secp256k1.verify(message, signature, publicKey)
37825 },
37826
37827 recover: function (message, signature, recovery, compressed) {
37828 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37829 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
37830
37831 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37832 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37833
37834 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
37835 assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)
37836
37837 compressed = initCompressedValue(compressed, true)
37838
37839 return secp256k1.recover(message, signature, recovery, compressed)
37840 },
37841
37842 ecdh: function (publicKey, privateKey) {
37843 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37844 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37845
37846 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37847 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37848
37849 return secp256k1.ecdh(publicKey, privateKey)
37850 },
37851
37852 ecdhUnsafe: function (publicKey, privateKey, compressed) {
37853 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37854 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37855
37856 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37857 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37858
37859 compressed = initCompressedValue(compressed, true)
37860
37861 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
37862 }
37863 }
37864 }
37865
37866 },{"./assert":74,"./der":75,"./messages.json":78}],78:[function(require,module,exports){
37867 module.exports={
37868 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
37869 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
37870 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
37871 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
37872 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
37873 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
37874 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
37875 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
37876 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least 1 element",
37877 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
37878 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
37879 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
37880 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
37881 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
37882 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
37883 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
37884 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
37885 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
37886 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
37887 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
37888 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
37889 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
37890 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
37891 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
37892 "MSG32_TYPE_INVALID": "message should be a Buffer",
37893 "MSG32_LENGTH_INVALID": "message length is invalid",
37894 "OPTIONS_TYPE_INVALID": "options should be an Object",
37895 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
37896 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
37897 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
37898 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
37899 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -1 and 4",
37900 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
37901 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
37902 }
37903
37904 },{}],79:[function(require,module,exports){
37905 (function (Buffer){
37906 // prototype class for hash functions
37907 function Hash (blockSize, finalSize) {
37908 this._block = new Buffer(blockSize)
37909 this._finalSize = finalSize
37910 this._blockSize = blockSize
37911 this._len = 0
37912 this._s = 0
37913 }
37914
37915 Hash.prototype.update = function (data, enc) {
37916 if (typeof data === 'string') {
37917 enc = enc || 'utf8'
37918 data = new Buffer(data, enc)
37919 }
37920
37921 var l = this._len += data.length
37922 var s = this._s || 0
37923 var f = 0
37924 var buffer = this._block
37925
37926 while (s < l) {
37927 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
37928 var ch = (t - f)
37929
37930 for (var i = 0; i < ch; i++) {
37931 buffer[(s % this._blockSize) + i] = data[i + f]
37932 }
37933
37934 s += ch
37935 f += ch
37936
37937 if ((s % this._blockSize) === 0) {
37938 this._update(buffer)
37939 }
37940 }
37941 this._s = s
37942
37943 return this
37944 }
37945
37946 Hash.prototype.digest = function (enc) {
37947 // Suppose the length of the message M, in bits, is l
37948 var l = this._len * 8
37949
37950 // Append the bit 1 to the end of the message
37951 this._block[this._len % this._blockSize] = 0x80
37952
37953 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
37954 this._block.fill(0, this._len % this._blockSize + 1)
37955
37956 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
37957 this._update(this._block)
37958 this._block.fill(0)
37959 }
37960
37961 // to this append the block which is equal to the number l written in binary
37962 // TODO: handle case where l is > Math.pow(2, 29)
37963 this._block.writeInt32BE(l, this._blockSize - 4)
37964
37965 var hash = this._update(this._block) || this._hash()
37966
37967 return enc ? hash.toString(enc) : hash
37968 }
37969
37970 Hash.prototype._update = function () {
37971 throw new Error('_update must be implemented by subclass')
37972 }
37973
37974 module.exports = Hash
37975
37976 }).call(this,require("buffer").Buffer)
37977 },{"buffer":5}],80:[function(require,module,exports){
37978 var exports = module.exports = function SHA (algorithm) {
37979 algorithm = algorithm.toLowerCase()
37980
37981 var Algorithm = exports[algorithm]
37982 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
37983
37984 return new Algorithm()
37985 }
37986
37987 exports.sha = require('./sha')
37988 exports.sha1 = require('./sha1')
37989 exports.sha224 = require('./sha224')
37990 exports.sha256 = require('./sha256')
37991 exports.sha384 = require('./sha384')
37992 exports.sha512 = require('./sha512')
37993
37994 },{"./sha":81,"./sha1":82,"./sha224":83,"./sha256":84,"./sha384":85,"./sha512":86}],81:[function(require,module,exports){
37995 (function (Buffer){
37996 /*
37997 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
37998 * in FIPS PUB 180-1
37999 * This source code is derived from sha1.js of the same repository.
38000 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
38001 * operation was added.
38002 */
38003
38004 var inherits = require('inherits')
38005 var Hash = require('./hash')
38006
38007 var K = [
38008 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
38009 ]
38010
38011 var W = new Array(80)
38012
38013 function Sha () {
38014 this.init()
38015 this._w = W
38016
38017 Hash.call(this, 64, 56)
38018 }
38019
38020 inherits(Sha, Hash)
38021
38022 Sha.prototype.init = function () {
38023 this._a = 0x67452301
38024 this._b = 0xefcdab89
38025 this._c = 0x98badcfe
38026 this._d = 0x10325476
38027 this._e = 0xc3d2e1f0
38028
38029 return this
38030 }
38031
38032 function rotl5 (num) {
38033 return (num << 5) | (num >>> 27)
38034 }
38035
38036 function rotl30 (num) {
38037 return (num << 30) | (num >>> 2)
38038 }
38039
38040 function ft (s, b, c, d) {
38041 if (s === 0) return (b & c) | ((~b) & d)
38042 if (s === 2) return (b & c) | (b & d) | (c & d)
38043 return b ^ c ^ d
38044 }
38045
38046 Sha.prototype._update = function (M) {
38047 var W = this._w
38048
38049 var a = this._a | 0
38050 var b = this._b | 0
38051 var c = this._c | 0
38052 var d = this._d | 0
38053 var e = this._e | 0
38054
38055 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38056 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
38057
38058 for (var j = 0; j < 80; ++j) {
38059 var s = ~~(j / 20)
38060 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
38061
38062 e = d
38063 d = c
38064 c = rotl30(b)
38065 b = a
38066 a = t
38067 }
38068
38069 this._a = (a + this._a) | 0
38070 this._b = (b + this._b) | 0
38071 this._c = (c + this._c) | 0
38072 this._d = (d + this._d) | 0
38073 this._e = (e + this._e) | 0
38074 }
38075
38076 Sha.prototype._hash = function () {
38077 var H = new Buffer(20)
38078
38079 H.writeInt32BE(this._a | 0, 0)
38080 H.writeInt32BE(this._b | 0, 4)
38081 H.writeInt32BE(this._c | 0, 8)
38082 H.writeInt32BE(this._d | 0, 12)
38083 H.writeInt32BE(this._e | 0, 16)
38084
38085 return H
38086 }
38087
38088 module.exports = Sha
38089
38090 }).call(this,require("buffer").Buffer)
38091 },{"./hash":79,"buffer":5,"inherits":63}],82:[function(require,module,exports){
38092 (function (Buffer){
38093 /*
38094 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
38095 * in FIPS PUB 180-1
38096 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
38097 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38098 * Distributed under the BSD License
38099 * See http://pajhome.org.uk/crypt/md5 for details.
38100 */
38101
38102 var inherits = require('inherits')
38103 var Hash = require('./hash')
38104
38105 var K = [
38106 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
38107 ]
38108
38109 var W = new Array(80)
38110
38111 function Sha1 () {
38112 this.init()
38113 this._w = W
38114
38115 Hash.call(this, 64, 56)
38116 }
38117
38118 inherits(Sha1, Hash)
38119
38120 Sha1.prototype.init = function () {
38121 this._a = 0x67452301
38122 this._b = 0xefcdab89
38123 this._c = 0x98badcfe
38124 this._d = 0x10325476
38125 this._e = 0xc3d2e1f0
38126
38127 return this
38128 }
38129
38130 function rotl1 (num) {
38131 return (num << 1) | (num >>> 31)
38132 }
38133
38134 function rotl5 (num) {
38135 return (num << 5) | (num >>> 27)
38136 }
38137
38138 function rotl30 (num) {
38139 return (num << 30) | (num >>> 2)
38140 }
38141
38142 function ft (s, b, c, d) {
38143 if (s === 0) return (b & c) | ((~b) & d)
38144 if (s === 2) return (b & c) | (b & d) | (c & d)
38145 return b ^ c ^ d
38146 }
38147
38148 Sha1.prototype._update = function (M) {
38149 var W = this._w
38150
38151 var a = this._a | 0
38152 var b = this._b | 0
38153 var c = this._c | 0
38154 var d = this._d | 0
38155 var e = this._e | 0
38156
38157 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38158 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
38159
38160 for (var j = 0; j < 80; ++j) {
38161 var s = ~~(j / 20)
38162 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
38163
38164 e = d
38165 d = c
38166 c = rotl30(b)
38167 b = a
38168 a = t
38169 }
38170
38171 this._a = (a + this._a) | 0
38172 this._b = (b + this._b) | 0
38173 this._c = (c + this._c) | 0
38174 this._d = (d + this._d) | 0
38175 this._e = (e + this._e) | 0
38176 }
38177
38178 Sha1.prototype._hash = function () {
38179 var H = new Buffer(20)
38180
38181 H.writeInt32BE(this._a | 0, 0)
38182 H.writeInt32BE(this._b | 0, 4)
38183 H.writeInt32BE(this._c | 0, 8)
38184 H.writeInt32BE(this._d | 0, 12)
38185 H.writeInt32BE(this._e | 0, 16)
38186
38187 return H
38188 }
38189
38190 module.exports = Sha1
38191
38192 }).call(this,require("buffer").Buffer)
38193 },{"./hash":79,"buffer":5,"inherits":63}],83:[function(require,module,exports){
38194 (function (Buffer){
38195 /**
38196 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
38197 * in FIPS 180-2
38198 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
38199 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38200 *
38201 */
38202
38203 var inherits = require('inherits')
38204 var Sha256 = require('./sha256')
38205 var Hash = require('./hash')
38206
38207 var W = new Array(64)
38208
38209 function Sha224 () {
38210 this.init()
38211
38212 this._w = W // new Array(64)
38213
38214 Hash.call(this, 64, 56)
38215 }
38216
38217 inherits(Sha224, Sha256)
38218
38219 Sha224.prototype.init = function () {
38220 this._a = 0xc1059ed8
38221 this._b = 0x367cd507
38222 this._c = 0x3070dd17
38223 this._d = 0xf70e5939
38224 this._e = 0xffc00b31
38225 this._f = 0x68581511
38226 this._g = 0x64f98fa7
38227 this._h = 0xbefa4fa4
38228
38229 return this
38230 }
38231
38232 Sha224.prototype._hash = function () {
38233 var H = new Buffer(28)
38234
38235 H.writeInt32BE(this._a, 0)
38236 H.writeInt32BE(this._b, 4)
38237 H.writeInt32BE(this._c, 8)
38238 H.writeInt32BE(this._d, 12)
38239 H.writeInt32BE(this._e, 16)
38240 H.writeInt32BE(this._f, 20)
38241 H.writeInt32BE(this._g, 24)
38242
38243 return H
38244 }
38245
38246 module.exports = Sha224
38247
38248 }).call(this,require("buffer").Buffer)
38249 },{"./hash":79,"./sha256":84,"buffer":5,"inherits":63}],84:[function(require,module,exports){
38250 (function (Buffer){
38251 /**
38252 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
38253 * in FIPS 180-2
38254 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
38255 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38256 *
38257 */
38258
38259 var inherits = require('inherits')
38260 var Hash = require('./hash')
38261
38262 var K = [
38263 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
38264 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
38265 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
38266 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
38267 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
38268 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
38269 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
38270 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
38271 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
38272 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
38273 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
38274 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
38275 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
38276 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
38277 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
38278 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
38279 ]
38280
38281 var W = new Array(64)
38282
38283 function Sha256 () {
38284 this.init()
38285
38286 this._w = W // new Array(64)
38287
38288 Hash.call(this, 64, 56)
38289 }
38290
38291 inherits(Sha256, Hash)
38292
38293 Sha256.prototype.init = function () {
38294 this._a = 0x6a09e667
38295 this._b = 0xbb67ae85
38296 this._c = 0x3c6ef372
38297 this._d = 0xa54ff53a
38298 this._e = 0x510e527f
38299 this._f = 0x9b05688c
38300 this._g = 0x1f83d9ab
38301 this._h = 0x5be0cd19
38302
38303 return this
38304 }
38305
38306 function ch (x, y, z) {
38307 return z ^ (x & (y ^ z))
38308 }
38309
38310 function maj (x, y, z) {
38311 return (x & y) | (z & (x | y))
38312 }
38313
38314 function sigma0 (x) {
38315 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
38316 }
38317
38318 function sigma1 (x) {
38319 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
38320 }
38321
38322 function gamma0 (x) {
38323 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
38324 }
38325
38326 function gamma1 (x) {
38327 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
38328 }
38329
38330 Sha256.prototype._update = function (M) {
38331 var W = this._w
38332
38333 var a = this._a | 0
38334 var b = this._b | 0
38335 var c = this._c | 0
38336 var d = this._d | 0
38337 var e = this._e | 0
38338 var f = this._f | 0
38339 var g = this._g | 0
38340 var h = this._h | 0
38341
38342 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38343 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
38344
38345 for (var j = 0; j < 64; ++j) {
38346 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
38347 var T2 = (sigma0(a) + maj(a, b, c)) | 0
38348
38349 h = g
38350 g = f
38351 f = e
38352 e = (d + T1) | 0
38353 d = c
38354 c = b
38355 b = a
38356 a = (T1 + T2) | 0
38357 }
38358
38359 this._a = (a + this._a) | 0
38360 this._b = (b + this._b) | 0
38361 this._c = (c + this._c) | 0
38362 this._d = (d + this._d) | 0
38363 this._e = (e + this._e) | 0
38364 this._f = (f + this._f) | 0
38365 this._g = (g + this._g) | 0
38366 this._h = (h + this._h) | 0
38367 }
38368
38369 Sha256.prototype._hash = function () {
38370 var H = new Buffer(32)
38371
38372 H.writeInt32BE(this._a, 0)
38373 H.writeInt32BE(this._b, 4)
38374 H.writeInt32BE(this._c, 8)
38375 H.writeInt32BE(this._d, 12)
38376 H.writeInt32BE(this._e, 16)
38377 H.writeInt32BE(this._f, 20)
38378 H.writeInt32BE(this._g, 24)
38379 H.writeInt32BE(this._h, 28)
38380
38381 return H
38382 }
38383
38384 module.exports = Sha256
38385
38386 }).call(this,require("buffer").Buffer)
38387 },{"./hash":79,"buffer":5,"inherits":63}],85:[function(require,module,exports){
38388 (function (Buffer){
38389 var inherits = require('inherits')
38390 var SHA512 = require('./sha512')
38391 var Hash = require('./hash')
38392
38393 var W = new Array(160)
38394
38395 function Sha384 () {
38396 this.init()
38397 this._w = W
38398
38399 Hash.call(this, 128, 112)
38400 }
38401
38402 inherits(Sha384, SHA512)
38403
38404 Sha384.prototype.init = function () {
38405 this._ah = 0xcbbb9d5d
38406 this._bh = 0x629a292a
38407 this._ch = 0x9159015a
38408 this._dh = 0x152fecd8
38409 this._eh = 0x67332667
38410 this._fh = 0x8eb44a87
38411 this._gh = 0xdb0c2e0d
38412 this._hh = 0x47b5481d
38413
38414 this._al = 0xc1059ed8
38415 this._bl = 0x367cd507
38416 this._cl = 0x3070dd17
38417 this._dl = 0xf70e5939
38418 this._el = 0xffc00b31
38419 this._fl = 0x68581511
38420 this._gl = 0x64f98fa7
38421 this._hl = 0xbefa4fa4
38422
38423 return this
38424 }
38425
38426 Sha384.prototype._hash = function () {
38427 var H = new Buffer(48)
38428
38429 function writeInt64BE (h, l, offset) {
38430 H.writeInt32BE(h, offset)
38431 H.writeInt32BE(l, offset + 4)
38432 }
38433
38434 writeInt64BE(this._ah, this._al, 0)
38435 writeInt64BE(this._bh, this._bl, 8)
38436 writeInt64BE(this._ch, this._cl, 16)
38437 writeInt64BE(this._dh, this._dl, 24)
38438 writeInt64BE(this._eh, this._el, 32)
38439 writeInt64BE(this._fh, this._fl, 40)
38440
38441 return H
38442 }
38443
38444 module.exports = Sha384
38445
38446 }).call(this,require("buffer").Buffer)
38447 },{"./hash":79,"./sha512":86,"buffer":5,"inherits":63}],86:[function(require,module,exports){
38448 (function (Buffer){
38449 var inherits = require('inherits')
38450 var Hash = require('./hash')
38451
38452 var K = [
38453 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
38454 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
38455 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
38456 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
38457 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
38458 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
38459 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
38460 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
38461 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
38462 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
38463 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
38464 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
38465 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
38466 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
38467 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
38468 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
38469 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
38470 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
38471 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
38472 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
38473 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
38474 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
38475 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
38476 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
38477 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
38478 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
38479 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
38480 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
38481 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
38482 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
38483 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
38484 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
38485 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
38486 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
38487 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
38488 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
38489 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
38490 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
38491 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
38492 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
38493 ]
38494
38495 var W = new Array(160)
38496
38497 function Sha512 () {
38498 this.init()
38499 this._w = W
38500
38501 Hash.call(this, 128, 112)
38502 }
38503
38504 inherits(Sha512, Hash)
38505
38506 Sha512.prototype.init = function () {
38507 this._ah = 0x6a09e667
38508 this._bh = 0xbb67ae85
38509 this._ch = 0x3c6ef372
38510 this._dh = 0xa54ff53a
38511 this._eh = 0x510e527f
38512 this._fh = 0x9b05688c
38513 this._gh = 0x1f83d9ab
38514 this._hh = 0x5be0cd19
38515
38516 this._al = 0xf3bcc908
38517 this._bl = 0x84caa73b
38518 this._cl = 0xfe94f82b
38519 this._dl = 0x5f1d36f1
38520 this._el = 0xade682d1
38521 this._fl = 0x2b3e6c1f
38522 this._gl = 0xfb41bd6b
38523 this._hl = 0x137e2179
38524
38525 return this
38526 }
38527
38528 function Ch (x, y, z) {
38529 return z ^ (x & (y ^ z))
38530 }
38531
38532 function maj (x, y, z) {
38533 return (x & y) | (z & (x | y))
38534 }
38535
38536 function sigma0 (x, xl) {
38537 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
38538 }
38539
38540 function sigma1 (x, xl) {
38541 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
38542 }
38543
38544 function Gamma0 (x, xl) {
38545 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
38546 }
38547
38548 function Gamma0l (x, xl) {
38549 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
38550 }
38551
38552 function Gamma1 (x, xl) {
38553 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
38554 }
38555
38556 function Gamma1l (x, xl) {
38557 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
38558 }
38559
38560 function getCarry (a, b) {
38561 return (a >>> 0) < (b >>> 0) ? 1 : 0
38562 }
38563
38564 Sha512.prototype._update = function (M) {
38565 var W = this._w
38566
38567 var ah = this._ah | 0
38568 var bh = this._bh | 0
38569 var ch = this._ch | 0
38570 var dh = this._dh | 0
38571 var eh = this._eh | 0
38572 var fh = this._fh | 0
38573 var gh = this._gh | 0
38574 var hh = this._hh | 0
38575
38576 var al = this._al | 0
38577 var bl = this._bl | 0
38578 var cl = this._cl | 0
38579 var dl = this._dl | 0
38580 var el = this._el | 0
38581 var fl = this._fl | 0
38582 var gl = this._gl | 0
38583 var hl = this._hl | 0
38584
38585 for (var i = 0; i < 32; i += 2) {
38586 W[i] = M.readInt32BE(i * 4)
38587 W[i + 1] = M.readInt32BE(i * 4 + 4)
38588 }
38589 for (; i < 160; i += 2) {
38590 var xh = W[i - 15 * 2]
38591 var xl = W[i - 15 * 2 + 1]
38592 var gamma0 = Gamma0(xh, xl)
38593 var gamma0l = Gamma0l(xl, xh)
38594
38595 xh = W[i - 2 * 2]
38596 xl = W[i - 2 * 2 + 1]
38597 var gamma1 = Gamma1(xh, xl)
38598 var gamma1l = Gamma1l(xl, xh)
38599
38600 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
38601 var Wi7h = W[i - 7 * 2]
38602 var Wi7l = W[i - 7 * 2 + 1]
38603
38604 var Wi16h = W[i - 16 * 2]
38605 var Wi16l = W[i - 16 * 2 + 1]
38606
38607 var Wil = (gamma0l + Wi7l) | 0
38608 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
38609 Wil = (Wil + gamma1l) | 0
38610 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
38611 Wil = (Wil + Wi16l) | 0
38612 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
38613
38614 W[i] = Wih
38615 W[i + 1] = Wil
38616 }
38617
38618 for (var j = 0; j < 160; j += 2) {
38619 Wih = W[j]
38620 Wil = W[j + 1]
38621
38622 var majh = maj(ah, bh, ch)
38623 var majl = maj(al, bl, cl)
38624
38625 var sigma0h = sigma0(ah, al)
38626 var sigma0l = sigma0(al, ah)
38627 var sigma1h = sigma1(eh, el)
38628 var sigma1l = sigma1(el, eh)
38629
38630 // t1 = h + sigma1 + ch + K[j] + W[j]
38631 var Kih = K[j]
38632 var Kil = K[j + 1]
38633
38634 var chh = Ch(eh, fh, gh)
38635 var chl = Ch(el, fl, gl)
38636
38637 var t1l = (hl + sigma1l) | 0
38638 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
38639 t1l = (t1l + chl) | 0
38640 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
38641 t1l = (t1l + Kil) | 0
38642 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
38643 t1l = (t1l + Wil) | 0
38644 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
38645
38646 // t2 = sigma0 + maj
38647 var t2l = (sigma0l + majl) | 0
38648 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
38649
38650 hh = gh
38651 hl = gl
38652 gh = fh
38653 gl = fl
38654 fh = eh
38655 fl = el
38656 el = (dl + t1l) | 0
38657 eh = (dh + t1h + getCarry(el, dl)) | 0
38658 dh = ch
38659 dl = cl
38660 ch = bh
38661 cl = bl
38662 bh = ah
38663 bl = al
38664 al = (t1l + t2l) | 0
38665 ah = (t1h + t2h + getCarry(al, t1l)) | 0
38666 }
38667
38668 this._al = (this._al + al) | 0
38669 this._bl = (this._bl + bl) | 0
38670 this._cl = (this._cl + cl) | 0
38671 this._dl = (this._dl + dl) | 0
38672 this._el = (this._el + el) | 0
38673 this._fl = (this._fl + fl) | 0
38674 this._gl = (this._gl + gl) | 0
38675 this._hl = (this._hl + hl) | 0
38676
38677 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
38678 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
38679 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
38680 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
38681 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
38682 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
38683 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
38684 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
38685 }
38686
38687 Sha512.prototype._hash = function () {
38688 var H = new Buffer(64)
38689
38690 function writeInt64BE (h, l, offset) {
38691 H.writeInt32BE(h, offset)
38692 H.writeInt32BE(l, offset + 4)
38693 }
38694
38695 writeInt64BE(this._ah, this._al, 0)
38696 writeInt64BE(this._bh, this._bl, 8)
38697 writeInt64BE(this._ch, this._cl, 16)
38698 writeInt64BE(this._dh, this._dl, 24)
38699 writeInt64BE(this._eh, this._el, 32)
38700 writeInt64BE(this._fh, this._fl, 40)
38701 writeInt64BE(this._gh, this._gl, 48)
38702 writeInt64BE(this._hh, this._hl, 56)
38703
38704 return H
38705 }
38706
38707 module.exports = Sha512
38708
38709 }).call(this,require("buffer").Buffer)
38710 },{"./hash":79,"buffer":5,"inherits":63}],87:[function(require,module,exports){
38711 var isHexPrefixed = require('is-hex-prefixed');
38712
38713 /**
38714 * Removes '0x' from a given `String` is present
38715 * @param {String} str the string value
38716 * @return {String|Optional} a string by pass if necessary
38717 */
38718 module.exports = function stripHexPrefix(str) {
38719 if (typeof str !== 'string') {
38720 return str;
38721 }
38722
38723 return isHexPrefixed(str) ? str.slice(2) : str;
38724 }
38725
38726 },{"is-hex-prefixed":64}]},{},[31])(31)
38727 });</script>
38728 <script>function convertRippleAdrr(address) {
38729 return window.basex('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz').encode(
38730 window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(address)
38731 )
38732 }
38733
38734 function convertRipplePriv(priv) {
38735 return window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(priv).toString("hex").slice(2,66)
38736 }
38737
38738 </script>
38739 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
38740
38741 //// base.js
38742
38743 /** @fileOverview Javascript cryptography implementation.
38744 *
38745 * Crush to remove comments, shorten variable names and
38746 * generally reduce transmission size.
38747 *
38748 * @author Emily Stark
38749 * @author Mike Hamburg
38750 * @author Dan Boneh
38751 */
38752
38753 "use strict";
38754 /*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
38755 /*global document, window, escape, unescape, module, require, Uint32Array */
38756
38757 /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
38758 var sjcl = {
38759 /** @namespace Symmetric ciphers. */
38760 cipher: {},
38761
38762 /** @namespace Hash functions. Right now only SHA256 is implemented. */
38763 hash: {},
38764
38765 /** @namespace Key exchange functions. Right now only SRP is implemented. */
38766 keyexchange: {},
38767
38768 /** @namespace Block cipher modes of operation. */
38769 mode: {},
38770
38771 /** @namespace Miscellaneous. HMAC and PBKDF2. */
38772 misc: {},
38773
38774 /**
38775 * @namespace Bit array encoders and decoders.
38776 *
38777 * @description
38778 * The members of this namespace are functions which translate between
38779 * SJCL's bitArrays and other objects (usually strings). Because it
38780 * isn't always clear which direction is encoding and which is decoding,
38781 * the method names are "fromBits" and "toBits".
38782 */
38783 codec: {},
38784
38785 /** @namespace Exceptions. */
38786 exception: {
38787 /** @constructor Ciphertext is corrupt. */
38788 corrupt: function(message) {
38789 this.toString = function() { return "CORRUPT: "+this.message; };
38790 this.message = message;
38791 },
38792
38793 /** @constructor Invalid parameter. */
38794 invalid: function(message) {
38795 this.toString = function() { return "INVALID: "+this.message; };
38796 this.message = message;
38797 },
38798
38799 /** @constructor Bug or missing feature in SJCL. @constructor */
38800 bug: function(message) {
38801 this.toString = function() { return "BUG: "+this.message; };
38802 this.message = message;
38803 },
38804
38805 /** @constructor Something isn't ready. */
38806 notReady: function(message) {
38807 this.toString = function() { return "NOT READY: "+this.message; };
38808 this.message = message;
38809 }
38810 }
38811 };
38812
38813 if(typeof module !== 'undefined' && module.exports){
38814 module.exports = sjcl;
38815 }
38816 if (typeof define === "function") {
38817 define([], function () {
38818 return sjcl;
38819 });
38820 }
38821
38822
38823 //// bitArray.js
38824
38825 /** @fileOverview Arrays of bits, encoded as arrays of Numbers.
38826 *
38827 * @author Emily Stark
38828 * @author Mike Hamburg
38829 * @author Dan Boneh
38830 */
38831
38832 /** @namespace Arrays of bits, encoded as arrays of Numbers.
38833 *
38834 * @description
38835 * <p>
38836 * These objects are the currency accepted by SJCL's crypto functions.
38837 * </p>
38838 *
38839 * <p>
38840 * Most of our crypto primitives operate on arrays of 4-byte words internally,
38841 * but many of them can take arguments that are not a multiple of 4 bytes.
38842 * This library encodes arrays of bits (whose size need not be a multiple of 8
38843 * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
38844 * array of words, 32 bits at a time. Since the words are double-precision
38845 * floating point numbers, they fit some extra data. We use this (in a private,
38846 * possibly-changing manner) to encode the number of bits actually present
38847 * in the last word of the array.
38848 * </p>
38849 *
38850 * <p>
38851 * Because bitwise ops clear this out-of-band data, these arrays can be passed
38852 * to ciphers like AES which want arrays of words.
38853 * </p>
38854 */
38855 sjcl.bitArray = {
38856 /**
38857 * Array slices in units of bits.
38858 * @param {bitArray} a The array to slice.
38859 * @param {Number} bstart The offset to the start of the slice, in bits.
38860 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
38861 * slice until the end of the array.
38862 * @return {bitArray} The requested slice.
38863 */
38864 bitSlice: function (a, bstart, bend) {
38865 a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
38866 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
38867 },
38868
38869 /**
38870 * Extract a number packed into a bit array.
38871 * @param {bitArray} a The array to slice.
38872 * @param {Number} bstart The offset to the start of the slice, in bits.
38873 * @param {Number} length The length of the number to extract.
38874 * @return {Number} The requested slice.
38875 */
38876 extract: function(a, bstart, blength) {
38877 // FIXME: this Math.floor is not necessary at all, but for some reason
38878 // seems to suppress a bug in the Chromium JIT.
38879 var x, sh = Math.floor((-bstart-blength) & 31);
38880 if ((bstart + blength - 1 ^ bstart) & -32) {
38881 // it crosses a boundary
38882 x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
38883 } else {
38884 // within a single word
38885 x = a[bstart/32|0] >>> sh;
38886 }
38887 return x & ((1<<blength) - 1);
38888 },
38889
38890 /**
38891 * Concatenate two bit arrays.
38892 * @param {bitArray} a1 The first array.
38893 * @param {bitArray} a2 The second array.
38894 * @return {bitArray} The concatenation of a1 and a2.
38895 */
38896 concat: function (a1, a2) {
38897 if (a1.length === 0 || a2.length === 0) {
38898 return a1.concat(a2);
38899 }
38900
38901 var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
38902 if (shift === 32) {
38903 return a1.concat(a2);
38904 } else {
38905 return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
38906 }
38907 },
38908
38909 /**
38910 * Find the length of an array of bits.
38911 * @param {bitArray} a The array.
38912 * @return {Number} The length of a, in bits.
38913 */
38914 bitLength: function (a) {
38915 var l = a.length, x;
38916 if (l === 0) { return 0; }
38917 x = a[l - 1];
38918 return (l-1) * 32 + sjcl.bitArray.getPartial(x);
38919 },
38920
38921 /**
38922 * Truncate an array.
38923 * @param {bitArray} a The array.
38924 * @param {Number} len The length to truncate to, in bits.
38925 * @return {bitArray} A new array, truncated to len bits.
38926 */
38927 clamp: function (a, len) {
38928 if (a.length * 32 < len) { return a; }
38929 a = a.slice(0, Math.ceil(len / 32));
38930 var l = a.length;
38931 len = len & 31;
38932 if (l > 0 && len) {
38933 a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
38934 }
38935 return a;
38936 },
38937
38938 /**
38939 * Make a partial word for a bit array.
38940 * @param {Number} len The number of bits in the word.
38941 * @param {Number} x The bits.
38942 * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
38943 * @return {Number} The partial word.
38944 */
38945 partial: function (len, x, _end) {
38946 if (len === 32) { return x; }
38947 return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
38948 },
38949
38950 /**
38951 * Get the number of bits used by a partial word.
38952 * @param {Number} x The partial word.
38953 * @return {Number} The number of bits used by the partial word.
38954 */
38955 getPartial: function (x) {
38956 return Math.round(x/0x10000000000) || 32;
38957 },
38958
38959 /**
38960 * Compare two arrays for equality in a predictable amount of time.
38961 * @param {bitArray} a The first array.
38962 * @param {bitArray} b The second array.
38963 * @return {boolean} true if a == b; false otherwise.
38964 */
38965 equal: function (a, b) {
38966 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
38967 return false;
38968 }
38969 var x = 0, i;
38970 for (i=0; i<a.length; i++) {
38971 x |= a[i]^b[i];
38972 }
38973 return (x === 0);
38974 },
38975
38976 /** Shift an array right.
38977 * @param {bitArray} a The array to shift.
38978 * @param {Number} shift The number of bits to shift.
38979 * @param {Number} [carry=0] A byte to carry in
38980 * @param {bitArray} [out=[]] An array to prepend to the output.
38981 * @private
38982 */
38983 _shiftRight: function (a, shift, carry, out) {
38984 var i, last2=0, shift2;
38985 if (out === undefined) { out = []; }
38986
38987 for (; shift >= 32; shift -= 32) {
38988 out.push(carry);
38989 carry = 0;
38990 }
38991 if (shift === 0) {
38992 return out.concat(a);
38993 }
38994
38995 for (i=0; i<a.length; i++) {
38996 out.push(carry | a[i]>>>shift);
38997 carry = a[i] << (32-shift);
38998 }
38999 last2 = a.length ? a[a.length-1] : 0;
39000 shift2 = sjcl.bitArray.getPartial(last2);
39001 out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
39002 return out;
39003 },
39004
39005 /** xor a block of 4 words together.
39006 * @private
39007 */
39008 _xor4: function(x,y) {
39009 return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
39010 },
39011
39012 /** byteswap a word array inplace.
39013 * (does not handle partial words)
39014 * @param {sjcl.bitArray} a word array
39015 * @return {sjcl.bitArray} byteswapped array
39016 */
39017 byteswapM: function(a) {
39018 var i, v, m = 0xff00;
39019 for (i = 0; i < a.length; ++i) {
39020 v = a[i];
39021 a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24);
39022 }
39023 return a;
39024 }
39025 };
39026
39027
39028 //// codecString.js
39029
39030 /** @fileOverview Bit array codec implementations.
39031 *
39032 * @author Emily Stark
39033 * @author Mike Hamburg
39034 * @author Dan Boneh
39035 */
39036
39037 /** @namespace UTF-8 strings */
39038 sjcl.codec.utf8String = {
39039 /** Convert from a bitArray to a UTF-8 string. */
39040 fromBits: function (arr) {
39041 var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
39042 for (i=0; i<bl/8; i++) {
39043 if ((i&3) === 0) {
39044 tmp = arr[i/4];
39045 }
39046 out += String.fromCharCode(tmp >>> 24);
39047 tmp <<= 8;
39048 }
39049 return decodeURIComponent(escape(out));
39050 },
39051
39052 /** Convert from a UTF-8 string to a bitArray. */
39053 toBits: function (str) {
39054 str = unescape(encodeURIComponent(str));
39055 var out = [], i, tmp=0;
39056 for (i=0; i<str.length; i++) {
39057 tmp = tmp << 8 | str.charCodeAt(i);
39058 if ((i&3) === 3) {
39059 out.push(tmp);
39060 tmp = 0;
39061 }
39062 }
39063 if (i&3) {
39064 out.push(sjcl.bitArray.partial(8*(i&3), tmp));
39065 }
39066 return out;
39067 }
39068 };
39069
39070
39071 //// codecHex.js
39072
39073 /** @fileOverview Bit array codec implementations.
39074 *
39075 * @author Emily Stark
39076 * @author Mike Hamburg
39077 * @author Dan Boneh
39078 */
39079
39080 /** @namespace Hexadecimal */
39081 sjcl.codec.hex = {
39082 /** Convert from a bitArray to a hex string. */
39083 fromBits: function (arr) {
39084 var out = "", i;
39085 for (i=0; i<arr.length; i++) {
39086 out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4);
39087 }
39088 return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 ");
39089 },
39090 /** Convert from a hex string to a bitArray. */
39091 toBits: function (str) {
39092 var i, out=[], len;
39093 str = str.replace(/\s|0x/g, "");
39094 len = str.length;
39095 str = str + "00000000";
39096 for (i=0; i<str.length; i+=8) {
39097 out.push(parseInt(str.substr(i,8),16)^0);
39098 }
39099 return sjcl.bitArray.clamp(out, len*4);
39100 }
39101 };
39102
39103
39104 //// sha512.js
39105
39106 /** @fileOverview Javascript SHA-512 implementation.
39107 *
39108 * This implementation was written for CryptoJS by Jeff Mott and adapted for
39109 * SJCL by Stefan Thomas.
39110 *
39111 * CryptoJS (c) 20092012 by Jeff Mott. All rights reserved.
39112 * Released with New BSD License
39113 *
39114 * @author Emily Stark
39115 * @author Mike Hamburg
39116 * @author Dan Boneh
39117 * @author Jeff Mott
39118 * @author Stefan Thomas
39119 */
39120
39121 /**
39122 * Context for a SHA-512 operation in progress.
39123 * @constructor
39124 * @class Secure Hash Algorithm, 512 bits.
39125 */
39126 sjcl.hash.sha512 = function (hash) {
39127 if (!this._key[0]) { this._precompute(); }
39128 if (hash) {
39129 this._h = hash._h.slice(0);
39130 this._buffer = hash._buffer.slice(0);
39131 this._length = hash._length;
39132 } else {
39133 this.reset();
39134 }
39135 };
39136
39137 /**
39138 * Hash a string or an array of words.
39139 * @static
39140 * @param {bitArray|String} data the data to hash.
39141 * @return {bitArray} The hash value, an array of 16 big-endian words.
39142 */
39143 sjcl.hash.sha512.hash = function (data) {
39144 return (new sjcl.hash.sha512()).update(data).finalize();
39145 };
39146
39147 sjcl.hash.sha512.prototype = {
39148 /**
39149 * The hash's block size, in bits.
39150 * @constant
39151 */
39152 blockSize: 1024,
39153
39154 /**
39155 * Reset the hash state.
39156 * @return this
39157 */
39158 reset:function () {
39159 this._h = this._init.slice(0);
39160 this._buffer = [];
39161 this._length = 0;
39162 return this;
39163 },
39164
39165 /**
39166 * Input several words to the hash.
39167 * @param {bitArray|String} data the data to hash.
39168 * @return this
39169 */
39170 update: function (data) {
39171 if (typeof data === "string") {
39172 data = sjcl.codec.utf8String.toBits(data);
39173 }
39174 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
39175 ol = this._length,
39176 nl = this._length = ol + sjcl.bitArray.bitLength(data);
39177 for (i = 1024+ol & -1024; i <= nl; i+= 1024) {
39178 this._block(b.splice(0,32));
39179 }
39180 return this;
39181 },
39182
39183 /**
39184 * Complete hashing and output the hash value.
39185 * @return {bitArray} The hash value, an array of 16 big-endian words.
39186 */
39187 finalize:function () {
39188 var i, b = this._buffer, h = this._h;
39189
39190 // Round out and push the buffer
39191 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
39192
39193 // Round out the buffer to a multiple of 32 words, less the 4 length words.
39194 for (i = b.length + 4; i & 31; i++) {
39195 b.push(0);
39196 }
39197
39198 // append the length
39199 b.push(0);
39200 b.push(0);
39201 b.push(Math.floor(this._length / 0x100000000));
39202 b.push(this._length | 0);
39203
39204 while (b.length) {
39205 this._block(b.splice(0,32));
39206 }
39207
39208 this.reset();
39209 return h;
39210 },
39211
39212 /**
39213 * The SHA-512 initialization vector, to be precomputed.
39214 * @private
39215 */
39216 _init:[],
39217
39218 /**
39219 * Least significant 24 bits of SHA512 initialization values.
39220 *
39221 * Javascript only has 53 bits of precision, so we compute the 40 most
39222 * significant bits and add the remaining 24 bits as constants.
39223 *
39224 * @private
39225 */
39226 _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ],
39227
39228 /*
39229 _init:
39230 [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
39231 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179],
39232 */
39233
39234 /**
39235 * The SHA-512 hash key, to be precomputed.
39236 * @private
39237 */
39238 _key:[],
39239
39240 /**
39241 * Least significant 24 bits of SHA512 key values.
39242 * @private
39243 */
39244 _keyr:
39245 [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118,
39246 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694,
39247 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5,
39248 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70,
39249 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b,
39250 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8,
39251 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3,
39252 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b,
39253 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b,
39254 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817],
39255
39256 /*
39257 _key:
39258 [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
39259 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
39260 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
39261 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
39262 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
39263 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
39264 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
39265 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
39266 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
39267 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
39268 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
39269 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
39270 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
39271 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
39272 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
39273 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
39274 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
39275 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
39276 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
39277 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817],
39278 */
39279
39280 /**
39281 * Function to precompute _init and _key.
39282 * @private
39283 */
39284 _precompute: function () {
39285 // XXX: This code is for precomputing the SHA256 constants, change for
39286 // SHA512 and re-enable.
39287 var i = 0, prime = 2, factor;
39288
39289 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
39290 function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; }
39291
39292 outer: for (; i<80; prime++) {
39293 for (factor=2; factor*factor <= prime; factor++) {
39294 if (prime % factor === 0) {
39295 // not a prime
39296 continue outer;
39297 }
39298 }
39299
39300 if (i<8) {
39301 this._init[i*2] = frac(Math.pow(prime, 1/2));
39302 this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i];
39303 }
39304 this._key[i*2] = frac(Math.pow(prime, 1/3));
39305 this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i];
39306 i++;
39307 }
39308 },
39309
39310 /**
39311 * Perform one cycle of SHA-512.
39312 * @param {bitArray} words one block of words.
39313 * @private
39314 */
39315 _block:function (words) {
39316 var i, wrh, wrl,
39317 w = words.slice(0),
39318 h = this._h,
39319 k = this._key,
39320 h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3],
39321 h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7],
39322 h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11],
39323 h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15];
39324
39325 // Working variables
39326 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
39327 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
39328 eh = h4h, el = h4l, fh = h5h, fl = h5l,
39329 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
39330
39331 for (i=0; i<80; i++) {
39332 // load up the input word for this round
39333 if (i<16) {
39334 wrh = w[i * 2];
39335 wrl = w[i * 2 + 1];
39336 } else {
39337 // Gamma0
39338 var gamma0xh = w[(i-15) * 2];
39339 var gamma0xl = w[(i-15) * 2 + 1];
39340 var gamma0h =
39341 ((gamma0xl << 31) | (gamma0xh >>> 1)) ^
39342 ((gamma0xl << 24) | (gamma0xh >>> 8)) ^
39343 (gamma0xh >>> 7);
39344 var gamma0l =
39345 ((gamma0xh << 31) | (gamma0xl >>> 1)) ^
39346 ((gamma0xh << 24) | (gamma0xl >>> 8)) ^
39347 ((gamma0xh << 25) | (gamma0xl >>> 7));
39348
39349 // Gamma1
39350 var gamma1xh = w[(i-2) * 2];
39351 var gamma1xl = w[(i-2) * 2 + 1];
39352 var gamma1h =
39353 ((gamma1xl << 13) | (gamma1xh >>> 19)) ^
39354 ((gamma1xh << 3) | (gamma1xl >>> 29)) ^
39355 (gamma1xh >>> 6);
39356 var gamma1l =
39357 ((gamma1xh << 13) | (gamma1xl >>> 19)) ^
39358 ((gamma1xl << 3) | (gamma1xh >>> 29)) ^
39359 ((gamma1xh << 26) | (gamma1xl >>> 6));
39360
39361 // Shortcuts
39362 var wr7h = w[(i-7) * 2];
39363 var wr7l = w[(i-7) * 2 + 1];
39364
39365 var wr16h = w[(i-16) * 2];
39366 var wr16l = w[(i-16) * 2 + 1];
39367
39368 // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16)
39369 wrl = gamma0l + wr7l;
39370 wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0);
39371 wrl += gamma1l;
39372 wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0);
39373 wrl += wr16l;
39374 wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0);
39375 }
39376
39377 w[i*2] = wrh |= 0;
39378 w[i*2 + 1] = wrl |= 0;
39379
39380 // Ch
39381 var chh = (eh & fh) ^ (~eh & gh);
39382 var chl = (el & fl) ^ (~el & gl);
39383
39384 // Maj
39385 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
39386 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
39387
39388 // Sigma0
39389 var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
39390 var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
39391
39392 // Sigma1
39393 var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9));
39394 var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9));
39395
39396 // K(round)
39397 var krh = k[i*2];
39398 var krl = k[i*2+1];
39399
39400 // t1 = h + sigma1 + ch + K(round) + W(round)
39401 var t1l = hl + sigma1l;
39402 var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
39403 t1l += chl;
39404 t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
39405 t1l += krl;
39406 t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0);
39407 t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972
39408 t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0);
39409
39410 // t2 = sigma0 + maj
39411 var t2l = sigma0l + majl;
39412 var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
39413
39414 // Update working variables
39415 hh = gh;
39416 hl = gl;
39417 gh = fh;
39418 gl = fl;
39419 fh = eh;
39420 fl = el;
39421 el = (dl + t1l) | 0;
39422 eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
39423 dh = ch;
39424 dl = cl;
39425 ch = bh;
39426 cl = bl;
39427 bh = ah;
39428 bl = al;
39429 al = (t1l + t2l) | 0;
39430 ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
39431 }
39432
39433 // Intermediate hash
39434 h0l = h[1] = (h0l + al) | 0;
39435 h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0;
39436 h1l = h[3] = (h1l + bl) | 0;
39437 h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0;
39438 h2l = h[5] = (h2l + cl) | 0;
39439 h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0;
39440 h3l = h[7] = (h3l + dl) | 0;
39441 h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
39442 h4l = h[9] = (h4l + el) | 0;
39443 h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0;
39444 h5l = h[11] = (h5l + fl) | 0;
39445 h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0;
39446 h6l = h[13] = (h6l + gl) | 0;
39447 h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0;
39448 h7l = h[15] = (h7l + hl) | 0;
39449 h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
39450 }
39451 };
39452
39453
39454 //// hmac.js
39455
39456 /** @fileOverview HMAC implementation.
39457 *
39458 * @author Emily Stark
39459 * @author Mike Hamburg
39460 * @author Dan Boneh
39461 */
39462
39463 /** HMAC with the specified hash function.
39464 * @constructor
39465 * @param {bitArray} key the key for HMAC.
39466 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
39467 */
39468 sjcl.misc.hmac = function (key, Hash) {
39469 this._hash = Hash = Hash || sjcl.hash.sha256;
39470 var exKey = [[],[]], i,
39471 bs = Hash.prototype.blockSize / 32;
39472 this._baseHash = [new Hash(), new Hash()];
39473
39474 if (key.length > bs) {
39475 key = Hash.hash(key);
39476 }
39477
39478 for (i=0; i<bs; i++) {
39479 exKey[0][i] = key[i]^0x36363636;
39480 exKey[1][i] = key[i]^0x5C5C5C5C;
39481 }
39482
39483 this._baseHash[0].update(exKey[0]);
39484 this._baseHash[1].update(exKey[1]);
39485 this._resultHash = new Hash(this._baseHash[0]);
39486 };
39487
39488 /** HMAC with the specified hash function. Also called encrypt since it's a prf.
39489 * @param {bitArray|String} data The data to mac.
39490 */
39491 sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
39492 if (!this._updated) {
39493 this.update(data);
39494 return this.digest(data);
39495 } else {
39496 throw new sjcl.exception.invalid("encrypt on already updated hmac called!");
39497 }
39498 };
39499
39500 sjcl.misc.hmac.prototype.reset = function () {
39501 this._resultHash = new this._hash(this._baseHash[0]);
39502 this._updated = false;
39503 };
39504
39505 sjcl.misc.hmac.prototype.update = function (data) {
39506 this._updated = true;
39507 this._resultHash.update(data);
39508 };
39509
39510 sjcl.misc.hmac.prototype.digest = function () {
39511 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize();
39512
39513 this.reset();
39514
39515 return result;
39516 };
39517
39518
39519 //// pbkdf2.js
39520
39521
39522 /** @fileOverview Password-based key-derivation function, version 2.0.
39523 *
39524 * @author Emily Stark
39525 * @author Mike Hamburg
39526 * @author Dan Boneh
39527 */
39528
39529 /** Password-Based Key-Derivation Function, version 2.0.
39530 *
39531 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
39532 *
39533 * This is the method specified by RSA's PKCS #5 standard.
39534 *
39535 * @param {bitArray|String} password The password.
39536 * @param {bitArray|String} salt The salt. Should have lots of entropy.
39537 * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure.
39538 * @param {Number} [length] The length of the derived key. Defaults to the
39539 output size of the hash function.
39540 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
39541 * @return {bitArray} the derived key.
39542 */
39543 sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
39544 count = count || 1000;
39545
39546 if (length < 0 || count < 0) {
39547 throw sjcl.exception.invalid("invalid params to pbkdf2");
39548 }
39549
39550 if (typeof password === "string") {
39551 password = sjcl.codec.utf8String.toBits(password);
39552 }
39553
39554 if (typeof salt === "string") {
39555 salt = sjcl.codec.utf8String.toBits(salt);
39556 }
39557
39558 Prff = Prff || sjcl.misc.hmac;
39559
39560 var prf = new Prff(password),
39561 u, ui, i, j, k, out = [], b = sjcl.bitArray;
39562
39563 for (k = 1; 32 * out.length < (length || 1); k++) {
39564 u = ui = prf.encrypt(b.concat(salt,[k]));
39565
39566 for (i=1; i<count; i++) {
39567 ui = prf.encrypt(ui);
39568 for (j=0; j<ui.length; j++) {
39569 u[j] ^= ui[j];
39570 }
39571 }
39572
39573 out = out.concat(u);
39574 }
39575
39576 if (length) { out = b.clamp(out, length); }
39577
39578 return out;
39579 };
39580
39581
39582 //// sha256.js
39583
39584 /** @fileOverview Javascript SHA-256 implementation.
39585 *
39586 * An older version of this implementation is available in the public
39587 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
39588 * Stanford University 2008-2010 and BSD-licensed for liability
39589 * reasons.
39590 *
39591 * Special thanks to Aldo Cortesi for pointing out several bugs in
39592 * this code.
39593 *
39594 * @author Emily Stark
39595 * @author Mike Hamburg
39596 * @author Dan Boneh
39597 */
39598
39599 /**
39600 * Context for a SHA-256 operation in progress.
39601 * @constructor
39602 * @class Secure Hash Algorithm, 256 bits.
39603 */
39604 sjcl.hash.sha256 = function (hash) {
39605 if (!this._key[0]) { this._precompute(); }
39606 if (hash) {
39607 this._h = hash._h.slice(0);
39608 this._buffer = hash._buffer.slice(0);
39609 this._length = hash._length;
39610 } else {
39611 this.reset();
39612 }
39613 };
39614
39615 /**
39616 * Hash a string or an array of words.
39617 * @static
39618 * @param {bitArray|String} data the data to hash.
39619 * @return {bitArray} The hash value, an array of 16 big-endian words.
39620 */
39621 sjcl.hash.sha256.hash = function (data) {
39622 return (new sjcl.hash.sha256()).update(data).finalize();
39623 };
39624
39625 sjcl.hash.sha256.prototype = {
39626 /**
39627 * The hash's block size, in bits.
39628 * @constant
39629 */
39630 blockSize: 512,
39631
39632 /**
39633 * Reset the hash state.
39634 * @return this
39635 */
39636 reset:function () {
39637 this._h = this._init.slice(0);
39638 this._buffer = [];
39639 this._length = 0;
39640 return this;
39641 },
39642
39643 /**
39644 * Input several words to the hash.
39645 * @param {bitArray|String} data the data to hash.
39646 * @return this
39647 */
39648 update: function (data) {
39649 if (typeof data === "string") {
39650 data = sjcl.codec.utf8String.toBits(data);
39651 }
39652 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
39653 ol = this._length,
39654 nl = this._length = ol + sjcl.bitArray.bitLength(data);
39655 for (i = 512+ol & -512; i <= nl; i+= 512) {
39656 this._block(b.splice(0,16));
39657 }
39658 return this;
39659 },
39660
39661 /**
39662 * Complete hashing and output the hash value.
39663 * @return {bitArray} The hash value, an array of 8 big-endian words.
39664 */
39665 finalize:function () {
39666 var i, b = this._buffer, h = this._h;
39667
39668 // Round out and push the buffer
39669 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
39670
39671 // Round out the buffer to a multiple of 16 words, less the 2 length words.
39672 for (i = b.length + 2; i & 15; i++) {
39673 b.push(0);
39674 }
39675
39676 // append the length
39677 b.push(Math.floor(this._length / 0x100000000));
39678 b.push(this._length | 0);
39679
39680 while (b.length) {
39681 this._block(b.splice(0,16));
39682 }
39683
39684 this.reset();
39685 return h;
39686 },
39687
39688 /**
39689 * The SHA-256 initialization vector, to be precomputed.
39690 * @private
39691 */
39692 _init:[],
39693 /*
39694 _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
39695 */
39696
39697 /**
39698 * The SHA-256 hash key, to be precomputed.
39699 * @private
39700 */
39701 _key:[],
39702 /*
39703 _key:
39704 [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
39705 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
39706 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
39707 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
39708 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
39709 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
39710 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
39711 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
39712 */
39713
39714
39715 /**
39716 * Function to precompute _init and _key.
39717 * @private
39718 */
39719 _precompute: function () {
39720 var i = 0, prime = 2, factor;
39721
39722 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
39723
39724 outer: for (; i<64; prime++) {
39725 for (factor=2; factor*factor <= prime; factor++) {
39726 if (prime % factor === 0) {
39727 // not a prime
39728 continue outer;
39729 }
39730 }
39731
39732 if (i<8) {
39733 this._init[i] = frac(Math.pow(prime, 1/2));
39734 }
39735 this._key[i] = frac(Math.pow(prime, 1/3));
39736 i++;
39737 }
39738 },
39739
39740 /**
39741 * Perform one cycle of SHA-256.
39742 * @param {bitArray} words one block of words.
39743 * @private
39744 */
39745 _block:function (words) {
39746 var i, tmp, a, b,
39747 w = words.slice(0),
39748 h = this._h,
39749 k = this._key,
39750 h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
39751 h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
39752
39753 /* Rationale for placement of |0 :
39754 * If a value can overflow is original 32 bits by a factor of more than a few
39755 * million (2^23 ish), there is a possibility that it might overflow the
39756 * 53-bit mantissa and lose precision.
39757 *
39758 * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
39759 * propagates around the loop, and on the hash state h[]. I don't believe
39760 * that the clamps on h4 and on h0 are strictly necessary, but it's close
39761 * (for h4 anyway), and better safe than sorry.
39762 *
39763 * The clamps on h[] are necessary for the output to be correct even in the
39764 * common case and for short inputs.
39765 */
39766 for (i=0; i<64; i++) {
39767 // load up the input word for this round
39768 if (i<16) {
39769 tmp = w[i];
39770 } else {
39771 a = w[(i+1 ) & 15];
39772 b = w[(i+14) & 15];
39773 tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
39774 (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
39775 w[i&15] + w[(i+9) & 15]) | 0;
39776 }
39777
39778 tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
39779
39780 // shift register
39781 h7 = h6; h6 = h5; h5 = h4;
39782 h4 = h3 + tmp | 0;
39783 h3 = h2; h2 = h1; h1 = h0;
39784
39785 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
39786 }
39787
39788 h[0] = h[0]+h0 | 0;
39789 h[1] = h[1]+h1 | 0;
39790 h[2] = h[2]+h2 | 0;
39791 h[3] = h[3]+h3 | 0;
39792 h[4] = h[4]+h4 | 0;
39793 h[5] = h[5]+h5 | 0;
39794 h[6] = h[6]+h6 | 0;
39795 h[7] = h[7]+h7 | 0;
39796 }
39797 };
39798 </script>
39799 <script>// An extremely basic translation library
39800 //
39801 // Example usage:
39802 //
39803 // Set some html to be translated. Do this using the 'data-translate' attribute:
39804 //
39805 // <div data-translate>Test</div>
39806 // <div data-translate-html><em>keep em tag</em></div>
39807 // <input data-translate-placeholder placeholder="Example placeholder">
39808 // <span data-translate-title title="Example title"></span>
39809 //
39810 // Obtain all the phrases to be translated via js debug console:
39811 //
39812 // Translate.phrasesAsJson();
39813 //
39814 // Use that template to translate the phrases into another language.
39815 // Leave the key the same. Change the value to the new language.
39816 //
39817 // Create a js file to load the new phrases. In this example for Spanish,
39818 // es.js will contain the following code:
39819 //
39820 // Translate.loadForeignPhrases("es", {
39821 // "Test": "Test in Spanish",
39822 // "<em>keep em tag</em>": "<em>keep em tag in Spanish</em>",
39823 // "Example placeholder": "Example placeholder in Spanish"
39824 // "Example title": "Example title in Spanish"
39825 // });
39826 //
39827 // In your UI put a listener for clicking on the Spanish button:
39828 //
39829 // mySpanishButton.addEventListener("click", function() {
39830 // Translate.setLanguage("es");
39831 // });
39832 // myEnglishButton.addEventListener("click", function() {
39833 // Translate.setLanguage("en");
39834 // });
39835
39836 Translate = new (function() {
39837
39838 var defaultLanguage = "en";
39839
39840 var allPhrases = {};
39841 allPhrases[defaultLanguage] = {};
39842
39843 // Node types
39844
39845 var text = {
39846 selector: "[data-translate]",
39847 getKey: function() {
39848 return this.textContent.trim().replace(/\s+/g, " ");
39849 },
39850 setPhrase: function(p) {
39851 this.textContent = p;
39852 },
39853 }
39854
39855 var html = {
39856 selector: "[data-translate-html]",
39857 getKey: function() {
39858 return this.innerHTML.trim().replace(/\s+/g, " ");
39859 },
39860 setPhrase: function(p) {
39861 this.innerHTML = p;
39862 },
39863 }
39864
39865 var placeholder = {
39866 selector: "[data-translate-placeholder]",
39867 getKey: function() {
39868 return this.getAttribute("placeholder").trim().replace(/\s+/g, " ");
39869 },
39870 setPhrase: function(p) {
39871 this.setAttribute("placeholder", p);
39872 },
39873 }
39874
39875 var title = {
39876 selector: "[data-translate-title]",
39877 getKey: function() {
39878 return this.getAttribute("title").trim().replace(/\s+/g, " ");
39879 },
39880 setPhrase: function(p) {
39881 this.setAttribute("title", p);
39882 },
39883 }
39884
39885 // Get elements to be translated
39886 var allEls = getEls(text)
39887 .concat(getEls(html))
39888 .concat(getEls(placeholder))
39889 .concat(getEls(title));
39890
39891 // Provides access to phrases from a non-default language.
39892 // See phrases_en.js for example usage.
39893 this.loadForeignPhrases = function(language, phrases) {
39894 allPhrases[language] = phrases;
39895 }
39896
39897 // Displays a different language, eg "en" or "fr"
39898 this.setLanguage = function(language) {
39899 for (var i=0; i<allEls.length; i++) {
39900 var el = allEls[i];
39901 var key = el.key;
39902 if (!(language in allPhrases)) {
39903 console.log(language + " not in allPhrases");
39904 return;
39905 }
39906 if (!(key in allPhrases[language])) {
39907 console.log(language + " does not contain phrase: " + key);
39908 return;
39909 }
39910 var phrase = allPhrases[language][key];
39911 el.setPhrase(phrase);
39912 }
39913 }
39914
39915 // Converts the phrases to a key-pair json file.
39916 // This is a good way to export phrases for use in translation tools.
39917 this.phrasesAsJson = function(language) {
39918 var keys = [];
39919 for (var i=0; i<allEls.length; i++) {
39920 var el = allEls[i];
39921 var key = el.key;
39922 keys.push(key);
39923 }
39924 keys.sort();
39925 var output = {};
39926 for (var i=0; i<keys.length; i++) {
39927 var key = keys[i];
39928 var translated = "";
39929 if (language in allPhrases && key in allPhrases[language]) {
39930 translated = allPhrases[language][key];
39931 }
39932 output[key] = translated;
39933 }
39934 return JSON.stringify(output, null, 2);
39935 }
39936
39937 function getEls(nodeType) {
39938 var nodes = document.querySelectorAll(nodeType.selector);
39939 var els = [];
39940 for (var i=0; i<nodes.length; i++) {
39941 var node = nodes[i];
39942 node.getKey = nodeType.getKey;
39943 node.setPhrase = nodeType.setPhrase;
39944 node.key = node.getKey();
39945 allPhrases[defaultLanguage][node.key] = node.key;
39946 els.push(node);
39947 }
39948 return els;
39949 }
39950
39951 })();
39952 </script>
39953 <script>Translate.loadForeignPhrases("en",
39954 {
39955 "<code>m/44'/0'/0'/0</code> generates public addresses": "<code>m/44'/0'/0'/0</code> generates public addresses",
39956 "<code>m/44'/0'/0'/1</code> generates change addresses": "<code>m/44'/0'/0'/1</code> generates change addresses",
39957 "<code>m/44'/0'/0'</code> generates extended keys for import / export": "<code>m/44'/0'/0'</code> generates extended keys for import / export",
39958 "<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).",
39959 "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards": "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards",
39960 "Account": "Account",
39961 "Address": "Address",
39962 "Alternatively, download the file from the repository": "Alternatively, download the file from the repository",
39963 "BIP32 Derivation Path": "BIP32 Derivation Path",
39964 "BIP32 Extended Key": "BIP32 Extended Key",
39965 "BIP32 Extended Key (addresses only)": "BIP32 Extended Key (addresses only)",
39966 "BIP32 Root Key": "BIP32 Root Key",
39967 "BIP39 Mnemonic": "BIP39 Mnemonic",
39968 "BIP39 Passphrase (optional)": "BIP39 Passphrase (optional)",
39969 "BIP39 Seed": "BIP39 Seed",
39970 "Base 10": "Base 10",
39971 "Base 6": "Base 6",
39972 "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.",
39973 "Binary": "Binary",
39974 "Bitcoin Core": "Bitcoin Core",
39975 "Bits Per Event": "Bits Per Event",
39976 "Block Explorers": "Block Explorers",
39977 "Can be used with": "Can be used with",
39978 "Card": "Card",
39979 "Coin": "Coin",
39980 "Dice": "Dice",
39981 "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.",
39982 "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.",
39983 "Entropy": "Entropy",
39984 "Entropy Type": "Entropy Type",
39985 "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.",
39986 "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>.",
39987 "Event Count": "Event Count",
39988 "External / Internal": "External / Internal",
39989 "Filtered Entropy": "Filtered Entropy",
39990 "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>",
39991 "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>.",
39992 "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>.",
39993 "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>",
39994 "For more info see the BIP32 spec": "For more info see the BIP32 spec",
39995 "From entropy length (3 words per 32 bits)": "From entropy length (3 words per 32 bits)",
39996 "Generate a random mnemonic, or enter your own below": "Generate a random mnemonic, or enter your own below",
39997 "Get the source code from the repository": "Get the source code from the repository",
39998 "Hex": "Hex",
39999 "Hierarchical Deterministic Wallets": "Hierarchical Deterministic Wallets",
40000 "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.",
40001 "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.",
40002 "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.",
40003 "Libraries": "Libraries",
40004 "Mnemonic Language": "Mnemonic Language",
40005 "Mnemonic Length": "Mnemonic Length",
40006 "Mnemonic code for generating deterministic keys": "Mnemonic code for generating deterministic keys",
40007 "More info": "More info",
40008 "Multi-Account Hierarchy for Deterministic Wallets": "Multi-Account Hierarchy for Deterministic Wallets",
40009 "Mycelium Wallet": "Mycelium Wallet",
40010 "Note these addreses are derived from the BIP32 Extended Key": "Note these addreses are derived from the BIP32 Extended Key",
40011 "Offline Usage": "Offline Usage",
40012 "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.",
40013 "Path": "Path",
40014 "Private Key": "Private Key",
40015 "Private Keys": "Private Keys",
40016 "Public Key": "Public Key",
40017 "Purpose": "Purpose",
40018 "Raw Binary": "Raw Binary",
40019 "Read more": "Read more",
40020 "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>",
40021 "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>",
40022 "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>",
40023 "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>",
40024 "Show": "Show",
40025 "Show more rows": "Show more rows",
40026 "Strength": "Strength",
40027 "Supply my own source of entropy": "Supply my own source of entropy",
40028 "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.",
40029 "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>.",
40030 "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.",
40031 "This project is 100% open-source code": "This project is 100% open-source code",
40032 "Toggle": "Toggle",
40033 "Total Bits": "Total Bits",
40034 "Use hardened addresses": "Use hardened addresses",
40035 "Use path <code>m/0'/0'</code> with hardened addresses.": "Use path <code>m/0'/0'</code> with hardened addresses.",
40036 "Use path <code>m/44'/0'/0'</code>.": "Use path <code>m/44'/0'/0'</code>.",
40037 "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>.",
40038 "Valid entropy values include:": "Valid entropy values include:",
40039 "Warning": "Warning",
40040 "Word Count": "Word Count",
40041 "You are not a good source of entropy.": "You are not a good source of entropy.",
40042 "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).",
40043 "You can use this tool without having to be online.": "You can use this tool without having to be online.",
40044 "words": "words"
40045 }
40046 );
40047 </script>
40048 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40049 WORDLISTS["english"] = [
40050 "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
40051 "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
40052 "action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
40053 "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
40054 "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
40055 "alien","all","alley","allow","almost","alone","alpha","already","also","alter",
40056 "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
40057 "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
40058 "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
40059 "area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
40060 "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
40061 "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
40062 "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
40063 "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
40064 "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
40065 "barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
40066 "beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
40067 "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
40068 "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
40069 "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
40070 "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
40071 "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
40072 "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
40073 "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
40074 "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
40075 "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
40076 "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
40077 "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
40078 "cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
40079 "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
40080 "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
40081 "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
40082 "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
40083 "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
40084 "clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
40085 "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
40086 "code","coffee","coil","coin","collect","color","column","combine","come","comfort",
40087 "comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
40088 "convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
40089 "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
40090 "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
40091 "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
40092 "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
40093 "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
40094 "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
40095 "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
40096 "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
40097 "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
40098 "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
40099 "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
40100 "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
40101 "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
40102 "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
40103 "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
40104 "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
40105 "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
40106 "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
40107 "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
40108 "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
40109 "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
40110 "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
40111 "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
40112 "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
40113 "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
40114 "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
40115 "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
40116 "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
40117 "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
40118 "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
40119 "film","filter","final","find","fine","finger","finish","fire","firm","first",
40120 "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
40121 "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
40122 "foam","focus","fog","foil","fold","follow","food","foot","force","forest",
40123 "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
40124 "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
40125 "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
40126 "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
40127 "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
40128 "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
40129 "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
40130 "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
40131 "grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
40132 "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
40133 "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
40134 "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
40135 "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
40136 "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
40137 "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
40138 "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
40139 "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
40140 "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
40141 "impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
40142 "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
40143 "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
40144 "intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
40145 "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
40146 "job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
40147 "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
40148 "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
40149 "knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
40150 "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
40151 "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
40152 "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
40153 "liar","liberty","library","license","life","lift","light","like","limb","limit",
40154 "link","lion","liquid","list","little","live","lizard","load","loan","lobster",
40155 "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
40156 "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
40157 "magic","magnet","maid","mail","main","major","make","mammal","man","manage",
40158 "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
40159 "marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
40160 "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
40161 "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
40162 "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
40163 "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
40164 "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
40165 "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
40166 "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
40167 "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
40168 "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
40169 "network","neutral","never","news","next","nice","night","noble","noise","nominee",
40170 "noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
40171 "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
40172 "obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
40173 "oil","okay","old","olive","olympic","omit","once","one","onion","online",
40174 "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
40175 "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
40176 "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
40177 "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
40178 "parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
40179 "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
40180 "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
40181 "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
40182 "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
40183 "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
40184 "pole","police","pond","pony","pool","popular","portion","position","possible","post",
40185 "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
40186 "present","pretty","prevent","price","pride","primary","print","priority","prison","private",
40187 "prize","problem","process","produce","profit","program","project","promote","proof","property",
40188 "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
40189 "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
40190 "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
40191 "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
40192 "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
40193 "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
40194 "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
40195 "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
40196 "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
40197 "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
40198 "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
40199 "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
40200 "romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
40201 "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
40202 "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
40203 "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
40204 "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
40205 "scrub","sea","search","season","seat","second","secret","section","security","seed",
40206 "seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
40207 "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
40208 "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
40209 "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
40210 "siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
40211 "sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
40212 "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
40213 "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
40214 "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
40215 "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
40216 "sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
40217 "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
40218 "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
40219 "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
40220 "stand","start","state","stay","steak","steel","stem","step","stereo","stick",
40221 "still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
40222 "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
40223 "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
40224 "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
40225 "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
40226 "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
40227 "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
40228 "teach","team","tell","ten","tenant","tennis","tent","term","test","text",
40229 "thank","that","theme","then","theory","there","they","thing","this","thought",
40230 "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
40231 "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
40232 "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
40233 "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
40234 "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
40235 "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
40236 "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
40237 "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
40238 "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
40239 "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
40240 "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
40241 "uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
40242 "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
40243 "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
40244 "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
40245 "video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
40246 "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
40247 "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
40248 "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
40249 "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
40250 "wheel","when","where","whip","whisper","wide","width","wife","wild","will",
40251 "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
40252 "wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
40253 "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
40254 "yellow","you","young","youth","zebra","zero","zone","zoo"]
40255 </script>
40256 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40257 WORDLISTS["japanese"] = [
40258 "あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
40259 "あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
40260 "あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
40261 "あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
40262 "あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
40263 "あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
40264 "いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
40265 "いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
40266 "いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
40267 "いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
40268 "いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
40269 "いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
40270 "いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
40271 "いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
40272 "いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
40273 "うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
40274 "うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
40275 "うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
40276 "うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
40277 "うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
40278 "うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
40279 "えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
40280 "えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
40281 "えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
40282 "えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
40283 "おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
40284 "おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
40285 "おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
40286 "おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
40287 "おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
40288 "おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
40289 "おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
40290 "かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
40291 "かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
40292 "かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
40293 "がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
40294 "かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
40295 "かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
40296 "きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
40297 "きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
40298 "ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
40299 "きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
40300 "きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
40301 "きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
40302 "きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
40303 "きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
40304 "くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ",
40305 "くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう",
40306 "くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした",
40307 "ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる",
40308 "くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく",
40309 "ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん",
40310 "けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは",
40311 "げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと",
40312 "けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい",
40313 "けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ",
40314 "けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし",
40315 "けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき",
40316 "けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない",
40317 "けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと",
40318 "ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい",
40319 "ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう",
40320 "ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい",
40321 "こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ",
40322 "こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか",
40323 "こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな",
40324 "こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら",
40325 "こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく",
40326 "こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる",
40327 "こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん",
40328 "こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ",
40329 "さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち",
40330 "さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん",
40331 "さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも",
40332 "さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ",
40333 "さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう",
40334 "さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい",
40335 "ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ",
40336 "しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん",
40337 "しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり",
40338 "しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん",
40339 "しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう",
40340 "しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ",
40341 "しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん",
40342 "しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん",
40343 "しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい",
40344 "しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ",
40345 "しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん",
40346 "すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい",
40347 "すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる",
40348 "すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる",
40349 "ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと",
40350 "すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん",
40351 "せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく",
40352 "せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび",
40353 "せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる",
40354 "せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん",
40355 "ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう",
40356 "せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう",
40357 "せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき",
40358 "そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい",
40359 "そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう",
40360 "そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる",
40361 "そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも",
40362 "そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび",
40363 "ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう",
40364 "たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい",
40365 "だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな",
40366 "たいみんぐ", "たいむ", "たいめん", "たいやき", "たいよう", "たいら", "たいりょく", "たいる", "たいわん", "たうえ",
40367 "たえる", "たおす", "たおる", "たおれる", "たかい", "たかね", "たきび", "たくさん", "たこく", "たこやき",
40368 "たさい", "たしざん", "だじゃれ", "たすける", "たずさわる", "たそがれ", "たたかう", "たたく", "ただしい", "たたみ",
40369 "たちばな", "だっかい", "だっきゃく", "だっこ", "だっしゅつ", "だったい", "たてる", "たとえる", "たなばた", "たにん",
40370 "たぬき", "たのしみ", "たはつ", "たぶん", "たべる", "たぼう", "たまご", "たまる", "だむる", "ためいき",
40371 "ためす", "ためる", "たもつ", "たやすい", "たよる", "たらす", "たりきほんがん", "たりょう", "たりる", "たると",
40372 "たれる", "たれんと", "たろっと", "たわむれる", "だんあつ", "たんい", "たんおん", "たんか", "たんき", "たんけん",
40373 "たんご", "たんさん", "たんじょうび", "だんせい", "たんそく", "たんたい", "だんち", "たんてい", "たんとう", "だんな",
40374 "たんにん", "だんねつ", "たんのう", "たんぴん", "だんぼう", "たんまつ", "たんめい", "だんれつ", "だんろ", "だんわ",
40375 "ちあい", "ちあん", "ちいき", "ちいさい", "ちえん", "ちかい", "ちから", "ちきゅう", "ちきん", "ちけいず",
40376 "ちけん", "ちこく", "ちさい", "ちしき", "ちしりょう", "ちせい", "ちそう", "ちたい", "ちたん", "ちちおや",
40377 "ちつじょ", "ちてき", "ちてん", "ちぬき", "ちぬり", "ちのう", "ちひょう", "ちへいせん", "ちほう", "ちまた",
40378 "ちみつ", "ちみどろ", "ちめいど", "ちゃんこなべ", "ちゅうい", "ちゆりょく", "ちょうし", "ちょさくけん", "ちらし", "ちらみ",
40379 "ちりがみ", "ちりょう", "ちるど", "ちわわ", "ちんたい", "ちんもく", "ついか", "ついたち", "つうか", "つうじょう",
40380 "つうはん", "つうわ", "つかう", "つかれる", "つくね", "つくる", "つけね", "つける", "つごう", "つたえる",
40381 "つづく", "つつじ", "つつむ", "つとめる", "つながる", "つなみ", "つねづね", "つのる", "つぶす", "つまらない",
40382 "つまる", "つみき", "つめたい", "つもり", "つもる", "つよい", "つるぼ", "つるみく", "つわもの", "つわり",
40383 "てあし", "てあて", "てあみ", "ていおん", "ていか", "ていき", "ていけい", "ていこく", "ていさつ", "ていし",
40384 "ていせい", "ていたい", "ていど", "ていねい", "ていひょう", "ていへん", "ていぼう", "てうち", "ておくれ", "てきとう",
40385 "てくび", "でこぼこ", "てさぎょう", "てさげ", "てすり", "てそう", "てちがい", "てちょう", "てつがく", "てつづき",
40386 "でっぱ", "てつぼう", "てつや", "でぬかえ", "てぬき", "てぬぐい", "てのひら", "てはい", "てぶくろ", "てふだ",
40387 "てほどき", "てほん", "てまえ", "てまきずし", "てみじか", "てみやげ", "てらす", "てれび", "てわけ", "てわたし",
40388 "でんあつ", "てんいん", "てんかい", "てんき", "てんぐ", "てんけん", "てんごく", "てんさい", "てんし", "てんすう",
40389 "でんち", "てんてき", "てんとう", "てんない", "てんぷら", "てんぼうだい", "てんめつ", "てんらんかい", "でんりょく", "でんわ",
40390 "どあい", "といれ", "どうかん", "とうきゅう", "どうぐ", "とうし", "とうむぎ", "とおい", "とおか", "とおく",
40391 "とおす", "とおる", "とかい", "とかす", "ときおり", "ときどき", "とくい", "とくしゅう", "とくてん", "とくに",
40392 "とくべつ", "とけい", "とける", "とこや", "とさか", "としょかん", "とそう", "とたん", "とちゅう", "とっきゅう",
40393 "とっくん", "とつぜん", "とつにゅう", "とどける", "ととのえる", "とない", "となえる", "となり", "とのさま", "とばす",
40394 "どぶがわ", "とほう", "とまる", "とめる", "ともだち", "ともる", "どようび", "とらえる", "とんかつ", "どんぶり",
40395 "ないかく", "ないこう", "ないしょ", "ないす", "ないせん", "ないそう", "なおす", "ながい", "なくす", "なげる",
40396 "なこうど", "なさけ", "なたでここ", "なっとう", "なつやすみ", "ななおし", "なにごと", "なにもの", "なにわ", "なのか",
40397 "なふだ", "なまいき", "なまえ", "なまみ", "なみだ", "なめらか", "なめる", "なやむ", "ならう", "ならび",
40398 "ならぶ", "なれる", "なわとび", "なわばり", "にあう", "にいがた", "にうけ", "におい", "にかい", "にがて",
40399 "にきび", "にくしみ", "にくまん", "にげる", "にさんかたんそ", "にしき", "にせもの", "にちじょう", "にちようび", "にっか",
40400 "にっき", "にっけい", "にっこう", "にっさん", "にっしょく", "にっすう", "にっせき", "にってい", "になう", "にほん",
40401 "にまめ", "にもつ", "にやり", "にゅういん", "にりんしゃ", "にわとり", "にんい", "にんか", "にんき", "にんげん",
40402 "にんしき", "にんずう", "にんそう", "にんたい", "にんち", "にんてい", "にんにく", "にんぷ", "にんまり", "にんむ",
40403 "にんめい", "にんよう", "ぬいくぎ", "ぬかす", "ぬぐいとる", "ぬぐう", "ぬくもり", "ぬすむ", "ぬまえび", "ぬめり",
40404 "ぬらす", "ぬんちゃく", "ねあげ", "ねいき", "ねいる", "ねいろ", "ねぐせ", "ねくたい", "ねくら", "ねこぜ",
40405 "ねこむ", "ねさげ", "ねすごす", "ねそべる", "ねだん", "ねつい", "ねっしん", "ねつぞう", "ねったいぎょ", "ねぶそく",
40406 "ねふだ", "ねぼう", "ねほりはほり", "ねまき", "ねまわし", "ねみみ", "ねむい", "ねむたい", "ねもと", "ねらう",
40407 "ねわざ", "ねんいり", "ねんおし", "ねんかん", "ねんきん", "ねんぐ", "ねんざ", "ねんし", "ねんちゃく", "ねんど",
40408 "ねんぴ", "ねんぶつ", "ねんまつ", "ねんりょう", "ねんれい", "のいず", "のおづま", "のがす", "のきなみ", "のこぎり",
40409 "のこす", "のこる", "のせる", "のぞく", "のぞむ", "のたまう", "のちほど", "のっく", "のばす", "のはら",
40410 "のべる", "のぼる", "のみもの", "のやま", "のらいぬ", "のらねこ", "のりもの", "のりゆき", "のれん", "のんき",
40411 "ばあい", "はあく", "ばあさん", "ばいか", "ばいく", "はいけん", "はいご", "はいしん", "はいすい", "はいせん",
40412 "はいそう", "はいち", "ばいばい", "はいれつ", "はえる", "はおる", "はかい", "ばかり", "はかる", "はくしゅ",
40413 "はけん", "はこぶ", "はさみ", "はさん", "はしご", "ばしょ", "はしる", "はせる", "ぱそこん", "はそん",
40414 "はたん", "はちみつ", "はつおん", "はっかく", "はづき", "はっきり", "はっくつ", "はっけん", "はっこう", "はっさん",
40415 "はっしん", "はったつ", "はっちゅう", "はってん", "はっぴょう", "はっぽう", "はなす", "はなび", "はにかむ", "はぶらし",
40416 "はみがき", "はむかう", "はめつ", "はやい", "はやし", "はらう", "はろうぃん", "はわい", "はんい", "はんえい",
40417 "はんおん", "はんかく", "はんきょう", "ばんぐみ", "はんこ", "はんしゃ", "はんすう", "はんだん", "ぱんち", "ぱんつ",
40418 "はんてい", "はんとし", "はんのう", "はんぱ", "はんぶん", "はんぺん", "はんぼうき", "はんめい", "はんらん", "はんろん",
40419 "ひいき", "ひうん", "ひえる", "ひかく", "ひかり", "ひかる", "ひかん", "ひくい", "ひけつ", "ひこうき",
40420 "ひこく", "ひさい", "ひさしぶり", "ひさん", "びじゅつかん", "ひしょ", "ひそか", "ひそむ", "ひたむき", "ひだり",
40421 "ひたる", "ひつぎ", "ひっこし", "ひっし", "ひつじゅひん", "ひっす", "ひつぜん", "ぴったり", "ぴっちり", "ひつよう",
40422 "ひてい", "ひとごみ", "ひなまつり", "ひなん", "ひねる", "ひはん", "ひびく", "ひひょう", "ひほう", "ひまわり",
40423 "ひまん", "ひみつ", "ひめい", "ひめじし", "ひやけ", "ひやす", "ひよう", "びょうき", "ひらがな", "ひらく",
40424 "ひりつ", "ひりょう", "ひるま", "ひるやすみ", "ひれい", "ひろい", "ひろう", "ひろき", "ひろゆき", "ひんかく",
40425 "ひんけつ", "ひんこん", "ひんしゅ", "ひんそう", "ぴんち", "ひんぱん", "びんぼう", "ふあん", "ふいうち", "ふうけい",
40426 "ふうせん", "ぷうたろう", "ふうとう", "ふうふ", "ふえる", "ふおん", "ふかい", "ふきん", "ふくざつ", "ふくぶくろ",
40427 "ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん",
40428 "ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう",
40429 "ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる",
40430 "ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん",
40431 "へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん",
40432 "へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし",
40433 "へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん",
40434 "ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう",
40435 "ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる",
40436 "ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ",
40437 "ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく",
40438 "まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう",
40439 "まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち",
40440 "みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる",
40441 "みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす",
40442 "みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき",
40443 "むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい",
40444 "むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう",
40445 "むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん",
40446 "めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす",
40447 "めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん",
40448 "もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや",
40449 "やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん",
40450 "やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ",
40451 "ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ",
40452 "ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん",
40453 "よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか",
40454 "よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご",
40455 "らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい",
40456 "りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん",
40457 "りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき",
40458 "りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ",
40459 "れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい",
40460 "れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら",
40461 "ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす",
40462 "わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"]
40463 </script>
40464 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40465 WORDLISTS["spanish"] = [
40466 "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
40467 "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
40468 "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
40469 "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
40470 "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
40471 "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
40472 "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
40473 "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
40474 "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
40475 "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
40476 "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
40477 "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
40478 "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
40479 "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
40480 "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
40481 "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
40482 "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
40483 "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
40484 "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
40485 "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
40486 "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
40487 "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
40488 "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
40489 "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
40490 "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
40491 "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
40492 "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
40493 "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
40494 "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
40495 "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
40496 "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
40497 "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
40498 "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
40499 "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
40500 "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
40501 "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
40502 "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
40503 "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
40504 "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
40505 "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
40506 "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
40507 "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
40508 "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
40509 "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
40510 "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
40511 "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
40512 "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
40513 "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
40514 "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
40515 "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
40516 "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
40517 "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
40518 "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
40519 "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
40520 "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
40521 "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
40522 "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
40523 "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
40524 "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
40525 "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
40526 "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
40527 "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
40528 "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
40529 "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
40530 "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
40531 "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
40532 "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
40533 "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
40534 "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
40535 "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
40536 "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
40537 "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
40538 "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
40539 "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
40540 "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
40541 "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
40542 "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
40543 "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
40544 "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
40545 "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
40546 "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
40547 "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
40548 "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
40549 "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
40550 "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
40551 "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
40552 "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
40553 "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
40554 "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
40555 "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
40556 "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
40557 "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
40558 "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
40559 "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
40560 "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
40561 "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
40562 "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
40563 "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
40564 "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
40565 "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
40566 "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
40567 "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
40568 "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
40569 "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
40570 "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
40571 "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
40572 "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
40573 "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
40574 "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
40575 "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
40576 "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
40577 "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
40578 "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
40579 "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
40580 "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
40581 "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
40582 "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
40583 "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
40584 "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
40585 "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
40586 "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
40587 "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
40588 "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
40589 "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
40590 "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
40591 "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
40592 "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
40593 "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
40594 "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
40595 "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
40596 "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
40597 "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
40598 "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
40599 "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
40600 "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
40601 "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
40602 "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
40603 "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
40604 "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
40605 "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
40606 "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
40607 "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
40608 "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
40609 "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
40610 "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
40611 "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
40612 "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
40613 "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
40614 "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
40615 "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
40616 "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
40617 "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
40618 "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
40619 "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
40620 "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
40621 "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
40622 "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
40623 "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
40624 "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
40625 "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
40626 "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
40627 "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
40628 "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
40629 "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
40630 "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
40631 "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
40632 "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
40633 "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
40634 "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
40635 "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
40636 "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
40637 "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
40638 "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
40639 "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
40640 "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
40641 "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
40642 "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
40643 "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
40644 "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
40645 "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
40646 "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
40647 "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
40648 "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
40649 "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
40650 "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
40651 "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
40652 "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
40653 "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
40654 "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
40655 "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
40656 "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
40657 "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
40658 "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
40659 "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
40660 "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
40661 "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
40662 "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
40663 "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
40664 "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
40665 "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
40666 "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
40667 "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
40668 "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
40669 "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
40670 "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
40671 </script>
40672 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40673 WORDLISTS["chinese_simplified"] = [
40674 "的", "一", "是", "在", "不", "了", "有", "和", "人", "这",
40675 "中", "大", "为", "上", "个", "国", "我", "以", "要", "他",
40676 "时", "来", "用", "们", "生", "到", "作", "地", "于", "出",
40677 "就", "分", "对", "成", "会", "可", "主", "发", "年", "动",
40678 "同", "工", "也", "能", "下", "过", "子", "说", "产", "种",
40679 "面", "而", "方", "后", "多", "定", "行", "学", "法", "所",
40680 "民", "得", "经", "十", "三", "之", "进", "着", "等", "部",
40681 "度", "家", "电", "力", "里", "如", "水", "化", "高", "自",
40682 "二", "理", "起", "小", "物", "现", "实", "加", "量", "都",
40683 "两", "体", "制", "机", "当", "使", "点", "从", "业", "本",
40684 "去", "把", "性", "好", "应", "开", "它", "合", "还", "因",
40685 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
40686 "那", "社", "义", "事", "平", "形", "相", "全", "表", "间",
40687 "样", "与", "关", "各", "重", "新", "线", "内", "数", "正",
40688 "心", "反", "你", "明", "看", "原", "又", "么", "利", "比",
40689 "或", "但", "质", "气", "第", "向", "道", "命", "此", "变",
40690 "条", "只", "没", "结", "解", "问", "意", "建", "月", "公",
40691 "无", "系", "军", "很", "情", "者", "最", "立", "代", "想",
40692 "已", "通", "并", "提", "直", "题", "党", "程", "展", "五",
40693 "果", "料", "象", "员", "革", "位", "入", "常", "文", "总",
40694 "次", "品", "式", "活", "设", "及", "管", "特", "件", "长",
40695 "求", "老", "头", "基", "资", "边", "流", "路", "级", "少",
40696 "图", "山", "统", "接", "知", "较", "将", "组", "见", "计",
40697 "别", "她", "手", "角", "期", "根", "论", "运", "农", "指",
40698 "几", "九", "区", "强", "放", "决", "西", "被", "干", "做",
40699 "必", "战", "先", "回", "则", "任", "取", "据", "处", "队",
40700 "南", "给", "色", "光", "门", "即", "保", "治", "北", "造",
40701 "百", "规", "热", "领", "七", "海", "口", "东", "导", "器",
40702 "压", "志", "世", "金", "增", "争", "济", "阶", "油", "思",
40703 "术", "极", "交", "受", "联", "什", "认", "六", "共", "权",
40704 "收", "证", "改", "清", "美", "再", "采", "转", "更", "单",
40705 "风", "切", "打", "白", "教", "速", "花", "带", "安", "场",
40706 "身", "车", "例", "真", "务", "具", "万", "每", "目", "至",
40707 "达", "走", "积", "示", "议", "声", "报", "斗", "完", "类",
40708 "八", "离", "华", "名", "确", "才", "科", "张", "信", "马",
40709 "节", "话", "米", "整", "空", "元", "况", "今", "集", "温",
40710 "传", "土", "许", "步", "群", "广", "石", "记", "需", "段",
40711 "研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越",
40712 "织", "装", "影", "算", "低", "持", "音", "众", "书", "布",
40713 "复", "容", "儿", "须", "际", "商", "非", "验", "连", "断",
40714 "深", "难", "近", "矿", "千", "周", "委", "素", "技", "备",
40715 "半", "办", "青", "省", "列", "习", "响", "约", "支", "般",
40716 "史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克",
40717 "何", "除", "消", "构", "府", "称", "太", "准", "精", "值",
40718 "号", "率", "族", "维", "划", "选", "标", "写", "存", "候",
40719 "毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼",
40720 "王", "按", "格", "养", "易", "置", "派", "层", "片", "始",
40721 "却", "专", "状", "育", "厂", "京", "识", "适", "属", "圆",
40722 "包", "火", "住", "调", "满", "县", "局", "照", "参", "红",
40723 "细", "引", "听", "该", "铁", "价", "严", "首", "底", "液",
40724 "官", "德", "随", "病", "苏", "失", "尔", "死", "讲", "配",
40725 "女", "黄", "推", "显", "谈", "罪", "神", "艺", "呢", "席",
40726 "含", "企", "望", "密", "批", "营", "项", "防", "举", "球",
40727 "英", "氧", "势", "告", "李", "台", "落", "木", "帮", "轮",
40728 "破", "亚", "师", "围", "注", "远", "字", "材", "排", "供",
40729 "河", "态", "封", "另", "施", "减", "树", "溶", "怎", "止",
40730 "案", "言", "士", "均", "武", "固", "叶", "鱼", "波", "视",
40731 "仅", "费", "紧", "爱", "左", "章", "早", "朝", "害", "续",
40732 "轻", "服", "试", "食", "充", "兵", "源", "判", "护", "司",
40733 "足", "某", "练", "差", "致", "板", "田", "降", "黑", "犯",
40734 "负", "击", "范", "继", "兴", "似", "余", "坚", "曲", "输",
40735 "修", "故", "城", "夫", "够", "送", "笔", "船", "占", "右",
40736 "财", "吃", "富", "春", "职", "觉", "汉", "画", "功", "巴",
40737 "跟", "虽", "杂", "飞", "检", "吸", "助", "升", "阳", "互",
40738 "初", "创", "抗", "考", "投", "坏", "策", "古", "径", "换",
40739 "未", "跑", "留", "钢", "曾", "端", "责", "站", "简", "述",
40740 "钱", "副", "尽", "帝", "射", "草", "冲", "承", "独", "令",
40741 "限", "阿", "宣", "环", "双", "请", "超", "微", "让", "控",
40742 "州", "良", "轴", "找", "否", "纪", "益", "依", "优", "顶",
40743 "础", "载", "倒", "房", "突", "坐", "粉", "敌", "略", "客",
40744 "袁", "冷", "胜", "绝", "析", "块", "剂", "测", "丝", "协",
40745 "诉", "念", "陈", "仍", "罗", "盐", "友", "洋", "错", "苦",
40746 "夜", "刑", "移", "频", "逐", "靠", "混", "母", "短", "皮",
40747 "终", "聚", "汽", "村", "云", "哪", "既", "距", "卫", "停",
40748 "烈", "央", "察", "烧", "迅", "境", "若", "印", "洲", "刻",
40749 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
40750 "侵", "吧", "甲", "游", "久", "菜", "味", "旧", "模", "湖",
40751 "货", "损", "预", "阻", "毫", "普", "稳", "乙", "妈", "植",
40752 "息", "扩", "银", "语", "挥", "酒", "守", "拿", "序", "纸",
40753 "医", "缺", "雨", "吗", "针", "刘", "啊", "急", "唱", "误",
40754 "训", "愿", "审", "附", "获", "茶", "鲜", "粮", "斤", "孩",
40755 "脱", "硫", "肥", "善", "龙", "演", "父", "渐", "血", "欢",
40756 "械", "掌", "歌", "沙", "刚", "攻", "谓", "盾", "讨", "晚",
40757 "粒", "乱", "燃", "矛", "乎", "杀", "药", "宁", "鲁", "贵",
40758 "钟", "煤", "读", "班", "伯", "香", "介", "迫", "句", "丰",
40759 "培", "握", "兰", "担", "弦", "蛋", "沉", "假", "穿", "执",
40760 "答", "乐", "谁", "顺", "烟", "缩", "征", "脸", "喜", "松",
40761 "脚", "困", "异", "免", "背", "星", "福", "买", "染", "井",
40762 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "静", "补",
40763 "评", "翻", "肉", "践", "尼", "衣", "宽", "扬", "棉", "希",
40764 "伤", "操", "垂", "秋", "宜", "氢", "套", "督", "振", "架",
40765 "亮", "末", "宪", "庆", "编", "牛", "触", "映", "雷", "销",
40766 "诗", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
40767 "绿", "晶", "厚", "盟", "衡", "鸡", "孙", "延", "危", "胶",
40768 "屋", "乡", "临", "陆", "顾", "掉", "呀", "灯", "岁", "措",
40769 "束", "耐", "剧", "玉", "赵", "跳", "哥", "季", "课", "凯",
40770 "胡", "额", "款", "绍", "卷", "齐", "伟", "蒸", "殖", "永",
40771 "宗", "苗", "川", "炉", "岩", "弱", "零", "杨", "奏", "沿",
40772 "露", "杆", "探", "滑", "镇", "饭", "浓", "航", "怀", "赶",
40773 "库", "夺", "伊", "灵", "税", "途", "灭", "赛", "归", "召",
40774 "鼓", "播", "盘", "裁", "险", "康", "唯", "录", "菌", "纯",
40775 "借", "糖", "盖", "横", "符", "私", "努", "堂", "域", "枪",
40776 "润", "幅", "哈", "竟", "熟", "虫", "泽", "脑", "壤", "碳",
40777 "欧", "遍", "侧", "寨", "敢", "彻", "虑", "斜", "薄", "庭",
40778 "纳", "弹", "饲", "伸", "折", "麦", "湿", "暗", "荷", "瓦",
40779 "塞", "床", "筑", "恶", "户", "访", "塔", "奇", "透", "梁",
40780 "刀", "旋", "迹", "卡", "氯", "遇", "份", "毒", "泥", "退",
40781 "洗", "摆", "灰", "彩", "卖", "耗", "夏", "择", "忙", "铜",
40782 "献", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
40783 "阵", "阴", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
40784 "楼", "避", "谋", "吨", "野", "猪", "旗", "累", "偏", "典",
40785 "馆", "索", "秦", "脂", "潮", "爷", "豆", "忽", "托", "惊",
40786 "塑", "遗", "愈", "朱", "替", "纤", "粗", "倾", "尚", "痛",
40787 "楚", "谢", "奋", "购", "磨", "君", "池", "旁", "碎", "骨",
40788 "监", "捕", "弟", "暴", "割", "贯", "殊", "释", "词", "亡",
40789 "壁", "顿", "宝", "午", "尘", "闻", "揭", "炮", "残", "冬",
40790 "桥", "妇", "警", "综", "招", "吴", "付", "浮", "遭", "徐",
40791 "您", "摇", "谷", "赞", "箱", "隔", "订", "男", "吹", "园",
40792 "纷", "唐", "败", "宋", "玻", "巨", "耕", "坦", "荣", "闭",
40793 "湾", "键", "凡", "驻", "锅", "救", "恩", "剥", "凝", "碱",
40794 "齿", "截", "炼", "麻", "纺", "禁", "废", "盛", "版", "缓",
40795 "净", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
40796 "庄", "街", "藏", "姑", "贸", "腐", "奴", "啦", "惯", "乘",
40797 "伙", "恢", "匀", "纱", "扎", "辩", "耳", "彪", "臣", "亿",
40798 "璃", "抵", "脉", "秀", "萨", "俄", "网", "舞", "店", "喷",
40799 "纵", "寸", "汗", "挂", "洪", "贺", "闪", "柬", "爆", "烯",
40800 "津", "稻", "墙", "软", "勇", "像", "滚", "厘", "蒙", "芳",
40801 "肯", "坡", "柱", "荡", "腿", "仪", "旅", "尾", "轧", "冰",
40802 "贡", "登", "黎", "削", "钻", "勒", "逃", "障", "氨", "郭",
40803 "峰", "币", "港", "伏", "轨", "亩", "毕", "擦", "莫", "刺",
40804 "浪", "秘", "援", "株", "健", "售", "股", "岛", "甘", "泡",
40805 "睡", "童", "铸", "汤", "阀", "休", "汇", "舍", "牧", "绕",
40806 "炸", "哲", "磷", "绩", "朋", "淡", "尖", "启", "陷", "柴",
40807 "呈", "徒", "颜", "泪", "稍", "忘", "泵", "蓝", "拖", "洞",
40808 "授", "镜", "辛", "壮", "锋", "贫", "虚", "弯", "摩", "泰",
40809 "幼", "廷", "尊", "窗", "纲", "弄", "隶", "疑", "氏", "宫",
40810 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "违",
40811 "夹", "腰", "缘", "珠", "穷", "森", "枝", "竹", "沟", "催",
40812 "绳", "忆", "邦", "剩", "幸", "浆", "栏", "拥", "牙", "贮",
40813 "礼", "滤", "钠", "纹", "罢", "拍", "咱", "喊", "袖", "埃",
40814 "勤", "罚", "焦", "潜", "伍", "墨", "欲", "缝", "姓", "刊",
40815 "饱", "仿", "奖", "铝", "鬼", "丽", "跨", "默", "挖", "链",
40816 "扫", "喝", "袋", "炭", "污", "幕", "诸", "弧", "励", "梅",
40817 "奶", "洁", "灾", "舟", "鉴", "苯", "讼", "抱", "毁", "懂",
40818 "寒", "智", "埔", "寄", "届", "跃", "渡", "挑", "丹", "艰",
40819 "贝", "碰", "拔", "爹", "戴", "码", "梦", "芽", "熔", "赤",
40820 "渔", "哭", "敬", "颗", "奔", "铅", "仲", "虎", "稀", "妹",
40821 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "仓", "魏",
40822 "锐", "晓", "氮", "兼", "隐", "碍", "赫", "拨", "忠", "肃",
40823 "缸", "牵", "抢", "博", "巧", "壳", "兄", "杜", "讯", "诚",
40824 "碧", "祥", "柯", "页", "巡", "矩", "悲", "灌", "龄", "伦",
40825 "票", "寻", "桂", "铺", "圣", "恐", "恰", "郑", "趣", "抬",
40826 "荒", "腾", "贴", "柔", "滴", "猛", "阔", "辆", "妻", "填",
40827 "撤", "储", "签", "闹", "扰", "紫", "砂", "递", "戏", "吊",
40828 "陶", "伐", "喂", "疗", "瓶", "婆", "抚", "臂", "摸", "忍",
40829 "虾", "蜡", "邻", "胸", "巩", "挤", "偶", "弃", "槽", "劲",
40830 "乳", "邓", "吉", "仁", "烂", "砖", "租", "乌", "舰", "伴",
40831 "瓜", "浅", "丙", "暂", "燥", "橡", "柳", "迷", "暖", "牌",
40832 "秧", "胆", "详", "簧", "踏", "瓷", "谱", "呆", "宾", "糊",
40833 "洛", "辉", "愤", "竞", "隙", "怒", "粘", "乃", "绪", "肩",
40834 "籍", "敏", "涂", "熙", "皆", "侦", "悬", "掘", "享", "纠",
40835 "醒", "狂", "锁", "淀", "恨", "牲", "霸", "爬", "赏", "逆",
40836 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鸭",
40837 "趋", "凤", "晨", "畜", "辈", "秩", "卵", "署", "梯", "炎",
40838 "滩", "棋", "驱", "筛", "峡", "冒", "啥", "寿", "译", "浸",
40839 "泉", "帽", "迟", "硅", "疆", "贷", "漏", "稿", "冠", "嫩",
40840 "胁", "芯", "牢", "叛", "蚀", "奥", "鸣", "岭", "羊", "凭",
40841 "串", "塘", "绘", "酵", "融", "盆", "锡", "庙", "筹", "冻",
40842 "辅", "摄", "袭", "筋", "拒", "僚", "旱", "钾", "鸟", "漆",
40843 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韩", "逼", "扭",
40844 "侨", "凉", "挺", "碗", "栽", "炒", "杯", "患", "馏", "劝",
40845 "豪", "辽", "勃", "鸿", "旦", "吏", "拜", "狗", "埋", "辊",
40846 "掩", "饮", "搬", "骂", "辞", "勾", "扣", "估", "蒋", "绒",
40847 "雾", "丈", "朵", "姆", "拟", "宇", "辑", "陕", "雕", "偿",
40848 "蓄", "崇", "剪", "倡", "厅", "咬", "驶", "薯", "刷", "斥",
40849 "番", "赋", "奉", "佛", "浇", "漫", "曼", "扇", "钙", "桃",
40850 "扶", "仔", "返", "俗", "亏", "腔", "鞋", "棱", "覆", "框",
40851 "悄", "叔", "撞", "骗", "勘", "旺", "沸", "孤", "吐", "孟",
40852 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "胀", "谐", "抛",
40853 "霉", "桑", "岗", "嘛", "衰", "盗", "渗", "脏", "赖", "涌",
40854 "甜", "曹", "阅", "肌", "哩", "厉", "烃", "纬", "毅", "昨",
40855 "伪", "症", "煮", "叹", "钉", "搭", "茎", "笼", "酷", "偷",
40856 "弓", "锥", "恒", "杰", "坑", "鼻", "翼", "纶", "叙", "狱",
40857 "逮", "罐", "络", "棚", "抑", "膨", "蔬", "寺", "骤", "穆",
40858 "冶", "枯", "册", "尸", "凸", "绅", "坯", "牺", "焰", "轰",
40859 "欣", "晋", "瘦", "御", "锭", "锦", "丧", "旬", "锻", "垄",
40860 "搜", "扑", "邀", "亭", "酯", "迈", "舒", "脆", "酶", "闲",
40861 "忧", "酚", "顽", "羽", "涨", "卸", "仗", "陪", "辟", "惩",
40862 "杭", "姚", "肚", "捉", "飘", "漂", "昆", "欺", "吾", "郎",
40863 "烷", "汁", "呵", "饰", "萧", "雅", "邮", "迁", "燕", "撒",
40864 "姻", "赴", "宴", "烦", "债", "帐", "斑", "铃", "旨", "醇",
40865 "董", "饼", "雏", "姿", "拌", "傅", "腹", "妥", "揉", "贤",
40866 "拆", "歪", "葡", "胺", "丢", "浩", "徽", "昂", "垫", "挡",
40867 "览", "贪", "慰", "缴", "汪", "慌", "冯", "诺", "姜", "谊",
40868 "凶", "劣", "诬", "耀", "昏", "躺", "盈", "骑", "乔", "溪",
40869 "丛", "卢", "抹", "闷", "咨", "刮", "驾", "缆", "悟", "摘",
40870 "铒", "掷", "颇", "幻", "柄", "惠", "惨", "佳", "仇", "腊",
40871 "窝", "涤", "剑", "瞧", "堡", "泼", "葱", "罩", "霍", "捞",
40872 "胎", "苍", "滨", "俩", "捅", "湘", "砍", "霞", "邵", "萄",
40873 "疯", "淮", "遂", "熊", "粪", "烘", "宿", "档", "戈", "驳",
40874 "嫂", "裕", "徙", "箭", "捐", "肠", "撑", "晒", "辨", "殿",
40875 "莲", "摊", "搅", "酱", "屏", "疫", "哀", "蔡", "堵", "沫",
40876 "皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝",
40877 "巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝",
40878 "卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ]
40879 </script>
40880 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40881 WORDLISTS["chinese_traditional"] = [
40882 "的", "一", "是", "在", "不", "了", "有", "和", "人", "這",
40883 "中", "大", "為", "上", "個", "國", "我", "以", "要", "他",
40884 "時", "來", "用", "們", "生", "到", "作", "地", "於", "出",
40885 "就", "分", "對", "成", "會", "可", "主", "發", "年", "動",
40886 "同", "工", "也", "能", "下", "過", "子", "說", "產", "種",
40887 "面", "而", "方", "後", "多", "定", "行", "學", "法", "所",
40888 "民", "得", "經", "十", "三", "之", "進", "著", "等", "部",
40889 "度", "家", "電", "力", "裡", "如", "水", "化", "高", "自",
40890 "二", "理", "起", "小", "物", "現", "實", "加", "量", "都",
40891 "兩", "體", "制", "機", "當", "使", "點", "從", "業", "本",
40892 "去", "把", "性", "好", "應", "開", "它", "合", "還", "因",
40893 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
40894 "那", "社", "義", "事", "平", "形", "相", "全", "表", "間",
40895 "樣", "與", "關", "各", "重", "新", "線", "內", "數", "正",
40896 "心", "反", "你", "明", "看", "原", "又", "麼", "利", "比",
40897 "或", "但", "質", "氣", "第", "向", "道", "命", "此", "變",
40898 "條", "只", "沒", "結", "解", "問", "意", "建", "月", "公",
40899 "無", "系", "軍", "很", "情", "者", "最", "立", "代", "想",
40900 "已", "通", "並", "提", "直", "題", "黨", "程", "展", "五",
40901 "果", "料", "象", "員", "革", "位", "入", "常", "文", "總",
40902 "次", "品", "式", "活", "設", "及", "管", "特", "件", "長",
40903 "求", "老", "頭", "基", "資", "邊", "流", "路", "級", "少",
40904 "圖", "山", "統", "接", "知", "較", "將", "組", "見", "計",
40905 "別", "她", "手", "角", "期", "根", "論", "運", "農", "指",
40906 "幾", "九", "區", "強", "放", "決", "西", "被", "幹", "做",
40907 "必", "戰", "先", "回", "則", "任", "取", "據", "處", "隊",
40908 "南", "給", "色", "光", "門", "即", "保", "治", "北", "造",
40909 "百", "規", "熱", "領", "七", "海", "口", "東", "導", "器",
40910 "壓", "志", "世", "金", "增", "爭", "濟", "階", "油", "思",
40911 "術", "極", "交", "受", "聯", "什", "認", "六", "共", "權",
40912 "收", "證", "改", "清", "美", "再", "採", "轉", "更", "單",
40913 "風", "切", "打", "白", "教", "速", "花", "帶", "安", "場",
40914 "身", "車", "例", "真", "務", "具", "萬", "每", "目", "至",
40915 "達", "走", "積", "示", "議", "聲", "報", "鬥", "完", "類",
40916 "八", "離", "華", "名", "確", "才", "科", "張", "信", "馬",
40917 "節", "話", "米", "整", "空", "元", "況", "今", "集", "溫",
40918 "傳", "土", "許", "步", "群", "廣", "石", "記", "需", "段",
40919 "研", "界", "拉", "林", "律", "叫", "且", "究", "觀", "越",
40920 "織", "裝", "影", "算", "低", "持", "音", "眾", "書", "布",
40921 "复", "容", "兒", "須", "際", "商", "非", "驗", "連", "斷",
40922 "深", "難", "近", "礦", "千", "週", "委", "素", "技", "備",
40923 "半", "辦", "青", "省", "列", "習", "響", "約", "支", "般",
40924 "史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克",
40925 "何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
40926 "號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
40927 "毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
40928 "王", "按", "格", "養", "易", "置", "派", "層", "片", "始",
40929 "卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓",
40930 "包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅",
40931 "細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液",
40932 "官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配",
40933 "女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席",
40934 "含", "企", "望", "密", "批", "營", "項", "防", "舉", "球",
40935 "英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪",
40936 "破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供",
40937 "河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止",
40938 "案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視",
40939 "僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續",
40940 "輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司",
40941 "足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯",
40942 "負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸",
40943 "修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右",
40944 "財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴",
40945 "跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互",
40946 "初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換",
40947 "未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述",
40948 "錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令",
40949 "限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控",
40950 "州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂",
40951 "礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客",
40952 "袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協",
40953 "訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦",
40954 "夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮",
40955 "終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停",
40956 "烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻",
40957 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
40958 "侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖",
40959 "貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植",
40960 "息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙",
40961 "醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤",
40962 "訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩",
40963 "脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡",
40964 "械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚",
40965 "粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴",
40966 "鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐",
40967 "培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執",
40968 "答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松",
40969 "腳", "困", "異", "免", "背", "星", "福", "買", "染", "井",
40970 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補",
40971 "評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希",
40972 "傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架",
40973 "亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷",
40974 "詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
40975 "綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠",
40976 "屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措",
40977 "束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱",
40978 "胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永",
40979 "宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿",
40980 "露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕",
40981 "庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召",
40982 "鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純",
40983 "借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍",
40984 "潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳",
40985 "歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭",
40986 "納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦",
40987 "塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁",
40988 "刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退",
40989 "洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅",
40990 "獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
40991 "陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
40992 "樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典",
40993 "館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚",
40994 "塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛",
40995 "楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨",
40996 "監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡",
40997 "壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬",
40998 "橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐",
40999 "您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園",
41000 "紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉",
41001 "灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼",
41002 "齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩",
41003 "淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
41004 "莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘",
41005 "夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億",
41006 "璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴",
41007 "縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯",
41008 "津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳",
41009 "肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰",
41010 "貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭",
41011 "峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺",
41012 "浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡",
41013 "睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞",
41014 "炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴",
41015 "呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞",
41016 "授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰",
41017 "幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮",
41018 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違",
41019 "夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催",
41020 "繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯",
41021 "禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃",
41022 "勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊",
41023 "飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈",
41024 "掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅",
41025 "奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂",
41026 "寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱",
41027 "貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤",
41028 "漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹",
41029 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏",
41030 "銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅",
41031 "缸", "牽", "搶", "博", "巧", "殼", "兄", "杜", "訊", "誠",
41032 "碧", "祥", "柯", "頁", "巡", "矩", "悲", "灌", "齡", "倫",
41033 "票", "尋", "桂", "鋪", "聖", "恐", "恰", "鄭", "趣", "抬",
41034 "荒", "騰", "貼", "柔", "滴", "猛", "闊", "輛", "妻", "填",
41035 "撤", "儲", "簽", "鬧", "擾", "紫", "砂", "遞", "戲", "吊",
41036 "陶", "伐", "餵", "療", "瓶", "婆", "撫", "臂", "摸", "忍",
41037 "蝦", "蠟", "鄰", "胸", "鞏", "擠", "偶", "棄", "槽", "勁",
41038 "乳", "鄧", "吉", "仁", "爛", "磚", "租", "烏", "艦", "伴",
41039 "瓜", "淺", "丙", "暫", "燥", "橡", "柳", "迷", "暖", "牌",
41040 "秧", "膽", "詳", "簧", "踏", "瓷", "譜", "呆", "賓", "糊",
41041 "洛", "輝", "憤", "競", "隙", "怒", "粘", "乃", "緒", "肩",
41042 "籍", "敏", "塗", "熙", "皆", "偵", "懸", "掘", "享", "糾",
41043 "醒", "狂", "鎖", "淀", "恨", "牲", "霸", "爬", "賞", "逆",
41044 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鴨",
41045 "趨", "鳳", "晨", "畜", "輩", "秩", "卵", "署", "梯", "炎",
41046 "灘", "棋", "驅", "篩", "峽", "冒", "啥", "壽", "譯", "浸",
41047 "泉", "帽", "遲", "矽", "疆", "貸", "漏", "稿", "冠", "嫩",
41048 "脅", "芯", "牢", "叛", "蝕", "奧", "鳴", "嶺", "羊", "憑",
41049 "串", "塘", "繪", "酵", "融", "盆", "錫", "廟", "籌", "凍",
41050 "輔", "攝", "襲", "筋", "拒", "僚", "旱", "鉀", "鳥", "漆",
41051 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭",
41052 "僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸",
41053 "豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥",
41054 "掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨",
41055 "霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償",
41056 "蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥",
41057 "番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃",
41058 "扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框",
41059 "悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟",
41060 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋",
41061 "黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧",
41062 "甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨",
41063 "偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷",
41064 "弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄",
41065 "逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆",
41066 "冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟",
41067 "欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟",
41068 "搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒",
41069 "憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲",
41070 "杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎",
41071 "烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒",
41072 "姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇",
41073 "董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢",
41074 "拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋",
41075 "覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼",
41076 "兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪",
41077 "叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘",
41078 "鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘",
41079 "窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈",
41080 "胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄",
41081 "瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁",
41082 "嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿",
41083 "蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫",
41084 "皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩",
41085 "巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗",
41086 "卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ]
41087 </script>
41088 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
41089 WORDLISTS["french"] = [
41090 "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
41091 "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
41092 "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
41093 "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
41094 "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
41095 "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
41096 "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
41097 "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
41098 "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
41099 "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
41100 "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
41101 "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
41102 "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
41103 "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
41104 "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
41105 "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
41106 "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
41107 "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
41108 "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
41109 "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
41110 "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
41111 "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
41112 "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
41113 "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
41114 "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
41115 "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
41116 "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
41117 "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
41118 "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
41119 "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
41120 "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
41121 "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
41122 "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
41123 "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
41124 "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
41125 "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
41126 "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
41127 "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
41128 "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
41129 "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
41130 "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
41131 "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
41132 "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
41133 "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
41134 "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
41135 "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
41136 "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
41137 "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
41138 "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
41139 "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
41140 "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
41141 "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
41142 "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
41143 "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
41144 "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
41145 "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
41146 "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
41147 "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
41148 "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
41149 "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
41150 "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
41151 "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
41152 "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
41153 "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
41154 "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
41155 "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
41156 "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
41157 "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
41158 "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
41159 "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
41160 "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
41161 "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
41162 "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
41163 "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
41164 "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
41165 "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
41166 "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
41167 "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
41168 "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
41169 "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
41170 "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
41171 "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
41172 "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
41173 "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
41174 "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
41175 "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
41176 "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
41177 "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
41178 "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
41179 "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
41180 "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
41181 "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
41182 "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
41183 "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
41184 "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
41185 "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
41186 "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
41187 "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
41188 "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
41189 "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
41190 "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
41191 "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
41192 "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
41193 "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
41194 "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
41195 "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
41196 "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
41197 "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
41198 "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
41199 "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
41200 "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
41201 "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
41202 "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
41203 "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
41204 "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
41205 "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
41206 "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
41207 "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
41208 "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
41209 "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
41210 "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
41211 "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
41212 "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
41213 "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
41214 "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
41215 "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
41216 "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
41217 "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
41218 "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
41219 "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
41220 "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
41221 "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
41222 "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
41223 "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
41224 "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
41225 "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
41226 "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
41227 "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
41228 "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
41229 "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
41230 "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
41231 "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
41232 "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
41233 "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
41234 "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
41235 "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
41236 "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
41237 "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
41238 "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
41239 "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
41240 "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
41241 "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
41242 "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
41243 "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
41244 "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
41245 "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
41246 "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
41247 "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
41248 "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
41249 "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
41250 "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
41251 "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
41252 "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
41253 "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
41254 "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
41255 "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
41256 "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
41257 "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
41258 "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
41259 "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
41260 "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
41261 "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
41262 "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
41263 "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
41264 "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
41265 "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
41266 "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
41267 "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
41268 "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
41269 "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
41270 "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
41271 "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
41272 "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
41273 "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
41274 "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
41275 "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
41276 "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
41277 "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
41278 "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
41279 "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
41280 "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
41281 "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
41282 "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
41283 "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
41284 "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
41285 "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
41286 "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
41287 "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
41288 "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
41289 "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
41290 "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
41291 "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
41292 "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
41293 "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
41294 "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
41295 </script>
41296 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
41297 WORDLISTS["italian"] = [
41298 "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
41299 "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
41300 "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
41301 "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
41302 "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
41303 "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
41304 "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
41305 "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
41306 "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
41307 "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
41308 "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
41309 "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
41310 "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
41311 "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
41312 "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
41313 "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
41314 "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
41315 "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
41316 "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
41317 "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
41318 "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
41319 "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
41320 "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
41321 "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
41322 "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
41323 "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
41324 "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
41325 "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
41326 "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
41327 "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
41328 "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
41329 "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
41330 "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
41331 "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
41332 "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
41333 "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
41334 "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
41335 "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
41336 "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
41337 "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
41338 "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
41339 "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
41340 "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
41341 "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
41342 "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
41343 "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
41344 "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
41345 "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
41346 "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
41347 "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
41348 "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
41349 "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
41350 "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
41351 "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
41352 "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
41353 "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
41354 "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
41355 "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
41356 "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
41357 "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
41358 "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
41359 "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
41360 "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
41361 "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
41362 "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
41363 "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
41364 "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
41365 "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
41366 "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
41367 "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
41368 "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
41369 "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
41370 "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
41371 "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
41372 "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
41373 "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
41374 "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
41375 "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
41376 "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
41377 "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
41378 "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
41379 "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
41380 "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
41381 "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
41382 "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
41383 "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
41384 "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
41385 "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
41386 "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
41387 "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
41388 "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
41389 "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
41390 "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
41391 "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
41392 "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
41393 "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
41394 "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
41395 "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
41396 "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
41397 "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
41398 "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
41399 "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
41400 "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
41401 "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
41402 "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
41403 "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
41404 "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
41405 "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
41406 "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
41407 "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
41408 "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
41409 "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
41410 "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
41411 "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
41412 "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
41413 "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
41414 "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
41415 "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
41416 "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
41417 "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
41418 "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
41419 "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
41420 "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
41421 "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
41422 "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
41423 "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
41424 "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
41425 "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
41426 "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
41427 "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
41428 "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
41429 "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
41430 "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
41431 "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
41432 "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
41433 "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
41434 "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
41435 "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
41436 "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
41437 "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
41438 "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
41439 "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
41440 "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
41441 "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
41442 "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
41443 "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
41444 "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
41445 "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
41446 "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
41447 "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
41448 "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
41449 "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
41450 "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
41451 "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
41452 "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
41453 "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
41454 "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
41455 "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
41456 "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
41457 "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
41458 "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
41459 "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
41460 "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
41461 "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
41462 "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
41463 "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
41464 "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
41465 "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
41466 "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
41467 "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
41468 "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
41469 "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
41470 "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
41471 "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
41472 "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
41473 "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
41474 "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
41475 "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
41476 "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
41477 "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
41478 "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
41479 "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
41480 "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
41481 "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
41482 "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
41483 "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
41484 "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
41485 "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
41486 "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
41487 "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
41488 "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
41489 "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
41490 "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
41491 "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
41492 "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
41493 "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
41494 "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
41495 "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
41496 "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
41497 "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
41498 "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
41499 "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
41500 "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
41501 "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
41502 "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
41503 </script>
41504 <script>/*
41505 * Copyright (c) 2013 Pavol Rusnak
41506 *
41507 * Permission is hereby granted, free of charge, to any person obtaining a copy of
41508 * this software and associated documentation files (the "Software"), to deal in
41509 * the Software without restriction, including without limitation the rights to
41510 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
41511 * of the Software, and to permit persons to whom the Software is furnished to do
41512 * so, subject to the following conditions:
41513 *
41514 * The above copyright notice and this permission notice shall be included in all
41515 * copies or substantial portions of the Software.
41516 *
41517 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
41518 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
41519 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
41520 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
41521 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
41522 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
41523 */
41524
41525 /*
41526 * Javascript port from python by Ian Coleman
41527 *
41528 * Requires code from sjcl
41529 * https://github.com/bitwiseshiftleft/sjcl
41530 */
41531
41532 var Mnemonic = function(language) {
41533
41534 var PBKDF2_ROUNDS = 2048;
41535 var RADIX = 2048;
41536
41537 var self = this;
41538 var wordlist = [];
41539
41540 var hmacSHA512 = function(key) {
41541 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
41542 this.encrypt = function() {
41543 return hasher.encrypt.apply(hasher, arguments);
41544 };
41545 };
41546
41547 function init() {
41548 wordlist = WORDLISTS[language];
41549 if (wordlist.length != RADIX) {
41550 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
41551 throw err;
41552 }
41553 }
41554
41555 self.generate = function(strength) {
41556 strength = strength || 128;
41557 var r = strength % 32;
41558 if (r > 0) {
41559 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
41560 }
41561 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
41562 if (!hasStrongCrypto) {
41563 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
41564 }
41565 var buffer = new Uint8Array(strength / 8);
41566 var data = crypto.getRandomValues(buffer);
41567 return self.toMnemonic(data);
41568 }
41569
41570 self.toMnemonic = function(byteArray) {
41571 if (byteArray.length % 4 > 0) {
41572 throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).'
41573 }
41574
41575 //h = hashlib.sha256(data).hexdigest()
41576 var data = byteArrayToWordArray(byteArray);
41577 var hash = sjcl.hash.sha256.hash(data);
41578 var h = sjcl.codec.hex.fromBits(hash);
41579
41580 // b is a binary string, eg '00111010101100...'
41581 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
41582 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
41583 //
41584 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
41585 // c = bin(int(h, 16))[2:].zfill(256)
41586 // d = c[:len(data) * 8 / 32]
41587 var a = byteArrayToBinaryString(byteArray);
41588 var c = zfill(hexStringToBinaryString(h), 256);
41589 var d = c.substring(0, byteArray.length * 8 / 32);
41590 // b = line1 + line2
41591 var b = a + d;
41592
41593 var result = [];
41594 var blen = b.length / 11;
41595 for (var i=0; i<blen; i++) {
41596 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
41597 result.push(wordlist[idx]);
41598 }
41599 return self.joinWords(result);
41600 }
41601
41602 self.check = function(mnemonic) {
41603 var mnemonic = self.splitWords(mnemonic);
41604 if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
41605 return false
41606 }
41607 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
41608 var idx = [];
41609 for (var i=0; i<mnemonic.length; i++) {
41610 var word = mnemonic[i];
41611 var wordIndex = wordlist.indexOf(word);
41612 if (wordIndex == -1) {
41613 return false;
41614 }
41615 var binaryIndex = zfill(wordIndex.toString(2), 11);
41616 idx.push(binaryIndex);
41617 }
41618 var b = idx.join('');
41619 var l = b.length;
41620 //d = b[:l / 33 * 32]
41621 //h = b[-l / 33:]
41622 var d = b.substring(0, l / 33 * 32);
41623 var h = b.substring(l - l / 33, l);
41624 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
41625 var nd = binaryStringToWordArray(d);
41626 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
41627 var ndHash = sjcl.hash.sha256.hash(nd);
41628 var ndHex = sjcl.codec.hex.fromBits(ndHash);
41629 var ndBstr = zfill(hexStringToBinaryString(ndHex), 256);
41630 var nh = ndBstr.substring(0,l/33);
41631 return h == nh;
41632 }
41633
41634 self.toSeed = function(mnemonic, passphrase) {
41635 passphrase = passphrase || '';
41636 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
41637 var mnemonicNormalized = self.normalizeString(mnemonic);
41638 passphrase = self.normalizeString(passphrase)
41639 passphrase = "mnemonic" + passphrase;
41640 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
41641 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
41642 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
41643 var hashHex = sjcl.codec.hex.fromBits(result);
41644 return hashHex;
41645 }
41646
41647 self.splitWords = function(mnemonic) {
41648 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
41649 }
41650
41651 self.joinWords = function(words) {
41652 // Set space correctly depending on the language
41653 // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
41654 var space = " ";
41655 if (language == "japanese") {
41656 space = "\u3000"; // ideographic space
41657 }
41658 return words.join(space);
41659 }
41660
41661 self.normalizeString = function(str) {
41662 if (typeof str.normalize == "function") {
41663 return str.normalize("NFKD");
41664 }
41665 else {
41666 // TODO decide how to handle this in the future.
41667 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
41668 return str;
41669 }
41670 }
41671
41672 function byteArrayToWordArray(data) {
41673 var a = [];
41674 for (var i=0; i<data.length/4; i++) {
41675 v = 0;
41676 v += data[i*4 + 0] << 8 * 3;
41677 v += data[i*4 + 1] << 8 * 2;
41678 v += data[i*4 + 2] << 8 * 1;
41679 v += data[i*4 + 3] << 8 * 0;
41680 a.push(v);
41681 }
41682 return a;
41683 }
41684
41685 function byteArrayToBinaryString(data) {
41686 var bin = "";
41687 for (var i=0; i<data.length; i++) {
41688 bin += zfill(data[i].toString(2), 8);
41689 }
41690 return bin;
41691 }
41692
41693 function hexStringToBinaryString(hexString) {
41694 binaryString = "";
41695 for (var i=0; i<hexString.length; i++) {
41696 binaryString += zfill(parseInt(hexString[i], 16).toString(2),4);
41697 }
41698 return binaryString;
41699 }
41700
41701 function binaryStringToWordArray(binary) {
41702 var aLen = binary.length / 32;
41703 var a = [];
41704 for (var i=0; i<aLen; i++) {
41705 var valueStr = binary.substring(0,32);
41706 var value = parseInt(valueStr, 2);
41707 a.push(value);
41708 binary = binary.slice(32);
41709 }
41710 return a;
41711 }
41712
41713 // Pad a numeric string on the left with zero digits until the given width
41714 // is reached.
41715 // Note this differs to the python implementation because it does not
41716 // handle numbers starting with a sign.
41717 function zfill(source, length) {
41718 source = source.toString();
41719 while (source.length < length) {
41720 source = '0' + source;
41721 }
41722 return source;
41723 }
41724
41725 init();
41726
41727 }
41728 </script>
41729 <script>/*
41730 JavaScript BigInteger library version 0.9.1
41731 http://silentmatt.com/biginteger/
41732
41733 Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
41734 Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
41735 Licensed under the MIT license.
41736
41737 Support for arbitrary internal representation base was added by
41738 Vitaly Magerya.
41739 */
41740
41741 /*
41742 File: biginteger.js
41743
41744 Exports:
41745
41746 <BigInteger>
41747 */
41748 (function(exports) {
41749 "use strict";
41750 /*
41751 Class: BigInteger
41752 An arbitrarily-large integer.
41753
41754 <BigInteger> objects should be considered immutable. None of the "built-in"
41755 methods modify *this* or their arguments. All properties should be
41756 considered private.
41757
41758 All the methods of <BigInteger> instances can be called "statically". The
41759 static versions are convenient if you don't already have a <BigInteger>
41760 object.
41761
41762 As an example, these calls are equivalent.
41763
41764 > BigInteger(4).multiply(5); // returns BigInteger(20);
41765 > BigInteger.multiply(4, 5); // returns BigInteger(20);
41766
41767 > var a = 42;
41768 > var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
41769 */
41770
41771 var CONSTRUCT = {}; // Unique token to call "private" version of constructor
41772
41773 /*
41774 Constructor: BigInteger()
41775 Convert a value to a <BigInteger>.
41776
41777 Although <BigInteger()> is the constructor for <BigInteger> objects, it is
41778 best not to call it as a constructor. If *n* is a <BigInteger> object, it is
41779 simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
41780 without a radix argument.
41781
41782 > var n0 = BigInteger(); // Same as <BigInteger.ZERO>
41783 > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
41784 > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123
41785 > var n3 = BigInteger(n2); // Return n2, unchanged
41786
41787 The constructor form only takes an array and a sign. *n* must be an
41788 array of numbers in little-endian order, where each digit is between 0
41789 and BigInteger.base. The second parameter sets the sign: -1 for
41790 negative, +1 for positive, or 0 for zero. The array is *not copied and
41791 may be modified*. If the array contains only zeros, the sign parameter
41792 is ignored and is forced to zero.
41793
41794 > new BigInteger([5], -1): create a new BigInteger with value -5
41795
41796 Parameters:
41797
41798 n - Value to convert to a <BigInteger>.
41799
41800 Returns:
41801
41802 A <BigInteger> value.
41803
41804 See Also:
41805
41806 <parse>, <BigInteger>
41807 */
41808 function BigInteger(n, s, token) {
41809 if (token !== CONSTRUCT) {
41810 if (n instanceof BigInteger) {
41811 return n;
41812 }
41813 else if (typeof n === "undefined") {
41814 return ZERO;
41815 }
41816 return BigInteger.parse(n);
41817 }
41818
41819 n = n || []; // Provide the nullary constructor for subclasses.
41820 while (n.length && !n[n.length - 1]) {
41821 --n.length;
41822 }
41823 this._d = n;
41824 this._s = n.length ? (s || 1) : 0;
41825 }
41826
41827 BigInteger._construct = function(n, s) {
41828 return new BigInteger(n, s, CONSTRUCT);
41829 };
41830
41831 // Base-10 speedup hacks in parse, toString, exp10 and log functions
41832 // require base to be a power of 10. 10^7 is the largest such power
41833 // that won't cause a precision loss when digits are multiplied.
41834 var BigInteger_base = 10000000;
41835 var BigInteger_base_log10 = 7;
41836
41837 BigInteger.base = BigInteger_base;
41838 BigInteger.base_log10 = BigInteger_base_log10;
41839
41840 var ZERO = new BigInteger([], 0, CONSTRUCT);
41841 // Constant: ZERO
41842 // <BigInteger> 0.
41843 BigInteger.ZERO = ZERO;
41844
41845 var ONE = new BigInteger([1], 1, CONSTRUCT);
41846 // Constant: ONE
41847 // <BigInteger> 1.
41848 BigInteger.ONE = ONE;
41849
41850 var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
41851 // Constant: M_ONE
41852 // <BigInteger> -1.
41853 BigInteger.M_ONE = M_ONE;
41854
41855 // Constant: _0
41856 // Shortcut for <ZERO>.
41857 BigInteger._0 = ZERO;
41858
41859 // Constant: _1
41860 // Shortcut for <ONE>.
41861 BigInteger._1 = ONE;
41862
41863 /*
41864 Constant: small
41865 Array of <BigIntegers> from 0 to 36.
41866
41867 These are used internally for parsing, but useful when you need a "small"
41868 <BigInteger>.
41869
41870 See Also:
41871
41872 <ZERO>, <ONE>, <_0>, <_1>
41873 */
41874 BigInteger.small = [
41875 ZERO,
41876 ONE,
41877 /* Assuming BigInteger_base > 36 */
41878 new BigInteger( [2], 1, CONSTRUCT),
41879 new BigInteger( [3], 1, CONSTRUCT),
41880 new BigInteger( [4], 1, CONSTRUCT),
41881 new BigInteger( [5], 1, CONSTRUCT),
41882 new BigInteger( [6], 1, CONSTRUCT),
41883 new BigInteger( [7], 1, CONSTRUCT),
41884 new BigInteger( [8], 1, CONSTRUCT),
41885 new BigInteger( [9], 1, CONSTRUCT),
41886 new BigInteger([10], 1, CONSTRUCT),
41887 new BigInteger([11], 1, CONSTRUCT),
41888 new BigInteger([12], 1, CONSTRUCT),
41889 new BigInteger([13], 1, CONSTRUCT),
41890 new BigInteger([14], 1, CONSTRUCT),
41891 new BigInteger([15], 1, CONSTRUCT),
41892 new BigInteger([16], 1, CONSTRUCT),
41893 new BigInteger([17], 1, CONSTRUCT),
41894 new BigInteger([18], 1, CONSTRUCT),
41895 new BigInteger([19], 1, CONSTRUCT),
41896 new BigInteger([20], 1, CONSTRUCT),
41897 new BigInteger([21], 1, CONSTRUCT),
41898 new BigInteger([22], 1, CONSTRUCT),
41899 new BigInteger([23], 1, CONSTRUCT),
41900 new BigInteger([24], 1, CONSTRUCT),
41901 new BigInteger([25], 1, CONSTRUCT),
41902 new BigInteger([26], 1, CONSTRUCT),
41903 new BigInteger([27], 1, CONSTRUCT),
41904 new BigInteger([28], 1, CONSTRUCT),
41905 new BigInteger([29], 1, CONSTRUCT),
41906 new BigInteger([30], 1, CONSTRUCT),
41907 new BigInteger([31], 1, CONSTRUCT),
41908 new BigInteger([32], 1, CONSTRUCT),
41909 new BigInteger([33], 1, CONSTRUCT),
41910 new BigInteger([34], 1, CONSTRUCT),
41911 new BigInteger([35], 1, CONSTRUCT),
41912 new BigInteger([36], 1, CONSTRUCT)
41913 ];
41914
41915 // Used for parsing/radix conversion
41916 BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
41917
41918 /*
41919 Method: toString
41920 Convert a <BigInteger> to a string.
41921
41922 When *base* is greater than 10, letters are upper case.
41923
41924 Parameters:
41925
41926 base - Optional base to represent the number in (default is base 10).
41927 Must be between 2 and 36 inclusive, or an Error will be thrown.
41928
41929 Returns:
41930
41931 The string representation of the <BigInteger>.
41932 */
41933 BigInteger.prototype.toString = function(base) {
41934 base = +base || 10;
41935 if (base < 2 || base > 36) {
41936 throw new Error("illegal radix " + base + ".");
41937 }
41938 if (this._s === 0) {
41939 return "0";
41940 }
41941 if (base === 10) {
41942 var str = this._s < 0 ? "-" : "";
41943 str += this._d[this._d.length - 1].toString();
41944 for (var i = this._d.length - 2; i >= 0; i--) {
41945 var group = this._d[i].toString();
41946 while (group.length < BigInteger_base_log10) group = '0' + group;
41947 str += group;
41948 }
41949 return str;
41950 }
41951 else {
41952 var numerals = BigInteger.digits;
41953 base = BigInteger.small[base];
41954 var sign = this._s;
41955
41956 var n = this.abs();
41957 var digits = [];
41958 var digit;
41959
41960 while (n._s !== 0) {
41961 var divmod = n.divRem(base);
41962 n = divmod[0];
41963 digit = divmod[1];
41964 // TODO: This could be changed to unshift instead of reversing at the end.
41965 // Benchmark both to compare speeds.
41966 digits.push(numerals[digit.valueOf()]);
41967 }
41968 return (sign < 0 ? "-" : "") + digits.reverse().join("");
41969 }
41970 };
41971
41972 // Verify strings for parsing
41973 BigInteger.radixRegex = [
41974 /^$/,
41975 /^$/,
41976 /^[01]*$/,
41977 /^[012]*$/,
41978 /^[0-3]*$/,
41979 /^[0-4]*$/,
41980 /^[0-5]*$/,
41981 /^[0-6]*$/,
41982 /^[0-7]*$/,
41983 /^[0-8]*$/,
41984 /^[0-9]*$/,
41985 /^[0-9aA]*$/,
41986 /^[0-9abAB]*$/,
41987 /^[0-9abcABC]*$/,
41988 /^[0-9a-dA-D]*$/,
41989 /^[0-9a-eA-E]*$/,
41990 /^[0-9a-fA-F]*$/,
41991 /^[0-9a-gA-G]*$/,
41992 /^[0-9a-hA-H]*$/,
41993 /^[0-9a-iA-I]*$/,
41994 /^[0-9a-jA-J]*$/,
41995 /^[0-9a-kA-K]*$/,
41996 /^[0-9a-lA-L]*$/,
41997 /^[0-9a-mA-M]*$/,
41998 /^[0-9a-nA-N]*$/,
41999 /^[0-9a-oA-O]*$/,
42000 /^[0-9a-pA-P]*$/,
42001 /^[0-9a-qA-Q]*$/,
42002 /^[0-9a-rA-R]*$/,
42003 /^[0-9a-sA-S]*$/,
42004 /^[0-9a-tA-T]*$/,
42005 /^[0-9a-uA-U]*$/,
42006 /^[0-9a-vA-V]*$/,
42007 /^[0-9a-wA-W]*$/,
42008 /^[0-9a-xA-X]*$/,
42009 /^[0-9a-yA-Y]*$/,
42010 /^[0-9a-zA-Z]*$/
42011 ];
42012
42013 /*
42014 Function: parse
42015 Parse a string into a <BigInteger>.
42016
42017 *base* is optional but, if provided, must be from 2 to 36 inclusive. If
42018 *base* is not provided, it will be guessed based on the leading characters
42019 of *s* as follows:
42020
42021 - "0x" or "0X": *base* = 16
42022 - "0c" or "0C": *base* = 8
42023 - "0b" or "0B": *base* = 2
42024 - else: *base* = 10
42025
42026 If no base is provided, or *base* is 10, the number can be in exponential
42027 form. For example, these are all valid:
42028
42029 > BigInteger.parse("1e9"); // Same as "1000000000"
42030 > BigInteger.parse("1.234*10^3"); // Same as 1234
42031 > BigInteger.parse("56789 * 10 ** -2"); // Same as 567
42032
42033 If any characters fall outside the range defined by the radix, an exception
42034 will be thrown.
42035
42036 Parameters:
42037
42038 s - The string to parse.
42039 base - Optional radix (default is to guess based on *s*).
42040
42041 Returns:
42042
42043 a <BigInteger> instance.
42044 */
42045 BigInteger.parse = function(s, base) {
42046 // Expands a number in exponential form to decimal form.
42047 // expandExponential("-13.441*10^5") === "1344100";
42048 // expandExponential("1.12300e-1") === "0.112300";
42049 // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
42050 function expandExponential(str) {
42051 str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
42052
42053 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
42054 c = +c;
42055 var l = c < 0;
42056 var i = n.length + c;
42057 x = (l ? n : f).length;
42058 c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
42059 var z = (new Array(c + 1)).join("0");
42060 var r = n + f;
42061 return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
42062 });
42063 }
42064
42065 s = s.toString();
42066 if (typeof base === "undefined" || +base === 10) {
42067 s = expandExponential(s);
42068 }
42069
42070 var prefixRE;
42071 if (typeof base === "undefined") {
42072 prefixRE = '0[xcb]';
42073 }
42074 else if (base == 16) {
42075 prefixRE = '0x';
42076 }
42077 else if (base == 8) {
42078 prefixRE = '0c';
42079 }
42080 else if (base == 2) {
42081 prefixRE = '0b';
42082 }
42083 else {
42084 prefixRE = '';
42085 }
42086 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
42087 if (parts) {
42088 var sign = parts[1] || "+";
42089 var baseSection = parts[2] || "";
42090 var digits = parts[3] || "";
42091
42092 if (typeof base === "undefined") {
42093 // Guess base
42094 if (baseSection === "0x" || baseSection === "0X") { // Hex
42095 base = 16;
42096 }
42097 else if (baseSection === "0c" || baseSection === "0C") { // Octal
42098 base = 8;
42099 }
42100 else if (baseSection === "0b" || baseSection === "0B") { // Binary
42101 base = 2;
42102 }
42103 else {
42104 base = 10;
42105 }
42106 }
42107 else if (base < 2 || base > 36) {
42108 throw new Error("Illegal radix " + base + ".");
42109 }
42110
42111 base = +base;
42112
42113 // Check for digits outside the range
42114 if (!(BigInteger.radixRegex[base].test(digits))) {
42115 throw new Error("Bad digit for radix " + base);
42116 }
42117
42118 // Strip leading zeros, and convert to array
42119 digits = digits.replace(/^0+/, "").split("");
42120 if (digits.length === 0) {
42121 return ZERO;
42122 }
42123
42124 // Get the sign (we know it's not zero)
42125 sign = (sign === "-") ? -1 : 1;
42126
42127 // Optimize 10
42128 if (base == 10) {
42129 var d = [];
42130 while (digits.length >= BigInteger_base_log10) {
42131 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
42132 }
42133 d.push(parseInt(digits.join(''), 10));
42134 return new BigInteger(d, sign, CONSTRUCT);
42135 }
42136
42137 // Do the conversion
42138 var d = ZERO;
42139 base = BigInteger.small[base];
42140 var small = BigInteger.small;
42141 for (var i = 0; i < digits.length; i++) {
42142 d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
42143 }
42144 return new BigInteger(d._d, sign, CONSTRUCT);
42145 }
42146 else {
42147 throw new Error("Invalid BigInteger format: " + s);
42148 }
42149 };
42150
42151 /*
42152 Function: add
42153 Add two <BigIntegers>.
42154
42155 Parameters:
42156
42157 n - The number to add to *this*. Will be converted to a <BigInteger>.
42158
42159 Returns:
42160
42161 The numbers added together.
42162
42163 See Also:
42164
42165 <subtract>, <multiply>, <quotient>, <next>
42166 */
42167 BigInteger.prototype.add = function(n) {
42168 if (this._s === 0) {
42169 return BigInteger(n);
42170 }
42171
42172 n = BigInteger(n);
42173 if (n._s === 0) {
42174 return this;
42175 }
42176 if (this._s !== n._s) {
42177 n = n.negate();
42178 return this.subtract(n);
42179 }
42180
42181 var a = this._d;
42182 var b = n._d;
42183 var al = a.length;
42184 var bl = b.length;
42185 var sum = new Array(Math.max(al, bl) + 1);
42186 var size = Math.min(al, bl);
42187 var carry = 0;
42188 var digit;
42189
42190 for (var i = 0; i < size; i++) {
42191 digit = a[i] + b[i] + carry;
42192 sum[i] = digit % BigInteger_base;
42193 carry = (digit / BigInteger_base) | 0;
42194 }
42195 if (bl > al) {
42196 a = b;
42197 al = bl;
42198 }
42199 for (i = size; carry && i < al; i++) {
42200 digit = a[i] + carry;
42201 sum[i] = digit % BigInteger_base;
42202 carry = (digit / BigInteger_base) | 0;
42203 }
42204 if (carry) {
42205 sum[i] = carry;
42206 }
42207
42208 for ( ; i < al; i++) {
42209 sum[i] = a[i];
42210 }
42211
42212 return new BigInteger(sum, this._s, CONSTRUCT);
42213 };
42214
42215 /*
42216 Function: negate
42217 Get the additive inverse of a <BigInteger>.
42218
42219 Returns:
42220
42221 A <BigInteger> with the same magnatude, but with the opposite sign.
42222
42223 See Also:
42224
42225 <abs>
42226 */
42227 BigInteger.prototype.negate = function() {
42228 return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
42229 };
42230
42231 /*
42232 Function: abs
42233 Get the absolute value of a <BigInteger>.
42234
42235 Returns:
42236
42237 A <BigInteger> with the same magnatude, but always positive (or zero).
42238
42239 See Also:
42240
42241 <negate>
42242 */
42243 BigInteger.prototype.abs = function() {
42244 return (this._s < 0) ? this.negate() : this;
42245 };
42246
42247 /*
42248 Function: subtract
42249 Subtract two <BigIntegers>.
42250
42251 Parameters:
42252
42253 n - The number to subtract from *this*. Will be converted to a <BigInteger>.
42254
42255 Returns:
42256
42257 The *n* subtracted from *this*.
42258
42259 See Also:
42260
42261 <add>, <multiply>, <quotient>, <prev>
42262 */
42263 BigInteger.prototype.subtract = function(n) {
42264 if (this._s === 0) {
42265 return BigInteger(n).negate();
42266 }
42267
42268 n = BigInteger(n);
42269 if (n._s === 0) {
42270 return this;
42271 }
42272 if (this._s !== n._s) {
42273 n = n.negate();
42274 return this.add(n);
42275 }
42276
42277 var m = this;
42278 // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
42279 if (this._s < 0) {
42280 m = new BigInteger(n._d, 1, CONSTRUCT);
42281 n = new BigInteger(this._d, 1, CONSTRUCT);
42282 }
42283
42284 // Both are positive => a - b
42285 var sign = m.compareAbs(n);
42286 if (sign === 0) {
42287 return ZERO;
42288 }
42289 else if (sign < 0) {
42290 // swap m and n
42291 var t = n;
42292 n = m;
42293 m = t;
42294 }
42295
42296 // a > b
42297 var a = m._d;
42298 var b = n._d;
42299 var al = a.length;
42300 var bl = b.length;
42301 var diff = new Array(al); // al >= bl since a > b
42302 var borrow = 0;
42303 var i;
42304 var digit;
42305
42306 for (i = 0; i < bl; i++) {
42307 digit = a[i] - borrow - b[i];
42308 if (digit < 0) {
42309 digit += BigInteger_base;
42310 borrow = 1;
42311 }
42312 else {
42313 borrow = 0;
42314 }
42315 diff[i] = digit;
42316 }
42317 for (i = bl; i < al; i++) {
42318 digit = a[i] - borrow;
42319 if (digit < 0) {
42320 digit += BigInteger_base;
42321 }
42322 else {
42323 diff[i++] = digit;
42324 break;
42325 }
42326 diff[i] = digit;
42327 }
42328 for ( ; i < al; i++) {
42329 diff[i] = a[i];
42330 }
42331
42332 return new BigInteger(diff, sign, CONSTRUCT);
42333 };
42334
42335 (function() {
42336 function addOne(n, sign) {
42337 var a = n._d;
42338 var sum = a.slice();
42339 var carry = true;
42340 var i = 0;
42341
42342 while (true) {
42343 var digit = (a[i] || 0) + 1;
42344 sum[i] = digit % BigInteger_base;
42345 if (digit <= BigInteger_base - 1) {
42346 break;
42347 }
42348 ++i;
42349 }
42350
42351 return new BigInteger(sum, sign, CONSTRUCT);
42352 }
42353
42354 function subtractOne(n, sign) {
42355 var a = n._d;
42356 var sum = a.slice();
42357 var borrow = true;
42358 var i = 0;
42359
42360 while (true) {
42361 var digit = (a[i] || 0) - 1;
42362 if (digit < 0) {
42363 sum[i] = digit + BigInteger_base;
42364 }
42365 else {
42366 sum[i] = digit;
42367 break;
42368 }
42369 ++i;
42370 }
42371
42372 return new BigInteger(sum, sign, CONSTRUCT);
42373 }
42374
42375 /*
42376 Function: next
42377 Get the next <BigInteger> (add one).
42378
42379 Returns:
42380
42381 *this* + 1.
42382
42383 See Also:
42384
42385 <add>, <prev>
42386 */
42387 BigInteger.prototype.next = function() {
42388 switch (this._s) {
42389 case 0:
42390 return ONE;
42391 case -1:
42392 return subtractOne(this, -1);
42393 // case 1:
42394 default:
42395 return addOne(this, 1);
42396 }
42397 };
42398
42399 /*
42400 Function: prev
42401 Get the previous <BigInteger> (subtract one).
42402
42403 Returns:
42404
42405 *this* - 1.
42406
42407 See Also:
42408
42409 <next>, <subtract>
42410 */
42411 BigInteger.prototype.prev = function() {
42412 switch (this._s) {
42413 case 0:
42414 return M_ONE;
42415 case -1:
42416 return addOne(this, -1);
42417 // case 1:
42418 default:
42419 return subtractOne(this, 1);
42420 }
42421 };
42422 })();
42423
42424 /*
42425 Function: compareAbs
42426 Compare the absolute value of two <BigIntegers>.
42427
42428 Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
42429
42430 Parameters:
42431
42432 n - The number to compare to *this*. Will be converted to a <BigInteger>.
42433
42434 Returns:
42435
42436 -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
42437
42438 See Also:
42439
42440 <compare>, <abs>
42441 */
42442 BigInteger.prototype.compareAbs = function(n) {
42443 if (this === n) {
42444 return 0;
42445 }
42446
42447 if (!(n instanceof BigInteger)) {
42448 if (!isFinite(n)) {
42449 return(isNaN(n) ? n : -1);
42450 }
42451 n = BigInteger(n);
42452 }
42453
42454 if (this._s === 0) {
42455 return (n._s !== 0) ? -1 : 0;
42456 }
42457 if (n._s === 0) {
42458 return 1;
42459 }
42460
42461 var l = this._d.length;
42462 var nl = n._d.length;
42463 if (l < nl) {
42464 return -1;
42465 }
42466 else if (l > nl) {
42467 return 1;
42468 }
42469
42470 var a = this._d;
42471 var b = n._d;
42472 for (var i = l-1; i >= 0; i--) {
42473 if (a[i] !== b[i]) {
42474 return a[i] < b[i] ? -1 : 1;
42475 }
42476 }
42477
42478 return 0;
42479 };
42480
42481 /*
42482 Function: compare
42483 Compare two <BigIntegers>.
42484
42485 Parameters:
42486
42487 n - The number to compare to *this*. Will be converted to a <BigInteger>.
42488
42489 Returns:
42490
42491 -1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
42492
42493 See Also:
42494
42495 <compareAbs>, <isPositive>, <isNegative>, <isUnit>
42496 */
42497 BigInteger.prototype.compare = function(n) {
42498 if (this === n) {
42499 return 0;
42500 }
42501
42502 n = BigInteger(n);
42503
42504 if (this._s === 0) {
42505 return -n._s;
42506 }
42507
42508 if (this._s === n._s) { // both positive or both negative
42509 var cmp = this.compareAbs(n);
42510 return cmp * this._s;
42511 }
42512 else {
42513 return this._s;
42514 }
42515 };
42516
42517 /*
42518 Function: isUnit
42519 Return true iff *this* is either 1 or -1.
42520
42521 Returns:
42522
42523 true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
42524
42525 See Also:
42526
42527 <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
42528 <BigInteger.ONE>, <BigInteger.M_ONE>
42529 */
42530 BigInteger.prototype.isUnit = function() {
42531 return this === ONE ||
42532 this === M_ONE ||
42533 (this._d.length === 1 && this._d[0] === 1);
42534 };
42535
42536 /*
42537 Function: multiply
42538 Multiply two <BigIntegers>.
42539
42540 Parameters:
42541
42542 n - The number to multiply *this* by. Will be converted to a
42543 <BigInteger>.
42544
42545 Returns:
42546
42547 The numbers multiplied together.
42548
42549 See Also:
42550
42551 <add>, <subtract>, <quotient>, <square>
42552 */
42553 BigInteger.prototype.multiply = function(n) {
42554 // TODO: Consider adding Karatsuba multiplication for large numbers
42555 if (this._s === 0) {
42556 return ZERO;
42557 }
42558
42559 n = BigInteger(n);
42560 if (n._s === 0) {
42561 return ZERO;
42562 }
42563 if (this.isUnit()) {
42564 if (this._s < 0) {
42565 return n.negate();
42566 }
42567 return n;
42568 }
42569 if (n.isUnit()) {
42570 if (n._s < 0) {
42571 return this.negate();
42572 }
42573 return this;
42574 }
42575 if (this === n) {
42576 return this.square();
42577 }
42578
42579 var r = (this._d.length >= n._d.length);
42580 var a = (r ? this : n)._d; // a will be longer than b
42581 var b = (r ? n : this)._d;
42582 var al = a.length;
42583 var bl = b.length;
42584
42585 var pl = al + bl;
42586 var partial = new Array(pl);
42587 var i;
42588 for (i = 0; i < pl; i++) {
42589 partial[i] = 0;
42590 }
42591
42592 for (i = 0; i < bl; i++) {
42593 var carry = 0;
42594 var bi = b[i];
42595 var jlimit = al + i;
42596 var digit;
42597 for (var j = i; j < jlimit; j++) {
42598 digit = partial[j] + bi * a[j - i] + carry;
42599 carry = (digit / BigInteger_base) | 0;
42600 partial[j] = (digit % BigInteger_base) | 0;
42601 }
42602 if (carry) {
42603 digit = partial[j] + carry;
42604 carry = (digit / BigInteger_base) | 0;
42605 partial[j] = digit % BigInteger_base;
42606 }
42607 }
42608 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
42609 };
42610
42611 // Multiply a BigInteger by a single-digit native number
42612 // Assumes that this and n are >= 0
42613 // This is not really intended to be used outside the library itself
42614 BigInteger.prototype.multiplySingleDigit = function(n) {
42615 if (n === 0 || this._s === 0) {
42616 return ZERO;
42617 }
42618 if (n === 1) {
42619 return this;
42620 }
42621
42622 var digit;
42623 if (this._d.length === 1) {
42624 digit = this._d[0] * n;
42625 if (digit >= BigInteger_base) {
42626 return new BigInteger([(digit % BigInteger_base)|0,
42627 (digit / BigInteger_base)|0], 1, CONSTRUCT);
42628 }
42629 return new BigInteger([digit], 1, CONSTRUCT);
42630 }
42631
42632 if (n === 2) {
42633 return this.add(this);
42634 }
42635 if (this.isUnit()) {
42636 return new BigInteger([n], 1, CONSTRUCT);
42637 }
42638
42639 var a = this._d;
42640 var al = a.length;
42641
42642 var pl = al + 1;
42643 var partial = new Array(pl);
42644 for (var i = 0; i < pl; i++) {
42645 partial[i] = 0;
42646 }
42647
42648 var carry = 0;
42649 for (var j = 0; j < al; j++) {
42650 digit = n * a[j] + carry;
42651 carry = (digit / BigInteger_base) | 0;
42652 partial[j] = (digit % BigInteger_base) | 0;
42653 }
42654 if (carry) {
42655 partial[j] = carry;
42656 }
42657
42658 return new BigInteger(partial, 1, CONSTRUCT);
42659 };
42660
42661 /*
42662 Function: square
42663 Multiply a <BigInteger> by itself.
42664
42665 This is slightly faster than regular multiplication, since it removes the
42666 duplicated multiplcations.
42667
42668 Returns:
42669
42670 > this.multiply(this)
42671
42672 See Also:
42673 <multiply>
42674 */
42675 BigInteger.prototype.square = function() {
42676 // Normally, squaring a 10-digit number would take 100 multiplications.
42677 // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
42678 // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
42679 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
42680
42681 if (this._s === 0) {
42682 return ZERO;
42683 }
42684 if (this.isUnit()) {
42685 return ONE;
42686 }
42687
42688 var digits = this._d;
42689 var length = digits.length;
42690 var imult1 = new Array(length + length + 1);
42691 var product, carry, k;
42692 var i;
42693
42694 // Calculate diagonal
42695 for (i = 0; i < length; i++) {
42696 k = i * 2;
42697 product = digits[i] * digits[i];
42698 carry = (product / BigInteger_base) | 0;
42699 imult1[k] = product % BigInteger_base;
42700 imult1[k + 1] = carry;
42701 }
42702
42703 // Calculate repeating part
42704 for (i = 0; i < length; i++) {
42705 carry = 0;
42706 k = i * 2 + 1;
42707 for (var j = i + 1; j < length; j++, k++) {
42708 product = digits[j] * digits[i] * 2 + imult1[k] + carry;
42709 carry = (product / BigInteger_base) | 0;
42710 imult1[k] = product % BigInteger_base;
42711 }
42712 k = length + i;
42713 var digit = carry + imult1[k];
42714 carry = (digit / BigInteger_base) | 0;
42715 imult1[k] = digit % BigInteger_base;
42716 imult1[k + 1] += carry;
42717 }
42718
42719 return new BigInteger(imult1, 1, CONSTRUCT);
42720 };
42721
42722 /*
42723 Function: quotient
42724 Divide two <BigIntegers> and truncate towards zero.
42725
42726 <quotient> throws an exception if *n* is zero.
42727
42728 Parameters:
42729
42730 n - The number to divide *this* by. Will be converted to a <BigInteger>.
42731
42732 Returns:
42733
42734 The *this* / *n*, truncated to an integer.
42735
42736 See Also:
42737
42738 <add>, <subtract>, <multiply>, <divRem>, <remainder>
42739 */
42740 BigInteger.prototype.quotient = function(n) {
42741 return this.divRem(n)[0];
42742 };
42743
42744 /*
42745 Function: divide
42746 Deprecated synonym for <quotient>.
42747 */
42748 BigInteger.prototype.divide = BigInteger.prototype.quotient;
42749
42750 /*
42751 Function: remainder
42752 Calculate the remainder of two <BigIntegers>.
42753
42754 <remainder> throws an exception if *n* is zero.
42755
42756 Parameters:
42757
42758 n - The remainder after *this* is divided *this* by *n*. Will be
42759 converted to a <BigInteger>.
42760
42761 Returns:
42762
42763 *this* % *n*.
42764
42765 See Also:
42766
42767 <divRem>, <quotient>
42768 */
42769 BigInteger.prototype.remainder = function(n) {
42770 return this.divRem(n)[1];
42771 };
42772
42773 /*
42774 Function: divRem
42775 Calculate the integer quotient and remainder of two <BigIntegers>.
42776
42777 <divRem> throws an exception if *n* is zero.
42778
42779 Parameters:
42780
42781 n - The number to divide *this* by. Will be converted to a <BigInteger>.
42782
42783 Returns:
42784
42785 A two-element array containing the quotient and the remainder.
42786
42787 > a.divRem(b)
42788
42789 is exactly equivalent to
42790
42791 > [a.quotient(b), a.remainder(b)]
42792
42793 except it is faster, because they are calculated at the same time.
42794
42795 See Also:
42796
42797 <quotient>, <remainder>
42798 */
42799 BigInteger.prototype.divRem = function(n) {
42800 n = BigInteger(n);
42801 if (n._s === 0) {
42802 throw new Error("Divide by zero");
42803 }
42804 if (this._s === 0) {
42805 return [ZERO, ZERO];
42806 }
42807 if (n._d.length === 1) {
42808 return this.divRemSmall(n._s * n._d[0]);
42809 }
42810
42811 // Test for easy cases -- |n1| <= |n2|
42812 switch (this.compareAbs(n)) {
42813 case 0: // n1 == n2
42814 return [this._s === n._s ? ONE : M_ONE, ZERO];
42815 case -1: // |n1| < |n2|
42816 return [ZERO, this];
42817 }
42818
42819 var sign = this._s * n._s;
42820 var a = n.abs();
42821 var b_digits = this._d;
42822 var b_index = b_digits.length;
42823 var digits = n._d.length;
42824 var quot = [];
42825 var guess;
42826
42827 var part = new BigInteger([], 0, CONSTRUCT);
42828
42829 while (b_index) {
42830 part._d.unshift(b_digits[--b_index]);
42831 part = new BigInteger(part._d, 1, CONSTRUCT);
42832
42833 if (part.compareAbs(n) < 0) {
42834 quot.push(0);
42835 continue;
42836 }
42837 if (part._s === 0) {
42838 guess = 0;
42839 }
42840 else {
42841 var xlen = part._d.length, ylen = a._d.length;
42842 var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
42843 var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
42844 if (part._d.length > a._d.length) {
42845 // The length of part._d can either match a._d length,
42846 // or exceed it by one.
42847 highx = (highx+1)*BigInteger_base;
42848 }
42849 guess = Math.ceil(highx/highy);
42850 }
42851 do {
42852 var check = a.multiplySingleDigit(guess);
42853 if (check.compareAbs(part) <= 0) {
42854 break;
42855 }
42856 guess--;
42857 } while (guess);
42858
42859 quot.push(guess);
42860 if (!guess) {
42861 continue;
42862 }
42863 var diff = part.subtract(check);
42864 part._d = diff._d.slice();
42865 }
42866
42867 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
42868 new BigInteger(part._d, this._s, CONSTRUCT)];
42869 };
42870
42871 // Throws an exception if n is outside of (-BigInteger.base, -1] or
42872 // [1, BigInteger.base). It's not necessary to call this, since the
42873 // other division functions will call it if they are able to.
42874 BigInteger.prototype.divRemSmall = function(n) {
42875 var r;
42876 n = +n;
42877 if (n === 0) {
42878 throw new Error("Divide by zero");
42879 }
42880
42881 var n_s = n < 0 ? -1 : 1;
42882 var sign = this._s * n_s;
42883 n = Math.abs(n);
42884
42885 if (n < 1 || n >= BigInteger_base) {
42886 throw new Error("Argument out of range");
42887 }
42888
42889 if (this._s === 0) {
42890 return [ZERO, ZERO];
42891 }
42892
42893 if (n === 1 || n === -1) {
42894 return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
42895 }
42896
42897 // 2 <= n < BigInteger_base
42898
42899 // divide a single digit by a single digit
42900 if (this._d.length === 1) {
42901 var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
42902 r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
42903 if (sign < 0) {
42904 q = q.negate();
42905 }
42906 if (this._s < 0) {
42907 r = r.negate();
42908 }
42909 return [q, r];
42910 }
42911
42912 var digits = this._d.slice();
42913 var quot = new Array(digits.length);
42914 var part = 0;
42915 var diff = 0;
42916 var i = 0;
42917 var guess;
42918
42919 while (digits.length) {
42920 part = part * BigInteger_base + digits[digits.length - 1];
42921 if (part < n) {
42922 quot[i++] = 0;
42923 digits.pop();
42924 diff = BigInteger_base * diff + part;
42925 continue;
42926 }
42927 if (part === 0) {
42928 guess = 0;
42929 }
42930 else {
42931 guess = (part / n) | 0;
42932 }
42933
42934 var check = n * guess;
42935 diff = part - check;
42936 quot[i++] = guess;
42937 if (!guess) {
42938 digits.pop();
42939 continue;
42940 }
42941
42942 digits.pop();
42943 part = diff;
42944 }
42945
42946 r = new BigInteger([diff], 1, CONSTRUCT);
42947 if (this._s < 0) {
42948 r = r.negate();
42949 }
42950 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
42951 };
42952
42953 /*
42954 Function: isEven
42955 Return true iff *this* is divisible by two.
42956
42957 Note that <BigInteger.ZERO> is even.
42958
42959 Returns:
42960
42961 true if *this* is even, false otherwise.
42962
42963 See Also:
42964
42965 <isOdd>
42966 */
42967 BigInteger.prototype.isEven = function() {
42968 var digits = this._d;
42969 return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
42970 };
42971
42972 /*
42973 Function: isOdd
42974 Return true iff *this* is not divisible by two.
42975
42976 Returns:
42977
42978 true if *this* is odd, false otherwise.
42979
42980 See Also:
42981
42982 <isEven>
42983 */
42984 BigInteger.prototype.isOdd = function() {
42985 return !this.isEven();
42986 };
42987
42988 /*
42989 Function: sign
42990 Get the sign of a <BigInteger>.
42991
42992 Returns:
42993
42994 * -1 if *this* < 0
42995 * 0 if *this* == 0
42996 * +1 if *this* > 0
42997
42998 See Also:
42999
43000 <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
43001 */
43002 BigInteger.prototype.sign = function() {
43003 return this._s;
43004 };
43005
43006 /*
43007 Function: isPositive
43008 Return true iff *this* > 0.
43009
43010 Returns:
43011
43012 true if *this*.compare(<BigInteger.ZERO>) == 1.
43013
43014 See Also:
43015
43016 <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
43017 */
43018 BigInteger.prototype.isPositive = function() {
43019 return this._s > 0;
43020 };
43021
43022 /*
43023 Function: isNegative
43024 Return true iff *this* < 0.
43025
43026 Returns:
43027
43028 true if *this*.compare(<BigInteger.ZERO>) == -1.
43029
43030 See Also:
43031
43032 <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
43033 */
43034 BigInteger.prototype.isNegative = function() {
43035 return this._s < 0;
43036 };
43037
43038 /*
43039 Function: isZero
43040 Return true iff *this* == 0.
43041
43042 Returns:
43043
43044 true if *this*.compare(<BigInteger.ZERO>) == 0.
43045
43046 See Also:
43047
43048 <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
43049 */
43050 BigInteger.prototype.isZero = function() {
43051 return this._s === 0;
43052 };
43053
43054 /*
43055 Function: exp10
43056 Multiply a <BigInteger> by a power of 10.
43057
43058 This is equivalent to, but faster than
43059
43060 > if (n >= 0) {
43061 > return this.multiply(BigInteger("1e" + n));
43062 > }
43063 > else { // n <= 0
43064 > return this.quotient(BigInteger("1e" + -n));
43065 > }
43066
43067 Parameters:
43068
43069 n - The power of 10 to multiply *this* by. *n* is converted to a
43070 javascipt number and must be no greater than <BigInteger.MAX_EXP>
43071 (0x7FFFFFFF), or an exception will be thrown.
43072
43073 Returns:
43074
43075 *this* * (10 ** *n*), truncated to an integer if necessary.
43076
43077 See Also:
43078
43079 <pow>, <multiply>
43080 */
43081 BigInteger.prototype.exp10 = function(n) {
43082 n = +n;
43083 if (n === 0) {
43084 return this;
43085 }
43086 if (Math.abs(n) > Number(MAX_EXP)) {
43087 throw new Error("exponent too large in BigInteger.exp10");
43088 }
43089 // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
43090 if (this._s === 0) {
43091 return ZERO;
43092 }
43093 if (n > 0) {
43094 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
43095
43096 for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
43097 k._d.unshift(0);
43098 }
43099 if (n == 0)
43100 return k;
43101 k._s = 1;
43102 k = k.multiplySingleDigit(Math.pow(10, n));
43103 return (this._s < 0 ? k.negate() : k);
43104 } else if (-n >= this._d.length*BigInteger_base_log10) {
43105 return ZERO;
43106 } else {
43107 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
43108
43109 for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
43110 k._d.shift();
43111 }
43112 return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
43113 }
43114 };
43115
43116 /*
43117 Function: pow
43118 Raise a <BigInteger> to a power.
43119
43120 In this implementation, 0**0 is 1.
43121
43122 Parameters:
43123
43124 n - The exponent to raise *this* by. *n* must be no greater than
43125 <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
43126
43127 Returns:
43128
43129 *this* raised to the *nth* power.
43130
43131 See Also:
43132
43133 <modPow>
43134 */
43135 BigInteger.prototype.pow = function(n) {
43136 if (this.isUnit()) {
43137 if (this._s > 0) {
43138 return this;
43139 }
43140 else {
43141 return BigInteger(n).isOdd() ? this : this.negate();
43142 }
43143 }
43144
43145 n = BigInteger(n);
43146 if (n._s === 0) {
43147 return ONE;
43148 }
43149 else if (n._s < 0) {
43150 if (this._s === 0) {
43151 throw new Error("Divide by zero");
43152 }
43153 else {
43154 return ZERO;
43155 }
43156 }
43157 if (this._s === 0) {
43158 return ZERO;
43159 }
43160 if (n.isUnit()) {
43161 return this;
43162 }
43163
43164 if (n.compareAbs(MAX_EXP) > 0) {
43165 throw new Error("exponent too large in BigInteger.pow");
43166 }
43167 var x = this;
43168 var aux = ONE;
43169 var two = BigInteger.small[2];
43170
43171 while (n.isPositive()) {
43172 if (n.isOdd()) {
43173 aux = aux.multiply(x);
43174 if (n.isUnit()) {
43175 return aux;
43176 }
43177 }
43178 x = x.square();
43179 n = n.quotient(two);
43180 }
43181
43182 return aux;
43183 };
43184
43185 /*
43186 Function: modPow
43187 Raise a <BigInteger> to a power (mod m).
43188
43189 Because it is reduced by a modulus, <modPow> is not limited by
43190 <BigInteger.MAX_EXP> like <pow>.
43191
43192 Parameters:
43193
43194 exponent - The exponent to raise *this* by. Must be positive.
43195 modulus - The modulus.
43196
43197 Returns:
43198
43199 *this* ^ *exponent* (mod *modulus*).
43200
43201 See Also:
43202
43203 <pow>, <mod>
43204 */
43205 BigInteger.prototype.modPow = function(exponent, modulus) {
43206 var result = ONE;
43207 var base = this;
43208
43209 while (exponent.isPositive()) {
43210 if (exponent.isOdd()) {
43211 result = result.multiply(base).remainder(modulus);
43212 }
43213
43214 exponent = exponent.quotient(BigInteger.small[2]);
43215 if (exponent.isPositive()) {
43216 base = base.square().remainder(modulus);
43217 }
43218 }
43219
43220 return result;
43221 };
43222
43223 /*
43224 Function: log
43225 Get the natural logarithm of a <BigInteger> as a native JavaScript number.
43226
43227 This is equivalent to
43228
43229 > Math.log(this.toJSValue())
43230
43231 but handles values outside of the native number range.
43232
43233 Returns:
43234
43235 log( *this* )
43236
43237 See Also:
43238
43239 <toJSValue>
43240 */
43241 BigInteger.prototype.log = function() {
43242 switch (this._s) {
43243 case 0: return -Infinity;
43244 case -1: return NaN;
43245 default: // Fall through.
43246 }
43247
43248 var l = this._d.length;
43249
43250 if (l*BigInteger_base_log10 < 30) {
43251 return Math.log(this.valueOf());
43252 }
43253
43254 var N = Math.ceil(30/BigInteger_base_log10);
43255 var firstNdigits = this._d.slice(l - N);
43256 return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
43257 };
43258
43259 /*
43260 Function: valueOf
43261 Convert a <BigInteger> to a native JavaScript integer.
43262
43263 This is called automatically by JavaScipt to convert a <BigInteger> to a
43264 native value.
43265
43266 Returns:
43267
43268 > parseInt(this.toString(), 10)
43269
43270 See Also:
43271
43272 <toString>, <toJSValue>
43273 */
43274 BigInteger.prototype.valueOf = function() {
43275 return parseInt(this.toString(), 10);
43276 };
43277
43278 /*
43279 Function: toJSValue
43280 Convert a <BigInteger> to a native JavaScript integer.
43281
43282 This is the same as valueOf, but more explicitly named.
43283
43284 Returns:
43285
43286 > parseInt(this.toString(), 10)
43287
43288 See Also:
43289
43290 <toString>, <valueOf>
43291 */
43292 BigInteger.prototype.toJSValue = function() {
43293 return parseInt(this.toString(), 10);
43294 };
43295
43296 var MAX_EXP = BigInteger(0x7FFFFFFF);
43297 // Constant: MAX_EXP
43298 // The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
43299 BigInteger.MAX_EXP = MAX_EXP;
43300
43301 (function() {
43302 function makeUnary(fn) {
43303 return function(a) {
43304 return fn.call(BigInteger(a));
43305 };
43306 }
43307
43308 function makeBinary(fn) {
43309 return function(a, b) {
43310 return fn.call(BigInteger(a), BigInteger(b));
43311 };
43312 }
43313
43314 function makeTrinary(fn) {
43315 return function(a, b, c) {
43316 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
43317 };
43318 }
43319
43320 (function() {
43321 var i, fn;
43322 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
43323 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
43324 var trinary = ["modPow"];
43325
43326 for (i = 0; i < unary.length; i++) {
43327 fn = unary[i];
43328 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
43329 }
43330
43331 for (i = 0; i < binary.length; i++) {
43332 fn = binary[i];
43333 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
43334 }
43335
43336 for (i = 0; i < trinary.length; i++) {
43337 fn = trinary[i];
43338 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
43339 }
43340
43341 BigInteger.exp10 = function(x, n) {
43342 return BigInteger(x).exp10(n);
43343 };
43344 })();
43345 })();
43346
43347 exports.BigInteger = BigInteger;
43348 })(typeof exports !== 'undefined' ? exports : this);
43349 </script>
43350 <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){
43351 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;
43352
43353 },{}],2:[function(require,module,exports){
43354 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;
43355
43356 },{"./scoring":6}],3:[function(require,module,exports){
43357 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(","),
43358 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(","),
43359 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(","),
43360 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(","),
43361 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;
43362
43363 },{}],4:[function(require,module,exports){
43364 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;
43365
43366 },{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){
43367 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;
43368
43369 },{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){
43370 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;
43371
43372 },{"./adjacency_graphs":1}],7:[function(require,module,exports){
43373 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;
43374
43375 },{}]},{},[4])(4)
43376 });
43377 //# sourceMappingURL=zxcvbn.js.map
43378 </script>
43379 <script>/*
43380 * Detects entropy from a string.
43381 *
43382 * Formats include:
43383 * binary [0-1]
43384 * base 6 [0-5]
43385 * dice 6 [1-6]
43386 * decimal [0-9]
43387 * hexadecimal [0-9A-F]
43388 * card [A2-9TJQK][CDHS]
43389 *
43390 * Automatically uses lowest entropy to avoid issues such as interpretting 0101
43391 * as hexadecimal which would be 16 bits when really it's only 4 bits of binary
43392 * entropy.
43393 */
43394
43395 window.Entropy = new (function() {
43396
43397 var TWO = new BigInteger(2);
43398
43399 // matchers returns an array of the matched events for each type of entropy.
43400 // eg
43401 // matchers.binary("010") returns ["0", "1", "0"]
43402 // matchers.binary("a10") returns ["1", "0"]
43403 // matchers.hex("a10") returns ["a", "1", "0"]
43404 var matchers = {
43405 binary: function(str) {
43406 return str.match(/[0-1]/gi) || [];
43407 },
43408 base6: function(str) {
43409 return str.match(/[0-5]/gi) || [];
43410 },
43411 dice: function(str) {
43412 return str.match(/[1-6]/gi) || []; // ie dice numbers
43413 },
43414 base10: function(str) {
43415 return str.match(/[0-9]/gi) || [];
43416 },
43417 hex: function(str) {
43418 return str.match(/[0-9A-F]/gi) || [];
43419 },
43420 card: function(str) {
43421 // Format is NumberSuit, eg
43422 // AH ace of hearts
43423 // 8C eight of clubs
43424 // TD ten of diamonds
43425 // JS jack of spades
43426 // QH queen of hearts
43427 // KC king of clubs
43428 return str.match(/([A2-9TJQK][CDHS])/gi) || [];
43429 }
43430 }
43431
43432 // Convert array of cards from ["ac", "4d", "ks"]
43433 // to numbers between 0 and 51 [0, 16, 51]
43434 function convertCardsToInts(cards) {
43435 var ints = [];
43436 var values = "a23456789tjqk";
43437 var suits = "cdhs";
43438 for (var i=0; i<cards.length; i++) {
43439 var card = cards[i].toLowerCase();
43440 var value = card[0];
43441 var suit = card[1];
43442 var asInt = 13 * suits.indexOf(suit) + values.indexOf(value);
43443 ints.push(asInt);
43444 }
43445 return ints;
43446 }
43447
43448 this.fromString = function(rawEntropyStr) {
43449 // Find type of entropy being used (binary, hex, dice etc)
43450 var base = getBase(rawEntropyStr);
43451 // Convert dice to base6 entropy (ie 1-6 to 0-5)
43452 // This is done by changing all 6s to 0s
43453 if (base.str == "dice") {
43454 var newParts = [];
43455 var newInts = [];
43456 for (var i=0; i<base.parts.length; i++) {
43457 var c = base.parts[i];
43458 if ("12345".indexOf(c) > -1) {
43459 newParts[i] = base.parts[i];
43460 newInts[i] = base.ints[i];
43461 }
43462 else {
43463 newParts[i] = "0";
43464 newInts[i] = 0;
43465 }
43466 }
43467 base.str = "base 6 (dice)";
43468 base.ints = newInts;
43469 base.parts = newParts;
43470 base.matcher = matchers.base6;
43471 }
43472 // Detect empty entropy
43473 if (base.parts.length == 0) {
43474 return {
43475 binaryStr: "",
43476 cleanStr: "",
43477 cleanHtml: "",
43478 base: base,
43479 };
43480 }
43481 // Convert base.ints to BigInteger.
43482 // Due to using unusual bases, eg cards of base52, this is not as simple as
43483 // using BigInteger.parse()
43484 var entropyInt = BigInteger.ZERO;
43485 for (var i=base.ints.length-1; i>=0; i--) {
43486 var thisInt = BigInteger.parse(base.ints[i]);
43487 var power = (base.ints.length - 1) - i;
43488 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
43489 entropyInt = entropyInt.add(additionalEntropy);
43490 }
43491 // Convert entropy to binary
43492 var entropyBin = entropyInt.toString(2);
43493 // If the first integer is small, it must be padded with zeros.
43494 // Otherwise the chance of the first bit being 1 is 100%, which is
43495 // obviously incorrect.
43496 // This is not perfect for non-2^n bases.
43497 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
43498 while (entropyBin.length < expectedBits) {
43499 entropyBin = "0" + entropyBin;
43500 }
43501 // Calculate the number of bits per event
43502 var bitsPerEvent = Math.log2(base.asInt);
43503 // Cards binary must be handled differently, since they're not replaced
43504 if (base.asInt == 52) {
43505 var cardEntropy = processCardEntropy(base.parts);
43506 entropyBin = cardEntropy.binaryStr;
43507 bitsPerEvent = cardEntropy.bitsPerEvent;
43508 }
43509 // Supply a 'filtered' entropy string for display purposes
43510 var entropyClean = base.parts.join("");
43511 var entropyHtml = base.parts.join("");
43512 if (base.asInt == 52) {
43513 entropyClean = base.parts.join(" ").toUpperCase();
43514 entropyClean = entropyClean.replace(/C/g, "\u2663");
43515 entropyClean = entropyClean.replace(/D/g, "\u2666");
43516 entropyClean = entropyClean.replace(/H/g, "\u2665");
43517 entropyClean = entropyClean.replace(/S/g, "\u2660");
43518 entropyHtml = base.parts.join(" ").toUpperCase();
43519 entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>");
43520 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>");
43521 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>");
43522 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>");
43523 }
43524 // Return the result
43525 var e = {
43526 binaryStr: entropyBin,
43527 cleanStr: entropyClean,
43528 cleanHtml: entropyHtml,
43529 bitsPerEvent: bitsPerEvent,
43530 base: base,
43531 }
43532 return e;
43533 }
43534
43535 function getSortedDeck() {
43536 var s = [];
43537 var suits = "CDHS";
43538 var values = "A23456789TJQK";
43539 for (var i=0; i<suits.length; i++) {
43540 for (var j=0; j<values.length; j++) {
43541 s.push(values[j]+suits[i]);
43542 }
43543 }
43544 return s;
43545 }
43546
43547 function getBase(str) {
43548 // Need to get the lowest base for the supplied entropy.
43549 // This prevents interpreting, say, dice rolls as hexadecimal.
43550 var binaryMatches = matchers.binary(str);
43551 var hexMatches = matchers.hex(str);
43552 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
43553 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
43554 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
43555 return {
43556 ints: ints,
43557 parts: binaryMatches,
43558 matcher: matchers.binary,
43559 asInt: 2,
43560 str: "binary",
43561 }
43562 }
43563 var cardMatches = matchers.card(str);
43564 if (cardMatches.length >= hexMatches.length / 2) {
43565 var ints = convertCardsToInts(cardMatches);
43566 return {
43567 ints: ints,
43568 parts: cardMatches,
43569 matcher: matchers.card,
43570 asInt: 52,
43571 str: "card",
43572 }
43573 }
43574 var diceMatches = matchers.dice(str);
43575 if (diceMatches.length == hexMatches.length && hexMatches.length > 0) {
43576 var ints = diceMatches.map(function(i) { return parseInt(i) });
43577 return {
43578 ints: ints,
43579 parts: diceMatches,
43580 matcher: matchers.dice,
43581 asInt: 6,
43582 str: "dice",
43583 }
43584 }
43585 var base6Matches = matchers.base6(str);
43586 if (base6Matches.length == hexMatches.length && hexMatches.length > 0) {
43587 var ints = base6Matches.map(function(i) { return parseInt(i) });
43588 return {
43589 ints: ints,
43590 parts: base6Matches,
43591 matcher: matchers.base6,
43592 asInt: 6,
43593 str: "base 6",
43594 }
43595 }
43596 var base10Matches = matchers.base10(str);
43597 if (base10Matches.length == hexMatches.length && hexMatches.length > 0) {
43598 var ints = base10Matches.map(function(i) { return parseInt(i) });
43599 return {
43600 ints: ints,
43601 parts: base10Matches,
43602 matcher: matchers.base10,
43603 asInt: 10,
43604 str: "base 10",
43605 }
43606 }
43607 var ints = hexMatches.map(function(i) { return parseInt(i, 16) });
43608 return {
43609 ints: ints,
43610 parts: hexMatches,
43611 matcher: matchers.hex,
43612 asInt: 16,
43613 str: "hexadecimal",
43614 }
43615 }
43616
43617 // Assume cards are NOT replaced.
43618 // Additional entropy decreases as more cards are used. This means
43619 // total possible entropy is measured using n!, not base^n.
43620 // eg the second last card can be only one of two, not one of fifty two
43621 // so the added entropy for that card is only one bit at most
43622 function processCardEntropy(cards) {
43623 // Track how many instances of each card have been used, and thus
43624 // how many decks are in use.
43625 var cardCounts = {};
43626 var numberOfDecks = 0;
43627 // Work out number of decks by max(duplicates)
43628 for (var i=0; i<cards.length; i++) {
43629 // Get the card that was drawn
43630 var cardLower = cards[i];
43631 var card = cardLower.toUpperCase();
43632 // Initialize the count for this card if needed
43633 if (!(card in cardCounts)) {
43634 cardCounts[card] = 0;
43635 }
43636 cardCounts[card] += 1;
43637 // See if this is max(duplicates)
43638 if (cardCounts[card] > numberOfDecks) {
43639 numberOfDecks = cardCounts[card];
43640 }
43641 }
43642 // Work out the total number of bits for this many decks
43643 // See http://crypto.stackexchange.com/q/41886
43644 var gainedBits = 0;
43645 // Equivalent of Math.log2(factorial(52*numberOfDecks))
43646 // which becomes infinity for numberOfDecks > 4
43647 for (var i=1; i<=52*numberOfDecks; i++) {
43648 gainedBits = gainedBits + Math.log2(i);
43649 }
43650 var lostBits = 52 * Math.log2(factorial(numberOfDecks));
43651 var maxBits = gainedBits - lostBits;
43652 // Convert the drawn cards to a binary representation.
43653 // The exact technique for doing this is unclear.
43654 // See
43655 // http://crypto.stackexchange.com/a/41896
43656 // "I even doubt that this is well defined (only the average entropy
43657 // is, I believe)."
43658 // See
43659 // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856
43660 // "The binary representation can be the first log(permutations,2) bits
43661 // of the sha-2 hash of the normalized deck string."
43662 //
43663 // In this specific implementation, the first N bits of the hash of the
43664 // normalized cards string is being used. Uppercase, no spaces; eg
43665 // sha256("AH8DQSTC2H")
43666 var totalCards = numberOfDecks * 52;
43667 var percentUsed = cards.length / totalCards;
43668 // Calculate the average number of bits of entropy for the number of
43669 // cards drawn.
43670 var numberOfBits = Math.floor(maxBits * percentUsed);
43671 // Create a normalized string of the selected cards
43672 var normalizedCards = cards.join("").toUpperCase();
43673 // Convert to binary using the SHA256 hash of the normalized cards.
43674 // If the number of bits is more than 256, multiple hashes
43675 // are used until the required number of bits is reached.
43676 var entropyBin = "";
43677 var iterations = 0;
43678 while (entropyBin.length < numberOfBits) {
43679 var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations);
43680 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
43681 for (var i=0; i<hashHex.length; i++) {
43682 var decimal = parseInt(hashHex[i], 16);
43683 var binary = decimal.toString(2);
43684 while (binary.length < 4) {
43685 binary = "0" + binary;
43686 }
43687 entropyBin = entropyBin + binary;
43688 }
43689 iterations = iterations + 1;
43690 }
43691 // Truncate to the appropriate number of bits.
43692 entropyBin = entropyBin.substring(0, numberOfBits);
43693 // Get the number of bits per event
43694 bitsPerEvent = maxBits / totalCards;
43695 return {
43696 binaryStr: entropyBin,
43697 bitsPerEvent: bitsPerEvent,
43698 }
43699 }
43700
43701 // Polyfill for Math.log2
43702 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
43703 Math.log2 = Math.log2 || function(x) {
43704 // The polyfill isn't good enough because of the poor accuracy of
43705 // Math.LOG2E
43706 // log2(8) gave 2.9999999999999996 which when floored causes issues.
43707 // So instead use the BigInteger library to get it right.
43708 return BigInteger.log(x) / BigInteger.log(2);
43709 };
43710
43711 // Depends on BigInteger
43712 function factorial(n) {
43713 if (n == 0) {
43714 return 1;
43715 }
43716 f = BigInteger.ONE;
43717 for (var i=1; i<=n; i++) {
43718 f = f.multiply(new BigInteger(i));
43719 }
43720 return f;
43721 }
43722
43723 })();
43724 </script>
43725 <script>(function() {
43726
43727 // mnemonics is populated as required by getLanguage
43728 var mnemonics = { "english": new Mnemonic("english") };
43729 var mnemonic = mnemonics["english"];
43730 var seed = null;
43731 var bip32RootKey = null;
43732 var bip32ExtendedKey = null;
43733 var network = bitcoin.networks.bitcoin;
43734 var addressRowTemplate = $("#address-row-template");
43735
43736 var showIndex = true;
43737 var showAddress = true;
43738 var showPubKey = true;
43739 var showPrivKey = true;
43740 var showQr = false;
43741
43742 var entropyChangeTimeoutEvent = null;
43743 var phraseChangeTimeoutEvent = null;
43744 var rootKeyChangedTimeoutEvent = null;
43745
43746 var generationProcesses = [];
43747
43748 var DOM = {};
43749 DOM.network = $(".network");
43750 DOM.bip32Client = $("#bip32-client");
43751 DOM.phraseNetwork = $("#network-phrase");
43752 DOM.useEntropy = $(".use-entropy");
43753 DOM.entropyContainer = $(".entropy-container");
43754 DOM.entropy = $(".entropy");
43755 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
43756 DOM.entropyType = DOM.entropyContainer.find(".type");
43757 DOM.entropyStrength = DOM.entropyContainer.find(".strength");
43758 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
43759 DOM.entropyBits = DOM.entropyContainer.find(".bits");
43760 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
43761 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
43762 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
43763 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
43764 DOM.phrase = $(".phrase");
43765 DOM.passphrase = $(".passphrase");
43766 DOM.generateContainer = $(".generate-container");
43767 DOM.generate = $(".generate");
43768 DOM.seed = $(".seed");
43769 DOM.rootKey = $(".root-key");
43770 DOM.extendedPrivKey = $(".extended-priv-key");
43771 DOM.extendedPubKey = $(".extended-pub-key");
43772 DOM.bip32tab = $("#bip32-tab");
43773 DOM.bip44tab = $("#bip44-tab");
43774 DOM.bip32panel = $("#bip32");
43775 DOM.bip44panel = $("#bip44");
43776 DOM.bip32path = $("#bip32-path");
43777 DOM.bip44path = $("#bip44-path");
43778 DOM.bip44purpose = $("#bip44 .purpose");
43779 DOM.bip44coin = $("#bip44 .coin");
43780 DOM.bip44account = $("#bip44 .account");
43781 DOM.bip44accountXprv = $("#bip44 .account-xprv");
43782 DOM.bip44accountXpub = $("#bip44 .account-xpub");
43783 DOM.bip44change = $("#bip44 .change");
43784 DOM.generatedStrength = $(".generate-container .strength");
43785 DOM.hardenedAddresses = $(".hardened-addresses");
43786 DOM.addresses = $(".addresses");
43787 DOM.rowsToAdd = $(".rows-to-add");
43788 DOM.more = $(".more");
43789 DOM.feedback = $(".feedback");
43790 DOM.tab = $(".derivation-type a");
43791 DOM.indexToggle = $(".index-toggle");
43792 DOM.addressToggle = $(".address-toggle");
43793 DOM.publicKeyToggle = $(".public-key-toggle");
43794 DOM.privateKeyToggle = $(".private-key-toggle");
43795 DOM.languages = $(".languages a");
43796 DOM.qrContainer = $(".qr-container");
43797 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
43798 DOM.qrImage = DOM.qrContainer.find(".qr-image");
43799 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
43800 DOM.showQrEls = $("[data-show-qr]");
43801
43802 function init() {
43803 // Events
43804 DOM.network.on("change", networkChanged);
43805 DOM.bip32Client.on("change", bip32ClientChanged);
43806 DOM.useEntropy.on("change", setEntropyVisibility);
43807 DOM.entropy.on("input", delayedEntropyChanged);
43808 DOM.entropyMnemonicLength.on("change", entropyChanged);
43809 DOM.phrase.on("input", delayedPhraseChanged);
43810 DOM.passphrase.on("input", delayedPhraseChanged);
43811 DOM.generate.on("click", generateClicked);
43812 DOM.more.on("click", showMore);
43813 DOM.rootKey.on("input", delayedRootKeyChanged);
43814 DOM.bip32path.on("input", calcForDerivationPath);
43815 DOM.bip44purpose.on("input", calcForDerivationPath);
43816 DOM.bip44coin.on("input", calcForDerivationPath);
43817 DOM.bip44account.on("input", calcForDerivationPath);
43818 DOM.bip44change.on("input", calcForDerivationPath);
43819 DOM.tab.on("shown.bs.tab", calcForDerivationPath);
43820 DOM.hardenedAddresses.on("change", calcForDerivationPath);
43821 DOM.indexToggle.on("click", toggleIndexes);
43822 DOM.addressToggle.on("click", toggleAddresses);
43823 DOM.publicKeyToggle.on("click", togglePublicKeys);
43824 DOM.privateKeyToggle.on("click", togglePrivateKeys);
43825 DOM.languages.on("click", languageChanged);
43826 setQrEvents(DOM.showQrEls);
43827 disableForms();
43828 hidePending();
43829 hideValidationError();
43830 populateNetworkSelect();
43831 populateClientSelect();
43832 }
43833
43834 // Event handlers
43835
43836 function networkChanged(e) {
43837 var networkIndex = e.target.value;
43838 networks[networkIndex].onSelect();
43839 if (seed != null) {
43840 phraseChanged();
43841 }
43842 else {
43843 rootKeyChanged();
43844 }
43845 }
43846
43847 function bip32ClientChanged(e) {
43848 var clientIndex = DOM.bip32Client.val();
43849 if (clientIndex == "custom") {
43850 DOM.bip32path.prop("readonly", false);
43851 }
43852 else {
43853 DOM.bip32path.prop("readonly", true);
43854 clients[clientIndex].onSelect();
43855 if (seed != null) {
43856 phraseChanged();
43857 }
43858 else {
43859 rootKeyChanged();
43860 }
43861 }
43862 }
43863
43864 function setEntropyVisibility() {
43865 if (isUsingOwnEntropy()) {
43866 DOM.entropyContainer.removeClass("hidden");
43867 DOM.generateContainer.addClass("hidden");
43868 DOM.phrase.prop("readonly", true);
43869 DOM.entropy.focus();
43870 entropyChanged();
43871 }
43872 else {
43873 DOM.entropyContainer.addClass("hidden");
43874 DOM.generateContainer.removeClass("hidden");
43875 DOM.phrase.prop("readonly", false);
43876 hidePending();
43877 }
43878 }
43879
43880 function delayedPhraseChanged() {
43881 hideValidationError();
43882 showPending();
43883 if (phraseChangeTimeoutEvent != null) {
43884 clearTimeout(phraseChangeTimeoutEvent);
43885 }
43886 phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400);
43887 }
43888
43889 function phraseChanged() {
43890 showPending();
43891 hideValidationError();
43892 setMnemonicLanguage();
43893 // Get the mnemonic phrase
43894 var phrase = DOM.phrase.val();
43895 var errorText = findPhraseErrors(phrase);
43896 if (errorText) {
43897 showValidationError(errorText);
43898 return;
43899 }
43900 // Calculate and display
43901 var passphrase = DOM.passphrase.val();
43902 calcBip32RootKeyFromSeed(phrase, passphrase);
43903 calcForDerivationPath();
43904 hidePending();
43905 }
43906
43907 function delayedEntropyChanged() {
43908 hideValidationError();
43909 showPending();
43910 if (entropyChangeTimeoutEvent != null) {
43911 clearTimeout(entropyChangeTimeoutEvent);
43912 }
43913 entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400);
43914 }
43915
43916 function entropyChanged() {
43917 // If blank entropy, clear mnemonic, addresses, errors
43918 if (DOM.entropy.val().trim().length == 0) {
43919 clearDisplay();
43920 clearEntropyFeedback();
43921 DOM.phrase.val("");
43922 showValidationError("Blank entropy");
43923 return;
43924 }
43925 // Get the current phrase to detect changes
43926 var phrase = DOM.phrase.val();
43927 // Set the phrase from the entropy
43928 setMnemonicFromEntropy();
43929 // Recalc addresses if the phrase has changed
43930 var newPhrase = DOM.phrase.val();
43931 if (newPhrase != phrase) {
43932 if (newPhrase.length == 0) {
43933 clearDisplay();
43934 }
43935 else {
43936 phraseChanged();
43937 }
43938 }
43939 else {
43940 hidePending();
43941 }
43942 }
43943
43944 function delayedRootKeyChanged() {
43945 // Warn if there is an existing mnemonic or passphrase.
43946 if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
43947 if (!confirm("This will clear existing mnemonic and passphrase")) {
43948 DOM.rootKey.val(bip32RootKey);
43949 return
43950 }
43951 }
43952 hideValidationError();
43953 showPending();
43954 // Clear existing mnemonic and passphrase
43955 DOM.phrase.val("");
43956 DOM.passphrase.val("");
43957 seed = null;
43958 if (rootKeyChangedTimeoutEvent != null) {
43959 clearTimeout(rootKeyChangedTimeoutEvent);
43960 }
43961 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
43962 }
43963
43964 function rootKeyChanged() {
43965 showPending();
43966 hideValidationError();
43967 // Validate the root key TODO
43968 var rootKeyBase58 = DOM.rootKey.val();
43969 var errorText = validateRootKey(rootKeyBase58);
43970 if (errorText) {
43971 showValidationError(errorText);
43972 return;
43973 }
43974 // Calculate and display
43975 calcBip32RootKeyFromBase58(rootKeyBase58);
43976 calcForDerivationPath();
43977 }
43978
43979 function calcForDerivationPath() {
43980 showPending();
43981 clearAddressesList();
43982 hideValidationError();
43983 // Get the derivation path
43984 var derivationPath = getDerivationPath();
43985 var errorText = findDerivationPathErrors(derivationPath);
43986 if (errorText) {
43987 showValidationError(errorText);
43988 return;
43989 }
43990 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
43991 if (bip44TabSelected()) {
43992 displayBip44Info();
43993 }
43994 displayBip32Info();
43995 hidePending();
43996 }
43997
43998 function generateClicked() {
43999 if (isUsingOwnEntropy()) {
44000 return;
44001 }
44002 clearDisplay();
44003 showPending();
44004 setTimeout(function() {
44005 setMnemonicLanguage();
44006 var phrase = generateRandomPhrase();
44007 if (!phrase) {
44008 return;
44009 }
44010 phraseChanged();
44011 }, 50);
44012 }
44013
44014 function languageChanged() {
44015 setTimeout(function() {
44016 setMnemonicLanguage();
44017 if (DOM.phrase.val().length > 0) {
44018 var newPhrase = convertPhraseToNewLanguage();
44019 DOM.phrase.val(newPhrase);
44020 phraseChanged();
44021 }
44022 else {
44023 DOM.generate.trigger("click");
44024 }
44025 }, 50);
44026 }
44027
44028 function toggleIndexes() {
44029 showIndex = !showIndex;
44030 $("td.index span").toggleClass("invisible");
44031 }
44032
44033 function toggleAddresses() {
44034 showAddress = !showAddress;
44035 $("td.address span").toggleClass("invisible");
44036 }
44037
44038 function togglePublicKeys() {
44039 showPubKey = !showPubKey;
44040 $("td.pubkey span").toggleClass("invisible");
44041 }
44042
44043 function togglePrivateKeys() {
44044 showPrivKey = !showPrivKey;
44045 $("td.privkey span").toggleClass("invisible");
44046 }
44047
44048 // Private methods
44049
44050 function generateRandomPhrase() {
44051 if (!hasStrongRandom()) {
44052 var errorText = "This browser does not support strong randomness";
44053 showValidationError(errorText);
44054 return;
44055 }
44056 var numWords = parseInt(DOM.generatedStrength.val());
44057 var strength = numWords / 3 * 32;
44058 var words = mnemonic.generate(strength);
44059 DOM.phrase.val(words);
44060 return words;
44061 }
44062
44063 function calcBip32RootKeyFromSeed(phrase, passphrase) {
44064 seed = mnemonic.toSeed(phrase, passphrase);
44065 bip32RootKey = bitcoin.HDNode.fromSeedHex(seed, network);
44066 }
44067
44068 function calcBip32RootKeyFromBase58(rootKeyBase58) {
44069 bip32RootKey = bitcoin.HDNode.fromBase58(rootKeyBase58, network);
44070 }
44071
44072 function calcBip32ExtendedKey(path) {
44073 // Check there's a root key to derive from
44074 if (!bip32RootKey) {
44075 return bip32RootKey;
44076 }
44077 var extendedKey = bip32RootKey;
44078 // Derive the key from the path
44079 var pathBits = path.split("/");
44080 for (var i=0; i<pathBits.length; i++) {
44081 var bit = pathBits[i];
44082 var index = parseInt(bit);
44083 if (isNaN(index)) {
44084 continue;
44085 }
44086 var hardened = bit[bit.length-1] == "'";
44087 var isPriv = "privKey" in extendedKey;
44088 var invalidDerivationPath = hardened && !isPriv;
44089 if (invalidDerivationPath) {
44090 extendedKey = null;
44091 }
44092 else if (hardened) {
44093 extendedKey = extendedKey.deriveHardened(index);
44094 }
44095 else {
44096 extendedKey = extendedKey.derive(index);
44097 }
44098 }
44099 return extendedKey
44100 }
44101
44102 function showValidationError(errorText) {
44103 DOM.feedback
44104 .text(errorText)
44105 .show();
44106 }
44107
44108 function hideValidationError() {
44109 DOM.feedback
44110 .text("")
44111 .hide();
44112 }
44113
44114 function findPhraseErrors(phrase) {
44115 // Preprocess the words
44116 phrase = mnemonic.normalizeString(phrase);
44117 var words = phraseToWordArray(phrase);
44118 // Detect blank phrase
44119 if (words.length == 0) {
44120 return "Blank mnemonic";
44121 }
44122 // Check each word
44123 for (var i=0; i<words.length; i++) {
44124 var word = words[i];
44125 var language = getLanguage();
44126 if (WORDLISTS[language].indexOf(word) == -1) {
44127 console.log("Finding closest match to " + word);
44128 var nearestWord = findNearestWord(word);
44129 return word + " not in wordlist, did you mean " + nearestWord + "?";
44130 }
44131 }
44132 // Check the words are valid
44133 var properPhrase = wordArrayToPhrase(words);
44134 var isValid = mnemonic.check(properPhrase);
44135 if (!isValid) {
44136 return "Invalid mnemonic";
44137 }
44138 return false;
44139 }
44140
44141 function validateRootKey(rootKeyBase58) {
44142 try {
44143 bitcoin.HDNode.fromBase58(rootKeyBase58);
44144 }
44145 catch (e) {
44146 return "Invalid root key";
44147 }
44148 return "";
44149 }
44150
44151 function getDerivationPath() {
44152 if (bip44TabSelected()) {
44153 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
44154 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
44155 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
44156 var change = parseIntNoNaN(DOM.bip44change.val(), 0);
44157 var path = "m/";
44158 path += purpose + "'/";
44159 path += coin + "'/";
44160 path += account + "'/";
44161 path += change;
44162 DOM.bip44path.val(path);
44163 var derivationPath = DOM.bip44path.val();
44164 console.log("Using derivation path from BIP44 tab: " + derivationPath);
44165 return derivationPath;
44166 }
44167 else if (bip32TabSelected()) {
44168 var derivationPath = DOM.bip32path.val();
44169 console.log("Using derivation path from BIP32 tab: " + derivationPath);
44170 return derivationPath;
44171 }
44172 else {
44173 console.log("Unknown derivation path");
44174 }
44175 }
44176
44177 function findDerivationPathErrors(path) {
44178 // TODO is not perfect but is better than nothing
44179 // Inspired by
44180 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors
44181 // and
44182 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys
44183 var maxDepth = 255; // TODO verify this!!
44184 var maxIndexValue = Math.pow(2, 31); // TODO verify this!!
44185 if (path[0] != "m") {
44186 return "First character must be 'm'";
44187 }
44188 if (path.length > 1) {
44189 if (path[1] != "/") {
44190 return "Separator must be '/'";
44191 }
44192 var indexes = path.split("/");
44193 if (indexes.length > maxDepth) {
44194 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
44195 }
44196 for (var depth = 1; depth<indexes.length; depth++) {
44197 var index = indexes[depth];
44198 var invalidChars = index.replace(/^[0-9]+'?$/g, "")
44199 if (invalidChars.length > 0) {
44200 return "Invalid characters " + invalidChars + " found at depth " + depth;
44201 }
44202 var indexValue = parseInt(index.replace("'", ""));
44203 if (isNaN(depth)) {
44204 return "Invalid number at depth " + depth;
44205 }
44206 if (indexValue > maxIndexValue) {
44207 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
44208 }
44209 }
44210 }
44211 // Check root key exists or else derivation path is useless!
44212 if (!bip32RootKey) {
44213 return "No root key";
44214 }
44215 // Check no hardened derivation path when using xpub keys
44216 var hardened = path.indexOf("'") > -1;
44217 var isXpubkey = !("privKey" in bip32RootKey);
44218 if (hardened && isXpubkey) {
44219 return "Hardened derivation path is invalid with xpub key";
44220 }
44221 return false;
44222 }
44223
44224 function displayBip44Info() {
44225 // Get the derivation path for the account
44226 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
44227 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
44228 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
44229 var path = "m/";
44230 path += purpose + "'/";
44231 path += coin + "'/";
44232 path += account + "'/";
44233 // Calculate the account extended keys
44234 var accountExtendedKey = calcBip32ExtendedKey(path);
44235 var accountXprv = accountExtendedKey.toBase58();
44236 var accountXpub = accountExtendedKey.toBase58(false);
44237 // Display the extended keys
44238 DOM.bip44accountXprv.val(accountXprv);
44239 DOM.bip44accountXpub.val(accountXpub);
44240 }
44241
44242 function displayBip32Info() {
44243 // Display the key
44244 DOM.seed.val(seed);
44245 var rootKey = bip32RootKey.toBase58();
44246 DOM.rootKey.val(rootKey);
44247 var xprvkeyB58 = "NA";
44248 if (bip32ExtendedKey.privKey) {
44249 xprvkeyB58 = bip32ExtendedKey.toBase58();
44250 }
44251 var extendedPrivKey = xprvkeyB58;
44252 DOM.extendedPrivKey.val(extendedPrivKey);
44253 var extendedPubKey = bip32ExtendedKey.toBase58(false);
44254 DOM.extendedPubKey.val(extendedPubKey);
44255 // Display the addresses and privkeys
44256 clearAddressesList();
44257 displayAddresses(0, 20);
44258 }
44259
44260 function displayAddresses(start, total) {
44261 generationProcesses.push(new (function() {
44262
44263 var rows = [];
44264
44265 this.stop = function() {
44266 for (var i=0; i<rows.length; i++) {
44267 rows[i].shouldGenerate = false;
44268 }
44269 }
44270
44271 for (var i=0; i<total; i++) {
44272 var index = i + start;
44273 rows.push(new TableRow(index));
44274 }
44275
44276 })());
44277 }
44278
44279 function TableRow(index) {
44280
44281 var self = this;
44282 this.shouldGenerate = true;
44283 var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
44284
44285 function init() {
44286 calculateValues();
44287 }
44288
44289 function calculateValues() {
44290 setTimeout(function() {
44291 if (!self.shouldGenerate) {
44292 return;
44293 }
44294 var key = "";
44295 if (useHardenedAddresses) {
44296 key = bip32ExtendedKey.deriveHardened(index);
44297 }
44298 else {
44299 key = bip32ExtendedKey.derive(index);
44300 }
44301 var address = key.getAddress().toString();
44302 var privkey = "NA";
44303 if (key.privKey) {
44304 privkey = key.privKey.toWIF(network);
44305 }
44306 var pubkey = key.pubKey.toHex();
44307 var indexText = getDerivationPath() + "/" + index;
44308 if (useHardenedAddresses) {
44309 indexText = indexText + "'";
44310 }
44311 // Ethereum values are different
44312 if (networks[DOM.network.val()].name == "Ethereum") {
44313 var privKeyBuffer = key.privKey.d.toBuffer();
44314 privkey = privKeyBuffer.toString('hex');
44315 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
44316 var hexAddress = addressBuffer.toString('hex');
44317 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
44318 address = ethUtil.addHexPrefix(checksumAddress);
44319 privkey = ethUtil.addHexPrefix(privkey);
44320 pubkey = ethUtil.addHexPrefix(pubkey);
44321 }
44322 // Ripple values are different
44323 if (networks[DOM.network.val()].name == "Ripple") {
44324 privkey = convertRipplePriv(privkey);
44325 address = convertRippleAdrr(address);
44326 }
44327 addAddressToList(indexText, address, pubkey, privkey);
44328 }, 50)
44329 }
44330
44331 init();
44332
44333 }
44334
44335 function showMore() {
44336 var start = DOM.addresses.children().length;
44337 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
44338 if (isNaN(rowsToAdd)) {
44339 rowsToAdd = 20;
44340 DOM.rowsToAdd.val("20");
44341 }
44342 if (rowsToAdd > 200) {
44343 var msg = "Generating " + rowsToAdd + " rows could take a while. ";
44344 msg += "Do you want to continue?";
44345 if (!confirm(msg)) {
44346 return;
44347 }
44348 }
44349 displayAddresses(start, rowsToAdd);
44350 }
44351
44352 function clearDisplay() {
44353 clearAddressesList();
44354 clearKey();
44355 hideValidationError();
44356 }
44357
44358 function clearAddressesList() {
44359 DOM.addresses.empty();
44360 stopGenerating();
44361 }
44362
44363 function stopGenerating() {
44364 while (generationProcesses.length > 0) {
44365 var generation = generationProcesses.shift();
44366 generation.stop();
44367 }
44368 }
44369
44370 function clearKey() {
44371 DOM.rootKey.val("");
44372 DOM.extendedPrivKey.val("");
44373 DOM.extendedPubKey.val("");
44374 }
44375
44376 function addAddressToList(indexText, address, pubkey, privkey) {
44377 var row = $(addressRowTemplate.html());
44378 // Elements
44379 var indexCell = row.find(".index span");
44380 var addressCell = row.find(".address span");
44381 var pubkeyCell = row.find(".pubkey span");
44382 var privkeyCell = row.find(".privkey span");
44383 // Content
44384 indexCell.text(indexText);
44385 addressCell.text(address);
44386 pubkeyCell.text(pubkey);
44387 privkeyCell.text(privkey);
44388 // Visibility
44389 if (!showIndex) {
44390 indexCell.addClass("invisible");
44391 }
44392 if (!showAddress) {
44393 addressCell.addClass("invisible");
44394 }
44395 if (!showPubKey) {
44396 pubkeyCell.addClass("invisible");
44397 }
44398 if (!showPrivKey) {
44399 privkeyCell.addClass("invisible");
44400 }
44401 DOM.addresses.append(row);
44402 var rowShowQrEls = row.find("[data-show-qr]");
44403 setQrEvents(rowShowQrEls);
44404 }
44405
44406 function hasStrongRandom() {
44407 return 'crypto' in window && window['crypto'] !== null;
44408 }
44409
44410 function disableForms() {
44411 $("form").on("submit", function(e) {
44412 e.preventDefault();
44413 });
44414 }
44415
44416 function parseIntNoNaN(val, defaultVal) {
44417 var v = parseInt(val);
44418 if (isNaN(v)) {
44419 return defaultVal;
44420 }
44421 return v;
44422 }
44423
44424 function showPending() {
44425 DOM.feedback
44426 .text("Calculating...")
44427 .show();
44428 }
44429
44430 function findNearestWord(word) {
44431 var language = getLanguage();
44432 var words = WORDLISTS[language];
44433 var minDistance = 99;
44434 var closestWord = words[0];
44435 for (var i=0; i<words.length; i++) {
44436 var comparedTo = words[i];
44437 if (comparedTo.indexOf(word) == 0) {
44438 return comparedTo;
44439 }
44440 var distance = Levenshtein.get(word, comparedTo);
44441 if (distance < minDistance) {
44442 closestWord = comparedTo;
44443 minDistance = distance;
44444 }
44445 }
44446 return closestWord;
44447 }
44448
44449 function hidePending() {
44450 DOM.feedback
44451 .text("")
44452 .hide();
44453 }
44454
44455 function populateNetworkSelect() {
44456 for (var i=0; i<networks.length; i++) {
44457 var network = networks[i];
44458 var option = $("<option>");
44459 option.attr("value", i);
44460 option.text(network.name);
44461 DOM.phraseNetwork.append(option);
44462 }
44463 }
44464
44465 function populateClientSelect() {
44466 for (var i=0; i<clients.length; i++) {
44467 var client = clients[i];
44468 var option = $("<option>");
44469 option.attr("value", i);
44470 option.text(client.name);
44471 DOM.bip32Client.append(option);
44472 }
44473 }
44474
44475 function getLanguage() {
44476 var defaultLanguage = "english";
44477 // Try to get from existing phrase
44478 var language = getLanguageFromPhrase();
44479 // Try to get from url if not from phrase
44480 if (language.length == 0) {
44481 language = getLanguageFromUrl();
44482 }
44483 // Default to English if no other option
44484 if (language.length == 0) {
44485 language = defaultLanguage;
44486 }
44487 return language;
44488 }
44489
44490 function getLanguageFromPhrase(phrase) {
44491 // Check if how many words from existing phrase match a language.
44492 var language = "";
44493 if (!phrase) {
44494 phrase = DOM.phrase.val();
44495 }
44496 if (phrase.length > 0) {
44497 var words = phraseToWordArray(phrase);
44498 var languageMatches = {};
44499 for (l in WORDLISTS) {
44500 // Track how many words match in this language
44501 languageMatches[l] = 0;
44502 for (var i=0; i<words.length; i++) {
44503 var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1;
44504 if (wordInLanguage) {
44505 languageMatches[l]++;
44506 }
44507 }
44508 // Find languages with most word matches.
44509 // This is made difficult due to commonalities between Chinese
44510 // simplified vs traditional.
44511 var mostMatches = 0;
44512 var mostMatchedLanguages = [];
44513 for (var l in languageMatches) {
44514 var numMatches = languageMatches[l];
44515 if (numMatches > mostMatches) {
44516 mostMatches = numMatches;
44517 mostMatchedLanguages = [l];
44518 }
44519 else if (numMatches == mostMatches) {
44520 mostMatchedLanguages.push(l);
44521 }
44522 }
44523 }
44524 if (mostMatchedLanguages.length > 0) {
44525 // Use first language and warn if multiple detected
44526 language = mostMatchedLanguages[0];
44527 if (mostMatchedLanguages.length > 1) {
44528 console.warn("Multiple possible languages");
44529 console.warn(mostMatchedLanguages);
44530 }
44531 }
44532 }
44533 return language;
44534 }
44535
44536 function getLanguageFromUrl() {
44537 for (var language in WORDLISTS) {
44538 if (window.location.hash.indexOf(language) > -1) {
44539 return language;
44540 }
44541 }
44542 return "";
44543 }
44544
44545 function setMnemonicLanguage() {
44546 var language = getLanguage();
44547 // Load the bip39 mnemonic generator for this language if required
44548 if (!(language in mnemonics)) {
44549 mnemonics[language] = new Mnemonic(language);
44550 }
44551 mnemonic = mnemonics[language];
44552 }
44553
44554 function convertPhraseToNewLanguage() {
44555 var oldLanguage = getLanguageFromPhrase();
44556 var newLanguage = getLanguageFromUrl();
44557 var oldPhrase = DOM.phrase.val();
44558 var oldWords = phraseToWordArray(oldPhrase);
44559 var newWords = [];
44560 for (var i=0; i<oldWords.length; i++) {
44561 var oldWord = oldWords[i];
44562 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
44563 var newWord = WORDLISTS[newLanguage][index];
44564 newWords.push(newWord);
44565 }
44566 newPhrase = wordArrayToPhrase(newWords);
44567 return newPhrase;
44568 }
44569
44570 // TODO look at jsbip39 - mnemonic.splitWords
44571 function phraseToWordArray(phrase) {
44572 var words = phrase.split(/\s/g);
44573 var noBlanks = [];
44574 for (var i=0; i<words.length; i++) {
44575 var word = words[i];
44576 if (word.length > 0) {
44577 noBlanks.push(word);
44578 }
44579 }
44580 return noBlanks;
44581 }
44582
44583 // TODO look at jsbip39 - mnemonic.joinWords
44584 function wordArrayToPhrase(words) {
44585 var phrase = words.join(" ");
44586 var language = getLanguageFromPhrase(phrase);
44587 if (language == "japanese") {
44588 phrase = words.join("\u3000");
44589 }
44590 return phrase;
44591 }
44592
44593 function isUsingOwnEntropy() {
44594 return DOM.useEntropy.prop("checked");
44595 }
44596
44597 function setMnemonicFromEntropy() {
44598 clearEntropyFeedback();
44599 // Get entropy value
44600 var entropyStr = DOM.entropy.val();
44601 // Work out minimum base for entropy
44602 var entropy = Entropy.fromString(entropyStr);
44603 if (entropy.binaryStr.length == 0) {
44604 return;
44605 }
44606 // Show entropy details
44607 showEntropyFeedback(entropy);
44608 // Use entropy hash if not using raw entropy
44609 var bits = entropy.binaryStr;
44610 var mnemonicLength = DOM.entropyMnemonicLength.val();
44611 if (mnemonicLength != "raw") {
44612 // Get bits by hashing entropy with SHA256
44613 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
44614 var hex = sjcl.codec.hex.fromBits(hash);
44615 bits = BigInteger.parse(hex, 16).toString(2);
44616 while (bits.length % 256 != 0) {
44617 bits = "0" + bits;
44618 }
44619 // Truncate hash to suit number of words
44620 mnemonicLength = parseInt(mnemonicLength);
44621 var numberOfBits = 32 * mnemonicLength / 3;
44622 bits = bits.substring(0, numberOfBits);
44623 }
44624 // Discard trailing entropy
44625 var bitsToUse = Math.floor(bits.length / 32) * 32;
44626 var start = bits.length - bitsToUse;
44627 var binaryStr = bits.substring(start);
44628 // Convert entropy string to numeric array
44629 var entropyArr = [];
44630 for (var i=0; i<binaryStr.length / 8; i++) {
44631 var byteAsBits = binaryStr.substring(i*8, i*8+8);
44632 var entropyByte = parseInt(byteAsBits, 2);
44633 entropyArr.push(entropyByte)
44634 }
44635 // Convert entropy array to mnemonic
44636 var phrase = mnemonic.toMnemonic(entropyArr);
44637 // Set the mnemonic in the UI
44638 DOM.phrase.val(phrase);
44639 }
44640
44641 function clearEntropyFeedback() {
44642 DOM.entropyStrength.text("...");
44643 DOM.entropyType.text("");
44644 DOM.entropyWordCount.text("0");
44645 DOM.entropyEventCount.text("0");
44646 DOM.entropyBitsPerEvent.text("0");
44647 DOM.entropyBits.text("0");
44648 DOM.entropyFiltered.html("&nbsp;");
44649 DOM.entropyBinary.html("&nbsp;");
44650 }
44651
44652 function showEntropyFeedback(entropy) {
44653 var numberOfBits = entropy.binaryStr.length;
44654 var strength = "extremely weak";
44655 if (numberOfBits >= 64) {
44656 strength = "very weak";
44657 }
44658 if (numberOfBits >= 96) {
44659 strength = "weak";
44660 }
44661 if (numberOfBits >= 128) {
44662 strength = "strong";
44663 }
44664 if (numberOfBits >= 160) {
44665 strength = "very strong";
44666 }
44667 if (numberOfBits >= 192) {
44668 strength = "extremely strong";
44669 }
44670 // If time to crack is less than one day, and password is considered
44671 // strong or better based on the number of bits, rename strength to
44672 // 'easily cracked'.
44673 try {
44674 var z = zxcvbn(entropy.base.parts.join(""));
44675 var timeToCrack = z.crack_times_seconds.offline_fast_hashing_1e10_per_second;
44676 if (timeToCrack < 86400 && entropy.binaryStr.length >= 128) {
44677 strength = "easily cracked";
44678 if (z.feedback.warning != "") {
44679 strength = strength + " - " + z.feedback.warning;
44680 };
44681 }
44682 }
44683 catch (e) {
44684 strength = "unknown";
44685 console.log("Error detecting entropy strength with zxcvbn:");
44686 console.log(e);
44687 }
44688 var entropyTypeStr = getEntropyTypeStr(entropy);
44689 var wordCount = Math.floor(numberOfBits / 32) * 3;
44690 var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
44691 DOM.entropyFiltered.html(entropy.cleanHtml);
44692 DOM.entropyType.text(entropyTypeStr);
44693 DOM.entropyStrength.text(strength);
44694 DOM.entropyEventCount.text(entropy.base.ints.length);
44695 DOM.entropyBits.text(numberOfBits);
44696 DOM.entropyWordCount.text(wordCount);
44697 DOM.entropyBinary.text(entropy.binaryStr);
44698 DOM.entropyBitsPerEvent.text(bitsPerEvent);
44699 }
44700
44701 function getEntropyTypeStr(entropy) {
44702 var typeStr = entropy.base.str;
44703 // Add some detail if these are cards
44704 if (entropy.base.asInt == 52) {
44705 var cardDetail = []; // array of message strings
44706 // Detect duplicates
44707 var dupes = [];
44708 var dupeTracker = {};
44709 for (var i=0; i<entropy.base.parts.length; i++) {
44710 var card = entropy.base.parts[i];
44711 var cardUpper = card.toUpperCase();
44712 if (cardUpper in dupeTracker) {
44713 dupes.push(card);
44714 }
44715 dupeTracker[cardUpper] = true;
44716 }
44717 if (dupes.length > 0) {
44718 var dupeWord = "duplicates";
44719 if (dupes.length == 1) {
44720 dupeWord = "duplicate";
44721 }
44722 var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" ");
44723 if (dupes.length > 3) {
44724 msg += "...";
44725 }
44726 cardDetail.push(msg);
44727 }
44728 // Detect full deck
44729 var uniqueCards = [];
44730 for (var uniqueCard in dupeTracker) {
44731 uniqueCards.push(uniqueCard);
44732 }
44733 if (uniqueCards.length == 52) {
44734 cardDetail.unshift("full deck");
44735 }
44736 // Detect missing cards
44737 var values = "A23456789TJQK";
44738 var suits = "CDHS";
44739 var missingCards = [];
44740 for (var i=0; i<suits.length; i++) {
44741 for (var j=0; j<values.length; j++) {
44742 var card = values[j] + suits[i];
44743 if (!(card in dupeTracker)) {
44744 missingCards.push(card);
44745 }
44746 }
44747 }
44748 // Display missing cards if six or less, ie clearly going for full deck
44749 if (missingCards.length > 0 && missingCards.length <= 6) {
44750 var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" ");
44751 if (missingCards.length > 3) {
44752 msg += "...";
44753 }
44754 cardDetail.push(msg);
44755 }
44756 // Add card details to typeStr
44757 if (cardDetail.length > 0) {
44758 typeStr += " (" + cardDetail.join(", ") + ")";
44759 }
44760 }
44761 return typeStr;
44762 }
44763
44764 function setQrEvents(els) {
44765 els.on("mouseenter", createQr);
44766 els.on("mouseleave", destroyQr);
44767 els.on("click", toggleQr);
44768 }
44769
44770 function createQr(e) {
44771 var content = e.target.textContent || e.target.value;
44772 if (content) {
44773 var size = 130;
44774 DOM.qrImage.qrcode({width: size, height: size, text: content});
44775 if (!showQr) {
44776 DOM.qrHider.addClass("hidden");
44777 }
44778 else {
44779 DOM.qrHider.removeClass("hidden");
44780 }
44781 DOM.qrContainer.removeClass("hidden");
44782 }
44783 }
44784
44785 function destroyQr() {
44786 DOM.qrImage.text("");
44787 DOM.qrContainer.addClass("hidden");
44788 }
44789
44790 function toggleQr() {
44791 showQr = !showQr;
44792 DOM.qrHider.toggleClass("hidden");
44793 DOM.qrHint.toggleClass("hidden");
44794 }
44795
44796 function bip44TabSelected() {
44797 return DOM.bip44tab.hasClass("active");
44798 }
44799
44800 function bip32TabSelected() {
44801 return DOM.bip32tab.hasClass("active");
44802 }
44803
44804 var networks = [
44805 {
44806 name: "Bitcoin",
44807 onSelect: function() {
44808 network = bitcoin.networks.bitcoin;
44809 DOM.bip44coin.val(0);
44810 },
44811 },
44812 {
44813 name: "Bitcoin Testnet",
44814 onSelect: function() {
44815 network = bitcoin.networks.testnet;
44816 DOM.bip44coin.val(1);
44817 },
44818 },
44819 {
44820 name: "CLAM",
44821 onSelect: function() {
44822 network = bitcoin.networks.clam;
44823 DOM.bip44coin.val(23);
44824 },
44825 },
44826 {
44827 name: "Dogecoin",
44828 onSelect: function() {
44829 network = bitcoin.networks.dogecoin;
44830 DOM.bip44coin.val(3);
44831 },
44832 },
44833 {
44834 name: "DASH",
44835 onSelect: function() {
44836 network = bitcoin.networks.dash;
44837 DOM.bip44coin.val(5);
44838 },
44839 },
44840 {
44841 name: "Ethereum",
44842 onSelect: function() {
44843 network = bitcoin.networks.bitcoin;
44844 DOM.bip44coin.val(60);
44845 },
44846 },
44847 {
44848 name: "GAME",
44849 onSelect: function() {
44850 network = bitcoin.networks.game;
44851 DOM.bip44coin.val(101);
44852 },
44853 },
44854 {
44855 name: "Jumbucks",
44856 onSelect: function() {
44857 network = bitcoin.networks.jumbucks;
44858 DOM.bip44coin.val(26);
44859 },
44860 },
44861 {
44862 name: "Litecoin",
44863 onSelect: function() {
44864 network = bitcoin.networks.litecoin;
44865 DOM.bip44coin.val(2);
44866 },
44867 },
44868 {
44869 name: "Namecoin",
44870 onSelect: function() {
44871 network = bitcoin.networks.namecoin;
44872 DOM.bip44coin.val(7);
44873 },
44874 },
44875 {
44876 name: "Peercoin",
44877 onSelect: function() {
44878 network = bitcoin.networks.peercoin;
44879 DOM.bip44coin.val(6);
44880 },
44881 },
44882 {
44883 name: "Ripple",
44884 onSelect: function() {
44885 network = bitcoin.networks.bitcoin;
44886 DOM.bip44coin.val(144);
44887 },
44888 },
44889 {
44890 name: "ShadowCash",
44891 onSelect: function() {
44892 network = bitcoin.networks.shadow;
44893 DOM.bip44coin.val(35);
44894 },
44895 },
44896 {
44897 name: "ShadowCash Testnet",
44898 onSelect: function() {
44899 network = bitcoin.networks.shadowtn;
44900 DOM.bip44coin.val(1);
44901 },
44902 },
44903 {
44904 name: "Slimcoin",
44905 onSelect: function() {
44906 network = bitcoin.networks.slimcoin;
44907 DOM.bip44coin.val(63);
44908 },
44909 },
44910 {
44911 name: "Slimcoin Testnet",
44912 onSelect: function() {
44913 network = bitcoin.networks.slimcointn;
44914 DOM.bip44coin.val(111);
44915 },
44916 },
44917 {
44918 name: "Viacoin",
44919 onSelect: function() {
44920 network = bitcoin.networks.viacoin;
44921 DOM.bip44coin.val(14);
44922 },
44923 },
44924 {
44925 name: "Viacoin Testnet",
44926 onSelect: function() {
44927 network = bitcoin.networks.viacointestnet;
44928 DOM.bip44coin.val(1);
44929 },
44930 },
44931 ]
44932
44933 var clients = [
44934 {
44935 name: "Bitcoin Core",
44936 onSelect: function() {
44937 DOM.bip32path.val("m/0'/0'");
44938 DOM.hardenedAddresses.prop('checked', true);
44939 },
44940 },
44941 {
44942 name: "blockchain.info",
44943 onSelect: function() {
44944 DOM.bip32path.val("m/44'/0'/0'");
44945 DOM.hardenedAddresses.prop('checked', false);
44946 },
44947 },
44948 {
44949 name: "MultiBit HD",
44950 onSelect: function() {
44951 DOM.bip32path.val("m/0'/0");
44952 DOM.hardenedAddresses.prop('checked', false);
44953 },
44954 }
44955 ]
44956
44957 init();
44958
44959 })();
44960 </script>
44961 </body>
44962 </html>