]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blob - bip39-standalone.html
Ethereum addresses include checksum
[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
16 <style>
17 body {
18 padding-bottom: 32px;
19 }
20 .form-control[readonly] {
21 cursor: text;
22 }
23 .feedback-container {
24 position: fixed;
25 top: 0;
26 width: 100%;
27 text-align: center;
28 z-index: 4;
29 }
30 .feedback {
31 display: table;
32 padding: 0.5em 1em;
33 background-color: orange;
34 margin: 0 auto;
35 font-size: 2em;
36 color: #444;
37 border: 2px solid #555;
38 border-top: 0;
39 border-bottom-left-radius: 20px 20px;
40 border-bottom-right-radius: 20px 20px;
41 }
42 .no-border {
43 border: 0;
44 box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
45 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
46 }
47 .phrase {
48 word-break: keep-all;
49 }
50 .generate-container .strength {
51 /* override mobile width from bootstrap */
52 width: auto!important;
53 display: inline-block;
54 }
55 .languages a {
56 padding-left: 10px;
57 }
58 .languages a:nth-of-type(1) {
59 margin-left: -12px;
60 padding-left: 0;
61 }
62 .monospace {
63 font-family: monospace;
64 }
65 .entropy-container .filtered,
66 .entropy-container .binary {
67 word-wrap: break-word;
68 }
69 .entropy-container li {
70 padding-bottom: 5px;
71 }
72 .card-suit {
73 font-size: 19px;
74 line-height: 0;
75 }
76 .card-suit.club {
77 color: #009F00;
78 }
79 .card-suit.diamond {
80 color: #3D5DC4;
81 }
82 .card-suit.heart {
83 color: #F00;
84 }
85 .card-suit.spade {
86 color: #000;
87 }
88 .qr-container {
89 position: fixed;
90 top: 0;
91 right: 0;
92 text-align: center;
93 background-color: #FFF;
94 border: 1px solid #CCC;
95 }
96 .qr-image {
97 margin: 5px;
98 }
99 .qr-hint,
100 .qr-warning {
101 padding: 2px;
102 max-width: 150px;
103 }
104 .more-info {
105 cursor: help;
106 border-bottom: 1px dashed #000;
107 text-decoration: none;
108 }
109 </style>
110 </head>
111 <body>
112 <div class="container">
113
114 <h1 class="text-center">Mnemonic Code Converter</h1>
115 <hr>
116 <div class="row">
117 <div class="col-md-12">
118 <h2>Mnemonic</h2>
119 <form class="form-horizontal" role="form">
120 <div class="form-group">
121 <div class="col-sm-2"></div>
122 <div class="col-sm-10">
123 <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>
124 <p data-translate-html>
125 For more info see the
126 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target="_blank">BIP39 spec</a>.
127 </p>
128 </div>
129 </div>
130 <div class="form-group generate-container">
131 <label class="col-sm-2 control-label"></label>
132 <div class="col-sm-10">
133 <div class="form-inline">
134 <div class="input-group-inline">
135 <span data-translate>Generate a random mnemonic, or enter your own below</span>:
136 <button class="btn generate">Generate</button>
137 <select id="strength" class="strength form-control">
138 <option value="3">3</option>
139 <option value="6">6</option>
140 <option value="9">9</option>
141 <option value="12">12</option>
142 <option value="15" selected>15</option>
143 <option value="18">18</option>
144 <option value="21">21</option>
145 <option value="24">24</option>
146 </select>
147 <span data-translate>words</span>
148 </div>
149 </div>
150 </div>
151 </div>
152 <div class="entropy-container hidden">
153 <div class="form-group text-danger">
154 <label class="col-sm-2 control-label" data-translate>Warning</label>
155 <div class="col-sm-10 form-control-static">
156 <span data-translate>Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.</span>
157 <a href="#entropy-notes" data-translate>Read more</a>
158 </div>
159 </div>
160 <div class="form-group">
161 <label for="entropy" class="col-sm-2 control-label" data-translate>Entropy</label>
162 <div class="col-sm-7">
163 <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>
164 <div class="row">
165 <label class="col-sm-3 control-label" data-translate>Strength</label>
166 <div class="strength col-sm-3 form-control-static"></div>
167 <label class="col-sm-3 control-label" data-translate>Event Count</label>
168 <div class="event-count col-sm-3 form-control-static"></div>
169 </div>
170 <div class="row">
171 <label class="col-sm-3 control-label" data-translate>Entropy Type</label>
172 <div class="type col-sm-3 form-control-static"></div>
173 <label class="col-sm-3 control-label" data-translate>Bits Per Event</label>
174 <div class="bits-per-event col-sm-3 form-control-static"></div>
175 </div>
176 <div class="row">
177 <label class="col-sm-3 control-label" data-translate>Word Count</label>
178 <div class="word-count col-sm-3 form-control-static"></div>
179 <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>
180 <div class="bits col-sm-3 form-control-static"></div>
181 </div>
182 <label class="col-sm-3 control-label" data-translate>Filtered Entropy</label>
183 <div class="filtered col-sm-9 form-control-static"></div>
184 <label class="col-sm-3 control-label" data-translate>Raw Binary</label>
185 <div class="binary col-sm-9 form-control-static"></div>
186 <label class="col-sm-3 control-label" data-translate>Mnemonic Length</label>
187 <div class="col-sm-9">
188 <select class="mnemonic-length form-control">
189 <option value="raw" selected data-translate>Use Raw Entropy (3 words per 32 bits)</option>
190 <option value="12">12 <span data-translate>Words</span></option>
191 <option value="15">15 <span data-translate>Words</option>
192 <option value="18">18 <span data-translate>Words</span></option>
193 <option value="21">21 <span data-translate>Words</span></option>
194 <option value="24">24 <span data-translate>Words</span></option>
195 </select>
196 </div>
197 </div>
198 <div class="col-sm-3">
199 <p data-translate>Valid entropy values include:</p>
200 <ul>
201 <li><strong data-translate>Binary</strong> [0-1]<br>101010011</li>
202 <li><strong data-translate>Base 6</strong> [0-5]<br>123434014</li>
203 <li><strong data-translate>Dice</strong> [1-6]<br>62535634</li>
204 <li><strong data-translate>Base 10</strong> [0-9]<br>90834528</li>
205 <li><strong data-translate>Hex</strong> [0-9A-F]<br>4187a8bfd9</li>
206 <li><strong data-translate>Card</strong> [A2-9TJQK][CDHS]<br>ahqs9dtc</li>
207 </ul>
208 </div>
209 </div>
210 </div>
211 <div class="form-group">
212 <div class="col-sm-2"></div>
213 <div class="col-sm-10 checkbox">
214 <label>
215 <input type="checkbox" class="use-entropy">
216 <span data-translate>Supply my own source of entropy</span>
217 </label>
218 </div>
219 </div>
220 <div class="form-group">
221 <label class="col-sm-2 control-label" data-translate>Mnemonic Language</label>
222 <div class="col-sm-10 languages">
223 <div class="form-control no-border">
224 <a href="#english">English</a>
225 <a href="#japanese" title="Japanese">日本語</a>
226 <a href="#spanish" title="Spanish">Español</a>
227 <a href="#chinese_simplified" title="Chinese (Simplified)">中文(简体)</a>
228 <a href="#chinese_traditional" title="Chinese (Traditional)">中文(繁體)</a>
229 <a href="#french" title="French">Français</a>
230 <a href="#italian" title="Italian">Italiano</a>
231 </div>
232 </div>
233 </div>
234 <div class="form-group">
235 <label for="phrase" class="col-sm-2 control-label" data-translate>BIP39 Mnemonic</label>
236 <div class="col-sm-10">
237 <textarea id="phrase" class="phrase form-control" data-show-qr></textarea>
238 </div>
239 </div>
240 <div class="form-group">
241 <label for="passphrase" class="col-sm-2 control-label" data-translate>BIP39 Passphrase (optional)</label>
242 <div class="col-sm-10">
243 <textarea id="passphrase" class="passphrase form-control"></textarea>
244 </div>
245 </div>
246 <div class="form-group">
247 <label for="seed" class="col-sm-2 control-label" data-translate>BIP39 Seed</label>
248 <div class="col-sm-10">
249 <textarea id="seed" class="seed form-control" readonly="readonly" data-show-qr></textarea>
250 </div>
251 </div>
252 <div class="form-group">
253 <label for="network-phrase" class="col-sm-2 control-label" data-translate>Coin</label>
254 <div class="col-sm-10">
255 <select id="network-phrase" class="network form-control">
256 <!-- populated by javascript -->
257 </select>
258 </div>
259 </div>
260 <div class="form-group">
261 <label for="root-key" class="col-sm-2 control-label" data-translate>BIP32 Root Key</label>
262 <div class="col-sm-10">
263 <textarea id="root-key" class="root-key form-control" data-show-qr></textarea>
264 </div>
265 </div>
266 </form>
267 </div>
268 </div>
269
270 <hr>
271
272 <div class="row">
273 <div class="col-md-12">
274 <h2>Derivation Path</h2>
275 <ul class="derivation-type nav nav-tabs" role="tablist">
276 <li id="bip44-tab" class="active">
277 <a href="#bip44" role="tab" data-toggle="tab">BIP44</a>
278 </li>
279 <li id="bip32-tab">
280 <a href="#bip32" role="tab" data-toggle="tab">BIP32</a>
281 </li>
282 </ul>
283 <div class="derivation-type tab-content">
284 <div id="bip44" class="tab-pane active">
285 <form class="form-horizontal" role="form">
286 <br>
287 <div class="col-sm-2"></div>
288 <div class="col-sm-10">
289 <p data-translate-html>
290 For more info see the
291 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">BIP44 spec</a>.
292 </p>
293 </div>
294 <div class="form-group">
295 <label for="purpose" class="col-sm-2 control-label">
296 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
297 </label>
298 <div class="col-sm-10">
299 <input id="purpose" type="text" class="purpose form-control" value="44">
300 </div>
301 </div>
302 <div class="form-group">
303 <label for="coin" class="col-sm-2 control-label">
304 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
305 </label>
306 <div class="col-sm-10">
307 <input id="coin" type="text" class="coin form-control" value="0">
308 </div>
309 </div>
310 <div class="form-group">
311 <label for="account" class="col-sm-2 control-label">
312 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
313 </label>
314 <div class="col-sm-10">
315 <input id="account" type="text" class="account form-control" value="0">
316 </div>
317 </div>
318 <div class="form-group">
319 <label for="change" class="col-sm-2 control-label">
320 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
321 </label>
322 <div class="col-sm-10">
323 <input id="change" type="text" class="change form-control" value="0">
324 </div>
325 </div>
326 <div class="form-group">
327 <label class="col-sm-2 control-label">
328 </label>
329 <div class="col-sm-10">
330 <p data-translate>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.</p>
331 </div>
332 </div>
333 <div class="form-group">
334 <label for="account-xprv" class="col-sm-2 control-label">
335 <span data-translate>Account Extended Private Key</span>
336 </label>
337 <div class="col-sm-10">
338 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
339 </div>
340 </div>
341 <div class="form-group">
342 <label for="account-xpub" class="col-sm-2 control-label">
343 <span data-translate>Account Extended Public Key</span>
344 </label>
345 <div class="col-sm-10">
346 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
347 </div>
348 </div>
349 <div class="form-group">
350 <label class="col-sm-2 control-label">
351 </label>
352 <div class="col-sm-10">
353 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
354 </div>
355 </div>
356 <div class="form-group">
357 <label for="bip44-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
358 <div class="col-sm-10">
359 <input id="bip44-path" type="text" class="path form-control" value="m/44'/0'/0'/0" readonly="readonly">
360 </div>
361 </div>
362 </form>
363 </div>
364 <div id="bip32" class="tab-pane">
365 <form class="form-horizontal" role="form">
366 <br>
367 <div class="col-sm-2"></div>
368 <div class="col-sm-10">
369 <p data-translate>
370 For more info see the
371 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">BIP32 spec</a>
372 </p>
373 </div>
374 <div class="form-group">
375 <label for="bip32-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
376 <div class="col-sm-10">
377 <input id="bip32-path" type="text" class="path form-control" value="m/0">
378 </div>
379 </div>
380 <div class="form-group">
381 <div class="col-sm-2"></div>
382 <label class="col-sm-10">
383 <input class="hardened-addresses" type="checkbox">
384 <span data-translate>Use hardened addresses</span>
385 </label>
386 </div>
387 <div class="form-group">
388 <label for="core-path" class="col-sm-2 control-label" data-translate>Bitcoin Core</label>
389 <div class="col-sm-10">
390 <p class="form-control no-border" data-translate-html>
391 Use path <code>m/0'/0'</code> with hardened addresses.
392 </p>
393 <p class="form-control no-border" data-translate-html>
394 For more info see the
395 <a href="https://github.com/bitcoin/bitcoin/pull/8035" target="_blank">Bitcoin Core BIP32 implementation</a>
396 </p>
397 </div>
398 </div>
399 <div class="form-group">
400 <label class="col-sm-2 control-label" data-translate>Block Explorers</label>
401 <div class="col-sm-10">
402 <p class="form-control no-border">
403 <span data-translate-html>Use path <code>m/44'/0'/0'</code>.</span>
404 <span data-translate-html>Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.</span>
405 </p>
406 <p class="form-control no-border">
407 <span data-translate>Can be used with</span>:
408 <a href="https://blockchain.info/" target="_blank">blockchain.info</a>
409 </p>
410 </div>
411 </div>
412 </form>
413 </div>
414 </div>
415 <form class="form-horizontal" role="form">
416 <div class="form-group">
417 <label for="extended-priv-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Private Key</label>
418 <div class="col-sm-10">
419 <textarea id="extended-priv-key" class="extended-priv-key form-control" readonly="readonly" data-show-qr></textarea>
420 </div>
421 </div>
422 <div class="form-group">
423 <label for="extended-pub-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Public Key</label>
424 <div class="col-sm-10">
425 <textarea id="extended-pub-key" class="extended-pub-key form-control" readonly="readonly" data-show-qr></textarea>
426 </div>
427 </div>
428 </form>
429 </div>
430 </div>
431
432 <hr>
433
434 <div class="row">
435 <div class="col-md-12">
436 <h2>Derived Addresses</h2>
437 <p data-translate>Note these addreses are derived from the BIP32 Extended Key</p>
438 <table class="table table-striped">
439 <thead>
440 <th>
441 <div class="input-group">
442 <span data-translate>Path</span>&nbsp;&nbsp;
443 <button class="index-toggle" data-translate>Toggle</button>
444 </div>
445 </th>
446 <th>
447 <div class="input-group">
448 <span data-translate>Address</span>&nbsp;&nbsp;
449 <button class="address-toggle" data-translate>Toggle</button>
450 </div>
451 </th>
452 <th>
453 <div class="input-group">
454 <span data-translate>Public Key</span>&nbsp;&nbsp;
455 <button class="public-key-toggle" data-translate>Toggle</button>
456 </div>
457 </th>
458 <th>
459 <div class="input-group">
460 <span data-translate>Private Key</span>&nbsp;&nbsp;
461 <button class="private-key-toggle" data-translate>Toggle</button>
462 </div>
463 </th>
464 </thead>
465 <tbody class="addresses monospace">
466 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
467 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
468 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
469 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
470 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
471 </tbody>
472 </table>
473 </div>
474 </div>
475 <span data-translate>Show more rows</span>:
476 <input type="number" class="rows-to-add" value="20">
477 <button class="more" data-translate>Show</button>
478
479 <hr>
480
481 <div class="row">
482 <div class="col-md-12">
483 <h2 data-translate>More info</h2>
484 <h3>BIP39 <span class="small" data-translate>Mnemonic code for generating deterministic keys</span></h3>
485 <p data-translate-html>
486 Read more at the
487 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a>
488 </p>
489 <h3>BIP32 <span class="small" data-translate>Hierarchical Deterministic Wallets</span></h3>
490 <p data-translate-html>
491 Read more at the
492 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a>
493 </p>
494 <p data-translate-html>
495 See the demo at
496 <a href="http://bip32.org/" target="_blank">bip32.org</a>
497 </p>
498 <h3>BIP44 <span class="small" data-translate>Multi-Account Hierarchy for Deterministic Wallets</span></h3>
499 <p data-translate-html>
500 Read more at the
501 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a>
502 </p>
503 <h3 data-translate>Private Keys</h3>
504 <p>
505 <span data-translate-html>
506 Use private keys at
507 <a href="https://web.archive.org/web/20150707020924/https://brainwallet.org/" target="_blank">brainwallet.org</a>.
508 </span>
509 <span data-translate>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span>
510 </p>
511 <h3 id="entropy-notes" data-translate>Entropy</h3>
512 <p>
513 <span data-translate-html>
514 Entropy values must be sourced from a
515 <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>.
516 </span>
517 <span data-translate>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span>
518 <span data-translate-html>
519 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address,
520 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't
521 random enough for the needs of this tool.
522 </span>
523 </p>
524 <p>
525 <strong><span data-translate>Do not store entropy.</span></strong>
526 </p>
527 <p>
528 <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>
529 <span data-translate>Instead of storing entropy, store the mnemonic generated from the entropy.</span>
530 <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>
531 </p>
532 <p>
533 <span data-translate-html>
534 The random mnemonic generator on this page uses a
535 <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>.
536 </span>
537 <span data-translate>The built in random generator can generally be trusted more than your own intuition about randomness.</span>
538 <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>
539 <span data-translate>In that case you might choose to use your own source of entropy.</span>
540 </p>
541 <p>
542 <a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank" data-translate>You are not a good source of entropy.</a>
543 </p>
544 <h3 data-translate>License</h3>
545 <p>
546 <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.
547 </span>
548 </p>
549 <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>
550 </div>
551 </div>
552
553 <hr>
554
555 <div class="row">
556 <div class="col-md-12">
557
558 <h2 data-translate>Offline Usage</h2>
559
560 <p data-translate>
561 You can use this tool without having to be online.
562 </p>
563 <p data-translate>
564 In your browser, select file save-as, and save this page
565 as a file.
566 </p>
567 <p data-translate>
568 Double-click that file to open it in a browser
569 on any offline computer.
570 </p>
571 <p>
572 <span data-translate>Alternatively, download the file from the repository</span>
573 -
574 <a href="https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39</a>
575 </p>
576
577 </div>
578 </div>
579
580 <hr>
581
582 <div class="row">
583 <div class="col-md-12">
584
585 <h2 data-translate>This project is 100% open-source code</h2>
586
587 <p>
588 <span data-translate>Get the source code from the repository</span>
589 -
590 <a href="https://github.com/iancoleman/bip39" target="_blank">
591 https://github.com/iancoleman/bip39
592 </a>
593 </p>
594
595 <h3 data-translate>Libraries</h3>
596
597 <p>
598 <span>BitcoinJS - </span>
599 <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank">
600 https://github.com/bitcoinjs/bitcoinjs-lib
601 </a>
602 </p>
603
604 <p>
605 <span>jsBIP39 - </span>
606 <a href="https://github.com/iancoleman/jsbip39" target="_blank">
607 https://github.com/iancoleman/jsbip39
608 </a>
609 </p>
610
611 <p>
612 <span>sjcl - </span>
613 <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank">
614 https://github.com/bitwiseshiftleft/sjcl
615 </a>
616 </p>
617
618 <p>
619 <span>jQuery - </span>
620 <a href="https://jquery.com/" target="_blank">
621 https://jquery.com/
622 </a>
623 </p>
624
625 <p>
626 <span>Twitter Bootstrap - </span>
627 <a href="http://getbootstrap.com/" target="_blank">
628 http://getbootstrap.com/
629 </a>
630 </p>
631
632 </div>
633 </div>
634
635 </div>
636
637 <div class="qr-container hidden">
638 <div class="qr-hint bg-primary hidden" data-translate>Click field to hide QR</div>
639 <div class="qr-hint bg-primary" data-translate>Click field to show QR</div>
640 <div class="qr-hider hidden">
641 <div class="qr-image"></div>
642 <div class="qr-warning bg-primary" data-translate>Caution: Scanner may keep history</div>
643 </div>
644 </div>
645
646 <div class="feedback-container">
647 <div class="feedback">Loading...</div>
648 </div>
649
650 <script type="text/template" id="address-row-template">
651 <tr>
652 <td class="index"><span></span></td>
653 <td class="address"><span data-show-qr></span></td>
654 <td class="pubkey"><span data-show-qr></span></td>
655 <td class="privkey"><span data-show-qr></span></td>
656 </tr>
657 </script>
658 <script>// From
659 // https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
660 // Required for ethereumjs-utils.js when run in phantomjs-2.1.1
661 // but is not required in any modern browsers.
662 // For more information, see
663 // https://www.bountysource.com/issues/38485709-error-rendering-plot-with-phantomjs
664
665 //----------------------------------------------------------------------
666 //
667 // ECMAScript 2015 Polyfills
668 //
669 //----------------------------------------------------------------------
670
671 (function (global) {
672 "use strict";
673
674 // Set this to always override native implementations, for testing
675 // the polyfill in browsers with partial/full ES2015 support.
676 var OVERRIDE_NATIVE_FOR_TESTING = false;
677
678 var undefined = (void 0); // Paranoia
679
680 // Helpers
681
682 function strict(o) {
683 return o === global ? undefined : o;
684 }
685
686 function hook(o, p, f) {
687 var op = o[p];
688 console.assert(typeof op === 'function', 'Hooking a non-function');
689 o[p] = function() {
690 var o = strict(this);
691 var r = f.apply(o, arguments);
692 return r !== undefined ? r : op.apply(o, arguments);
693 };
694 }
695
696 function isSymbol(s) {
697 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
698 }
699
700 function getPropertyDescriptor(target, name) {
701 var desc = Object.getOwnPropertyDescriptor(target, name);
702 var proto = Object.getPrototypeOf(target);
703 while (!desc && proto) {
704 desc = Object.getOwnPropertyDescriptor(proto, name);
705 proto = Object.getPrototypeOf(proto);
706 }
707 return desc;
708 }
709
710 var enqueue = (function(nativePromise, nativeSetImmediate) {
711 if (nativePromise)
712 return function(job) { nativePromise.resolve().then(function() { job(); }); };
713 if (nativeSetImmediate)
714 return function(job) { nativeSetImmediate(job); };
715 return function(job) { setTimeout(job, 0); };
716 }(global['Promise'], global['setImmediate']));
717
718 function define(o, p, v, override) {
719 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
720 return;
721
722 if (typeof v === 'function') {
723 // Sanity check that functions are appropriately named (where possible)
724 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
725 Object.defineProperty(o, p, {
726 value: v,
727 configurable: true,
728 enumerable: false,
729 writable: true
730 });
731 } else {
732 Object.defineProperty(o, p, {
733 value: v,
734 configurable: false,
735 enumerable: false,
736 writable: false
737 });
738 }
739 }
740
741 function set_internal(o, p, v) {
742 Object.defineProperty(o, p, {
743 value: v,
744 configurable: false,
745 enumerable: false,
746 writable: true
747 });
748 }
749
750 // Snapshot intrinsic functions
751 var $isNaN = global.isNaN,
752 $parseInt = global.parseInt,
753 $parseFloat = global.parseFloat;
754
755 var E = Math.E,
756 LOG10E = Math.LOG10E,
757 LOG2E = Math.LOG2E,
758 abs = Math.abs,
759 ceil = Math.ceil,
760 exp = Math.exp,
761 floor = Math.floor,
762 log = Math.log,
763 max = Math.max,
764 min = Math.min,
765 pow = Math.pow,
766 random = Math.random,
767 sqrt = Math.sqrt;
768
769 var orig_match = String.prototype.match,
770 orig_replace = String.prototype.replace,
771 orig_search = String.prototype.search,
772 orig_split = String.prototype.split;
773
774 // These are used for implementing the polyfills, but not exported.
775
776 // Inspired by https://gist.github.com/1638059
777 /** @constructor */
778 function EphemeronTable() {
779 var secretKey = ObjectCreate(null);
780
781 function conceal(o) {
782 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
783 Object.defineProperty(o, 'valueOf', {
784 value: (function(secretKey) {
785 return function (k) {
786 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
787 };
788 }(secretKey)),
789 configurable: true,
790 writeable: true,
791 enumerable: false
792 });
793 return secrets;
794 }
795
796 function reveal(o) {
797 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
798 return v === o ? null : v;
799 }
800
801 return {
802 clear: function() {
803 secretKey = ObjectCreate(null);
804 },
805 remove: function(key) {
806 var secrets = reveal(key);
807 if (secrets && HasOwnProperty(secrets, 'value')) {
808 delete secrets.value;
809 return true;
810 }
811 return false;
812 },
813 get: function(key, defaultValue) {
814 var secrets = reveal(key);
815 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
816 },
817 has: function(key) {
818 var secrets = reveal(key);
819 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
820 },
821 set: function(key, value) {
822 var secrets = reveal(key) || conceal(key);
823 secrets.value = value;
824 }
825 };
826 }
827
828 var empty = Object.create(null);
829
830 //----------------------------------------------------------------------
831 //
832 // ECMAScript 2015
833 // http://www.ecma-international.org/ecma-262/6.0/
834 //
835 //----------------------------------------------------------------------
836
837 // ---------------------------------------
838 // 19.4 Symbol Objects
839 // ---------------------------------------
840
841 // NOTE: Symbols are defined here - out of spec order - since we need the
842 // properties and prototype to be populated for other polyfills.
843
844 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
845
846 var symbolForKey;
847 (function() {
848 var secret = Object.create(null);
849 var symbolMap = {};
850 symbolForKey = function(k) {
851 return symbolMap[k];
852 };
853
854 var GlobalSymbolRegistry = [];
855
856 function unique(bits) {
857 return Array(bits + 1).join('x').replace(/x/g, function() {
858 return random() < 0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
859 });
860 }
861
862 // 19.4.1 The Symbol Constructor
863 // 19.4.1.1 Symbol ( description=undefined )
864 function Symbol(description) {
865 if (!(this instanceof Symbol)) return new Symbol(description, secret);
866 if (this instanceof Symbol && arguments[1] !== secret) throw TypeError();
867
868 var descString = description === undefined ? undefined : String(description);
869
870 set_internal(this, '[[SymbolData]]', unique(128));
871 set_internal(this, '[[Description]]', descString);
872
873 symbolMap[this] = this;
874 return this;
875 }
876
877 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
878 global.Symbol = Symbol;
879
880 // 19.4.2 Properties of the Symbol Constructor
881
882 // 19.4.2.1 Symbol.for (key)
883 define(Symbol, 'for', function for_(key) {
884 var stringKey = String(key);
885 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
886 var e = GlobalSymbolRegistry[i];
887 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
888 }
889 var newSymbol = Symbol(key);
890 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
891 return newSymbol;
892 });
893
894 // 19.4.2.2 Symbol.hasInstance
895 // 19.4.2.3 Symbol.isConcatSpreadable
896
897 // 19.4.2.4 Symbol.iterator
898 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
899
900 // 19.4.2.5 Symbol.keyFor (sym)
901 define(Symbol, 'keyFor', function keyFor(sym) {
902 if (!(sym instanceof Symbol)) throw TypeError();
903 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
904 var e = GlobalSymbolRegistry[i];
905 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
906 }
907 return undefined;
908 });
909
910 // 19.4.2.6 Symbol.match
911 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
912
913 // 19.4.2.7 Symbol.prototype
914
915 // 19.4.2.8 Symbol.replace
916 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
917
918 // 19.4.2.9 Symbol.search
919 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
920
921 // 19.4.2.10 Symbol.species
922
923 // 19.4.2.11 Symbol.search
924 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
925
926 // 19.4.2.12 Symbol.toPrimitive
927
928 // 19.4.2.13 Symbol.toStringTag
929 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
930
931 // 19.4.2.14 Symbol.unscopables
932
933 // 19.4.3 Properties of the Symbol Prototype Object
934 // 19.4.3.1 Symbol.prototype.constructor
935
936 // 19.4.3.2 Symbol.prototype.toString ( )
937 Object.defineProperty(Symbol.prototype, 'toString', {
938 value: function toString() {
939 var s = strict(this);
940 var desc = s['[[Description]]'];
941 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
942 },
943 configurable: true, writeable: true, enumerable: false });
944
945 // 19.4.3.3 Symbol.prototype.valueOf ( )
946 Object.defineProperty(Symbol.prototype, 'valueOf', {
947 value: function valueOf() {
948 // To prevent automatic string conversion:
949 throw TypeError();
950
951 // Spec has approximately the following:
952 //var s = strict(this);
953 //if (Type(s) === 'symbol') return s;
954 //if (Type(s) !== 'object') throw TypeError();
955 //if (!('[[SymbolData]]' in s)) throw TypeError();
956 //return s['[[SymbolData]]'];
957 },
958 configurable: true, writeable: true, enumerable: false });
959
960 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
961 // (Done later to polyfill partial implementations)
962
963 // 19.4.4 Properties of Symbol Instances
964 }());
965
966 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
967
968 // Defined here so that other prototypes can reference it
969 // 25.1.2 The %IteratorPrototype% Object
970 var $IteratorPrototype$ = {};
971
972 //----------------------------------------
973 // 6 ECMAScript Data Types and Values
974 //----------------------------------------
975
976 // 6.1 ECMAScript Language Types
977
978 // "Type(x)" is used as shorthand for "the type of x"...
979 function Type(v) {
980 switch (typeof v) {
981 case 'undefined': return 'undefined';
982 case 'boolean': return 'boolean';
983 case 'number': return 'number';
984 case 'string': return 'string';
985 case 'symbol': return 'symbol';
986 default:
987 if (v === null) return 'null';
988 if (v instanceof global.Symbol) return 'symbol';
989 return 'object';
990 }
991 }
992
993 // 6.1.5.1 Well-Known Symbols
994 var $$iterator = global.Symbol.iterator,
995 $$match = global.Symbol.match,
996 $$replace = global.Symbol.replace,
997 $$search = global.Symbol.search,
998 $$split = global.Symbol.split,
999 $$toStringTag = global.Symbol.toStringTag;
1000
1001 //----------------------------------------
1002 // 7 Abstract Operations
1003 //----------------------------------------
1004
1005 //----------------------------------------
1006 // 7.1 Type Conversion
1007 //----------------------------------------
1008
1009 // 7.1.1 ToPrimitive ( input [, PreferredType] )
1010 // just use valueOf()
1011
1012 // 7.1.2 ToBoolean ( argument )
1013 // just use Boolean()
1014
1015 // 7.1.3 ToNumber ( argument )
1016 // just use Number()
1017
1018 // 7.1.4 ToInteger ( argument )
1019 function ToInteger(n) {
1020 n = Number(n);
1021 if ($isNaN(n)) return 0;
1022 if (n === 0 || n === Infinity || n === -Infinity) return n;
1023 return ((n < 0) ? -1 : 1) * floor(abs(n));
1024 }
1025
1026 // 7.1.5 ToInt32 ( argument )
1027 function ToInt32(v) { return v >> 0; }
1028
1029 // 7.1.6 ToUint32 ( argument )
1030 function ToUint32(v) { return v >>> 0; }
1031
1032 // 7.1.7 ToInt16 ( argument )
1033 function ToInt16(v) { return (v << 16) >> 16; }
1034
1035 // 7.1.8 ToUint16 ( argument )
1036 function ToUint16(v) { return v & 0xFFFF; }
1037
1038 // 7.1.9 ToInt8 ( argument )
1039 function ToInt8(v) { return (v << 24) >> 24; }
1040
1041 // 7.1.10 ToUint8 ( argument )
1042 function ToUint8(v) { return v & 0xFF; }
1043
1044 // 7.1.11 ToUint8Clamp ( argument )
1045 function ToUint8Clamp(argument) {
1046 var number = Number(argument);
1047 if ($isNaN(number)) return 0;
1048 if (number <= 0) return 0;
1049 if (number >= 255) return 255;
1050 var f = floor(number);
1051 if ((f + 0.5) < number) return f + 1;
1052 if (number < (f + 0.5)) return f;
1053 if (f % 2) return f + 1;
1054 return f;
1055 }
1056
1057 // 7.1.12 ToString ( argument )
1058 // just use String()
1059
1060 // 7.1.13 ToObject ( argument )
1061 function ToObject(v) {
1062 if (v === null || v === undefined) throw TypeError();
1063 return Object(v);
1064 }
1065
1066 // 7.1.14 ToPropertyKey ( argument )
1067 function ToPropertyKey(v) {
1068 return String(v);
1069 }
1070
1071 // 7.1.15 ToLength ( argument )
1072 function ToLength(v) {
1073 var len = ToInteger(v);
1074 if (len <= 0) return 0;
1075 if (len === Infinity) return 0x20000000000000 - 1; // 2^53-1
1076 return min(len, 0x20000000000000 - 1); // 2^53-1
1077 }
1078
1079 // 7.1.16 CanonicalNumericIndexString ( argument )
1080
1081 //----------------------------------------
1082 // 7.2 Testing and Comparison Operations
1083 //----------------------------------------
1084
1085 // 7.2.1 RequireObjectCoercible ( argument )
1086 // 7.2.2 IsArray ( argument )
1087
1088 // 7.2.3 IsCallable ( argument )
1089 function IsCallable(o) { return typeof o === 'function'; }
1090
1091 // 7.2.4 IsConstructor ( argument )
1092 function IsConstructor(o) {
1093 // Hacks for Safari 7 TypedArray XXXConstructor objects
1094 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1095 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1096 // TODO: Can this be improved on?
1097 return typeof o === 'function';
1098 }
1099
1100 // 7.2.5 IsExtensible (O)
1101 // 7.2.6 IsInteger ( argument )
1102
1103 // 7.2.7 IsPropertyKey ( argument )
1104 function IsPropertyKey(argument) {
1105 if (Type(argument) === 'string') return true;
1106 if (Type(argument) === 'symbol') return true;
1107 return false;
1108 }
1109
1110 // 7.2.8 IsRegExp ( argument )
1111 // 7.2.5 IsConstructor ( argument )
1112
1113 // 7.2.9 SameValue(x, y)
1114 function SameValue(x, y) {
1115 if (typeof x !== typeof y) return false;
1116 switch (typeof x) {
1117 case 'undefined':
1118 return true;
1119 case 'number':
1120 if (x !== x && y !== y) return true;
1121 if (x === 0 && y === 0) return 1/x === 1/y;
1122 return x === y;
1123 case 'boolean':
1124 case 'string':
1125 case 'object':
1126 default:
1127 return x === y;
1128 }
1129 }
1130
1131 // 7.2.10 SameValueZero(x, y)
1132 function SameValueZero(x, y) {
1133 if (typeof x !== typeof y) return false;
1134 switch (typeof x) {
1135 case 'undefined':
1136 return true;
1137 case 'number':
1138 if (x !== x && y !== y) return true;
1139 return x === y;
1140 case 'boolean':
1141 case 'string':
1142 case 'object':
1143 default:
1144 return x === y;
1145 }
1146 }
1147
1148 //----------------------------------------
1149 // 7.3 Operations on Objects
1150 //----------------------------------------
1151
1152 // 7.3.1 Get (O, P)
1153 // - just use o.p or o[p]
1154
1155 // 7.3.2 GetV (V, P)
1156 function GetV(v, p) {
1157 var o = ToObject(v);
1158 return o[p];
1159 }
1160
1161 // 7.3.3 Set (O, P, V, Throw)
1162 // - just use o.p = v or o[p] = v
1163
1164
1165
1166
1167 // 7.3.9 GetMethod (O, P)
1168 function GetMethod(o, p) {
1169 var func = GetV(o, p);
1170 if (func === undefined || func === null) return undefined;
1171 if (!IsCallable(func)) throw TypeError();
1172 return func;
1173 }
1174
1175 // 7.3.10 HasProperty (O, P)
1176 function HasProperty(o, p) {
1177 while (o) {
1178 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1179 if (Type(o) !== 'object') return false;
1180 o = Object.getPrototypeOf(o);
1181 }
1182 return false;
1183 }
1184
1185 // 7.3.11 HasOwnProperty (O, P)
1186 function HasOwnProperty(o, p) {
1187 return Object.prototype.hasOwnProperty.call(o, p);
1188 }
1189
1190 //----------------------------------------
1191 // 7.4 Operations on Iterator Objects
1192 //----------------------------------------
1193
1194 // 7.4.1 GetIterator ( obj, method )
1195 function GetIterator(obj, method) {
1196 if (arguments.length < 2)
1197 method = GetMethod(obj, $$iterator);
1198 var iterator = method.call(obj);
1199 if (Type(iterator) !== 'object') throw TypeError();
1200 return iterator;
1201 }
1202
1203 // 7.4.2 IteratorNext ( iterator, value )
1204 function IteratorNext(iterator, value) {
1205 if (arguments.length < 2)
1206 var result = iterator.next();
1207 else
1208 result = iterator.next(value);
1209 if (Type(result) !== 'object') throw TypeError();
1210 return result;
1211 }
1212
1213 // 7.4.3 IteratorComplete ( iterResult )
1214 function IteratorComplete(iterResult) {
1215 console.assert(Type(iterResult) === 'object');
1216 return Boolean(iterResult.done);
1217 }
1218
1219 // 7.4.4 IteratorValue ( iterResult )
1220 function IteratorValue(iterResult) {
1221 console.assert(Type(iterResult) === 'object');
1222 return iterResult.value;
1223 }
1224
1225 // 7.4.5 IteratorStep ( iterator )
1226 function IteratorStep( iterator, value ) {
1227 var result = IteratorNext(iterator, value);
1228 var done = result['done'];
1229 if (Boolean(done) === true) return false;
1230 return result;
1231 }
1232
1233 // 7.4.6 IteratorClose( iterator, completion )
1234 function IteratorClose( iterator, completion ) {
1235 console.assert(Type(iterator) === 'object');
1236 var _return = GetMethod(iterator, 'return');
1237 if (_return === undefined) return completion;
1238 try {
1239 var innerResult = _return[iterator]();
1240 } catch (result) {
1241 // TODO: If completion.[[type]] is throw, return completion
1242 return result;
1243 }
1244 if (Type(innerResult) !== 'object') throw TypeError();
1245 return completion;
1246 }
1247
1248 // 7.4.7 CreateIterResultObject (value, done)
1249 function CreateIterResultObject(value, done) {
1250 console.assert(Type(done) === 'boolean');
1251 var obj = {};
1252 obj["value"] = value;
1253 obj["done"] = done;
1254 return obj;
1255 }
1256
1257 // 7.4.8 CreateListIterator (list)
1258 // 7.4.8.1 ListIterator next( )
1259 // 7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1260 // 7.4.9.1 CompoundIterator next( )
1261
1262 //----------------------------------------
1263 // 8 Executable Code and Execution Contexts
1264 //----------------------------------------
1265
1266 //----------------------------------------
1267 // 8.4 Jobs and Job Queues
1268 //----------------------------------------
1269
1270 // 8.4.1 EnqueueJob ( queueName, job, arguments)
1271 function EnqueueJob(queueName, job, args) {
1272 var fn = function() { job.apply(undefined, args); };
1273 enqueue(fn);
1274 }
1275
1276 // 8.4.2 NextJob result
1277 function NextJob(result) {
1278 // no-op
1279 }
1280
1281 //----------------------------------------
1282 // 9 Ordinary and Exotic Objects Behaviors
1283 //----------------------------------------
1284
1285 // 9.1.11 [[Enumerate]] ()
1286 function Enumerate(obj) {
1287 var e = [];
1288 if (Object(obj) !== obj) return e;
1289 var visited = new Set;
1290 while (obj !== null) {
1291 Object.getOwnPropertyNames(obj).forEach(function(name) {
1292 if (!visited.has(name)) {
1293 var desc = Object.getOwnPropertyDescriptor(obj, name);
1294 if (desc) {
1295 visited.add(name);
1296 if (desc.enumerable) e.push(name);
1297 }
1298 }
1299 });
1300 obj = Object.getPrototypeOf(obj);
1301 }
1302 return e[$$iterator]();
1303 }
1304
1305 // 9.1.12 [[OwnPropertyKeys]] ( )
1306 function OwnPropertyKeys(o) {
1307 return Object.getOwnPropertyNames(o);
1308 }
1309
1310 // 9.1.13 ObjectCreate(proto, internalSlotsList)
1311 function ObjectCreate(proto, internalSlotsList) {
1312 return Object.create(proto, internalSlotsList);
1313 }
1314
1315 // ---------------------------------------
1316 // 19 Fundamental Objects
1317 // ---------------------------------------
1318
1319 // ---------------------------------------
1320 // 19.1 Object Objects
1321 // ---------------------------------------
1322
1323 // 19.1.1 The Object Constructor
1324 // 19.1.1.1 Object ( [ value ] )
1325 // 19.1.2 Properties of the Object Constructor
1326 // 19.1.2.1 Object.assign ( target, ...sources )
1327 define(
1328 Object, 'assign',
1329 function assign(target, /*...*/sources) {
1330 var to = ToObject(target);
1331 if (arguments.length < 2) return to;
1332
1333 var sourcesIndex = 1;
1334 while (sourcesIndex < arguments.length) {
1335 var nextSource = arguments[sourcesIndex++];
1336 if (nextSource === undefined || nextSource === null) {
1337 var keys = [];
1338 } else {
1339 var from = ToObject(nextSource);
1340 keys = OwnPropertyKeys(from);
1341 }
1342 for (var keysIndex = 0; keysIndex < keys.length; ++keysIndex) {
1343 var nextKey = keys[keysIndex];
1344 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1345 if (desc !== undefined && desc.enumerable) {
1346 var propValue = from[nextKey];
1347 to[nextKey] = propValue;
1348 }
1349 }
1350 }
1351 return to;
1352 });
1353
1354 // 19.1.2.2 Object.create ( O [ , Properties ] )
1355 // 19.1.2.3 Object.defineProperties ( O, Properties )
1356 // 19.1.2.4 Object.defineProperty ( O, P, Attributes )
1357 // 19.1.2.5 Object.freeze ( O )
1358 // 19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1359
1360 (function() {
1361 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1362 $getOwnPropertyNames = Object.getOwnPropertyNames,
1363 $keys = Object.keys,
1364 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1365
1366 function isStringKey(k) { return !symbolForKey(k); }
1367
1368 // 19.1.2.7 Object.getOwnPropertyNames ( O )
1369 define(
1370 Object, 'getOwnPropertyNames',
1371 function getOwnPropertyNames(o) {
1372 if (Object.prototype.toString.call(o) === '[object Window]') {
1373 // Workaround for cross-realm calling by IE itself.
1374 // https://github.com/inexorabletash/polyfill/issues/96
1375 try {
1376 return $getOwnPropertyNames(o).filter(isStringKey);
1377 } catch (_) {
1378 return $window_names.slice();
1379 }
1380 }
1381 return $getOwnPropertyNames(o).filter(isStringKey);
1382 }, !nativeSymbols);
1383
1384 // 19.1.2.8 Object.getOwnPropertySymbols ( O )
1385 define(
1386 Object, 'getOwnPropertySymbols',
1387 function getOwnPropertySymbols(o) {
1388 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1389 }, !nativeSymbols);
1390
1391 // 19.1.2.14 Object.keys ( O )
1392 define(
1393 Object, 'keys',
1394 function keys(o) {
1395 return $keys(o).filter(isStringKey);
1396 }, !nativeSymbols);
1397 }());
1398
1399 // 19.1.2.9 Object.getPrototypeOf ( O )
1400 // 19.1.2.10 Object.is ( value1, value2 )
1401 define(
1402 Object, 'is',
1403 function is(value1, value2) {
1404 return SameValue(value1, value2);
1405 });
1406
1407 // 19.1.2.11 Object.isExtensible ( O )
1408 // 19.1.2.12 Object.isFrozen ( O )
1409 // 19.1.2.13 Object.isSealed ( O )
1410
1411 // 19.1.2.14 Object.keys ( O )
1412 // see above
1413
1414 // 19.1.2.15 Object.preventExtensions ( O )
1415 // 19.1.2.16 Object.prototype
1416 // 19.1.2.17 Object.seal ( O )
1417
1418 // 19.1.2.18 Object.setPrototypeOf ( O, proto )
1419 define(
1420 Object, 'setPrototypeOf',
1421 function setPrototypeOf(o, proto) {
1422 if (Type(o) !== 'object') throw TypeError();
1423 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1424 o.__proto__ = proto;
1425 return o;
1426 }
1427 );
1428
1429 // 19.1.3 Properties of the Object Prototype Object
1430 // 19.1.3.1 Object.prototype.constructor
1431 // 19.1.3.2 Object.prototype.hasOwnProperty ( V )
1432 // 19.1.3.3 Object.prototype.isPrototypeOf ( V )
1433 // 19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1434 // 19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1435 // 19.1.3.6 Object.prototype.toString ( )
1436 hook(Object.prototype, 'toString',
1437 function() {
1438 var o = strict(this);
1439 if (o === Object(o) && $$toStringTag in o) {
1440 return '[object ' + o[$$toStringTag] + ']';
1441 }
1442 return undefined;
1443 });
1444
1445 // 19.1.3.7 Object.prototype.valueOf ( )
1446 // 19.1.4 Properties of Object Instances
1447
1448 // ---------------------------------------
1449 // 19.2 Function Objects
1450 // ---------------------------------------
1451
1452 // 19.2.1 The Function Constructor
1453 // 19.2.1.1 Function ( p1, p2, … , pn, body )
1454 // 19.2.2 Properties of the Function Constructor
1455 // 19.2.2.1 Function.length
1456 // 19.2.2.2 Function.prototype
1457 // 19.2.3 Properties of the Function Prototype Object
1458 // 19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1459 // 19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1460 // 19.2.3.3 Function.prototype.call (thisArg , ...args)
1461 // 19.2.3.4 Function.prototype.constructor
1462 // 19.2.3.5 Function.prototype.toString ( )
1463 // 19.2.3.6 Function.prototype[@@hasInstance] ( V )
1464 // 19.2.4 Function Instances
1465 // 19.2.4.1 length
1466 // 19.2.4.2 name
1467 // 19.2.4.3 prototype
1468
1469 // (No polyfillable changes from ES5)
1470
1471 // ---------------------------------------
1472 // 19.3 Boolean Objects
1473 // ---------------------------------------
1474
1475 // 19.3.1 The Boolean Constructor
1476 // 19.3.1.1 Boolean ( value )
1477 // 19.3.2 Properties of the Boolean Constructor
1478 // 19.3.2.1 Boolean.prototype
1479 // 19.3.3 Properties of the Boolean Prototype Object
1480 // 19.3.3.1 Boolean.prototype.constructor
1481 // 19.3.3.2 Boolean.prototype.toString ( )
1482 // 19.3.3.3 Boolean.prototype.valueOf ( )
1483 // 19.3.4 Properties of Boolean Instances
1484
1485 // (No polyfillable changes from ES5)
1486
1487 // ---------------------------------------
1488 // 19.4 Symbol Objects
1489 // ---------------------------------------
1490
1491 // Moved earlier in this script, so that other polyfills can depend on them.
1492
1493 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1494 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1495
1496 // ---------------------------------------
1497 // 19.5 Error Objects
1498 // ---------------------------------------
1499
1500 // 19.5.1 The Error Constructor
1501 // 19.5.1.1 Error ( message )
1502 // 19.5.1.2 new Error( ...argumentsList )
1503 // 19.5.2 Properties of the Error Constructor
1504 // 19.5.2.1 Error.prototype
1505 // 19.5.3 Properties of the Error Prototype Object
1506 // 19.5.3.1 Error.prototype.constructor
1507 // 19.5.3.2 Error.prototype.message
1508 // 19.5.3.3 Error.prototype.name
1509 // 19.5.3.4 Error.prototype.toString ( )
1510 // 19.5.4 Properties of Error Instances
1511 // 19.5.5 Native Error Types Used in This Standard
1512 // 19.5.5.1 EvalError
1513 // 19.5.5.2 RangeError
1514 // 19.5.5.3 ReferenceError
1515 // 19.5.5.4 SyntaxError
1516 // 19.5.5.5 TypeError
1517 // 19.5.5.6 URIError
1518 // 19.5.6 NativeError Object Structure
1519 // 19.5.6.1 NativeError Constructors
1520 // 19.5.6.1.1 NativeError ( message )
1521 // 19.5.6.1.2 new NativeError ( ...argumentsList )
1522 // 19.5.6.2 Properties of the NativeError Constructors
1523 // 19.5.6.2.1 NativeError.prototype
1524 // 19.5.6.3 Properties of the NativeError Prototype Objects
1525 // 19.5.6.4 Properties of NativeError Instances
1526
1527 // (No polyfillable changes from ES5)
1528
1529 // ---------------------------------------
1530 // 20 Numbers and Dates
1531 // ---------------------------------------
1532
1533 // ---------------------------------------
1534 // 20.1 Number Objects
1535 // ---------------------------------------
1536
1537 // 20.1.1 The Number Constructor
1538 // 20.1.1.1 Number ( [ value ] )
1539 // 20.1.1.2 new Number ( ...argumentsList )
1540 // 20.1.2 Properties of the Number Constructor
1541
1542 // 20.1.2.1 Number.EPSILON
1543 define(
1544 Number, 'EPSILON',
1545 (function () {
1546 var next, result;
1547 for (next = 1; 1 + next !== 1; next = next / 2)
1548 result = next;
1549 return result;
1550 }()));
1551
1552 // 20.1.2.2 Number.isFinite ( number )
1553 define(
1554 Number, 'isFinite',
1555 function isFinite(number) {
1556 if (Type(number) !== 'number') return false;
1557 if (number !== number || number === +Infinity || number === -Infinity) return false;
1558 return true;
1559 });
1560
1561 // 20.1.2.3 Number.isInteger ( number )
1562 define(
1563 Number, 'isInteger',
1564 function isInteger(number) {
1565 if (Type(number) !== 'number') return false;
1566 if (number !== number || number === +Infinity || number === -Infinity) return false;
1567 var integer = ToInteger(number);
1568 if (integer !== number) return false;
1569 return true;
1570 });
1571
1572 // 20.1.2.4 Number.isNaN ( number )
1573 define(
1574 Number, 'isNaN',
1575 function isNaN(number) {
1576 if (Type(number) !== 'number') return false;
1577 if (number !== number) return true;
1578 return false;
1579 });
1580
1581 // 20.1.2.5 Number.isSafeInteger ( number )
1582 define(
1583 Number, 'isSafeInteger',
1584 function isSafeInteger(number) {
1585 if (Type(number) !== 'number') return false;
1586 if (number !== number || number === +Infinity || number === -Infinity) return false;
1587 var integer = ToInteger(number);
1588 if (integer !== number) return false;
1589 if (abs(integer) <= (0x20000000000000 - 1)) // 2^53-1
1590 return true;
1591 return false;
1592 });
1593
1594 // 20.1.2.6 Number.MAX_SAFE_INTEGER
1595 define(
1596 Number, 'MAX_SAFE_INTEGER',
1597 9007199254740991); // 2^53-1
1598
1599 // 20.1.2.7 Number.MAX_VALUE
1600
1601 // 20.1.2.8 Number.MIN_SAFE_INTEGER
1602 define(
1603 Number, 'MIN_SAFE_INTEGER',
1604 -9007199254740991); // -2^53+1
1605
1606 // 20.1.2.9 Number.MIN_VALUE
1607 // 20.1.2.10 Number.NaN
1608 // 20.1.2.11 Number.NEGATIVE_INFINITY
1609
1610 // 20.1.2.12 Number.parseFloat ( string )
1611 define(Number, 'parseFloat', $parseFloat);
1612
1613 // 20.1.2.13 Number.parseInt ( string, radix )
1614 define(Number, 'parseInt', $parseInt);
1615
1616 // 20.1.2.14 Number.POSITIVE_INFINITY
1617 // 20.1.2.15 Number.prototype
1618
1619 // 20.1.3 Properties of the Number Prototype Object
1620 // 20.1.3.1 Number.prototype.constructor
1621 // 20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1622 // 20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1623 // 20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1624 // 20.1.3.5 Number.prototype.toPrecision ( precision )
1625 // 20.1.3.6 Number.prototype.toString ( [ radix ] )
1626 // 20.1.3.7 Number.prototype.valueOf ( )
1627 // 20.1.4 Properties of Number Instances
1628
1629 // ---------------------------------------
1630 // 20.2 The Math Object
1631 // ---------------------------------------
1632
1633 // 20.2.1 Value Properties of the Math Object
1634 // 20.2.1.1 Math.E
1635 // 20.2.1.2 Math.LN10
1636 // 20.2.1.3 Math.LN2
1637 // 20.2.1.4 Math.LOG10E
1638 // 20.2.1.5 Math.LOG2E
1639 // 20.2.1.6 Math.PI
1640 // 20.2.1.7 Math.SQRT1_2
1641 // 20.2.1.8 Math.SQRT2
1642
1643 // 20.2.1.9 Math [ @@toStringTag ]
1644 define(Math, $$toStringTag, 'Math');
1645
1646 // 20.2.2 Function Properties of the Math Object
1647 // 20.2.2.1 Math.abs ( x )
1648 // 20.2.2.2 Math.acos ( x )
1649
1650 // 20.2.2.3 Math.acosh(x)
1651 define(
1652 Math, 'acosh',
1653 function acosh(x) {
1654 x = Number(x);
1655 return log(x + sqrt(x * x - 1));
1656 });
1657
1658 // 20.2.2.4 Math.asin ( x )
1659
1660 // 20.2.2.5 Math.asinh( x )
1661 define(
1662 Math, 'asinh',
1663 function asinh(x) {
1664 x = Number(x);
1665 if (SameValue(x, -0)) {
1666 return x;
1667 }
1668 var s = sqrt(x * x + 1);
1669 return (s === -x) ? log(0) : log(x + s);
1670 });
1671
1672 // 20.2.2.6 Math.atan ( x )
1673
1674 // 20.2.2.7 Math.atanh( x )
1675 define(
1676 Math, 'atanh',
1677 function atanh(x) {
1678 x = Number(x);
1679 return (x === 0) ? x : log((1 + x) / (1 - x)) / 2;
1680 });
1681
1682 // 20.2.2.8 Math.atan2 ( y, x )
1683
1684 // 20.2.2.9 Math.cbrt ( x )
1685 define(
1686 Math, 'cbrt',
1687 function cbrt(x) {
1688 x = Number(x);
1689 if ($isNaN(x/x)) {
1690 return x;
1691 }
1692 var r = pow(abs(x), 1/3);
1693 var t = x/r/r;
1694 return r + (r * (t-r) / (2*r + t));
1695 });
1696
1697 // 20.2.2.10 Math.ceil ( x )
1698
1699 // 20.2.2.11 Math.clz32 ( x )
1700 define(
1701 Math, 'clz32',
1702 function clz32(x) {
1703 function clz8(x) {
1704 return (x & 0xf0) ? (x & 0x80 ? 0 : x & 0x40 ? 1 : x & 0x20 ? 2 : 3) :
1705 (x & 0x08 ? 4 : x & 0x04 ? 5 : x & 0x02 ? 6 : x & 0x01 ? 7 : 8);
1706 }
1707 x = ToUint32(x);
1708 return x & 0xff000000 ? clz8(x >> 24) :
1709 x & 0xff0000 ? clz8(x >> 16) + 8 :
1710 x & 0xff00 ? clz8(x >> 8) + 16 : clz8(x) + 24;
1711 });
1712
1713
1714
1715 // 20.2.2.12 Math.cos ( x )
1716
1717 // 20.2.2.13 Math.cosh ( x )
1718 define(
1719 Math, 'cosh',
1720 function cosh(x) {
1721 x = Number(x);
1722 return (pow(E, x) + pow(E, -x)) / 2;
1723 });
1724
1725 // 20.2.2.14 Math.exp ( x )
1726
1727 // 20.2.2.15 Math.expm1 ( x )
1728 define(
1729 Math, 'expm1',
1730 function expm1(x) {
1731 x = Number(x);
1732 // from: http://www.johndcook.com/cpp_log1p.html
1733 if (SameValue(x, -0)) {
1734 return -0;
1735 } else if (abs(x) < 1e-5) {
1736 return x + 0.5 * x * x; // two terms of Taylor expansion
1737 } else {
1738 return exp(x) - 1;
1739 }
1740 });
1741
1742 // 20.2.2.16 Math.floor ( x )
1743
1744 // 20.2.2.17 Math.fround ( x )
1745 define(
1746 Math, 'fround',
1747 function fround(x) {
1748 if ($isNaN(x)) {
1749 return NaN;
1750 }
1751 if (1/x === +Infinity || 1/x === -Infinity || x === +Infinity || x === -Infinity) {
1752 return x;
1753 }
1754 return (new Float32Array([x]))[0];
1755 });
1756
1757 // 20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
1758 define(
1759 Math, 'hypot',
1760 function hypot() {
1761 var values = [];
1762 var m = 0, sawNaN = false;
1763 for (var i = 0; i < arguments.length; ++i) {
1764 var n = abs(Number(arguments[i]));
1765 if (n === Infinity) return n;
1766 if (n !== n) sawNaN = true;
1767 if (n > m) m = n;
1768 values[i] = n;
1769 }
1770 if (sawNaN) return NaN;
1771 if (m === 0) return +0;
1772 var sum = +0;
1773 for (i = 0; i < values.length; ++i) {
1774 var r = values[i] / m;
1775 sum = sum + r * r;
1776 }
1777 return m * sqrt(sum);
1778 });
1779
1780 // 20.2.2.19 Math.imul ( x, y )
1781 define(
1782 Math, 'imul',
1783 function imul(x, y) {
1784 var a = ToUint32(x);
1785 var b = ToUint32(y);
1786 // (slow but accurate)
1787 var ah = (a >>> 16) & 0xffff;
1788 var al = a & 0xffff;
1789 var bh = (b >>> 16) & 0xffff;
1790 var bl = b & 0xffff;
1791 return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
1792 }, ('imul' in Math && Math.imul(1, 0x80000000) === 0) // Safari 7 bug
1793 );
1794
1795 // 20.2.2.20 Math.log ( x )
1796
1797 // 20.2.2.21 Math.log1p ( x )
1798 define(
1799 Math, 'log1p',
1800 function log1p(x) {
1801 x = Number(x);
1802 // from: http://www.johndcook.com/cpp_expm1.html
1803 if (x < -1) {
1804 return NaN;
1805 } else if (SameValue(x, -0)) {
1806 return -0;
1807 } else if (abs(x) > 1e-4) {
1808 return log(1 + x);
1809 } else {
1810 return (-0.5 * x + 1) * x;
1811 }
1812 });
1813
1814 // 20.2.2.22 Math.log10 ( x )
1815 define(
1816 Math, 'log10',
1817 function log10(x) {
1818 x = Number(x);
1819 return log(x) * LOG10E;
1820 });
1821
1822 // 20.2.2.23 Math.log2 ( x )
1823 define(
1824 Math, 'log2',
1825 function log2(x) {
1826 x = Number(x);
1827 return log(x) * LOG2E;
1828 });
1829
1830 // 20.2.2.24 Math.max ( value1, value2 , ...values )
1831 // 20.2.2.25 Math.min ( value1, value2 , ...values )
1832 // 20.2.2.26 Math.pow ( x, y )
1833 // 20.2.2.27 Math.random ( )
1834 // 20.2.2.28 Math.round ( x )
1835
1836 // 20.2.2.29 Math.sign(x)
1837 define(
1838 Math, 'sign',
1839 function sign(x) {
1840 x = Number(x);
1841 return x < 0 ? -1 : x > 0 ? 1 : x;
1842 });
1843
1844 // 20.2.2.30 Math.sin ( x )
1845
1846 // 20.2.2.31 Math.sinh( x )
1847 define(
1848 Math, 'sinh',
1849 function sinh(x) {
1850 x = Number(x);
1851 return SameValue(x, -0) ? x : (pow(E, x) - pow(E, -x)) / 2;
1852 });
1853
1854 // 20.2.2.32 Math.sqrt ( x )
1855 // 20.2.2.33 Math.tan ( x )
1856
1857 // 20.2.2.34 Math.tanh ( x )
1858 define(
1859 Math, 'tanh',
1860 function tanh(x) {
1861 x = Number(x);
1862 var n = pow(E, 2 * x) - 1,
1863 d = pow(E, 2 * x) + 1;
1864 if (SameValue(x, -0))
1865 return x;
1866 return (n === d) ? 1 : n / d; // Handle Infinity/Infinity
1867 });
1868
1869 // 20.2.2.35 Math.trunc ( x )
1870 define(
1871 Math, 'trunc',
1872 function trunc(x) {
1873 x = Number(x);
1874 return $isNaN(x) ? NaN :
1875 x < 0 ? ceil(x) : floor(x);
1876 });
1877
1878 // ---------------------------------------
1879 // 20.3 Date Objects
1880 // ---------------------------------------
1881
1882 // 20.3.1 Overview of Date Objects and Definitions of Abstract Operations
1883 // 20.3.1.1 Time Values and Time Range
1884 // 20.3.1.2 Day Number and Time within Day
1885 // 20.3.1.3 Year Number
1886 // 20.3.1.4 Month Number
1887 // 20.3.1.5 Date Number
1888 // 20.3.1.6 Week Day
1889 // 20.3.1.7 Local Time Zone Adjustment
1890 // 20.3.1.8 Daylight Saving Time Adjustment
1891 // 20.3.1.9 Local Time
1892 // 20.3.1.10 Hours, Minutes, Second, and Milliseconds
1893 // 20.3.1.11 MakeTime (hour, min, sec, ms)
1894 // 20.3.1.12 MakeDay (year, month, date)
1895 // 20.3.1.13 MakeDate (day, time)
1896 // 20.3.1.14 TimeClip (time)
1897 // 20.3.1.15 Date Time String Format
1898 // 20.3.1.15.1 Extended years
1899 // 20.3.2 The Date Constructor
1900 // 20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
1901 // 20.3.2.2 Date ( value )
1902 // 20.3.2.3 Date ( )
1903 // 20.3.3 Properties of the Date Constructor
1904 // 20.3.3.1 Date.now ( )
1905 // 20.3.3.2 Date.parse (string)
1906 // 20.3.3.3 Date.prototype
1907 // 20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
1908 // 20.3.4 Properties of the Date Prototype Object
1909 // 20.3.4.1 Date.prototype.constructor
1910 // 20.3.4.2 Date.prototype.getDate ( )
1911 // 20.3.4.3 Date.prototype.getDay ( )
1912 // 20.3.4.4 Date.prototype.getFullYear ( )
1913 // 20.3.4.5 Date.prototype.getHours ( )
1914 // 20.3.4.6 Date.prototype.getMilliseconds ( )
1915 // 20.3.4.7 Date.prototype.getMinutes ( )
1916 // 20.3.4.8 Date.prototype.getMonth ( )
1917 // 20.3.4.9 Date.prototype.getSeconds ( )
1918 // 20.3.4.10 Date.prototype.getTime ( )
1919 // 20.3.4.11 Date.prototype.getTimezoneOffset ( )
1920 // 20.3.4.12 Date.prototype.getUTCDate ( )
1921 // 20.3.4.13 Date.prototype.getUTCDay ( )
1922 // 20.3.4.14 Date.prototype.getUTCFullYear ( )
1923 // 20.3.4.15 Date.prototype.getUTCHours ( )
1924 // 20.3.4.16 Date.prototype.getUTCMilliseconds ( )
1925 // 20.3.4.17 Date.prototype.getUTCMinutes ( )
1926 // 20.3.4.18 Date.prototype.getUTCMonth ( )
1927 // 20.3.4.19 Date.prototype.getUTCSeconds ( )
1928 // 20.3.4.20 Date.prototype.setDate ( date )
1929 // 20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
1930 // 20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
1931 // 20.3.4.23 Date.prototype.setMilliseconds ( ms )
1932 // 20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
1933 // 20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
1934 // 20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
1935 // 20.3.4.27 Date.prototype.setTime ( time )
1936 // 20.3.4.28 Date.prototype.setUTCDate ( date )
1937 // 20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
1938 // 20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
1939 // 20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
1940 // 20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
1941 // 20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
1942 // 20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
1943 // 20.3.4.35 Date.prototype.toDateString ( )
1944 // 20.3.4.36 Date.prototype.toISOString ( )
1945 // 20.3.4.37 Date.prototype.toJSON ( key )
1946 // 20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
1947 // 20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1948 // 20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
1949 // 20.3.4.41 Date.prototype.toString ( )
1950 // 20.3.4.42 Date.prototype.toTimeString ( )
1951 // 20.3.4.43 Date.prototype.toUTCString ( )
1952 // 20.3.4.44 Date.prototype.valueOf ( )
1953 // 20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
1954 // 20.3.5 Properties of Date Instances
1955
1956 // (No polyfillable changes from ES5)
1957
1958 // ---------------------------------------
1959 // 21 Text Processing
1960 // ---------------------------------------
1961
1962 var string_regexp_dispatch = (function() {
1963 var faux = {}, secret = Symbol();
1964 faux[Symbol.match] = function() { return secret; };
1965 return ("").match(faux) === secret;
1966 }());
1967
1968 // 21.1 String Objects
1969 // 21.1.1 The String Constructor
1970 // 21.1.1.1 String ( value )
1971 // 21.1.2 Properties of the String Constructor
1972 // 21.1.2.1 String.fromCharCode ( ...codeUnits )
1973
1974 // 21.1.2.2 String.fromCodePoint ( ...codePoints )
1975 define(
1976 String, 'fromCodePoint',
1977 function fromCodePoint(/*...codePoints*/) {
1978 var codePoints = arguments,
1979 length = codePoints.length,
1980 elements = [],
1981 nextIndex = 0;
1982 while (nextIndex < length) {
1983 var next = codePoints[nextIndex];
1984 var nextCP = Number(next);
1985 if (!SameValue(nextCP, ToInteger(nextCP)) ||
1986 nextCP < 0 || nextCP > 0x10FFFF) {
1987 throw RangeError('Invalid code point ' + nextCP);
1988 }
1989 if (nextCP < 0x10000) {
1990 elements.push(String.fromCharCode(nextCP));
1991 } else {
1992 nextCP -= 0x10000;
1993 elements.push(String.fromCharCode((nextCP >> 10) + 0xD800));
1994 elements.push(String.fromCharCode((nextCP % 0x400) + 0xDC00));
1995 }
1996 nextIndex += 1;
1997 }
1998 return elements.join('');
1999 });
2000
2001 // 21.1.2.3 String.prototype
2002
2003 // 21.1.2.4 String.raw ( template , ...substitutions )
2004 define(
2005 String, 'raw',
2006 function raw(template /*, ...substitutions*/) {
2007 var substitutions = [].slice.call(arguments, 1);
2008
2009 var cooked = Object(template);
2010 var rawValue = cooked['raw'];
2011 var raw = Object(rawValue);
2012 var len = raw['length'];
2013 var literalSegments = ToLength(len);
2014 if (literalSegments <= 0) return '';
2015 var stringElements = [];
2016 var nextIndex = 0;
2017 while (true) {
2018 var next = raw[nextIndex];
2019 var nextSeg = String(next);
2020 stringElements.push(nextSeg);
2021 if (nextIndex + 1 === literalSegments)
2022 return stringElements.join('');
2023 next = substitutions[nextIndex];
2024 var nextSub = String(next);
2025 stringElements.push(nextSub);
2026 nextIndex = nextIndex + 1;
2027 }
2028 });
2029
2030 // See https://githib.com/inexorabletash/uate for a more useful version.
2031
2032 // 21.1.3 Properties of the String Prototype Object
2033 // 21.1.3.1 String.prototype.charAt ( pos )
2034 // 21.1.3.2 String.prototype.charCodeAt ( pos )
2035
2036 // 21.1.3.3 String.prototype.codePointAt ( pos )
2037 define(
2038 String.prototype, 'codePointAt',
2039 function codePointAt(pos) {
2040 var o = strict(this);
2041 var s = String(o);
2042 var position = ToInteger(pos);
2043 var size = s.length;
2044 if (position < 0 || position >= size) return undefined;
2045 var first = s.charCodeAt(position);
2046 if (first < 0xD800 || first > 0xDBFF || position + 1 === size) return first;
2047 var second = s.charCodeAt(position + 1);
2048 if (second < 0xDC00 || second > 0xDFFF) return first;
2049 return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
2050 });
2051
2052 // 21.1.3.4 String.prototype.concat ( ...args )
2053 // 21.1.3.5 String.prototype.constructor
2054
2055 // 21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2056 define(
2057 String.prototype, 'endsWith',
2058 function endsWith(searchString) {
2059 var endPosition = arguments[1];
2060
2061 var o = strict(this);
2062 var s = String(o);
2063 var searchStr = String(searchString);
2064 var len = s.length;
2065 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2066 var end = min(max(pos, 0), len);
2067 var searchLength = searchStr.length;
2068 var start = end - searchLength;
2069 if (start < 0) return false;
2070 if (s.substring(start, start + searchLength) === searchStr) return true;
2071 return false;
2072 });
2073
2074 // 21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2075 define(
2076 String.prototype, 'includes',
2077 function includes(searchString) {
2078 var position = arguments[1];
2079
2080 var o = strict(this);
2081 var s = String(o);
2082 var searchStr = String(searchString);
2083 var pos = ToInteger(position);
2084 var len = s.length;
2085 var start = min(max(pos, 0), len);
2086 return s.indexOf(searchStr, start) !== -1;
2087 });
2088
2089 // 21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2090 // 21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2091 // 21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2092 // 21.1.3.11 String.prototype.match ( regexp )
2093 define(
2094 String.prototype, 'match',
2095 function match(regexp) {
2096 var o = strict(this);
2097 var s = String(o);
2098 if (HasProperty(regexp, $$match)) var rx = regexp;
2099 else rx = new RegExp(regexp);
2100 return rx[$$match](s);
2101 }, !string_regexp_dispatch);
2102
2103 // 21.1.3.12 String.prototype.normalize ( [ form ] )
2104
2105 // Not practical due to table sizes; if needed, pull in:
2106 // https://github.com/walling/unorm/
2107
2108 // 21.1.3.13 String.prototype.repeat ( count )
2109 define(
2110 String.prototype, 'repeat',
2111 function repeat(count) {
2112 var o = strict(this);
2113 var s = String(o);
2114 var n = ToInteger(count);
2115 if (n < 0) throw RangeError();
2116 if (n === Infinity) throw RangeError();
2117 var t = new Array(n + 1).join(s);
2118 return t;
2119 });
2120
2121 // 21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2122 define(
2123 String.prototype, 'replace',
2124 function replace(searchValue, replaceValue) {
2125 var o = strict(this);
2126 if (HasProperty(searchValue, $$replace))
2127 return searchValue[$$replace](o, replaceValue);
2128 return orig_replace.call(o, searchValue, replaceValue);
2129 }, !string_regexp_dispatch);
2130
2131 // 21.1.3.15 String.prototype.search ( regexp )
2132 define(
2133 String.prototype, 'search',
2134 function search(regexp) {
2135 var o = strict(this);
2136 var string = String(o);
2137 if (HasProperty(regexp, $$search)) var rx = regexp;
2138 else rx = new RegExp(regexp);
2139 return rx[$$search](string);
2140 }, !string_regexp_dispatch);
2141
2142 // 21.1.3.16 String.prototype.slice ( start, end )
2143 // 21.1.3.17 String.prototype.split ( separator, limit )
2144 define(
2145 String.prototype, 'split',
2146 function split(separator, limit) {
2147 var o = strict(this);
2148 if (HasProperty(separator, $$split))
2149 return separator[$$split](o, limit);
2150 return orig_split.call(o, separator, limit);
2151 }, !string_regexp_dispatch);
2152
2153 // 21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2154 define(
2155 String.prototype, 'startsWith',
2156 function startsWith(searchString) {
2157 var position = arguments[1];
2158
2159 var o = strict(this);
2160 var s = String(o);
2161 var searchStr = String(searchString);
2162 var pos = ToInteger(position);
2163 var len = s.length;
2164 var start = min(max(pos, 0), len);
2165 var searchLength = searchStr.length;
2166 if (searchLength + start > len) return false;
2167 if (s.substring(start, start + searchLength) === searchStr) return true;
2168 return false;
2169 });
2170
2171 // 21.1.3.19 String.prototype.substring ( start, end )
2172 // 21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2173 // 21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2174 // 21.1.3.22 String.prototype.toLowerCase ( )
2175 // 21.1.3.23 String.prototype.toString ( )
2176 // 21.1.3.24 String.prototype.toUpperCase ( )
2177 // 21.1.3.25 String.prototype.trim ( )
2178 // 21.1.3.26 String.prototype.valueOf ( )
2179
2180 // 21.1.3.27 String.prototype [ @@iterator ]( )
2181 define(
2182 String.prototype, $$iterator,
2183 function entries() {
2184 return CreateStringIterator(this, 'value');
2185 });
2186
2187 // 21.1.4 Properties of String Instances
2188 // 21.1.4.1 length
2189
2190 // 21.1.5 String Iterator Objects
2191 /** @constructor */
2192 function StringIterator() {}
2193
2194 // 21.1.5.1 CreateStringIterator Abstract Operation
2195 function CreateStringIterator(string, kind) {
2196 var s = String(string);
2197 var iterator = new StringIterator;
2198 set_internal(iterator, '[[IteratedString]]', s);
2199 set_internal(iterator, '[[StringIteratorNextIndex]]', 0);
2200 set_internal(iterator, '[[StringIterationKind]]', kind);
2201 return iterator;
2202 }
2203
2204 // 21.1.5.2 The %StringIteratorPrototype% Object
2205 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2206 StringIterator.prototype = $StringIteratorPrototype$;
2207
2208 // 21.1.5.2.1 %StringIteratorPrototype%.next ( )
2209 define(
2210 $StringIteratorPrototype$, 'next',
2211 function next() {
2212 var o = ToObject(this);
2213 var s = String(o['[[IteratedString]]']),
2214 index = o['[[StringIteratorNextIndex]]'],
2215 len = s.length;
2216 if (index >= len) {
2217 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2218 return CreateIterResultObject(undefined, true);
2219 }
2220 var cp = s.codePointAt(index);
2221 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp > 0xFFFF ? 2 : 1));
2222 return CreateIterResultObject(String.fromCodePoint(cp), false);
2223 });
2224
2225 // 21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2226 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2227
2228 // 21.1.5.3 Properties of String Iterator Instances
2229
2230 // ---------------------------------------
2231 // 21.2 RegExp (Regular Expression) Objects
2232 // ---------------------------------------
2233
2234 // 21.2.1 Patterns
2235 // 21.2.2 Pattern Semantics
2236 // 21.2.2.1 Notation
2237 // 21.2.2.2 Pattern
2238 // 21.2.2.3 Disjunction
2239 // 21.2.2.4 Alternative
2240 // 21.2.2.5 Term
2241 // 21.2.2.6 Assertion
2242 // 21.2.2.7 Quantifier
2243 // 21.2.2.8 Atom
2244 // 21.2.2.9 AtomEscape
2245 // 21.2.2.10 CharacterEscape
2246 // 21.2.2.11 DecimalEscape
2247 // 21.2.2.12 CharacterClassEscape
2248 // 21.2.2.13 CharacterClass
2249 // 21.2.2.14 ClassRanges
2250 // 21.2.2.15 NonemptyClassRanges
2251 // 21.2.2.16 NonemptyClassRangesNoDash
2252 // 21.2.2.17 ClassAtom
2253 // 21.2.2.18 ClassAtomNoDash
2254 // 21.2.2.19 ClassEscape
2255 // 21.2.3 The RegExp Constructor
2256 // 21.2.3.1 RegExp ( pattern, flags )
2257 // 21.2.3.2 new RegExp( ...argumentsList )
2258 // 21.2.3.3 Abstract Operations for the RegExp Constructor
2259 // 21.2.4 Properties of the RegExp Constructor
2260 // 21.2.4.1 RegExp.prototype
2261 // 21.2.5 Properties of the RegExp Prototype Object
2262 // 21.2.5.1 RegExp.prototype.constructor
2263 // 21.2.5.2 RegExp.prototype.exec ( string )
2264
2265 // 21.2.5.3 get RegExp.prototype.flags
2266 if (!('flags' in RegExp.prototype)) {
2267 Object.defineProperty(
2268 RegExp.prototype, 'flags', {
2269 get: function() {
2270 var s = String(this);
2271 return s.substring(s.lastIndexOf('/') + 1);
2272 }
2273 });
2274 }
2275
2276 // 21.2.5.4 get RegExp.prototype.global
2277 // 21.2.5.5 get RegExp.prototype.ignoreCase
2278
2279 // 21.2.5.6 RegExp.prototype [ @@match ] ( string )
2280 define(RegExp.prototype, $$match, function(string) {
2281 var o = strict(this);
2282 return orig_match.call(string, o);
2283 });
2284
2285 // 21.2.5.7 get RegExp.prototype.multiline
2286
2287 // 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2288 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2289 var o = strict(this);
2290 return orig_replace.call(string, o, replaceValue);
2291 });
2292
2293 // 21.2.5.9 RegExp.prototype [ @@search ] ( string )
2294 define(RegExp.prototype, $$search, function(string) {
2295 var o = strict(this);
2296 return orig_search.call(string, o);
2297 });
2298
2299 // 21.2.5.10 get RegExp.prototype.source
2300
2301 // 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2302 define(RegExp.prototype, $$split, function(string, limit) {
2303 var o = strict(this);
2304 return orig_split.call(string, o, limit);
2305 });
2306
2307 // 21.2.5.12 get RegExp.prototype.sticky
2308 // 21.2.5.13 RegExp.prototype.test( S )
2309 // 21.2.5.14 RegExp.prototype.toString ( )
2310 // 21.2.5.15 get RegExp.prototype.unicode
2311
2312 // 21.2.6 Properties of RegExp Instances
2313 // 21.2.6.1 lastIndex
2314
2315 // (No polyfillable changes from ES5)
2316
2317 // ---------------------------------------
2318 // 22 Indexed Collections
2319 // ---------------------------------------
2320
2321 // ---------------------------------------
2322 // 22.1 Array Objects
2323 // ---------------------------------------
2324
2325 // 22.1.1 The Array Constructor
2326 // 22.1.1.1 Array ( )
2327 // 22.1.1.2 Array (len)
2328 // 22.1.1.3 Array (...items )
2329
2330 // 22.1.2 Properties of the Array Constructor
2331
2332 // 22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2333 define(
2334 Array, 'from',
2335 function from(items) {
2336 var mapfn = arguments[1];
2337 var thisArg = arguments[2];
2338
2339 var c = strict(this);
2340 if (mapfn === undefined) {
2341 var mapping = false;
2342 } else {
2343 if (!IsCallable(mapfn)) throw TypeError();
2344 var t = thisArg;
2345 mapping = true;
2346 }
2347 var usingIterator = GetMethod(items, $$iterator);
2348 if (usingIterator !== undefined) {
2349 if (IsConstructor(c)) {
2350 var a = new c();
2351 } else {
2352 a = new Array(0);
2353 }
2354 var iterator = GetIterator(items, usingIterator);
2355 var k = 0;
2356 while (true) {
2357 var next = IteratorStep(iterator);
2358 if (next === false) {
2359 a.length = k;
2360 return a;
2361 }
2362 var nextValue = IteratorValue(next);
2363 if (mapping)
2364 var mappedValue = mapfn.call(t, nextValue);
2365 else
2366 mappedValue = nextValue;
2367 a[k] = mappedValue;
2368 k += 1;
2369 }
2370 }
2371 var arrayLike = ToObject(items);
2372 var lenValue = arrayLike.length;
2373 var len = ToLength(lenValue);
2374 if (IsConstructor(c)) {
2375 a = new c(len);
2376 } else {
2377 a = new Array(len);
2378 }
2379 k = 0;
2380 while (k < len) {
2381 var kValue = arrayLike[k];
2382 if (mapping)
2383 mappedValue = mapfn.call(t, kValue, k);
2384 else
2385 mappedValue = kValue;
2386 a[k] = mappedValue;
2387 k += 1;
2388 }
2389 a.length = len;
2390 return a;
2391 });
2392
2393 // 22.1.2.2 Array.isArray ( arg )
2394
2395 // 22.1.2.3 Array.of ( ...items )
2396 define(
2397 Array, 'of',
2398 function of() {
2399 var items = arguments;
2400
2401 var lenValue = items.length;
2402 var len = ToUint32(lenValue);
2403 var c = strict(this), a;
2404 if (IsConstructor(c)) {
2405 a = new c(len);
2406 a = ToObject(a);
2407 } else {
2408 a = new Array(len);
2409 }
2410 var k = 0;
2411 while (k < len) {
2412 a[k] = items[k];
2413 k += 1;
2414 }
2415 a.length = len;
2416 return a;
2417 });
2418
2419 // 22.1.2.4 Array.prototype
2420 // 22.1.2.5 get Array [ @@species ]
2421 // 22.1.3 Properties of the Array Prototype Object
2422 // 22.1.3.1 Array.prototype.concat ( ...arguments )
2423 // 22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2424 // 22.1.3.2 Array.prototype.constructor
2425 // 22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2426 define(
2427 Array.prototype, 'copyWithin',
2428 function copyWithin(target, start/*, end*/) {
2429 var end = arguments[2];
2430
2431 var o = ToObject(this);
2432 var lenVal = o.length;
2433 var len = ToLength(lenVal);
2434 len = max(len, 0);
2435 var relativeTarget = ToInteger(target);
2436 var to;
2437 if (relativeTarget < 0)
2438 to = max(len + relativeTarget, 0);
2439 else
2440 to = min(relativeTarget, len);
2441 var relativeStart = ToInteger(start);
2442 var from;
2443 if (relativeStart < 0)
2444 from = max(len + relativeStart, 0);
2445 else
2446 from = min(relativeStart, len);
2447 var relativeEnd;
2448 if (end === undefined)
2449 relativeEnd = len;
2450 else
2451 relativeEnd = ToInteger(end);
2452 var final;
2453 if (relativeEnd < 0)
2454 final = max(len + relativeEnd, 0);
2455 else
2456 final = min(relativeEnd, len);
2457 var count = min(final - from, len - to);
2458 var direction;
2459 if (from < to && to < from + count) {
2460 direction = -1;
2461 from = from + count - 1;
2462 to = to + count - 1;
2463 } else {
2464 direction = 1;
2465 }
2466 while (count > 0) {
2467 var fromKey = String(from);
2468 var toKey = String(to);
2469 var fromPresent = HasProperty(o, fromKey);
2470 if (fromPresent) {
2471 var fromVal = o[fromKey];
2472 o[toKey] = fromVal;
2473 } else {
2474 delete o[toKey];
2475 }
2476 from = from + direction;
2477 to = to + direction;
2478 count = count - 1;
2479 }
2480 return o;
2481 });
2482
2483 // 22.1.3.4 Array.prototype.entries ( )
2484 var nativeArrayIteratorMethods =
2485 ('entries' in Array.prototype && 'next' in [].entries());
2486
2487 define(
2488 Array.prototype, 'entries',
2489 function entries() {
2490 return CreateArrayIterator(this, 'key+value');
2491 }, !nativeArrayIteratorMethods);
2492
2493 // 22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2494
2495 // 22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2496 define(
2497 Array.prototype, 'fill',
2498 function fill(value/*, start, end*/) {
2499 var start = arguments[1],
2500 end = arguments[2];
2501
2502 var o = ToObject(this);
2503 var lenVal = o.length;
2504 var len = ToLength(lenVal);
2505 len = max(len, 0);
2506 var relativeStart = ToInteger(start);
2507 var k;
2508 if (relativeStart < 0)
2509 k = max((len + relativeStart), 0);
2510 else
2511 k = min(relativeStart, len);
2512 var relativeEnd;
2513 if (end === undefined)
2514 relativeEnd = len;
2515 else
2516 relativeEnd = ToInteger(end);
2517 var final;
2518 if (relativeEnd < 0)
2519 final = max((len + relativeEnd), 0);
2520 else
2521 final = min(relativeEnd, len);
2522 while (k < final) {
2523 var pk = String(k);
2524 o[pk] = value;
2525 k += 1;
2526 }
2527 return o;
2528 });
2529
2530 // 22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2531
2532 // 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2533 define(
2534 Array.prototype, 'find',
2535 function find(predicate) {
2536 var o = ToObject(this);
2537 var lenValue = o.length;
2538 var len = ToInteger(lenValue);
2539 if (!IsCallable(predicate)) throw TypeError();
2540 var t = arguments.length > 1 ? arguments[1] : undefined;
2541 var k = 0;
2542 while (k < len) {
2543 var pk = String(k);
2544 var kPresent = HasProperty(o, pk);
2545 if (kPresent) {
2546 var kValue = o[pk];
2547 var testResult = predicate.call(t, kValue, k, o);
2548 if (Boolean(testResult)) {
2549 return kValue;
2550 }
2551 }
2552 ++k;
2553 }
2554 return undefined;
2555 });
2556
2557 // 22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2558 define(
2559 Array.prototype, 'findIndex',
2560 function findIndex(predicate) {
2561 var o = ToObject(this);
2562 var lenValue = o.length;
2563 var len = ToLength(lenValue);
2564 if (!IsCallable(predicate)) throw TypeError();
2565 var t = arguments.length > 1 ? arguments[1] : undefined;
2566 var k = 0;
2567 while (k < len) {
2568 var pk = String(k);
2569 var kPresent = HasProperty(o, pk);
2570 if (kPresent) {
2571 var kValue = o[pk];
2572 var testResult = predicate.call(t, kValue, k, o);
2573 if (Boolean(testResult)) {
2574 return k;
2575 }
2576 }
2577 ++k;
2578 }
2579 return -1;
2580 });
2581
2582 // 22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2583 // 22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2584 // 22.1.3.12 Array.prototype.join (separator)
2585
2586 // 22.1.3.13 Array.prototype.keys ( )
2587 define(
2588 Array.prototype, 'keys',
2589 function keys() {
2590 return CreateArrayIterator(this, 'key');
2591 }, !nativeArrayIteratorMethods);
2592
2593 // 22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2594 // 22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2595 // 22.1.3.16 Array.prototype.pop ( )
2596 // 22.1.3.17 Array.prototype.push ( ...items )
2597 // 22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2598 // 22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2599 // 22.1.3.20 Array.prototype.reverse ( )
2600 // 22.1.3.21 Array.prototype.shift ( )
2601 // 22.1.3.22 Array.prototype.slice (start, end)
2602 // 22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2603 // 22.1.3.24 Array.prototype.sort (comparefn)
2604 // 22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2605 // 22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2606 // 22.1.3.27 Array.prototype.toString ( )
2607 // 22.1.3.28 Array.prototype.unshift ( ...items )
2608
2609 // 22.1.3.29 Array.prototype.values ( )
2610 define(
2611 Array.prototype, 'values',
2612 function values() {
2613 return CreateArrayIterator(this, 'value');
2614 }, !nativeArrayIteratorMethods);
2615
2616 // 22.1.3.30 Array.prototype [ @@iterator ] ( )
2617 define(
2618 Array.prototype, $$iterator,
2619 Array.prototype.values
2620 );
2621
2622 // 22.1.3.31 Array.prototype [ @@unscopables ]
2623 // 22.1.4 Properties of Array Instances
2624 // 22.1.4.1 length
2625
2626 // 22.1.5 Array Iterator Objects
2627 function ArrayIterator() {}
2628
2629 // 22.1.5.1 CreateArrayIterator Abstract Operation
2630 function CreateArrayIterator(array, kind) {
2631 var o = ToObject(array);
2632 var iterator = new ArrayIterator;
2633 set_internal(iterator, '[[IteratedObject]]', o);
2634 set_internal(iterator, '[[ArrayIteratorNextIndex]]', 0);
2635 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2636 return iterator;
2637 }
2638
2639 // 22.1.5.2 The %ArrayIteratorPrototype% Object
2640 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
2641 ArrayIterator.prototype = $ArrayIteratorPrototype$;
2642
2643 // 22.1.5.2.1 %ArrayIteratorPrototype%. next( )
2644 define(
2645 $ArrayIteratorPrototype$, 'next',
2646 function next() {
2647 var o = strict(this);
2648 if (Type(o) !== 'object') throw TypeError();
2649 var a = o['[[IteratedObject]]'],
2650 index = o['[[ArrayIteratorNextIndex]]'],
2651 itemKind = o['[[ArrayIterationKind]]'],
2652 lenValue = a.length,
2653 len = ToUint32(lenValue),
2654 elementKey,
2655 elementValue;
2656 if (itemKind.indexOf('sparse') !== -1) {
2657 var found = false;
2658 while (!found && index < len) {
2659 elementKey = String(index);
2660 found = HasProperty(a, elementKey);
2661 if (!found) {
2662 index += 1;
2663 }
2664 }
2665 }
2666 if (index >= len) {
2667 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
2668 return CreateIterResultObject(undefined, true);
2669 }
2670 elementKey = index;
2671 set_internal(o, '[[ArrayIteratorNextIndex]]', index + 1);
2672 if (itemKind.indexOf('value') !== -1)
2673 elementValue = a[elementKey];
2674 if (itemKind.indexOf('key+value') !== -1)
2675 return CreateIterResultObject([elementKey, elementValue], false);
2676 if (itemKind.indexOf('key') !== -1)
2677 return CreateIterResultObject(elementKey, false);
2678 if (itemKind === 'value')
2679 return CreateIterResultObject(elementValue, false);
2680 throw Error('Internal error');
2681 });
2682
2683 // 22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
2684 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
2685
2686 // 22.1.5.3 Properties of Array Iterator Instances
2687
2688
2689 // ---------------------------------------
2690 // 22.2 TypedArray Objects
2691 // ---------------------------------------
2692
2693 // See typedarray.js for TypedArray polyfill
2694
2695 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
2696 'Int16Array', 'Uint16Array',
2697 'Int32Array', 'Uint32Array',
2698 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
2699 if (!($TypedArrayName$ in global))
2700 return;
2701 var $TypedArray$ = global[$TypedArrayName$];
2702
2703 // 22.2.1 The %TypedArray% Intrinsic Object
2704 // 22.2.1.1 %TypedArray% ( length )
2705 // 22.2.1.2 %TypedArray% ( typedArray )
2706 // 22.2.1.3 %TypedArray% ( object )
2707 // 22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
2708 // 22.2.1.5 %TypedArray% ( all other argument combinations )
2709 // 22.2.2 Properties of the %TypedArray% Intrinsic Object
2710
2711 // 22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
2712 define(
2713 $TypedArray$, 'from',
2714 function from(source) {
2715 var mapfn = arguments[1];
2716 var thisArg = arguments[2];
2717
2718 var c = strict(this);
2719 if (!IsConstructor(c)) throw TypeError();
2720 if (mapfn === undefined) {
2721 var mapping = false;
2722 } else {
2723 if (IsCallable(mapfn)) throw TypeError();
2724 var t = thisArg;
2725 mapping = true;
2726 }
2727 var usingIterator = GetMethod(source, $$iterator);
2728 if (usingIterator !== undefined) {
2729 var iterator = GetIterator(source, usingIterator);
2730 var values = [];
2731 var next = true;
2732 while (next !== false) {
2733 next = IteratorStep(iterator);
2734 if (next !== false) {
2735 var nextValue = IteratorValue(next);
2736 values.push(nextValue);
2737 }
2738 }
2739 var len = values.length;
2740 var newObj = new c(len);
2741 var k = 0;
2742 while (k < len) {
2743 var kValue = values.shift();
2744 if (mapping) {
2745 var mappedValue = mapfn.call(t, kValue);
2746 } else {
2747 mappedValue = kValue;
2748 }
2749 newObj[k] = mappedValue;
2750 ++k;
2751 }
2752 console.assert(values.length === 0);
2753 return newObj;
2754 }
2755 var arrayLike = ToObject(source);
2756 var lenValue = arrayLike.length;
2757 len = ToLength(lenValue);
2758 newObj = new c(len);
2759 k = 0;
2760 while (k < len) {
2761 kValue = arrayLike[k];
2762 if (mapping) {
2763 mappedValue = mapfn.call(t, kValue, k);
2764 } else {
2765 mappedValue = kValue;
2766 }
2767 newObj[k] = mappedValue;
2768 ++k;
2769 }
2770 return newObj;
2771 });
2772
2773 // 22.2.2.2 %TypedArray%.of ( ...items )
2774 define(
2775 $TypedArray$, 'of',
2776 function of() {
2777 var items = arguments;
2778
2779 var len = items.length;
2780 var c = strict(this);
2781 var newObj = new c(len);
2782 var k = 0;
2783 while (k < len) {
2784 newObj[k] = items[k];
2785 ++k;
2786 }
2787 return newObj;
2788 });
2789
2790 // 22.2.2.3 %TypedArray%.prototype
2791 // 22.2.2.4 get %TypedArray% [ @@species ]
2792 // 22.2.3 Properties of the %TypedArrayPrototype% Object
2793 // 22.2.3.1 get %TypedArray%.prototype.buffer
2794 // 22.2.3.2 get %TypedArray%.prototype.byteLength
2795 // 22.2.3.3 get %TypedArray%.prototype.byteOffset
2796 // 22.2.3.4 %TypedArray%.prototype.constructor
2797
2798 // 22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
2799 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
2800
2801 // 22.2.3.6 %TypedArray%.prototype.entries ( )
2802 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
2803
2804 // 22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
2805 define($TypedArray$.prototype, 'every', Array.prototype.every);
2806
2807 // 22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
2808 define(
2809 $TypedArray$.prototype, 'fill',
2810 //Array.prototype.fill // Doesn't work in Safari 7
2811 function fill(value/*, start, end*/) {
2812 var start = arguments[1],
2813 end = arguments[2];
2814
2815 var o = ToObject(this);
2816 var lenVal = o.length;
2817 var len = ToLength(lenVal);
2818 len = max(len, 0);
2819 var relativeStart = ToInteger(start);
2820 var k;
2821 if (relativeStart < 0) k = max((len + relativeStart), 0);
2822 else k = min(relativeStart, len);
2823 var relativeEnd;
2824 if (end === undefined) relativeEnd = len;
2825 else relativeEnd = ToInteger(end);
2826 var final;
2827 if (relativeEnd < 0) final = max((len + relativeEnd), 0);
2828 else final = min(relativeEnd, len);
2829 while (k < final) {
2830 var pk = String(k);
2831 o[pk] = value;
2832 k += 1;
2833 }
2834 return o;
2835 });
2836
2837 // 22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
2838 define(
2839 $TypedArray$.prototype, 'filter',
2840 function filter(callbackfn) {
2841 var thisArg = arguments[1];
2842
2843 var o = ToObject(this);
2844 var lenVal = o.length;
2845 var len = ToLength(lenVal);
2846 if (!IsCallable(callbackfn)) throw TypeError();
2847 var t = thisArg;
2848 var c = o.constructor;
2849 var kept = [];
2850 var k = 0;
2851 var captured = 0;
2852 while (k < len) {
2853 var kValue = o[k];
2854 var selected = callbackfn.call(t, kValue, k, o);
2855 if (selected) {
2856 kept.push(kValue);
2857 ++captured;
2858 }
2859 ++k;
2860 }
2861 var a = new c(captured);
2862 var n = 0;
2863 for (var i = 0; i < kept.length; ++i) {
2864 var e = kept[i];
2865 a[n] = e;
2866 ++n;
2867 }
2868 return a;
2869 });
2870
2871 // 22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
2872 define($TypedArray$.prototype, 'find', Array.prototype.find);
2873
2874 // 22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
2875 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
2876
2877 // 22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
2878 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
2879
2880 // 22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
2881 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
2882
2883 // 22.2.3.14 %TypedArray%.prototype.join ( separator )
2884 define($TypedArray$.prototype, 'join', Array.prototype.join);
2885
2886 // 22.2.3.15 %TypedArray%.prototype.keys ( )
2887 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
2888
2889 // 22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2890 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
2891
2892 // 22.2.3.17 get %TypedArray%.prototype.length
2893
2894 // 22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
2895 define(
2896 $TypedArray$.prototype, 'map',
2897 function map(callbackfn) {
2898 var thisArg = arguments[1];
2899
2900 var o = ToObject(this);
2901 var lenValue = o.length;
2902 var len = ToLength(lenValue);
2903 if (!IsCallable(callbackfn)) throw TypeError();
2904 var t = thisArg;
2905 var a = undefined;
2906 var c = o.constructor;
2907 if (IsConstructor(c))
2908 a = new c(len);
2909 if (a === undefined)
2910 a = new Array(len);
2911 var k = 0;
2912 while (k < len) {
2913 var kPresent = HasProperty(o, k);
2914 if (kPresent) {
2915 var kValue = o[k];
2916 var mappedValue = callbackfn.call(t, kValue, k, o);
2917 a[k] = mappedValue;
2918 }
2919 ++k;
2920 }
2921 return a;
2922 });
2923
2924 // 22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
2925 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
2926
2927 // 22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
2928 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
2929
2930 // 22.2.3.21 %TypedArray%.prototype.reverse ( )
2931 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
2932
2933 // 22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
2934 // 22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
2935 // 22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
2936
2937 // 22.2.3.23 %TypedArray%.prototype.slice ( start, end )
2938 define(
2939 $TypedArray$.prototype, 'slice',
2940 function slice(start, end) {
2941 var o = ToObject(this);
2942 var lenVal = o.length;
2943 var len = ToLength(lenVal);
2944 var relativeStart = ToInteger(start);
2945 var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
2946 var relativeEnd = (end === undefined) ? len : ToInteger(end);
2947 var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
2948 var count = final - k;
2949 var c = o.constructor;
2950 if (IsConstructor(c)) {
2951 var a = new c(count);
2952 } else {
2953 throw TypeError();
2954 }
2955 var n = 0;
2956 while (k < final) {
2957 var kValue = o[k];
2958 a[n] = kValue;
2959 ++k;
2960 ++n;
2961 }
2962 return a;
2963 });
2964
2965 // 22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
2966 define($TypedArray$.prototype, 'some', Array.prototype.some);
2967
2968 // 22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
2969 define(
2970 $TypedArray$.prototype, 'sort',
2971 function sort() {
2972 var comparefn = arguments[0];
2973
2974 function sortCompare(x, y) {
2975 console.assert(Type(x) === 'number' && Type(y) === 'number');
2976 if (x !== x && y !== y) return +0;
2977 if (x !== x) return 1;
2978 if (y !== y) return -1;
2979 if (comparefn !== undefined) {
2980 return comparefn(x, y);
2981 }
2982 if (x < y) return -1;
2983 if (x > y) return 1;
2984 return +0;
2985 }
2986 return Array.prototype.sort.call(this, sortCompare);
2987 });
2988
2989 // 22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
2990 // 22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
2991 // 22.2.3.28 %TypedArray%.prototype.toString ( )
2992
2993 // 22.2.3.29 %TypedArray%.prototype.values ( )
2994 define($TypedArray$.prototype, 'values', Array.prototype.values);
2995
2996 // 22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
2997 define(
2998 $TypedArray$.prototype, $$iterator,
2999 $TypedArray$.prototype.values
3000 );
3001
3002 // 22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3003 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3004
3005 // 22.2.4 The TypedArray Constructors
3006 // 22.2.4.1TypedArray( ... argumentsList)
3007 // 22.2.5 Properties of the TypedArray Constructors
3008 // 22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3009 // 22.2.5.2 TypedArray.prototype
3010 // 22.2.6 Properties of TypedArray Prototype Objects
3011 // 22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3012 // 22.2.6.2 TypedArray.prototype.constructor
3013 // 22.2.7 Properties of TypedArray Instances
3014 });
3015
3016 // ---------------------------------------
3017 // 23 Keyed Collection
3018 // ---------------------------------------
3019
3020 // ---------------------------------------
3021 // 23.1 Map Objects
3022 // ---------------------------------------
3023
3024 (function() {
3025 // 23.1.1 The Map Constructor
3026
3027 // 23.1.1.1 Map ( [ iterable ] )
3028 /** @constructor */
3029 function Map(/*iterable*/) {
3030 var map = strict(this);
3031 var iterable = arguments[0];
3032
3033 if (Type(map) !== 'object') throw TypeError();
3034 if ('[[MapData]]' in map) throw TypeError();
3035
3036 if (iterable !== undefined) {
3037 var adder = map['set'];
3038 if (!IsCallable(adder)) throw TypeError();
3039 var iter = GetIterator(ToObject(iterable));
3040 }
3041 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3042 if (iter === undefined) return map;
3043 while (true) {
3044 var next = IteratorStep(iter);
3045 if (next === false)
3046 return map;
3047 var nextItem = IteratorValue(next);
3048 if (Type(nextItem) !== 'object') throw TypeError();
3049 var k = nextItem[0];
3050 var v = nextItem[1];
3051 adder.call(map, k, v);
3052 }
3053
3054 return map;
3055 }
3056
3057 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3058 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3059 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3060 (new global.Map([['a', 1]]).size !== 1))
3061 global.Map = Map;
3062
3063
3064 function MapDataIndexOf(mapData, key) {
3065 var i;
3066 if (key === key) return mapData.keys.indexOf(key);
3067 // Slow case for NaN
3068 for (i = 0; i < mapData.keys.length; i += 1)
3069 if (SameValueZero(mapData.keys[i], key)) return i;
3070 return -1;
3071 }
3072
3073 // 23.1.1.2 new Map ( ... argumentsList )
3074 // 23.1.2 Properties of the Map Constructor
3075 // 23.1.2.1 Map.prototype
3076 var $MapPrototype$ = {};
3077 Map.prototype = $MapPrototype$;
3078
3079 // 23.1.2.2 get Map [ @@species ]
3080
3081 // 23.1.3 Properties of the Map Prototype Object
3082 // 23.1.3.1 Map.prototype.clear ()
3083 define(
3084 Map.prototype, 'clear',
3085 function clear() {
3086 var m = strict(this);
3087 if (Type(m) !== 'object') throw TypeError();
3088 if (!('[[MapData]]' in m)) throw TypeError();
3089 if (m['[[MapData]]'] === undefined) throw TypeError();
3090 var entries = m['[[MapData]]'];
3091 entries.keys.length = 0;
3092 entries.values.length = 0;
3093 return undefined;
3094 });
3095
3096 // 23.1.3.2 Map.prototype.constructor
3097
3098 // 23.1.3.3 Map.prototype.delete ( key )
3099 define(
3100 Map.prototype, 'delete',
3101 function delete_(key) {
3102 var m = strict(this);
3103 if (Type(m) !== 'object') throw TypeError();
3104 if (!('[[MapData]]' in m)) throw TypeError();
3105 if (m['[[MapData]]'] === undefined) throw TypeError();
3106 var entries = m['[[MapData]]'];
3107 var i = MapDataIndexOf(entries, key);
3108 if (i < 0) return false;
3109 entries.keys[i] = empty;
3110 entries.values[i] = empty;
3111 return true;
3112 });
3113
3114 // 23.1.3.4 Map.prototype.entries ( )
3115 define(
3116 Map.prototype, 'entries',
3117 function entries() {
3118 var m = strict(this);
3119 if (Type(m) !== 'object') throw TypeError();
3120 return CreateMapIterator(m, 'key+value');
3121 });
3122
3123 // 23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3124 define(
3125 Map.prototype, 'forEach',
3126 function forEach(callbackfn /*, thisArg*/) {
3127 var thisArg = arguments[1];
3128
3129 var m = strict(this);
3130 if (Type(m) !== 'object') throw TypeError();
3131 if (!('[[MapData]]' in m)) throw TypeError();
3132 if (m['[[MapData]]'] === undefined) throw TypeError();
3133 var entries = m['[[MapData]]'];
3134
3135 if (!IsCallable(callbackfn)) {
3136 throw TypeError('First argument to forEach is not callable.');
3137 }
3138 for (var i = 0; i < entries.keys.length; ++i) {
3139 if (entries.keys[i] !== empty) {
3140 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3141 }
3142 }
3143 return undefined;
3144 });
3145
3146 // 23.1.3.6 Map.prototype.get ( key )
3147 define(
3148 Map.prototype, 'get',
3149 function get(key) {
3150 var m = strict(this);
3151 if (Type(m) !== 'object') throw TypeError();
3152 if (!('[[MapData]]' in m)) throw TypeError();
3153 if (m['[[MapData]]'] === undefined) throw TypeError();
3154 var entries = m['[[MapData]]'];
3155 var i = MapDataIndexOf(entries, key);
3156 if (i >= 0) return entries.values[i];
3157 return undefined;
3158 });
3159
3160 // 23.1.3.7 Map.prototype.has ( key )
3161 define(
3162 Map.prototype, 'has',
3163 function has(key) {
3164 var m = strict(this);
3165 if (Type(m) !== 'object') throw TypeError();
3166 if (!('[[MapData]]' in m)) throw TypeError();
3167 if (m['[[MapData]]'] === undefined) throw TypeError();
3168 var entries = m['[[MapData]]'];
3169 if (MapDataIndexOf(entries, key) >= 0) return true;
3170 return false;
3171 });
3172
3173 // 23.1.3.8 Map.prototype.keys ( )
3174 define(
3175 Map.prototype, 'keys',
3176 function keys() {
3177 var m = strict(this);
3178 if (Type(m) !== 'object') throw TypeError();
3179 return CreateMapIterator(m, 'key');
3180 });
3181
3182 // 23.1.3.9 Map.prototype.set ( key , value )
3183 define(
3184 Map.prototype, 'set',
3185 function set(key, value) {
3186 var m = strict(this);
3187 if (Type(m) !== 'object') throw TypeError();
3188 if (!('[[MapData]]' in m)) throw TypeError();
3189 if (m['[[MapData]]'] === undefined) throw TypeError();
3190 var entries = m['[[MapData]]'];
3191 var i = MapDataIndexOf(entries, key);
3192 if (i < 0) i = entries.keys.length;
3193 if (SameValue(key, -0)) key = 0;
3194 entries.keys[i] = key;
3195 entries.values[i] = value;
3196 return m;
3197 });
3198
3199 // 23.1.3.10 get Map.prototype.size
3200 Object.defineProperty(
3201 Map.prototype, 'size', {
3202 get: function() {
3203 var m = strict(this);
3204 if (Type(m) !== 'object') throw TypeError();
3205 if (!('[[MapData]]' in m)) throw TypeError();
3206 if (m['[[MapData]]'] === undefined) throw TypeError();
3207 var entries = m['[[MapData]]'];
3208 var count = 0;
3209 for (var i = 0; i < entries.keys.length; ++i) {
3210 if (entries.keys[i] !== empty)
3211 count = count + 1;
3212 }
3213 return count;
3214 }
3215 });
3216
3217 // 23.1.3.11 Map.prototype.values ( )
3218 define(
3219 Map.prototype, 'values',
3220 function values() {
3221 var m = strict(this);
3222 if (Type(m) !== 'object') throw TypeError();
3223 return CreateMapIterator(m, 'value');
3224 });
3225
3226 // 23.1.3.12 Map.prototype [ @@iterator ]( )
3227 define(
3228 Map.prototype, $$iterator,
3229 function() {
3230 var m = strict(this);
3231 if (Type(m) !== 'object') throw TypeError();
3232 return CreateMapIterator(m, 'key+value');
3233 });
3234
3235 // 23.1.3.13 Map.prototype [ @@toStringTag ]
3236 define(global.Map.prototype, $$toStringTag, 'Map');
3237
3238 // 23.1.4 Properties of Map Instances
3239 // 23.1.5 Map Iterator Objects
3240
3241 /** @constructor */
3242 function MapIterator() {}
3243
3244 // 23.1.5.1 CreateMapIterator Abstract Operation
3245 function CreateMapIterator(map, kind) {
3246 if (Type(map) !== 'object') throw TypeError();
3247 if (!('[[MapData]]' in map)) throw TypeError();
3248 if (map['[[MapData]]'] === undefined) throw TypeError();
3249 var iterator = new MapIterator;
3250 set_internal(iterator, '[[Map]]', map);
3251 set_internal(iterator, '[[MapNextIndex]]', 0);
3252 set_internal(iterator, '[[MapIterationKind]]', kind);
3253 return iterator;
3254 }
3255
3256 // 23.1.5.2 The %MapIteratorPrototype% Object
3257 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3258 MapIterator.prototype = $MapIteratorPrototype$;
3259
3260 // 23.1.5.2.1 %MapIteratorPrototype%.next ( )
3261 define(
3262 $MapIteratorPrototype$, 'next',
3263 function next() {
3264 var o = strict(this);
3265 if (Type(o) !== 'object') throw TypeError();
3266 var m = o['[[Map]]'],
3267 index = o['[[MapNextIndex]]'],
3268 itemKind = o['[[MapIterationKind]]'],
3269 entries = m['[[MapData]]'];
3270 while (index < entries.keys.length) {
3271 var e = {key: entries.keys[index], value: entries.values[index]};
3272 index = index += 1;
3273 set_internal(o, '[[MapNextIndex]]', index);
3274 if (e.key !== empty) {
3275 if (itemKind === 'key') {
3276 return CreateIterResultObject(e.key, false);
3277 } else if (itemKind === 'value') {
3278 return CreateIterResultObject(e.value, false);
3279 } else {
3280 return CreateIterResultObject([e.key, e.value], false);
3281 }
3282 }
3283 }
3284 return CreateIterResultObject(undefined, true);
3285 });
3286
3287 // 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3288 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3289
3290 // 23.1.5.3 Properties of Map Iterator Instances
3291 }());
3292
3293 // ---------------------------------------
3294 // 23.2 Set Objects
3295 // ---------------------------------------
3296
3297 (function() {
3298 // 23.2.1 The Set Constructor
3299 // 23.2.1.1 Set ( [ iterable ] )
3300
3301 /** @constructor */
3302 function Set(/*iterable*/) {
3303 var set = strict(this);
3304 var iterable = arguments[0];
3305
3306 if (Type(set) !== 'object') throw TypeError();
3307 if ('[[SetData]]' in set) throw TypeError();
3308
3309 if (iterable !== undefined) {
3310 var adder = set['add'];
3311 if (!IsCallable(adder)) throw TypeError();
3312 var iter = GetIterator(ToObject(iterable));
3313 }
3314 set_internal(set, '[[SetData]]', []);
3315 if (iter === undefined) return set;
3316 while (true) {
3317 var next = IteratorStep(iter);
3318 if (next === false)
3319 return set;
3320 var nextValue = IteratorValue(next);
3321 adder.call(set, nextValue);
3322 }
3323
3324 return set;
3325 }
3326
3327 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3328 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3329 (new global.Set([1]).size !== 1))
3330 global.Set = Set;
3331
3332 function SetDataIndexOf(setData, key) {
3333 var i;
3334 if (key === key)
3335 return setData.indexOf(key);
3336 // Slow case for NaN
3337 for (i = 0; i < setData.length; i += 1)
3338 if (SameValueZero(setData[i], key)) return i;
3339 return -1;
3340 }
3341
3342 // 23.2.1.2 new Set ( ...argumentsList )
3343 // 23.2.2 Properties of the Set Constructor
3344
3345 // 23.2.2.1 Set.prototype
3346 var $SetPrototype$ = {};
3347 Set.prototype = $SetPrototype$;
3348
3349 // 23.2.2.2 get Set [ @@species ]
3350 // 23.2.3 Properties of the Set Prototype Object
3351
3352 // 23.2.3.1 Set.prototype.add (value )
3353 define(
3354 Set.prototype, 'add',
3355 function add(value) {
3356 var s = strict(this);
3357 if (Type(s) !== 'object') throw TypeError();
3358 if (!('[[SetData]]' in s)) throw TypeError();
3359 if (s['[[SetData]]'] === undefined) throw TypeError();
3360 if (SameValue(value, -0)) value = 0;
3361 var entries = s['[[SetData]]'];
3362 var i = SetDataIndexOf(entries, value);
3363 if (i < 0) i = s['[[SetData]]'].length;
3364 s['[[SetData]]'][i] = value;
3365
3366 return s;
3367 });
3368
3369 // 23.2.3.2 Set.prototype.clear ()
3370 define(
3371 Set.prototype, 'clear',
3372 function clear() {
3373 var s = strict(this);
3374 if (Type(s) !== 'object') throw TypeError();
3375 if (!('[[SetData]]' in s)) throw TypeError();
3376 if (s['[[SetData]]'] === undefined) throw TypeError();
3377 var entries = s['[[SetData]]'];
3378 entries.length = 0;
3379 return undefined;
3380 });
3381
3382 // 23.2.3.3 Set.prototype.constructor
3383 // 23.2.3.4 Set.prototype.delete ( value )
3384 define(
3385 Set.prototype, 'delete',
3386 function delete_(value) {
3387 var s = strict(this);
3388 if (Type(s) !== 'object') throw TypeError();
3389 if (!('[[SetData]]' in s)) throw TypeError();
3390 if (s['[[SetData]]'] === undefined) throw TypeError();
3391 var entries = s['[[SetData]]'];
3392 var i = SetDataIndexOf(entries, value);
3393 if (i < 0) return false;
3394 entries[i] = empty;
3395 return true;
3396 });
3397
3398 // 23.2.3.5 Set.prototype.entries ( )
3399 define(
3400 Set.prototype, 'entries',
3401 function entries() {
3402 var s = strict(this);
3403 if (Type(s) !== 'object') throw TypeError();
3404 return CreateSetIterator(s, 'key+value');
3405 });
3406
3407 // 23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3408 define(
3409 Set.prototype, 'forEach',
3410 function forEach(callbackfn/*, thisArg*/) {
3411 var thisArg = arguments[1];
3412
3413 var s = strict(this);
3414 if (Type(s) !== 'object') throw TypeError();
3415 if (!('[[SetData]]' in s)) throw TypeError();
3416 if (s['[[SetData]]'] === undefined) throw TypeError();
3417 var entries = s['[[SetData]]'];
3418
3419 if (!IsCallable(callbackfn)) {
3420 throw TypeError('First argument to forEach is not callable.');
3421 }
3422 for (var i = 0; i < entries.length; ++i) {
3423 if (entries[i] !== empty) {
3424 callbackfn.call(thisArg, entries[i], entries[i], s);
3425 }
3426 }
3427 });
3428
3429 // 23.2.3.7 Set.prototype.has ( value )
3430 define(
3431 Set.prototype, 'has',
3432 function has(key) {
3433 var s = strict(this);
3434 if (Type(s) !== 'object') throw TypeError();
3435 if (!('[[SetData]]' in s)) throw TypeError();
3436 if (s['[[SetData]]'] === undefined) throw TypeError();
3437 var entries = s['[[SetData]]'];
3438 return SetDataIndexOf(entries, key) !== -1;
3439 });
3440
3441 // 23.2.3.8 Set.prototype.keys ( )
3442 // See Set.prototype.values
3443
3444 // 23.2.3.9 get Set.prototype.size
3445 Object.defineProperty(
3446 Set.prototype, 'size', {
3447 get: function() {
3448 var s = strict(this);
3449 if (Type(s) !== 'object') throw TypeError();
3450 if (!('[[SetData]]' in s)) throw TypeError();
3451 if (s['[[SetData]]'] === undefined) throw TypeError();
3452 var entries = s['[[SetData]]'];
3453 var count = 0;
3454 for (var i = 0; i < entries.length; ++i) {
3455 if (entries[i] !== empty)
3456 count = count + 1;
3457 }
3458 return count;
3459 }
3460 });
3461
3462 // 23.2.3.10 Set.prototype.values ( )
3463 define(
3464 Set.prototype, 'values',
3465 function values() {
3466 var s = strict(this);
3467 if (Type(s) !== 'object') throw TypeError();
3468 return CreateSetIterator(s, 'value');
3469 });
3470 // NOTE: function name is still 'values':
3471 Set.prototype.keys = Set.prototype.values;
3472
3473 // 23.2.3.11 Set.prototype [@@iterator ] ( )
3474 define(
3475 Set.prototype, $$iterator,
3476 function() {
3477 var s = strict(this);
3478 if (Type(s) !== 'object') throw TypeError();
3479 return CreateSetIterator(s);
3480 });
3481
3482 // 23.2.3.12 Set.prototype [ @@toStringTag ]
3483 define(global.Set.prototype, $$toStringTag, 'Set');
3484
3485 // 23.2.4 Properties of Set Instances
3486 // 23.2.5 Set Iterator Objects
3487 /** @constructor */
3488 function SetIterator() {}
3489
3490 // 23.2.5.1 CreateSetIterator Abstract Operation
3491 function CreateSetIterator(set, kind) {
3492 if (Type(set) !== 'object') throw TypeError();
3493 if (!('[[SetData]]' in set)) throw TypeError();
3494 if (set['[[SetData]]'] === undefined) throw TypeError();
3495 var iterator = new SetIterator;
3496 set_internal(iterator, '[[IteratedSet]]', set);
3497 set_internal(iterator, '[[SetNextIndex]]', 0);
3498 set_internal(iterator, '[[SetIterationKind]]', kind);
3499 return iterator;
3500 }
3501
3502 // 23.2.5.2 The %SetIteratorPrototype% Object
3503 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3504 SetIterator.prototype = $SetIteratorPrototype$;
3505
3506 // 23.2.5.2.1 %SetIteratorPrototype%.next( )
3507 define(
3508 $SetIteratorPrototype$, 'next',
3509 function next() {
3510 var o = strict(this);
3511 if (Type(o) !== 'object') throw TypeError();
3512 var s = o['[[IteratedSet]]'],
3513 index = o['[[SetNextIndex]]'],
3514 itemKind = o['[[SetIterationKind]]'],
3515 entries = s['[[SetData]]'];
3516 while (index < entries.length) {
3517 var e = entries[index];
3518 index = index += 1;
3519 set_internal(o, '[[SetNextIndex]]', index);
3520 if (e !== empty) {
3521 if (itemKind === 'key+value')
3522 return CreateIterResultObject([e, e], false);
3523 return CreateIterResultObject(e, false);
3524 }
3525 }
3526 return CreateIterResultObject(undefined, true);
3527 });
3528
3529 // 23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3530 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3531
3532 // 23.2.5.3 Properties of Set Iterator Instances
3533
3534 }());
3535
3536 // ---------------------------------------
3537 // 23.3 WeakMap Objects
3538 // ---------------------------------------
3539
3540 (function() {
3541 // 23.3.1 The WeakMap Constructor
3542 // 23.3.1.1 WeakMap ( [ iterable ] )
3543 /** @constructor */
3544 function WeakMap(/*iterable*/) {
3545 var map = strict(this);
3546 var iterable = arguments[0];
3547
3548 if (Type(map) !== 'object') throw TypeError();
3549 if ('[[WeakMapData]]' in map) throw TypeError();
3550
3551 if (iterable !== undefined) {
3552 var adder = map['set'];
3553 if (!IsCallable(adder)) throw TypeError();
3554 var iter = GetIterator(ToObject(iterable));
3555 }
3556 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3557 if (iter === undefined) return map;
3558 while (true) {
3559 var next = IteratorStep(iter);
3560 if (next === false)
3561 return map;
3562 var nextValue = IteratorValue(next);
3563 if (Type(nextValue) !== 'object') throw TypeError();
3564 var k = nextValue[0];
3565 var v = nextValue[1];
3566 adder.call(map, k, v);
3567 }
3568
3569 return map;
3570 }
3571
3572 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3573 global.WeakMap = WeakMap;
3574
3575 // 23.3.2 Properties of the WeakMap Constructor
3576 // 23.3.2.1 WeakMap.prototype
3577 var $WeakMapPrototype$ = {};
3578 WeakMap.prototype = $WeakMapPrototype$;
3579
3580
3581
3582 // 23.3.2.2 WeakMap[ @@create ] ( )
3583 // 23.3.3 Properties of the WeakMap Prototype Object
3584
3585 // 23.3.3.1 WeakMap.prototype.constructor
3586
3587 // 23.3.3.2 WeakMap.prototype.delete ( key )
3588 define(
3589 WeakMap.prototype, 'delete',
3590 function delete_(key) {
3591 var M = strict(this);
3592 if (Type(M) !== 'object') throw TypeError();
3593 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3594 if (Type(key) !== 'object') throw TypeError('Expected object');
3595 return M['[[WeakMapData]]'].remove(key);
3596 });
3597
3598 // 23.3.3.3 WeakMap.prototype.get ( key )
3599 define(
3600 WeakMap.prototype, 'get',
3601 function get(key, defaultValue) {
3602 var M = strict(this);
3603 if (Type(M) !== 'object') throw TypeError();
3604 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3605 if (Type(key) !== 'object') throw TypeError('Expected object');
3606 return M['[[WeakMapData]]'].get(key, defaultValue);
3607 });
3608
3609 // 23.3.3.4 WeakMap.prototype.has ( key )
3610 define(
3611 WeakMap.prototype, 'has',
3612 function has(key) {
3613 var M = strict(this);
3614 if (Type(M) !== 'object') throw TypeError();
3615 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3616 if (Type(key) !== 'object') throw TypeError('Expected object');
3617 return M['[[WeakMapData]]'].has(key);
3618 });
3619
3620 // 23.3.3.5 WeakMap.prototype.set ( key , value )
3621 define(
3622 WeakMap.prototype, 'set',
3623 function set(key, value) {
3624 var M = strict(this);
3625 if (Type(M) !== 'object') throw TypeError();
3626 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3627 if (Type(key) !== 'object') throw TypeError('Expected object');
3628 M['[[WeakMapData]]'].set(key, value);
3629 return M;
3630 });
3631
3632 // 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3633 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3634
3635 // 23.3.4 Properties of WeakMap Instances
3636
3637 // Polyfills for incomplete native implementations:
3638 (function() {
3639 var wm = new global.WeakMap();
3640 var orig = global.WeakMap.prototype.set;
3641 define(global.WeakMap.prototype, 'set', function set() {
3642 orig.apply(this, arguments);
3643 return this;
3644 }, wm.set({}, 0) !== wm);
3645 }());
3646 }());
3647
3648 // ---------------------------------------
3649 // 23.4 WeakSet Objects
3650 // ---------------------------------------
3651
3652 (function() {
3653 // 23.4.1 The WeakSet Constructor
3654 // 23.4.1.1 WeakSet ( [ iterable ] )
3655 /** @constructor */
3656 function WeakSet(/*iterable*/) {
3657 var set = strict(this);
3658 var iterable = arguments[0];
3659
3660 if (Type(set) !== 'object') throw TypeError();
3661 if ('[[WeakSetData]]' in set) throw TypeError();
3662
3663 if (iterable !== undefined) {
3664 var adder = set['add'];
3665 if (!IsCallable(adder)) throw TypeError();
3666 var iter = GetIterator(ToObject(iterable));
3667 }
3668 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
3669 if (iter === undefined) return set;
3670 while (true) {
3671 var next = IteratorStep(iter);
3672 if (next === false)
3673 return set;
3674 var nextValue = IteratorValue(next);
3675 adder.call(set, nextValue);
3676 }
3677
3678 return set;
3679 }
3680
3681 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3682 global.WeakSet = WeakSet;
3683
3684 // 23.4.2 Properties of the WeakSet Constructor
3685 // 23.4.2.1 WeakSet.prototype
3686 var $WeakSetPrototype$ = {};
3687 WeakSet.prototype = $WeakSetPrototype$;
3688
3689 // 23.4.3 Properties of the WeakSet Prototype Object
3690 // 23.4.3.1 WeakSet.prototype.add (value )
3691 define(
3692 WeakSet.prototype, 'add',
3693 function add(value) {
3694 var S = strict(this);
3695 if (Type(S) !== 'object') throw TypeError();
3696 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3697 if (Type(value) !== 'object') throw TypeError('Expected object');
3698 S['[[WeakSetData]]'].set(value, true);
3699 return S;
3700 });
3701
3702 // 23.4.3.2 WeakSet.prototype.constructor
3703 // 23.4.3.3 WeakSet.prototype.delete ( value )
3704 define(
3705 WeakSet.prototype, 'delete',
3706 function delete_(value) {
3707 var S = strict(this);
3708 if (Type(S) !== 'object') throw TypeError();
3709 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3710 if (Type(value) !== 'object') throw TypeError('Expected object');
3711 return S['[[WeakSetData]]'].remove(value);
3712 });
3713
3714 // 23.4.3.4 WeakSet.prototype.has ( value )
3715 define(
3716 WeakSet.prototype, 'has',
3717 function has(key) {
3718 var S = strict(this);
3719 if (Type(S) !== 'object') throw TypeError();
3720 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3721 if (Type(key) !== 'object') throw TypeError('Expected object');
3722 return S['[[WeakSetData]]'].has(key);
3723 });
3724
3725 // 23.4.3.5 WeakSet.prototype [ @@toStringTag ]
3726 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
3727
3728 // 23.4.4 Properties of WeakSet Instances
3729
3730 // Polyfills for incomplete native implementations:
3731 (function() {
3732 var ws = new global.WeakSet();
3733 var orig = global.WeakSet.prototype.add;
3734 define(global.WeakSet.prototype, 'add', function add() {
3735 orig.apply(this, arguments);
3736 return this;
3737 }, ws.add({}) !== ws);
3738 }());
3739 }());
3740
3741 // ---------------------------------------
3742 // 24 Structured Data
3743 // ---------------------------------------
3744
3745 // ---------------------------------------
3746 // 24.1 ArrayBuffer Objects
3747 // ---------------------------------------
3748
3749 // See typedarray.js for TypedArray polyfill
3750
3751 (function() {
3752 if (!('ArrayBuffer' in global))
3753 return;
3754
3755 // 24.1.1 Abstract Operations For ArrayBuffer Objects
3756 // 24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
3757 // 24.1.1.2 IsDetachedBuffer( arrayBuffer )
3758 // 24.1.1.3 DetachArrayBuffer( arrayBuffer )
3759 // 24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
3760 // 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
3761 // 24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
3762 // 24.1.2 The ArrayBuffer Constructor
3763 // 24.1.2.1 ArrayBuffer( length )
3764 // 24.1.3 Properties of the ArrayBuffer Constructor
3765
3766 // 24.1.3.1 ArrayBuffer.isView ( arg )
3767 define(
3768 ArrayBuffer, 'isView',
3769 function isView(arg) {
3770 if (Type(arg) !== 'object') return false;
3771 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
3772 return false;
3773 });
3774
3775 // 24.1.3.2 ArrayBuffer.prototype
3776 // 24.1.3.3 get ArrayBuffer [ @@species ]
3777 // 24.1.4 Properties of the ArrayBuffer Prototype Object
3778 // 24.1.4.1 get ArrayBuffer.prototype.byteLength
3779 // 24.1.4.2 ArrayBuffer.prototype.constructor
3780 // 24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
3781
3782 // 24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
3783 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
3784
3785 // 24.1.5 Properties of the ArrayBuffer Instances
3786 }());
3787
3788 // ---------------------------------------
3789 // 24.2 DataView Objects
3790 // ---------------------------------------
3791
3792 // See typedarray.js for TypedArray polyfill
3793
3794 (function() {
3795 if (!('DataView' in global))
3796 return;
3797
3798 // 24.2.1 Abstract Operations For DataView Objects
3799 // 24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
3800 // 24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
3801 // 24.2.2 The DataView Constructor
3802 // 24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
3803 // 24.2.3 Properties of the DataView Constructor
3804 // 24.2.3.1 DataView.prototype
3805 // 24.2.4 Properties of the DataView Prototype Object
3806 // 24.2.4.1 get DataView.prototype.buffer
3807 // 24.2.4.2 get DataView.prototype.byteLength
3808 // 24.2.4.3 get DataView.prototype.byteOffset
3809 // 24.2.4.4 DataView.prototype.constructor
3810 // 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
3811 // 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
3812 // 24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
3813 // 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
3814 // 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
3815 // 24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
3816 // 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
3817 // 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
3818 // 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
3819 // 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
3820 // 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
3821 // 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
3822 // 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
3823 // 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
3824 // 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
3825 // 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
3826
3827 // 24.2.4.21 DataView.prototype[ @@toStringTag ]
3828 define(DataView.prototype, $$toStringTag, 'DataView');
3829
3830 // 24.2.5 Properties of DataView Instances
3831 }());
3832
3833 // ---------------------------------------
3834 // 24.3 The JSON Object
3835 // ---------------------------------------
3836
3837 // 24.3.1 JSON.parse ( text [ , reviver ] )
3838 // 24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
3839 // 24.3.3 JSON [ @@toStringTag ]
3840 define(JSON, $$toStringTag, 'JSON');
3841
3842 // ---------------------------------------
3843 // 25.1 Iteration
3844 // ---------------------------------------
3845
3846 // 25.1.1 Common Iteration Interfaces
3847 // 25.1.1.1 The Iterable Interface
3848 // 25.1.1.2 The Iterator Interface
3849 // 25.1.1.3 The IteratorResult Interface
3850
3851 // 25.1.2 The %IteratorPrototype% Object
3852 // Defined earlier, so other prototypes can reference it.
3853 // 25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
3854 define($IteratorPrototype$, $$iterator, function() {
3855 return this;
3856 });
3857
3858
3859 // ---------------------------------------
3860 // 25.4 Promise Objects
3861 // ---------------------------------------
3862
3863 (function() {
3864 // 25.4 Promise Objects
3865
3866 // 25.4.1 Promise Abstract Operations
3867
3868 // 25.4.1.1 PromiseCapability Records
3869 // 25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
3870
3871 function IfAbruptRejectPromise(value, capability) {
3872 var rejectResult = capability['[[Reject]]'].call(undefined, value);
3873 return capability['[[Promise]]'];
3874 }
3875
3876 // 25.4.1.2 PromiseReaction Records
3877
3878 // 25.4.1.3 CreateResolvingFunctions ( promise )
3879
3880 function CreateResolvingFunctions(promise) {
3881 var alreadyResolved = {'[[value]]': false};
3882 var resolve = PromiseResolveFunction();
3883 set_internal(resolve, '[[Promise]]', promise);
3884 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
3885 var reject = PromiseRejectFunction();
3886 set_internal(reject, '[[Promise]]', promise);
3887 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
3888 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
3889 }
3890
3891 // 25.4.1.3.1 Promise Reject Functions
3892
3893 function PromiseRejectFunction() {
3894 var F = function(reason) {
3895 console.assert(Type(F['[[Promise]]']) === 'object');
3896 var promise = F['[[Promise]]'];
3897 var alreadyResolved = F['[[AlreadyResolved]]'];
3898 if (alreadyResolved['[[value]]']) return undefined;
3899 set_internal(alreadyResolved, '[[value]]', true);
3900 return RejectPromise(promise, reason);
3901 };
3902 return F;
3903 }
3904
3905 // 25.4.1.3.2 Promise Resolve Functions
3906
3907 function PromiseResolveFunction() {
3908 var F = function(resolution) {
3909 console.assert(Type(F['[[Promise]]']) === 'object');
3910 var promise = F['[[Promise]]'];
3911 var alreadyResolved = F['[[AlreadyResolved]]'];
3912 if (alreadyResolved['[[value]]']) return undefined;
3913 set_internal(alreadyResolved, '[[value]]', true);
3914
3915 if (SameValue(resolution, promise)) {
3916 var selfResolutionError = TypeError();
3917 return RejectPromise(promise, selfResolutionError);
3918 }
3919 if (Type(resolution) !== 'object')
3920 return FulfillPromise(promise, resolution);
3921 try {
3922 var then = resolution['then'];
3923 } catch(then) {
3924 return RejectPromise(promise, then);
3925 }
3926 if (!IsCallable(then))
3927 return FulfillPromise(promise, resolution);
3928 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
3929 return undefined;
3930 };
3931 return F;
3932 }
3933
3934 // 25.4.1.4 FulfillPromise ( promise, value )
3935
3936 function FulfillPromise(promise, value) {
3937 console.assert(promise['[[PromiseState]]'] === 'pending');
3938 var reactions = promise['[[PromiseFulfillReactions]]'];
3939 set_internal(promise, '[[PromiseResult]]', value);
3940 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
3941 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
3942 set_internal(promise, '[[PromiseState]]', 'fulfilled');
3943 return TriggerPromiseReactions(reactions, value);
3944 }
3945
3946 // 25.4.1.5 NewPromiseCapability ( C )
3947
3948 function NewPromiseCapability(c) {
3949 // To keep Promise hermetic, this doesn't look much like the spec.
3950 return CreatePromiseCapabilityRecord(undefined, c);
3951 }
3952
3953 // 25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
3954
3955 function CreatePromiseCapabilityRecord(promise, constructor) {
3956 // To keep Promise hermetic, this doesn't look much like the spec.
3957 console.assert(IsConstructor(constructor));
3958 var promiseCapability = {};
3959 set_internal(promiseCapability, '[[Promise]]', promise);
3960 set_internal(promiseCapability, '[[Resolve]]', undefined);
3961 set_internal(promiseCapability, '[[Reject]]', undefined);
3962 var executor = GetCapabilitiesExecutor();
3963 set_internal(executor, '[[Capability]]', promiseCapability);
3964
3965 // NOTE: Differs from spec; object is constructed here
3966 var constructorResult = promise = new constructor(executor);
3967 set_internal(promiseCapability, '[[Promise]]', promise);
3968
3969 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
3970 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
3971 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
3972 return promiseCapability;
3973 }
3974
3975 // 25.4.1.5.2 GetCapabilitiesExecutor Functions
3976
3977 function GetCapabilitiesExecutor() {
3978 var F = function(resolve, reject) {
3979 console.assert(F['[[Capability]]']);
3980 var promiseCapability = F['[[Capability]]'];
3981 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
3982 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
3983 set_internal(promiseCapability, '[[Resolve]]', resolve);
3984 set_internal(promiseCapability, '[[Reject]]', reject);
3985 return undefined;
3986 };
3987 return F;
3988 }
3989
3990 // 25.4.1.6 IsPromise ( x )
3991
3992 function IsPromise(x) {
3993 if (Type(x) !== 'object') return false;
3994 if (!('[[PromiseState]]' in x)) return false;
3995 if (x['[[PromiseState]]'] === undefined) return false;
3996 return true;
3997 }
3998
3999 // 25.4.1.7 RejectPromise ( promise, reason )
4000
4001 function RejectPromise(promise, reason) {
4002 console.assert(promise['[[PromiseState]]'] === 'pending');
4003 var reactions = promise['[[PromiseRejectReactions]]'];
4004 set_internal(promise, '[[PromiseResult]]', reason);
4005 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4006 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4007 set_internal(promise, '[[PromiseState]]', 'rejected');
4008 return TriggerPromiseReactions(reactions, reason);
4009 }
4010
4011 // 25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4012
4013 function TriggerPromiseReactions(reactions, argument) {
4014 for (var i = 0, len = reactions.length; i < len; ++i)
4015 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4016 return undefined;
4017 }
4018
4019 // 25.4.2 Promise Jobs
4020
4021 // 25.4.2.1 PromiseReactionJob ( reaction, argument )
4022
4023 function PromiseReactionJob(reaction, argument) {
4024 var promiseCapability = reaction['[[Capabilities]]'];
4025 var handler = reaction['[[Handler]]'];
4026 var handlerResult, status;
4027 try {
4028 if (handler === 'Identity') handlerResult = argument;
4029 else if (handler === 'Thrower') throw argument;
4030 else handlerResult = handler.call(undefined, argument);
4031 } catch (handlerResult) {
4032 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4033 NextJob(status); return;
4034 }
4035 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4036 NextJob(status);
4037 }
4038
4039 // 25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4040
4041 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4042 // SPEC BUG: promise vs. promiseToResolve
4043 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4044 try {
4045 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4046 resolvingFunctions['[[Reject]]']);
4047 } catch (thenCallResult) {
4048 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4049 NextJob(status); return;
4050 }
4051 NextJob(thenCallResult);
4052 }
4053
4054 // 25.4.3 The Promise Constructor
4055
4056 // 25.4.3.1 Promise ( executor )
4057
4058 function Promise(executor) {
4059 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4060 Object.defineProperty(this, '[[PromiseState]]', config);
4061 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4062 Object.defineProperty(this, '[[PromiseResult]]', config);
4063 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4064 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4065
4066 var promise = this;
4067 if (Type(promise) !== 'object') throw new TypeError();
4068 if (!('[[PromiseState]]' in promise)) throw TypeError();
4069 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4070 if (!IsCallable(executor)) throw TypeError();
4071
4072 set_internal(promise, '[[PromiseConstructor]]', Promise);
4073
4074 return InitializePromise(promise, executor);
4075 }
4076
4077 // 25.4.3.1.1 InitializePromise ( promise, executor )
4078
4079 function InitializePromise(promise, executor) {
4080 console.assert('[[PromiseState]]' in promise);
4081 console.assert(IsCallable(executor));
4082 set_internal(promise, '[[PromiseState]]', 'pending');
4083 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4084 set_internal(promise, '[[PromiseRejectReactions]]', []);
4085 var resolvingFunctions = CreateResolvingFunctions(promise);
4086 try {
4087 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4088 resolvingFunctions['[[Reject]]']);
4089 } catch (completion) {
4090 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4091 }
4092 return promise;
4093 }
4094
4095 // 25.4.4 Properties of the Promise Constructor
4096 // 25.4.4.1 Promise.all ( iterable )
4097
4098 define(Promise, 'all', function all(iterable) {
4099 var c = strict(this);
4100 var promiseCapability = NewPromiseCapability(c);
4101 try {
4102 var iterator = GetIterator(iterable);
4103 } catch (value) {
4104 promiseCapability['[[Reject]]'].call(undefined, value);
4105 return promiseCapability['[[Promise]]'];
4106 }
4107 var values = [];
4108 var remainingElementsCount = { value: 1 };
4109 var index = 0;
4110 while (true) {
4111 try {
4112 var next = IteratorStep(iterator);
4113 } catch (value) {
4114 promiseCapability['[[Reject]]'].call(undefined, value);
4115 return promiseCapability['[[Promise]]'];
4116 }
4117 if (!next) {
4118 remainingElementsCount.value -= 1;
4119 if (remainingElementsCount.value === 0) {
4120 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4121
4122
4123 }
4124 return promiseCapability['[[Promise]]'];
4125 }
4126 try {
4127 var nextValue = IteratorValue(next);
4128 } catch (value) {
4129 promiseCapability['[[Reject]]'].call(undefined, value);
4130 return promiseCapability['[[Promise]]'];
4131 }
4132 try {
4133 var nextPromise = c.resolve(nextValue);
4134 } catch (value) {
4135 promiseCapability['[[Reject]]'].call(undefined, value);
4136 return promiseCapability['[[Promise]]'];
4137 }
4138 var resolveElement = PromiseAllResolveElementFunction();
4139 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4140 set_internal(resolveElement, '[[Index]]', index);
4141 set_internal(resolveElement, '[[Values]]', values);
4142 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4143 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4144 remainingElementsCount.value += 1;
4145 try {
4146 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4147 } catch (value) {
4148 promiseCapability['[[Reject]]'].call(undefined, value);
4149 return promiseCapability['[[Promise]]'];
4150 }
4151 index += 1;
4152 }
4153 });
4154
4155 // 25.4.4.1.1 Promise.all Resolve Element Functions
4156
4157 function PromiseAllResolveElementFunction() {
4158 var F = function(x) {
4159 var alreadyCalled = F['[[AlreadyCalled]]'];
4160 if (alreadyCalled.value) return undefined;
4161 alreadyCalled.value = true;
4162 var index = F['[[Index]]'];
4163 var values = F['[[Values]]'];
4164 var promiseCapability = F['[[Capabilities]]'];
4165 var remainingElementsCount = F['[[RemainingElements]]'];
4166 try {
4167 values[index] = x;
4168 } catch (result) {
4169 promiseCapability['[[Reject]]'].call(undefined, result);
4170 return promiseCapability['[[Promise]]'];
4171 }
4172 remainingElementsCount.value -= 1;
4173 if (remainingElementsCount.value === 0)
4174 return promiseCapability['[[Resolve]]'].call(undefined, values);
4175 return undefined;
4176 };
4177 return F;
4178 }
4179
4180 // 25.4.4.2 Promise.prototype
4181
4182 Promise.prototype = {};
4183
4184 // 25.4.4.3 Promise.race ( iterable )
4185
4186 define(Promise, 'race', function race(iterable) {
4187 var c = strict(this);
4188 var promiseCapability = NewPromiseCapability(c);
4189 try {
4190 var iterator = GetIterator(iterable);
4191 } catch (value) {
4192 promiseCapability['[[Reject]]'].call(undefined, value);
4193 return promiseCapability['[[Promise]]'];
4194 }
4195 while (true) {
4196 try {
4197 var next = IteratorStep(iterator);
4198 } catch (value) {
4199 promiseCapability['[[Reject]]'].call(undefined, value);
4200 return promiseCapability['[[Promise]]'];
4201 }
4202 if (!next) return promiseCapability['[[Promise]]'];
4203 try {
4204 var nextValue = IteratorValue(next);
4205 } catch (value) {
4206 promiseCapability['[[Reject]]'].call(undefined, value);
4207 return promiseCapability['[[Promise]]'];
4208 }
4209 try {
4210 var nextPromise = c.resolve(nextValue);
4211 } catch (value) {
4212 promiseCapability['[[Reject]]'].call(undefined, value);
4213 return promiseCapability['[[Promise]]'];
4214 }
4215 try {
4216 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4217 } catch (value) {
4218 promiseCapability['[[Reject]]'].call(undefined, value);
4219 return promiseCapability['[[Promise]]'];
4220 }
4221 }
4222 });
4223
4224 // 25.4.4.4 Promise.reject ( r )
4225
4226 define(Promise, 'reject', function reject(r) {
4227 var c = strict(this);
4228 var promiseCapability = NewPromiseCapability(c);
4229 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4230 return promiseCapability['[[Promise]]'];
4231 });
4232
4233 // 25.4.4.5 Promise.resolve ( x )
4234
4235 define(Promise, 'resolve', function resolve(x) {
4236 var c = strict(this);
4237 if (IsPromise(x)) {
4238 var constructor = x['[[PromiseConstructor]]'];
4239 if (SameValue(constructor, c)) return x;
4240 }
4241 var promiseCapability = NewPromiseCapability(c);
4242 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4243 return promiseCapability['[[Promise]]'];
4244 });
4245
4246 // 25.4.4.6 Promise [ @@create ] ( )
4247 // 25.4.4.6.1 AllocatePromise ( constructor )
4248 // 25.4.5 Properties of the Promise Prototype Object
4249 // 25.4.5.1 Promise.prototype.catch ( onRejected )
4250
4251 define(Promise.prototype, 'catch', function catch_(onRejected) {
4252 var promise = this;
4253 return promise.then(undefined, onRejected);
4254 });
4255
4256 // 25.4.5.2 Promise.prototype.constructor
4257
4258 Promise.prototype.constructor = Promise;
4259
4260 // 25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4261
4262 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4263 var promise = this;
4264 if (!IsPromise(promise)) throw TypeError();
4265 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4266 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4267 var c = promise.constructor;
4268 var promiseCapability = NewPromiseCapability(c);
4269 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4270 '[[Handler]]': onFulfilled };
4271 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4272 '[[Handler]]': onRejected };
4273 if (promise['[[PromiseState]]'] === 'pending') {
4274 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4275 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4276 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4277 var value = promise['[[PromiseResult]]'];
4278 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4279 } else if (promise['[[PromiseState]]'] === 'rejected') {
4280 var reason = promise['[[PromiseResult]]'];
4281 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4282 }
4283 return promiseCapability['[[Promise]]'];
4284 });
4285
4286 // 25.4.6 Properties of Promise Instances
4287
4288 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4289 global.Promise = Promise;
4290
4291 // Patch early Promise.cast vs. Promise.resolve implementations
4292 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4293 }());
4294
4295 // 25.4.5.1 Promise.prototype [ @@toStringTag ]
4296 define(Promise.prototype, $$toStringTag, 'Promise');
4297
4298 // ---------------------------------------
4299 // 26 Reflection
4300 // ---------------------------------------
4301
4302 (function() {
4303 // 26.1 The Reflect Object
4304 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4305 global.Reflect = {};
4306
4307 // 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4308 define(
4309 Reflect, 'apply',
4310 function apply(target, thisArgument, argumentsList) {
4311 if (!IsCallable(target)) throw TypeError();
4312 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4313 });
4314
4315 // 26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4316 define(
4317 Reflect, 'construct',
4318 function construct(target, argumentsList) {
4319 return __cons(target, argumentsList);
4320 });
4321
4322 // 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4323 define(
4324 Reflect, 'defineProperty',
4325 function defineProperty(target, propertyKey, attributes) {
4326 try {
4327 Object.defineProperty(target, propertyKey, attributes);
4328 return true;
4329 } catch (_) {
4330 return false;
4331 }
4332 });
4333
4334 // 26.1.4 Reflect.deleteProperty ( target, propertyKey )
4335 define(
4336 Reflect, 'deleteProperty',
4337 function deleteProperty(target,name) {
4338 try {
4339 delete target[name];
4340 return !HasOwnProperty(target, name);
4341 } catch (_) {
4342 return false;
4343 }
4344 });
4345
4346 // 26.1.5 Reflect.enumerate ( target )
4347 define(
4348 Reflect, 'enumerate',
4349 function enumerate(target) {
4350 target = ToObject(target);
4351 var iterator = Enumerate(target);
4352 return iterator;
4353 });
4354
4355 // 26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4356 define(
4357 Reflect, 'get',
4358 function get(target, name, receiver) {
4359 target = ToObject(target);
4360 name = String(name);
4361 receiver = (receiver === undefined) ? target : ToObject(receiver);
4362 var desc = getPropertyDescriptor(target, name);
4363 if (desc && 'get' in desc)
4364 return Function.prototype.call.call(desc['get'], receiver);
4365 return target[name];
4366 });
4367
4368 // 26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4369 define(
4370 Reflect, 'getOwnPropertyDescriptor',
4371 Object.getOwnPropertyDescriptor);
4372
4373 // 26.1.8 Reflect.getPrototypeOf ( target )
4374 define(
4375 Reflect, 'getPrototypeOf',
4376 Object.getPrototypeOf);
4377
4378 // 26.1.9 Reflect.has ( target, propertyKey )
4379 define(
4380 Reflect, 'has',
4381 function has(target,name) {
4382 return String(name) in ToObject(target);
4383 });
4384
4385 // 26.1.10 Reflect.isExtensible (target)
4386 define(
4387 Reflect, 'isExtensible',
4388 Object.isExtensible);
4389
4390 // 26.1.11 Reflect.ownKeys ( target )
4391 define(
4392 Reflect, 'ownKeys',
4393 function ownKeys(target) {
4394 var obj = ToObject(target);
4395 return Object.getOwnPropertyNames(obj);
4396 });
4397
4398 // 26.1.12 Reflect.preventExtensions ( target )
4399 define(
4400 Reflect, 'preventExtensions',
4401 function preventExtensions(target) {
4402 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4403 });
4404
4405 // 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4406 define(
4407 Reflect, 'set',
4408 function set(target, name, value, receiver) {
4409 target = ToObject(target);
4410 name = String(name);
4411 receiver = (receiver === undefined) ? target : ToObject(receiver);
4412 var desc = getPropertyDescriptor(target, name);
4413 try {
4414 if (desc && 'set' in desc)
4415 Function.prototype.call.call(desc['set'], receiver, value);
4416 else
4417 target[name] = value;
4418 return true;
4419 } catch (_) {
4420 return false;
4421 }
4422 });
4423
4424 // 26.1.14 Reflect.setPrototypeOf ( target, proto )
4425 define(
4426 Reflect, 'setPrototypeOf',
4427 function setPrototypeOf(target, proto) {
4428 try {
4429 target.__proto__ = proto;
4430 return Reflect.getPrototypeOf(target) === proto;
4431 } catch(_) {
4432 return false;
4433 }
4434 });
4435
4436 }());
4437
4438 // ---------------------------------------
4439 // 26.2 Proxy Objects
4440 // ---------------------------------------
4441
4442 // Not polyfillable.
4443
4444 }(self));
4445
4446 // This helper is defined outside the main scope so that the use of
4447 // 'eval' does not taint the scope for minifiers.
4448 function __cons(t, a) {
4449 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4450 }
4451 </script>
4452 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
4453 !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)
4454 },_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))
4455 },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});
4456 </script>
4457 <script>/*!
4458 * Bootstrap v3.2.0 (http://getbootstrap.com)
4459 * Copyright 2011-2014 Twitter, Inc.
4460 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
4461 */
4462 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>
4463 <script>(function() {
4464 'use strict';
4465
4466 /**
4467 * Extend an Object with another Object's properties.
4468 *
4469 * The source objects are specified as additional arguments.
4470 *
4471 * @param dst Object the object to extend.
4472 *
4473 * @return Object the final object.
4474 */
4475 var _extend = function(dst) {
4476 var sources = Array.prototype.slice.call(arguments, 1);
4477 for (var i=0; i<sources.length; ++i) {
4478 var src = sources[i];
4479 for (var p in src) {
4480 if (src.hasOwnProperty(p)) dst[p] = src[p];
4481 }
4482 }
4483 return dst;
4484 };
4485
4486
4487 /**
4488 * Defer execution of given function.
4489 * @param {Function} func
4490 */
4491 var _defer = function(func) {
4492 if (typeof setImmediate === 'function') {
4493 return setImmediate(func);
4494 } else {
4495 return setTimeout(func, 0);
4496 }
4497 };
4498
4499 /**
4500 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
4501 */
4502 var Levenshtein = {
4503 /**
4504 * Calculate levenshtein distance of the two strings.
4505 *
4506 * @param str1 String the first string.
4507 * @param str2 String the second string.
4508 * @return Integer the levenshtein distance (0 and above).
4509 */
4510 get: function(str1, str2) {
4511 // base cases
4512 if (str1 === str2) return 0;
4513 if (str1.length === 0) return str2.length;
4514 if (str2.length === 0) return str1.length;
4515
4516 // two rows
4517 var prevRow = new Array(str2.length + 1),
4518 curCol, nextCol, i, j, tmp;
4519
4520 // initialise previous row
4521 for (i=0; i<prevRow.length; ++i) {
4522 prevRow[i] = i;
4523 }
4524
4525 // calculate current row distance from previous row
4526 for (i=0; i<str1.length; ++i) {
4527 nextCol = i + 1;
4528
4529 for (j=0; j<str2.length; ++j) {
4530 curCol = nextCol;
4531
4532 // substution
4533 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
4534 // insertion
4535 tmp = curCol + 1;
4536 if (nextCol > tmp) {
4537 nextCol = tmp;
4538 }
4539 // deletion
4540 tmp = prevRow[j + 1] + 1;
4541 if (nextCol > tmp) {
4542 nextCol = tmp;
4543 }
4544
4545 // copy current col value into previous (in preparation for next iteration)
4546 prevRow[j] = curCol;
4547 }
4548
4549 // copy last col value into previous (in preparation for next iteration)
4550 prevRow[j] = nextCol;
4551 }
4552
4553 return nextCol;
4554 },
4555
4556 /**
4557 * Asynchronously calculate levenshtein distance of the two strings.
4558 *
4559 * @param str1 String the first string.
4560 * @param str2 String the second string.
4561 * @param cb Function callback function with signature: function(Error err, int distance)
4562 * @param [options] Object additional options.
4563 * @param [options.progress] Function progress callback with signature: function(percentComplete)
4564 */
4565 getAsync: function(str1, str2, cb, options) {
4566 options = _extend({}, {
4567 progress: null
4568 }, options);
4569
4570 // base cases
4571 if (str1 === str2) return cb(null, 0);
4572 if (str1.length === 0) return cb(null, str2.length);
4573 if (str2.length === 0) return cb(null, str1.length);
4574
4575 // two rows
4576 var prevRow = new Array(str2.length + 1),
4577 curCol, nextCol,
4578 i, j, tmp,
4579 startTime, currentTime;
4580
4581 // initialise previous row
4582 for (i=0; i<prevRow.length; ++i) {
4583 prevRow[i] = i;
4584 }
4585
4586 nextCol = 1;
4587 i = 0;
4588 j = -1;
4589
4590 var __calculate = function() {
4591 // reset timer
4592 startTime = new Date().valueOf();
4593 currentTime = startTime;
4594
4595 // keep going until one second has elapsed
4596 while (currentTime - startTime < 1000) {
4597 // reached end of current row?
4598 if (str2.length <= (++j)) {
4599 // copy current into previous (in preparation for next iteration)
4600 prevRow[j] = nextCol;
4601
4602 // if already done all chars
4603 if (str1.length <= (++i)) {
4604 return cb(null, nextCol);
4605 }
4606 // else if we have more left to do
4607 else {
4608 nextCol = i + 1;
4609 j = 0;
4610 }
4611 }
4612
4613 // calculation
4614 curCol = nextCol;
4615
4616 // substution
4617 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
4618 // insertion
4619 tmp = curCol + 1;
4620 if (nextCol > tmp) {
4621 nextCol = tmp;
4622 }
4623 // deletion
4624 tmp = prevRow[j + 1] + 1;
4625 if (nextCol > tmp) {
4626 nextCol = tmp;
4627 }
4628
4629 // copy current into previous (in preparation for next iteration)
4630 prevRow[j] = curCol;
4631
4632 // get current time
4633 currentTime = new Date().valueOf();
4634 }
4635
4636 // send a progress update?
4637 if (null !== options.progress) {
4638 try {
4639 options.progress.call(null, (i * 100.0/ str1.length));
4640 } catch (err) {
4641 return cb('Progress callback: ' + err.toString());
4642 }
4643 }
4644
4645 // next iteration
4646 _defer(__calculate);
4647 };
4648
4649 __calculate();
4650 }
4651
4652 };
4653
4654 // amd
4655 if (typeof define !== "undefined" && define !== null && define.amd) {
4656 define(function() {
4657 return Levenshtein;
4658 });
4659 }
4660 // commonjs
4661 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
4662 module.exports = Levenshtein;
4663 }
4664 // web worker
4665 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
4666 self.Levenshtein = Levenshtein;
4667 }
4668 // browser main thread
4669 else if (typeof window !== "undefined" && window !== null) {
4670 window.Levenshtein = Levenshtein;
4671 }
4672 }());
4673
4674 </script>
4675 <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},
4676 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;
4677 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-
4678 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]=
4679 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},
4680 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=
4681 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-
4682 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,
4683 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=
4684 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&&
4685 (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,
4686 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)-
4687 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:"+
4688 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:"+
4689 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+
4690 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),
4691 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>
4692 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],
4693 [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,
4694 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,
4695 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,
4696 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,
4697 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,
4698 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*
4699 (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,
4700 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),
4701 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",
4702 d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
4703 </script>
4704 <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){
4705 // (public) Constructor
4706 function BigInteger(a, b, c) {
4707 if (!(this instanceof BigInteger))
4708 return new BigInteger(a, b, c)
4709
4710 if (a != null) {
4711 if ("number" == typeof a) this.fromNumber(a, b, c)
4712 else if (b == null && "string" != typeof a) this.fromString(a, 256)
4713 else this.fromString(a, b)
4714 }
4715 }
4716
4717 var proto = BigInteger.prototype
4718
4719 // duck-typed isBigInteger
4720 proto.__bigi = require('../package.json').version
4721 BigInteger.isBigInteger = function (obj, check_ver) {
4722 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
4723 }
4724
4725 // Bits per digit
4726 var dbits
4727
4728 // am: Compute w_j += (x*this_i), propagate carries,
4729 // c is initial carry, returns final carry.
4730 // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
4731 // We need to select the fastest one that works in this environment.
4732
4733 // am1: use a single mult and divide to get the high bits,
4734 // max digit bits should be 26 because
4735 // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
4736 function am1(i, x, w, j, c, n) {
4737 while (--n >= 0) {
4738 var v = x * this[i++] + w[j] + c
4739 c = Math.floor(v / 0x4000000)
4740 w[j++] = v & 0x3ffffff
4741 }
4742 return c
4743 }
4744 // am2 avoids a big mult-and-extract completely.
4745 // Max digit bits should be <= 30 because we do bitwise ops
4746 // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
4747 function am2(i, x, w, j, c, n) {
4748 var xl = x & 0x7fff,
4749 xh = x >> 15
4750 while (--n >= 0) {
4751 var l = this[i] & 0x7fff
4752 var h = this[i++] >> 15
4753 var m = xh * l + h * xl
4754 l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
4755 c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
4756 w[j++] = l & 0x3fffffff
4757 }
4758 return c
4759 }
4760 // Alternately, set max digit bits to 28 since some
4761 // browsers slow down when dealing with 32-bit numbers.
4762 function am3(i, x, w, j, c, n) {
4763 var xl = x & 0x3fff,
4764 xh = x >> 14
4765 while (--n >= 0) {
4766 var l = this[i] & 0x3fff
4767 var h = this[i++] >> 14
4768 var m = xh * l + h * xl
4769 l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
4770 c = (l >> 28) + (m >> 14) + xh * h
4771 w[j++] = l & 0xfffffff
4772 }
4773 return c
4774 }
4775
4776 // wtf?
4777 BigInteger.prototype.am = am1
4778 dbits = 26
4779
4780 BigInteger.prototype.DB = dbits
4781 BigInteger.prototype.DM = ((1 << dbits) - 1)
4782 var DV = BigInteger.prototype.DV = (1 << dbits)
4783
4784 var BI_FP = 52
4785 BigInteger.prototype.FV = Math.pow(2, BI_FP)
4786 BigInteger.prototype.F1 = BI_FP - dbits
4787 BigInteger.prototype.F2 = 2 * dbits - BI_FP
4788
4789 // Digit conversions
4790 var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
4791 var BI_RC = new Array()
4792 var rr, vv
4793 rr = "0".charCodeAt(0)
4794 for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
4795 rr = "a".charCodeAt(0)
4796 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
4797 rr = "A".charCodeAt(0)
4798 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
4799
4800 function int2char(n) {
4801 return BI_RM.charAt(n)
4802 }
4803
4804 function intAt(s, i) {
4805 var c = BI_RC[s.charCodeAt(i)]
4806 return (c == null) ? -1 : c
4807 }
4808
4809 // (protected) copy this to r
4810 function bnpCopyTo(r) {
4811 for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]
4812 r.t = this.t
4813 r.s = this.s
4814 }
4815
4816 // (protected) set from integer value x, -DV <= x < DV
4817 function bnpFromInt(x) {
4818 this.t = 1
4819 this.s = (x < 0) ? -1 : 0
4820 if (x > 0) this[0] = x
4821 else if (x < -1) this[0] = x + DV
4822 else this.t = 0
4823 }
4824
4825 // return bigint initialized to value
4826 function nbv(i) {
4827 var r = new BigInteger()
4828 r.fromInt(i)
4829 return r
4830 }
4831
4832 // (protected) set from string and radix
4833 function bnpFromString(s, b) {
4834 var self = this
4835
4836 var k
4837 if (b == 16) k = 4
4838 else if (b == 8) k = 3
4839 else if (b == 256) k = 8; // byte array
4840 else if (b == 2) k = 1
4841 else if (b == 32) k = 5
4842 else if (b == 4) k = 2
4843 else {
4844 self.fromRadix(s, b)
4845 return
4846 }
4847 self.t = 0
4848 self.s = 0
4849 var i = s.length,
4850 mi = false,
4851 sh = 0
4852 while (--i >= 0) {
4853 var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
4854 if (x < 0) {
4855 if (s.charAt(i) == "-") mi = true
4856 continue
4857 }
4858 mi = false
4859 if (sh == 0)
4860 self[self.t++] = x
4861 else if (sh + k > self.DB) {
4862 self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh
4863 self[self.t++] = (x >> (self.DB - sh))
4864 } else
4865 self[self.t - 1] |= x << sh
4866 sh += k
4867 if (sh >= self.DB) sh -= self.DB
4868 }
4869 if (k == 8 && (s[0] & 0x80) != 0) {
4870 self.s = -1
4871 if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh
4872 }
4873 self.clamp()
4874 if (mi) BigInteger.ZERO.subTo(self, self)
4875 }
4876
4877 // (protected) clamp off excess high words
4878 function bnpClamp() {
4879 var c = this.s & this.DM
4880 while (this.t > 0 && this[this.t - 1] == c)--this.t
4881 }
4882
4883 // (public) return string representation in given radix
4884 function bnToString(b) {
4885 var self = this
4886 if (self.s < 0) return "-" + self.negate()
4887 .toString(b)
4888 var k
4889 if (b == 16) k = 4
4890 else if (b == 8) k = 3
4891 else if (b == 2) k = 1
4892 else if (b == 32) k = 5
4893 else if (b == 4) k = 2
4894 else return self.toRadix(b)
4895 var km = (1 << k) - 1,
4896 d, m = false,
4897 r = "",
4898 i = self.t
4899 var p = self.DB - (i * self.DB) % k
4900 if (i-- > 0) {
4901 if (p < self.DB && (d = self[i] >> p) > 0) {
4902 m = true
4903 r = int2char(d)
4904 }
4905 while (i >= 0) {
4906 if (p < k) {
4907 d = (self[i] & ((1 << p) - 1)) << (k - p)
4908 d |= self[--i] >> (p += self.DB - k)
4909 } else {
4910 d = (self[i] >> (p -= k)) & km
4911 if (p <= 0) {
4912 p += self.DB
4913 --i
4914 }
4915 }
4916 if (d > 0) m = true
4917 if (m) r += int2char(d)
4918 }
4919 }
4920 return m ? r : "0"
4921 }
4922
4923 // (public) -this
4924 function bnNegate() {
4925 var r = new BigInteger()
4926 BigInteger.ZERO.subTo(this, r)
4927 return r
4928 }
4929
4930 // (public) |this|
4931 function bnAbs() {
4932 return (this.s < 0) ? this.negate() : this
4933 }
4934
4935 // (public) return + if this > a, - if this < a, 0 if equal
4936 function bnCompareTo(a) {
4937 var r = this.s - a.s
4938 if (r != 0) return r
4939 var i = this.t
4940 r = i - a.t
4941 if (r != 0) return (this.s < 0) ? -r : r
4942 while (--i >= 0)
4943 if ((r = this[i] - a[i]) != 0) return r
4944 return 0
4945 }
4946
4947 // returns bit length of the integer x
4948 function nbits(x) {
4949 var r = 1,
4950 t
4951 if ((t = x >>> 16) != 0) {
4952 x = t
4953 r += 16
4954 }
4955 if ((t = x >> 8) != 0) {
4956 x = t
4957 r += 8
4958 }
4959 if ((t = x >> 4) != 0) {
4960 x = t
4961 r += 4
4962 }
4963 if ((t = x >> 2) != 0) {
4964 x = t
4965 r += 2
4966 }
4967 if ((t = x >> 1) != 0) {
4968 x = t
4969 r += 1
4970 }
4971 return r
4972 }
4973
4974 // (public) return the number of bits in "this"
4975 function bnBitLength() {
4976 if (this.t <= 0) return 0
4977 return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
4978 }
4979
4980 // (public) return the number of bytes in "this"
4981 function bnByteLength() {
4982 return this.bitLength() >> 3
4983 }
4984
4985 // (protected) r = this << n*DB
4986 function bnpDLShiftTo(n, r) {
4987 var i
4988 for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]
4989 for (i = n - 1; i >= 0; --i) r[i] = 0
4990 r.t = this.t + n
4991 r.s = this.s
4992 }
4993
4994 // (protected) r = this >> n*DB
4995 function bnpDRShiftTo(n, r) {
4996 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
4997 r.t = Math.max(this.t - n, 0)
4998 r.s = this.s
4999 }
5000
5001 // (protected) r = this << n
5002 function bnpLShiftTo(n, r) {
5003 var self = this
5004 var bs = n % self.DB
5005 var cbs = self.DB - bs
5006 var bm = (1 << cbs) - 1
5007 var ds = Math.floor(n / self.DB),
5008 c = (self.s << bs) & self.DM,
5009 i
5010 for (i = self.t - 1; i >= 0; --i) {
5011 r[i + ds + 1] = (self[i] >> cbs) | c
5012 c = (self[i] & bm) << bs
5013 }
5014 for (i = ds - 1; i >= 0; --i) r[i] = 0
5015 r[ds] = c
5016 r.t = self.t + ds + 1
5017 r.s = self.s
5018 r.clamp()
5019 }
5020
5021 // (protected) r = this >> n
5022 function bnpRShiftTo(n, r) {
5023 var self = this
5024 r.s = self.s
5025 var ds = Math.floor(n / self.DB)
5026 if (ds >= self.t) {
5027 r.t = 0
5028 return
5029 }
5030 var bs = n % self.DB
5031 var cbs = self.DB - bs
5032 var bm = (1 << bs) - 1
5033 r[0] = self[ds] >> bs
5034 for (var i = ds + 1; i < self.t; ++i) {
5035 r[i - ds - 1] |= (self[i] & bm) << cbs
5036 r[i - ds] = self[i] >> bs
5037 }
5038 if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs
5039 r.t = self.t - ds
5040 r.clamp()
5041 }
5042
5043 // (protected) r = this - a
5044 function bnpSubTo(a, r) {
5045 var self = this
5046 var i = 0,
5047 c = 0,
5048 m = Math.min(a.t, self.t)
5049 while (i < m) {
5050 c += self[i] - a[i]
5051 r[i++] = c & self.DM
5052 c >>= self.DB
5053 }
5054 if (a.t < self.t) {
5055 c -= a.s
5056 while (i < self.t) {
5057 c += self[i]
5058 r[i++] = c & self.DM
5059 c >>= self.DB
5060 }
5061 c += self.s
5062 } else {
5063 c += self.s
5064 while (i < a.t) {
5065 c -= a[i]
5066 r[i++] = c & self.DM
5067 c >>= self.DB
5068 }
5069 c -= a.s
5070 }
5071 r.s = (c < 0) ? -1 : 0
5072 if (c < -1) r[i++] = self.DV + c
5073 else if (c > 0) r[i++] = c
5074 r.t = i
5075 r.clamp()
5076 }
5077
5078 // (protected) r = this * a, r != this,a (HAC 14.12)
5079 // "this" should be the larger one if appropriate.
5080 function bnpMultiplyTo(a, r) {
5081 var x = this.abs(),
5082 y = a.abs()
5083 var i = x.t
5084 r.t = i + y.t
5085 while (--i >= 0) r[i] = 0
5086 for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)
5087 r.s = 0
5088 r.clamp()
5089 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
5090 }
5091
5092 // (protected) r = this^2, r != this (HAC 14.16)
5093 function bnpSquareTo(r) {
5094 var x = this.abs()
5095 var i = r.t = 2 * x.t
5096 while (--i >= 0) r[i] = 0
5097 for (i = 0; i < x.t - 1; ++i) {
5098 var c = x.am(i, x[i], r, 2 * i, 0, 1)
5099 if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
5100 r[i + x.t] -= x.DV
5101 r[i + x.t + 1] = 1
5102 }
5103 }
5104 if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)
5105 r.s = 0
5106 r.clamp()
5107 }
5108
5109 // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
5110 // r != q, this != m. q or r may be null.
5111 function bnpDivRemTo(m, q, r) {
5112 var self = this
5113 var pm = m.abs()
5114 if (pm.t <= 0) return
5115 var pt = self.abs()
5116 if (pt.t < pm.t) {
5117 if (q != null) q.fromInt(0)
5118 if (r != null) self.copyTo(r)
5119 return
5120 }
5121 if (r == null) r = new BigInteger()
5122 var y = new BigInteger(),
5123 ts = self.s,
5124 ms = m.s
5125 var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus
5126 if (nsh > 0) {
5127 pm.lShiftTo(nsh, y)
5128 pt.lShiftTo(nsh, r)
5129 } else {
5130 pm.copyTo(y)
5131 pt.copyTo(r)
5132 }
5133 var ys = y.t
5134 var y0 = y[ys - 1]
5135 if (y0 == 0) return
5136 var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)
5137 var d1 = self.FV / yt,
5138 d2 = (1 << self.F1) / yt,
5139 e = 1 << self.F2
5140 var i = r.t,
5141 j = i - ys,
5142 t = (q == null) ? new BigInteger() : q
5143 y.dlShiftTo(j, t)
5144 if (r.compareTo(t) >= 0) {
5145 r[r.t++] = 1
5146 r.subTo(t, r)
5147 }
5148 BigInteger.ONE.dlShiftTo(ys, t)
5149 t.subTo(y, y); // "negative" y so we can replace sub with am later
5150 while (y.t < ys) y[y.t++] = 0
5151 while (--j >= 0) {
5152 // Estimate quotient digit
5153 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)
5154 if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
5155 y.dlShiftTo(j, t)
5156 r.subTo(t, r)
5157 while (r[i] < --qd) r.subTo(t, r)
5158 }
5159 }
5160 if (q != null) {
5161 r.drShiftTo(ys, q)
5162 if (ts != ms) BigInteger.ZERO.subTo(q, q)
5163 }
5164 r.t = ys
5165 r.clamp()
5166 if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
5167 if (ts < 0) BigInteger.ZERO.subTo(r, r)
5168 }
5169
5170 // (public) this mod a
5171 function bnMod(a) {
5172 var r = new BigInteger()
5173 this.abs()
5174 .divRemTo(a, null, r)
5175 if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)
5176 return r
5177 }
5178
5179 // Modular reduction using "classic" algorithm
5180 function Classic(m) {
5181 this.m = m
5182 }
5183
5184 function cConvert(x) {
5185 if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)
5186 else return x
5187 }
5188
5189 function cRevert(x) {
5190 return x
5191 }
5192
5193 function cReduce(x) {
5194 x.divRemTo(this.m, null, x)
5195 }
5196
5197 function cMulTo(x, y, r) {
5198 x.multiplyTo(y, r)
5199 this.reduce(r)
5200 }
5201
5202 function cSqrTo(x, r) {
5203 x.squareTo(r)
5204 this.reduce(r)
5205 }
5206
5207 Classic.prototype.convert = cConvert
5208 Classic.prototype.revert = cRevert
5209 Classic.prototype.reduce = cReduce
5210 Classic.prototype.mulTo = cMulTo
5211 Classic.prototype.sqrTo = cSqrTo
5212
5213 // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
5214 // justification:
5215 // xy == 1 (mod m)
5216 // xy = 1+km
5217 // xy(2-xy) = (1+km)(1-km)
5218 // x[y(2-xy)] = 1-k^2m^2
5219 // x[y(2-xy)] == 1 (mod m^2)
5220 // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
5221 // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
5222 // JS multiply "overflows" differently from C/C++, so care is needed here.
5223 function bnpInvDigit() {
5224 if (this.t < 1) return 0
5225 var x = this[0]
5226 if ((x & 1) == 0) return 0
5227 var y = x & 3; // y == 1/x mod 2^2
5228 y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
5229 y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
5230 y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
5231 // last step - calculate inverse mod DV directly
5232 // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
5233 y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
5234 // we really want the negative inverse, and -DV < y < DV
5235 return (y > 0) ? this.DV - y : -y
5236 }
5237
5238 // Montgomery reduction
5239 function Montgomery(m) {
5240 this.m = m
5241 this.mp = m.invDigit()
5242 this.mpl = this.mp & 0x7fff
5243 this.mph = this.mp >> 15
5244 this.um = (1 << (m.DB - 15)) - 1
5245 this.mt2 = 2 * m.t
5246 }
5247
5248 // xR mod m
5249 function montConvert(x) {
5250 var r = new BigInteger()
5251 x.abs()
5252 .dlShiftTo(this.m.t, r)
5253 r.divRemTo(this.m, null, r)
5254 if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)
5255 return r
5256 }
5257
5258 // x/R mod m
5259 function montRevert(x) {
5260 var r = new BigInteger()
5261 x.copyTo(r)
5262 this.reduce(r)
5263 return r
5264 }
5265
5266 // x = x/R mod m (HAC 14.32)
5267 function montReduce(x) {
5268 while (x.t <= this.mt2) // pad x so am has enough room later
5269 x[x.t++] = 0
5270 for (var i = 0; i < this.m.t; ++i) {
5271 // faster way of calculating u0 = x[i]*mp mod DV
5272 var j = x[i] & 0x7fff
5273 var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM
5274 // use am to combine the multiply-shift-add into one call
5275 j = i + this.m.t
5276 x[j] += this.m.am(0, u0, x, i, 0, this.m.t)
5277 // propagate carry
5278 while (x[j] >= x.DV) {
5279 x[j] -= x.DV
5280 x[++j]++
5281 }
5282 }
5283 x.clamp()
5284 x.drShiftTo(this.m.t, x)
5285 if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)
5286 }
5287
5288 // r = "x^2/R mod m"; x != r
5289 function montSqrTo(x, r) {
5290 x.squareTo(r)
5291 this.reduce(r)
5292 }
5293
5294 // r = "xy/R mod m"; x,y != r
5295 function montMulTo(x, y, r) {
5296 x.multiplyTo(y, r)
5297 this.reduce(r)
5298 }
5299
5300 Montgomery.prototype.convert = montConvert
5301 Montgomery.prototype.revert = montRevert
5302 Montgomery.prototype.reduce = montReduce
5303 Montgomery.prototype.mulTo = montMulTo
5304 Montgomery.prototype.sqrTo = montSqrTo
5305
5306 // (protected) true iff this is even
5307 function bnpIsEven() {
5308 return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
5309 }
5310
5311 // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
5312 function bnpExp(e, z) {
5313 if (e > 0xffffffff || e < 1) return BigInteger.ONE
5314 var r = new BigInteger(),
5315 r2 = new BigInteger(),
5316 g = z.convert(this),
5317 i = nbits(e) - 1
5318 g.copyTo(r)
5319 while (--i >= 0) {
5320 z.sqrTo(r, r2)
5321 if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)
5322 else {
5323 var t = r
5324 r = r2
5325 r2 = t
5326 }
5327 }
5328 return z.revert(r)
5329 }
5330
5331 // (public) this^e % m, 0 <= e < 2^32
5332 function bnModPowInt(e, m) {
5333 var z
5334 if (e < 256 || m.isEven()) z = new Classic(m)
5335 else z = new Montgomery(m)
5336 return this.exp(e, z)
5337 }
5338
5339 // protected
5340 proto.copyTo = bnpCopyTo
5341 proto.fromInt = bnpFromInt
5342 proto.fromString = bnpFromString
5343 proto.clamp = bnpClamp
5344 proto.dlShiftTo = bnpDLShiftTo
5345 proto.drShiftTo = bnpDRShiftTo
5346 proto.lShiftTo = bnpLShiftTo
5347 proto.rShiftTo = bnpRShiftTo
5348 proto.subTo = bnpSubTo
5349 proto.multiplyTo = bnpMultiplyTo
5350 proto.squareTo = bnpSquareTo
5351 proto.divRemTo = bnpDivRemTo
5352 proto.invDigit = bnpInvDigit
5353 proto.isEven = bnpIsEven
5354 proto.exp = bnpExp
5355
5356 // public
5357 proto.toString = bnToString
5358 proto.negate = bnNegate
5359 proto.abs = bnAbs
5360 proto.compareTo = bnCompareTo
5361 proto.bitLength = bnBitLength
5362 proto.byteLength = bnByteLength
5363 proto.mod = bnMod
5364 proto.modPowInt = bnModPowInt
5365
5366 // (public)
5367 function bnClone() {
5368 var r = new BigInteger()
5369 this.copyTo(r)
5370 return r
5371 }
5372
5373 // (public) return value as integer
5374 function bnIntValue() {
5375 if (this.s < 0) {
5376 if (this.t == 1) return this[0] - this.DV
5377 else if (this.t == 0) return -1
5378 } else if (this.t == 1) return this[0]
5379 else if (this.t == 0) return 0
5380 // assumes 16 < DB < 32
5381 return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
5382 }
5383
5384 // (public) return value as byte
5385 function bnByteValue() {
5386 return (this.t == 0) ? this.s : (this[0] << 24) >> 24
5387 }
5388
5389 // (public) return value as short (assumes DB>=16)
5390 function bnShortValue() {
5391 return (this.t == 0) ? this.s : (this[0] << 16) >> 16
5392 }
5393
5394 // (protected) return x s.t. r^x < DV
5395 function bnpChunkSize(r) {
5396 return Math.floor(Math.LN2 * this.DB / Math.log(r))
5397 }
5398
5399 // (public) 0 if this == 0, 1 if this > 0
5400 function bnSigNum() {
5401 if (this.s < 0) return -1
5402 else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0
5403 else return 1
5404 }
5405
5406 // (protected) convert to radix string
5407 function bnpToRadix(b) {
5408 if (b == null) b = 10
5409 if (this.signum() == 0 || b < 2 || b > 36) return "0"
5410 var cs = this.chunkSize(b)
5411 var a = Math.pow(b, cs)
5412 var d = nbv(a),
5413 y = new BigInteger(),
5414 z = new BigInteger(),
5415 r = ""
5416 this.divRemTo(d, y, z)
5417 while (y.signum() > 0) {
5418 r = (a + z.intValue())
5419 .toString(b)
5420 .substr(1) + r
5421 y.divRemTo(d, y, z)
5422 }
5423 return z.intValue()
5424 .toString(b) + r
5425 }
5426
5427 // (protected) convert from radix string
5428 function bnpFromRadix(s, b) {
5429 var self = this
5430 self.fromInt(0)
5431 if (b == null) b = 10
5432 var cs = self.chunkSize(b)
5433 var d = Math.pow(b, cs),
5434 mi = false,
5435 j = 0,
5436 w = 0
5437 for (var i = 0; i < s.length; ++i) {
5438 var x = intAt(s, i)
5439 if (x < 0) {
5440 if (s.charAt(i) == "-" && self.signum() == 0) mi = true
5441 continue
5442 }
5443 w = b * w + x
5444 if (++j >= cs) {
5445 self.dMultiply(d)
5446 self.dAddOffset(w, 0)
5447 j = 0
5448 w = 0
5449 }
5450 }
5451 if (j > 0) {
5452 self.dMultiply(Math.pow(b, j))
5453 self.dAddOffset(w, 0)
5454 }
5455 if (mi) BigInteger.ZERO.subTo(self, self)
5456 }
5457
5458 // (protected) alternate constructor
5459 function bnpFromNumber(a, b, c) {
5460 var self = this
5461 if ("number" == typeof b) {
5462 // new BigInteger(int,int,RNG)
5463 if (a < 2) self.fromInt(1)
5464 else {
5465 self.fromNumber(a, c)
5466 if (!self.testBit(a - 1)) // force MSB set
5467 self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)
5468 if (self.isEven()) self.dAddOffset(1, 0); // force odd
5469 while (!self.isProbablePrime(b)) {
5470 self.dAddOffset(2, 0)
5471 if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)
5472 }
5473 }
5474 } else {
5475 // new BigInteger(int,RNG)
5476 var x = new Array(),
5477 t = a & 7
5478 x.length = (a >> 3) + 1
5479 b.nextBytes(x)
5480 if (t > 0) x[0] &= ((1 << t) - 1)
5481 else x[0] = 0
5482 self.fromString(x, 256)
5483 }
5484 }
5485
5486 // (public) convert to bigendian byte array
5487 function bnToByteArray() {
5488 var self = this
5489 var i = self.t,
5490 r = new Array()
5491 r[0] = self.s
5492 var p = self.DB - (i * self.DB) % 8,
5493 d, k = 0
5494 if (i-- > 0) {
5495 if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)
5496 r[k++] = d | (self.s << (self.DB - p))
5497 while (i >= 0) {
5498 if (p < 8) {
5499 d = (self[i] & ((1 << p) - 1)) << (8 - p)
5500 d |= self[--i] >> (p += self.DB - 8)
5501 } else {
5502 d = (self[i] >> (p -= 8)) & 0xff
5503 if (p <= 0) {
5504 p += self.DB
5505 --i
5506 }
5507 }
5508 if ((d & 0x80) != 0) d |= -256
5509 if (k === 0 && (self.s & 0x80) != (d & 0x80))++k
5510 if (k > 0 || d != self.s) r[k++] = d
5511 }
5512 }
5513 return r
5514 }
5515
5516 function bnEquals(a) {
5517 return (this.compareTo(a) == 0)
5518 }
5519
5520 function bnMin(a) {
5521 return (this.compareTo(a) < 0) ? this : a
5522 }
5523
5524 function bnMax(a) {
5525 return (this.compareTo(a) > 0) ? this : a
5526 }
5527
5528 // (protected) r = this op a (bitwise)
5529 function bnpBitwiseTo(a, op, r) {
5530 var self = this
5531 var i, f, m = Math.min(a.t, self.t)
5532 for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])
5533 if (a.t < self.t) {
5534 f = a.s & self.DM
5535 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
5536 r.t = self.t
5537 } else {
5538 f = self.s & self.DM
5539 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
5540 r.t = a.t
5541 }
5542 r.s = op(self.s, a.s)
5543 r.clamp()
5544 }
5545
5546 // (public) this & a
5547 function op_and(x, y) {
5548 return x & y
5549 }
5550
5551 function bnAnd(a) {
5552 var r = new BigInteger()
5553 this.bitwiseTo(a, op_and, r)
5554 return r
5555 }
5556
5557 // (public) this | a
5558 function op_or(x, y) {
5559 return x | y
5560 }
5561
5562 function bnOr(a) {
5563 var r = new BigInteger()
5564 this.bitwiseTo(a, op_or, r)
5565 return r
5566 }
5567
5568 // (public) this ^ a
5569 function op_xor(x, y) {
5570 return x ^ y
5571 }
5572
5573 function bnXor(a) {
5574 var r = new BigInteger()
5575 this.bitwiseTo(a, op_xor, r)
5576 return r
5577 }
5578
5579 // (public) this & ~a
5580 function op_andnot(x, y) {
5581 return x & ~y
5582 }
5583
5584 function bnAndNot(a) {
5585 var r = new BigInteger()
5586 this.bitwiseTo(a, op_andnot, r)
5587 return r
5588 }
5589
5590 // (public) ~this
5591 function bnNot() {
5592 var r = new BigInteger()
5593 for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]
5594 r.t = this.t
5595 r.s = ~this.s
5596 return r
5597 }
5598
5599 // (public) this << n
5600 function bnShiftLeft(n) {
5601 var r = new BigInteger()
5602 if (n < 0) this.rShiftTo(-n, r)
5603 else this.lShiftTo(n, r)
5604 return r
5605 }
5606
5607 // (public) this >> n
5608 function bnShiftRight(n) {
5609 var r = new BigInteger()
5610 if (n < 0) this.lShiftTo(-n, r)
5611 else this.rShiftTo(n, r)
5612 return r
5613 }
5614
5615 // return index of lowest 1-bit in x, x < 2^31
5616 function lbit(x) {
5617 if (x == 0) return -1
5618 var r = 0
5619 if ((x & 0xffff) == 0) {
5620 x >>= 16
5621 r += 16
5622 }
5623 if ((x & 0xff) == 0) {
5624 x >>= 8
5625 r += 8
5626 }
5627 if ((x & 0xf) == 0) {
5628 x >>= 4
5629 r += 4
5630 }
5631 if ((x & 3) == 0) {
5632 x >>= 2
5633 r += 2
5634 }
5635 if ((x & 1) == 0)++r
5636 return r
5637 }
5638
5639 // (public) returns index of lowest 1-bit (or -1 if none)
5640 function bnGetLowestSetBit() {
5641 for (var i = 0; i < this.t; ++i)
5642 if (this[i] != 0) return i * this.DB + lbit(this[i])
5643 if (this.s < 0) return this.t * this.DB
5644 return -1
5645 }
5646
5647 // return number of 1 bits in x
5648 function cbit(x) {
5649 var r = 0
5650 while (x != 0) {
5651 x &= x - 1
5652 ++r
5653 }
5654 return r
5655 }
5656
5657 // (public) return number of set bits
5658 function bnBitCount() {
5659 var r = 0,
5660 x = this.s & this.DM
5661 for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)
5662 return r
5663 }
5664
5665 // (public) true iff nth bit is set
5666 function bnTestBit(n) {
5667 var j = Math.floor(n / this.DB)
5668 if (j >= this.t) return (this.s != 0)
5669 return ((this[j] & (1 << (n % this.DB))) != 0)
5670 }
5671
5672 // (protected) this op (1<<n)
5673 function bnpChangeBit(n, op) {
5674 var r = BigInteger.ONE.shiftLeft(n)
5675 this.bitwiseTo(r, op, r)
5676 return r
5677 }
5678
5679 // (public) this | (1<<n)
5680 function bnSetBit(n) {
5681 return this.changeBit(n, op_or)
5682 }
5683
5684 // (public) this & ~(1<<n)
5685 function bnClearBit(n) {
5686 return this.changeBit(n, op_andnot)
5687 }
5688
5689 // (public) this ^ (1<<n)
5690 function bnFlipBit(n) {
5691 return this.changeBit(n, op_xor)
5692 }
5693
5694 // (protected) r = this + a
5695 function bnpAddTo(a, r) {
5696 var self = this
5697
5698 var i = 0,
5699 c = 0,
5700 m = Math.min(a.t, self.t)
5701 while (i < m) {
5702 c += self[i] + a[i]
5703 r[i++] = c & self.DM
5704 c >>= self.DB
5705 }
5706 if (a.t < self.t) {
5707 c += a.s
5708 while (i < self.t) {
5709 c += self[i]
5710 r[i++] = c & self.DM
5711 c >>= self.DB
5712 }
5713 c += self.s
5714 } else {
5715 c += self.s
5716 while (i < a.t) {
5717 c += a[i]
5718 r[i++] = c & self.DM
5719 c >>= self.DB
5720 }
5721 c += a.s
5722 }
5723 r.s = (c < 0) ? -1 : 0
5724 if (c > 0) r[i++] = c
5725 else if (c < -1) r[i++] = self.DV + c
5726 r.t = i
5727 r.clamp()
5728 }
5729
5730 // (public) this + a
5731 function bnAdd(a) {
5732 var r = new BigInteger()
5733 this.addTo(a, r)
5734 return r
5735 }
5736
5737 // (public) this - a
5738 function bnSubtract(a) {
5739 var r = new BigInteger()
5740 this.subTo(a, r)
5741 return r
5742 }
5743
5744 // (public) this * a
5745 function bnMultiply(a) {
5746 var r = new BigInteger()
5747 this.multiplyTo(a, r)
5748 return r
5749 }
5750
5751 // (public) this^2
5752 function bnSquare() {
5753 var r = new BigInteger()
5754 this.squareTo(r)
5755 return r
5756 }
5757
5758 // (public) this / a
5759 function bnDivide(a) {
5760 var r = new BigInteger()
5761 this.divRemTo(a, r, null)
5762 return r
5763 }
5764
5765 // (public) this % a
5766 function bnRemainder(a) {
5767 var r = new BigInteger()
5768 this.divRemTo(a, null, r)
5769 return r
5770 }
5771
5772 // (public) [this/a,this%a]
5773 function bnDivideAndRemainder(a) {
5774 var q = new BigInteger(),
5775 r = new BigInteger()
5776 this.divRemTo(a, q, r)
5777 return new Array(q, r)
5778 }
5779
5780 // (protected) this *= n, this >= 0, 1 < n < DV
5781 function bnpDMultiply(n) {
5782 this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)
5783 ++this.t
5784 this.clamp()
5785 }
5786
5787 // (protected) this += n << w words, this >= 0
5788 function bnpDAddOffset(n, w) {
5789 if (n == 0) return
5790 while (this.t <= w) this[this.t++] = 0
5791 this[w] += n
5792 while (this[w] >= this.DV) {
5793 this[w] -= this.DV
5794 if (++w >= this.t) this[this.t++] = 0
5795 ++this[w]
5796 }
5797 }
5798
5799 // A "null" reducer
5800 function NullExp() {}
5801
5802 function nNop(x) {
5803 return x
5804 }
5805
5806 function nMulTo(x, y, r) {
5807 x.multiplyTo(y, r)
5808 }
5809
5810 function nSqrTo(x, r) {
5811 x.squareTo(r)
5812 }
5813
5814 NullExp.prototype.convert = nNop
5815 NullExp.prototype.revert = nNop
5816 NullExp.prototype.mulTo = nMulTo
5817 NullExp.prototype.sqrTo = nSqrTo
5818
5819 // (public) this^e
5820 function bnPow(e) {
5821 return this.exp(e, new NullExp())
5822 }
5823
5824 // (protected) r = lower n words of "this * a", a.t <= n
5825 // "this" should be the larger one if appropriate.
5826 function bnpMultiplyLowerTo(a, n, r) {
5827 var i = Math.min(this.t + a.t, n)
5828 r.s = 0; // assumes a,this >= 0
5829 r.t = i
5830 while (i > 0) r[--i] = 0
5831 var j
5832 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)
5833 for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)
5834 r.clamp()
5835 }
5836
5837 // (protected) r = "this * a" without lower n words, n > 0
5838 // "this" should be the larger one if appropriate.
5839 function bnpMultiplyUpperTo(a, n, r) {
5840 --n
5841 var i = r.t = this.t + a.t - n
5842 r.s = 0; // assumes a,this >= 0
5843 while (--i >= 0) r[i] = 0
5844 for (i = Math.max(n - this.t, 0); i < a.t; ++i)
5845 r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)
5846 r.clamp()
5847 r.drShiftTo(1, r)
5848 }
5849
5850 // Barrett modular reduction
5851 function Barrett(m) {
5852 // setup Barrett
5853 this.r2 = new BigInteger()
5854 this.q3 = new BigInteger()
5855 BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)
5856 this.mu = this.r2.divide(m)
5857 this.m = m
5858 }
5859
5860 function barrettConvert(x) {
5861 if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)
5862 else if (x.compareTo(this.m) < 0) return x
5863 else {
5864 var r = new BigInteger()
5865 x.copyTo(r)
5866 this.reduce(r)
5867 return r
5868 }
5869 }
5870
5871 function barrettRevert(x) {
5872 return x
5873 }
5874
5875 // x = x mod m (HAC 14.42)
5876 function barrettReduce(x) {
5877 var self = this
5878 x.drShiftTo(self.m.t - 1, self.r2)
5879 if (x.t > self.m.t + 1) {
5880 x.t = self.m.t + 1
5881 x.clamp()
5882 }
5883 self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)
5884 self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)
5885 while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)
5886 x.subTo(self.r2, x)
5887 while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)
5888 }
5889
5890 // r = x^2 mod m; x != r
5891 function barrettSqrTo(x, r) {
5892 x.squareTo(r)
5893 this.reduce(r)
5894 }
5895
5896 // r = x*y mod m; x,y != r
5897 function barrettMulTo(x, y, r) {
5898 x.multiplyTo(y, r)
5899 this.reduce(r)
5900 }
5901
5902 Barrett.prototype.convert = barrettConvert
5903 Barrett.prototype.revert = barrettRevert
5904 Barrett.prototype.reduce = barrettReduce
5905 Barrett.prototype.mulTo = barrettMulTo
5906 Barrett.prototype.sqrTo = barrettSqrTo
5907
5908 // (public) this^e % m (HAC 14.85)
5909 function bnModPow(e, m) {
5910 var i = e.bitLength(),
5911 k, r = nbv(1),
5912 z
5913 if (i <= 0) return r
5914 else if (i < 18) k = 1
5915 else if (i < 48) k = 3
5916 else if (i < 144) k = 4
5917 else if (i < 768) k = 5
5918 else k = 6
5919 if (i < 8)
5920 z = new Classic(m)
5921 else if (m.isEven())
5922 z = new Barrett(m)
5923 else
5924 z = new Montgomery(m)
5925
5926 // precomputation
5927 var g = new Array(),
5928 n = 3,
5929 k1 = k - 1,
5930 km = (1 << k) - 1
5931 g[1] = z.convert(this)
5932 if (k > 1) {
5933 var g2 = new BigInteger()
5934 z.sqrTo(g[1], g2)
5935 while (n <= km) {
5936 g[n] = new BigInteger()
5937 z.mulTo(g2, g[n - 2], g[n])
5938 n += 2
5939 }
5940 }
5941
5942 var j = e.t - 1,
5943 w, is1 = true,
5944 r2 = new BigInteger(),
5945 t
5946 i = nbits(e[j]) - 1
5947 while (j >= 0) {
5948 if (i >= k1) w = (e[j] >> (i - k1)) & km
5949 else {
5950 w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
5951 if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)
5952 }
5953
5954 n = k
5955 while ((w & 1) == 0) {
5956 w >>= 1
5957 --n
5958 }
5959 if ((i -= n) < 0) {
5960 i += this.DB
5961 --j
5962 }
5963 if (is1) { // ret == 1, don't bother squaring or multiplying it
5964 g[w].copyTo(r)
5965 is1 = false
5966 } else {
5967 while (n > 1) {
5968 z.sqrTo(r, r2)
5969 z.sqrTo(r2, r)
5970 n -= 2
5971 }
5972 if (n > 0) z.sqrTo(r, r2)
5973 else {
5974 t = r
5975 r = r2
5976 r2 = t
5977 }
5978 z.mulTo(r2, g[w], r)
5979 }
5980
5981 while (j >= 0 && (e[j] & (1 << i)) == 0) {
5982 z.sqrTo(r, r2)
5983 t = r
5984 r = r2
5985 r2 = t
5986 if (--i < 0) {
5987 i = this.DB - 1
5988 --j
5989 }
5990 }
5991 }
5992 return z.revert(r)
5993 }
5994
5995 // (public) gcd(this,a) (HAC 14.54)
5996 function bnGCD(a) {
5997 var x = (this.s < 0) ? this.negate() : this.clone()
5998 var y = (a.s < 0) ? a.negate() : a.clone()
5999 if (x.compareTo(y) < 0) {
6000 var t = x
6001 x = y
6002 y = t
6003 }
6004 var i = x.getLowestSetBit(),
6005 g = y.getLowestSetBit()
6006 if (g < 0) return x
6007 if (i < g) g = i
6008 if (g > 0) {
6009 x.rShiftTo(g, x)
6010 y.rShiftTo(g, y)
6011 }
6012 while (x.signum() > 0) {
6013 if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)
6014 if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)
6015 if (x.compareTo(y) >= 0) {
6016 x.subTo(y, x)
6017 x.rShiftTo(1, x)
6018 } else {
6019 y.subTo(x, y)
6020 y.rShiftTo(1, y)
6021 }
6022 }
6023 if (g > 0) y.lShiftTo(g, y)
6024 return y
6025 }
6026
6027 // (protected) this % n, n < 2^26
6028 function bnpModInt(n) {
6029 if (n <= 0) return 0
6030 var d = this.DV % n,
6031 r = (this.s < 0) ? n - 1 : 0
6032 if (this.t > 0)
6033 if (d == 0) r = this[0] % n
6034 else
6035 for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n
6036 return r
6037 }
6038
6039 // (public) 1/this % m (HAC 14.61)
6040 function bnModInverse(m) {
6041 var ac = m.isEven()
6042 if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO
6043 var u = m.clone(),
6044 v = this.clone()
6045 var a = nbv(1),
6046 b = nbv(0),
6047 c = nbv(0),
6048 d = nbv(1)
6049 while (u.signum() != 0) {
6050 while (u.isEven()) {
6051 u.rShiftTo(1, u)
6052 if (ac) {
6053 if (!a.isEven() || !b.isEven()) {
6054 a.addTo(this, a)
6055 b.subTo(m, b)
6056 }
6057 a.rShiftTo(1, a)
6058 } else if (!b.isEven()) b.subTo(m, b)
6059 b.rShiftTo(1, b)
6060 }
6061 while (v.isEven()) {
6062 v.rShiftTo(1, v)
6063 if (ac) {
6064 if (!c.isEven() || !d.isEven()) {
6065 c.addTo(this, c)
6066 d.subTo(m, d)
6067 }
6068 c.rShiftTo(1, c)
6069 } else if (!d.isEven()) d.subTo(m, d)
6070 d.rShiftTo(1, d)
6071 }
6072 if (u.compareTo(v) >= 0) {
6073 u.subTo(v, u)
6074 if (ac) a.subTo(c, a)
6075 b.subTo(d, b)
6076 } else {
6077 v.subTo(u, v)
6078 if (ac) c.subTo(a, c)
6079 d.subTo(b, d)
6080 }
6081 }
6082 if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO
6083 if (d.compareTo(m) >= 0) return d.subtract(m)
6084 if (d.signum() < 0) d.addTo(m, d)
6085 else return d
6086 if (d.signum() < 0) return d.add(m)
6087 else return d
6088 }
6089
6090 var lowprimes = [
6091 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
6092 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
6093 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
6094 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
6095 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
6096 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
6097 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
6098 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
6099 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
6100 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
6101 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
6102 ]
6103
6104 var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
6105
6106 // (public) test primality with certainty >= 1-.5^t
6107 function bnIsProbablePrime(t) {
6108 var i, x = this.abs()
6109 if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
6110 for (i = 0; i < lowprimes.length; ++i)
6111 if (x[0] == lowprimes[i]) return true
6112 return false
6113 }
6114 if (x.isEven()) return false
6115 i = 1
6116 while (i < lowprimes.length) {
6117 var m = lowprimes[i],
6118 j = i + 1
6119 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
6120 m = x.modInt(m)
6121 while (i < j) if (m % lowprimes[i++] == 0) return false
6122 }
6123 return x.millerRabin(t)
6124 }
6125
6126 // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
6127 function bnpMillerRabin(t) {
6128 var n1 = this.subtract(BigInteger.ONE)
6129 var k = n1.getLowestSetBit()
6130 if (k <= 0) return false
6131 var r = n1.shiftRight(k)
6132 t = (t + 1) >> 1
6133 if (t > lowprimes.length) t = lowprimes.length
6134 var a = new BigInteger(null)
6135 var j, bases = []
6136 for (var i = 0; i < t; ++i) {
6137 for (;;) {
6138 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
6139 if (bases.indexOf(j) == -1) break
6140 }
6141 bases.push(j)
6142 a.fromInt(j)
6143 var y = a.modPow(r, this)
6144 if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
6145 var j = 1
6146 while (j++ < k && y.compareTo(n1) != 0) {
6147 y = y.modPowInt(2, this)
6148 if (y.compareTo(BigInteger.ONE) == 0) return false
6149 }
6150 if (y.compareTo(n1) != 0) return false
6151 }
6152 }
6153 return true
6154 }
6155
6156 // protected
6157 proto.chunkSize = bnpChunkSize
6158 proto.toRadix = bnpToRadix
6159 proto.fromRadix = bnpFromRadix
6160 proto.fromNumber = bnpFromNumber
6161 proto.bitwiseTo = bnpBitwiseTo
6162 proto.changeBit = bnpChangeBit
6163 proto.addTo = bnpAddTo
6164 proto.dMultiply = bnpDMultiply
6165 proto.dAddOffset = bnpDAddOffset
6166 proto.multiplyLowerTo = bnpMultiplyLowerTo
6167 proto.multiplyUpperTo = bnpMultiplyUpperTo
6168 proto.modInt = bnpModInt
6169 proto.millerRabin = bnpMillerRabin
6170
6171 // public
6172 proto.clone = bnClone
6173 proto.intValue = bnIntValue
6174 proto.byteValue = bnByteValue
6175 proto.shortValue = bnShortValue
6176 proto.signum = bnSigNum
6177 proto.toByteArray = bnToByteArray
6178 proto.equals = bnEquals
6179 proto.min = bnMin
6180 proto.max = bnMax
6181 proto.and = bnAnd
6182 proto.or = bnOr
6183 proto.xor = bnXor
6184 proto.andNot = bnAndNot
6185 proto.not = bnNot
6186 proto.shiftLeft = bnShiftLeft
6187 proto.shiftRight = bnShiftRight
6188 proto.getLowestSetBit = bnGetLowestSetBit
6189 proto.bitCount = bnBitCount
6190 proto.testBit = bnTestBit
6191 proto.setBit = bnSetBit
6192 proto.clearBit = bnClearBit
6193 proto.flipBit = bnFlipBit
6194 proto.add = bnAdd
6195 proto.subtract = bnSubtract
6196 proto.multiply = bnMultiply
6197 proto.divide = bnDivide
6198 proto.remainder = bnRemainder
6199 proto.divideAndRemainder = bnDivideAndRemainder
6200 proto.modPow = bnModPow
6201 proto.modInverse = bnModInverse
6202 proto.pow = bnPow
6203 proto.gcd = bnGCD
6204 proto.isProbablePrime = bnIsProbablePrime
6205
6206 // JSBN-specific extension
6207 proto.square = bnSquare
6208
6209 // constants
6210 BigInteger.ZERO = nbv(0)
6211 BigInteger.ONE = nbv(1)
6212 BigInteger.valueOf = nbv
6213
6214 module.exports = BigInteger
6215
6216 },{"../package.json":4}],2:[function(require,module,exports){
6217 (function (Buffer){
6218 // FIXME: Kind of a weird way to throw exceptions, consider removing
6219 var assert = require('assert')
6220 var BigInteger = require('./bigi')
6221
6222 /**
6223 * Turns a byte array into a big integer.
6224 *
6225 * This function will interpret a byte array as a big integer in big
6226 * endian notation.
6227 */
6228 BigInteger.fromByteArrayUnsigned = function(byteArray) {
6229 // BigInteger expects a DER integer conformant byte array
6230 if (byteArray[0] & 0x80) {
6231 return new BigInteger([0].concat(byteArray))
6232 }
6233
6234 return new BigInteger(byteArray)
6235 }
6236
6237 /**
6238 * Returns a byte array representation of the big integer.
6239 *
6240 * This returns the absolute of the contained value in big endian
6241 * form. A value of zero results in an empty array.
6242 */
6243 BigInteger.prototype.toByteArrayUnsigned = function() {
6244 var byteArray = this.toByteArray()
6245 return byteArray[0] === 0 ? byteArray.slice(1) : byteArray
6246 }
6247
6248 BigInteger.fromDERInteger = function(byteArray) {
6249 return new BigInteger(byteArray)
6250 }
6251
6252 /*
6253 * Converts BigInteger to a DER integer representation.
6254 *
6255 * The format for this value uses the most significant bit as a sign
6256 * bit. If the most significant bit is already set and the integer is
6257 * positive, a 0x00 is prepended.
6258 *
6259 * Examples:
6260 *
6261 * 0 => 0x00
6262 * 1 => 0x01
6263 * -1 => 0xff
6264 * 127 => 0x7f
6265 * -127 => 0x81
6266 * 128 => 0x0080
6267 * -128 => 0x80
6268 * 255 => 0x00ff
6269 * -255 => 0xff01
6270 * 16300 => 0x3fac
6271 * -16300 => 0xc054
6272 * 62300 => 0x00f35c
6273 * -62300 => 0xff0ca4
6274 */
6275 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
6276
6277 BigInteger.fromBuffer = function(buffer) {
6278 // BigInteger expects a DER integer conformant byte array
6279 if (buffer[0] & 0x80) {
6280 var byteArray = Array.prototype.slice.call(buffer)
6281
6282 return new BigInteger([0].concat(byteArray))
6283 }
6284
6285 return new BigInteger(buffer)
6286 }
6287
6288 BigInteger.fromHex = function(hex) {
6289 if (hex === '') return BigInteger.ZERO
6290
6291 assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')
6292 assert.equal(hex.length % 2, 0, 'Incomplete hex')
6293 return new BigInteger(hex, 16)
6294 }
6295
6296 BigInteger.prototype.toBuffer = function(size) {
6297 var byteArray = this.toByteArrayUnsigned()
6298 var zeros = []
6299
6300 var padding = size - byteArray.length
6301 while (zeros.length < padding) zeros.push(0)
6302
6303 return new Buffer(zeros.concat(byteArray))
6304 }
6305
6306 BigInteger.prototype.toHex = function(size) {
6307 return this.toBuffer(size).toString('hex')
6308 }
6309
6310 }).call(this,require("buffer").Buffer)
6311 },{"./bigi":1,"assert":5,"buffer":7}],3:[function(require,module,exports){
6312 var BigInteger = require('./bigi')
6313
6314 //addons
6315 require('./convert')
6316
6317 module.exports = BigInteger
6318 },{"./bigi":1,"./convert":2}],4:[function(require,module,exports){
6319 module.exports={
6320 "name": "bigi",
6321 "version": "1.4.0",
6322 "description": "Big integers.",
6323 "keywords": [
6324 "cryptography",
6325 "math",
6326 "bitcoin",
6327 "arbitrary",
6328 "precision",
6329 "arithmetic",
6330 "big",
6331 "integer",
6332 "int",
6333 "number",
6334 "biginteger",
6335 "bigint",
6336 "bignumber",
6337 "decimal",
6338 "float"
6339 ],
6340 "devDependencies": {
6341 "mocha": "^1.20.1",
6342 "jshint": "^2.5.1",
6343 "coveralls": "^2.10.0",
6344 "istanbul": "^0.2.11"
6345 },
6346 "repository": {
6347 "url": "https://github.com/cryptocoinjs/bigi",
6348 "type": "git"
6349 },
6350 "main": "./lib/index.js",
6351 "scripts": {
6352 "test": "_mocha -- test/*.js",
6353 "jshint": "jshint --config jshint.json lib/*.js ; true",
6354 "unit": "mocha",
6355 "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
6356 "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info"
6357 },
6358 "dependencies": {},
6359 "testling": {
6360 "files": "test/*.js",
6361 "harness": "mocha",
6362 "browsers": [
6363 "ie/9..latest",
6364 "firefox/latest",
6365 "chrome/latest",
6366 "safari/6.0..latest",
6367 "iphone/6.0..latest",
6368 "android-browser/4.2..latest"
6369 ]
6370 },
6371 "bugs": {
6372 "url": "https://github.com/cryptocoinjs/bigi/issues"
6373 },
6374 "homepage": "https://github.com/cryptocoinjs/bigi",
6375 "_id": "bigi@1.4.0",
6376 "dist": {
6377 "shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac",
6378 "tarball": "http://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
6379 },
6380 "_from": "bigi@^1.4.0",
6381 "_npmVersion": "1.4.3",
6382 "_npmUser": {
6383 "name": "jp",
6384 "email": "jprichardson@gmail.com"
6385 },
6386 "maintainers": [
6387 {
6388 "name": "jp",
6389 "email": "jprichardson@gmail.com"
6390 },
6391 {
6392 "name": "midnightlightning",
6393 "email": "boydb@midnightdesign.ws"
6394 },
6395 {
6396 "name": "sidazhang",
6397 "email": "sidazhang89@gmail.com"
6398 },
6399 {
6400 "name": "nadav",
6401 "email": "npm@shesek.info"
6402 }
6403 ],
6404 "directories": {},
6405 "_shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac",
6406 "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
6407 }
6408
6409 },{}],5:[function(require,module,exports){
6410 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
6411 //
6412 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
6413 //
6414 // Originally from narwhal.js (http://narwhaljs.org)
6415 // Copyright (c) 2009 Thomas Robinson <280north.com>
6416 //
6417 // Permission is hereby granted, free of charge, to any person obtaining a copy
6418 // of this software and associated documentation files (the 'Software'), to
6419 // deal in the Software without restriction, including without limitation the
6420 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
6421 // sell copies of the Software, and to permit persons to whom the Software is
6422 // furnished to do so, subject to the following conditions:
6423 //
6424 // The above copyright notice and this permission notice shall be included in
6425 // all copies or substantial portions of the Software.
6426 //
6427 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
6428 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
6429 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
6430 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
6431 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
6432 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
6433
6434 // when used in node, this will actually load the util module we depend on
6435 // versus loading the builtin util module as happens otherwise
6436 // this is a bug in node module loading as far as I am concerned
6437 var util = require('util/');
6438
6439 var pSlice = Array.prototype.slice;
6440 var hasOwn = Object.prototype.hasOwnProperty;
6441
6442 // 1. The assert module provides functions that throw
6443 // AssertionError's when particular conditions are not met. The
6444 // assert module must conform to the following interface.
6445
6446 var assert = module.exports = ok;
6447
6448 // 2. The AssertionError is defined in assert.
6449 // new assert.AssertionError({ message: message,
6450 // actual: actual,
6451 // expected: expected })
6452
6453 assert.AssertionError = function AssertionError(options) {
6454 this.name = 'AssertionError';
6455 this.actual = options.actual;
6456 this.expected = options.expected;
6457 this.operator = options.operator;
6458 if (options.message) {
6459 this.message = options.message;
6460 this.generatedMessage = false;
6461 } else {
6462 this.message = getMessage(this);
6463 this.generatedMessage = true;
6464 }
6465 var stackStartFunction = options.stackStartFunction || fail;
6466
6467 if (Error.captureStackTrace) {
6468 Error.captureStackTrace(this, stackStartFunction);
6469 }
6470 else {
6471 // non v8 browsers so we can have a stacktrace
6472 var err = new Error();
6473 if (err.stack) {
6474 var out = err.stack;
6475
6476 // try to strip useless frames
6477 var fn_name = stackStartFunction.name;
6478 var idx = out.indexOf('\n' + fn_name);
6479 if (idx >= 0) {
6480 // once we have located the function frame
6481 // we need to strip out everything before it (and its line)
6482 var next_line = out.indexOf('\n', idx + 1);
6483 out = out.substring(next_line + 1);
6484 }
6485
6486 this.stack = out;
6487 }
6488 }
6489 };
6490
6491 // assert.AssertionError instanceof Error
6492 util.inherits(assert.AssertionError, Error);
6493
6494 function replacer(key, value) {
6495 if (util.isUndefined(value)) {
6496 return '' + value;
6497 }
6498 if (util.isNumber(value) && !isFinite(value)) {
6499 return value.toString();
6500 }
6501 if (util.isFunction(value) || util.isRegExp(value)) {
6502 return value.toString();
6503 }
6504 return value;
6505 }
6506
6507 function truncate(s, n) {
6508 if (util.isString(s)) {
6509 return s.length < n ? s : s.slice(0, n);
6510 } else {
6511 return s;
6512 }
6513 }
6514
6515 function getMessage(self) {
6516 return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' +
6517 self.operator + ' ' +
6518 truncate(JSON.stringify(self.expected, replacer), 128);
6519 }
6520
6521 // At present only the three keys mentioned above are used and
6522 // understood by the spec. Implementations or sub modules can pass
6523 // other keys to the AssertionError's constructor - they will be
6524 // ignored.
6525
6526 // 3. All of the following functions must throw an AssertionError
6527 // when a corresponding condition is not met, with a message that
6528 // may be undefined if not provided. All assertion methods provide
6529 // both the actual and expected values to the assertion error for
6530 // display purposes.
6531
6532 function fail(actual, expected, message, operator, stackStartFunction) {
6533 throw new assert.AssertionError({
6534 message: message,
6535 actual: actual,
6536 expected: expected,
6537 operator: operator,
6538 stackStartFunction: stackStartFunction
6539 });
6540 }
6541
6542 // EXTENSION! allows for well behaved errors defined elsewhere.
6543 assert.fail = fail;
6544
6545 // 4. Pure assertion tests whether a value is truthy, as determined
6546 // by !!guard.
6547 // assert.ok(guard, message_opt);
6548 // This statement is equivalent to assert.equal(true, !!guard,
6549 // message_opt);. To test strictly for the value true, use
6550 // assert.strictEqual(true, guard, message_opt);.
6551
6552 function ok(value, message) {
6553 if (!value) fail(value, true, message, '==', assert.ok);
6554 }
6555 assert.ok = ok;
6556
6557 // 5. The equality assertion tests shallow, coercive equality with
6558 // ==.
6559 // assert.equal(actual, expected, message_opt);
6560
6561 assert.equal = function equal(actual, expected, message) {
6562 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
6563 };
6564
6565 // 6. The non-equality assertion tests for whether two objects are not equal
6566 // with != assert.notEqual(actual, expected, message_opt);
6567
6568 assert.notEqual = function notEqual(actual, expected, message) {
6569 if (actual == expected) {
6570 fail(actual, expected, message, '!=', assert.notEqual);
6571 }
6572 };
6573
6574 // 7. The equivalence assertion tests a deep equality relation.
6575 // assert.deepEqual(actual, expected, message_opt);
6576
6577 assert.deepEqual = function deepEqual(actual, expected, message) {
6578 if (!_deepEqual(actual, expected)) {
6579 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
6580 }
6581 };
6582
6583 function _deepEqual(actual, expected) {
6584 // 7.1. All identical values are equivalent, as determined by ===.
6585 if (actual === expected) {
6586 return true;
6587
6588 } else if (util.isBuffer(actual) && util.isBuffer(expected)) {
6589 if (actual.length != expected.length) return false;
6590
6591 for (var i = 0; i < actual.length; i++) {
6592 if (actual[i] !== expected[i]) return false;
6593 }
6594
6595 return true;
6596
6597 // 7.2. If the expected value is a Date object, the actual value is
6598 // equivalent if it is also a Date object that refers to the same time.
6599 } else if (util.isDate(actual) && util.isDate(expected)) {
6600 return actual.getTime() === expected.getTime();
6601
6602 // 7.3 If the expected value is a RegExp object, the actual value is
6603 // equivalent if it is also a RegExp object with the same source and
6604 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
6605 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
6606 return actual.source === expected.source &&
6607 actual.global === expected.global &&
6608 actual.multiline === expected.multiline &&
6609 actual.lastIndex === expected.lastIndex &&
6610 actual.ignoreCase === expected.ignoreCase;
6611
6612 // 7.4. Other pairs that do not both pass typeof value == 'object',
6613 // equivalence is determined by ==.
6614 } else if (!util.isObject(actual) && !util.isObject(expected)) {
6615 return actual == expected;
6616
6617 // 7.5 For all other Object pairs, including Array objects, equivalence is
6618 // determined by having the same number of owned properties (as verified
6619 // with Object.prototype.hasOwnProperty.call), the same set of keys
6620 // (although not necessarily the same order), equivalent values for every
6621 // corresponding key, and an identical 'prototype' property. Note: this
6622 // accounts for both named and indexed properties on Arrays.
6623 } else {
6624 return objEquiv(actual, expected);
6625 }
6626 }
6627
6628 function isArguments(object) {
6629 return Object.prototype.toString.call(object) == '[object Arguments]';
6630 }
6631
6632 function objEquiv(a, b) {
6633 if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b))
6634 return false;
6635 // an identical 'prototype' property.
6636 if (a.prototype !== b.prototype) return false;
6637 // if one is a primitive, the other must be same
6638 if (util.isPrimitive(a) || util.isPrimitive(b)) {
6639 return a === b;
6640 }
6641 var aIsArgs = isArguments(a),
6642 bIsArgs = isArguments(b);
6643 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
6644 return false;
6645 if (aIsArgs) {
6646 a = pSlice.call(a);
6647 b = pSlice.call(b);
6648 return _deepEqual(a, b);
6649 }
6650 var ka = objectKeys(a),
6651 kb = objectKeys(b),
6652 key, i;
6653 // having the same number of owned properties (keys incorporates
6654 // hasOwnProperty)
6655 if (ka.length != kb.length)
6656 return false;
6657 //the same set of keys (although not necessarily the same order),
6658 ka.sort();
6659 kb.sort();
6660 //~~~cheap key test
6661 for (i = ka.length - 1; i >= 0; i--) {
6662 if (ka[i] != kb[i])
6663 return false;
6664 }
6665 //equivalent values for every corresponding key, and
6666 //~~~possibly expensive deep test
6667 for (i = ka.length - 1; i >= 0; i--) {
6668 key = ka[i];
6669 if (!_deepEqual(a[key], b[key])) return false;
6670 }
6671 return true;
6672 }
6673
6674 // 8. The non-equivalence assertion tests for any deep inequality.
6675 // assert.notDeepEqual(actual, expected, message_opt);
6676
6677 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
6678 if (_deepEqual(actual, expected)) {
6679 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
6680 }
6681 };
6682
6683 // 9. The strict equality assertion tests strict equality, as determined by ===.
6684 // assert.strictEqual(actual, expected, message_opt);
6685
6686 assert.strictEqual = function strictEqual(actual, expected, message) {
6687 if (actual !== expected) {
6688 fail(actual, expected, message, '===', assert.strictEqual);
6689 }
6690 };
6691
6692 // 10. The strict non-equality assertion tests for strict inequality, as
6693 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
6694
6695 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
6696 if (actual === expected) {
6697 fail(actual, expected, message, '!==', assert.notStrictEqual);
6698 }
6699 };
6700
6701 function expectedException(actual, expected) {
6702 if (!actual || !expected) {
6703 return false;
6704 }
6705
6706 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
6707 return expected.test(actual);
6708 } else if (actual instanceof expected) {
6709 return true;
6710 } else if (expected.call({}, actual) === true) {
6711 return true;
6712 }
6713
6714 return false;
6715 }
6716
6717 function _throws(shouldThrow, block, expected, message) {
6718 var actual;
6719
6720 if (util.isString(expected)) {
6721 message = expected;
6722 expected = null;
6723 }
6724
6725 try {
6726 block();
6727 } catch (e) {
6728 actual = e;
6729 }
6730
6731 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
6732 (message ? ' ' + message : '.');
6733
6734 if (shouldThrow && !actual) {
6735 fail(actual, expected, 'Missing expected exception' + message);
6736 }
6737
6738 if (!shouldThrow && expectedException(actual, expected)) {
6739 fail(actual, expected, 'Got unwanted exception' + message);
6740 }
6741
6742 if ((shouldThrow && actual && expected &&
6743 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
6744 throw actual;
6745 }
6746 }
6747
6748 // 11. Expected to throw an error:
6749 // assert.throws(block, Error_opt, message_opt);
6750
6751 assert.throws = function(block, /*optional*/error, /*optional*/message) {
6752 _throws.apply(this, [true].concat(pSlice.call(arguments)));
6753 };
6754
6755 // EXTENSION! This is annoying to write outside this module.
6756 assert.doesNotThrow = function(block, /*optional*/message) {
6757 _throws.apply(this, [false].concat(pSlice.call(arguments)));
6758 };
6759
6760 assert.ifError = function(err) { if (err) {throw err;}};
6761
6762 var objectKeys = Object.keys || function (obj) {
6763 var keys = [];
6764 for (var key in obj) {
6765 if (hasOwn.call(obj, key)) keys.push(key);
6766 }
6767 return keys;
6768 };
6769
6770 },{"util/":29}],6:[function(require,module,exports){
6771
6772 },{}],7:[function(require,module,exports){
6773 /*!
6774 * The buffer module from node.js, for the browser.
6775 *
6776 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
6777 * @license MIT
6778 */
6779
6780 var base64 = require('base64-js')
6781 var ieee754 = require('ieee754')
6782 var isArray = require('is-array')
6783
6784 exports.Buffer = Buffer
6785 exports.SlowBuffer = SlowBuffer
6786 exports.INSPECT_MAX_BYTES = 50
6787 Buffer.poolSize = 8192 // not used by this implementation
6788
6789 var rootParent = {}
6790
6791 /**
6792 * If `Buffer.TYPED_ARRAY_SUPPORT`:
6793 * === true Use Uint8Array implementation (fastest)
6794 * === false Use Object implementation (most compatible, even IE6)
6795 *
6796 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
6797 * Opera 11.6+, iOS 4.2+.
6798 *
6799 * Due to various browser bugs, sometimes the Object implementation will be used even
6800 * when the browser supports typed arrays.
6801 *
6802 * Note:
6803 *
6804 * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
6805 * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
6806 *
6807 * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property
6808 * on objects.
6809 *
6810 * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
6811 *
6812 * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
6813 * incorrect length in some situations.
6814
6815 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
6816 * get the Object implementation, which is slower but behaves correctly.
6817 */
6818 Buffer.TYPED_ARRAY_SUPPORT = (function () {
6819 function Bar () {}
6820 try {
6821 var arr = new Uint8Array(1)
6822 arr.foo = function () { return 42 }
6823 arr.constructor = Bar
6824 return arr.foo() === 42 && // typed array instances can be augmented
6825 arr.constructor === Bar && // constructor can be set
6826 typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
6827 arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
6828 } catch (e) {
6829 return false
6830 }
6831 })()
6832
6833 function kMaxLength () {
6834 return Buffer.TYPED_ARRAY_SUPPORT
6835 ? 0x7fffffff
6836 : 0x3fffffff
6837 }
6838
6839 /**
6840 * Class: Buffer
6841 * =============
6842 *
6843 * The Buffer constructor returns instances of `Uint8Array` that are augmented
6844 * with function properties for all the node `Buffer` API functions. We use
6845 * `Uint8Array` so that square bracket notation works as expected -- it returns
6846 * a single octet.
6847 *
6848 * By augmenting the instances, we can avoid modifying the `Uint8Array`
6849 * prototype.
6850 */
6851 function Buffer (arg) {
6852 if (!(this instanceof Buffer)) {
6853 // Avoid going through an ArgumentsAdaptorTrampoline in the common case.
6854 if (arguments.length > 1) return new Buffer(arg, arguments[1])
6855 return new Buffer(arg)
6856 }
6857
6858 this.length = 0
6859 this.parent = undefined
6860
6861 // Common case.
6862 if (typeof arg === 'number') {
6863 return fromNumber(this, arg)
6864 }
6865
6866 // Slightly less common case.
6867 if (typeof arg === 'string') {
6868 return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')
6869 }
6870
6871 // Unusual.
6872 return fromObject(this, arg)
6873 }
6874
6875 function fromNumber (that, length) {
6876 that = allocate(that, length < 0 ? 0 : checked(length) | 0)
6877 if (!Buffer.TYPED_ARRAY_SUPPORT) {
6878 for (var i = 0; i < length; i++) {
6879 that[i] = 0
6880 }
6881 }
6882 return that
6883 }
6884
6885 function fromString (that, string, encoding) {
6886 if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'
6887
6888 // Assumption: byteLength() return value is always < kMaxLength.
6889 var length = byteLength(string, encoding) | 0
6890 that = allocate(that, length)
6891
6892 that.write(string, encoding)
6893 return that
6894 }
6895
6896 function fromObject (that, object) {
6897 if (Buffer.isBuffer(object)) return fromBuffer(that, object)
6898
6899 if (isArray(object)) return fromArray(that, object)
6900
6901 if (object == null) {
6902 throw new TypeError('must start with number, buffer, array or string')
6903 }
6904
6905 if (typeof ArrayBuffer !== 'undefined') {
6906 if (object.buffer instanceof ArrayBuffer) {
6907 return fromTypedArray(that, object)
6908 }
6909 if (object instanceof ArrayBuffer) {
6910 return fromArrayBuffer(that, object)
6911 }
6912 }
6913
6914 if (object.length) return fromArrayLike(that, object)
6915
6916 return fromJsonObject(that, object)
6917 }
6918
6919 function fromBuffer (that, buffer) {
6920 var length = checked(buffer.length) | 0
6921 that = allocate(that, length)
6922 buffer.copy(that, 0, 0, length)
6923 return that
6924 }
6925
6926 function fromArray (that, array) {
6927 var length = checked(array.length) | 0
6928 that = allocate(that, length)
6929 for (var i = 0; i < length; i += 1) {
6930 that[i] = array[i] & 255
6931 }
6932 return that
6933 }
6934
6935 // Duplicate of fromArray() to keep fromArray() monomorphic.
6936 function fromTypedArray (that, array) {
6937 var length = checked(array.length) | 0
6938 that = allocate(that, length)
6939 // Truncating the elements is probably not what people expect from typed
6940 // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior
6941 // of the old Buffer constructor.
6942 for (var i = 0; i < length; i += 1) {
6943 that[i] = array[i] & 255
6944 }
6945 return that
6946 }
6947
6948 function fromArrayBuffer (that, array) {
6949 if (Buffer.TYPED_ARRAY_SUPPORT) {
6950 // Return an augmented `Uint8Array` instance, for best performance
6951 array.byteLength
6952 that = Buffer._augment(new Uint8Array(array))
6953 } else {
6954 // Fallback: Return an object instance of the Buffer class
6955 that = fromTypedArray(that, new Uint8Array(array))
6956 }
6957 return that
6958 }
6959
6960 function fromArrayLike (that, array) {
6961 var length = checked(array.length) | 0
6962 that = allocate(that, length)
6963 for (var i = 0; i < length; i += 1) {
6964 that[i] = array[i] & 255
6965 }
6966 return that
6967 }
6968
6969 // Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.
6970 // Returns a zero-length buffer for inputs that don't conform to the spec.
6971 function fromJsonObject (that, object) {
6972 var array
6973 var length = 0
6974
6975 if (object.type === 'Buffer' && isArray(object.data)) {
6976 array = object.data
6977 length = checked(array.length) | 0
6978 }
6979 that = allocate(that, length)
6980
6981 for (var i = 0; i < length; i += 1) {
6982 that[i] = array[i] & 255
6983 }
6984 return that
6985 }
6986
6987 function allocate (that, length) {
6988 if (Buffer.TYPED_ARRAY_SUPPORT) {
6989 // Return an augmented `Uint8Array` instance, for best performance
6990 that = Buffer._augment(new Uint8Array(length))
6991 } else {
6992 // Fallback: Return an object instance of the Buffer class
6993 that.length = length
6994 that._isBuffer = true
6995 }
6996
6997 var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1
6998 if (fromPool) that.parent = rootParent
6999
7000 return that
7001 }
7002
7003 function checked (length) {
7004 // Note: cannot use `length < kMaxLength` here because that fails when
7005 // length is NaN (which is otherwise coerced to zero.)
7006 if (length >= kMaxLength()) {
7007 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
7008 'size: 0x' + kMaxLength().toString(16) + ' bytes')
7009 }
7010 return length | 0
7011 }
7012
7013 function SlowBuffer (subject, encoding) {
7014 if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)
7015
7016 var buf = new Buffer(subject, encoding)
7017 delete buf.parent
7018 return buf
7019 }
7020
7021 Buffer.isBuffer = function isBuffer (b) {
7022 return !!(b != null && b._isBuffer)
7023 }
7024
7025 Buffer.compare = function compare (a, b) {
7026 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
7027 throw new TypeError('Arguments must be Buffers')
7028 }
7029
7030 if (a === b) return 0
7031
7032 var x = a.length
7033 var y = b.length
7034
7035 var i = 0
7036 var len = Math.min(x, y)
7037 while (i < len) {
7038 if (a[i] !== b[i]) break
7039
7040 ++i
7041 }
7042
7043 if (i !== len) {
7044 x = a[i]
7045 y = b[i]
7046 }
7047
7048 if (x < y) return -1
7049 if (y < x) return 1
7050 return 0
7051 }
7052
7053 Buffer.isEncoding = function isEncoding (encoding) {
7054 switch (String(encoding).toLowerCase()) {
7055 case 'hex':
7056 case 'utf8':
7057 case 'utf-8':
7058 case 'ascii':
7059 case 'binary':
7060 case 'base64':
7061 case 'raw':
7062 case 'ucs2':
7063 case 'ucs-2':
7064 case 'utf16le':
7065 case 'utf-16le':
7066 return true
7067 default:
7068 return false
7069 }
7070 }
7071
7072 Buffer.concat = function concat (list, length) {
7073 if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')
7074
7075 if (list.length === 0) {
7076 return new Buffer(0)
7077 }
7078
7079 var i
7080 if (length === undefined) {
7081 length = 0
7082 for (i = 0; i < list.length; i++) {
7083 length += list[i].length
7084 }
7085 }
7086
7087 var buf = new Buffer(length)
7088 var pos = 0
7089 for (i = 0; i < list.length; i++) {
7090 var item = list[i]
7091 item.copy(buf, pos)
7092 pos += item.length
7093 }
7094 return buf
7095 }
7096
7097 function byteLength (string, encoding) {
7098 if (typeof string !== 'string') string = '' + string
7099
7100 var len = string.length
7101 if (len === 0) return 0
7102
7103 // Use a for loop to avoid recursion
7104 var loweredCase = false
7105 for (;;) {
7106 switch (encoding) {
7107 case 'ascii':
7108 case 'binary':
7109 // Deprecated
7110 case 'raw':
7111 case 'raws':
7112 return len
7113 case 'utf8':
7114 case 'utf-8':
7115 return utf8ToBytes(string).length
7116 case 'ucs2':
7117 case 'ucs-2':
7118 case 'utf16le':
7119 case 'utf-16le':
7120 return len * 2
7121 case 'hex':
7122 return len >>> 1
7123 case 'base64':
7124 return base64ToBytes(string).length
7125 default:
7126 if (loweredCase) return utf8ToBytes(string).length // assume utf8
7127 encoding = ('' + encoding).toLowerCase()
7128 loweredCase = true
7129 }
7130 }
7131 }
7132 Buffer.byteLength = byteLength
7133
7134 // pre-set for values that may exist in the future
7135 Buffer.prototype.length = undefined
7136 Buffer.prototype.parent = undefined
7137
7138 function slowToString (encoding, start, end) {
7139 var loweredCase = false
7140
7141 start = start | 0
7142 end = end === undefined || end === Infinity ? this.length : end | 0
7143
7144 if (!encoding) encoding = 'utf8'
7145 if (start < 0) start = 0
7146 if (end > this.length) end = this.length
7147 if (end <= start) return ''
7148
7149 while (true) {
7150 switch (encoding) {
7151 case 'hex':
7152 return hexSlice(this, start, end)
7153
7154 case 'utf8':
7155 case 'utf-8':
7156 return utf8Slice(this, start, end)
7157
7158 case 'ascii':
7159 return asciiSlice(this, start, end)
7160
7161 case 'binary':
7162 return binarySlice(this, start, end)
7163
7164 case 'base64':
7165 return base64Slice(this, start, end)
7166
7167 case 'ucs2':
7168 case 'ucs-2':
7169 case 'utf16le':
7170 case 'utf-16le':
7171 return utf16leSlice(this, start, end)
7172
7173 default:
7174 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
7175 encoding = (encoding + '').toLowerCase()
7176 loweredCase = true
7177 }
7178 }
7179 }
7180
7181 Buffer.prototype.toString = function toString () {
7182 var length = this.length | 0
7183 if (length === 0) return ''
7184 if (arguments.length === 0) return utf8Slice(this, 0, length)
7185 return slowToString.apply(this, arguments)
7186 }
7187
7188 Buffer.prototype.equals = function equals (b) {
7189 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
7190 if (this === b) return true
7191 return Buffer.compare(this, b) === 0
7192 }
7193
7194 Buffer.prototype.inspect = function inspect () {
7195 var str = ''
7196 var max = exports.INSPECT_MAX_BYTES
7197 if (this.length > 0) {
7198 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
7199 if (this.length > max) str += ' ... '
7200 }
7201 return '<Buffer ' + str + '>'
7202 }
7203
7204 Buffer.prototype.compare = function compare (b) {
7205 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
7206 if (this === b) return 0
7207 return Buffer.compare(this, b)
7208 }
7209
7210 Buffer.prototype.indexOf = function indexOf (val, byteOffset) {
7211 if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff
7212 else if (byteOffset < -0x80000000) byteOffset = -0x80000000
7213 byteOffset >>= 0
7214
7215 if (this.length === 0) return -1
7216 if (byteOffset >= this.length) return -1
7217
7218 // Negative offsets start from the end of the buffer
7219 if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)
7220
7221 if (typeof val === 'string') {
7222 if (val.length === 0) return -1 // special case: looking for empty string always fails
7223 return String.prototype.indexOf.call(this, val, byteOffset)
7224 }
7225 if (Buffer.isBuffer(val)) {
7226 return arrayIndexOf(this, val, byteOffset)
7227 }
7228 if (typeof val === 'number') {
7229 if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {
7230 return Uint8Array.prototype.indexOf.call(this, val, byteOffset)
7231 }
7232 return arrayIndexOf(this, [ val ], byteOffset)
7233 }
7234
7235 function arrayIndexOf (arr, val, byteOffset) {
7236 var foundIndex = -1
7237 for (var i = 0; byteOffset + i < arr.length; i++) {
7238 if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {
7239 if (foundIndex === -1) foundIndex = i
7240 if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex
7241 } else {
7242 foundIndex = -1
7243 }
7244 }
7245 return -1
7246 }
7247
7248 throw new TypeError('val must be string, number or Buffer')
7249 }
7250
7251 // `get` is deprecated
7252 Buffer.prototype.get = function get (offset) {
7253 console.log('.get() is deprecated. Access using array indexes instead.')
7254 return this.readUInt8(offset)
7255 }
7256
7257 // `set` is deprecated
7258 Buffer.prototype.set = function set (v, offset) {
7259 console.log('.set() is deprecated. Access using array indexes instead.')
7260 return this.writeUInt8(v, offset)
7261 }
7262
7263 function hexWrite (buf, string, offset, length) {
7264 offset = Number(offset) || 0
7265 var remaining = buf.length - offset
7266 if (!length) {
7267 length = remaining
7268 } else {
7269 length = Number(length)
7270 if (length > remaining) {
7271 length = remaining
7272 }
7273 }
7274
7275 // must be an even number of digits
7276 var strLen = string.length
7277 if (strLen % 2 !== 0) throw new Error('Invalid hex string')
7278
7279 if (length > strLen / 2) {
7280 length = strLen / 2
7281 }
7282 for (var i = 0; i < length; i++) {
7283 var parsed = parseInt(string.substr(i * 2, 2), 16)
7284 if (isNaN(parsed)) throw new Error('Invalid hex string')
7285 buf[offset + i] = parsed
7286 }
7287 return i
7288 }
7289
7290 function utf8Write (buf, string, offset, length) {
7291 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
7292 }
7293
7294 function asciiWrite (buf, string, offset, length) {
7295 return blitBuffer(asciiToBytes(string), buf, offset, length)
7296 }
7297
7298 function binaryWrite (buf, string, offset, length) {
7299 return asciiWrite(buf, string, offset, length)
7300 }
7301
7302 function base64Write (buf, string, offset, length) {
7303 return blitBuffer(base64ToBytes(string), buf, offset, length)
7304 }
7305
7306 function ucs2Write (buf, string, offset, length) {
7307 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
7308 }
7309
7310 Buffer.prototype.write = function write (string, offset, length, encoding) {
7311 // Buffer#write(string)
7312 if (offset === undefined) {
7313 encoding = 'utf8'
7314 length = this.length
7315 offset = 0
7316 // Buffer#write(string, encoding)
7317 } else if (length === undefined && typeof offset === 'string') {
7318 encoding = offset
7319 length = this.length
7320 offset = 0
7321 // Buffer#write(string, offset[, length][, encoding])
7322 } else if (isFinite(offset)) {
7323 offset = offset | 0
7324 if (isFinite(length)) {
7325 length = length | 0
7326 if (encoding === undefined) encoding = 'utf8'
7327 } else {
7328 encoding = length
7329 length = undefined
7330 }
7331 // legacy write(string, encoding, offset, length) - remove in v0.13
7332 } else {
7333 var swap = encoding
7334 encoding = offset
7335 offset = length | 0
7336 length = swap
7337 }
7338
7339 var remaining = this.length - offset
7340 if (length === undefined || length > remaining) length = remaining
7341
7342 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
7343 throw new RangeError('attempt to write outside buffer bounds')
7344 }
7345
7346 if (!encoding) encoding = 'utf8'
7347
7348 var loweredCase = false
7349 for (;;) {
7350 switch (encoding) {
7351 case 'hex':
7352 return hexWrite(this, string, offset, length)
7353
7354 case 'utf8':
7355 case 'utf-8':
7356 return utf8Write(this, string, offset, length)
7357
7358 case 'ascii':
7359 return asciiWrite(this, string, offset, length)
7360
7361 case 'binary':
7362 return binaryWrite(this, string, offset, length)
7363
7364 case 'base64':
7365 // Warning: maxLength not taken into account in base64Write
7366 return base64Write(this, string, offset, length)
7367
7368 case 'ucs2':
7369 case 'ucs-2':
7370 case 'utf16le':
7371 case 'utf-16le':
7372 return ucs2Write(this, string, offset, length)
7373
7374 default:
7375 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
7376 encoding = ('' + encoding).toLowerCase()
7377 loweredCase = true
7378 }
7379 }
7380 }
7381
7382 Buffer.prototype.toJSON = function toJSON () {
7383 return {
7384 type: 'Buffer',
7385 data: Array.prototype.slice.call(this._arr || this, 0)
7386 }
7387 }
7388
7389 function base64Slice (buf, start, end) {
7390 if (start === 0 && end === buf.length) {
7391 return base64.fromByteArray(buf)
7392 } else {
7393 return base64.fromByteArray(buf.slice(start, end))
7394 }
7395 }
7396
7397 function utf8Slice (buf, start, end) {
7398 end = Math.min(buf.length, end)
7399 var firstByte
7400 var secondByte
7401 var thirdByte
7402 var fourthByte
7403 var bytesPerSequence
7404 var tempCodePoint
7405 var codePoint
7406 var res = []
7407 var i = start
7408
7409 for (; i < end; i += bytesPerSequence) {
7410 firstByte = buf[i]
7411 codePoint = 0xFFFD
7412
7413 if (firstByte > 0xEF) {
7414 bytesPerSequence = 4
7415 } else if (firstByte > 0xDF) {
7416 bytesPerSequence = 3
7417 } else if (firstByte > 0xBF) {
7418 bytesPerSequence = 2
7419 } else {
7420 bytesPerSequence = 1
7421 }
7422
7423 if (i + bytesPerSequence <= end) {
7424 switch (bytesPerSequence) {
7425 case 1:
7426 if (firstByte < 0x80) {
7427 codePoint = firstByte
7428 }
7429 break
7430 case 2:
7431 secondByte = buf[i + 1]
7432 if ((secondByte & 0xC0) === 0x80) {
7433 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
7434 if (tempCodePoint > 0x7F) {
7435 codePoint = tempCodePoint
7436 }
7437 }
7438 break
7439 case 3:
7440 secondByte = buf[i + 1]
7441 thirdByte = buf[i + 2]
7442 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
7443 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
7444 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
7445 codePoint = tempCodePoint
7446 }
7447 }
7448 break
7449 case 4:
7450 secondByte = buf[i + 1]
7451 thirdByte = buf[i + 2]
7452 fourthByte = buf[i + 3]
7453 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
7454 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
7455 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
7456 codePoint = tempCodePoint
7457 }
7458 }
7459 }
7460 }
7461
7462 if (codePoint === 0xFFFD) {
7463 // we generated an invalid codePoint so make sure to only advance by 1 byte
7464 bytesPerSequence = 1
7465 } else if (codePoint > 0xFFFF) {
7466 // encode to utf16 (surrogate pair dance)
7467 codePoint -= 0x10000
7468 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
7469 codePoint = 0xDC00 | codePoint & 0x3FF
7470 }
7471
7472 res.push(codePoint)
7473 }
7474
7475 return String.fromCharCode.apply(String, res)
7476 }
7477
7478 function asciiSlice (buf, start, end) {
7479 var ret = ''
7480 end = Math.min(buf.length, end)
7481
7482 for (var i = start; i < end; i++) {
7483 ret += String.fromCharCode(buf[i] & 0x7F)
7484 }
7485 return ret
7486 }
7487
7488 function binarySlice (buf, start, end) {
7489 var ret = ''
7490 end = Math.min(buf.length, end)
7491
7492 for (var i = start; i < end; i++) {
7493 ret += String.fromCharCode(buf[i])
7494 }
7495 return ret
7496 }
7497
7498 function hexSlice (buf, start, end) {
7499 var len = buf.length
7500
7501 if (!start || start < 0) start = 0
7502 if (!end || end < 0 || end > len) end = len
7503
7504 var out = ''
7505 for (var i = start; i < end; i++) {
7506 out += toHex(buf[i])
7507 }
7508 return out
7509 }
7510
7511 function utf16leSlice (buf, start, end) {
7512 var bytes = buf.slice(start, end)
7513 var res = ''
7514 for (var i = 0; i < bytes.length; i += 2) {
7515 res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
7516 }
7517 return res
7518 }
7519
7520 Buffer.prototype.slice = function slice (start, end) {
7521 var len = this.length
7522 start = ~~start
7523 end = end === undefined ? len : ~~end
7524
7525 if (start < 0) {
7526 start += len
7527 if (start < 0) start = 0
7528 } else if (start > len) {
7529 start = len
7530 }
7531
7532 if (end < 0) {
7533 end += len
7534 if (end < 0) end = 0
7535 } else if (end > len) {
7536 end = len
7537 }
7538
7539 if (end < start) end = start
7540
7541 var newBuf
7542 if (Buffer.TYPED_ARRAY_SUPPORT) {
7543 newBuf = Buffer._augment(this.subarray(start, end))
7544 } else {
7545 var sliceLen = end - start
7546 newBuf = new Buffer(sliceLen, undefined)
7547 for (var i = 0; i < sliceLen; i++) {
7548 newBuf[i] = this[i + start]
7549 }
7550 }
7551
7552 if (newBuf.length) newBuf.parent = this.parent || this
7553
7554 return newBuf
7555 }
7556
7557 /*
7558 * Need to make sure that buffer isn't trying to write out of bounds.
7559 */
7560 function checkOffset (offset, ext, length) {
7561 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
7562 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
7563 }
7564
7565 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
7566 offset = offset | 0
7567 byteLength = byteLength | 0
7568 if (!noAssert) checkOffset(offset, byteLength, this.length)
7569
7570 var val = this[offset]
7571 var mul = 1
7572 var i = 0
7573 while (++i < byteLength && (mul *= 0x100)) {
7574 val += this[offset + i] * mul
7575 }
7576
7577 return val
7578 }
7579
7580 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
7581 offset = offset | 0
7582 byteLength = byteLength | 0
7583 if (!noAssert) {
7584 checkOffset(offset, byteLength, this.length)
7585 }
7586
7587 var val = this[offset + --byteLength]
7588 var mul = 1
7589 while (byteLength > 0 && (mul *= 0x100)) {
7590 val += this[offset + --byteLength] * mul
7591 }
7592
7593 return val
7594 }
7595
7596 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
7597 if (!noAssert) checkOffset(offset, 1, this.length)
7598 return this[offset]
7599 }
7600
7601 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
7602 if (!noAssert) checkOffset(offset, 2, this.length)
7603 return this[offset] | (this[offset + 1] << 8)
7604 }
7605
7606 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
7607 if (!noAssert) checkOffset(offset, 2, this.length)
7608 return (this[offset] << 8) | this[offset + 1]
7609 }
7610
7611 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
7612 if (!noAssert) checkOffset(offset, 4, this.length)
7613
7614 return ((this[offset]) |
7615 (this[offset + 1] << 8) |
7616 (this[offset + 2] << 16)) +
7617 (this[offset + 3] * 0x1000000)
7618 }
7619
7620 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
7621 if (!noAssert) checkOffset(offset, 4, this.length)
7622
7623 return (this[offset] * 0x1000000) +
7624 ((this[offset + 1] << 16) |
7625 (this[offset + 2] << 8) |
7626 this[offset + 3])
7627 }
7628
7629 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
7630 offset = offset | 0
7631 byteLength = byteLength | 0
7632 if (!noAssert) checkOffset(offset, byteLength, this.length)
7633
7634 var val = this[offset]
7635 var mul = 1
7636 var i = 0
7637 while (++i < byteLength && (mul *= 0x100)) {
7638 val += this[offset + i] * mul
7639 }
7640 mul *= 0x80
7641
7642 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
7643
7644 return val
7645 }
7646
7647 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
7648 offset = offset | 0
7649 byteLength = byteLength | 0
7650 if (!noAssert) checkOffset(offset, byteLength, this.length)
7651
7652 var i = byteLength
7653 var mul = 1
7654 var val = this[offset + --i]
7655 while (i > 0 && (mul *= 0x100)) {
7656 val += this[offset + --i] * mul
7657 }
7658 mul *= 0x80
7659
7660 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
7661
7662 return val
7663 }
7664
7665 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
7666 if (!noAssert) checkOffset(offset, 1, this.length)
7667 if (!(this[offset] & 0x80)) return (this[offset])
7668 return ((0xff - this[offset] + 1) * -1)
7669 }
7670
7671 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
7672 if (!noAssert) checkOffset(offset, 2, this.length)
7673 var val = this[offset] | (this[offset + 1] << 8)
7674 return (val & 0x8000) ? val | 0xFFFF0000 : val
7675 }
7676
7677 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
7678 if (!noAssert) checkOffset(offset, 2, this.length)
7679 var val = this[offset + 1] | (this[offset] << 8)
7680 return (val & 0x8000) ? val | 0xFFFF0000 : val
7681 }
7682
7683 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
7684 if (!noAssert) checkOffset(offset, 4, this.length)
7685
7686 return (this[offset]) |
7687 (this[offset + 1] << 8) |
7688 (this[offset + 2] << 16) |
7689 (this[offset + 3] << 24)
7690 }
7691
7692 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
7693 if (!noAssert) checkOffset(offset, 4, this.length)
7694
7695 return (this[offset] << 24) |
7696 (this[offset + 1] << 16) |
7697 (this[offset + 2] << 8) |
7698 (this[offset + 3])
7699 }
7700
7701 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
7702 if (!noAssert) checkOffset(offset, 4, this.length)
7703 return ieee754.read(this, offset, true, 23, 4)
7704 }
7705
7706 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
7707 if (!noAssert) checkOffset(offset, 4, this.length)
7708 return ieee754.read(this, offset, false, 23, 4)
7709 }
7710
7711 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
7712 if (!noAssert) checkOffset(offset, 8, this.length)
7713 return ieee754.read(this, offset, true, 52, 8)
7714 }
7715
7716 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
7717 if (!noAssert) checkOffset(offset, 8, this.length)
7718 return ieee754.read(this, offset, false, 52, 8)
7719 }
7720
7721 function checkInt (buf, value, offset, ext, max, min) {
7722 if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')
7723 if (value > max || value < min) throw new RangeError('value is out of bounds')
7724 if (offset + ext > buf.length) throw new RangeError('index out of range')
7725 }
7726
7727 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
7728 value = +value
7729 offset = offset | 0
7730 byteLength = byteLength | 0
7731 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
7732
7733 var mul = 1
7734 var i = 0
7735 this[offset] = value & 0xFF
7736 while (++i < byteLength && (mul *= 0x100)) {
7737 this[offset + i] = (value / mul) & 0xFF
7738 }
7739
7740 return offset + byteLength
7741 }
7742
7743 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
7744 value = +value
7745 offset = offset | 0
7746 byteLength = byteLength | 0
7747 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
7748
7749 var i = byteLength - 1
7750 var mul = 1
7751 this[offset + i] = value & 0xFF
7752 while (--i >= 0 && (mul *= 0x100)) {
7753 this[offset + i] = (value / mul) & 0xFF
7754 }
7755
7756 return offset + byteLength
7757 }
7758
7759 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
7760 value = +value
7761 offset = offset | 0
7762 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
7763 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
7764 this[offset] = value
7765 return offset + 1
7766 }
7767
7768 function objectWriteUInt16 (buf, value, offset, littleEndian) {
7769 if (value < 0) value = 0xffff + value + 1
7770 for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {
7771 buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
7772 (littleEndian ? i : 1 - i) * 8
7773 }
7774 }
7775
7776 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
7777 value = +value
7778 offset = offset | 0
7779 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
7780 if (Buffer.TYPED_ARRAY_SUPPORT) {
7781 this[offset] = value
7782 this[offset + 1] = (value >>> 8)
7783 } else {
7784 objectWriteUInt16(this, value, offset, true)
7785 }
7786 return offset + 2
7787 }
7788
7789 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
7790 value = +value
7791 offset = offset | 0
7792 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
7793 if (Buffer.TYPED_ARRAY_SUPPORT) {
7794 this[offset] = (value >>> 8)
7795 this[offset + 1] = value
7796 } else {
7797 objectWriteUInt16(this, value, offset, false)
7798 }
7799 return offset + 2
7800 }
7801
7802 function objectWriteUInt32 (buf, value, offset, littleEndian) {
7803 if (value < 0) value = 0xffffffff + value + 1
7804 for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {
7805 buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
7806 }
7807 }
7808
7809 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
7810 value = +value
7811 offset = offset | 0
7812 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
7813 if (Buffer.TYPED_ARRAY_SUPPORT) {
7814 this[offset + 3] = (value >>> 24)
7815 this[offset + 2] = (value >>> 16)
7816 this[offset + 1] = (value >>> 8)
7817 this[offset] = value
7818 } else {
7819 objectWriteUInt32(this, value, offset, true)
7820 }
7821 return offset + 4
7822 }
7823
7824 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
7825 value = +value
7826 offset = offset | 0
7827 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
7828 if (Buffer.TYPED_ARRAY_SUPPORT) {
7829 this[offset] = (value >>> 24)
7830 this[offset + 1] = (value >>> 16)
7831 this[offset + 2] = (value >>> 8)
7832 this[offset + 3] = value
7833 } else {
7834 objectWriteUInt32(this, value, offset, false)
7835 }
7836 return offset + 4
7837 }
7838
7839 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
7840 value = +value
7841 offset = offset | 0
7842 if (!noAssert) {
7843 var limit = Math.pow(2, 8 * byteLength - 1)
7844
7845 checkInt(this, value, offset, byteLength, limit - 1, -limit)
7846 }
7847
7848 var i = 0
7849 var mul = 1
7850 var sub = value < 0 ? 1 : 0
7851 this[offset] = value & 0xFF
7852 while (++i < byteLength && (mul *= 0x100)) {
7853 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
7854 }
7855
7856 return offset + byteLength
7857 }
7858
7859 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
7860 value = +value
7861 offset = offset | 0
7862 if (!noAssert) {
7863 var limit = Math.pow(2, 8 * byteLength - 1)
7864
7865 checkInt(this, value, offset, byteLength, limit - 1, -limit)
7866 }
7867
7868 var i = byteLength - 1
7869 var mul = 1
7870 var sub = value < 0 ? 1 : 0
7871 this[offset + i] = value & 0xFF
7872 while (--i >= 0 && (mul *= 0x100)) {
7873 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
7874 }
7875
7876 return offset + byteLength
7877 }
7878
7879 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
7880 value = +value
7881 offset = offset | 0
7882 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
7883 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
7884 if (value < 0) value = 0xff + value + 1
7885 this[offset] = value
7886 return offset + 1
7887 }
7888
7889 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
7890 value = +value
7891 offset = offset | 0
7892 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
7893 if (Buffer.TYPED_ARRAY_SUPPORT) {
7894 this[offset] = value
7895 this[offset + 1] = (value >>> 8)
7896 } else {
7897 objectWriteUInt16(this, value, offset, true)
7898 }
7899 return offset + 2
7900 }
7901
7902 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
7903 value = +value
7904 offset = offset | 0
7905 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
7906 if (Buffer.TYPED_ARRAY_SUPPORT) {
7907 this[offset] = (value >>> 8)
7908 this[offset + 1] = value
7909 } else {
7910 objectWriteUInt16(this, value, offset, false)
7911 }
7912 return offset + 2
7913 }
7914
7915 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
7916 value = +value
7917 offset = offset | 0
7918 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
7919 if (Buffer.TYPED_ARRAY_SUPPORT) {
7920 this[offset] = value
7921 this[offset + 1] = (value >>> 8)
7922 this[offset + 2] = (value >>> 16)
7923 this[offset + 3] = (value >>> 24)
7924 } else {
7925 objectWriteUInt32(this, value, offset, true)
7926 }
7927 return offset + 4
7928 }
7929
7930 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
7931 value = +value
7932 offset = offset | 0
7933 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
7934 if (value < 0) value = 0xffffffff + value + 1
7935 if (Buffer.TYPED_ARRAY_SUPPORT) {
7936 this[offset] = (value >>> 24)
7937 this[offset + 1] = (value >>> 16)
7938 this[offset + 2] = (value >>> 8)
7939 this[offset + 3] = value
7940 } else {
7941 objectWriteUInt32(this, value, offset, false)
7942 }
7943 return offset + 4
7944 }
7945
7946 function checkIEEE754 (buf, value, offset, ext, max, min) {
7947 if (value > max || value < min) throw new RangeError('value is out of bounds')
7948 if (offset + ext > buf.length) throw new RangeError('index out of range')
7949 if (offset < 0) throw new RangeError('index out of range')
7950 }
7951
7952 function writeFloat (buf, value, offset, littleEndian, noAssert) {
7953 if (!noAssert) {
7954 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
7955 }
7956 ieee754.write(buf, value, offset, littleEndian, 23, 4)
7957 return offset + 4
7958 }
7959
7960 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
7961 return writeFloat(this, value, offset, true, noAssert)
7962 }
7963
7964 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
7965 return writeFloat(this, value, offset, false, noAssert)
7966 }
7967
7968 function writeDouble (buf, value, offset, littleEndian, noAssert) {
7969 if (!noAssert) {
7970 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
7971 }
7972 ieee754.write(buf, value, offset, littleEndian, 52, 8)
7973 return offset + 8
7974 }
7975
7976 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
7977 return writeDouble(this, value, offset, true, noAssert)
7978 }
7979
7980 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
7981 return writeDouble(this, value, offset, false, noAssert)
7982 }
7983
7984 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
7985 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
7986 if (!start) start = 0
7987 if (!end && end !== 0) end = this.length
7988 if (targetStart >= target.length) targetStart = target.length
7989 if (!targetStart) targetStart = 0
7990 if (end > 0 && end < start) end = start
7991
7992 // Copy 0 bytes; we're done
7993 if (end === start) return 0
7994 if (target.length === 0 || this.length === 0) return 0
7995
7996 // Fatal error conditions
7997 if (targetStart < 0) {
7998 throw new RangeError('targetStart out of bounds')
7999 }
8000 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
8001 if (end < 0) throw new RangeError('sourceEnd out of bounds')
8002
8003 // Are we oob?
8004 if (end > this.length) end = this.length
8005 if (target.length - targetStart < end - start) {
8006 end = target.length - targetStart + start
8007 }
8008
8009 var len = end - start
8010 var i
8011
8012 if (this === target && start < targetStart && targetStart < end) {
8013 // descending copy from end
8014 for (i = len - 1; i >= 0; i--) {
8015 target[i + targetStart] = this[i + start]
8016 }
8017 } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
8018 // ascending copy from start
8019 for (i = 0; i < len; i++) {
8020 target[i + targetStart] = this[i + start]
8021 }
8022 } else {
8023 target._set(this.subarray(start, start + len), targetStart)
8024 }
8025
8026 return len
8027 }
8028
8029 // fill(value, start=0, end=buffer.length)
8030 Buffer.prototype.fill = function fill (value, start, end) {
8031 if (!value) value = 0
8032 if (!start) start = 0
8033 if (!end) end = this.length
8034
8035 if (end < start) throw new RangeError('end < start')
8036
8037 // Fill 0 bytes; we're done
8038 if (end === start) return
8039 if (this.length === 0) return
8040
8041 if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')
8042 if (end < 0 || end > this.length) throw new RangeError('end out of bounds')
8043
8044 var i
8045 if (typeof value === 'number') {
8046 for (i = start; i < end; i++) {
8047 this[i] = value
8048 }
8049 } else {
8050 var bytes = utf8ToBytes(value.toString())
8051 var len = bytes.length
8052 for (i = start; i < end; i++) {
8053 this[i] = bytes[i % len]
8054 }
8055 }
8056
8057 return this
8058 }
8059
8060 /**
8061 * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
8062 * Added in Node 0.12. Only available in browsers that support ArrayBuffer.
8063 */
8064 Buffer.prototype.toArrayBuffer = function toArrayBuffer () {
8065 if (typeof Uint8Array !== 'undefined') {
8066 if (Buffer.TYPED_ARRAY_SUPPORT) {
8067 return (new Buffer(this)).buffer
8068 } else {
8069 var buf = new Uint8Array(this.length)
8070 for (var i = 0, len = buf.length; i < len; i += 1) {
8071 buf[i] = this[i]
8072 }
8073 return buf.buffer
8074 }
8075 } else {
8076 throw new TypeError('Buffer.toArrayBuffer not supported in this browser')
8077 }
8078 }
8079
8080 // HELPER FUNCTIONS
8081 // ================
8082
8083 var BP = Buffer.prototype
8084
8085 /**
8086 * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
8087 */
8088 Buffer._augment = function _augment (arr) {
8089 arr.constructor = Buffer
8090 arr._isBuffer = true
8091
8092 // save reference to original Uint8Array set method before overwriting
8093 arr._set = arr.set
8094
8095 // deprecated
8096 arr.get = BP.get
8097 arr.set = BP.set
8098
8099 arr.write = BP.write
8100 arr.toString = BP.toString
8101 arr.toLocaleString = BP.toString
8102 arr.toJSON = BP.toJSON
8103 arr.equals = BP.equals
8104 arr.compare = BP.compare
8105 arr.indexOf = BP.indexOf
8106 arr.copy = BP.copy
8107 arr.slice = BP.slice
8108 arr.readUIntLE = BP.readUIntLE
8109 arr.readUIntBE = BP.readUIntBE
8110 arr.readUInt8 = BP.readUInt8
8111 arr.readUInt16LE = BP.readUInt16LE
8112 arr.readUInt16BE = BP.readUInt16BE
8113 arr.readUInt32LE = BP.readUInt32LE
8114 arr.readUInt32BE = BP.readUInt32BE
8115 arr.readIntLE = BP.readIntLE
8116 arr.readIntBE = BP.readIntBE
8117 arr.readInt8 = BP.readInt8
8118 arr.readInt16LE = BP.readInt16LE
8119 arr.readInt16BE = BP.readInt16BE
8120 arr.readInt32LE = BP.readInt32LE
8121 arr.readInt32BE = BP.readInt32BE
8122 arr.readFloatLE = BP.readFloatLE
8123 arr.readFloatBE = BP.readFloatBE
8124 arr.readDoubleLE = BP.readDoubleLE
8125 arr.readDoubleBE = BP.readDoubleBE
8126 arr.writeUInt8 = BP.writeUInt8
8127 arr.writeUIntLE = BP.writeUIntLE
8128 arr.writeUIntBE = BP.writeUIntBE
8129 arr.writeUInt16LE = BP.writeUInt16LE
8130 arr.writeUInt16BE = BP.writeUInt16BE
8131 arr.writeUInt32LE = BP.writeUInt32LE
8132 arr.writeUInt32BE = BP.writeUInt32BE
8133 arr.writeIntLE = BP.writeIntLE
8134 arr.writeIntBE = BP.writeIntBE
8135 arr.writeInt8 = BP.writeInt8
8136 arr.writeInt16LE = BP.writeInt16LE
8137 arr.writeInt16BE = BP.writeInt16BE
8138 arr.writeInt32LE = BP.writeInt32LE
8139 arr.writeInt32BE = BP.writeInt32BE
8140 arr.writeFloatLE = BP.writeFloatLE
8141 arr.writeFloatBE = BP.writeFloatBE
8142 arr.writeDoubleLE = BP.writeDoubleLE
8143 arr.writeDoubleBE = BP.writeDoubleBE
8144 arr.fill = BP.fill
8145 arr.inspect = BP.inspect
8146 arr.toArrayBuffer = BP.toArrayBuffer
8147
8148 return arr
8149 }
8150
8151 var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
8152
8153 function base64clean (str) {
8154 // Node strips out invalid characters like \n and \t from the string, base64-js does not
8155 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
8156 // Node converts strings with length < 2 to ''
8157 if (str.length < 2) return ''
8158 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
8159 while (str.length % 4 !== 0) {
8160 str = str + '='
8161 }
8162 return str
8163 }
8164
8165 function stringtrim (str) {
8166 if (str.trim) return str.trim()
8167 return str.replace(/^\s+|\s+$/g, '')
8168 }
8169
8170 function toHex (n) {
8171 if (n < 16) return '0' + n.toString(16)
8172 return n.toString(16)
8173 }
8174
8175 function utf8ToBytes (string, units) {
8176 units = units || Infinity
8177 var codePoint
8178 var length = string.length
8179 var leadSurrogate = null
8180 var bytes = []
8181
8182 for (var i = 0; i < length; i++) {
8183 codePoint = string.charCodeAt(i)
8184
8185 // is surrogate component
8186 if (codePoint > 0xD7FF && codePoint < 0xE000) {
8187 // last char was a lead
8188 if (!leadSurrogate) {
8189 // no lead yet
8190 if (codePoint > 0xDBFF) {
8191 // unexpected trail
8192 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
8193 continue
8194
8195 } else if (i + 1 === length) {
8196 // unpaired lead
8197 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
8198 continue
8199 }
8200
8201 // valid lead
8202 leadSurrogate = codePoint
8203
8204 continue
8205 }
8206
8207 // 2 leads in a row
8208 if (codePoint < 0xDC00) {
8209 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
8210 leadSurrogate = codePoint
8211 continue
8212 }
8213
8214 // valid surrogate pair
8215 codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000
8216
8217 } else if (leadSurrogate) {
8218 // valid bmp char, but last char was a lead
8219 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
8220 }
8221
8222 leadSurrogate = null
8223
8224 // encode utf8
8225 if (codePoint < 0x80) {
8226 if ((units -= 1) < 0) break
8227 bytes.push(codePoint)
8228 } else if (codePoint < 0x800) {
8229 if ((units -= 2) < 0) break
8230 bytes.push(
8231 codePoint >> 0x6 | 0xC0,
8232 codePoint & 0x3F | 0x80
8233 )
8234 } else if (codePoint < 0x10000) {
8235 if ((units -= 3) < 0) break
8236 bytes.push(
8237 codePoint >> 0xC | 0xE0,
8238 codePoint >> 0x6 & 0x3F | 0x80,
8239 codePoint & 0x3F | 0x80
8240 )
8241 } else if (codePoint < 0x110000) {
8242 if ((units -= 4) < 0) break
8243 bytes.push(
8244 codePoint >> 0x12 | 0xF0,
8245 codePoint >> 0xC & 0x3F | 0x80,
8246 codePoint >> 0x6 & 0x3F | 0x80,
8247 codePoint & 0x3F | 0x80
8248 )
8249 } else {
8250 throw new Error('Invalid code point')
8251 }
8252 }
8253
8254 return bytes
8255 }
8256
8257 function asciiToBytes (str) {
8258 var byteArray = []
8259 for (var i = 0; i < str.length; i++) {
8260 // Node's code seems to be doing this and not & 0x7F..
8261 byteArray.push(str.charCodeAt(i) & 0xFF)
8262 }
8263 return byteArray
8264 }
8265
8266 function utf16leToBytes (str, units) {
8267 var c, hi, lo
8268 var byteArray = []
8269 for (var i = 0; i < str.length; i++) {
8270 if ((units -= 2) < 0) break
8271
8272 c = str.charCodeAt(i)
8273 hi = c >> 8
8274 lo = c % 256
8275 byteArray.push(lo)
8276 byteArray.push(hi)
8277 }
8278
8279 return byteArray
8280 }
8281
8282 function base64ToBytes (str) {
8283 return base64.toByteArray(base64clean(str))
8284 }
8285
8286 function blitBuffer (src, dst, offset, length) {
8287 for (var i = 0; i < length; i++) {
8288 if ((i + offset >= dst.length) || (i >= src.length)) break
8289 dst[i + offset] = src[i]
8290 }
8291 return i
8292 }
8293
8294 },{"base64-js":8,"ieee754":9,"is-array":10}],8:[function(require,module,exports){
8295 var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
8296
8297 ;(function (exports) {
8298 'use strict';
8299
8300 var Arr = (typeof Uint8Array !== 'undefined')
8301 ? Uint8Array
8302 : Array
8303
8304 var PLUS = '+'.charCodeAt(0)
8305 var SLASH = '/'.charCodeAt(0)
8306 var NUMBER = '0'.charCodeAt(0)
8307 var LOWER = 'a'.charCodeAt(0)
8308 var UPPER = 'A'.charCodeAt(0)
8309 var PLUS_URL_SAFE = '-'.charCodeAt(0)
8310 var SLASH_URL_SAFE = '_'.charCodeAt(0)
8311
8312 function decode (elt) {
8313 var code = elt.charCodeAt(0)
8314 if (code === PLUS ||
8315 code === PLUS_URL_SAFE)
8316 return 62 // '+'
8317 if (code === SLASH ||
8318 code === SLASH_URL_SAFE)
8319 return 63 // '/'
8320 if (code < NUMBER)
8321 return -1 //no match
8322 if (code < NUMBER + 10)
8323 return code - NUMBER + 26 + 26
8324 if (code < UPPER + 26)
8325 return code - UPPER
8326 if (code < LOWER + 26)
8327 return code - LOWER + 26
8328 }
8329
8330 function b64ToByteArray (b64) {
8331 var i, j, l, tmp, placeHolders, arr
8332
8333 if (b64.length % 4 > 0) {
8334 throw new Error('Invalid string. Length must be a multiple of 4')
8335 }
8336
8337 // the number of equal signs (place holders)
8338 // if there are two placeholders, than the two characters before it
8339 // represent one byte
8340 // if there is only one, then the three characters before it represent 2 bytes
8341 // this is just a cheap hack to not do indexOf twice
8342 var len = b64.length
8343 placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
8344
8345 // base64 is 4/3 + up to two characters of the original data
8346 arr = new Arr(b64.length * 3 / 4 - placeHolders)
8347
8348 // if there are placeholders, only get up to the last complete 4 chars
8349 l = placeHolders > 0 ? b64.length - 4 : b64.length
8350
8351 var L = 0
8352
8353 function push (v) {
8354 arr[L++] = v
8355 }
8356
8357 for (i = 0, j = 0; i < l; i += 4, j += 3) {
8358 tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
8359 push((tmp & 0xFF0000) >> 16)
8360 push((tmp & 0xFF00) >> 8)
8361 push(tmp & 0xFF)
8362 }
8363
8364 if (placeHolders === 2) {
8365 tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
8366 push(tmp & 0xFF)
8367 } else if (placeHolders === 1) {
8368 tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
8369 push((tmp >> 8) & 0xFF)
8370 push(tmp & 0xFF)
8371 }
8372
8373 return arr
8374 }
8375
8376 function uint8ToBase64 (uint8) {
8377 var i,
8378 extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
8379 output = "",
8380 temp, length
8381
8382 function encode (num) {
8383 return lookup.charAt(num)
8384 }
8385
8386 function tripletToBase64 (num) {
8387 return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
8388 }
8389
8390 // go through the array every three bytes, we'll deal with trailing stuff later
8391 for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
8392 temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
8393 output += tripletToBase64(temp)
8394 }
8395
8396 // pad the end with zeros, but make sure to not forget the extra bytes
8397 switch (extraBytes) {
8398 case 1:
8399 temp = uint8[uint8.length - 1]
8400 output += encode(temp >> 2)
8401 output += encode((temp << 4) & 0x3F)
8402 output += '=='
8403 break
8404 case 2:
8405 temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
8406 output += encode(temp >> 10)
8407 output += encode((temp >> 4) & 0x3F)
8408 output += encode((temp << 2) & 0x3F)
8409 output += '='
8410 break
8411 }
8412
8413 return output
8414 }
8415
8416 exports.toByteArray = b64ToByteArray
8417 exports.fromByteArray = uint8ToBase64
8418 }(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
8419
8420 },{}],9:[function(require,module,exports){
8421 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
8422 var e, m
8423 var eLen = nBytes * 8 - mLen - 1
8424 var eMax = (1 << eLen) - 1
8425 var eBias = eMax >> 1
8426 var nBits = -7
8427 var i = isLE ? (nBytes - 1) : 0
8428 var d = isLE ? -1 : 1
8429 var s = buffer[offset + i]
8430
8431 i += d
8432
8433 e = s & ((1 << (-nBits)) - 1)
8434 s >>= (-nBits)
8435 nBits += eLen
8436 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
8437
8438 m = e & ((1 << (-nBits)) - 1)
8439 e >>= (-nBits)
8440 nBits += mLen
8441 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
8442
8443 if (e === 0) {
8444 e = 1 - eBias
8445 } else if (e === eMax) {
8446 return m ? NaN : ((s ? -1 : 1) * Infinity)
8447 } else {
8448 m = m + Math.pow(2, mLen)
8449 e = e - eBias
8450 }
8451 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
8452 }
8453
8454 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
8455 var e, m, c
8456 var eLen = nBytes * 8 - mLen - 1
8457 var eMax = (1 << eLen) - 1
8458 var eBias = eMax >> 1
8459 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
8460 var i = isLE ? 0 : (nBytes - 1)
8461 var d = isLE ? 1 : -1
8462 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
8463
8464 value = Math.abs(value)
8465
8466 if (isNaN(value) || value === Infinity) {
8467 m = isNaN(value) ? 1 : 0
8468 e = eMax
8469 } else {
8470 e = Math.floor(Math.log(value) / Math.LN2)
8471 if (value * (c = Math.pow(2, -e)) < 1) {
8472 e--
8473 c *= 2
8474 }
8475 if (e + eBias >= 1) {
8476 value += rt / c
8477 } else {
8478 value += rt * Math.pow(2, 1 - eBias)
8479 }
8480 if (value * c >= 2) {
8481 e++
8482 c /= 2
8483 }
8484
8485 if (e + eBias >= eMax) {
8486 m = 0
8487 e = eMax
8488 } else if (e + eBias >= 1) {
8489 m = (value * c - 1) * Math.pow(2, mLen)
8490 e = e + eBias
8491 } else {
8492 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
8493 e = 0
8494 }
8495 }
8496
8497 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
8498
8499 e = (e << mLen) | m
8500 eLen += mLen
8501 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
8502
8503 buffer[offset + i - d] |= s * 128
8504 }
8505
8506 },{}],10:[function(require,module,exports){
8507
8508 /**
8509 * isArray
8510 */
8511
8512 var isArray = Array.isArray;
8513
8514 /**
8515 * toString
8516 */
8517
8518 var str = Object.prototype.toString;
8519
8520 /**
8521 * Whether or not the given `val`
8522 * is an array.
8523 *
8524 * example:
8525 *
8526 * isArray([]);
8527 * // > true
8528 * isArray(arguments);
8529 * // > false
8530 * isArray('');
8531 * // > false
8532 *
8533 * @param {mixed} val
8534 * @return {bool}
8535 */
8536
8537 module.exports = isArray || function (val) {
8538 return !! val && '[object Array]' == str.call(val);
8539 };
8540
8541 },{}],11:[function(require,module,exports){
8542 // Copyright Joyent, Inc. and other Node contributors.
8543 //
8544 // Permission is hereby granted, free of charge, to any person obtaining a
8545 // copy of this software and associated documentation files (the
8546 // "Software"), to deal in the Software without restriction, including
8547 // without limitation the rights to use, copy, modify, merge, publish,
8548 // distribute, sublicense, and/or sell copies of the Software, and to permit
8549 // persons to whom the Software is furnished to do so, subject to the
8550 // following conditions:
8551 //
8552 // The above copyright notice and this permission notice shall be included
8553 // in all copies or substantial portions of the Software.
8554 //
8555 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
8556 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
8557 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
8558 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
8559 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
8560 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
8561 // USE OR OTHER DEALINGS IN THE SOFTWARE.
8562
8563 function EventEmitter() {
8564 this._events = this._events || {};
8565 this._maxListeners = this._maxListeners || undefined;
8566 }
8567 module.exports = EventEmitter;
8568
8569 // Backwards-compat with node 0.10.x
8570 EventEmitter.EventEmitter = EventEmitter;
8571
8572 EventEmitter.prototype._events = undefined;
8573 EventEmitter.prototype._maxListeners = undefined;
8574
8575 // By default EventEmitters will print a warning if more than 10 listeners are
8576 // added to it. This is a useful default which helps finding memory leaks.
8577 EventEmitter.defaultMaxListeners = 10;
8578
8579 // Obviously not all Emitters should be limited to 10. This function allows
8580 // that to be increased. Set to zero for unlimited.
8581 EventEmitter.prototype.setMaxListeners = function(n) {
8582 if (!isNumber(n) || n < 0 || isNaN(n))
8583 throw TypeError('n must be a positive number');
8584 this._maxListeners = n;
8585 return this;
8586 };
8587
8588 EventEmitter.prototype.emit = function(type) {
8589 var er, handler, len, args, i, listeners;
8590
8591 if (!this._events)
8592 this._events = {};
8593
8594 // If there is no 'error' event listener then throw.
8595 if (type === 'error') {
8596 if (!this._events.error ||
8597 (isObject(this._events.error) && !this._events.error.length)) {
8598 er = arguments[1];
8599 if (er instanceof Error) {
8600 throw er; // Unhandled 'error' event
8601 }
8602 throw TypeError('Uncaught, unspecified "error" event.');
8603 }
8604 }
8605
8606 handler = this._events[type];
8607
8608 if (isUndefined(handler))
8609 return false;
8610
8611 if (isFunction(handler)) {
8612 switch (arguments.length) {
8613 // fast cases
8614 case 1:
8615 handler.call(this);
8616 break;
8617 case 2:
8618 handler.call(this, arguments[1]);
8619 break;
8620 case 3:
8621 handler.call(this, arguments[1], arguments[2]);
8622 break;
8623 // slower
8624 default:
8625 len = arguments.length;
8626 args = new Array(len - 1);
8627 for (i = 1; i < len; i++)
8628 args[i - 1] = arguments[i];
8629 handler.apply(this, args);
8630 }
8631 } else if (isObject(handler)) {
8632 len = arguments.length;
8633 args = new Array(len - 1);
8634 for (i = 1; i < len; i++)
8635 args[i - 1] = arguments[i];
8636
8637 listeners = handler.slice();
8638 len = listeners.length;
8639 for (i = 0; i < len; i++)
8640 listeners[i].apply(this, args);
8641 }
8642
8643 return true;
8644 };
8645
8646 EventEmitter.prototype.addListener = function(type, listener) {
8647 var m;
8648
8649 if (!isFunction(listener))
8650 throw TypeError('listener must be a function');
8651
8652 if (!this._events)
8653 this._events = {};
8654
8655 // To avoid recursion in the case that type === "newListener"! Before
8656 // adding it to the listeners, first emit "newListener".
8657 if (this._events.newListener)
8658 this.emit('newListener', type,
8659 isFunction(listener.listener) ?
8660 listener.listener : listener);
8661
8662 if (!this._events[type])
8663 // Optimize the case of one listener. Don't need the extra array object.
8664 this._events[type] = listener;
8665 else if (isObject(this._events[type]))
8666 // If we've already got an array, just append.
8667 this._events[type].push(listener);
8668 else
8669 // Adding the second element, need to change to array.
8670 this._events[type] = [this._events[type], listener];
8671
8672 // Check for listener leak
8673 if (isObject(this._events[type]) && !this._events[type].warned) {
8674 var m;
8675 if (!isUndefined(this._maxListeners)) {
8676 m = this._maxListeners;
8677 } else {
8678 m = EventEmitter.defaultMaxListeners;
8679 }
8680
8681 if (m && m > 0 && this._events[type].length > m) {
8682 this._events[type].warned = true;
8683 console.error('(node) warning: possible EventEmitter memory ' +
8684 'leak detected. %d listeners added. ' +
8685 'Use emitter.setMaxListeners() to increase limit.',
8686 this._events[type].length);
8687 if (typeof console.trace === 'function') {
8688 // not supported in IE 10
8689 console.trace();
8690 }
8691 }
8692 }
8693
8694 return this;
8695 };
8696
8697 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
8698
8699 EventEmitter.prototype.once = function(type, listener) {
8700 if (!isFunction(listener))
8701 throw TypeError('listener must be a function');
8702
8703 var fired = false;
8704
8705 function g() {
8706 this.removeListener(type, g);
8707
8708 if (!fired) {
8709 fired = true;
8710 listener.apply(this, arguments);
8711 }
8712 }
8713
8714 g.listener = listener;
8715 this.on(type, g);
8716
8717 return this;
8718 };
8719
8720 // emits a 'removeListener' event iff the listener was removed
8721 EventEmitter.prototype.removeListener = function(type, listener) {
8722 var list, position, length, i;
8723
8724 if (!isFunction(listener))
8725 throw TypeError('listener must be a function');
8726
8727 if (!this._events || !this._events[type])
8728 return this;
8729
8730 list = this._events[type];
8731 length = list.length;
8732 position = -1;
8733
8734 if (list === listener ||
8735 (isFunction(list.listener) && list.listener === listener)) {
8736 delete this._events[type];
8737 if (this._events.removeListener)
8738 this.emit('removeListener', type, listener);
8739
8740 } else if (isObject(list)) {
8741 for (i = length; i-- > 0;) {
8742 if (list[i] === listener ||
8743 (list[i].listener && list[i].listener === listener)) {
8744 position = i;
8745 break;
8746 }
8747 }
8748
8749 if (position < 0)
8750 return this;
8751
8752 if (list.length === 1) {
8753 list.length = 0;
8754 delete this._events[type];
8755 } else {
8756 list.splice(position, 1);
8757 }
8758
8759 if (this._events.removeListener)
8760 this.emit('removeListener', type, listener);
8761 }
8762
8763 return this;
8764 };
8765
8766 EventEmitter.prototype.removeAllListeners = function(type) {
8767 var key, listeners;
8768
8769 if (!this._events)
8770 return this;
8771
8772 // not listening for removeListener, no need to emit
8773 if (!this._events.removeListener) {
8774 if (arguments.length === 0)
8775 this._events = {};
8776 else if (this._events[type])
8777 delete this._events[type];
8778 return this;
8779 }
8780
8781 // emit removeListener for all listeners on all events
8782 if (arguments.length === 0) {
8783 for (key in this._events) {
8784 if (key === 'removeListener') continue;
8785 this.removeAllListeners(key);
8786 }
8787 this.removeAllListeners('removeListener');
8788 this._events = {};
8789 return this;
8790 }
8791
8792 listeners = this._events[type];
8793
8794 if (isFunction(listeners)) {
8795 this.removeListener(type, listeners);
8796 } else {
8797 // LIFO order
8798 while (listeners.length)
8799 this.removeListener(type, listeners[listeners.length - 1]);
8800 }
8801 delete this._events[type];
8802
8803 return this;
8804 };
8805
8806 EventEmitter.prototype.listeners = function(type) {
8807 var ret;
8808 if (!this._events || !this._events[type])
8809 ret = [];
8810 else if (isFunction(this._events[type]))
8811 ret = [this._events[type]];
8812 else
8813 ret = this._events[type].slice();
8814 return ret;
8815 };
8816
8817 EventEmitter.listenerCount = function(emitter, type) {
8818 var ret;
8819 if (!emitter._events || !emitter._events[type])
8820 ret = 0;
8821 else if (isFunction(emitter._events[type]))
8822 ret = 1;
8823 else
8824 ret = emitter._events[type].length;
8825 return ret;
8826 };
8827
8828 function isFunction(arg) {
8829 return typeof arg === 'function';
8830 }
8831
8832 function isNumber(arg) {
8833 return typeof arg === 'number';
8834 }
8835
8836 function isObject(arg) {
8837 return typeof arg === 'object' && arg !== null;
8838 }
8839
8840 function isUndefined(arg) {
8841 return arg === void 0;
8842 }
8843
8844 },{}],12:[function(require,module,exports){
8845 if (typeof Object.create === 'function') {
8846 // implementation from standard node.js 'util' module
8847 module.exports = function inherits(ctor, superCtor) {
8848 ctor.super_ = superCtor
8849 ctor.prototype = Object.create(superCtor.prototype, {
8850 constructor: {
8851 value: ctor,
8852 enumerable: false,
8853 writable: true,
8854 configurable: true
8855 }
8856 });
8857 };
8858 } else {
8859 // old school shim for old browsers
8860 module.exports = function inherits(ctor, superCtor) {
8861 ctor.super_ = superCtor
8862 var TempCtor = function () {}
8863 TempCtor.prototype = superCtor.prototype
8864 ctor.prototype = new TempCtor()
8865 ctor.prototype.constructor = ctor
8866 }
8867 }
8868
8869 },{}],13:[function(require,module,exports){
8870 module.exports = Array.isArray || function (arr) {
8871 return Object.prototype.toString.call(arr) == '[object Array]';
8872 };
8873
8874 },{}],14:[function(require,module,exports){
8875 // shim for using process in browser
8876
8877 var process = module.exports = {};
8878 var queue = [];
8879 var draining = false;
8880 var currentQueue;
8881 var queueIndex = -1;
8882
8883 function cleanUpNextTick() {
8884 draining = false;
8885 if (currentQueue.length) {
8886 queue = currentQueue.concat(queue);
8887 } else {
8888 queueIndex = -1;
8889 }
8890 if (queue.length) {
8891 drainQueue();
8892 }
8893 }
8894
8895 function drainQueue() {
8896 if (draining) {
8897 return;
8898 }
8899 var timeout = setTimeout(cleanUpNextTick);
8900 draining = true;
8901
8902 var len = queue.length;
8903 while(len) {
8904 currentQueue = queue;
8905 queue = [];
8906 while (++queueIndex < len) {
8907 currentQueue[queueIndex].run();
8908 }
8909 queueIndex = -1;
8910 len = queue.length;
8911 }
8912 currentQueue = null;
8913 draining = false;
8914 clearTimeout(timeout);
8915 }
8916
8917 process.nextTick = function (fun) {
8918 var args = new Array(arguments.length - 1);
8919 if (arguments.length > 1) {
8920 for (var i = 1; i < arguments.length; i++) {
8921 args[i - 1] = arguments[i];
8922 }
8923 }
8924 queue.push(new Item(fun, args));
8925 if (queue.length === 1 && !draining) {
8926 setTimeout(drainQueue, 0);
8927 }
8928 };
8929
8930 // v8 likes predictible objects
8931 function Item(fun, array) {
8932 this.fun = fun;
8933 this.array = array;
8934 }
8935 Item.prototype.run = function () {
8936 this.fun.apply(null, this.array);
8937 };
8938 process.title = 'browser';
8939 process.browser = true;
8940 process.env = {};
8941 process.argv = [];
8942 process.version = ''; // empty string to avoid regexp issues
8943 process.versions = {};
8944
8945 function noop() {}
8946
8947 process.on = noop;
8948 process.addListener = noop;
8949 process.once = noop;
8950 process.off = noop;
8951 process.removeListener = noop;
8952 process.removeAllListeners = noop;
8953 process.emit = noop;
8954
8955 process.binding = function (name) {
8956 throw new Error('process.binding is not supported');
8957 };
8958
8959 // TODO(shtylman)
8960 process.cwd = function () { return '/' };
8961 process.chdir = function (dir) {
8962 throw new Error('process.chdir is not supported');
8963 };
8964 process.umask = function() { return 0; };
8965
8966 },{}],15:[function(require,module,exports){
8967 module.exports = require("./lib/_stream_duplex.js")
8968
8969 },{"./lib/_stream_duplex.js":16}],16:[function(require,module,exports){
8970 (function (process){
8971 // Copyright Joyent, Inc. and other Node contributors.
8972 //
8973 // Permission is hereby granted, free of charge, to any person obtaining a
8974 // copy of this software and associated documentation files (the
8975 // "Software"), to deal in the Software without restriction, including
8976 // without limitation the rights to use, copy, modify, merge, publish,
8977 // distribute, sublicense, and/or sell copies of the Software, and to permit
8978 // persons to whom the Software is furnished to do so, subject to the
8979 // following conditions:
8980 //
8981 // The above copyright notice and this permission notice shall be included
8982 // in all copies or substantial portions of the Software.
8983 //
8984 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
8985 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
8986 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
8987 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
8988 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
8989 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
8990 // USE OR OTHER DEALINGS IN THE SOFTWARE.
8991
8992 // a duplex stream is just a stream that is both readable and writable.
8993 // Since JS doesn't have multiple prototypal inheritance, this class
8994 // prototypally inherits from Readable, and then parasitically from
8995 // Writable.
8996
8997 module.exports = Duplex;
8998
8999 /*<replacement>*/
9000 var objectKeys = Object.keys || function (obj) {
9001 var keys = [];
9002 for (var key in obj) keys.push(key);
9003 return keys;
9004 }
9005 /*</replacement>*/
9006
9007
9008 /*<replacement>*/
9009 var util = require('core-util-is');
9010 util.inherits = require('inherits');
9011 /*</replacement>*/
9012
9013 var Readable = require('./_stream_readable');
9014 var Writable = require('./_stream_writable');
9015
9016 util.inherits(Duplex, Readable);
9017
9018 forEach(objectKeys(Writable.prototype), function(method) {
9019 if (!Duplex.prototype[method])
9020 Duplex.prototype[method] = Writable.prototype[method];
9021 });
9022
9023 function Duplex(options) {
9024 if (!(this instanceof Duplex))
9025 return new Duplex(options);
9026
9027 Readable.call(this, options);
9028 Writable.call(this, options);
9029
9030 if (options && options.readable === false)
9031 this.readable = false;
9032
9033 if (options && options.writable === false)
9034 this.writable = false;
9035
9036 this.allowHalfOpen = true;
9037 if (options && options.allowHalfOpen === false)
9038 this.allowHalfOpen = false;
9039
9040 this.once('end', onend);
9041 }
9042
9043 // the no-half-open enforcer
9044 function onend() {
9045 // if we allow half-open state, or if the writable side ended,
9046 // then we're ok.
9047 if (this.allowHalfOpen || this._writableState.ended)
9048 return;
9049
9050 // no more data can be written.
9051 // But allow more writes to happen in this tick.
9052 process.nextTick(this.end.bind(this));
9053 }
9054
9055 function forEach (xs, f) {
9056 for (var i = 0, l = xs.length; i < l; i++) {
9057 f(xs[i], i);
9058 }
9059 }
9060
9061 }).call(this,require('_process'))
9062 },{"./_stream_readable":18,"./_stream_writable":20,"_process":14,"core-util-is":21,"inherits":12}],17:[function(require,module,exports){
9063 // Copyright Joyent, Inc. and other Node contributors.
9064 //
9065 // Permission is hereby granted, free of charge, to any person obtaining a
9066 // copy of this software and associated documentation files (the
9067 // "Software"), to deal in the Software without restriction, including
9068 // without limitation the rights to use, copy, modify, merge, publish,
9069 // distribute, sublicense, and/or sell copies of the Software, and to permit
9070 // persons to whom the Software is furnished to do so, subject to the
9071 // following conditions:
9072 //
9073 // The above copyright notice and this permission notice shall be included
9074 // in all copies or substantial portions of the Software.
9075 //
9076 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9077 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9078 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9079 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9080 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9081 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9082 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9083
9084 // a passthrough stream.
9085 // basically just the most minimal sort of Transform stream.
9086 // Every written chunk gets output as-is.
9087
9088 module.exports = PassThrough;
9089
9090 var Transform = require('./_stream_transform');
9091
9092 /*<replacement>*/
9093 var util = require('core-util-is');
9094 util.inherits = require('inherits');
9095 /*</replacement>*/
9096
9097 util.inherits(PassThrough, Transform);
9098
9099 function PassThrough(options) {
9100 if (!(this instanceof PassThrough))
9101 return new PassThrough(options);
9102
9103 Transform.call(this, options);
9104 }
9105
9106 PassThrough.prototype._transform = function(chunk, encoding, cb) {
9107 cb(null, chunk);
9108 };
9109
9110 },{"./_stream_transform":19,"core-util-is":21,"inherits":12}],18:[function(require,module,exports){
9111 (function (process){
9112 // Copyright Joyent, Inc. and other Node contributors.
9113 //
9114 // Permission is hereby granted, free of charge, to any person obtaining a
9115 // copy of this software and associated documentation files (the
9116 // "Software"), to deal in the Software without restriction, including
9117 // without limitation the rights to use, copy, modify, merge, publish,
9118 // distribute, sublicense, and/or sell copies of the Software, and to permit
9119 // persons to whom the Software is furnished to do so, subject to the
9120 // following conditions:
9121 //
9122 // The above copyright notice and this permission notice shall be included
9123 // in all copies or substantial portions of the Software.
9124 //
9125 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9126 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9127 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9128 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9129 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9130 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9131 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9132
9133 module.exports = Readable;
9134
9135 /*<replacement>*/
9136 var isArray = require('isarray');
9137 /*</replacement>*/
9138
9139
9140 /*<replacement>*/
9141 var Buffer = require('buffer').Buffer;
9142 /*</replacement>*/
9143
9144 Readable.ReadableState = ReadableState;
9145
9146 var EE = require('events').EventEmitter;
9147
9148 /*<replacement>*/
9149 if (!EE.listenerCount) EE.listenerCount = function(emitter, type) {
9150 return emitter.listeners(type).length;
9151 };
9152 /*</replacement>*/
9153
9154 var Stream = require('stream');
9155
9156 /*<replacement>*/
9157 var util = require('core-util-is');
9158 util.inherits = require('inherits');
9159 /*</replacement>*/
9160
9161 var StringDecoder;
9162
9163
9164 /*<replacement>*/
9165 var debug = require('util');
9166 if (debug && debug.debuglog) {
9167 debug = debug.debuglog('stream');
9168 } else {
9169 debug = function () {};
9170 }
9171 /*</replacement>*/
9172
9173
9174 util.inherits(Readable, Stream);
9175
9176 function ReadableState(options, stream) {
9177 var Duplex = require('./_stream_duplex');
9178
9179 options = options || {};
9180
9181 // the point at which it stops calling _read() to fill the buffer
9182 // Note: 0 is a valid value, means "don't call _read preemptively ever"
9183 var hwm = options.highWaterMark;
9184 var defaultHwm = options.objectMode ? 16 : 16 * 1024;
9185 this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
9186
9187 // cast to ints.
9188 this.highWaterMark = ~~this.highWaterMark;
9189
9190 this.buffer = [];
9191 this.length = 0;
9192 this.pipes = null;
9193 this.pipesCount = 0;
9194 this.flowing = null;
9195 this.ended = false;
9196 this.endEmitted = false;
9197 this.reading = false;
9198
9199 // a flag to be able to tell if the onwrite cb is called immediately,
9200 // or on a later tick. We set this to true at first, because any
9201 // actions that shouldn't happen until "later" should generally also
9202 // not happen before the first write call.
9203 this.sync = true;
9204
9205 // whenever we return null, then we set a flag to say
9206 // that we're awaiting a 'readable' event emission.
9207 this.needReadable = false;
9208 this.emittedReadable = false;
9209 this.readableListening = false;
9210
9211
9212 // object stream flag. Used to make read(n) ignore n and to
9213 // make all the buffer merging and length checks go away
9214 this.objectMode = !!options.objectMode;
9215
9216 if (stream instanceof Duplex)
9217 this.objectMode = this.objectMode || !!options.readableObjectMode;
9218
9219 // Crypto is kind of old and crusty. Historically, its default string
9220 // encoding is 'binary' so we have to make this configurable.
9221 // Everything else in the universe uses 'utf8', though.
9222 this.defaultEncoding = options.defaultEncoding || 'utf8';
9223
9224 // when piping, we only care about 'readable' events that happen
9225 // after read()ing all the bytes and not getting any pushback.
9226 this.ranOut = false;
9227
9228 // the number of writers that are awaiting a drain event in .pipe()s
9229 this.awaitDrain = 0;
9230
9231 // if true, a maybeReadMore has been scheduled
9232 this.readingMore = false;
9233
9234 this.decoder = null;
9235 this.encoding = null;
9236 if (options.encoding) {
9237 if (!StringDecoder)
9238 StringDecoder = require('string_decoder/').StringDecoder;
9239 this.decoder = new StringDecoder(options.encoding);
9240 this.encoding = options.encoding;
9241 }
9242 }
9243
9244 function Readable(options) {
9245 var Duplex = require('./_stream_duplex');
9246
9247 if (!(this instanceof Readable))
9248 return new Readable(options);
9249
9250 this._readableState = new ReadableState(options, this);
9251
9252 // legacy
9253 this.readable = true;
9254
9255 Stream.call(this);
9256 }
9257
9258 // Manually shove something into the read() buffer.
9259 // This returns true if the highWaterMark has not been hit yet,
9260 // similar to how Writable.write() returns true if you should
9261 // write() some more.
9262 Readable.prototype.push = function(chunk, encoding) {
9263 var state = this._readableState;
9264
9265 if (util.isString(chunk) && !state.objectMode) {
9266 encoding = encoding || state.defaultEncoding;
9267 if (encoding !== state.encoding) {
9268 chunk = new Buffer(chunk, encoding);
9269 encoding = '';
9270 }
9271 }
9272
9273 return readableAddChunk(this, state, chunk, encoding, false);
9274 };
9275
9276 // Unshift should *always* be something directly out of read()
9277 Readable.prototype.unshift = function(chunk) {
9278 var state = this._readableState;
9279 return readableAddChunk(this, state, chunk, '', true);
9280 };
9281
9282 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
9283 var er = chunkInvalid(state, chunk);
9284 if (er) {
9285 stream.emit('error', er);
9286 } else if (util.isNullOrUndefined(chunk)) {
9287 state.reading = false;
9288 if (!state.ended)
9289 onEofChunk(stream, state);
9290 } else if (state.objectMode || chunk && chunk.length > 0) {
9291 if (state.ended && !addToFront) {
9292 var e = new Error('stream.push() after EOF');
9293 stream.emit('error', e);
9294 } else if (state.endEmitted && addToFront) {
9295 var e = new Error('stream.unshift() after end event');
9296 stream.emit('error', e);
9297 } else {
9298 if (state.decoder && !addToFront && !encoding)
9299 chunk = state.decoder.write(chunk);
9300
9301 if (!addToFront)
9302 state.reading = false;
9303
9304 // if we want the data now, just emit it.
9305 if (state.flowing && state.length === 0 && !state.sync) {
9306 stream.emit('data', chunk);
9307 stream.read(0);
9308 } else {
9309 // update the buffer info.
9310 state.length += state.objectMode ? 1 : chunk.length;
9311 if (addToFront)
9312 state.buffer.unshift(chunk);
9313 else
9314 state.buffer.push(chunk);
9315
9316 if (state.needReadable)
9317 emitReadable(stream);
9318 }
9319
9320 maybeReadMore(stream, state);
9321 }
9322 } else if (!addToFront) {
9323 state.reading = false;
9324 }
9325
9326 return needMoreData(state);
9327 }
9328
9329
9330
9331 // if it's past the high water mark, we can push in some more.
9332 // Also, if we have no data yet, we can stand some
9333 // more bytes. This is to work around cases where hwm=0,
9334 // such as the repl. Also, if the push() triggered a
9335 // readable event, and the user called read(largeNumber) such that
9336 // needReadable was set, then we ought to push more, so that another
9337 // 'readable' event will be triggered.
9338 function needMoreData(state) {
9339 return !state.ended &&
9340 (state.needReadable ||
9341 state.length < state.highWaterMark ||
9342 state.length === 0);
9343 }
9344
9345 // backwards compatibility.
9346 Readable.prototype.setEncoding = function(enc) {
9347 if (!StringDecoder)
9348 StringDecoder = require('string_decoder/').StringDecoder;
9349 this._readableState.decoder = new StringDecoder(enc);
9350 this._readableState.encoding = enc;
9351 return this;
9352 };
9353
9354 // Don't raise the hwm > 128MB
9355 var MAX_HWM = 0x800000;
9356 function roundUpToNextPowerOf2(n) {
9357 if (n >= MAX_HWM) {
9358 n = MAX_HWM;
9359 } else {
9360 // Get the next highest power of 2
9361 n--;
9362 for (var p = 1; p < 32; p <<= 1) n |= n >> p;
9363 n++;
9364 }
9365 return n;
9366 }
9367
9368 function howMuchToRead(n, state) {
9369 if (state.length === 0 && state.ended)
9370 return 0;
9371
9372 if (state.objectMode)
9373 return n === 0 ? 0 : 1;
9374
9375 if (isNaN(n) || util.isNull(n)) {
9376 // only flow one buffer at a time
9377 if (state.flowing && state.buffer.length)
9378 return state.buffer[0].length;
9379 else
9380 return state.length;
9381 }
9382
9383 if (n <= 0)
9384 return 0;
9385
9386 // If we're asking for more than the target buffer level,
9387 // then raise the water mark. Bump up to the next highest
9388 // power of 2, to prevent increasing it excessively in tiny
9389 // amounts.
9390 if (n > state.highWaterMark)
9391 state.highWaterMark = roundUpToNextPowerOf2(n);
9392
9393 // don't have that much. return null, unless we've ended.
9394 if (n > state.length) {
9395 if (!state.ended) {
9396 state.needReadable = true;
9397 return 0;
9398 } else
9399 return state.length;
9400 }
9401
9402 return n;
9403 }
9404
9405 // you can override either this method, or the async _read(n) below.
9406 Readable.prototype.read = function(n) {
9407 debug('read', n);
9408 var state = this._readableState;
9409 var nOrig = n;
9410
9411 if (!util.isNumber(n) || n > 0)
9412 state.emittedReadable = false;
9413
9414 // if we're doing read(0) to trigger a readable event, but we
9415 // already have a bunch of data in the buffer, then just trigger
9416 // the 'readable' event and move on.
9417 if (n === 0 &&
9418 state.needReadable &&
9419 (state.length >= state.highWaterMark || state.ended)) {
9420 debug('read: emitReadable', state.length, state.ended);
9421 if (state.length === 0 && state.ended)
9422 endReadable(this);
9423 else
9424 emitReadable(this);
9425 return null;
9426 }
9427
9428 n = howMuchToRead(n, state);
9429
9430 // if we've ended, and we're now clear, then finish it up.
9431 if (n === 0 && state.ended) {
9432 if (state.length === 0)
9433 endReadable(this);
9434 return null;
9435 }
9436
9437 // All the actual chunk generation logic needs to be
9438 // *below* the call to _read. The reason is that in certain
9439 // synthetic stream cases, such as passthrough streams, _read
9440 // may be a completely synchronous operation which may change
9441 // the state of the read buffer, providing enough data when
9442 // before there was *not* enough.
9443 //
9444 // So, the steps are:
9445 // 1. Figure out what the state of things will be after we do
9446 // a read from the buffer.
9447 //
9448 // 2. If that resulting state will trigger a _read, then call _read.
9449 // Note that this may be asynchronous, or synchronous. Yes, it is
9450 // deeply ugly to write APIs this way, but that still doesn't mean
9451 // that the Readable class should behave improperly, as streams are
9452 // designed to be sync/async agnostic.
9453 // Take note if the _read call is sync or async (ie, if the read call
9454 // has returned yet), so that we know whether or not it's safe to emit
9455 // 'readable' etc.
9456 //
9457 // 3. Actually pull the requested chunks out of the buffer and return.
9458
9459 // if we need a readable event, then we need to do some reading.
9460 var doRead = state.needReadable;
9461 debug('need readable', doRead);
9462
9463 // if we currently have less than the highWaterMark, then also read some
9464 if (state.length === 0 || state.length - n < state.highWaterMark) {
9465 doRead = true;
9466 debug('length less than watermark', doRead);
9467 }
9468
9469 // however, if we've ended, then there's no point, and if we're already
9470 // reading, then it's unnecessary.
9471 if (state.ended || state.reading) {
9472 doRead = false;
9473 debug('reading or ended', doRead);
9474 }
9475
9476 if (doRead) {
9477 debug('do read');
9478 state.reading = true;
9479 state.sync = true;
9480 // if the length is currently zero, then we *need* a readable event.
9481 if (state.length === 0)
9482 state.needReadable = true;
9483 // call internal read method
9484 this._read(state.highWaterMark);
9485 state.sync = false;
9486 }
9487
9488 // If _read pushed data synchronously, then `reading` will be false,
9489 // and we need to re-evaluate how much data we can return to the user.
9490 if (doRead && !state.reading)
9491 n = howMuchToRead(nOrig, state);
9492
9493 var ret;
9494 if (n > 0)
9495 ret = fromList(n, state);
9496 else
9497 ret = null;
9498
9499 if (util.isNull(ret)) {
9500 state.needReadable = true;
9501 n = 0;
9502 }
9503
9504 state.length -= n;
9505
9506 // If we have nothing in the buffer, then we want to know
9507 // as soon as we *do* get something into the buffer.
9508 if (state.length === 0 && !state.ended)
9509 state.needReadable = true;
9510
9511 // If we tried to read() past the EOF, then emit end on the next tick.
9512 if (nOrig !== n && state.ended && state.length === 0)
9513 endReadable(this);
9514
9515 if (!util.isNull(ret))
9516 this.emit('data', ret);
9517
9518 return ret;
9519 };
9520
9521 function chunkInvalid(state, chunk) {
9522 var er = null;
9523 if (!util.isBuffer(chunk) &&
9524 !util.isString(chunk) &&
9525 !util.isNullOrUndefined(chunk) &&
9526 !state.objectMode) {
9527 er = new TypeError('Invalid non-string/buffer chunk');
9528 }
9529 return er;
9530 }
9531
9532
9533 function onEofChunk(stream, state) {
9534 if (state.decoder && !state.ended) {
9535 var chunk = state.decoder.end();
9536 if (chunk && chunk.length) {
9537 state.buffer.push(chunk);
9538 state.length += state.objectMode ? 1 : chunk.length;
9539 }
9540 }
9541 state.ended = true;
9542
9543 // emit 'readable' now to make sure it gets picked up.
9544 emitReadable(stream);
9545 }
9546
9547 // Don't emit readable right away in sync mode, because this can trigger
9548 // another read() call => stack overflow. This way, it might trigger
9549 // a nextTick recursion warning, but that's not so bad.
9550 function emitReadable(stream) {
9551 var state = stream._readableState;
9552 state.needReadable = false;
9553 if (!state.emittedReadable) {
9554 debug('emitReadable', state.flowing);
9555 state.emittedReadable = true;
9556 if (state.sync)
9557 process.nextTick(function() {
9558 emitReadable_(stream);
9559 });
9560 else
9561 emitReadable_(stream);
9562 }
9563 }
9564
9565 function emitReadable_(stream) {
9566 debug('emit readable');
9567 stream.emit('readable');
9568 flow(stream);
9569 }
9570
9571
9572 // at this point, the user has presumably seen the 'readable' event,
9573 // and called read() to consume some data. that may have triggered
9574 // in turn another _read(n) call, in which case reading = true if
9575 // it's in progress.
9576 // However, if we're not ended, or reading, and the length < hwm,
9577 // then go ahead and try to read some more preemptively.
9578 function maybeReadMore(stream, state) {
9579 if (!state.readingMore) {
9580 state.readingMore = true;
9581 process.nextTick(function() {
9582 maybeReadMore_(stream, state);
9583 });
9584 }
9585 }
9586
9587 function maybeReadMore_(stream, state) {
9588 var len = state.length;
9589 while (!state.reading && !state.flowing && !state.ended &&
9590 state.length < state.highWaterMark) {
9591 debug('maybeReadMore read 0');
9592 stream.read(0);
9593 if (len === state.length)
9594 // didn't get any data, stop spinning.
9595 break;
9596 else
9597 len = state.length;
9598 }
9599 state.readingMore = false;
9600 }
9601
9602 // abstract method. to be overridden in specific implementation classes.
9603 // call cb(er, data) where data is <= n in length.
9604 // for virtual (non-string, non-buffer) streams, "length" is somewhat
9605 // arbitrary, and perhaps not very meaningful.
9606 Readable.prototype._read = function(n) {
9607 this.emit('error', new Error('not implemented'));
9608 };
9609
9610 Readable.prototype.pipe = function(dest, pipeOpts) {
9611 var src = this;
9612 var state = this._readableState;
9613
9614 switch (state.pipesCount) {
9615 case 0:
9616 state.pipes = dest;
9617 break;
9618 case 1:
9619 state.pipes = [state.pipes, dest];
9620 break;
9621 default:
9622 state.pipes.push(dest);
9623 break;
9624 }
9625 state.pipesCount += 1;
9626 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
9627
9628 var doEnd = (!pipeOpts || pipeOpts.end !== false) &&
9629 dest !== process.stdout &&
9630 dest !== process.stderr;
9631
9632 var endFn = doEnd ? onend : cleanup;
9633 if (state.endEmitted)
9634 process.nextTick(endFn);
9635 else
9636 src.once('end', endFn);
9637
9638 dest.on('unpipe', onunpipe);
9639 function onunpipe(readable) {
9640 debug('onunpipe');
9641 if (readable === src) {
9642 cleanup();
9643 }
9644 }
9645
9646 function onend() {
9647 debug('onend');
9648 dest.end();
9649 }
9650
9651 // when the dest drains, it reduces the awaitDrain counter
9652 // on the source. This would be more elegant with a .once()
9653 // handler in flow(), but adding and removing repeatedly is
9654 // too slow.
9655 var ondrain = pipeOnDrain(src);
9656 dest.on('drain', ondrain);
9657
9658 function cleanup() {
9659 debug('cleanup');
9660 // cleanup event handlers once the pipe is broken
9661 dest.removeListener('close', onclose);
9662 dest.removeListener('finish', onfinish);
9663 dest.removeListener('drain', ondrain);
9664 dest.removeListener('error', onerror);
9665 dest.removeListener('unpipe', onunpipe);
9666 src.removeListener('end', onend);
9667 src.removeListener('end', cleanup);
9668 src.removeListener('data', ondata);
9669
9670 // if the reader is waiting for a drain event from this
9671 // specific writer, then it would cause it to never start
9672 // flowing again.
9673 // So, if this is awaiting a drain, then we just call it now.
9674 // If we don't know, then assume that we are waiting for one.
9675 if (state.awaitDrain &&
9676 (!dest._writableState || dest._writableState.needDrain))
9677 ondrain();
9678 }
9679
9680 src.on('data', ondata);
9681 function ondata(chunk) {
9682 debug('ondata');
9683 var ret = dest.write(chunk);
9684 if (false === ret) {
9685 debug('false write response, pause',
9686 src._readableState.awaitDrain);
9687 src._readableState.awaitDrain++;
9688 src.pause();
9689 }
9690 }
9691
9692 // if the dest has an error, then stop piping into it.
9693 // however, don't suppress the throwing behavior for this.
9694 function onerror(er) {
9695 debug('onerror', er);
9696 unpipe();
9697 dest.removeListener('error', onerror);
9698 if (EE.listenerCount(dest, 'error') === 0)
9699 dest.emit('error', er);
9700 }
9701 // This is a brutally ugly hack to make sure that our error handler
9702 // is attached before any userland ones. NEVER DO THIS.
9703 if (!dest._events || !dest._events.error)
9704 dest.on('error', onerror);
9705 else if (isArray(dest._events.error))
9706 dest._events.error.unshift(onerror);
9707 else
9708 dest._events.error = [onerror, dest._events.error];
9709
9710
9711
9712 // Both close and finish should trigger unpipe, but only once.
9713 function onclose() {
9714 dest.removeListener('finish', onfinish);
9715 unpipe();
9716 }
9717 dest.once('close', onclose);
9718 function onfinish() {
9719 debug('onfinish');
9720 dest.removeListener('close', onclose);
9721 unpipe();
9722 }
9723 dest.once('finish', onfinish);
9724
9725 function unpipe() {
9726 debug('unpipe');
9727 src.unpipe(dest);
9728 }
9729
9730 // tell the dest that it's being piped to
9731 dest.emit('pipe', src);
9732
9733 // start the flow if it hasn't been started already.
9734 if (!state.flowing) {
9735 debug('pipe resume');
9736 src.resume();
9737 }
9738
9739 return dest;
9740 };
9741
9742 function pipeOnDrain(src) {
9743 return function() {
9744 var state = src._readableState;
9745 debug('pipeOnDrain', state.awaitDrain);
9746 if (state.awaitDrain)
9747 state.awaitDrain--;
9748 if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) {
9749 state.flowing = true;
9750 flow(src);
9751 }
9752 };
9753 }
9754
9755
9756 Readable.prototype.unpipe = function(dest) {
9757 var state = this._readableState;
9758
9759 // if we're not piping anywhere, then do nothing.
9760 if (state.pipesCount === 0)
9761 return this;
9762
9763 // just one destination. most common case.
9764 if (state.pipesCount === 1) {
9765 // passed in one, but it's not the right one.
9766 if (dest && dest !== state.pipes)
9767 return this;
9768
9769 if (!dest)
9770 dest = state.pipes;
9771
9772 // got a match.
9773 state.pipes = null;
9774 state.pipesCount = 0;
9775 state.flowing = false;
9776 if (dest)
9777 dest.emit('unpipe', this);
9778 return this;
9779 }
9780
9781 // slow case. multiple pipe destinations.
9782
9783 if (!dest) {
9784 // remove all.
9785 var dests = state.pipes;
9786 var len = state.pipesCount;
9787 state.pipes = null;
9788 state.pipesCount = 0;
9789 state.flowing = false;
9790
9791 for (var i = 0; i < len; i++)
9792 dests[i].emit('unpipe', this);
9793 return this;
9794 }
9795
9796 // try to find the right one.
9797 var i = indexOf(state.pipes, dest);
9798 if (i === -1)
9799 return this;
9800
9801 state.pipes.splice(i, 1);
9802 state.pipesCount -= 1;
9803 if (state.pipesCount === 1)
9804 state.pipes = state.pipes[0];
9805
9806 dest.emit('unpipe', this);
9807
9808 return this;
9809 };
9810
9811 // set up data events if they are asked for
9812 // Ensure readable listeners eventually get something
9813 Readable.prototype.on = function(ev, fn) {
9814 var res = Stream.prototype.on.call(this, ev, fn);
9815
9816 // If listening to data, and it has not explicitly been paused,
9817 // then call resume to start the flow of data on the next tick.
9818 if (ev === 'data' && false !== this._readableState.flowing) {
9819 this.resume();
9820 }
9821
9822 if (ev === 'readable' && this.readable) {
9823 var state = this._readableState;
9824 if (!state.readableListening) {
9825 state.readableListening = true;
9826 state.emittedReadable = false;
9827 state.needReadable = true;
9828 if (!state.reading) {
9829 var self = this;
9830 process.nextTick(function() {
9831 debug('readable nexttick read 0');
9832 self.read(0);
9833 });
9834 } else if (state.length) {
9835 emitReadable(this, state);
9836 }
9837 }
9838 }
9839
9840 return res;
9841 };
9842 Readable.prototype.addListener = Readable.prototype.on;
9843
9844 // pause() and resume() are remnants of the legacy readable stream API
9845 // If the user uses them, then switch into old mode.
9846 Readable.prototype.resume = function() {
9847 var state = this._readableState;
9848 if (!state.flowing) {
9849 debug('resume');
9850 state.flowing = true;
9851 if (!state.reading) {
9852 debug('resume read 0');
9853 this.read(0);
9854 }
9855 resume(this, state);
9856 }
9857 return this;
9858 };
9859
9860 function resume(stream, state) {
9861 if (!state.resumeScheduled) {
9862 state.resumeScheduled = true;
9863 process.nextTick(function() {
9864 resume_(stream, state);
9865 });
9866 }
9867 }
9868
9869 function resume_(stream, state) {
9870 state.resumeScheduled = false;
9871 stream.emit('resume');
9872 flow(stream);
9873 if (state.flowing && !state.reading)
9874 stream.read(0);
9875 }
9876
9877 Readable.prototype.pause = function() {
9878 debug('call pause flowing=%j', this._readableState.flowing);
9879 if (false !== this._readableState.flowing) {
9880 debug('pause');
9881 this._readableState.flowing = false;
9882 this.emit('pause');
9883 }
9884 return this;
9885 };
9886
9887 function flow(stream) {
9888 var state = stream._readableState;
9889 debug('flow', state.flowing);
9890 if (state.flowing) {
9891 do {
9892 var chunk = stream.read();
9893 } while (null !== chunk && state.flowing);
9894 }
9895 }
9896
9897 // wrap an old-style stream as the async data source.
9898 // This is *not* part of the readable stream interface.
9899 // It is an ugly unfortunate mess of history.
9900 Readable.prototype.wrap = function(stream) {
9901 var state = this._readableState;
9902 var paused = false;
9903
9904 var self = this;
9905 stream.on('end', function() {
9906 debug('wrapped end');
9907 if (state.decoder && !state.ended) {
9908 var chunk = state.decoder.end();
9909 if (chunk && chunk.length)
9910 self.push(chunk);
9911 }
9912
9913 self.push(null);
9914 });
9915
9916 stream.on('data', function(chunk) {
9917 debug('wrapped data');
9918 if (state.decoder)
9919 chunk = state.decoder.write(chunk);
9920 if (!chunk || !state.objectMode && !chunk.length)
9921 return;
9922
9923 var ret = self.push(chunk);
9924 if (!ret) {
9925 paused = true;
9926 stream.pause();
9927 }
9928 });
9929
9930 // proxy all the other methods.
9931 // important when wrapping filters and duplexes.
9932 for (var i in stream) {
9933 if (util.isFunction(stream[i]) && util.isUndefined(this[i])) {
9934 this[i] = function(method) { return function() {
9935 return stream[method].apply(stream, arguments);
9936 }}(i);
9937 }
9938 }
9939
9940 // proxy certain important events.
9941 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
9942 forEach(events, function(ev) {
9943 stream.on(ev, self.emit.bind(self, ev));
9944 });
9945
9946 // when we try to consume some more bytes, simply unpause the
9947 // underlying stream.
9948 self._read = function(n) {
9949 debug('wrapped _read', n);
9950 if (paused) {
9951 paused = false;
9952 stream.resume();
9953 }
9954 };
9955
9956 return self;
9957 };
9958
9959
9960
9961 // exposed for testing purposes only.
9962 Readable._fromList = fromList;
9963
9964 // Pluck off n bytes from an array of buffers.
9965 // Length is the combined lengths of all the buffers in the list.
9966 function fromList(n, state) {
9967 var list = state.buffer;
9968 var length = state.length;
9969 var stringMode = !!state.decoder;
9970 var objectMode = !!state.objectMode;
9971 var ret;
9972
9973 // nothing in the list, definitely empty.
9974 if (list.length === 0)
9975 return null;
9976
9977 if (length === 0)
9978 ret = null;
9979 else if (objectMode)
9980 ret = list.shift();
9981 else if (!n || n >= length) {
9982 // read it all, truncate the array.
9983 if (stringMode)
9984 ret = list.join('');
9985 else
9986 ret = Buffer.concat(list, length);
9987 list.length = 0;
9988 } else {
9989 // read just some of it.
9990 if (n < list[0].length) {
9991 // just take a part of the first list item.
9992 // slice is the same for buffers and strings.
9993 var buf = list[0];
9994 ret = buf.slice(0, n);
9995 list[0] = buf.slice(n);
9996 } else if (n === list[0].length) {
9997 // first list is a perfect match
9998 ret = list.shift();
9999 } else {
10000 // complex case.
10001 // we have enough to cover it, but it spans past the first buffer.
10002 if (stringMode)
10003 ret = '';
10004 else
10005 ret = new Buffer(n);
10006
10007 var c = 0;
10008 for (var i = 0, l = list.length; i < l && c < n; i++) {
10009 var buf = list[0];
10010 var cpy = Math.min(n - c, buf.length);
10011
10012 if (stringMode)
10013 ret += buf.slice(0, cpy);
10014 else
10015 buf.copy(ret, c, 0, cpy);
10016
10017 if (cpy < buf.length)
10018 list[0] = buf.slice(cpy);
10019 else
10020 list.shift();
10021
10022 c += cpy;
10023 }
10024 }
10025 }
10026
10027 return ret;
10028 }
10029
10030 function endReadable(stream) {
10031 var state = stream._readableState;
10032
10033 // If we get here before consuming all the bytes, then that is a
10034 // bug in node. Should never happen.
10035 if (state.length > 0)
10036 throw new Error('endReadable called on non-empty stream');
10037
10038 if (!state.endEmitted) {
10039 state.ended = true;
10040 process.nextTick(function() {
10041 // Check that we didn't get one last unshift.
10042 if (!state.endEmitted && state.length === 0) {
10043 state.endEmitted = true;
10044 stream.readable = false;
10045 stream.emit('end');
10046 }
10047 });
10048 }
10049 }
10050
10051 function forEach (xs, f) {
10052 for (var i = 0, l = xs.length; i < l; i++) {
10053 f(xs[i], i);
10054 }
10055 }
10056
10057 function indexOf (xs, x) {
10058 for (var i = 0, l = xs.length; i < l; i++) {
10059 if (xs[i] === x) return i;
10060 }
10061 return -1;
10062 }
10063
10064 }).call(this,require('_process'))
10065 },{"./_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){
10066 // Copyright Joyent, Inc. and other Node contributors.
10067 //
10068 // Permission is hereby granted, free of charge, to any person obtaining a
10069 // copy of this software and associated documentation files (the
10070 // "Software"), to deal in the Software without restriction, including
10071 // without limitation the rights to use, copy, modify, merge, publish,
10072 // distribute, sublicense, and/or sell copies of the Software, and to permit
10073 // persons to whom the Software is furnished to do so, subject to the
10074 // following conditions:
10075 //
10076 // The above copyright notice and this permission notice shall be included
10077 // in all copies or substantial portions of the Software.
10078 //
10079 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10080 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10081 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10082 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10083 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10084 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10085 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10086
10087
10088 // a transform stream is a readable/writable stream where you do
10089 // something with the data. Sometimes it's called a "filter",
10090 // but that's not a great name for it, since that implies a thing where
10091 // some bits pass through, and others are simply ignored. (That would
10092 // be a valid example of a transform, of course.)
10093 //
10094 // While the output is causally related to the input, it's not a
10095 // necessarily symmetric or synchronous transformation. For example,
10096 // a zlib stream might take multiple plain-text writes(), and then
10097 // emit a single compressed chunk some time in the future.
10098 //
10099 // Here's how this works:
10100 //
10101 // The Transform stream has all the aspects of the readable and writable
10102 // stream classes. When you write(chunk), that calls _write(chunk,cb)
10103 // internally, and returns false if there's a lot of pending writes
10104 // buffered up. When you call read(), that calls _read(n) until
10105 // there's enough pending readable data buffered up.
10106 //
10107 // In a transform stream, the written data is placed in a buffer. When
10108 // _read(n) is called, it transforms the queued up data, calling the
10109 // buffered _write cb's as it consumes chunks. If consuming a single
10110 // written chunk would result in multiple output chunks, then the first
10111 // outputted bit calls the readcb, and subsequent chunks just go into
10112 // the read buffer, and will cause it to emit 'readable' if necessary.
10113 //
10114 // This way, back-pressure is actually determined by the reading side,
10115 // since _read has to be called to start processing a new chunk. However,
10116 // a pathological inflate type of transform can cause excessive buffering
10117 // here. For example, imagine a stream where every byte of input is
10118 // interpreted as an integer from 0-255, and then results in that many
10119 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
10120 // 1kb of data being output. In this case, you could write a very small
10121 // amount of input, and end up with a very large amount of output. In
10122 // such a pathological inflating mechanism, there'd be no way to tell
10123 // the system to stop doing the transform. A single 4MB write could
10124 // cause the system to run out of memory.
10125 //
10126 // However, even in such a pathological case, only a single written chunk
10127 // would be consumed, and then the rest would wait (un-transformed) until
10128 // the results of the previous transformed chunk were consumed.
10129
10130 module.exports = Transform;
10131
10132 var Duplex = require('./_stream_duplex');
10133
10134 /*<replacement>*/
10135 var util = require('core-util-is');
10136 util.inherits = require('inherits');
10137 /*</replacement>*/
10138
10139 util.inherits(Transform, Duplex);
10140
10141
10142 function TransformState(options, stream) {
10143 this.afterTransform = function(er, data) {
10144 return afterTransform(stream, er, data);
10145 };
10146
10147 this.needTransform = false;
10148 this.transforming = false;
10149 this.writecb = null;
10150 this.writechunk = null;
10151 }
10152
10153 function afterTransform(stream, er, data) {
10154 var ts = stream._transformState;
10155 ts.transforming = false;
10156
10157 var cb = ts.writecb;
10158
10159 if (!cb)
10160 return stream.emit('error', new Error('no writecb in Transform class'));
10161
10162 ts.writechunk = null;
10163 ts.writecb = null;
10164
10165 if (!util.isNullOrUndefined(data))
10166 stream.push(data);
10167
10168 if (cb)
10169 cb(er);
10170
10171 var rs = stream._readableState;
10172 rs.reading = false;
10173 if (rs.needReadable || rs.length < rs.highWaterMark) {
10174 stream._read(rs.highWaterMark);
10175 }
10176 }
10177
10178
10179 function Transform(options) {
10180 if (!(this instanceof Transform))
10181 return new Transform(options);
10182
10183 Duplex.call(this, options);
10184
10185 this._transformState = new TransformState(options, this);
10186
10187 // when the writable side finishes, then flush out anything remaining.
10188 var stream = this;
10189
10190 // start out asking for a readable event once data is transformed.
10191 this._readableState.needReadable = true;
10192
10193 // we have implemented the _read method, and done the other things
10194 // that Readable wants before the first _read call, so unset the
10195 // sync guard flag.
10196 this._readableState.sync = false;
10197
10198 this.once('prefinish', function() {
10199 if (util.isFunction(this._flush))
10200 this._flush(function(er) {
10201 done(stream, er);
10202 });
10203 else
10204 done(stream);
10205 });
10206 }
10207
10208 Transform.prototype.push = function(chunk, encoding) {
10209 this._transformState.needTransform = false;
10210 return Duplex.prototype.push.call(this, chunk, encoding);
10211 };
10212
10213 // This is the part where you do stuff!
10214 // override this function in implementation classes.
10215 // 'chunk' is an input chunk.
10216 //
10217 // Call `push(newChunk)` to pass along transformed output
10218 // to the readable side. You may call 'push' zero or more times.
10219 //
10220 // Call `cb(err)` when you are done with this chunk. If you pass
10221 // an error, then that'll put the hurt on the whole operation. If you
10222 // never call cb(), then you'll never get another chunk.
10223 Transform.prototype._transform = function(chunk, encoding, cb) {
10224 throw new Error('not implemented');
10225 };
10226
10227 Transform.prototype._write = function(chunk, encoding, cb) {
10228 var ts = this._transformState;
10229 ts.writecb = cb;
10230 ts.writechunk = chunk;
10231 ts.writeencoding = encoding;
10232 if (!ts.transforming) {
10233 var rs = this._readableState;
10234 if (ts.needTransform ||
10235 rs.needReadable ||
10236 rs.length < rs.highWaterMark)
10237 this._read(rs.highWaterMark);
10238 }
10239 };
10240
10241 // Doesn't matter what the args are here.
10242 // _transform does all the work.
10243 // That we got here means that the readable side wants more data.
10244 Transform.prototype._read = function(n) {
10245 var ts = this._transformState;
10246
10247 if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) {
10248 ts.transforming = true;
10249 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
10250 } else {
10251 // mark that we need a transform, so that any data that comes in
10252 // will get processed, now that we've asked for it.
10253 ts.needTransform = true;
10254 }
10255 };
10256
10257
10258 function done(stream, er) {
10259 if (er)
10260 return stream.emit('error', er);
10261
10262 // if there's nothing in the write buffer, then that means
10263 // that nothing more will ever be provided
10264 var ws = stream._writableState;
10265 var ts = stream._transformState;
10266
10267 if (ws.length)
10268 throw new Error('calling transform done when ws.length != 0');
10269
10270 if (ts.transforming)
10271 throw new Error('calling transform done when still transforming');
10272
10273 return stream.push(null);
10274 }
10275
10276 },{"./_stream_duplex":16,"core-util-is":21,"inherits":12}],20:[function(require,module,exports){
10277 (function (process){
10278 // Copyright Joyent, Inc. and other Node contributors.
10279 //
10280 // Permission is hereby granted, free of charge, to any person obtaining a
10281 // copy of this software and associated documentation files (the
10282 // "Software"), to deal in the Software without restriction, including
10283 // without limitation the rights to use, copy, modify, merge, publish,
10284 // distribute, sublicense, and/or sell copies of the Software, and to permit
10285 // persons to whom the Software is furnished to do so, subject to the
10286 // following conditions:
10287 //
10288 // The above copyright notice and this permission notice shall be included
10289 // in all copies or substantial portions of the Software.
10290 //
10291 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10292 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10293 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10294 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10295 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10296 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10297 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10298
10299 // A bit simpler than readable streams.
10300 // Implement an async ._write(chunk, cb), and it'll handle all
10301 // the drain event emission and buffering.
10302
10303 module.exports = Writable;
10304
10305 /*<replacement>*/
10306 var Buffer = require('buffer').Buffer;
10307 /*</replacement>*/
10308
10309 Writable.WritableState = WritableState;
10310
10311
10312 /*<replacement>*/
10313 var util = require('core-util-is');
10314 util.inherits = require('inherits');
10315 /*</replacement>*/
10316
10317 var Stream = require('stream');
10318
10319 util.inherits(Writable, Stream);
10320
10321 function WriteReq(chunk, encoding, cb) {
10322 this.chunk = chunk;
10323 this.encoding = encoding;
10324 this.callback = cb;
10325 }
10326
10327 function WritableState(options, stream) {
10328 var Duplex = require('./_stream_duplex');
10329
10330 options = options || {};
10331
10332 // the point at which write() starts returning false
10333 // Note: 0 is a valid value, means that we always return false if
10334 // the entire buffer is not flushed immediately on write()
10335 var hwm = options.highWaterMark;
10336 var defaultHwm = options.objectMode ? 16 : 16 * 1024;
10337 this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
10338
10339 // object stream flag to indicate whether or not this stream
10340 // contains buffers or objects.
10341 this.objectMode = !!options.objectMode;
10342
10343 if (stream instanceof Duplex)
10344 this.objectMode = this.objectMode || !!options.writableObjectMode;
10345
10346 // cast to ints.
10347 this.highWaterMark = ~~this.highWaterMark;
10348
10349 this.needDrain = false;
10350 // at the start of calling end()
10351 this.ending = false;
10352 // when end() has been called, and returned
10353 this.ended = false;
10354 // when 'finish' is emitted
10355 this.finished = false;
10356
10357 // should we decode strings into buffers before passing to _write?
10358 // this is here so that some node-core streams can optimize string
10359 // handling at a lower level.
10360 var noDecode = options.decodeStrings === false;
10361 this.decodeStrings = !noDecode;
10362
10363 // Crypto is kind of old and crusty. Historically, its default string
10364 // encoding is 'binary' so we have to make this configurable.
10365 // Everything else in the universe uses 'utf8', though.
10366 this.defaultEncoding = options.defaultEncoding || 'utf8';
10367
10368 // not an actual buffer we keep track of, but a measurement
10369 // of how much we're waiting to get pushed to some underlying
10370 // socket or file.
10371 this.length = 0;
10372
10373 // a flag to see when we're in the middle of a write.
10374 this.writing = false;
10375
10376 // when true all writes will be buffered until .uncork() call
10377 this.corked = 0;
10378
10379 // a flag to be able to tell if the onwrite cb is called immediately,
10380 // or on a later tick. We set this to true at first, because any
10381 // actions that shouldn't happen until "later" should generally also
10382 // not happen before the first write call.
10383 this.sync = true;
10384
10385 // a flag to know if we're processing previously buffered items, which
10386 // may call the _write() callback in the same tick, so that we don't
10387 // end up in an overlapped onwrite situation.
10388 this.bufferProcessing = false;
10389
10390 // the callback that's passed to _write(chunk,cb)
10391 this.onwrite = function(er) {
10392 onwrite(stream, er);
10393 };
10394
10395 // the callback that the user supplies to write(chunk,encoding,cb)
10396 this.writecb = null;
10397
10398 // the amount that is being written when _write is called.
10399 this.writelen = 0;
10400
10401 this.buffer = [];
10402
10403 // number of pending user-supplied write callbacks
10404 // this must be 0 before 'finish' can be emitted
10405 this.pendingcb = 0;
10406
10407 // emit prefinish if the only thing we're waiting for is _write cbs
10408 // This is relevant for synchronous Transform streams
10409 this.prefinished = false;
10410
10411 // True if the error was already emitted and should not be thrown again
10412 this.errorEmitted = false;
10413 }
10414
10415 function Writable(options) {
10416 var Duplex = require('./_stream_duplex');
10417
10418 // Writable ctor is applied to Duplexes, though they're not
10419 // instanceof Writable, they're instanceof Readable.
10420 if (!(this instanceof Writable) && !(this instanceof Duplex))
10421 return new Writable(options);
10422
10423 this._writableState = new WritableState(options, this);
10424
10425 // legacy.
10426 this.writable = true;
10427
10428 Stream.call(this);
10429 }
10430
10431 // Otherwise people can pipe Writable streams, which is just wrong.
10432 Writable.prototype.pipe = function() {
10433 this.emit('error', new Error('Cannot pipe. Not readable.'));
10434 };
10435
10436
10437 function writeAfterEnd(stream, state, cb) {
10438 var er = new Error('write after end');
10439 // TODO: defer error events consistently everywhere, not just the cb
10440 stream.emit('error', er);
10441 process.nextTick(function() {
10442 cb(er);
10443 });
10444 }
10445
10446 // If we get something that is not a buffer, string, null, or undefined,
10447 // and we're not in objectMode, then that's an error.
10448 // Otherwise stream chunks are all considered to be of length=1, and the
10449 // watermarks determine how many objects to keep in the buffer, rather than
10450 // how many bytes or characters.
10451 function validChunk(stream, state, chunk, cb) {
10452 var valid = true;
10453 if (!util.isBuffer(chunk) &&
10454 !util.isString(chunk) &&
10455 !util.isNullOrUndefined(chunk) &&
10456 !state.objectMode) {
10457 var er = new TypeError('Invalid non-string/buffer chunk');
10458 stream.emit('error', er);
10459 process.nextTick(function() {
10460 cb(er);
10461 });
10462 valid = false;
10463 }
10464 return valid;
10465 }
10466
10467 Writable.prototype.write = function(chunk, encoding, cb) {
10468 var state = this._writableState;
10469 var ret = false;
10470
10471 if (util.isFunction(encoding)) {
10472 cb = encoding;
10473 encoding = null;
10474 }
10475
10476 if (util.isBuffer(chunk))
10477 encoding = 'buffer';
10478 else if (!encoding)
10479 encoding = state.defaultEncoding;
10480
10481 if (!util.isFunction(cb))
10482 cb = function() {};
10483
10484 if (state.ended)
10485 writeAfterEnd(this, state, cb);
10486 else if (validChunk(this, state, chunk, cb)) {
10487 state.pendingcb++;
10488 ret = writeOrBuffer(this, state, chunk, encoding, cb);
10489 }
10490
10491 return ret;
10492 };
10493
10494 Writable.prototype.cork = function() {
10495 var state = this._writableState;
10496
10497 state.corked++;
10498 };
10499
10500 Writable.prototype.uncork = function() {
10501 var state = this._writableState;
10502
10503 if (state.corked) {
10504 state.corked--;
10505
10506 if (!state.writing &&
10507 !state.corked &&
10508 !state.finished &&
10509 !state.bufferProcessing &&
10510 state.buffer.length)
10511 clearBuffer(this, state);
10512 }
10513 };
10514
10515 function decodeChunk(state, chunk, encoding) {
10516 if (!state.objectMode &&
10517 state.decodeStrings !== false &&
10518 util.isString(chunk)) {
10519 chunk = new Buffer(chunk, encoding);
10520 }
10521 return chunk;
10522 }
10523
10524 // if we're already writing something, then just put this
10525 // in the queue, and wait our turn. Otherwise, call _write
10526 // If we return false, then we need a drain event, so set that flag.
10527 function writeOrBuffer(stream, state, chunk, encoding, cb) {
10528 chunk = decodeChunk(state, chunk, encoding);
10529 if (util.isBuffer(chunk))
10530 encoding = 'buffer';
10531 var len = state.objectMode ? 1 : chunk.length;
10532
10533 state.length += len;
10534
10535 var ret = state.length < state.highWaterMark;
10536 // we must ensure that previous needDrain will not be reset to false.
10537 if (!ret)
10538 state.needDrain = true;
10539
10540 if (state.writing || state.corked)
10541 state.buffer.push(new WriteReq(chunk, encoding, cb));
10542 else
10543 doWrite(stream, state, false, len, chunk, encoding, cb);
10544
10545 return ret;
10546 }
10547
10548 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
10549 state.writelen = len;
10550 state.writecb = cb;
10551 state.writing = true;
10552 state.sync = true;
10553 if (writev)
10554 stream._writev(chunk, state.onwrite);
10555 else
10556 stream._write(chunk, encoding, state.onwrite);
10557 state.sync = false;
10558 }
10559
10560 function onwriteError(stream, state, sync, er, cb) {
10561 if (sync)
10562 process.nextTick(function() {
10563 state.pendingcb--;
10564 cb(er);
10565 });
10566 else {
10567 state.pendingcb--;
10568 cb(er);
10569 }
10570
10571 stream._writableState.errorEmitted = true;
10572 stream.emit('error', er);
10573 }
10574
10575 function onwriteStateUpdate(state) {
10576 state.writing = false;
10577 state.writecb = null;
10578 state.length -= state.writelen;
10579 state.writelen = 0;
10580 }
10581
10582 function onwrite(stream, er) {
10583 var state = stream._writableState;
10584 var sync = state.sync;
10585 var cb = state.writecb;
10586
10587 onwriteStateUpdate(state);
10588
10589 if (er)
10590 onwriteError(stream, state, sync, er, cb);
10591 else {
10592 // Check if we're actually ready to finish, but don't emit yet
10593 var finished = needFinish(stream, state);
10594
10595 if (!finished &&
10596 !state.corked &&
10597 !state.bufferProcessing &&
10598 state.buffer.length) {
10599 clearBuffer(stream, state);
10600 }
10601
10602 if (sync) {
10603 process.nextTick(function() {
10604 afterWrite(stream, state, finished, cb);
10605 });
10606 } else {
10607 afterWrite(stream, state, finished, cb);
10608 }
10609 }
10610 }
10611
10612 function afterWrite(stream, state, finished, cb) {
10613 if (!finished)
10614 onwriteDrain(stream, state);
10615 state.pendingcb--;
10616 cb();
10617 finishMaybe(stream, state);
10618 }
10619
10620 // Must force callback to be called on nextTick, so that we don't
10621 // emit 'drain' before the write() consumer gets the 'false' return
10622 // value, and has a chance to attach a 'drain' listener.
10623 function onwriteDrain(stream, state) {
10624 if (state.length === 0 && state.needDrain) {
10625 state.needDrain = false;
10626 stream.emit('drain');
10627 }
10628 }
10629
10630
10631 // if there's something in the buffer waiting, then process it
10632 function clearBuffer(stream, state) {
10633 state.bufferProcessing = true;
10634
10635 if (stream._writev && state.buffer.length > 1) {
10636 // Fast case, write everything using _writev()
10637 var cbs = [];
10638 for (var c = 0; c < state.buffer.length; c++)
10639 cbs.push(state.buffer[c].callback);
10640
10641 // count the one we are adding, as well.
10642 // TODO(isaacs) clean this up
10643 state.pendingcb++;
10644 doWrite(stream, state, true, state.length, state.buffer, '', function(err) {
10645 for (var i = 0; i < cbs.length; i++) {
10646 state.pendingcb--;
10647 cbs[i](err);
10648 }
10649 });
10650
10651 // Clear buffer
10652 state.buffer = [];
10653 } else {
10654 // Slow case, write chunks one-by-one
10655 for (var c = 0; c < state.buffer.length; c++) {
10656 var entry = state.buffer[c];
10657 var chunk = entry.chunk;
10658 var encoding = entry.encoding;
10659 var cb = entry.callback;
10660 var len = state.objectMode ? 1 : chunk.length;
10661
10662 doWrite(stream, state, false, len, chunk, encoding, cb);
10663
10664 // if we didn't call the onwrite immediately, then
10665 // it means that we need to wait until it does.
10666 // also, that means that the chunk and cb are currently
10667 // being processed, so move the buffer counter past them.
10668 if (state.writing) {
10669 c++;
10670 break;
10671 }
10672 }
10673
10674 if (c < state.buffer.length)
10675 state.buffer = state.buffer.slice(c);
10676 else
10677 state.buffer.length = 0;
10678 }
10679
10680 state.bufferProcessing = false;
10681 }
10682
10683 Writable.prototype._write = function(chunk, encoding, cb) {
10684 cb(new Error('not implemented'));
10685
10686 };
10687
10688 Writable.prototype._writev = null;
10689
10690 Writable.prototype.end = function(chunk, encoding, cb) {
10691 var state = this._writableState;
10692
10693 if (util.isFunction(chunk)) {
10694 cb = chunk;
10695 chunk = null;
10696 encoding = null;
10697 } else if (util.isFunction(encoding)) {
10698 cb = encoding;
10699 encoding = null;
10700 }
10701
10702 if (!util.isNullOrUndefined(chunk))
10703 this.write(chunk, encoding);
10704
10705 // .end() fully uncorks
10706 if (state.corked) {
10707 state.corked = 1;
10708 this.uncork();
10709 }
10710
10711 // ignore unnecessary end() calls.
10712 if (!state.ending && !state.finished)
10713 endWritable(this, state, cb);
10714 };
10715
10716
10717 function needFinish(stream, state) {
10718 return (state.ending &&
10719 state.length === 0 &&
10720 !state.finished &&
10721 !state.writing);
10722 }
10723
10724 function prefinish(stream, state) {
10725 if (!state.prefinished) {
10726 state.prefinished = true;
10727 stream.emit('prefinish');
10728 }
10729 }
10730
10731 function finishMaybe(stream, state) {
10732 var need = needFinish(stream, state);
10733 if (need) {
10734 if (state.pendingcb === 0) {
10735 prefinish(stream, state);
10736 state.finished = true;
10737 stream.emit('finish');
10738 } else
10739 prefinish(stream, state);
10740 }
10741 return need;
10742 }
10743
10744 function endWritable(stream, state, cb) {
10745 state.ending = true;
10746 finishMaybe(stream, state);
10747 if (cb) {
10748 if (state.finished)
10749 process.nextTick(cb);
10750 else
10751 stream.once('finish', cb);
10752 }
10753 state.ended = true;
10754 }
10755
10756 }).call(this,require('_process'))
10757 },{"./_stream_duplex":16,"_process":14,"buffer":7,"core-util-is":21,"inherits":12,"stream":26}],21:[function(require,module,exports){
10758 (function (Buffer){
10759 // Copyright Joyent, Inc. and other Node contributors.
10760 //
10761 // Permission is hereby granted, free of charge, to any person obtaining a
10762 // copy of this software and associated documentation files (the
10763 // "Software"), to deal in the Software without restriction, including
10764 // without limitation the rights to use, copy, modify, merge, publish,
10765 // distribute, sublicense, and/or sell copies of the Software, and to permit
10766 // persons to whom the Software is furnished to do so, subject to the
10767 // following conditions:
10768 //
10769 // The above copyright notice and this permission notice shall be included
10770 // in all copies or substantial portions of the Software.
10771 //
10772 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10773 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10774 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10775 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10776 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10777 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10778 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10779
10780 // NOTE: These type checking functions intentionally don't use `instanceof`
10781 // because it is fragile and can be easily faked with `Object.create()`.
10782 function isArray(ar) {
10783 return Array.isArray(ar);
10784 }
10785 exports.isArray = isArray;
10786
10787 function isBoolean(arg) {
10788 return typeof arg === 'boolean';
10789 }
10790 exports.isBoolean = isBoolean;
10791
10792 function isNull(arg) {
10793 return arg === null;
10794 }
10795 exports.isNull = isNull;
10796
10797 function isNullOrUndefined(arg) {
10798 return arg == null;
10799 }
10800 exports.isNullOrUndefined = isNullOrUndefined;
10801
10802 function isNumber(arg) {
10803 return typeof arg === 'number';
10804 }
10805 exports.isNumber = isNumber;
10806
10807 function isString(arg) {
10808 return typeof arg === 'string';
10809 }
10810 exports.isString = isString;
10811
10812 function isSymbol(arg) {
10813 return typeof arg === 'symbol';
10814 }
10815 exports.isSymbol = isSymbol;
10816
10817 function isUndefined(arg) {
10818 return arg === void 0;
10819 }
10820 exports.isUndefined = isUndefined;
10821
10822 function isRegExp(re) {
10823 return isObject(re) && objectToString(re) === '[object RegExp]';
10824 }
10825 exports.isRegExp = isRegExp;
10826
10827 function isObject(arg) {
10828 return typeof arg === 'object' && arg !== null;
10829 }
10830 exports.isObject = isObject;
10831
10832 function isDate(d) {
10833 return isObject(d) && objectToString(d) === '[object Date]';
10834 }
10835 exports.isDate = isDate;
10836
10837 function isError(e) {
10838 return isObject(e) &&
10839 (objectToString(e) === '[object Error]' || e instanceof Error);
10840 }
10841 exports.isError = isError;
10842
10843 function isFunction(arg) {
10844 return typeof arg === 'function';
10845 }
10846 exports.isFunction = isFunction;
10847
10848 function isPrimitive(arg) {
10849 return arg === null ||
10850 typeof arg === 'boolean' ||
10851 typeof arg === 'number' ||
10852 typeof arg === 'string' ||
10853 typeof arg === 'symbol' || // ES6 symbol
10854 typeof arg === 'undefined';
10855 }
10856 exports.isPrimitive = isPrimitive;
10857
10858 function isBuffer(arg) {
10859 return Buffer.isBuffer(arg);
10860 }
10861 exports.isBuffer = isBuffer;
10862
10863 function objectToString(o) {
10864 return Object.prototype.toString.call(o);
10865 }
10866 }).call(this,require("buffer").Buffer)
10867 },{"buffer":7}],22:[function(require,module,exports){
10868 module.exports = require("./lib/_stream_passthrough.js")
10869
10870 },{"./lib/_stream_passthrough.js":17}],23:[function(require,module,exports){
10871 exports = module.exports = require('./lib/_stream_readable.js');
10872 exports.Stream = require('stream');
10873 exports.Readable = exports;
10874 exports.Writable = require('./lib/_stream_writable.js');
10875 exports.Duplex = require('./lib/_stream_duplex.js');
10876 exports.Transform = require('./lib/_stream_transform.js');
10877 exports.PassThrough = require('./lib/_stream_passthrough.js');
10878
10879 },{"./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){
10880 module.exports = require("./lib/_stream_transform.js")
10881
10882 },{"./lib/_stream_transform.js":19}],25:[function(require,module,exports){
10883 module.exports = require("./lib/_stream_writable.js")
10884
10885 },{"./lib/_stream_writable.js":20}],26:[function(require,module,exports){
10886 // Copyright Joyent, Inc. and other Node contributors.
10887 //
10888 // Permission is hereby granted, free of charge, to any person obtaining a
10889 // copy of this software and associated documentation files (the
10890 // "Software"), to deal in the Software without restriction, including
10891 // without limitation the rights to use, copy, modify, merge, publish,
10892 // distribute, sublicense, and/or sell copies of the Software, and to permit
10893 // persons to whom the Software is furnished to do so, subject to the
10894 // following conditions:
10895 //
10896 // The above copyright notice and this permission notice shall be included
10897 // in all copies or substantial portions of the Software.
10898 //
10899 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10900 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10901 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10902 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10903 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10904 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10905 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10906
10907 module.exports = Stream;
10908
10909 var EE = require('events').EventEmitter;
10910 var inherits = require('inherits');
10911
10912 inherits(Stream, EE);
10913 Stream.Readable = require('readable-stream/readable.js');
10914 Stream.Writable = require('readable-stream/writable.js');
10915 Stream.Duplex = require('readable-stream/duplex.js');
10916 Stream.Transform = require('readable-stream/transform.js');
10917 Stream.PassThrough = require('readable-stream/passthrough.js');
10918
10919 // Backwards-compat with node 0.4.x
10920 Stream.Stream = Stream;
10921
10922
10923
10924 // old-style streams. Note that the pipe method (the only relevant
10925 // part of this class) is overridden in the Readable class.
10926
10927 function Stream() {
10928 EE.call(this);
10929 }
10930
10931 Stream.prototype.pipe = function(dest, options) {
10932 var source = this;
10933
10934 function ondata(chunk) {
10935 if (dest.writable) {
10936 if (false === dest.write(chunk) && source.pause) {
10937 source.pause();
10938 }
10939 }
10940 }
10941
10942 source.on('data', ondata);
10943
10944 function ondrain() {
10945 if (source.readable && source.resume) {
10946 source.resume();
10947 }
10948 }
10949
10950 dest.on('drain', ondrain);
10951
10952 // If the 'end' option is not supplied, dest.end() will be called when
10953 // source gets the 'end' or 'close' events. Only dest.end() once.
10954 if (!dest._isStdio && (!options || options.end !== false)) {
10955 source.on('end', onend);
10956 source.on('close', onclose);
10957 }
10958
10959 var didOnEnd = false;
10960 function onend() {
10961 if (didOnEnd) return;
10962 didOnEnd = true;
10963
10964 dest.end();
10965 }
10966
10967
10968 function onclose() {
10969 if (didOnEnd) return;
10970 didOnEnd = true;
10971
10972 if (typeof dest.destroy === 'function') dest.destroy();
10973 }
10974
10975 // don't leave dangling pipes when there are errors.
10976 function onerror(er) {
10977 cleanup();
10978 if (EE.listenerCount(this, 'error') === 0) {
10979 throw er; // Unhandled stream error in pipe.
10980 }
10981 }
10982
10983 source.on('error', onerror);
10984 dest.on('error', onerror);
10985
10986 // remove all the event listeners that were added.
10987 function cleanup() {
10988 source.removeListener('data', ondata);
10989 dest.removeListener('drain', ondrain);
10990
10991 source.removeListener('end', onend);
10992 source.removeListener('close', onclose);
10993
10994 source.removeListener('error', onerror);
10995 dest.removeListener('error', onerror);
10996
10997 source.removeListener('end', cleanup);
10998 source.removeListener('close', cleanup);
10999
11000 dest.removeListener('close', cleanup);
11001 }
11002
11003 source.on('end', cleanup);
11004 source.on('close', cleanup);
11005
11006 dest.on('close', cleanup);
11007
11008 dest.emit('pipe', source);
11009
11010 // Allow for unix-like usage: A.pipe(B).pipe(C)
11011 return dest;
11012 };
11013
11014 },{"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){
11015 // Copyright Joyent, Inc. and other Node contributors.
11016 //
11017 // Permission is hereby granted, free of charge, to any person obtaining a
11018 // copy of this software and associated documentation files (the
11019 // "Software"), to deal in the Software without restriction, including
11020 // without limitation the rights to use, copy, modify, merge, publish,
11021 // distribute, sublicense, and/or sell copies of the Software, and to permit
11022 // persons to whom the Software is furnished to do so, subject to the
11023 // following conditions:
11024 //
11025 // The above copyright notice and this permission notice shall be included
11026 // in all copies or substantial portions of the Software.
11027 //
11028 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11029 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11030 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11031 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11032 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11033 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11034 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11035
11036 var Buffer = require('buffer').Buffer;
11037
11038 var isBufferEncoding = Buffer.isEncoding
11039 || function(encoding) {
11040 switch (encoding && encoding.toLowerCase()) {
11041 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;
11042 default: return false;
11043 }
11044 }
11045
11046
11047 function assertEncoding(encoding) {
11048 if (encoding && !isBufferEncoding(encoding)) {
11049 throw new Error('Unknown encoding: ' + encoding);
11050 }
11051 }
11052
11053 // StringDecoder provides an interface for efficiently splitting a series of
11054 // buffers into a series of JS strings without breaking apart multi-byte
11055 // characters. CESU-8 is handled as part of the UTF-8 encoding.
11056 //
11057 // @TODO Handling all encodings inside a single object makes it very difficult
11058 // to reason about this code, so it should be split up in the future.
11059 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
11060 // points as used by CESU-8.
11061 var StringDecoder = exports.StringDecoder = function(encoding) {
11062 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
11063 assertEncoding(encoding);
11064 switch (this.encoding) {
11065 case 'utf8':
11066 // CESU-8 represents each of Surrogate Pair by 3-bytes
11067 this.surrogateSize = 3;
11068 break;
11069 case 'ucs2':
11070 case 'utf16le':
11071 // UTF-16 represents each of Surrogate Pair by 2-bytes
11072 this.surrogateSize = 2;
11073 this.detectIncompleteChar = utf16DetectIncompleteChar;
11074 break;
11075 case 'base64':
11076 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
11077 this.surrogateSize = 3;
11078 this.detectIncompleteChar = base64DetectIncompleteChar;
11079 break;
11080 default:
11081 this.write = passThroughWrite;
11082 return;
11083 }
11084
11085 // Enough space to store all bytes of a single character. UTF-8 needs 4
11086 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
11087 this.charBuffer = new Buffer(6);
11088 // Number of bytes received for the current incomplete multi-byte character.
11089 this.charReceived = 0;
11090 // Number of bytes expected for the current incomplete multi-byte character.
11091 this.charLength = 0;
11092 };
11093
11094
11095 // write decodes the given buffer and returns it as JS string that is
11096 // guaranteed to not contain any partial multi-byte characters. Any partial
11097 // character found at the end of the buffer is buffered up, and will be
11098 // returned when calling write again with the remaining bytes.
11099 //
11100 // Note: Converting a Buffer containing an orphan surrogate to a String
11101 // currently works, but converting a String to a Buffer (via `new Buffer`, or
11102 // Buffer#write) will replace incomplete surrogates with the unicode
11103 // replacement character. See https://codereview.chromium.org/121173009/ .
11104 StringDecoder.prototype.write = function(buffer) {
11105 var charStr = '';
11106 // if our last write ended with an incomplete multibyte character
11107 while (this.charLength) {
11108 // determine how many remaining bytes this buffer has to offer for this char
11109 var available = (buffer.length >= this.charLength - this.charReceived) ?
11110 this.charLength - this.charReceived :
11111 buffer.length;
11112
11113 // add the new bytes to the char buffer
11114 buffer.copy(this.charBuffer, this.charReceived, 0, available);
11115 this.charReceived += available;
11116
11117 if (this.charReceived < this.charLength) {
11118 // still not enough chars in this buffer? wait for more ...
11119 return '';
11120 }
11121
11122 // remove bytes belonging to the current character from the buffer
11123 buffer = buffer.slice(available, buffer.length);
11124
11125 // get the character that was split
11126 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
11127
11128 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
11129 var charCode = charStr.charCodeAt(charStr.length - 1);
11130 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
11131 this.charLength += this.surrogateSize;
11132 charStr = '';
11133 continue;
11134 }
11135 this.charReceived = this.charLength = 0;
11136
11137 // if there are no more bytes in this buffer, just emit our char
11138 if (buffer.length === 0) {
11139 return charStr;
11140 }
11141 break;
11142 }
11143
11144 // determine and set charLength / charReceived
11145 this.detectIncompleteChar(buffer);
11146
11147 var end = buffer.length;
11148 if (this.charLength) {
11149 // buffer the incomplete character bytes we got
11150 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
11151 end -= this.charReceived;
11152 }
11153
11154 charStr += buffer.toString(this.encoding, 0, end);
11155
11156 var end = charStr.length - 1;
11157 var charCode = charStr.charCodeAt(end);
11158 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
11159 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
11160 var size = this.surrogateSize;
11161 this.charLength += size;
11162 this.charReceived += size;
11163 this.charBuffer.copy(this.charBuffer, size, 0, size);
11164 buffer.copy(this.charBuffer, 0, 0, size);
11165 return charStr.substring(0, end);
11166 }
11167
11168 // or just emit the charStr
11169 return charStr;
11170 };
11171
11172 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
11173 // the end of the given buffer. If so, it sets this.charLength to the byte
11174 // length that character, and sets this.charReceived to the number of bytes
11175 // that are available for this character.
11176 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
11177 // determine how many bytes we have to check at the end of this buffer
11178 var i = (buffer.length >= 3) ? 3 : buffer.length;
11179
11180 // Figure out if one of the last i bytes of our buffer announces an
11181 // incomplete char.
11182 for (; i > 0; i--) {
11183 var c = buffer[buffer.length - i];
11184
11185 // See http://en.wikipedia.org/wiki/UTF-8#Description
11186
11187 // 110XXXXX
11188 if (i == 1 && c >> 5 == 0x06) {
11189 this.charLength = 2;
11190 break;
11191 }
11192
11193 // 1110XXXX
11194 if (i <= 2 && c >> 4 == 0x0E) {
11195 this.charLength = 3;
11196 break;
11197 }
11198
11199 // 11110XXX
11200 if (i <= 3 && c >> 3 == 0x1E) {
11201 this.charLength = 4;
11202 break;
11203 }
11204 }
11205 this.charReceived = i;
11206 };
11207
11208 StringDecoder.prototype.end = function(buffer) {
11209 var res = '';
11210 if (buffer && buffer.length)
11211 res = this.write(buffer);
11212
11213 if (this.charReceived) {
11214 var cr = this.charReceived;
11215 var buf = this.charBuffer;
11216 var enc = this.encoding;
11217 res += buf.slice(0, cr).toString(enc);
11218 }
11219
11220 return res;
11221 };
11222
11223 function passThroughWrite(buffer) {
11224 return buffer.toString(this.encoding);
11225 }
11226
11227 function utf16DetectIncompleteChar(buffer) {
11228 this.charReceived = buffer.length % 2;
11229 this.charLength = this.charReceived ? 2 : 0;
11230 }
11231
11232 function base64DetectIncompleteChar(buffer) {
11233 this.charReceived = buffer.length % 3;
11234 this.charLength = this.charReceived ? 3 : 0;
11235 }
11236
11237 },{"buffer":7}],28:[function(require,module,exports){
11238 module.exports = function isBuffer(arg) {
11239 return arg && typeof arg === 'object'
11240 && typeof arg.copy === 'function'
11241 && typeof arg.fill === 'function'
11242 && typeof arg.readUInt8 === 'function';
11243 }
11244 },{}],29:[function(require,module,exports){
11245 (function (process,global){
11246 // Copyright Joyent, Inc. and other Node contributors.
11247 //
11248 // Permission is hereby granted, free of charge, to any person obtaining a
11249 // copy of this software and associated documentation files (the
11250 // "Software"), to deal in the Software without restriction, including
11251 // without limitation the rights to use, copy, modify, merge, publish,
11252 // distribute, sublicense, and/or sell copies of the Software, and to permit
11253 // persons to whom the Software is furnished to do so, subject to the
11254 // following conditions:
11255 //
11256 // The above copyright notice and this permission notice shall be included
11257 // in all copies or substantial portions of the Software.
11258 //
11259 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11260 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11261 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11262 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11263 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11264 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11265 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11266
11267 var formatRegExp = /%[sdj%]/g;
11268 exports.format = function(f) {
11269 if (!isString(f)) {
11270 var objects = [];
11271 for (var i = 0; i < arguments.length; i++) {
11272 objects.push(inspect(arguments[i]));
11273 }
11274 return objects.join(' ');
11275 }
11276
11277 var i = 1;
11278 var args = arguments;
11279 var len = args.length;
11280 var str = String(f).replace(formatRegExp, function(x) {
11281 if (x === '%%') return '%';
11282 if (i >= len) return x;
11283 switch (x) {
11284 case '%s': return String(args[i++]);
11285 case '%d': return Number(args[i++]);
11286 case '%j':
11287 try {
11288 return JSON.stringify(args[i++]);
11289 } catch (_) {
11290 return '[Circular]';
11291 }
11292 default:
11293 return x;
11294 }
11295 });
11296 for (var x = args[i]; i < len; x = args[++i]) {
11297 if (isNull(x) || !isObject(x)) {
11298 str += ' ' + x;
11299 } else {
11300 str += ' ' + inspect(x);
11301 }
11302 }
11303 return str;
11304 };
11305
11306
11307 // Mark that a method should not be used.
11308 // Returns a modified function which warns once by default.
11309 // If --no-deprecation is set, then it is a no-op.
11310 exports.deprecate = function(fn, msg) {
11311 // Allow for deprecating things in the process of starting up.
11312 if (isUndefined(global.process)) {
11313 return function() {
11314 return exports.deprecate(fn, msg).apply(this, arguments);
11315 };
11316 }
11317
11318 if (process.noDeprecation === true) {
11319 return fn;
11320 }
11321
11322 var warned = false;
11323 function deprecated() {
11324 if (!warned) {
11325 if (process.throwDeprecation) {
11326 throw new Error(msg);
11327 } else if (process.traceDeprecation) {
11328 console.trace(msg);
11329 } else {
11330 console.error(msg);
11331 }
11332 warned = true;
11333 }
11334 return fn.apply(this, arguments);
11335 }
11336
11337 return deprecated;
11338 };
11339
11340
11341 var debugs = {};
11342 var debugEnviron;
11343 exports.debuglog = function(set) {
11344 if (isUndefined(debugEnviron))
11345 debugEnviron = process.env.NODE_DEBUG || '';
11346 set = set.toUpperCase();
11347 if (!debugs[set]) {
11348 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
11349 var pid = process.pid;
11350 debugs[set] = function() {
11351 var msg = exports.format.apply(exports, arguments);
11352 console.error('%s %d: %s', set, pid, msg);
11353 };
11354 } else {
11355 debugs[set] = function() {};
11356 }
11357 }
11358 return debugs[set];
11359 };
11360
11361
11362 /**
11363 * Echos the value of a value. Trys to print the value out
11364 * in the best way possible given the different types.
11365 *
11366 * @param {Object} obj The object to print out.
11367 * @param {Object} opts Optional options object that alters the output.
11368 */
11369 /* legacy: obj, showHidden, depth, colors*/
11370 function inspect(obj, opts) {
11371 // default options
11372 var ctx = {
11373 seen: [],
11374 stylize: stylizeNoColor
11375 };
11376 // legacy...
11377 if (arguments.length >= 3) ctx.depth = arguments[2];
11378 if (arguments.length >= 4) ctx.colors = arguments[3];
11379 if (isBoolean(opts)) {
11380 // legacy...
11381 ctx.showHidden = opts;
11382 } else if (opts) {
11383 // got an "options" object
11384 exports._extend(ctx, opts);
11385 }
11386 // set default options
11387 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
11388 if (isUndefined(ctx.depth)) ctx.depth = 2;
11389 if (isUndefined(ctx.colors)) ctx.colors = false;
11390 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
11391 if (ctx.colors) ctx.stylize = stylizeWithColor;
11392 return formatValue(ctx, obj, ctx.depth);
11393 }
11394 exports.inspect = inspect;
11395
11396
11397 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
11398 inspect.colors = {
11399 'bold' : [1, 22],
11400 'italic' : [3, 23],
11401 'underline' : [4, 24],
11402 'inverse' : [7, 27],
11403 'white' : [37, 39],
11404 'grey' : [90, 39],
11405 'black' : [30, 39],
11406 'blue' : [34, 39],
11407 'cyan' : [36, 39],
11408 'green' : [32, 39],
11409 'magenta' : [35, 39],
11410 'red' : [31, 39],
11411 'yellow' : [33, 39]
11412 };
11413
11414 // Don't use 'blue' not visible on cmd.exe
11415 inspect.styles = {
11416 'special': 'cyan',
11417 'number': 'yellow',
11418 'boolean': 'yellow',
11419 'undefined': 'grey',
11420 'null': 'bold',
11421 'string': 'green',
11422 'date': 'magenta',
11423 // "name": intentionally not styling
11424 'regexp': 'red'
11425 };
11426
11427
11428 function stylizeWithColor(str, styleType) {
11429 var style = inspect.styles[styleType];
11430
11431 if (style) {
11432 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
11433 '\u001b[' + inspect.colors[style][1] + 'm';
11434 } else {
11435 return str;
11436 }
11437 }
11438
11439
11440 function stylizeNoColor(str, styleType) {
11441 return str;
11442 }
11443
11444
11445 function arrayToHash(array) {
11446 var hash = {};
11447
11448 array.forEach(function(val, idx) {
11449 hash[val] = true;
11450 });
11451
11452 return hash;
11453 }
11454
11455
11456 function formatValue(ctx, value, recurseTimes) {
11457 // Provide a hook for user-specified inspect functions.
11458 // Check that value is an object with an inspect function on it
11459 if (ctx.customInspect &&
11460 value &&
11461 isFunction(value.inspect) &&
11462 // Filter out the util module, it's inspect function is special
11463 value.inspect !== exports.inspect &&
11464 // Also filter out any prototype objects using the circular check.
11465 !(value.constructor && value.constructor.prototype === value)) {
11466 var ret = value.inspect(recurseTimes, ctx);
11467 if (!isString(ret)) {
11468 ret = formatValue(ctx, ret, recurseTimes);
11469 }
11470 return ret;
11471 }
11472
11473 // Primitive types cannot have properties
11474 var primitive = formatPrimitive(ctx, value);
11475 if (primitive) {
11476 return primitive;
11477 }
11478
11479 // Look up the keys of the object.
11480 var keys = Object.keys(value);
11481 var visibleKeys = arrayToHash(keys);
11482
11483 if (ctx.showHidden) {
11484 keys = Object.getOwnPropertyNames(value);
11485 }
11486
11487 // IE doesn't make error fields non-enumerable
11488 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
11489 if (isError(value)
11490 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
11491 return formatError(value);
11492 }
11493
11494 // Some type of object without properties can be shortcutted.
11495 if (keys.length === 0) {
11496 if (isFunction(value)) {
11497 var name = value.name ? ': ' + value.name : '';
11498 return ctx.stylize('[Function' + name + ']', 'special');
11499 }
11500 if (isRegExp(value)) {
11501 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
11502 }
11503 if (isDate(value)) {
11504 return ctx.stylize(Date.prototype.toString.call(value), 'date');
11505 }
11506 if (isError(value)) {
11507 return formatError(value);
11508 }
11509 }
11510
11511 var base = '', array = false, braces = ['{', '}'];
11512
11513 // Make Array say that they are Array
11514 if (isArray(value)) {
11515 array = true;
11516 braces = ['[', ']'];
11517 }
11518
11519 // Make functions say that they are functions
11520 if (isFunction(value)) {
11521 var n = value.name ? ': ' + value.name : '';
11522 base = ' [Function' + n + ']';
11523 }
11524
11525 // Make RegExps say that they are RegExps
11526 if (isRegExp(value)) {
11527 base = ' ' + RegExp.prototype.toString.call(value);
11528 }
11529
11530 // Make dates with properties first say the date
11531 if (isDate(value)) {
11532 base = ' ' + Date.prototype.toUTCString.call(value);
11533 }
11534
11535 // Make error with message first say the error
11536 if (isError(value)) {
11537 base = ' ' + formatError(value);
11538 }
11539
11540 if (keys.length === 0 && (!array || value.length == 0)) {
11541 return braces[0] + base + braces[1];
11542 }
11543
11544 if (recurseTimes < 0) {
11545 if (isRegExp(value)) {
11546 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
11547 } else {
11548 return ctx.stylize('[Object]', 'special');
11549 }
11550 }
11551
11552 ctx.seen.push(value);
11553
11554 var output;
11555 if (array) {
11556 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
11557 } else {
11558 output = keys.map(function(key) {
11559 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
11560 });
11561 }
11562
11563 ctx.seen.pop();
11564
11565 return reduceToSingleString(output, base, braces);
11566 }
11567
11568
11569 function formatPrimitive(ctx, value) {
11570 if (isUndefined(value))
11571 return ctx.stylize('undefined', 'undefined');
11572 if (isString(value)) {
11573 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
11574 .replace(/'/g, "\\'")
11575 .replace(/\\"/g, '"') + '\'';
11576 return ctx.stylize(simple, 'string');
11577 }
11578 if (isNumber(value))
11579 return ctx.stylize('' + value, 'number');
11580 if (isBoolean(value))
11581 return ctx.stylize('' + value, 'boolean');
11582 // For some reason typeof null is "object", so special case here.
11583 if (isNull(value))
11584 return ctx.stylize('null', 'null');
11585 }
11586
11587
11588 function formatError(value) {
11589 return '[' + Error.prototype.toString.call(value) + ']';
11590 }
11591
11592
11593 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
11594 var output = [];
11595 for (var i = 0, l = value.length; i < l; ++i) {
11596 if (hasOwnProperty(value, String(i))) {
11597 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
11598 String(i), true));
11599 } else {
11600 output.push('');
11601 }
11602 }
11603 keys.forEach(function(key) {
11604 if (!key.match(/^\d+$/)) {
11605 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
11606 key, true));
11607 }
11608 });
11609 return output;
11610 }
11611
11612
11613 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
11614 var name, str, desc;
11615 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
11616 if (desc.get) {
11617 if (desc.set) {
11618 str = ctx.stylize('[Getter/Setter]', 'special');
11619 } else {
11620 str = ctx.stylize('[Getter]', 'special');
11621 }
11622 } else {
11623 if (desc.set) {
11624 str = ctx.stylize('[Setter]', 'special');
11625 }
11626 }
11627 if (!hasOwnProperty(visibleKeys, key)) {
11628 name = '[' + key + ']';
11629 }
11630 if (!str) {
11631 if (ctx.seen.indexOf(desc.value) < 0) {
11632 if (isNull(recurseTimes)) {
11633 str = formatValue(ctx, desc.value, null);
11634 } else {
11635 str = formatValue(ctx, desc.value, recurseTimes - 1);
11636 }
11637 if (str.indexOf('\n') > -1) {
11638 if (array) {
11639 str = str.split('\n').map(function(line) {
11640 return ' ' + line;
11641 }).join('\n').substr(2);
11642 } else {
11643 str = '\n' + str.split('\n').map(function(line) {
11644 return ' ' + line;
11645 }).join('\n');
11646 }
11647 }
11648 } else {
11649 str = ctx.stylize('[Circular]', 'special');
11650 }
11651 }
11652 if (isUndefined(name)) {
11653 if (array && key.match(/^\d+$/)) {
11654 return str;
11655 }
11656 name = JSON.stringify('' + key);
11657 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
11658 name = name.substr(1, name.length - 2);
11659 name = ctx.stylize(name, 'name');
11660 } else {
11661 name = name.replace(/'/g, "\\'")
11662 .replace(/\\"/g, '"')
11663 .replace(/(^"|"$)/g, "'");
11664 name = ctx.stylize(name, 'string');
11665 }
11666 }
11667
11668 return name + ': ' + str;
11669 }
11670
11671
11672 function reduceToSingleString(output, base, braces) {
11673 var numLinesEst = 0;
11674 var length = output.reduce(function(prev, cur) {
11675 numLinesEst++;
11676 if (cur.indexOf('\n') >= 0) numLinesEst++;
11677 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
11678 }, 0);
11679
11680 if (length > 60) {
11681 return braces[0] +
11682 (base === '' ? '' : base + '\n ') +
11683 ' ' +
11684 output.join(',\n ') +
11685 ' ' +
11686 braces[1];
11687 }
11688
11689 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
11690 }
11691
11692
11693 // NOTE: These type checking functions intentionally don't use `instanceof`
11694 // because it is fragile and can be easily faked with `Object.create()`.
11695 function isArray(ar) {
11696 return Array.isArray(ar);
11697 }
11698 exports.isArray = isArray;
11699
11700 function isBoolean(arg) {
11701 return typeof arg === 'boolean';
11702 }
11703 exports.isBoolean = isBoolean;
11704
11705 function isNull(arg) {
11706 return arg === null;
11707 }
11708 exports.isNull = isNull;
11709
11710 function isNullOrUndefined(arg) {
11711 return arg == null;
11712 }
11713 exports.isNullOrUndefined = isNullOrUndefined;
11714
11715 function isNumber(arg) {
11716 return typeof arg === 'number';
11717 }
11718 exports.isNumber = isNumber;
11719
11720 function isString(arg) {
11721 return typeof arg === 'string';
11722 }
11723 exports.isString = isString;
11724
11725 function isSymbol(arg) {
11726 return typeof arg === 'symbol';
11727 }
11728 exports.isSymbol = isSymbol;
11729
11730 function isUndefined(arg) {
11731 return arg === void 0;
11732 }
11733 exports.isUndefined = isUndefined;
11734
11735 function isRegExp(re) {
11736 return isObject(re) && objectToString(re) === '[object RegExp]';
11737 }
11738 exports.isRegExp = isRegExp;
11739
11740 function isObject(arg) {
11741 return typeof arg === 'object' && arg !== null;
11742 }
11743 exports.isObject = isObject;
11744
11745 function isDate(d) {
11746 return isObject(d) && objectToString(d) === '[object Date]';
11747 }
11748 exports.isDate = isDate;
11749
11750 function isError(e) {
11751 return isObject(e) &&
11752 (objectToString(e) === '[object Error]' || e instanceof Error);
11753 }
11754 exports.isError = isError;
11755
11756 function isFunction(arg) {
11757 return typeof arg === 'function';
11758 }
11759 exports.isFunction = isFunction;
11760
11761 function isPrimitive(arg) {
11762 return arg === null ||
11763 typeof arg === 'boolean' ||
11764 typeof arg === 'number' ||
11765 typeof arg === 'string' ||
11766 typeof arg === 'symbol' || // ES6 symbol
11767 typeof arg === 'undefined';
11768 }
11769 exports.isPrimitive = isPrimitive;
11770
11771 exports.isBuffer = require('./support/isBuffer');
11772
11773 function objectToString(o) {
11774 return Object.prototype.toString.call(o);
11775 }
11776
11777
11778 function pad(n) {
11779 return n < 10 ? '0' + n.toString(10) : n.toString(10);
11780 }
11781
11782
11783 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
11784 'Oct', 'Nov', 'Dec'];
11785
11786 // 26 Feb 16:19:34
11787 function timestamp() {
11788 var d = new Date();
11789 var time = [pad(d.getHours()),
11790 pad(d.getMinutes()),
11791 pad(d.getSeconds())].join(':');
11792 return [d.getDate(), months[d.getMonth()], time].join(' ');
11793 }
11794
11795
11796 // log is just a thin wrapper to console.log that prepends a timestamp
11797 exports.log = function() {
11798 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
11799 };
11800
11801
11802 /**
11803 * Inherit the prototype methods from one constructor into another.
11804 *
11805 * The Function.prototype.inherits from lang.js rewritten as a standalone
11806 * function (not on Function.prototype). NOTE: If this file is to be loaded
11807 * during bootstrapping this function needs to be rewritten using some native
11808 * functions as prototype setup using normal JavaScript does not work as
11809 * expected during bootstrapping (see mirror.js in r114903).
11810 *
11811 * @param {function} ctor Constructor function which needs to inherit the
11812 * prototype.
11813 * @param {function} superCtor Constructor function to inherit prototype from.
11814 */
11815 exports.inherits = require('inherits');
11816
11817 exports._extend = function(origin, add) {
11818 // Don't do anything if add isn't an object
11819 if (!add || !isObject(add)) return origin;
11820
11821 var keys = Object.keys(add);
11822 var i = keys.length;
11823 while (i--) {
11824 origin[keys[i]] = add[keys[i]];
11825 }
11826 return origin;
11827 };
11828
11829 function hasOwnProperty(obj, prop) {
11830 return Object.prototype.hasOwnProperty.call(obj, prop);
11831 }
11832
11833 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
11834 },{"./support/isBuffer":28,"_process":14,"inherits":12}],30:[function(require,module,exports){
11835 // Base58 encoding/decoding
11836 // Originally written by Mike Hearn for BitcoinJ
11837 // Copyright (c) 2011 Google Inc
11838 // Ported to JavaScript by Stefan Thomas
11839 // Merged Buffer refactorings from base58-native by Stephen Pair
11840 // Copyright (c) 2013 BitPay Inc
11841
11842 var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
11843 var ALPHABET_MAP = {}
11844 for(var i = 0; i < ALPHABET.length; i++) {
11845 ALPHABET_MAP[ALPHABET.charAt(i)] = i
11846 }
11847 var BASE = 58
11848
11849 function encode(buffer) {
11850 if (buffer.length === 0) return ''
11851
11852 var i, j, digits = [0]
11853 for (i = 0; i < buffer.length; i++) {
11854 for (j = 0; j < digits.length; j++) digits[j] <<= 8
11855
11856 digits[0] += buffer[i]
11857
11858 var carry = 0
11859 for (j = 0; j < digits.length; ++j) {
11860 digits[j] += carry
11861
11862 carry = (digits[j] / BASE) | 0
11863 digits[j] %= BASE
11864 }
11865
11866 while (carry) {
11867 digits.push(carry % BASE)
11868
11869 carry = (carry / BASE) | 0
11870 }
11871 }
11872
11873 // deal with leading zeros
11874 for (i = 0; buffer[i] === 0 && i < buffer.length - 1; i++) digits.push(0)
11875
11876 // convert digits to a string
11877 var stringOutput = ""
11878 for (var i = digits.length - 1; i >= 0; i--) {
11879 stringOutput = stringOutput + ALPHABET[digits[i]]
11880 }
11881 return stringOutput
11882 }
11883
11884 function decode(string) {
11885 if (string.length === 0) return []
11886
11887 var i, j, bytes = [0]
11888 for (i = 0; i < string.length; i++) {
11889 var c = string[i]
11890 if (!(c in ALPHABET_MAP)) throw new Error('Non-base58 character')
11891
11892 for (j = 0; j < bytes.length; j++) bytes[j] *= BASE
11893 bytes[0] += ALPHABET_MAP[c]
11894
11895 var carry = 0
11896 for (j = 0; j < bytes.length; ++j) {
11897 bytes[j] += carry
11898
11899 carry = bytes[j] >> 8
11900 bytes[j] &= 0xff
11901 }
11902
11903 while (carry) {
11904 bytes.push(carry & 0xff)
11905
11906 carry >>= 8
11907 }
11908 }
11909
11910 // deal with leading zeros
11911 for (i = 0; string[i] === '1' && i < string.length - 1; i++) bytes.push(0)
11912
11913 return bytes.reverse()
11914 }
11915
11916 module.exports = {
11917 encode: encode,
11918 decode: decode
11919 }
11920
11921 },{}],31:[function(require,module,exports){
11922 (function (Buffer){
11923 'use strict'
11924
11925 var base58 = require('bs58')
11926 var createHash = require('create-hash')
11927
11928 // SHA256(SHA256(buffer))
11929 function sha256x2 (buffer) {
11930 buffer = createHash('sha256').update(buffer).digest()
11931 return createHash('sha256').update(buffer).digest()
11932 }
11933
11934 // Encode a buffer as a base58-check encoded string
11935 function encode (payload) {
11936 var checksum = sha256x2(payload).slice(0, 4)
11937
11938 return base58.encode(Buffer.concat([
11939 payload,
11940 checksum
11941 ]))
11942 }
11943
11944 // Decode a base58-check encoded string to a buffer
11945 function decode (string) {
11946 var buffer = new Buffer(base58.decode(string))
11947
11948 var payload = buffer.slice(0, -4)
11949 var checksum = buffer.slice(-4)
11950 var newChecksum = sha256x2(payload).slice(0, 4)
11951
11952 for (var i = 0; i < newChecksum.length; ++i) {
11953 if (newChecksum[i] === checksum[i]) continue
11954
11955 throw new Error('Invalid checksum')
11956 }
11957
11958 return payload
11959 }
11960
11961 module.exports = {
11962 encode: encode,
11963 decode: decode
11964 }
11965
11966 }).call(this,require("buffer").Buffer)
11967 },{"bs58":30,"buffer":7,"create-hash":32}],32:[function(require,module,exports){
11968 (function (Buffer){
11969 'use strict';
11970 var inherits = require('inherits')
11971 var md5 = require('./md5')
11972 var rmd160 = require('ripemd160')
11973 var sha = require('sha.js')
11974
11975 var Transform = require('stream').Transform
11976
11977 function HashNoConstructor(hash) {
11978 Transform.call(this)
11979
11980 this._hash = hash
11981 this.buffers = []
11982 }
11983
11984 inherits(HashNoConstructor, Transform)
11985
11986 HashNoConstructor.prototype._transform = function (data, _, next) {
11987 this.buffers.push(data)
11988
11989 next()
11990 }
11991
11992 HashNoConstructor.prototype._flush = function (next) {
11993 this.push(this.digest())
11994 next()
11995 }
11996
11997 HashNoConstructor.prototype.update = function (data, enc) {
11998 if (typeof data === 'string') {
11999 data = new Buffer(data, enc)
12000 }
12001
12002 this.buffers.push(data)
12003 return this
12004 }
12005
12006 HashNoConstructor.prototype.digest = function (enc) {
12007 var buf = Buffer.concat(this.buffers)
12008 var r = this._hash(buf)
12009 this.buffers = null
12010
12011 return enc ? r.toString(enc) : r
12012 }
12013
12014 function Hash(hash) {
12015 Transform.call(this)
12016
12017 this._hash = hash
12018 }
12019
12020 inherits(Hash, Transform)
12021
12022 Hash.prototype._transform = function (data, enc, next) {
12023 if (enc) data = new Buffer(data, enc)
12024
12025 this._hash.update(data)
12026
12027 next()
12028 }
12029
12030 Hash.prototype._flush = function (next) {
12031 this.push(this._hash.digest())
12032 this._hash = null
12033
12034 next()
12035 }
12036
12037 Hash.prototype.update = function (data, enc) {
12038 if (typeof data === 'string') {
12039 data = new Buffer(data, enc)
12040 }
12041
12042 this._hash.update(data)
12043 return this
12044 }
12045
12046 Hash.prototype.digest = function (enc) {
12047 var outData = this._hash.digest()
12048
12049 return enc ? outData.toString(enc) : outData
12050 }
12051
12052 module.exports = function createHash (alg) {
12053 if ('md5' === alg) return new HashNoConstructor(md5)
12054 if ('rmd160' === alg) return new HashNoConstructor(rmd160)
12055
12056 return new Hash(sha(alg))
12057 }
12058
12059 }).call(this,require("buffer").Buffer)
12060 },{"./md5":34,"buffer":7,"inherits":35,"ripemd160":36,"sha.js":38,"stream":26}],33:[function(require,module,exports){
12061 (function (Buffer){
12062 'use strict';
12063 var intSize = 4;
12064 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
12065 var chrsz = 8;
12066
12067 function toArray(buf, bigEndian) {
12068 if ((buf.length % intSize) !== 0) {
12069 var len = buf.length + (intSize - (buf.length % intSize));
12070 buf = Buffer.concat([buf, zeroBuffer], len);
12071 }
12072
12073 var arr = [];
12074 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
12075 for (var i = 0; i < buf.length; i += intSize) {
12076 arr.push(fn.call(buf, i));
12077 }
12078 return arr;
12079 }
12080
12081 function toBuffer(arr, size, bigEndian) {
12082 var buf = new Buffer(size);
12083 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
12084 for (var i = 0; i < arr.length; i++) {
12085 fn.call(buf, arr[i], i * 4, true);
12086 }
12087 return buf;
12088 }
12089
12090 function hash(buf, fn, hashSize, bigEndian) {
12091 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
12092 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
12093 return toBuffer(arr, hashSize, bigEndian);
12094 }
12095 exports.hash = hash;
12096 }).call(this,require("buffer").Buffer)
12097 },{"buffer":7}],34:[function(require,module,exports){
12098 'use strict';
12099 /*
12100 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
12101 * Digest Algorithm, as defined in RFC 1321.
12102 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
12103 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
12104 * Distributed under the BSD License
12105 * See http://pajhome.org.uk/crypt/md5 for more info.
12106 */
12107
12108 var helpers = require('./helpers');
12109
12110 /*
12111 * Calculate the MD5 of an array of little-endian words, and a bit length
12112 */
12113 function core_md5(x, len)
12114 {
12115 /* append padding */
12116 x[len >> 5] |= 0x80 << ((len) % 32);
12117 x[(((len + 64) >>> 9) << 4) + 14] = len;
12118
12119 var a = 1732584193;
12120 var b = -271733879;
12121 var c = -1732584194;
12122 var d = 271733878;
12123
12124 for(var i = 0; i < x.length; i += 16)
12125 {
12126 var olda = a;
12127 var oldb = b;
12128 var oldc = c;
12129 var oldd = d;
12130
12131 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
12132 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
12133 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
12134 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
12135 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
12136 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
12137 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
12138 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
12139 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
12140 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
12141 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
12142 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
12143 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
12144 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
12145 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
12146 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
12147
12148 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
12149 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
12150 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
12151 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
12152 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
12153 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
12154 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
12155 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
12156 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
12157 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
12158 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
12159 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
12160 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
12161 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
12162 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
12163 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
12164
12165 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
12166 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
12167 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
12168 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
12169 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
12170 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
12171 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
12172 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
12173 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
12174 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
12175 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
12176 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
12177 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
12178 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
12179 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
12180 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
12181
12182 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
12183 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
12184 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
12185 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
12186 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
12187 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
12188 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
12189 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
12190 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
12191 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
12192 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
12193 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
12194 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
12195 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
12196 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
12197 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
12198
12199 a = safe_add(a, olda);
12200 b = safe_add(b, oldb);
12201 c = safe_add(c, oldc);
12202 d = safe_add(d, oldd);
12203 }
12204 return Array(a, b, c, d);
12205
12206 }
12207
12208 /*
12209 * These functions implement the four basic operations the algorithm uses.
12210 */
12211 function md5_cmn(q, a, b, x, s, t)
12212 {
12213 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
12214 }
12215 function md5_ff(a, b, c, d, x, s, t)
12216 {
12217 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
12218 }
12219 function md5_gg(a, b, c, d, x, s, t)
12220 {
12221 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
12222 }
12223 function md5_hh(a, b, c, d, x, s, t)
12224 {
12225 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
12226 }
12227 function md5_ii(a, b, c, d, x, s, t)
12228 {
12229 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
12230 }
12231
12232 /*
12233 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
12234 * to work around bugs in some JS interpreters.
12235 */
12236 function safe_add(x, y)
12237 {
12238 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
12239 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
12240 return (msw << 16) | (lsw & 0xFFFF);
12241 }
12242
12243 /*
12244 * Bitwise rotate a 32-bit number to the left.
12245 */
12246 function bit_rol(num, cnt)
12247 {
12248 return (num << cnt) | (num >>> (32 - cnt));
12249 }
12250
12251 module.exports = function md5(buf) {
12252 return helpers.hash(buf, core_md5, 16);
12253 };
12254 },{"./helpers":33}],35:[function(require,module,exports){
12255 arguments[4][12][0].apply(exports,arguments)
12256 },{"dup":12}],36:[function(require,module,exports){
12257 (function (Buffer){
12258 /*
12259 CryptoJS v3.1.2
12260 code.google.com/p/crypto-js
12261 (c) 2009-2013 by Jeff Mott. All rights reserved.
12262 code.google.com/p/crypto-js/wiki/License
12263 */
12264 /** @preserve
12265 (c) 2012 by Cédric Mesnil. All rights reserved.
12266
12267 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
12268
12269 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
12270 - 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.
12271
12272 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.
12273 */
12274
12275 // constants table
12276 var zl = [
12277 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
12278 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
12279 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
12280 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
12281 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
12282 ]
12283
12284 var zr = [
12285 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
12286 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
12287 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
12288 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
12289 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
12290 ]
12291
12292 var sl = [
12293 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
12294 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
12295 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
12296 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
12297 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
12298 ]
12299
12300 var sr = [
12301 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
12302 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
12303 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
12304 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
12305 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
12306 ]
12307
12308 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
12309 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
12310
12311 function bytesToWords (bytes) {
12312 var words = []
12313 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
12314 words[b >>> 5] |= bytes[i] << (24 - b % 32)
12315 }
12316 return words
12317 }
12318
12319 function wordsToBytes (words) {
12320 var bytes = []
12321 for (var b = 0; b < words.length * 32; b += 8) {
12322 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
12323 }
12324 return bytes
12325 }
12326
12327 function processBlock (H, M, offset) {
12328 // swap endian
12329 for (var i = 0; i < 16; i++) {
12330 var offset_i = offset + i
12331 var M_offset_i = M[offset_i]
12332
12333 // Swap
12334 M[offset_i] = (
12335 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
12336 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
12337 )
12338 }
12339
12340 // Working variables
12341 var al, bl, cl, dl, el
12342 var ar, br, cr, dr, er
12343
12344 ar = al = H[0]
12345 br = bl = H[1]
12346 cr = cl = H[2]
12347 dr = dl = H[3]
12348 er = el = H[4]
12349
12350 // computation
12351 var t
12352 for (i = 0; i < 80; i += 1) {
12353 t = (al + M[offset + zl[i]]) | 0
12354 if (i < 16) {
12355 t += f1(bl, cl, dl) + hl[0]
12356 } else if (i < 32) {
12357 t += f2(bl, cl, dl) + hl[1]
12358 } else if (i < 48) {
12359 t += f3(bl, cl, dl) + hl[2]
12360 } else if (i < 64) {
12361 t += f4(bl, cl, dl) + hl[3]
12362 } else {// if (i<80) {
12363 t += f5(bl, cl, dl) + hl[4]
12364 }
12365 t = t | 0
12366 t = rotl(t, sl[i])
12367 t = (t + el) | 0
12368 al = el
12369 el = dl
12370 dl = rotl(cl, 10)
12371 cl = bl
12372 bl = t
12373
12374 t = (ar + M[offset + zr[i]]) | 0
12375 if (i < 16) {
12376 t += f5(br, cr, dr) + hr[0]
12377 } else if (i < 32) {
12378 t += f4(br, cr, dr) + hr[1]
12379 } else if (i < 48) {
12380 t += f3(br, cr, dr) + hr[2]
12381 } else if (i < 64) {
12382 t += f2(br, cr, dr) + hr[3]
12383 } else {// if (i<80) {
12384 t += f1(br, cr, dr) + hr[4]
12385 }
12386
12387 t = t | 0
12388 t = rotl(t, sr[i])
12389 t = (t + er) | 0
12390 ar = er
12391 er = dr
12392 dr = rotl(cr, 10)
12393 cr = br
12394 br = t
12395 }
12396
12397 // intermediate hash value
12398 t = (H[1] + cl + dr) | 0
12399 H[1] = (H[2] + dl + er) | 0
12400 H[2] = (H[3] + el + ar) | 0
12401 H[3] = (H[4] + al + br) | 0
12402 H[4] = (H[0] + bl + cr) | 0
12403 H[0] = t
12404 }
12405
12406 function f1 (x, y, z) {
12407 return ((x) ^ (y) ^ (z))
12408 }
12409
12410 function f2 (x, y, z) {
12411 return (((x) & (y)) | ((~x) & (z)))
12412 }
12413
12414 function f3 (x, y, z) {
12415 return (((x) | (~(y))) ^ (z))
12416 }
12417
12418 function f4 (x, y, z) {
12419 return (((x) & (z)) | ((y) & (~(z))))
12420 }
12421
12422 function f5 (x, y, z) {
12423 return ((x) ^ ((y) | (~(z))))
12424 }
12425
12426 function rotl (x, n) {
12427 return (x << n) | (x >>> (32 - n))
12428 }
12429
12430 function ripemd160 (message) {
12431 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
12432
12433 if (typeof message === 'string') {
12434 message = new Buffer(message, 'utf8')
12435 }
12436
12437 var m = bytesToWords(message)
12438
12439 var nBitsLeft = message.length * 8
12440 var nBitsTotal = message.length * 8
12441
12442 // Add padding
12443 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
12444 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
12445 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
12446 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
12447 )
12448
12449 for (var i = 0; i < m.length; i += 16) {
12450 processBlock(H, m, i)
12451 }
12452
12453 // swap endian
12454 for (i = 0; i < 5; i++) {
12455 // shortcut
12456 var H_i = H[i]
12457
12458 // Swap
12459 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
12460 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
12461 }
12462
12463 var digestbytes = wordsToBytes(H)
12464 return new Buffer(digestbytes)
12465 }
12466
12467 module.exports = ripemd160
12468
12469 }).call(this,require("buffer").Buffer)
12470 },{"buffer":7}],37:[function(require,module,exports){
12471 (function (Buffer){
12472 // prototype class for hash functions
12473 function Hash (blockSize, finalSize) {
12474 this._block = new Buffer(blockSize)
12475 this._finalSize = finalSize
12476 this._blockSize = blockSize
12477 this._len = 0
12478 this._s = 0
12479 }
12480
12481 Hash.prototype.update = function (data, enc) {
12482 if (typeof data === 'string') {
12483 enc = enc || 'utf8'
12484 data = new Buffer(data, enc)
12485 }
12486
12487 var l = this._len += data.length
12488 var s = this._s || 0
12489 var f = 0
12490 var buffer = this._block
12491
12492 while (s < l) {
12493 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
12494 var ch = (t - f)
12495
12496 for (var i = 0; i < ch; i++) {
12497 buffer[(s % this._blockSize) + i] = data[i + f]
12498 }
12499
12500 s += ch
12501 f += ch
12502
12503 if ((s % this._blockSize) === 0) {
12504 this._update(buffer)
12505 }
12506 }
12507 this._s = s
12508
12509 return this
12510 }
12511
12512 Hash.prototype.digest = function (enc) {
12513 // Suppose the length of the message M, in bits, is l
12514 var l = this._len * 8
12515
12516 // Append the bit 1 to the end of the message
12517 this._block[this._len % this._blockSize] = 0x80
12518
12519 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
12520 this._block.fill(0, this._len % this._blockSize + 1)
12521
12522 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
12523 this._update(this._block)
12524 this._block.fill(0)
12525 }
12526
12527 // to this append the block which is equal to the number l written in binary
12528 // TODO: handle case where l is > Math.pow(2, 29)
12529 this._block.writeInt32BE(l, this._blockSize - 4)
12530
12531 var hash = this._update(this._block) || this._hash()
12532
12533 return enc ? hash.toString(enc) : hash
12534 }
12535
12536 Hash.prototype._update = function () {
12537 throw new Error('_update must be implemented by subclass')
12538 }
12539
12540 module.exports = Hash
12541
12542 }).call(this,require("buffer").Buffer)
12543 },{"buffer":7}],38:[function(require,module,exports){
12544 var exports = module.exports = function SHA (algorithm) {
12545 algorithm = algorithm.toLowerCase()
12546
12547 var Algorithm = exports[algorithm]
12548 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
12549
12550 return new Algorithm()
12551 }
12552
12553 exports.sha = require('./sha')
12554 exports.sha1 = require('./sha1')
12555 exports.sha224 = require('./sha224')
12556 exports.sha256 = require('./sha256')
12557 exports.sha384 = require('./sha384')
12558 exports.sha512 = require('./sha512')
12559
12560 },{"./sha":39,"./sha1":40,"./sha224":41,"./sha256":42,"./sha384":43,"./sha512":44}],39:[function(require,module,exports){
12561 (function (Buffer){
12562 /*
12563 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
12564 * in FIPS PUB 180-1
12565 * This source code is derived from sha1.js of the same repository.
12566 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
12567 * operation was added.
12568 */
12569
12570 var inherits = require('inherits')
12571 var Hash = require('./hash')
12572
12573 var W = new Array(80)
12574
12575 function Sha () {
12576 this.init()
12577 this._w = W
12578
12579 Hash.call(this, 64, 56)
12580 }
12581
12582 inherits(Sha, Hash)
12583
12584 Sha.prototype.init = function () {
12585 this._a = 0x67452301 | 0
12586 this._b = 0xefcdab89 | 0
12587 this._c = 0x98badcfe | 0
12588 this._d = 0x10325476 | 0
12589 this._e = 0xc3d2e1f0 | 0
12590
12591 return this
12592 }
12593
12594 /*
12595 * Bitwise rotate a 32-bit number to the left.
12596 */
12597 function rol (num, cnt) {
12598 return (num << cnt) | (num >>> (32 - cnt))
12599 }
12600
12601 Sha.prototype._update = function (M) {
12602 var W = this._w
12603
12604 var a = this._a
12605 var b = this._b
12606 var c = this._c
12607 var d = this._d
12608 var e = this._e
12609
12610 var j = 0, k
12611
12612 /*
12613 * SHA-1 has a bitwise rotate left operation. But, SHA is not
12614 * function calcW() { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) }
12615 */
12616 function calcW () { return W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16] }
12617 function loop (w, f) {
12618 W[j] = w
12619
12620 var t = rol(a, 5) + f + e + w + k
12621
12622 e = d
12623 d = c
12624 c = rol(b, 30)
12625 b = a
12626 a = t
12627 j++
12628 }
12629
12630 k = 1518500249
12631 while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d))
12632 while (j < 20) loop(calcW(), (b & c) | ((~b) & d))
12633 k = 1859775393
12634 while (j < 40) loop(calcW(), b ^ c ^ d)
12635 k = -1894007588
12636 while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d))
12637 k = -899497514
12638 while (j < 80) loop(calcW(), b ^ c ^ d)
12639
12640 this._a = (a + this._a) | 0
12641 this._b = (b + this._b) | 0
12642 this._c = (c + this._c) | 0
12643 this._d = (d + this._d) | 0
12644 this._e = (e + this._e) | 0
12645 }
12646
12647 Sha.prototype._hash = function () {
12648 var H = new Buffer(20)
12649
12650 H.writeInt32BE(this._a | 0, 0)
12651 H.writeInt32BE(this._b | 0, 4)
12652 H.writeInt32BE(this._c | 0, 8)
12653 H.writeInt32BE(this._d | 0, 12)
12654 H.writeInt32BE(this._e | 0, 16)
12655
12656 return H
12657 }
12658
12659 module.exports = Sha
12660
12661
12662 }).call(this,require("buffer").Buffer)
12663 },{"./hash":37,"buffer":7,"inherits":35}],40:[function(require,module,exports){
12664 (function (Buffer){
12665 /*
12666 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
12667 * in FIPS PUB 180-1
12668 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
12669 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
12670 * Distributed under the BSD License
12671 * See http://pajhome.org.uk/crypt/md5 for details.
12672 */
12673
12674 var inherits = require('inherits')
12675 var Hash = require('./hash')
12676
12677 var W = new Array(80)
12678
12679 function Sha1 () {
12680 this.init()
12681 this._w = W
12682
12683 Hash.call(this, 64, 56)
12684 }
12685
12686 inherits(Sha1, Hash)
12687
12688 Sha1.prototype.init = function () {
12689 this._a = 0x67452301 | 0
12690 this._b = 0xefcdab89 | 0
12691 this._c = 0x98badcfe | 0
12692 this._d = 0x10325476 | 0
12693 this._e = 0xc3d2e1f0 | 0
12694
12695 return this
12696 }
12697
12698 /*
12699 * Bitwise rotate a 32-bit number to the left.
12700 */
12701 function rol (num, cnt) {
12702 return (num << cnt) | (num >>> (32 - cnt))
12703 }
12704
12705 Sha1.prototype._update = function (M) {
12706 var W = this._w
12707
12708 var a = this._a
12709 var b = this._b
12710 var c = this._c
12711 var d = this._d
12712 var e = this._e
12713
12714 var j = 0, k
12715
12716 function calcW () { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) }
12717 function loop (w, f) {
12718 W[j] = w
12719
12720 var t = rol(a, 5) + f + e + w + k
12721
12722 e = d
12723 d = c
12724 c = rol(b, 30)
12725 b = a
12726 a = t
12727 j++
12728 }
12729
12730 k = 1518500249
12731 while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d))
12732 while (j < 20) loop(calcW(), (b & c) | ((~b) & d))
12733 k = 1859775393
12734 while (j < 40) loop(calcW(), b ^ c ^ d)
12735 k = -1894007588
12736 while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d))
12737 k = -899497514
12738 while (j < 80) loop(calcW(), b ^ c ^ d)
12739
12740 this._a = (a + this._a) | 0
12741 this._b = (b + this._b) | 0
12742 this._c = (c + this._c) | 0
12743 this._d = (d + this._d) | 0
12744 this._e = (e + this._e) | 0
12745 }
12746
12747 Sha1.prototype._hash = function () {
12748 var H = new Buffer(20)
12749
12750 H.writeInt32BE(this._a | 0, 0)
12751 H.writeInt32BE(this._b | 0, 4)
12752 H.writeInt32BE(this._c | 0, 8)
12753 H.writeInt32BE(this._d | 0, 12)
12754 H.writeInt32BE(this._e | 0, 16)
12755
12756 return H
12757 }
12758
12759 module.exports = Sha1
12760
12761 }).call(this,require("buffer").Buffer)
12762 },{"./hash":37,"buffer":7,"inherits":35}],41:[function(require,module,exports){
12763 (function (Buffer){
12764 /**
12765 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
12766 * in FIPS 180-2
12767 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
12768 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
12769 *
12770 */
12771
12772 var inherits = require('inherits')
12773 var Sha256 = require('./sha256')
12774 var Hash = require('./hash')
12775
12776 var W = new Array(64)
12777
12778 function Sha224 () {
12779 this.init()
12780
12781 this._w = W // new Array(64)
12782
12783 Hash.call(this, 64, 56)
12784 }
12785
12786 inherits(Sha224, Sha256)
12787
12788 Sha224.prototype.init = function () {
12789 this._a = 0xc1059ed8 | 0
12790 this._b = 0x367cd507 | 0
12791 this._c = 0x3070dd17 | 0
12792 this._d = 0xf70e5939 | 0
12793 this._e = 0xffc00b31 | 0
12794 this._f = 0x68581511 | 0
12795 this._g = 0x64f98fa7 | 0
12796 this._h = 0xbefa4fa4 | 0
12797
12798 return this
12799 }
12800
12801 Sha224.prototype._hash = function () {
12802 var H = new Buffer(28)
12803
12804 H.writeInt32BE(this._a, 0)
12805 H.writeInt32BE(this._b, 4)
12806 H.writeInt32BE(this._c, 8)
12807 H.writeInt32BE(this._d, 12)
12808 H.writeInt32BE(this._e, 16)
12809 H.writeInt32BE(this._f, 20)
12810 H.writeInt32BE(this._g, 24)
12811
12812 return H
12813 }
12814
12815 module.exports = Sha224
12816
12817 }).call(this,require("buffer").Buffer)
12818 },{"./hash":37,"./sha256":42,"buffer":7,"inherits":35}],42:[function(require,module,exports){
12819 (function (Buffer){
12820 /**
12821 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
12822 * in FIPS 180-2
12823 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
12824 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
12825 *
12826 */
12827
12828 var inherits = require('inherits')
12829 var Hash = require('./hash')
12830
12831 var K = [
12832 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
12833 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
12834 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
12835 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
12836 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
12837 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
12838 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
12839 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
12840 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
12841 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
12842 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
12843 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
12844 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
12845 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
12846 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
12847 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
12848 ]
12849
12850 var W = new Array(64)
12851
12852 function Sha256 () {
12853 this.init()
12854
12855 this._w = W // new Array(64)
12856
12857 Hash.call(this, 64, 56)
12858 }
12859
12860 inherits(Sha256, Hash)
12861
12862 Sha256.prototype.init = function () {
12863 this._a = 0x6a09e667 | 0
12864 this._b = 0xbb67ae85 | 0
12865 this._c = 0x3c6ef372 | 0
12866 this._d = 0xa54ff53a | 0
12867 this._e = 0x510e527f | 0
12868 this._f = 0x9b05688c | 0
12869 this._g = 0x1f83d9ab | 0
12870 this._h = 0x5be0cd19 | 0
12871
12872 return this
12873 }
12874
12875 function S (X, n) {
12876 return (X >>> n) | (X << (32 - n))
12877 }
12878
12879 function R (X, n) {
12880 return (X >>> n)
12881 }
12882
12883 function Ch (x, y, z) {
12884 return ((x & y) ^ ((~x) & z))
12885 }
12886
12887 function Maj (x, y, z) {
12888 return ((x & y) ^ (x & z) ^ (y & z))
12889 }
12890
12891 function Sigma0256 (x) {
12892 return (S(x, 2) ^ S(x, 13) ^ S(x, 22))
12893 }
12894
12895 function Sigma1256 (x) {
12896 return (S(x, 6) ^ S(x, 11) ^ S(x, 25))
12897 }
12898
12899 function Gamma0256 (x) {
12900 return (S(x, 7) ^ S(x, 18) ^ R(x, 3))
12901 }
12902
12903 function Gamma1256 (x) {
12904 return (S(x, 17) ^ S(x, 19) ^ R(x, 10))
12905 }
12906
12907 Sha256.prototype._update = function (M) {
12908 var W = this._w
12909
12910 var a = this._a | 0
12911 var b = this._b | 0
12912 var c = this._c | 0
12913 var d = this._d | 0
12914 var e = this._e | 0
12915 var f = this._f | 0
12916 var g = this._g | 0
12917 var h = this._h | 0
12918
12919 var j = 0
12920
12921 function calcW () { return Gamma1256(W[j - 2]) + W[j - 7] + Gamma0256(W[j - 15]) + W[j - 16] }
12922 function loop (w) {
12923 W[j] = w
12924
12925 var T1 = h + Sigma1256(e) + Ch(e, f, g) + K[j] + w
12926 var T2 = Sigma0256(a) + Maj(a, b, c)
12927
12928 h = g
12929 g = f
12930 f = e
12931 e = d + T1
12932 d = c
12933 c = b
12934 b = a
12935 a = T1 + T2
12936
12937 j++
12938 }
12939
12940 while (j < 16) loop(M.readInt32BE(j * 4))
12941 while (j < 64) loop(calcW())
12942
12943 this._a = (a + this._a) | 0
12944 this._b = (b + this._b) | 0
12945 this._c = (c + this._c) | 0
12946 this._d = (d + this._d) | 0
12947 this._e = (e + this._e) | 0
12948 this._f = (f + this._f) | 0
12949 this._g = (g + this._g) | 0
12950 this._h = (h + this._h) | 0
12951 }
12952
12953 Sha256.prototype._hash = function () {
12954 var H = new Buffer(32)
12955
12956 H.writeInt32BE(this._a, 0)
12957 H.writeInt32BE(this._b, 4)
12958 H.writeInt32BE(this._c, 8)
12959 H.writeInt32BE(this._d, 12)
12960 H.writeInt32BE(this._e, 16)
12961 H.writeInt32BE(this._f, 20)
12962 H.writeInt32BE(this._g, 24)
12963 H.writeInt32BE(this._h, 28)
12964
12965 return H
12966 }
12967
12968 module.exports = Sha256
12969
12970 }).call(this,require("buffer").Buffer)
12971 },{"./hash":37,"buffer":7,"inherits":35}],43:[function(require,module,exports){
12972 (function (Buffer){
12973 var inherits = require('inherits')
12974 var SHA512 = require('./sha512')
12975 var Hash = require('./hash')
12976
12977 var W = new Array(160)
12978
12979 function Sha384 () {
12980 this.init()
12981 this._w = W
12982
12983 Hash.call(this, 128, 112)
12984 }
12985
12986 inherits(Sha384, SHA512)
12987
12988 Sha384.prototype.init = function () {
12989 this._a = 0xcbbb9d5d | 0
12990 this._b = 0x629a292a | 0
12991 this._c = 0x9159015a | 0
12992 this._d = 0x152fecd8 | 0
12993 this._e = 0x67332667 | 0
12994 this._f = 0x8eb44a87 | 0
12995 this._g = 0xdb0c2e0d | 0
12996 this._h = 0x47b5481d | 0
12997
12998 this._al = 0xc1059ed8 | 0
12999 this._bl = 0x367cd507 | 0
13000 this._cl = 0x3070dd17 | 0
13001 this._dl = 0xf70e5939 | 0
13002 this._el = 0xffc00b31 | 0
13003 this._fl = 0x68581511 | 0
13004 this._gl = 0x64f98fa7 | 0
13005 this._hl = 0xbefa4fa4 | 0
13006
13007 return this
13008 }
13009
13010 Sha384.prototype._hash = function () {
13011 var H = new Buffer(48)
13012
13013 function writeInt64BE (h, l, offset) {
13014 H.writeInt32BE(h, offset)
13015 H.writeInt32BE(l, offset + 4)
13016 }
13017
13018 writeInt64BE(this._a, this._al, 0)
13019 writeInt64BE(this._b, this._bl, 8)
13020 writeInt64BE(this._c, this._cl, 16)
13021 writeInt64BE(this._d, this._dl, 24)
13022 writeInt64BE(this._e, this._el, 32)
13023 writeInt64BE(this._f, this._fl, 40)
13024
13025 return H
13026 }
13027
13028 module.exports = Sha384
13029
13030 }).call(this,require("buffer").Buffer)
13031 },{"./hash":37,"./sha512":44,"buffer":7,"inherits":35}],44:[function(require,module,exports){
13032 (function (Buffer){
13033 var inherits = require('inherits')
13034 var Hash = require('./hash')
13035
13036 var K = [
13037 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
13038 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
13039 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
13040 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
13041 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
13042 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
13043 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
13044 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
13045 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
13046 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
13047 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
13048 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
13049 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
13050 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
13051 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
13052 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
13053 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
13054 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
13055 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
13056 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
13057 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
13058 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
13059 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
13060 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
13061 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
13062 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
13063 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
13064 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
13065 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
13066 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
13067 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
13068 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
13069 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
13070 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
13071 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
13072 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
13073 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
13074 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
13075 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
13076 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
13077 ]
13078
13079 var W = new Array(160)
13080
13081 function Sha512 () {
13082 this.init()
13083 this._w = W
13084
13085 Hash.call(this, 128, 112)
13086 }
13087
13088 inherits(Sha512, Hash)
13089
13090 Sha512.prototype.init = function () {
13091 this._a = 0x6a09e667 | 0
13092 this._b = 0xbb67ae85 | 0
13093 this._c = 0x3c6ef372 | 0
13094 this._d = 0xa54ff53a | 0
13095 this._e = 0x510e527f | 0
13096 this._f = 0x9b05688c | 0
13097 this._g = 0x1f83d9ab | 0
13098 this._h = 0x5be0cd19 | 0
13099
13100 this._al = 0xf3bcc908 | 0
13101 this._bl = 0x84caa73b | 0
13102 this._cl = 0xfe94f82b | 0
13103 this._dl = 0x5f1d36f1 | 0
13104 this._el = 0xade682d1 | 0
13105 this._fl = 0x2b3e6c1f | 0
13106 this._gl = 0xfb41bd6b | 0
13107 this._hl = 0x137e2179 | 0
13108
13109 return this
13110 }
13111
13112 function S (X, Xl, n) {
13113 return (X >>> n) | (Xl << (32 - n))
13114 }
13115
13116 function Ch (x, y, z) {
13117 return ((x & y) ^ ((~x) & z))
13118 }
13119
13120 function Maj (x, y, z) {
13121 return ((x & y) ^ (x & z) ^ (y & z))
13122 }
13123
13124 Sha512.prototype._update = function (M) {
13125 var W = this._w
13126
13127 var a = this._a | 0
13128 var b = this._b | 0
13129 var c = this._c | 0
13130 var d = this._d | 0
13131 var e = this._e | 0
13132 var f = this._f | 0
13133 var g = this._g | 0
13134 var h = this._h | 0
13135
13136 var al = this._al | 0
13137 var bl = this._bl | 0
13138 var cl = this._cl | 0
13139 var dl = this._dl | 0
13140 var el = this._el | 0
13141 var fl = this._fl | 0
13142 var gl = this._gl | 0
13143 var hl = this._hl | 0
13144
13145 var i = 0, j = 0
13146 var Wi, Wil
13147 function calcW () {
13148 var x = W[j - 15 * 2]
13149 var xl = W[j - 15 * 2 + 1]
13150 var gamma0 = S(x, xl, 1) ^ S(x, xl, 8) ^ (x >>> 7)
13151 var gamma0l = S(xl, x, 1) ^ S(xl, x, 8) ^ S(xl, x, 7)
13152
13153 x = W[j - 2 * 2]
13154 xl = W[j - 2 * 2 + 1]
13155 var gamma1 = S(x, xl, 19) ^ S(xl, x, 29) ^ (x >>> 6)
13156 var gamma1l = S(xl, x, 19) ^ S(x, xl, 29) ^ S(xl, x, 6)
13157
13158 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
13159 var Wi7 = W[j - 7 * 2]
13160 var Wi7l = W[j - 7 * 2 + 1]
13161
13162 var Wi16 = W[j - 16 * 2]
13163 var Wi16l = W[j - 16 * 2 + 1]
13164
13165 Wil = gamma0l + Wi7l
13166 Wi = gamma0 + Wi7 + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0)
13167 Wil = Wil + gamma1l
13168 Wi = Wi + gamma1 + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0)
13169 Wil = Wil + Wi16l
13170 Wi = Wi + Wi16 + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0)
13171 }
13172
13173 function loop () {
13174 W[j] = Wi
13175 W[j + 1] = Wil
13176
13177 var maj = Maj(a, b, c)
13178 var majl = Maj(al, bl, cl)
13179
13180 var sigma0h = S(a, al, 28) ^ S(al, a, 2) ^ S(al, a, 7)
13181 var sigma0l = S(al, a, 28) ^ S(a, al, 2) ^ S(a, al, 7)
13182 var sigma1h = S(e, el, 14) ^ S(e, el, 18) ^ S(el, e, 9)
13183 var sigma1l = S(el, e, 14) ^ S(el, e, 18) ^ S(e, el, 9)
13184
13185 // t1 = h + sigma1 + ch + K[i] + W[i]
13186 var Ki = K[j]
13187 var Kil = K[j + 1]
13188
13189 var ch = Ch(e, f, g)
13190 var chl = Ch(el, fl, gl)
13191
13192 var t1l = hl + sigma1l
13193 var t1 = h + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0)
13194 t1l = t1l + chl
13195 t1 = t1 + ch + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0)
13196 t1l = t1l + Kil
13197 t1 = t1 + Ki + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0)
13198 t1l = t1l + Wil
13199 t1 = t1 + Wi + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0)
13200
13201 // t2 = sigma0 + maj
13202 var t2l = sigma0l + majl
13203 var t2 = sigma0h + maj + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0)
13204
13205 h = g
13206 hl = gl
13207 g = f
13208 gl = fl
13209 f = e
13210 fl = el
13211 el = (dl + t1l) | 0
13212 e = (d + t1 + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0
13213 d = c
13214 dl = cl
13215 c = b
13216 cl = bl
13217 b = a
13218 bl = al
13219 al = (t1l + t2l) | 0
13220 a = (t1 + t2 + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0
13221
13222 i++
13223 j += 2
13224 }
13225
13226 while (i < 16) {
13227 Wi = M.readInt32BE(j * 4)
13228 Wil = M.readInt32BE(j * 4 + 4)
13229
13230 loop()
13231 }
13232
13233 while (i < 80) {
13234 calcW()
13235 loop()
13236 }
13237
13238 this._al = (this._al + al) | 0
13239 this._bl = (this._bl + bl) | 0
13240 this._cl = (this._cl + cl) | 0
13241 this._dl = (this._dl + dl) | 0
13242 this._el = (this._el + el) | 0
13243 this._fl = (this._fl + fl) | 0
13244 this._gl = (this._gl + gl) | 0
13245 this._hl = (this._hl + hl) | 0
13246
13247 this._a = (this._a + a + ((this._al >>> 0) < (al >>> 0) ? 1 : 0)) | 0
13248 this._b = (this._b + b + ((this._bl >>> 0) < (bl >>> 0) ? 1 : 0)) | 0
13249 this._c = (this._c + c + ((this._cl >>> 0) < (cl >>> 0) ? 1 : 0)) | 0
13250 this._d = (this._d + d + ((this._dl >>> 0) < (dl >>> 0) ? 1 : 0)) | 0
13251 this._e = (this._e + e + ((this._el >>> 0) < (el >>> 0) ? 1 : 0)) | 0
13252 this._f = (this._f + f + ((this._fl >>> 0) < (fl >>> 0) ? 1 : 0)) | 0
13253 this._g = (this._g + g + ((this._gl >>> 0) < (gl >>> 0) ? 1 : 0)) | 0
13254 this._h = (this._h + h + ((this._hl >>> 0) < (hl >>> 0) ? 1 : 0)) | 0
13255 }
13256
13257 Sha512.prototype._hash = function () {
13258 var H = new Buffer(64)
13259
13260 function writeInt64BE (h, l, offset) {
13261 H.writeInt32BE(h, offset)
13262 H.writeInt32BE(l, offset + 4)
13263 }
13264
13265 writeInt64BE(this._a, this._al, 0)
13266 writeInt64BE(this._b, this._bl, 8)
13267 writeInt64BE(this._c, this._cl, 16)
13268 writeInt64BE(this._d, this._dl, 24)
13269 writeInt64BE(this._e, this._el, 32)
13270 writeInt64BE(this._f, this._fl, 40)
13271 writeInt64BE(this._g, this._gl, 48)
13272 writeInt64BE(this._h, this._hl, 56)
13273
13274 return H
13275 }
13276
13277 module.exports = Sha512
13278
13279 }).call(this,require("buffer").Buffer)
13280 },{"./hash":37,"buffer":7,"inherits":35}],45:[function(require,module,exports){
13281 (function (Buffer){
13282 'use strict';
13283 var createHash = require('create-hash/browser');
13284 var inherits = require('inherits')
13285
13286 var Transform = require('stream').Transform
13287
13288 var ZEROS = new Buffer(128)
13289 ZEROS.fill(0)
13290
13291 function Hmac(alg, key) {
13292 Transform.call(this)
13293
13294 if (typeof key === 'string') {
13295 key = new Buffer(key)
13296 }
13297
13298 var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
13299
13300 this._alg = alg
13301 this._key = key
13302
13303 if (key.length > blocksize) {
13304 key = createHash(alg).update(key).digest()
13305
13306 } else if (key.length < blocksize) {
13307 key = Buffer.concat([key, ZEROS], blocksize)
13308 }
13309
13310 var ipad = this._ipad = new Buffer(blocksize)
13311 var opad = this._opad = new Buffer(blocksize)
13312
13313 for (var i = 0; i < blocksize; i++) {
13314 ipad[i] = key[i] ^ 0x36
13315 opad[i] = key[i] ^ 0x5C
13316 }
13317
13318 this._hash = createHash(alg).update(ipad)
13319 }
13320
13321 inherits(Hmac, Transform)
13322
13323 Hmac.prototype.update = function (data, enc) {
13324 this._hash.update(data, enc)
13325
13326 return this
13327 }
13328
13329 Hmac.prototype._transform = function (data, _, next) {
13330 this._hash.update(data)
13331
13332 next()
13333 }
13334
13335 Hmac.prototype._flush = function (next) {
13336 this.push(this.digest())
13337
13338 next()
13339 }
13340
13341 Hmac.prototype.digest = function (enc) {
13342 var h = this._hash.digest()
13343
13344 return createHash(this._alg).update(this._opad).update(h).digest(enc)
13345 }
13346
13347 module.exports = function createHmac(alg, key) {
13348 return new Hmac(alg, key)
13349 }
13350
13351 }).call(this,require("buffer").Buffer)
13352 },{"buffer":7,"create-hash/browser":32,"inherits":46,"stream":26}],46:[function(require,module,exports){
13353 arguments[4][12][0].apply(exports,arguments)
13354 },{"dup":12}],47:[function(require,module,exports){
13355 var assert = require('assert')
13356 var BigInteger = require('bigi')
13357
13358 var Point = require('./point')
13359
13360 function Curve(p, a, b, Gx, Gy, n, h) {
13361 this.p = p
13362 this.a = a
13363 this.b = b
13364 this.G = Point.fromAffine(this, Gx, Gy)
13365 this.n = n
13366 this.h = h
13367
13368 this.infinity = new Point(this, null, null, BigInteger.ZERO)
13369
13370 // result caching
13371 this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)
13372 }
13373
13374 Curve.prototype.pointFromX = function(isOdd, x) {
13375 var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)
13376 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
13377
13378 var y = beta
13379 if (beta.isEven() ^ !isOdd) {
13380 y = this.p.subtract(y) // -y % p
13381 }
13382
13383 return Point.fromAffine(this, x, y)
13384 }
13385
13386 Curve.prototype.isInfinity = function(Q) {
13387 if (Q === this.infinity) return true
13388
13389 return Q.z.signum() === 0 && Q.y.signum() !== 0
13390 }
13391
13392 Curve.prototype.isOnCurve = function(Q) {
13393 if (this.isInfinity(Q)) return true
13394
13395 var x = Q.affineX
13396 var y = Q.affineY
13397 var a = this.a
13398 var b = this.b
13399 var p = this.p
13400
13401 // Check that xQ and yQ are integers in the interval [0, p - 1]
13402 if (x.signum() < 0 || x.compareTo(p) >= 0) return false
13403 if (y.signum() < 0 || y.compareTo(p) >= 0) return false
13404
13405 // and check that y^2 = x^3 + ax + b (mod p)
13406 var lhs = y.square().mod(p)
13407 var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)
13408 return lhs.equals(rhs)
13409 }
13410
13411 /**
13412 * Validate an elliptic curve point.
13413 *
13414 * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive
13415 */
13416 Curve.prototype.validate = function(Q) {
13417 // Check Q != O
13418 assert(!this.isInfinity(Q), 'Point is at infinity')
13419 assert(this.isOnCurve(Q), 'Point is not on the curve')
13420
13421 // Check nQ = O (where Q is a scalar multiple of G)
13422 var nQ = Q.multiply(this.n)
13423 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
13424
13425 return true
13426 }
13427
13428 module.exports = Curve
13429
13430 },{"./point":51,"assert":5,"bigi":3}],48:[function(require,module,exports){
13431 module.exports={
13432 "secp128r1": {
13433 "p": "fffffffdffffffffffffffffffffffff",
13434 "a": "fffffffdfffffffffffffffffffffffc",
13435 "b": "e87579c11079f43dd824993c2cee5ed3",
13436 "n": "fffffffe0000000075a30d1b9038a115",
13437 "h": "01",
13438 "Gx": "161ff7528b899b2d0c28607ca52c5b86",
13439 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
13440 },
13441 "secp160k1": {
13442 "p": "fffffffffffffffffffffffffffffffeffffac73",
13443 "a": "00",
13444 "b": "07",
13445 "n": "0100000000000000000001b8fa16dfab9aca16b6b3",
13446 "h": "01",
13447 "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
13448 "Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
13449 },
13450 "secp160r1": {
13451 "p": "ffffffffffffffffffffffffffffffff7fffffff",
13452 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
13453 "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
13454 "n": "0100000000000000000001f4c8f927aed3ca752257",
13455 "h": "01",
13456 "Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
13457 "Gy": "23a628553168947d59dcc912042351377ac5fb32"
13458 },
13459 "secp192k1": {
13460 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
13461 "a": "00",
13462 "b": "03",
13463 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
13464 "h": "01",
13465 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
13466 "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
13467 },
13468 "secp192r1": {
13469 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
13470 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
13471 "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
13472 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
13473 "h": "01",
13474 "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
13475 "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
13476 },
13477 "secp256k1": {
13478 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
13479 "a": "00",
13480 "b": "07",
13481 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
13482 "h": "01",
13483 "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
13484 "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
13485 },
13486 "secp256r1": {
13487 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
13488 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
13489 "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
13490 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
13491 "h": "01",
13492 "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
13493 "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
13494 }
13495 }
13496
13497 },{}],49:[function(require,module,exports){
13498 var Point = require('./point')
13499 var Curve = require('./curve')
13500
13501 var getCurveByName = require('./names')
13502
13503 module.exports = {
13504 Curve: Curve,
13505 Point: Point,
13506 getCurveByName: getCurveByName
13507 }
13508
13509 },{"./curve":47,"./names":50,"./point":51}],50:[function(require,module,exports){
13510 var BigInteger = require('bigi')
13511
13512 var curves = require('./curves')
13513 var Curve = require('./curve')
13514
13515 function getCurveByName(name) {
13516 var curve = curves[name]
13517 if (!curve) return null
13518
13519 var p = new BigInteger(curve.p, 16)
13520 var a = new BigInteger(curve.a, 16)
13521 var b = new BigInteger(curve.b, 16)
13522 var n = new BigInteger(curve.n, 16)
13523 var h = new BigInteger(curve.h, 16)
13524 var Gx = new BigInteger(curve.Gx, 16)
13525 var Gy = new BigInteger(curve.Gy, 16)
13526
13527 return new Curve(p, a, b, Gx, Gy, n, h)
13528 }
13529
13530 module.exports = getCurveByName
13531
13532 },{"./curve":47,"./curves":48,"bigi":3}],51:[function(require,module,exports){
13533 (function (Buffer){
13534 var assert = require('assert')
13535 var BigInteger = require('bigi')
13536
13537 var THREE = BigInteger.valueOf(3)
13538
13539 function Point(curve, x, y, z) {
13540 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
13541
13542 this.curve = curve
13543 this.x = x
13544 this.y = y
13545 this.z = z
13546 this._zInv = null
13547
13548 this.compressed = true
13549 }
13550
13551 Object.defineProperty(Point.prototype, 'zInv', {
13552 get: function() {
13553 if (this._zInv === null) {
13554 this._zInv = this.z.modInverse(this.curve.p)
13555 }
13556
13557 return this._zInv
13558 }
13559 })
13560
13561 Object.defineProperty(Point.prototype, 'affineX', {
13562 get: function() {
13563 return this.x.multiply(this.zInv).mod(this.curve.p)
13564 }
13565 })
13566
13567 Object.defineProperty(Point.prototype, 'affineY', {
13568 get: function() {
13569 return this.y.multiply(this.zInv).mod(this.curve.p)
13570 }
13571 })
13572
13573 Point.fromAffine = function(curve, x, y) {
13574 return new Point(curve, x, y, BigInteger.ONE)
13575 }
13576
13577 Point.prototype.equals = function(other) {
13578 if (other === this) return true
13579 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
13580 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
13581
13582 // u = Y2 * Z1 - Y1 * Z2
13583 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
13584
13585 if (u.signum() !== 0) return false
13586
13587 // v = X2 * Z1 - X1 * Z2
13588 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
13589
13590 return v.signum() === 0
13591 }
13592
13593 Point.prototype.negate = function() {
13594 var y = this.curve.p.subtract(this.y)
13595
13596 return new Point(this.curve, this.x, y, this.z)
13597 }
13598
13599 Point.prototype.add = function(b) {
13600 if (this.curve.isInfinity(this)) return b
13601 if (this.curve.isInfinity(b)) return this
13602
13603 var x1 = this.x
13604 var y1 = this.y
13605 var x2 = b.x
13606 var y2 = b.y
13607
13608 // u = Y2 * Z1 - Y1 * Z2
13609 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
13610 // v = X2 * Z1 - X1 * Z2
13611 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
13612
13613 if (v.signum() === 0) {
13614 if (u.signum() === 0) {
13615 return this.twice() // this == b, so double
13616 }
13617
13618 return this.curve.infinity // this = -b, so infinity
13619 }
13620
13621 var v2 = v.square()
13622 var v3 = v2.multiply(v)
13623 var x1v2 = x1.multiply(v2)
13624 var zu2 = u.square().multiply(this.z)
13625
13626 // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
13627 var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
13628 // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
13629 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)
13630 // z3 = v^3 * z1 * z2
13631 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
13632
13633 return new Point(this.curve, x3, y3, z3)
13634 }
13635
13636 Point.prototype.twice = function() {
13637 if (this.curve.isInfinity(this)) return this
13638 if (this.y.signum() === 0) return this.curve.infinity
13639
13640 var x1 = this.x
13641 var y1 = this.y
13642
13643 var y1z1 = y1.multiply(this.z)
13644 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
13645 var a = this.curve.a
13646
13647 // w = 3 * x1^2 + a * z1^2
13648 var w = x1.square().multiply(THREE)
13649
13650 if (a.signum() !== 0) {
13651 w = w.add(this.z.square().multiply(a))
13652 }
13653
13654 w = w.mod(this.curve.p)
13655 // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
13656 var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)
13657 // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
13658 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)
13659 // z3 = 8 * (y1 * z1)^3
13660 var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)
13661
13662 return new Point(this.curve, x3, y3, z3)
13663 }
13664
13665 // Simple NAF (Non-Adjacent Form) multiplication algorithm
13666 // TODO: modularize the multiplication algorithm
13667 Point.prototype.multiply = function(k) {
13668 if (this.curve.isInfinity(this)) return this
13669 if (k.signum() === 0) return this.curve.infinity
13670
13671 var e = k
13672 var h = e.multiply(THREE)
13673
13674 var neg = this.negate()
13675 var R = this
13676
13677 for (var i = h.bitLength() - 2; i > 0; --i) {
13678 R = R.twice()
13679
13680 var hBit = h.testBit(i)
13681 var eBit = e.testBit(i)
13682
13683 if (hBit != eBit) {
13684 R = R.add(hBit ? this : neg)
13685 }
13686 }
13687
13688 return R
13689 }
13690
13691 // Compute this*j + x*k (simultaneous multiplication)
13692 Point.prototype.multiplyTwo = function(j, x, k) {
13693 var i
13694
13695 if (j.bitLength() > k.bitLength())
13696 i = j.bitLength() - 1
13697 else
13698 i = k.bitLength() - 1
13699
13700 var R = this.curve.infinity
13701 var both = this.add(x)
13702
13703 while (i >= 0) {
13704 R = R.twice()
13705
13706 var jBit = j.testBit(i)
13707 var kBit = k.testBit(i)
13708
13709 if (jBit) {
13710 if (kBit) {
13711 R = R.add(both)
13712
13713 } else {
13714 R = R.add(this)
13715 }
13716
13717 } else {
13718 if (kBit) {
13719 R = R.add(x)
13720 }
13721 }
13722 --i
13723 }
13724
13725 return R
13726 }
13727
13728 Point.prototype.getEncoded = function(compressed) {
13729 if (compressed == undefined) compressed = this.compressed
13730 if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'
13731
13732 var x = this.affineX
13733 var y = this.affineY
13734
13735 var buffer
13736
13737 // Determine size of q in bytes
13738 var byteLength = Math.floor((this.curve.p.bitLength() + 7) / 8)
13739
13740 // 0x02/0x03 | X
13741 if (compressed) {
13742 buffer = new Buffer(1 + byteLength)
13743 buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)
13744
13745 // 0x04 | X | Y
13746 } else {
13747 buffer = new Buffer(1 + byteLength + byteLength)
13748 buffer.writeUInt8(0x04, 0)
13749
13750 y.toBuffer(byteLength).copy(buffer, 1 + byteLength)
13751 }
13752
13753 x.toBuffer(byteLength).copy(buffer, 1)
13754
13755 return buffer
13756 }
13757
13758 Point.decodeFrom = function(curve, buffer) {
13759 var type = buffer.readUInt8(0)
13760 var compressed = (type !== 4)
13761
13762 var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)
13763 var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))
13764
13765 var Q
13766 if (compressed) {
13767 assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')
13768 assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
13769
13770 var isOdd = (type === 0x03)
13771 Q = curve.pointFromX(isOdd, x)
13772
13773 } else {
13774 assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')
13775
13776 var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))
13777 Q = Point.fromAffine(curve, x, y)
13778 }
13779
13780 Q.compressed = compressed
13781 return Q
13782 }
13783
13784 Point.prototype.toString = function () {
13785 if (this.curve.isInfinity(this)) return '(INFINITY)'
13786
13787 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
13788 }
13789
13790 module.exports = Point
13791
13792 }).call(this,require("buffer").Buffer)
13793 },{"assert":5,"bigi":3,"buffer":7}],52:[function(require,module,exports){
13794 (function (process,global,Buffer){
13795 'use strict';
13796
13797 var crypto = global.crypto || global.msCrypto
13798 if(crypto && crypto.getRandomValues) {
13799 module.exports = randomBytes;
13800 } else {
13801 module.exports = oldBrowser;
13802 }
13803 function randomBytes(size, cb) {
13804 var bytes = new Buffer(size); //in browserify, this is an extended Uint8Array
13805 /* This will not work in older browsers.
13806 * See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
13807 */
13808
13809 crypto.getRandomValues(bytes);
13810 if (typeof cb === 'function') {
13811 return process.nextTick(function () {
13812 cb(null, bytes);
13813 });
13814 }
13815 return bytes;
13816 }
13817 function oldBrowser() {
13818 throw new Error(
13819 'secure random number generation not supported by this browser\n'+
13820 'use chrome, FireFox or Internet Explorer 11'
13821 )
13822 }
13823
13824 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
13825 },{"_process":14,"buffer":7}],53:[function(require,module,exports){
13826 (function (Buffer){
13827 'use strict';
13828
13829 function getFunctionName(fn) {
13830 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1];
13831 }
13832
13833 function getTypeTypeName(type) {
13834 if (nativeTypes.Function(type)) {
13835 type = type.toJSON ? type.toJSON() : getFunctionName(type);
13836 }
13837 if (nativeTypes.Object(type)) return JSON.stringify(type);
13838
13839 return type;
13840 }
13841
13842 function getValueTypeName(value) {
13843 if (nativeTypes.Null(value)) return '';
13844
13845 return getFunctionName(value.constructor);
13846 }
13847
13848 function tfErrorString(type, value) {
13849 var typeTypeName = getTypeTypeName(type);
13850 var valueTypeName = getValueTypeName(value);
13851
13852 return 'Expected ' + typeTypeName + ', got ' + (valueTypeName && valueTypeName + ' ') + JSON.stringify(value);
13853 }
13854
13855 function tfPropertyErrorString(type, name, value) {
13856 return tfErrorString('property \"' + name + '\" of type ' + getTypeTypeName(type), value);
13857 }
13858
13859 var nativeTypes = {
13860 Array: (function (_Array) {
13861 function Array(_x) {
13862 return _Array.apply(this, arguments);
13863 }
13864
13865 Array.toString = function () {
13866 return _Array.toString();
13867 };
13868
13869 return Array;
13870 })(function (value) {
13871 return value !== null && value !== undefined && value.constructor === Array;
13872 }),
13873 Boolean: function Boolean(value) {
13874 return typeof value === 'boolean';
13875 },
13876 Buffer: (function (_Buffer) {
13877 function Buffer(_x2) {
13878 return _Buffer.apply(this, arguments);
13879 }
13880
13881 Buffer.toString = function () {
13882 return _Buffer.toString();
13883 };
13884
13885 return Buffer;
13886 })(function (value) {
13887 return Buffer.isBuffer(value);
13888 }),
13889 Function: function Function(value) {
13890 return typeof value === 'function';
13891 },
13892 Null: function Null(value) {
13893 return value === undefined || value === null;
13894 },
13895 Number: function Number(value) {
13896 return typeof value === 'number';
13897 },
13898 Object: function Object(value) {
13899 return typeof value === 'object';
13900 },
13901 String: function String(value) {
13902 return typeof value === 'string';
13903 },
13904 '': function _() {
13905 return true;
13906 }
13907 };
13908
13909 function tJSON(type) {
13910 return type && type.toJSON ? type.toJSON() : type;
13911 }
13912
13913 function sJSON(type) {
13914 var json = tJSON(type);
13915 return nativeTypes.Object(json) ? JSON.stringify(json) : json;
13916 }
13917
13918 var otherTypes = {
13919 arrayOf: function arrayOf(type) {
13920 function arrayOf(value, strict) {
13921 try {
13922 return nativeTypes.Array(value) && value.every(function (x) {
13923 return typeforce(type, x, strict);
13924 });
13925 } catch (e) {
13926 return false;
13927 }
13928 }
13929 arrayOf.toJSON = function () {
13930 return [tJSON(type)];
13931 };
13932
13933 return arrayOf;
13934 },
13935
13936 maybe: function maybe(type) {
13937 function maybe(value, strict) {
13938 return nativeTypes.Null(value) || typeforce(type, value, strict);
13939 }
13940 maybe.toJSON = function () {
13941 return '?' + sJSON(type);
13942 };
13943
13944 return maybe;
13945 },
13946
13947 object: function object(type) {
13948 function object(value, strict) {
13949 typeforce(nativeTypes.Object, value, strict);
13950
13951 var propertyName, propertyType, propertyValue;
13952
13953 try {
13954 for (propertyName in type) {
13955 propertyType = type[propertyName];
13956 propertyValue = value[propertyName];
13957
13958 typeforce(propertyType, propertyValue, strict);
13959 }
13960 } catch (e) {
13961 throw new TypeError(tfPropertyErrorString(propertyType, propertyName, propertyValue));
13962 }
13963
13964 if (strict) {
13965 for (propertyName in value) {
13966 if (type[propertyName]) continue;
13967
13968 throw new TypeError('Unexpected property "' + propertyName + '"');
13969 }
13970 }
13971
13972 return true;
13973 }
13974 object.toJSON = function () {
13975 return type;
13976 };
13977
13978 return object;
13979 },
13980
13981 oneOf: function oneOf() {
13982 for (var _len = arguments.length, types = Array(_len), _key = 0; _key < _len; _key++) {
13983 types[_key] = arguments[_key];
13984 }
13985
13986 function oneOf(value, strict) {
13987 return types.some(function (type) {
13988 try {
13989 return typeforce(type, value, strict);
13990 } catch (e) {
13991 return false;
13992 }
13993 });
13994 }
13995 oneOf.toJSON = function () {
13996 return types.map(sJSON).join('|');
13997 };
13998
13999 return oneOf;
14000 },
14001
14002 quacksLike: function quacksLike(type) {
14003 function quacksLike(value, strict) {
14004 return type === getValueTypeName(value);
14005 }
14006 quacksLike.toJSON = function () {
14007 return type;
14008 };
14009
14010 return quacksLike;
14011 },
14012
14013 tuple: function tuple() {
14014 for (var _len2 = arguments.length, types = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
14015 types[_key2] = arguments[_key2];
14016 }
14017
14018 function tuple(value, strict) {
14019 return types.every(function (type, i) {
14020 return typeforce(type, value[i], strict);
14021 });
14022 }
14023 tuple.toJSON = function () {
14024 return '(' + types.map(sJSON).join(', ') + ')';
14025 };
14026
14027 return tuple;
14028 },
14029
14030 value: function value(expected) {
14031 function value(actual) {
14032 return actual === expected;
14033 }
14034 value.toJSON = function () {
14035 return expected;
14036 };
14037
14038 return value;
14039 }
14040 };
14041
14042 function compile(type) {
14043 if (nativeTypes.String(type)) {
14044 if (type[0] === '?') return otherTypes.maybe(compile(type.slice(1)));
14045
14046 return nativeTypes[type] || otherTypes.quacksLike(type);
14047 } else if (type && nativeTypes.Object(type)) {
14048 if (nativeTypes.Array(type)) return otherTypes.arrayOf(compile(type[0]));
14049
14050 var compiled = {};
14051
14052 for (var propertyName in type) {
14053 compiled[propertyName] = compile(type[propertyName]);
14054 }
14055
14056 return otherTypes.object(compiled);
14057 } else if (nativeTypes.Function(type)) {
14058 return type;
14059 }
14060
14061 return otherTypes.value(type);
14062 }
14063
14064 function typeforce(_x3, _x4, _x5) {
14065 var _again = true;
14066
14067 _function: while (_again) {
14068 var type = _x3,
14069 value = _x4,
14070 strict = _x5;
14071 _again = false;
14072
14073 if (nativeTypes.Function(type)) {
14074 if (type(value, strict)) return true;
14075
14076 throw new TypeError(tfErrorString(type, value));
14077 }
14078
14079 // JIT
14080 _x3 = compile(type);
14081 _x4 = value;
14082 _x5 = strict;
14083 _again = true;
14084 continue _function;
14085 }
14086 }
14087
14088 // assign all types to typeforce function
14089 var typeName;
14090 Object.keys(nativeTypes).forEach(function (typeName) {
14091 var nativeType = nativeTypes[typeName];
14092 nativeType.toJSON = function () {
14093 return typeName;
14094 };
14095
14096 typeforce[typeName] = nativeType;
14097 });
14098
14099 for (typeName in otherTypes) {
14100 typeforce[typeName] = otherTypes[typeName];
14101 }
14102
14103 module.exports = typeforce;
14104 module.exports.compile = compile;
14105 }).call(this,require("buffer").Buffer)
14106 },{"buffer":7}],54:[function(require,module,exports){
14107 (function (Buffer){
14108 var assert = require('assert')
14109 var base58check = require('bs58check')
14110 var typeForce = require('typeforce')
14111 var networks = require('./networks')
14112 var scripts = require('./scripts')
14113
14114 function findScriptTypeByVersion (version) {
14115 for (var networkName in networks) {
14116 var network = networks[networkName]
14117
14118 if (version === network.pubKeyHash) return 'pubkeyhash'
14119 if (version === network.scriptHash) return 'scripthash'
14120 }
14121 }
14122
14123 function Address (hash, version) {
14124 typeForce('Buffer', hash)
14125
14126 assert.strictEqual(hash.length, 20, 'Invalid hash length')
14127 assert.strictEqual(version & 0xff, version, 'Invalid version byte')
14128
14129 this.hash = hash
14130 this.version = version
14131 }
14132
14133 Address.fromBase58Check = function (string) {
14134 var payload = base58check.decode(string)
14135 var version = payload.readUInt8(0)
14136 var hash = payload.slice(1)
14137
14138 return new Address(hash, version)
14139 }
14140
14141 Address.fromOutputScript = function (script, network) {
14142 network = network || networks.bitcoin
14143
14144 if (scripts.isPubKeyHashOutput(script)) return new Address(script.chunks[2], network.pubKeyHash)
14145 if (scripts.isScriptHashOutput(script)) return new Address(script.chunks[1], network.scriptHash)
14146
14147 assert(false, script.toASM() + ' has no matching Address')
14148 }
14149
14150 Address.prototype.toBase58Check = function () {
14151 var payload = new Buffer(21)
14152 payload.writeUInt8(this.version, 0)
14153 this.hash.copy(payload, 1)
14154
14155 return base58check.encode(payload)
14156 }
14157
14158 Address.prototype.toOutputScript = function () {
14159 var scriptType = findScriptTypeByVersion(this.version)
14160
14161 if (scriptType === 'pubkeyhash') return scripts.pubKeyHashOutput(this.hash)
14162 if (scriptType === 'scripthash') return scripts.scriptHashOutput(this.hash)
14163
14164 assert(false, this.toString() + ' has no matching Script')
14165 }
14166
14167 Address.prototype.toString = Address.prototype.toBase58Check
14168
14169 module.exports = Address
14170
14171 }).call(this,require("buffer").Buffer)
14172 },{"./networks":66,"./scripts":69,"assert":5,"bs58check":31,"buffer":7,"typeforce":53}],55:[function(require,module,exports){
14173 var bs58check = require('bs58check')
14174
14175 function decode () {
14176 console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.')
14177
14178 return bs58check.decode.apply(undefined, arguments)
14179 }
14180
14181 function encode () {
14182 console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.')
14183
14184 return bs58check.encode.apply(undefined, arguments)
14185 }
14186
14187 module.exports = {
14188 decode: decode,
14189 encode: encode
14190 }
14191
14192 },{"bs58check":31}],56:[function(require,module,exports){
14193 (function (Buffer){
14194 var assert = require('assert')
14195 var bufferutils = require('./bufferutils')
14196 var crypto = require('./crypto')
14197
14198 var Transaction = require('./transaction')
14199
14200 function Block () {
14201 this.version = 1
14202 this.prevHash = null
14203 this.merkleRoot = null
14204 this.timestamp = 0
14205 this.bits = 0
14206 this.nonce = 0
14207 }
14208
14209 Block.fromBuffer = function (buffer) {
14210 assert(buffer.length >= 80, 'Buffer too small (< 80 bytes)')
14211
14212 var offset = 0
14213 function readSlice (n) {
14214 offset += n
14215 return buffer.slice(offset - n, offset)
14216 }
14217
14218 function readUInt32 () {
14219 var i = buffer.readUInt32LE(offset)
14220 offset += 4
14221 return i
14222 }
14223
14224 var block = new Block()
14225 block.version = readUInt32()
14226 block.prevHash = readSlice(32)
14227 block.merkleRoot = readSlice(32)
14228 block.timestamp = readUInt32()
14229 block.bits = readUInt32()
14230 block.nonce = readUInt32()
14231
14232 if (buffer.length === 80) return block
14233
14234 function readVarInt () {
14235 var vi = bufferutils.readVarInt(buffer, offset)
14236 offset += vi.size
14237 return vi.number
14238 }
14239
14240 // FIXME: poor performance
14241 function readTransaction () {
14242 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
14243
14244 offset += tx.toBuffer().length
14245 return tx
14246 }
14247
14248 var nTransactions = readVarInt()
14249 block.transactions = []
14250
14251 for (var i = 0; i < nTransactions; ++i) {
14252 var tx = readTransaction()
14253 block.transactions.push(tx)
14254 }
14255
14256 return block
14257 }
14258
14259 Block.fromHex = function (hex) {
14260 return Block.fromBuffer(new Buffer(hex, 'hex'))
14261 }
14262
14263 Block.prototype.getHash = function () {
14264 return crypto.hash256(this.toBuffer(true))
14265 }
14266
14267 Block.prototype.getId = function () {
14268 return bufferutils.reverse(this.getHash()).toString('hex')
14269 }
14270
14271 Block.prototype.getUTCDate = function () {
14272 var date = new Date(0) // epoch
14273 date.setUTCSeconds(this.timestamp)
14274
14275 return date
14276 }
14277
14278 Block.prototype.toBuffer = function (headersOnly) {
14279 var buffer = new Buffer(80)
14280
14281 var offset = 0
14282 function writeSlice (slice) {
14283 slice.copy(buffer, offset)
14284 offset += slice.length
14285 }
14286
14287 function writeUInt32 (i) {
14288 buffer.writeUInt32LE(i, offset)
14289 offset += 4
14290 }
14291
14292 writeUInt32(this.version)
14293 writeSlice(this.prevHash)
14294 writeSlice(this.merkleRoot)
14295 writeUInt32(this.timestamp)
14296 writeUInt32(this.bits)
14297 writeUInt32(this.nonce)
14298
14299 if (headersOnly || !this.transactions) return buffer
14300
14301 var txLenBuffer = bufferutils.varIntBuffer(this.transactions.length)
14302 var txBuffers = this.transactions.map(function (tx) {
14303 return tx.toBuffer()
14304 })
14305
14306 return Buffer.concat([buffer, txLenBuffer].concat(txBuffers))
14307 }
14308
14309 Block.prototype.toHex = function (headersOnly) {
14310 return this.toBuffer(headersOnly).toString('hex')
14311 }
14312
14313 module.exports = Block
14314
14315 }).call(this,require("buffer").Buffer)
14316 },{"./bufferutils":57,"./crypto":58,"./transaction":70,"assert":5,"buffer":7}],57:[function(require,module,exports){
14317 (function (Buffer){
14318 var assert = require('assert')
14319 var opcodes = require('./opcodes')
14320
14321 // https://github.com/feross/buffer/blob/master/index.js#L1127
14322 function verifuint (value, max) {
14323 assert(typeof value === 'number', 'cannot write a non-number as a number')
14324 assert(value >= 0, 'specified a negative value for writing an unsigned value')
14325 assert(value <= max, 'value is larger than maximum value for type')
14326 assert(Math.floor(value) === value, 'value has a fractional component')
14327 }
14328
14329 function pushDataSize (i) {
14330 return i < opcodes.OP_PUSHDATA1 ? 1
14331 : i < 0xff ? 2
14332 : i < 0xffff ? 3
14333 : 5
14334 }
14335
14336 function readPushDataInt (buffer, offset) {
14337 var opcode = buffer.readUInt8(offset)
14338 var number, size
14339
14340 // ~6 bit
14341 if (opcode < opcodes.OP_PUSHDATA1) {
14342 number = opcode
14343 size = 1
14344
14345 // 8 bit
14346 } else if (opcode === opcodes.OP_PUSHDATA1) {
14347 if (offset + 2 > buffer.length) return null
14348 number = buffer.readUInt8(offset + 1)
14349 size = 2
14350
14351 // 16 bit
14352 } else if (opcode === opcodes.OP_PUSHDATA2) {
14353 if (offset + 3 > buffer.length) return null
14354 number = buffer.readUInt16LE(offset + 1)
14355 size = 3
14356
14357 // 32 bit
14358 } else {
14359 if (offset + 5 > buffer.length) return null
14360 assert.equal(opcode, opcodes.OP_PUSHDATA4, 'Unexpected opcode')
14361
14362 number = buffer.readUInt32LE(offset + 1)
14363 size = 5
14364 }
14365
14366 return {
14367 opcode: opcode,
14368 number: number,
14369 size: size
14370 }
14371 }
14372
14373 function readUInt64LE (buffer, offset) {
14374 var a = buffer.readUInt32LE(offset)
14375 var b = buffer.readUInt32LE(offset + 4)
14376 b *= 0x100000000
14377
14378 verifuint(b + a, 0x001fffffffffffff)
14379
14380 return b + a
14381 }
14382
14383 function readVarInt (buffer, offset) {
14384 var t = buffer.readUInt8(offset)
14385 var number, size
14386
14387 // 8 bit
14388 if (t < 253) {
14389 number = t
14390 size = 1
14391
14392 // 16 bit
14393 } else if (t < 254) {
14394 number = buffer.readUInt16LE(offset + 1)
14395 size = 3
14396
14397 // 32 bit
14398 } else if (t < 255) {
14399 number = buffer.readUInt32LE(offset + 1)
14400 size = 5
14401
14402 // 64 bit
14403 } else {
14404 number = readUInt64LE(buffer, offset + 1)
14405 size = 9
14406 }
14407
14408 return {
14409 number: number,
14410 size: size
14411 }
14412 }
14413
14414 function writePushDataInt (buffer, number, offset) {
14415 var size = pushDataSize(number)
14416
14417 // ~6 bit
14418 if (size === 1) {
14419 buffer.writeUInt8(number, offset)
14420
14421 // 8 bit
14422 } else if (size === 2) {
14423 buffer.writeUInt8(opcodes.OP_PUSHDATA1, offset)
14424 buffer.writeUInt8(number, offset + 1)
14425
14426 // 16 bit
14427 } else if (size === 3) {
14428 buffer.writeUInt8(opcodes.OP_PUSHDATA2, offset)
14429 buffer.writeUInt16LE(number, offset + 1)
14430
14431 // 32 bit
14432 } else {
14433 buffer.writeUInt8(opcodes.OP_PUSHDATA4, offset)
14434 buffer.writeUInt32LE(number, offset + 1)
14435 }
14436
14437 return size
14438 }
14439
14440 function writeUInt64LE (buffer, value, offset) {
14441 verifuint(value, 0x001fffffffffffff)
14442
14443 buffer.writeInt32LE(value & -1, offset)
14444 buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4)
14445 }
14446
14447 function varIntSize (i) {
14448 return i < 253 ? 1
14449 : i < 0x10000 ? 3
14450 : i < 0x100000000 ? 5
14451 : 9
14452 }
14453
14454 function writeVarInt (buffer, number, offset) {
14455 var size = varIntSize(number)
14456
14457 // 8 bit
14458 if (size === 1) {
14459 buffer.writeUInt8(number, offset)
14460
14461 // 16 bit
14462 } else if (size === 3) {
14463 buffer.writeUInt8(253, offset)
14464 buffer.writeUInt16LE(number, offset + 1)
14465
14466 // 32 bit
14467 } else if (size === 5) {
14468 buffer.writeUInt8(254, offset)
14469 buffer.writeUInt32LE(number, offset + 1)
14470
14471 // 64 bit
14472 } else {
14473 buffer.writeUInt8(255, offset)
14474 writeUInt64LE(buffer, number, offset + 1)
14475 }
14476
14477 return size
14478 }
14479
14480 function varIntBuffer (i) {
14481 var size = varIntSize(i)
14482 var buffer = new Buffer(size)
14483 writeVarInt(buffer, i, 0)
14484
14485 return buffer
14486 }
14487
14488 function reverse (buffer) {
14489 var buffer2 = new Buffer(buffer)
14490 Array.prototype.reverse.call(buffer2)
14491 return buffer2
14492 }
14493
14494 module.exports = {
14495 pushDataSize: pushDataSize,
14496 readPushDataInt: readPushDataInt,
14497 readUInt64LE: readUInt64LE,
14498 readVarInt: readVarInt,
14499 reverse: reverse,
14500 varIntBuffer: varIntBuffer,
14501 varIntSize: varIntSize,
14502 writePushDataInt: writePushDataInt,
14503 writeUInt64LE: writeUInt64LE,
14504 writeVarInt: writeVarInt
14505 }
14506
14507 }).call(this,require("buffer").Buffer)
14508 },{"./opcodes":67,"assert":5,"buffer":7}],58:[function(require,module,exports){
14509 var createHash = require('create-hash')
14510
14511 function hash160 (buffer) {
14512 return ripemd160(sha256(buffer))
14513 }
14514
14515 function hash256 (buffer) {
14516 return sha256(sha256(buffer))
14517 }
14518
14519 function ripemd160 (buffer) {
14520 return createHash('rmd160').update(buffer).digest()
14521 }
14522
14523 function sha1 (buffer) {
14524 return createHash('sha1').update(buffer).digest()
14525 }
14526
14527 function sha256 (buffer) {
14528 return createHash('sha256').update(buffer).digest()
14529 }
14530
14531 // FIXME: Name not consistent with others
14532 var createHmac = require('create-hmac')
14533
14534 function HmacSHA256 (buffer, secret) {
14535 console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead')
14536 return createHmac('sha256', secret).update(buffer).digest()
14537 }
14538
14539 function HmacSHA512 (buffer, secret) {
14540 console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead')
14541 return createHmac('sha512', secret).update(buffer).digest()
14542 }
14543
14544 module.exports = {
14545 ripemd160: ripemd160,
14546 sha1: sha1,
14547 sha256: sha256,
14548 hash160: hash160,
14549 hash256: hash256,
14550 HmacSHA256: HmacSHA256,
14551 HmacSHA512: HmacSHA512
14552 }
14553
14554 },{"create-hash":32,"create-hmac":45}],59:[function(require,module,exports){
14555 (function (Buffer){
14556 var assert = require('assert')
14557 var createHmac = require('create-hmac')
14558 var typeForce = require('typeforce')
14559
14560 var BigInteger = require('bigi')
14561 var ECSignature = require('./ecsignature')
14562
14563 var ZERO = new Buffer([0])
14564 var ONE = new Buffer([1])
14565
14566 // https://tools.ietf.org/html/rfc6979#section-3.2
14567 function deterministicGenerateK (curve, hash, d, checkSig) {
14568 typeForce('Buffer', hash)
14569 typeForce('BigInteger', d)
14570
14571 // FIXME: remove/uncomment for 2.0.0
14572 // typeForce('Function', checkSig)
14573
14574 if (typeof checkSig !== 'function') {
14575 console.warn('deterministicGenerateK requires a checkSig callback in 2.0.0, see #337 for more information')
14576
14577 checkSig = function (k) {
14578 var G = curve.G
14579 var n = curve.n
14580 var e = BigInteger.fromBuffer(hash)
14581
14582 var Q = G.multiply(k)
14583
14584 if (curve.isInfinity(Q))
14585 return false
14586
14587 var r = Q.affineX.mod(n)
14588 if (r.signum() === 0)
14589 return false
14590
14591 var s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
14592 if (s.signum() === 0)
14593 return false
14594
14595 return true
14596 }
14597 }
14598
14599 // sanity check
14600 assert.equal(hash.length, 32, 'Hash must be 256 bit')
14601
14602 var x = d.toBuffer(32)
14603 var k = new Buffer(32)
14604 var v = new Buffer(32)
14605
14606 // Step A, ignored as hash already provided
14607 // Step B
14608 v.fill(1)
14609
14610 // Step C
14611 k.fill(0)
14612
14613 // Step D
14614 k = createHmac('sha256', k)
14615 .update(v)
14616 .update(ZERO)
14617 .update(x)
14618 .update(hash)
14619 .digest()
14620
14621 // Step E
14622 v = createHmac('sha256', k).update(v).digest()
14623
14624 // Step F
14625 k = createHmac('sha256', k)
14626 .update(v)
14627 .update(ONE)
14628 .update(x)
14629 .update(hash)
14630 .digest()
14631
14632 // Step G
14633 v = createHmac('sha256', k).update(v).digest()
14634
14635 // Step H1/H2a, ignored as tlen === qlen (256 bit)
14636 // Step H2b
14637 v = createHmac('sha256', k).update(v).digest()
14638
14639 var T = BigInteger.fromBuffer(v)
14640
14641 // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA
14642 while ((T.signum() <= 0) || (T.compareTo(curve.n) >= 0) || !checkSig(T)) {
14643 k = createHmac('sha256', k)
14644 .update(v)
14645 .update(ZERO)
14646 .digest()
14647
14648 v = createHmac('sha256', k).update(v).digest()
14649
14650 // Step H1/H2a, again, ignored as tlen === qlen (256 bit)
14651 // Step H2b again
14652 v = createHmac('sha256', k).update(v).digest()
14653 T = BigInteger.fromBuffer(v)
14654 }
14655
14656 return T
14657 }
14658
14659 function sign (curve, hash, d) {
14660 var r, s
14661
14662 var e = BigInteger.fromBuffer(hash)
14663 var n = curve.n
14664 var G = curve.G
14665
14666 deterministicGenerateK(curve, hash, d, function (k) {
14667 var Q = G.multiply(k)
14668
14669 if (curve.isInfinity(Q))
14670 return false
14671
14672 r = Q.affineX.mod(n)
14673 if (r.signum() === 0)
14674 return false
14675
14676 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
14677 if (s.signum() === 0)
14678 return false
14679
14680 return true
14681 })
14682
14683 var N_OVER_TWO = n.shiftRight(1)
14684
14685 // enforce low S values, see bip62: 'low s values in signatures'
14686 if (s.compareTo(N_OVER_TWO) > 0) {
14687 s = n.subtract(s)
14688 }
14689
14690 return new ECSignature(r, s)
14691 }
14692
14693 function verifyRaw (curve, e, signature, Q) {
14694 var n = curve.n
14695 var G = curve.G
14696
14697 var r = signature.r
14698 var s = signature.s
14699
14700 // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]
14701 if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
14702 if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
14703
14704 // c = s^-1 mod n
14705 var c = s.modInverse(n)
14706
14707 // 1.4.4 Compute u1 = es^−1 mod n
14708 // u2 = rs^−1 mod n
14709 var u1 = e.multiply(c).mod(n)
14710 var u2 = r.multiply(c).mod(n)
14711
14712 // 1.4.5 Compute R = (xR, yR) = u1G + u2Q
14713 var R = G.multiplyTwo(u1, Q, u2)
14714 var v = R.affineX.mod(n)
14715
14716 // 1.4.5 (cont.) Enforce R is not at infinity
14717 if (curve.isInfinity(R)) return false
14718
14719 // 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
14720 return v.equals(r)
14721 }
14722
14723 function verify (curve, hash, signature, Q) {
14724 // 1.4.2 H = Hash(M), already done by the user
14725 // 1.4.3 e = H
14726 var e = BigInteger.fromBuffer(hash)
14727
14728 return verifyRaw(curve, e, signature, Q)
14729 }
14730
14731 /**
14732 * Recover a public key from a signature.
14733 *
14734 * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, "Public
14735 * Key Recovery Operation".
14736 *
14737 * http://www.secg.org/download/aid-780/sec1-v2.pdf
14738 */
14739 function recoverPubKey (curve, e, signature, i) {
14740 assert.strictEqual(i & 3, i, 'Recovery param is more than two bits')
14741
14742 var n = curve.n
14743 var G = curve.G
14744
14745 var r = signature.r
14746 var s = signature.s
14747
14748 assert(r.signum() > 0 && r.compareTo(n) < 0, 'Invalid r value')
14749 assert(s.signum() > 0 && s.compareTo(n) < 0, 'Invalid s value')
14750
14751 // A set LSB signifies that the y-coordinate is odd
14752 var isYOdd = i & 1
14753
14754 // The more significant bit specifies whether we should use the
14755 // first or second candidate key.
14756 var isSecondKey = i >> 1
14757
14758 // 1.1 Let x = r + jn
14759 var x = isSecondKey ? r.add(n) : r
14760 var R = curve.pointFromX(isYOdd, x)
14761
14762 // 1.4 Check that nR is at infinity
14763 var nR = R.multiply(n)
14764 assert(curve.isInfinity(nR), 'nR is not a valid curve point')
14765
14766 // Compute -e from e
14767 var eNeg = e.negate().mod(n)
14768
14769 // 1.6.1 Compute Q = r^-1 (sR - eG)
14770 // Q = r^-1 (sR + -eG)
14771 var rInv = r.modInverse(n)
14772
14773 var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv)
14774 curve.validate(Q)
14775
14776 return Q
14777 }
14778
14779 /**
14780 * Calculate pubkey extraction parameter.
14781 *
14782 * When extracting a pubkey from a signature, we have to
14783 * distinguish four different cases. Rather than putting this
14784 * burden on the verifier, Bitcoin includes a 2-bit value with the
14785 * signature.
14786 *
14787 * This function simply tries all four cases and returns the value
14788 * that resulted in a successful pubkey recovery.
14789 */
14790 function calcPubKeyRecoveryParam (curve, e, signature, Q) {
14791 for (var i = 0; i < 4; i++) {
14792 var Qprime = recoverPubKey(curve, e, signature, i)
14793
14794 // 1.6.2 Verify Q
14795 if (Qprime.equals(Q)) {
14796 return i
14797 }
14798 }
14799
14800 throw new Error('Unable to find valid recovery factor')
14801 }
14802
14803 module.exports = {
14804 calcPubKeyRecoveryParam: calcPubKeyRecoveryParam,
14805 deterministicGenerateK: deterministicGenerateK,
14806 recoverPubKey: recoverPubKey,
14807 sign: sign,
14808 verify: verify,
14809 verifyRaw: verifyRaw
14810 }
14811
14812 }).call(this,require("buffer").Buffer)
14813 },{"./ecsignature":62,"assert":5,"bigi":3,"buffer":7,"create-hmac":45,"typeforce":53}],60:[function(require,module,exports){
14814 (function (Buffer){
14815 var assert = require('assert')
14816 var base58check = require('bs58check')
14817 var ecdsa = require('./ecdsa')
14818 var networks = require('./networks')
14819 var randomBytes = require('randombytes')
14820 var typeForce = require('typeforce')
14821
14822 var BigInteger = require('bigi')
14823 var ECPubKey = require('./ecpubkey')
14824
14825 var ecurve = require('ecurve')
14826 var secp256k1 = ecurve.getCurveByName('secp256k1')
14827
14828 function ECKey (d, compressed) {
14829 assert(d.signum() > 0, 'Private key must be greater than 0')
14830 assert(d.compareTo(ECKey.curve.n) < 0, 'Private key must be less than the curve order')
14831
14832 var Q = ECKey.curve.G.multiply(d)
14833
14834 this.d = d
14835 this.pub = new ECPubKey(Q, compressed)
14836 }
14837
14838 // Constants
14839 ECKey.curve = secp256k1
14840
14841 // Static constructors
14842 ECKey.fromWIF = function (string) {
14843 var payload = base58check.decode(string)
14844 var compressed = false
14845
14846 // Ignore the version byte
14847 payload = payload.slice(1)
14848
14849 if (payload.length === 33) {
14850 assert.strictEqual(payload[32], 0x01, 'Invalid compression flag')
14851
14852 // Truncate the compression flag
14853 payload = payload.slice(0, -1)
14854 compressed = true
14855 }
14856
14857 assert.equal(payload.length, 32, 'Invalid WIF payload length')
14858
14859 var d = BigInteger.fromBuffer(payload)
14860 return new ECKey(d, compressed)
14861 }
14862
14863 ECKey.makeRandom = function (compressed, rng) {
14864 rng = rng || randomBytes
14865
14866 var buffer = rng(32)
14867 typeForce('Buffer', buffer)
14868 assert.equal(buffer.length, 32, 'Expected 256-bit Buffer from RNG')
14869
14870 var d = BigInteger.fromBuffer(buffer)
14871 d = d.mod(ECKey.curve.n)
14872
14873 return new ECKey(d, compressed)
14874 }
14875
14876 // Export functions
14877 ECKey.prototype.toWIF = function (network) {
14878 network = network || networks.bitcoin
14879
14880 var bufferLen = this.pub.compressed ? 34 : 33
14881 var buffer = new Buffer(bufferLen)
14882
14883 buffer.writeUInt8(network.wif, 0)
14884 this.d.toBuffer(32).copy(buffer, 1)
14885
14886 if (this.pub.compressed) {
14887 buffer.writeUInt8(0x01, 33)
14888 }
14889
14890 return base58check.encode(buffer)
14891 }
14892
14893 // Operations
14894 ECKey.prototype.sign = function (hash) {
14895 return ecdsa.sign(ECKey.curve, hash, this.d)
14896 }
14897
14898 module.exports = ECKey
14899
14900 }).call(this,require("buffer").Buffer)
14901 },{"./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){
14902 (function (Buffer){
14903 var crypto = require('./crypto')
14904 var ecdsa = require('./ecdsa')
14905 var typeForce = require('typeforce')
14906 var networks = require('./networks')
14907
14908 var Address = require('./address')
14909
14910 var ecurve = require('ecurve')
14911 var secp256k1 = ecurve.getCurveByName('secp256k1')
14912
14913 function ECPubKey (Q, compressed) {
14914 if (compressed === undefined) {
14915 compressed = true
14916 }
14917
14918 typeForce('Point', Q)
14919 typeForce('Boolean', compressed)
14920
14921 this.compressed = compressed
14922 this.Q = Q
14923 }
14924
14925 // Constants
14926 ECPubKey.curve = secp256k1
14927
14928 // Static constructors
14929 ECPubKey.fromBuffer = function (buffer) {
14930 var Q = ecurve.Point.decodeFrom(ECPubKey.curve, buffer)
14931 return new ECPubKey(Q, Q.compressed)
14932 }
14933
14934 ECPubKey.fromHex = function (hex) {
14935 return ECPubKey.fromBuffer(new Buffer(hex, 'hex'))
14936 }
14937
14938 // Operations
14939 ECPubKey.prototype.getAddress = function (network) {
14940 network = network || networks.bitcoin
14941
14942 return new Address(crypto.hash160(this.toBuffer()), network.pubKeyHash)
14943 }
14944
14945 ECPubKey.prototype.verify = function (hash, signature) {
14946 return ecdsa.verify(ECPubKey.curve, hash, signature, this.Q)
14947 }
14948
14949 // Export functions
14950 ECPubKey.prototype.toBuffer = function () {
14951 return this.Q.getEncoded(this.compressed)
14952 }
14953
14954 ECPubKey.prototype.toHex = function () {
14955 return this.toBuffer().toString('hex')
14956 }
14957
14958 module.exports = ECPubKey
14959
14960 }).call(this,require("buffer").Buffer)
14961 },{"./address":54,"./crypto":58,"./ecdsa":59,"./networks":66,"buffer":7,"ecurve":49,"typeforce":53}],62:[function(require,module,exports){
14962 (function (Buffer){
14963 var assert = require('assert')
14964 var typeForce = require('typeforce')
14965
14966 var BigInteger = require('bigi')
14967
14968 function ECSignature (r, s) {
14969 typeForce('BigInteger', r)
14970 typeForce('BigInteger', s)
14971
14972 this.r = r
14973 this.s = s
14974 }
14975
14976 ECSignature.parseCompact = function (buffer) {
14977 assert.equal(buffer.length, 65, 'Invalid signature length')
14978 var i = buffer.readUInt8(0) - 27
14979
14980 // At most 3 bits
14981 assert.equal(i, i & 7, 'Invalid signature parameter')
14982 var compressed = !!(i & 4)
14983
14984 // Recovery param only
14985 i = i & 3
14986
14987 var r = BigInteger.fromBuffer(buffer.slice(1, 33))
14988 var s = BigInteger.fromBuffer(buffer.slice(33))
14989
14990 return {
14991 compressed: compressed,
14992 i: i,
14993 signature: new ECSignature(r, s)
14994 }
14995 }
14996
14997 ECSignature.fromDER = function (buffer) {
14998 assert.equal(buffer.readUInt8(0), 0x30, 'Not a DER sequence')
14999 assert.equal(buffer.readUInt8(1), buffer.length - 2, 'Invalid sequence length')
15000 assert.equal(buffer.readUInt8(2), 0x02, 'Expected a DER integer')
15001
15002 var rLen = buffer.readUInt8(3)
15003 assert(rLen > 0, 'R length is zero')
15004
15005 var offset = 4 + rLen
15006 assert.equal(buffer.readUInt8(offset), 0x02, 'Expected a DER integer (2)')
15007
15008 var sLen = buffer.readUInt8(offset + 1)
15009 assert(sLen > 0, 'S length is zero')
15010
15011 var rB = buffer.slice(4, offset)
15012 var sB = buffer.slice(offset + 2)
15013 offset += 2 + sLen
15014
15015 if (rLen > 1 && rB.readUInt8(0) === 0x00) {
15016 assert(rB.readUInt8(1) & 0x80, 'R value excessively padded')
15017 }
15018
15019 if (sLen > 1 && sB.readUInt8(0) === 0x00) {
15020 assert(sB.readUInt8(1) & 0x80, 'S value excessively padded')
15021 }
15022
15023 assert.equal(offset, buffer.length, 'Invalid DER encoding')
15024 var r = BigInteger.fromDERInteger(rB)
15025 var s = BigInteger.fromDERInteger(sB)
15026
15027 assert(r.signum() >= 0, 'R value is negative')
15028 assert(s.signum() >= 0, 'S value is negative')
15029
15030 return new ECSignature(r, s)
15031 }
15032
15033 // BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
15034 ECSignature.parseScriptSignature = function (buffer) {
15035 var hashType = buffer.readUInt8(buffer.length - 1)
15036 var hashTypeMod = hashType & ~0x80
15037
15038 assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType)
15039
15040 return {
15041 signature: ECSignature.fromDER(buffer.slice(0, -1)),
15042 hashType: hashType
15043 }
15044 }
15045
15046 ECSignature.prototype.toCompact = function (i, compressed) {
15047 if (compressed) {
15048 i += 4
15049 }
15050
15051 i += 27
15052
15053 var buffer = new Buffer(65)
15054 buffer.writeUInt8(i, 0)
15055
15056 this.r.toBuffer(32).copy(buffer, 1)
15057 this.s.toBuffer(32).copy(buffer, 33)
15058
15059 return buffer
15060 }
15061
15062 ECSignature.prototype.toDER = function () {
15063 var rBa = this.r.toDERInteger()
15064 var sBa = this.s.toDERInteger()
15065
15066 var sequence = []
15067
15068 // INTEGER
15069 sequence.push(0x02, rBa.length)
15070 sequence = sequence.concat(rBa)
15071
15072 // INTEGER
15073 sequence.push(0x02, sBa.length)
15074 sequence = sequence.concat(sBa)
15075
15076 // SEQUENCE
15077 sequence.unshift(0x30, sequence.length)
15078
15079 return new Buffer(sequence)
15080 }
15081
15082 ECSignature.prototype.toScriptSignature = function (hashType) {
15083 var hashTypeMod = hashType & ~0x80
15084 assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType)
15085
15086 var hashTypeBuffer = new Buffer(1)
15087 hashTypeBuffer.writeUInt8(hashType, 0)
15088
15089 return Buffer.concat([this.toDER(), hashTypeBuffer])
15090 }
15091
15092 module.exports = ECSignature
15093
15094 }).call(this,require("buffer").Buffer)
15095 },{"assert":5,"bigi":3,"buffer":7,"typeforce":53}],63:[function(require,module,exports){
15096 (function (Buffer){
15097 var assert = require('assert')
15098 var base58check = require('bs58check')
15099 var bcrypto = require('./crypto')
15100 var createHmac = require('create-hmac')
15101 var typeForce = require('typeforce')
15102 var networks = require('./networks')
15103
15104 var BigInteger = require('bigi')
15105 var ECKey = require('./eckey')
15106 var ECPubKey = require('./ecpubkey')
15107
15108 var ecurve = require('ecurve')
15109 var curve = ecurve.getCurveByName('secp256k1')
15110
15111 function findBIP32NetworkByVersion (version) {
15112 for (var name in networks) {
15113 var network = networks[name]
15114
15115 if (version === network.bip32.private || version === network.bip32.public) {
15116 return network
15117 }
15118 }
15119
15120 assert(false, 'Could not find network for ' + version.toString(16))
15121 }
15122
15123 function HDNode (K, chainCode, network) {
15124 network = network || networks.bitcoin
15125
15126 typeForce('Buffer', chainCode)
15127
15128 assert.equal(chainCode.length, 32, 'Expected chainCode length of 32, got ' + chainCode.length)
15129 assert(network.bip32, 'Unknown BIP32 constants for network')
15130
15131 this.chainCode = chainCode
15132 this.depth = 0
15133 this.index = 0
15134 this.parentFingerprint = 0x00000000
15135 this.network = network
15136
15137 if (K instanceof BigInteger) {
15138 this.privKey = new ECKey(K, true)
15139 this.pubKey = this.privKey.pub
15140 } else if (K instanceof ECKey) {
15141 assert(K.pub.compressed, 'ECKey must be compressed')
15142 this.privKey = K
15143 this.pubKey = K.pub
15144 } else if (K instanceof ECPubKey) {
15145 assert(K.compressed, 'ECPubKey must be compressed')
15146 this.pubKey = K
15147 } else {
15148 this.pubKey = new ECPubKey(K, true)
15149 }
15150 }
15151
15152 HDNode.MASTER_SECRET = new Buffer('Bitcoin seed')
15153 HDNode.HIGHEST_BIT = 0x80000000
15154 HDNode.LENGTH = 78
15155
15156 HDNode.fromSeedBuffer = function (seed, network) {
15157 typeForce('Buffer', seed)
15158
15159 assert(seed.length >= 16, 'Seed should be at least 128 bits')
15160 assert(seed.length <= 64, 'Seed should be at most 512 bits')
15161
15162 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
15163 var IL = I.slice(0, 32)
15164 var IR = I.slice(32)
15165
15166 // In case IL is 0 or >= n, the master key is invalid
15167 // This is handled by `new ECKey` in the HDNode constructor
15168 var pIL = BigInteger.fromBuffer(IL)
15169
15170 return new HDNode(pIL, IR, network)
15171 }
15172
15173 HDNode.fromSeedHex = function (hex, network) {
15174 return HDNode.fromSeedBuffer(new Buffer(hex, 'hex'), network)
15175 }
15176
15177 HDNode.fromBase58 = function (string, network) {
15178 return HDNode.fromBuffer(base58check.decode(string), network, true)
15179 }
15180
15181 // FIXME: remove in 2.x.y
15182 HDNode.fromBuffer = function (buffer, network, __ignoreDeprecation) {
15183 if (!__ignoreDeprecation) {
15184 console.warn('HDNode.fromBuffer() is deprecated for removal in 2.x.y, use fromBase58 instead')
15185 }
15186
15187 assert.strictEqual(buffer.length, HDNode.LENGTH, 'Invalid buffer length')
15188
15189 // 4 byte: version bytes
15190 var version = buffer.readUInt32BE(0)
15191
15192 if (network) {
15193 assert(version === network.bip32.private || version === network.bip32.public, "Network doesn't match")
15194
15195 // auto-detect
15196 } else {
15197 network = findBIP32NetworkByVersion(version)
15198 }
15199
15200 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
15201 var depth = buffer.readUInt8(4)
15202
15203 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
15204 var parentFingerprint = buffer.readUInt32BE(5)
15205 if (depth === 0) {
15206 assert.strictEqual(parentFingerprint, 0x00000000, 'Invalid parent fingerprint')
15207 }
15208
15209 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
15210 // This is encoded in MSB order. (0x00000000 if master key)
15211 var index = buffer.readUInt32BE(9)
15212 assert(depth > 0 || index === 0, 'Invalid index')
15213
15214 // 32 bytes: the chain code
15215 var chainCode = buffer.slice(13, 45)
15216 var data, hd
15217
15218 // 33 bytes: private key data (0x00 + k)
15219 if (version === network.bip32.private) {
15220 assert.strictEqual(buffer.readUInt8(45), 0x00, 'Invalid private key')
15221 data = buffer.slice(46, 78)
15222 var d = BigInteger.fromBuffer(data)
15223 hd = new HDNode(d, chainCode, network)
15224
15225 // 33 bytes: public key data (0x02 + X or 0x03 + X)
15226 } else {
15227 data = buffer.slice(45, 78)
15228 var Q = ecurve.Point.decodeFrom(curve, data)
15229 assert.equal(Q.compressed, true, 'Invalid public key')
15230
15231 // Verify that the X coordinate in the public point corresponds to a point on the curve.
15232 // If not, the extended public key is invalid.
15233 curve.validate(Q)
15234
15235 hd = new HDNode(Q, chainCode, network)
15236 }
15237
15238 hd.depth = depth
15239 hd.index = index
15240 hd.parentFingerprint = parentFingerprint
15241
15242 return hd
15243 }
15244
15245 // FIXME: remove in 2.x.y
15246 HDNode.fromHex = function (hex, network) {
15247 return HDNode.fromBuffer(new Buffer(hex, 'hex'), network)
15248 }
15249
15250 HDNode.prototype.getIdentifier = function () {
15251 return bcrypto.hash160(this.pubKey.toBuffer())
15252 }
15253
15254 HDNode.prototype.getFingerprint = function () {
15255 return this.getIdentifier().slice(0, 4)
15256 }
15257
15258 HDNode.prototype.getAddress = function () {
15259 return this.pubKey.getAddress(this.network)
15260 }
15261
15262 HDNode.prototype.neutered = function () {
15263 var neutered = new HDNode(this.pubKey.Q, this.chainCode, this.network)
15264 neutered.depth = this.depth
15265 neutered.index = this.index
15266 neutered.parentFingerprint = this.parentFingerprint
15267
15268 return neutered
15269 }
15270
15271 HDNode.prototype.toBase58 = function (isPrivate) {
15272 return base58check.encode(this.toBuffer(isPrivate, true))
15273 }
15274
15275 // FIXME: remove in 2.x.y
15276 HDNode.prototype.toBuffer = function (isPrivate, __ignoreDeprecation) {
15277 if (isPrivate === undefined) {
15278 isPrivate = !!this.privKey
15279
15280 // FIXME: remove in 2.x.y
15281 } else {
15282 console.warn('isPrivate flag is deprecated, please use the .neutered() method instead')
15283 }
15284
15285 if (!__ignoreDeprecation) {
15286 console.warn('HDNode.toBuffer() is deprecated for removal in 2.x.y, use toBase58 instead')
15287 }
15288
15289 // Version
15290 var version = isPrivate ? this.network.bip32.private : this.network.bip32.public
15291 var buffer = new Buffer(HDNode.LENGTH)
15292
15293 // 4 bytes: version bytes
15294 buffer.writeUInt32BE(version, 0)
15295
15296 // Depth
15297 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
15298 buffer.writeUInt8(this.depth, 4)
15299
15300 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
15301 buffer.writeUInt32BE(this.parentFingerprint, 5)
15302
15303 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
15304 // This is encoded in Big endian. (0x00000000 if master key)
15305 buffer.writeUInt32BE(this.index, 9)
15306
15307 // 32 bytes: the chain code
15308 this.chainCode.copy(buffer, 13)
15309
15310 // 33 bytes: the public key or private key data
15311 if (isPrivate) {
15312 // FIXME: remove in 2.x.y
15313 assert(this.privKey, 'Missing private key')
15314
15315 // 0x00 + k for private keys
15316 buffer.writeUInt8(0, 45)
15317 this.privKey.d.toBuffer(32).copy(buffer, 46)
15318 } else {
15319 // X9.62 encoding for public keys
15320 this.pubKey.toBuffer().copy(buffer, 45)
15321 }
15322
15323 return buffer
15324 }
15325
15326 // FIXME: remove in 2.x.y
15327 HDNode.prototype.toHex = function (isPrivate) {
15328 return this.toBuffer(isPrivate).toString('hex')
15329 }
15330
15331 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions
15332 HDNode.prototype.derive = function (index) {
15333 var isHardened = index >= HDNode.HIGHEST_BIT
15334 var indexBuffer = new Buffer(4)
15335 indexBuffer.writeUInt32BE(index, 0)
15336
15337 var data
15338
15339 // Hardened child
15340 if (isHardened) {
15341 assert(this.privKey, 'Could not derive hardened child key')
15342
15343 // data = 0x00 || ser256(kpar) || ser32(index)
15344 data = Buffer.concat([
15345 this.privKey.d.toBuffer(33),
15346 indexBuffer
15347 ])
15348
15349 // Normal child
15350 } else {
15351 // data = serP(point(kpar)) || ser32(index)
15352 // = serP(Kpar) || ser32(index)
15353 data = Buffer.concat([
15354 this.pubKey.toBuffer(),
15355 indexBuffer
15356 ])
15357 }
15358
15359 var I = createHmac('sha512', this.chainCode).update(data).digest()
15360 var IL = I.slice(0, 32)
15361 var IR = I.slice(32)
15362
15363 var pIL = BigInteger.fromBuffer(IL)
15364
15365 // In case parse256(IL) >= n, proceed with the next value for i
15366 if (pIL.compareTo(curve.n) >= 0) {
15367 return this.derive(index + 1)
15368 }
15369
15370 // Private parent key -> private child key
15371 var hd
15372 if (this.privKey) {
15373 // ki = parse256(IL) + kpar (mod n)
15374 var ki = pIL.add(this.privKey.d).mod(curve.n)
15375
15376 // In case ki == 0, proceed with the next value for i
15377 if (ki.signum() === 0) {
15378 return this.derive(index + 1)
15379 }
15380
15381 hd = new HDNode(ki, IR, this.network)
15382
15383 // Public parent key -> public child key
15384 } else {
15385 // Ki = point(parse256(IL)) + Kpar
15386 // = G*IL + Kpar
15387 var Ki = curve.G.multiply(pIL).add(this.pubKey.Q)
15388
15389 // In case Ki is the point at infinity, proceed with the next value for i
15390 if (curve.isInfinity(Ki)) {
15391 return this.derive(index + 1)
15392 }
15393
15394 hd = new HDNode(Ki, IR, this.network)
15395 }
15396
15397 hd.depth = this.depth + 1
15398 hd.index = index
15399 hd.parentFingerprint = this.getFingerprint().readUInt32BE(0)
15400
15401 return hd
15402 }
15403
15404 HDNode.prototype.deriveHardened = function (index) {
15405 // Only derives hardened private keys by default
15406 return this.derive(index + HDNode.HIGHEST_BIT)
15407 }
15408
15409 HDNode.prototype.toString = HDNode.prototype.toBase58
15410
15411 module.exports = HDNode
15412
15413 }).call(this,require("buffer").Buffer)
15414 },{"./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){
15415 module.exports = {
15416 Address: require('./address'),
15417 base58check: require('./base58check'),
15418 Block: require('./block'),
15419 bufferutils: require('./bufferutils'),
15420 crypto: require('./crypto'),
15421 ecdsa: require('./ecdsa'),
15422 ECKey: require('./eckey'),
15423 ECPubKey: require('./ecpubkey'),
15424 ECSignature: require('./ecsignature'),
15425 Message: require('./message'),
15426 opcodes: require('./opcodes'),
15427 HDNode: require('./hdnode'),
15428 Script: require('./script'),
15429 scripts: require('./scripts'),
15430 Transaction: require('./transaction'),
15431 TransactionBuilder: require('./transaction_builder'),
15432 networks: require('./networks'),
15433 Wallet: require('./wallet')
15434 }
15435
15436 },{"./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){
15437 (function (Buffer){
15438 var bufferutils = require('./bufferutils')
15439 var crypto = require('./crypto')
15440 var ecdsa = require('./ecdsa')
15441 var networks = require('./networks')
15442
15443 var BigInteger = require('bigi')
15444 var ECPubKey = require('./ecpubkey')
15445 var ECSignature = require('./ecsignature')
15446
15447 var ecurve = require('ecurve')
15448 var ecparams = ecurve.getCurveByName('secp256k1')
15449
15450 function magicHash (message, network) {
15451 var magicPrefix = new Buffer(network.magicPrefix)
15452 var messageBuffer = new Buffer(message)
15453 var lengthBuffer = bufferutils.varIntBuffer(messageBuffer.length)
15454
15455 var buffer = Buffer.concat([magicPrefix, lengthBuffer, messageBuffer])
15456 return crypto.hash256(buffer)
15457 }
15458
15459 function sign (privKey, message, network) {
15460 network = network || networks.bitcoin
15461
15462 var hash = magicHash(message, network)
15463 var signature = privKey.sign(hash)
15464 var e = BigInteger.fromBuffer(hash)
15465 var i = ecdsa.calcPubKeyRecoveryParam(ecparams, e, signature, privKey.pub.Q)
15466
15467 return signature.toCompact(i, privKey.pub.compressed)
15468 }
15469
15470 // TODO: network could be implied from address
15471 function verify (address, signature, message, network) {
15472 if (!Buffer.isBuffer(signature)) {
15473 signature = new Buffer(signature, 'base64')
15474 }
15475
15476 network = network || networks.bitcoin
15477
15478 var hash = magicHash(message, network)
15479 var parsed = ECSignature.parseCompact(signature)
15480 var e = BigInteger.fromBuffer(hash)
15481 var Q = ecdsa.recoverPubKey(ecparams, e, parsed.signature, parsed.i)
15482
15483 var pubKey = new ECPubKey(Q, parsed.compressed)
15484 return pubKey.getAddress(network).toString() === address.toString()
15485 }
15486
15487 module.exports = {
15488 magicHash: magicHash,
15489 sign: sign,
15490 verify: verify
15491 }
15492
15493 }).call(this,require("buffer").Buffer)
15494 },{"./bufferutils":57,"./crypto":58,"./ecdsa":59,"./ecpubkey":61,"./ecsignature":62,"./networks":66,"bigi":3,"buffer":7,"ecurve":49}],66:[function(require,module,exports){
15495 // https://en.bitcoin.it/wiki/List_of_address_prefixes
15496 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
15497
15498 var networks = {
15499 bitcoin: {
15500 magicPrefix: '\x18Bitcoin Signed Message:\n',
15501 bip32: {
15502 public: 0x0488b21e,
15503 private: 0x0488ade4
15504 },
15505 pubKeyHash: 0x00,
15506 scriptHash: 0x05,
15507 wif: 0x80,
15508 dustThreshold: 546, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/core.h#L151-L162
15509 feePerKb: 10000, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/main.cpp#L53
15510 estimateFee: estimateFee('bitcoin')
15511 },
15512 testnet: {
15513 magicPrefix: '\x18Bitcoin Signed Message:\n',
15514 bip32: {
15515 public: 0x043587cf,
15516 private: 0x04358394
15517 },
15518 pubKeyHash: 0x6f,
15519 scriptHash: 0xc4,
15520 wif: 0xef,
15521 dustThreshold: 546,
15522 feePerKb: 10000,
15523 estimateFee: estimateFee('testnet')
15524 },
15525 litecoin: {
15526 magicPrefix: '\x19Litecoin Signed Message:\n',
15527 bip32: {
15528 public: 0x019da462,
15529 private: 0x019d9cfe
15530 },
15531 pubKeyHash: 0x30,
15532 scriptHash: 0x05,
15533 wif: 0xb0,
15534 dustThreshold: 0, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L360-L365
15535 dustSoftThreshold: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.h#L53
15536 feePerKb: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L56
15537 estimateFee: estimateFee('litecoin')
15538 },
15539 dogecoin: {
15540 magicPrefix: '\x19Dogecoin Signed Message:\n',
15541 bip32: {
15542 public: 0x02facafd,
15543 private: 0x02fac398
15544 },
15545 pubKeyHash: 0x1e,
15546 scriptHash: 0x16,
15547 wif: 0x9e,
15548 dustThreshold: 0, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/core.h#L155-L160
15549 dustSoftThreshold: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.h#L62
15550 feePerKb: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.cpp#L58
15551 estimateFee: estimateFee('dogecoin')
15552 },
15553 viacoin: {
15554 magicPrefix: '\x18Viacoin Signed Message:\n',
15555 bip32: {
15556 public: 0x0488b21e,
15557 private: 0x0488ade4
15558 },
15559 pubKeyHash: 0x47,
15560 scriptHash: 0x21,
15561 wif: 0xc7,
15562 dustThreshold: 560,
15563 dustSoftThreshold: 100000,
15564 feePerKb: 100000, //
15565 estimateFee: estimateFee('viacoin')
15566 },
15567 viacointestnet: {
15568 magicPrefix: '\x18Viacoin Signed Message:\n',
15569 bip32: {
15570 public: 0x043587cf,
15571 private: 0x04358394
15572 },
15573 pubKeyHash: 0x7f,
15574 scriptHash: 0xc4,
15575 wif: 0xff,
15576 dustThreshold: 560,
15577 dustSoftThreshold: 100000,
15578 feePerKb: 100000,
15579 estimateFee: estimateFee('viacointestnet')
15580 },
15581 gamerscoin: {
15582 magicPrefix: '\x19Gamerscoin Signed Message:\n',
15583 bip32: {
15584 public: 0x019da462,
15585 private: 0x019d9cfe
15586 },
15587 pubKeyHash: 0x26,
15588 scriptHash: 0x05,
15589 wif: 0xA6,
15590 dustThreshold: 0, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L358-L363
15591 dustSoftThreshold: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L51
15592 feePerKb: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L54
15593 estimateFee: estimateFee('gamerscoin')
15594 },
15595 jumbucks: {
15596 magicPrefix: '\x19Jumbucks Signed Message:\n',
15597 bip32: {
15598 public: 0x037a689a,
15599 private: 0x037a6460
15600 },
15601 pubKeyHash: 0x2b,
15602 scriptHash: 0x05,
15603 wif: 0xab,
15604 dustThreshold: 0,
15605 dustSoftThreshold: 10000,
15606 feePerKb: 10000,
15607 estimateFee: estimateFee('jumbucks')
15608 },
15609 zetacoin: {
15610 magicPrefix: '\x18Zetacoin Signed Message:\n',
15611 bip32: {
15612 public: 0x0488b21e,
15613 private: 0x0488ade4
15614 },
15615 pubKeyHash: 0x50,
15616 scriptHash: 0x09,
15617 wif: 0xe0,
15618 dustThreshold: 546, // https://github.com/zetacoin/zetacoin/blob/master/src/core.h#L159
15619 feePerKb: 10000, // https://github.com/zetacoin/zetacoin/blob/master/src/main.cpp#L54
15620 estimateFee: estimateFee('zetacoin')
15621 }
15622 }
15623
15624 function estimateFee (type) {
15625 return function (tx) {
15626 var network = networks[type]
15627 var baseFee = network.feePerKb
15628 var byteSize = tx.toBuffer().length
15629
15630 var fee = baseFee * Math.ceil(byteSize / 1000)
15631 if (network.dustSoftThreshold === undefined) return fee
15632
15633 tx.outs.forEach(function (e) {
15634 if (e.value < network.dustSoftThreshold) {
15635 fee += baseFee
15636 }
15637 })
15638
15639 return fee
15640 }
15641 }
15642
15643 module.exports = networks
15644
15645 },{}],67:[function(require,module,exports){
15646 module.exports = {
15647 // push value
15648 OP_FALSE: 0,
15649 OP_0: 0,
15650 OP_PUSHDATA1: 76,
15651 OP_PUSHDATA2: 77,
15652 OP_PUSHDATA4: 78,
15653 OP_1NEGATE: 79,
15654 OP_RESERVED: 80,
15655 OP_1: 81,
15656 OP_TRUE: 81,
15657 OP_2: 82,
15658 OP_3: 83,
15659 OP_4: 84,
15660 OP_5: 85,
15661 OP_6: 86,
15662 OP_7: 87,
15663 OP_8: 88,
15664 OP_9: 89,
15665 OP_10: 90,
15666 OP_11: 91,
15667 OP_12: 92,
15668 OP_13: 93,
15669 OP_14: 94,
15670 OP_15: 95,
15671 OP_16: 96,
15672
15673 // control
15674 OP_NOP: 97,
15675 OP_VER: 98,
15676 OP_IF: 99,
15677 OP_NOTIF: 100,
15678 OP_VERIF: 101,
15679 OP_VERNOTIF: 102,
15680 OP_ELSE: 103,
15681 OP_ENDIF: 104,
15682 OP_VERIFY: 105,
15683 OP_RETURN: 106,
15684
15685 // stack ops
15686 OP_TOALTSTACK: 107,
15687 OP_FROMALTSTACK: 108,
15688 OP_2DROP: 109,
15689 OP_2DUP: 110,
15690 OP_3DUP: 111,
15691 OP_2OVER: 112,
15692 OP_2ROT: 113,
15693 OP_2SWAP: 114,
15694 OP_IFDUP: 115,
15695 OP_DEPTH: 116,
15696 OP_DROP: 117,
15697 OP_DUP: 118,
15698 OP_NIP: 119,
15699 OP_OVER: 120,
15700 OP_PICK: 121,
15701 OP_ROLL: 122,
15702 OP_ROT: 123,
15703 OP_SWAP: 124,
15704 OP_TUCK: 125,
15705
15706 // splice ops
15707 OP_CAT: 126,
15708 OP_SUBSTR: 127,
15709 OP_LEFT: 128,
15710 OP_RIGHT: 129,
15711 OP_SIZE: 130,
15712
15713 // bit logic
15714 OP_INVERT: 131,
15715 OP_AND: 132,
15716 OP_OR: 133,
15717 OP_XOR: 134,
15718 OP_EQUAL: 135,
15719 OP_EQUALVERIFY: 136,
15720 OP_RESERVED1: 137,
15721 OP_RESERVED2: 138,
15722
15723 // numeric
15724 OP_1ADD: 139,
15725 OP_1SUB: 140,
15726 OP_2MUL: 141,
15727 OP_2DIV: 142,
15728 OP_NEGATE: 143,
15729 OP_ABS: 144,
15730 OP_NOT: 145,
15731 OP_0NOTEQUAL: 146,
15732
15733 OP_ADD: 147,
15734 OP_SUB: 148,
15735 OP_MUL: 149,
15736 OP_DIV: 150,
15737 OP_MOD: 151,
15738 OP_LSHIFT: 152,
15739 OP_RSHIFT: 153,
15740
15741 OP_BOOLAND: 154,
15742 OP_BOOLOR: 155,
15743 OP_NUMEQUAL: 156,
15744 OP_NUMEQUALVERIFY: 157,
15745 OP_NUMNOTEQUAL: 158,
15746 OP_LESSTHAN: 159,
15747 OP_GREATERTHAN: 160,
15748 OP_LESSTHANOREQUAL: 161,
15749 OP_GREATERTHANOREQUAL: 162,
15750 OP_MIN: 163,
15751 OP_MAX: 164,
15752
15753 OP_WITHIN: 165,
15754
15755 // crypto
15756 OP_RIPEMD160: 166,
15757 OP_SHA1: 167,
15758 OP_SHA256: 168,
15759 OP_HASH160: 169,
15760 OP_HASH256: 170,
15761 OP_CODESEPARATOR: 171,
15762 OP_CHECKSIG: 172,
15763 OP_CHECKSIGVERIFY: 173,
15764 OP_CHECKMULTISIG: 174,
15765 OP_CHECKMULTISIGVERIFY: 175,
15766
15767 // expansion
15768 OP_NOP1: 176,
15769 OP_NOP2: 177,
15770 OP_NOP3: 178,
15771 OP_NOP4: 179,
15772 OP_NOP5: 180,
15773 OP_NOP6: 181,
15774 OP_NOP7: 182,
15775 OP_NOP8: 183,
15776 OP_NOP9: 184,
15777 OP_NOP10: 185,
15778
15779 // template matching params
15780 OP_PUBKEYHASH: 253,
15781 OP_PUBKEY: 254,
15782 OP_INVALIDOPCODE: 255
15783 }
15784
15785 },{}],68:[function(require,module,exports){
15786 (function (Buffer){
15787 var assert = require('assert')
15788 var bufferutils = require('./bufferutils')
15789 var crypto = require('./crypto')
15790 var typeForce = require('typeforce')
15791 var opcodes = require('./opcodes')
15792
15793 function Script (buffer, chunks) {
15794 typeForce('Buffer', buffer)
15795 typeForce('Array', chunks)
15796
15797 this.buffer = buffer
15798 this.chunks = chunks
15799 }
15800
15801 Script.fromASM = function (asm) {
15802 var strChunks = asm.split(' ')
15803 var chunks = strChunks.map(function (strChunk) {
15804 // opcode
15805 if (strChunk in opcodes) {
15806 return opcodes[strChunk]
15807
15808 // data chunk
15809 } else {
15810 return new Buffer(strChunk, 'hex')
15811 }
15812 })
15813
15814 return Script.fromChunks(chunks)
15815 }
15816
15817 Script.fromBuffer = function (buffer) {
15818 var chunks = []
15819 var i = 0
15820
15821 while (i < buffer.length) {
15822 var opcode = buffer.readUInt8(i)
15823
15824 // data chunk
15825 if ((opcode > opcodes.OP_0) && (opcode <= opcodes.OP_PUSHDATA4)) {
15826 var d = bufferutils.readPushDataInt(buffer, i)
15827
15828 // did reading a pushDataInt fail? return non-chunked script
15829 if (d === null) return new Script(buffer, [])
15830 i += d.size
15831
15832 // attempt to read too much data?
15833 if (i + d.number > buffer.length) return new Script(buffer, [])
15834
15835 var data = buffer.slice(i, i + d.number)
15836 i += d.number
15837
15838 chunks.push(data)
15839
15840 // opcode
15841 } else {
15842 chunks.push(opcode)
15843
15844 i += 1
15845 }
15846 }
15847
15848 return new Script(buffer, chunks)
15849 }
15850
15851 Script.fromChunks = function (chunks) {
15852 typeForce('Array', chunks)
15853
15854 var bufferSize = chunks.reduce(function (accum, chunk) {
15855 // data chunk
15856 if (Buffer.isBuffer(chunk)) {
15857 return accum + bufferutils.pushDataSize(chunk.length) + chunk.length
15858 }
15859
15860 // opcode
15861 return accum + 1
15862 }, 0.0)
15863
15864 var buffer = new Buffer(bufferSize)
15865 var offset = 0
15866
15867 chunks.forEach(function (chunk) {
15868 // data chunk
15869 if (Buffer.isBuffer(chunk)) {
15870 offset += bufferutils.writePushDataInt(buffer, chunk.length, offset)
15871
15872 chunk.copy(buffer, offset)
15873 offset += chunk.length
15874
15875 // opcode
15876 } else {
15877 buffer.writeUInt8(chunk, offset)
15878 offset += 1
15879 }
15880 })
15881
15882 assert.equal(offset, buffer.length, 'Could not decode chunks')
15883 return new Script(buffer, chunks)
15884 }
15885
15886 Script.fromHex = function (hex) {
15887 return Script.fromBuffer(new Buffer(hex, 'hex'))
15888 }
15889
15890 Script.EMPTY = Script.fromChunks([])
15891
15892 Script.prototype.getHash = function () {
15893 return crypto.hash160(this.buffer)
15894 }
15895
15896 // FIXME: doesn't work for data chunks, maybe time to use buffertools.compare...
15897 Script.prototype.without = function (needle) {
15898 return Script.fromChunks(this.chunks.filter(function (op) {
15899 return op !== needle
15900 }))
15901 }
15902
15903 var reverseOps = []
15904 for (var op in opcodes) {
15905 var code = opcodes[op]
15906 reverseOps[code] = op
15907 }
15908
15909 Script.prototype.toASM = function () {
15910 return this.chunks.map(function (chunk) {
15911 // data chunk
15912 if (Buffer.isBuffer(chunk)) {
15913 return chunk.toString('hex')
15914
15915 // opcode
15916 } else {
15917 return reverseOps[chunk]
15918 }
15919 }).join(' ')
15920 }
15921
15922 Script.prototype.toBuffer = function () {
15923 return this.buffer
15924 }
15925
15926 Script.prototype.toHex = function () {
15927 return this.toBuffer().toString('hex')
15928 }
15929
15930 module.exports = Script
15931
15932 }).call(this,require("buffer").Buffer)
15933 },{"./bufferutils":57,"./crypto":58,"./opcodes":67,"assert":5,"buffer":7,"typeforce":53}],69:[function(require,module,exports){
15934 (function (Buffer){
15935 var assert = require('assert')
15936 var ops = require('./opcodes')
15937 var typeForce = require('typeforce')
15938
15939 var ecurve = require('ecurve')
15940 var curve = ecurve.getCurveByName('secp256k1')
15941
15942 var ECSignature = require('./ecsignature')
15943 var Script = require('./script')
15944
15945 function isCanonicalPubKey (buffer) {
15946 if (!Buffer.isBuffer(buffer)) return false
15947
15948 try {
15949 ecurve.Point.decodeFrom(curve, buffer)
15950 } catch (e) {
15951 if (!(e.message.match(/Invalid sequence (length|tag)/)))
15952 throw e
15953
15954 return false
15955 }
15956
15957 return true
15958 }
15959
15960 function isCanonicalSignature (buffer) {
15961 if (!Buffer.isBuffer(buffer)) return false
15962
15963 try {
15964 ECSignature.parseScriptSignature(buffer)
15965 } catch (e) {
15966 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/))) {
15967 throw e
15968 }
15969
15970 return false
15971 }
15972
15973 return true
15974 }
15975
15976 function isPubKeyHashInput (script) {
15977 return script.chunks.length === 2 &&
15978 isCanonicalSignature(script.chunks[0]) &&
15979 isCanonicalPubKey(script.chunks[1])
15980 }
15981
15982 function isPubKeyHashOutput (script) {
15983 return script.chunks.length === 5 &&
15984 script.chunks[0] === ops.OP_DUP &&
15985 script.chunks[1] === ops.OP_HASH160 &&
15986 Buffer.isBuffer(script.chunks[2]) &&
15987 script.chunks[2].length === 20 &&
15988 script.chunks[3] === ops.OP_EQUALVERIFY &&
15989 script.chunks[4] === ops.OP_CHECKSIG
15990 }
15991
15992 function isPubKeyInput (script) {
15993 return script.chunks.length === 1 &&
15994 isCanonicalSignature(script.chunks[0])
15995 }
15996
15997 function isPubKeyOutput (script) {
15998 return script.chunks.length === 2 &&
15999 isCanonicalPubKey(script.chunks[0]) &&
16000 script.chunks[1] === ops.OP_CHECKSIG
16001 }
16002
16003 function isScriptHashInput (script, allowIncomplete) {
16004 if (script.chunks.length < 2) return false
16005
16006 var lastChunk = script.chunks[script.chunks.length - 1]
16007 if (!Buffer.isBuffer(lastChunk)) return false
16008
16009 var scriptSig = Script.fromChunks(script.chunks.slice(0, -1))
16010 var redeemScript = Script.fromBuffer(lastChunk)
16011
16012 // is redeemScript a valid script?
16013 if (redeemScript.chunks.length === 0) return false
16014
16015 return classifyInput(scriptSig, allowIncomplete) === classifyOutput(redeemScript)
16016 }
16017
16018 function isScriptHashOutput (script) {
16019 return script.chunks.length === 3 &&
16020 script.chunks[0] === ops.OP_HASH160 &&
16021 Buffer.isBuffer(script.chunks[1]) &&
16022 script.chunks[1].length === 20 &&
16023 script.chunks[2] === ops.OP_EQUAL
16024 }
16025
16026 // allowIncomplete is to account for combining signatures
16027 // See https://github.com/bitcoin/bitcoin/blob/f425050546644a36b0b8e0eb2f6934a3e0f6f80f/src/script/sign.cpp#L195-L197
16028 function isMultisigInput (script, allowIncomplete) {
16029 if (script.chunks.length < 2) return false
16030 if (script.chunks[0] !== ops.OP_0) return false
16031
16032 if (allowIncomplete) {
16033 return script.chunks.slice(1).every(function (chunk) {
16034 return chunk === ops.OP_0 || isCanonicalSignature(chunk)
16035 })
16036 }
16037
16038 return script.chunks.slice(1).every(isCanonicalSignature)
16039 }
16040
16041 function isMultisigOutput (script) {
16042 if (script.chunks.length < 4) return false
16043 if (script.chunks[script.chunks.length - 1] !== ops.OP_CHECKMULTISIG) return false
16044
16045 var mOp = script.chunks[0]
16046 if (mOp === ops.OP_0) return false
16047 if (mOp < ops.OP_1) return false
16048 if (mOp > ops.OP_16) return false
16049
16050 var nOp = script.chunks[script.chunks.length - 2]
16051 if (nOp === ops.OP_0) return false
16052 if (nOp < ops.OP_1) return false
16053 if (nOp > ops.OP_16) return false
16054
16055 var m = mOp - (ops.OP_1 - 1)
16056 var n = nOp - (ops.OP_1 - 1)
16057 if (n < m) return false
16058
16059 var pubKeys = script.chunks.slice(1, -2)
16060 if (n < pubKeys.length) return false
16061
16062 return pubKeys.every(isCanonicalPubKey)
16063 }
16064
16065 function isNullDataOutput (script) {
16066 return script.chunks[0] === ops.OP_RETURN
16067 }
16068
16069 function classifyOutput (script) {
16070 typeForce('Script', script)
16071
16072 if (isPubKeyHashOutput(script)) {
16073 return 'pubkeyhash'
16074 } else if (isScriptHashOutput(script)) {
16075 return 'scripthash'
16076 } else if (isMultisigOutput(script)) {
16077 return 'multisig'
16078 } else if (isPubKeyOutput(script)) {
16079 return 'pubkey'
16080 } else if (isNullDataOutput(script)) {
16081 return 'nulldata'
16082 }
16083
16084 return 'nonstandard'
16085 }
16086
16087 function classifyInput (script, allowIncomplete) {
16088 typeForce('Script', script)
16089
16090 if (isPubKeyHashInput(script)) {
16091 return 'pubkeyhash'
16092 } else if (isMultisigInput(script, allowIncomplete)) {
16093 return 'multisig'
16094 } else if (isScriptHashInput(script, allowIncomplete)) {
16095 return 'scripthash'
16096 } else if (isPubKeyInput(script)) {
16097 return 'pubkey'
16098 }
16099
16100 return 'nonstandard'
16101 }
16102
16103 // Standard Script Templates
16104 // {pubKey} OP_CHECKSIG
16105 function pubKeyOutput (pubKey) {
16106 return Script.fromChunks([
16107 pubKey.toBuffer(),
16108 ops.OP_CHECKSIG
16109 ])
16110 }
16111
16112 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
16113 function pubKeyHashOutput (hash) {
16114 typeForce('Buffer', hash)
16115
16116 return Script.fromChunks([
16117 ops.OP_DUP,
16118 ops.OP_HASH160,
16119 hash,
16120 ops.OP_EQUALVERIFY,
16121 ops.OP_CHECKSIG
16122 ])
16123 }
16124
16125 // OP_HASH160 {scriptHash} OP_EQUAL
16126 function scriptHashOutput (hash) {
16127 typeForce('Buffer', hash)
16128
16129 return Script.fromChunks([
16130 ops.OP_HASH160,
16131 hash,
16132 ops.OP_EQUAL
16133 ])
16134 }
16135
16136 // m [pubKeys ...] n OP_CHECKMULTISIG
16137 function multisigOutput (m, pubKeys) {
16138 typeForce(['ECPubKey'], pubKeys)
16139
16140 assert(pubKeys.length >= m, 'Not enough pubKeys provided')
16141
16142 var pubKeyBuffers = pubKeys.map(function (pubKey) {
16143 return pubKey.toBuffer()
16144 })
16145 var n = pubKeys.length
16146
16147 return Script.fromChunks([].concat(
16148 (ops.OP_1 - 1) + m,
16149 pubKeyBuffers,
16150 (ops.OP_1 - 1) + n,
16151 ops.OP_CHECKMULTISIG
16152 ))
16153 }
16154
16155 // {signature}
16156 function pubKeyInput (signature) {
16157 typeForce('Buffer', signature)
16158
16159 return Script.fromChunks([signature])
16160 }
16161
16162 // {signature} {pubKey}
16163 function pubKeyHashInput (signature, pubKey) {
16164 typeForce('Buffer', signature)
16165
16166 return Script.fromChunks([signature, pubKey.toBuffer()])
16167 }
16168
16169 // <scriptSig> {serialized scriptPubKey script}
16170 function scriptHashInput (scriptSig, scriptPubKey) {
16171 return Script.fromChunks([].concat(
16172 scriptSig.chunks,
16173 scriptPubKey.toBuffer()
16174 ))
16175 }
16176
16177 // OP_0 [signatures ...]
16178 function multisigInput (signatures, scriptPubKey) {
16179 if (scriptPubKey) {
16180 assert(isMultisigOutput(scriptPubKey))
16181
16182 var mOp = scriptPubKey.chunks[0]
16183 var nOp = scriptPubKey.chunks[scriptPubKey.chunks.length - 2]
16184 var m = mOp - (ops.OP_1 - 1)
16185 var n = nOp - (ops.OP_1 - 1)
16186
16187 assert(signatures.length >= m, 'Not enough signatures provided')
16188 assert(signatures.length <= n, 'Too many signatures provided')
16189 }
16190
16191 return Script.fromChunks([].concat(ops.OP_0, signatures))
16192 }
16193
16194 function nullDataOutput (data) {
16195 return Script.fromChunks([ops.OP_RETURN, data])
16196 }
16197
16198 module.exports = {
16199 isCanonicalPubKey: isCanonicalPubKey,
16200 isCanonicalSignature: isCanonicalSignature,
16201 isPubKeyHashInput: isPubKeyHashInput,
16202 isPubKeyHashOutput: isPubKeyHashOutput,
16203 isPubKeyInput: isPubKeyInput,
16204 isPubKeyOutput: isPubKeyOutput,
16205 isScriptHashInput: isScriptHashInput,
16206 isScriptHashOutput: isScriptHashOutput,
16207 isMultisigInput: isMultisigInput,
16208 isMultisigOutput: isMultisigOutput,
16209 isNullDataOutput: isNullDataOutput,
16210 classifyOutput: classifyOutput,
16211 classifyInput: classifyInput,
16212 pubKeyOutput: pubKeyOutput,
16213 pubKeyHashOutput: pubKeyHashOutput,
16214 scriptHashOutput: scriptHashOutput,
16215 multisigOutput: multisigOutput,
16216 pubKeyInput: pubKeyInput,
16217 pubKeyHashInput: pubKeyHashInput,
16218 scriptHashInput: scriptHashInput,
16219 multisigInput: multisigInput,
16220 dataOutput: function (data) {
16221 console.warn('dataOutput is deprecated, use nullDataOutput by 2.0.0')
16222 return nullDataOutput(data)
16223 },
16224 nullDataOutput: nullDataOutput
16225 }
16226
16227 }).call(this,require("buffer").Buffer)
16228 },{"./ecsignature":62,"./opcodes":67,"./script":68,"assert":5,"buffer":7,"ecurve":49,"typeforce":53}],70:[function(require,module,exports){
16229 (function (Buffer){
16230 var assert = require('assert')
16231 var bufferutils = require('./bufferutils')
16232 var crypto = require('./crypto')
16233 var typeForce = require('typeforce')
16234 var opcodes = require('./opcodes')
16235 var scripts = require('./scripts')
16236
16237 var Address = require('./address')
16238 var ECSignature = require('./ecsignature')
16239 var Script = require('./script')
16240
16241 function Transaction () {
16242 this.version = 1
16243 this.locktime = 0
16244 this.ins = []
16245 this.outs = []
16246 }
16247
16248 Transaction.DEFAULT_SEQUENCE = 0xffffffff
16249 Transaction.SIGHASH_ALL = 0x01
16250 Transaction.SIGHASH_NONE = 0x02
16251 Transaction.SIGHASH_SINGLE = 0x03
16252 Transaction.SIGHASH_ANYONECANPAY = 0x80
16253
16254 Transaction.fromBuffer = function (buffer, __disableAssert) {
16255 var offset = 0
16256 function readSlice (n) {
16257 offset += n
16258 return buffer.slice(offset - n, offset)
16259 }
16260
16261 function readUInt32 () {
16262 var i = buffer.readUInt32LE(offset)
16263 offset += 4
16264 return i
16265 }
16266
16267 function readUInt64 () {
16268 var i = bufferutils.readUInt64LE(buffer, offset)
16269 offset += 8
16270 return i
16271 }
16272
16273 function readVarInt () {
16274 var vi = bufferutils.readVarInt(buffer, offset)
16275 offset += vi.size
16276 return vi.number
16277 }
16278
16279 function readScript () {
16280 return Script.fromBuffer(readSlice(readVarInt()))
16281 }
16282
16283 function readGenerationScript () {
16284 return new Script(readSlice(readVarInt()), [])
16285 }
16286
16287 var tx = new Transaction()
16288 tx.version = readUInt32()
16289
16290 var vinLen = readVarInt()
16291 for (var i = 0; i < vinLen; ++i) {
16292 var hash = readSlice(32)
16293
16294 if (Transaction.isCoinbaseHash(hash)) {
16295 tx.ins.push({
16296 hash: hash,
16297 index: readUInt32(),
16298 script: readGenerationScript(),
16299 sequence: readUInt32()
16300 })
16301 } else {
16302 tx.ins.push({
16303 hash: hash,
16304 index: readUInt32(),
16305 script: readScript(),
16306 sequence: readUInt32()
16307 })
16308 }
16309 }
16310
16311 var voutLen = readVarInt()
16312 for (i = 0; i < voutLen; ++i) {
16313 tx.outs.push({
16314 value: readUInt64(),
16315 script: readScript()
16316 })
16317 }
16318
16319 tx.locktime = readUInt32()
16320
16321 if (!__disableAssert) {
16322 assert.equal(offset, buffer.length, 'Transaction has unexpected data')
16323 }
16324
16325 return tx
16326 }
16327
16328 Transaction.fromHex = function (hex) {
16329 return Transaction.fromBuffer(new Buffer(hex, 'hex'))
16330 }
16331
16332 Transaction.isCoinbaseHash = function (buffer) {
16333 return Array.prototype.every.call(buffer, function (x) {
16334 return x === 0
16335 })
16336 }
16337
16338 /**
16339 * Create a new txIn.
16340 *
16341 * Can be called with any of:
16342 *
16343 * - A transaction and an index
16344 * - A transaction hash and an index
16345 *
16346 * Note that this method does not sign the created input.
16347 */
16348 Transaction.prototype.addInput = function (hash, index, sequence, script) {
16349 if (sequence === undefined || sequence === null) {
16350 sequence = Transaction.DEFAULT_SEQUENCE
16351 }
16352
16353 script = script || Script.EMPTY
16354
16355 if (typeof hash === 'string') {
16356 // TxId hex is big-endian, we need little-endian
16357 hash = bufferutils.reverse(new Buffer(hash, 'hex'))
16358 } else if (hash instanceof Transaction) {
16359 hash = hash.getHash()
16360 }
16361
16362 typeForce('Buffer', hash)
16363 typeForce('Number', index)
16364 typeForce('Number', sequence)
16365 typeForce('Script', script)
16366
16367 assert.equal(hash.length, 32, 'Expected hash length of 32, got ' + hash.length)
16368
16369 // Add the input and return the input's index
16370 return (this.ins.push({
16371 hash: hash,
16372 index: index,
16373 script: script,
16374 sequence: sequence
16375 }) - 1)
16376 }
16377
16378 /**
16379 * Create a new txOut.
16380 *
16381 * Can be called with:
16382 *
16383 * - A base58 address string and a value
16384 * - An Address object and a value
16385 * - A scriptPubKey Script and a value
16386 */
16387 Transaction.prototype.addOutput = function (scriptPubKey, value) {
16388 // Attempt to get a valid address if it's a base58 address string
16389 if (typeof scriptPubKey === 'string') {
16390 scriptPubKey = Address.fromBase58Check(scriptPubKey)
16391 }
16392
16393 // Attempt to get a valid script if it's an Address object
16394 if (scriptPubKey instanceof Address) {
16395 scriptPubKey = scriptPubKey.toOutputScript()
16396 }
16397
16398 typeForce('Script', scriptPubKey)
16399 typeForce('Number', value)
16400
16401 // Add the output and return the output's index
16402 return (this.outs.push({
16403 script: scriptPubKey,
16404 value: value
16405 }) - 1)
16406 }
16407
16408 Transaction.prototype.clone = function () {
16409 var newTx = new Transaction()
16410 newTx.version = this.version
16411 newTx.locktime = this.locktime
16412
16413 newTx.ins = this.ins.map(function (txIn) {
16414 return {
16415 hash: txIn.hash,
16416 index: txIn.index,
16417 script: txIn.script,
16418 sequence: txIn.sequence
16419 }
16420 })
16421
16422 newTx.outs = this.outs.map(function (txOut) {
16423 return {
16424 script: txOut.script,
16425 value: txOut.value
16426 }
16427 })
16428
16429 return newTx
16430 }
16431
16432 /**
16433 * Hash transaction for signing a specific input.
16434 *
16435 * Bitcoin uses a different hash for each signed transaction input. This
16436 * method copies the transaction, makes the necessary changes based on the
16437 * hashType, serializes and finally hashes the result. This hash can then be
16438 * used to sign the transaction input in question.
16439 */
16440 Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
16441 // FIXME: remove in 2.x.y
16442 if (arguments[0] instanceof Script) {
16443 console.warn('hashForSignature(prevOutScript, inIndex, ...) has been deprecated. Use hashForSignature(inIndex, prevOutScript, ...)')
16444
16445 // swap the arguments (must be stored in tmp, arguments is special)
16446 var tmp = arguments[0]
16447 inIndex = arguments[1]
16448 prevOutScript = tmp
16449 }
16450
16451 typeForce('Number', inIndex)
16452 typeForce('Script', prevOutScript)
16453 typeForce('Number', hashType)
16454
16455 assert(inIndex >= 0, 'Invalid vin index')
16456 assert(inIndex < this.ins.length, 'Invalid vin index')
16457
16458 var txTmp = this.clone()
16459 var hashScript = prevOutScript.without(opcodes.OP_CODESEPARATOR)
16460
16461 // Blank out other inputs' signatures
16462 txTmp.ins.forEach(function (txIn) {
16463 txIn.script = Script.EMPTY
16464 })
16465 txTmp.ins[inIndex].script = hashScript
16466
16467 var hashTypeModifier = hashType & 0x1f
16468
16469 if (hashTypeModifier === Transaction.SIGHASH_NONE) {
16470 assert(false, 'SIGHASH_NONE not yet supported')
16471 } else if (hashTypeModifier === Transaction.SIGHASH_SINGLE) {
16472 assert(false, 'SIGHASH_SINGLE not yet supported')
16473 }
16474
16475 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
16476 assert(false, 'SIGHASH_ANYONECANPAY not yet supported')
16477 }
16478
16479 var hashTypeBuffer = new Buffer(4)
16480 hashTypeBuffer.writeInt32LE(hashType, 0)
16481
16482 var buffer = Buffer.concat([txTmp.toBuffer(), hashTypeBuffer])
16483 return crypto.hash256(buffer)
16484 }
16485
16486 Transaction.prototype.getHash = function () {
16487 return crypto.hash256(this.toBuffer())
16488 }
16489
16490 Transaction.prototype.getId = function () {
16491 // TxHash is little-endian, we need big-endian
16492 return bufferutils.reverse(this.getHash()).toString('hex')
16493 }
16494
16495 Transaction.prototype.toBuffer = function () {
16496 function scriptSize (script) {
16497 var length = script.buffer.length
16498
16499 return bufferutils.varIntSize(length) + length
16500 }
16501
16502 var buffer = new Buffer(
16503 8 +
16504 bufferutils.varIntSize(this.ins.length) +
16505 bufferutils.varIntSize(this.outs.length) +
16506 this.ins.reduce(function (sum, input) { return sum + 40 + scriptSize(input.script) }, 0) +
16507 this.outs.reduce(function (sum, output) { return sum + 8 + scriptSize(output.script) }, 0)
16508 )
16509
16510 var offset = 0
16511 function writeSlice (slice) {
16512 slice.copy(buffer, offset)
16513 offset += slice.length
16514 }
16515
16516 function writeUInt32 (i) {
16517 buffer.writeUInt32LE(i, offset)
16518 offset += 4
16519 }
16520
16521 function writeUInt64 (i) {
16522 bufferutils.writeUInt64LE(buffer, i, offset)
16523 offset += 8
16524 }
16525
16526 function writeVarInt (i) {
16527 var n = bufferutils.writeVarInt(buffer, i, offset)
16528 offset += n
16529 }
16530
16531 writeUInt32(this.version)
16532 writeVarInt(this.ins.length)
16533
16534 this.ins.forEach(function (txIn) {
16535 writeSlice(txIn.hash)
16536 writeUInt32(txIn.index)
16537 writeVarInt(txIn.script.buffer.length)
16538 writeSlice(txIn.script.buffer)
16539 writeUInt32(txIn.sequence)
16540 })
16541
16542 writeVarInt(this.outs.length)
16543 this.outs.forEach(function (txOut) {
16544 writeUInt64(txOut.value)
16545 writeVarInt(txOut.script.buffer.length)
16546 writeSlice(txOut.script.buffer)
16547 })
16548
16549 writeUInt32(this.locktime)
16550
16551 return buffer
16552 }
16553
16554 Transaction.prototype.toHex = function () {
16555 return this.toBuffer().toString('hex')
16556 }
16557
16558 Transaction.prototype.setInputScript = function (index, script) {
16559 typeForce('Number', index)
16560 typeForce('Script', script)
16561
16562 this.ins[index].script = script
16563 }
16564
16565 // FIXME: remove in 2.x.y
16566 Transaction.prototype.sign = function (index, privKey, hashType) {
16567 console.warn('Transaction.prototype.sign is deprecated. Use TransactionBuilder instead.')
16568
16569 var prevOutScript = privKey.pub.getAddress().toOutputScript()
16570 var signature = this.signInput(index, prevOutScript, privKey, hashType)
16571
16572 var scriptSig = scripts.pubKeyHashInput(signature, privKey.pub)
16573 this.setInputScript(index, scriptSig)
16574 }
16575
16576 // FIXME: remove in 2.x.y
16577 Transaction.prototype.signInput = function (index, prevOutScript, privKey, hashType) {
16578 console.warn('Transaction.prototype.signInput is deprecated. Use TransactionBuilder instead.')
16579
16580 hashType = hashType || Transaction.SIGHASH_ALL
16581
16582 var hash = this.hashForSignature(index, prevOutScript, hashType)
16583 var signature = privKey.sign(hash)
16584
16585 return signature.toScriptSignature(hashType)
16586 }
16587
16588 // FIXME: remove in 2.x.y
16589 Transaction.prototype.validateInput = function (index, prevOutScript, pubKey, buffer) {
16590 console.warn('Transaction.prototype.validateInput is deprecated. Use TransactionBuilder instead.')
16591
16592 var parsed = ECSignature.parseScriptSignature(buffer)
16593 var hash = this.hashForSignature(index, prevOutScript, parsed.hashType)
16594
16595 return pubKey.verify(hash, parsed.signature)
16596 }
16597
16598 module.exports = Transaction
16599
16600 }).call(this,require("buffer").Buffer)
16601 },{"./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){
16602 (function (Buffer){
16603 var assert = require('assert')
16604 var ops = require('./opcodes')
16605 var scripts = require('./scripts')
16606
16607 var ECPubKey = require('./ecpubkey')
16608 var ECSignature = require('./ecsignature')
16609 var Script = require('./script')
16610 var Transaction = require('./transaction')
16611
16612 function extractInput (txIn) {
16613 var redeemScript
16614 var scriptSig = txIn.script
16615 var prevOutScript
16616 var prevOutType = scripts.classifyInput(scriptSig, true)
16617 var scriptType
16618
16619 // Re-classify if scriptHash
16620 if (prevOutType === 'scripthash') {
16621 redeemScript = Script.fromBuffer(scriptSig.chunks.slice(-1)[0])
16622 prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
16623
16624 scriptSig = Script.fromChunks(scriptSig.chunks.slice(0, -1))
16625 scriptType = scripts.classifyInput(scriptSig, true)
16626 } else {
16627 scriptType = prevOutType
16628 }
16629
16630 // Extract hashType, pubKeys and signatures
16631 var hashType, parsed, pubKeys, signatures
16632
16633 switch (scriptType) {
16634 case 'pubkeyhash': {
16635 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0])
16636 hashType = parsed.hashType
16637 pubKeys = [ECPubKey.fromBuffer(scriptSig.chunks[1])]
16638 signatures = [parsed.signature]
16639 prevOutScript = pubKeys[0].getAddress().toOutputScript()
16640
16641 break
16642 }
16643
16644 case 'pubkey': {
16645 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0])
16646 hashType = parsed.hashType
16647 signatures = [parsed.signature]
16648
16649 if (redeemScript) {
16650 pubKeys = [ECPubKey.fromBuffer(redeemScript.chunks[0])]
16651 }
16652
16653 break
16654 }
16655
16656 case 'multisig': {
16657 signatures = scriptSig.chunks.slice(1).map(function (chunk) {
16658 if (chunk === ops.OP_0) return chunk
16659
16660 var parsed = ECSignature.parseScriptSignature(chunk)
16661 hashType = parsed.hashType
16662
16663 return parsed.signature
16664 })
16665
16666 if (redeemScript) {
16667 pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
16668 }
16669
16670 break
16671 }
16672 }
16673
16674 return {
16675 hashType: hashType,
16676 prevOutScript: prevOutScript,
16677 prevOutType: prevOutType,
16678 pubKeys: pubKeys,
16679 redeemScript: redeemScript,
16680 scriptType: scriptType,
16681 signatures: signatures
16682 }
16683 }
16684
16685 function TransactionBuilder () {
16686 this.prevTxMap = {}
16687 this.prevOutScripts = {}
16688 this.prevOutTypes = {}
16689
16690 this.inputs = []
16691 this.tx = new Transaction()
16692 }
16693
16694 TransactionBuilder.fromTransaction = function (transaction) {
16695 var txb = new TransactionBuilder()
16696
16697 // Copy other transaction fields
16698 txb.tx.version = transaction.version
16699 txb.tx.locktime = transaction.locktime
16700
16701 // Extract/add inputs
16702 transaction.ins.forEach(function (txIn) {
16703 txb.addInput(txIn.hash, txIn.index, txIn.sequence)
16704 })
16705
16706 // Extract/add outputs
16707 transaction.outs.forEach(function (txOut) {
16708 txb.addOutput(txOut.script, txOut.value)
16709 })
16710
16711 // Extract/add signatures
16712 txb.inputs = transaction.ins.map(function (txIn) {
16713 // TODO: remove me after testcase added
16714 assert(!Transaction.isCoinbaseHash(txIn.hash), 'coinbase inputs not supported')
16715
16716 // Ignore empty scripts
16717 if (txIn.script.buffer.length === 0) return {}
16718
16719 return extractInput(txIn)
16720 })
16721
16722 return txb
16723 }
16724
16725 TransactionBuilder.prototype.addInput = function (prevTx, index, sequence, prevOutScript) {
16726 var prevOutHash
16727
16728 // txId
16729 if (typeof prevTx === 'string') {
16730 prevOutHash = new Buffer(prevTx, 'hex')
16731
16732 // TxId hex is big-endian, we want little-endian hash
16733 Array.prototype.reverse.call(prevOutHash)
16734
16735 // Transaction
16736 } else if (prevTx instanceof Transaction) {
16737 prevOutHash = prevTx.getHash()
16738 prevOutScript = prevTx.outs[index].script
16739
16740 // txHash
16741 } else {
16742 prevOutHash = prevTx
16743 }
16744
16745 var input = {}
16746 if (prevOutScript) {
16747 var prevOutType = scripts.classifyOutput(prevOutScript)
16748
16749 // if we can, extract pubKey information
16750 switch (prevOutType) {
16751 case 'multisig': {
16752 input.pubKeys = prevOutScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
16753 break
16754 }
16755
16756 case 'pubkey': {
16757 input.pubKeys = prevOutScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer)
16758 break
16759 }
16760 }
16761
16762 if (prevOutType !== 'scripthash') {
16763 input.scriptType = prevOutType
16764 }
16765
16766 input.prevOutScript = prevOutScript
16767 input.prevOutType = prevOutType
16768 }
16769
16770 assert(this.inputs.every(function (input2) {
16771 if (input2.hashType === undefined) return true
16772
16773 return input2.hashType & Transaction.SIGHASH_ANYONECANPAY
16774 }), 'No, this would invalidate signatures')
16775
16776 var prevOut = prevOutHash.toString('hex') + ':' + index
16777 assert(!(prevOut in this.prevTxMap), 'Transaction is already an input')
16778
16779 var vin = this.tx.addInput(prevOutHash, index, sequence)
16780 this.inputs[vin] = input
16781 this.prevTxMap[prevOut] = vin
16782
16783 return vin
16784 }
16785
16786 TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
16787 assert(this.inputs.every(function (input) {
16788 if (input.hashType === undefined) return true
16789
16790 return (input.hashType & 0x1f) === Transaction.SIGHASH_SINGLE
16791 }), 'No, this would invalidate signatures')
16792
16793 return this.tx.addOutput(scriptPubKey, value)
16794 }
16795
16796 TransactionBuilder.prototype.build = function () {
16797 return this.__build(false)
16798 }
16799 TransactionBuilder.prototype.buildIncomplete = function () {
16800 return this.__build(true)
16801 }
16802
16803 var canSignTypes = {
16804 'pubkeyhash': true,
16805 'multisig': true,
16806 'pubkey': true
16807 }
16808
16809 TransactionBuilder.prototype.__build = function (allowIncomplete) {
16810 if (!allowIncomplete) {
16811 assert(this.tx.ins.length > 0, 'Transaction has no inputs')
16812 assert(this.tx.outs.length > 0, 'Transaction has no outputs')
16813 }
16814
16815 var tx = this.tx.clone()
16816
16817 // Create script signatures from signature meta-data
16818 this.inputs.forEach(function (input, index) {
16819 var scriptType = input.scriptType
16820 var scriptSig
16821
16822 if (!allowIncomplete) {
16823 assert(!!scriptType, 'Transaction is not complete')
16824 assert(scriptType in canSignTypes, scriptType + ' not supported')
16825 assert(input.signatures, 'Transaction is missing signatures')
16826 }
16827
16828 if (input.signatures) {
16829 switch (scriptType) {
16830 case 'pubkeyhash': {
16831 var pkhSignature = input.signatures[0].toScriptSignature(input.hashType)
16832 scriptSig = scripts.pubKeyHashInput(pkhSignature, input.pubKeys[0])
16833 break
16834 }
16835
16836 case 'multisig': {
16837 // Array.prototype.map is sparse-compatible
16838 var msSignatures = input.signatures.map(function (signature) {
16839 return signature && signature.toScriptSignature(input.hashType)
16840 })
16841
16842 // fill in blanks with OP_0
16843 if (allowIncomplete) {
16844 for (var i = 0; i < msSignatures.length; ++i) {
16845 if (msSignatures[i]) continue
16846
16847 msSignatures[i] = ops.OP_0
16848 }
16849 } else {
16850 // Array.prototype.filter returns non-sparse array
16851 msSignatures = msSignatures.filter(function (x) { return x })
16852 }
16853
16854 var redeemScript = allowIncomplete ? undefined : input.redeemScript
16855 scriptSig = scripts.multisigInput(msSignatures, redeemScript)
16856 break
16857 }
16858
16859 case 'pubkey': {
16860 var pkSignature = input.signatures[0].toScriptSignature(input.hashType)
16861 scriptSig = scripts.pubKeyInput(pkSignature)
16862 break
16863 }
16864 }
16865 }
16866
16867 // did we build a scriptSig?
16868 if (scriptSig) {
16869 // wrap as scriptHash if necessary
16870 if (input.prevOutType === 'scripthash') {
16871 scriptSig = scripts.scriptHashInput(scriptSig, input.redeemScript)
16872 }
16873
16874 tx.setInputScript(index, scriptSig)
16875 }
16876 })
16877
16878 return tx
16879 }
16880
16881 TransactionBuilder.prototype.sign = function (index, privKey, redeemScript, hashType) {
16882 assert(index in this.inputs, 'No input at index: ' + index)
16883 hashType = hashType || Transaction.SIGHASH_ALL
16884
16885 var input = this.inputs[index]
16886 var canSign = input.hashType &&
16887 input.prevOutScript &&
16888 input.prevOutType &&
16889 input.pubKeys &&
16890 input.scriptType &&
16891 input.signatures
16892
16893 // are we almost ready to sign?
16894 if (canSign) {
16895 // if redeemScript was provided, enforce consistency
16896 if (redeemScript) {
16897 assert.deepEqual(input.redeemScript, redeemScript, 'Inconsistent redeemScript')
16898 }
16899
16900 assert.equal(input.hashType, hashType, 'Inconsistent hashType')
16901
16902 // no? prepare
16903 } else {
16904 // must be pay-to-scriptHash?
16905 if (redeemScript) {
16906 // if we have a prevOutScript, enforce scriptHash equality to the redeemScript
16907 if (input.prevOutScript) {
16908 assert.equal(input.prevOutType, 'scripthash', 'PrevOutScript must be P2SH')
16909
16910 var scriptHash = input.prevOutScript.chunks[1]
16911 assert.deepEqual(scriptHash, redeemScript.getHash(), 'RedeemScript does not match ' + scriptHash.toString('hex'))
16912 }
16913
16914 var scriptType = scripts.classifyOutput(redeemScript)
16915 assert(scriptType in canSignTypes, 'RedeemScript not supported (' + scriptType + ')')
16916
16917 var pubKeys = []
16918 switch (scriptType) {
16919 case 'multisig': {
16920 pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
16921 break
16922 }
16923
16924 case 'pubkeyhash': {
16925 var pkh1 = redeemScript.chunks[2]
16926 var pkh2 = privKey.pub.getAddress().hash
16927
16928 assert.deepEqual(pkh1, pkh2, 'privateKey cannot sign for this input')
16929 pubKeys = [privKey.pub]
16930 break
16931 }
16932
16933 case 'pubkey': {
16934 pubKeys = redeemScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer)
16935 break
16936 }
16937 }
16938
16939 if (!input.prevOutScript) {
16940 input.prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
16941 input.prevOutType = 'scripthash'
16942 }
16943
16944 input.pubKeys = pubKeys
16945 input.redeemScript = redeemScript
16946 input.scriptType = scriptType
16947
16948 // cannot be pay-to-scriptHash
16949 } else {
16950 assert.notEqual(input.prevOutType, 'scripthash', 'PrevOutScript is P2SH, missing redeemScript')
16951
16952 // can we otherwise sign this?
16953 if (input.scriptType) {
16954 assert(input.pubKeys, input.scriptType + ' not supported')
16955
16956 // we know nothin' Jon Snow, assume pubKeyHash
16957 } else {
16958 input.prevOutScript = privKey.pub.getAddress().toOutputScript()
16959 input.prevOutType = 'pubkeyhash'
16960 input.pubKeys = [privKey.pub]
16961 input.scriptType = input.prevOutType
16962 }
16963 }
16964
16965 input.hashType = hashType
16966 input.signatures = input.signatures || []
16967 }
16968
16969 var signatureScript = input.redeemScript || input.prevOutScript
16970 var signatureHash = this.tx.hashForSignature(index, signatureScript, hashType)
16971
16972 // enforce signature order matches public keys
16973 if (input.scriptType === 'multisig' && input.redeemScript && input.signatures.length !== input.pubKeys.length) {
16974 // maintain a local copy of unmatched signatures
16975 var unmatched = input.signatures.slice()
16976
16977 input.signatures = input.pubKeys.map(function (pubKey) {
16978 var match
16979
16980 // check for any matching signatures
16981 unmatched.some(function (signature, i) {
16982 if (!pubKey.verify(signatureHash, signature)) return false
16983 match = signature
16984
16985 // remove matched signature from unmatched
16986 unmatched.splice(i, 1)
16987
16988 return true
16989 })
16990
16991 return match || undefined
16992 })
16993 }
16994
16995 // enforce in order signing of public keys
16996 assert(input.pubKeys.some(function (pubKey, i) {
16997 if (!privKey.pub.Q.equals(pubKey.Q)) return false
16998
16999 assert(!input.signatures[i], 'Signature already exists')
17000 var signature = privKey.sign(signatureHash)
17001 input.signatures[i] = signature
17002
17003 return true
17004 }, this), 'privateKey cannot sign for this input')
17005 }
17006
17007 module.exports = TransactionBuilder
17008
17009 }).call(this,require("buffer").Buffer)
17010 },{"./ecpubkey":61,"./ecsignature":62,"./opcodes":67,"./script":68,"./scripts":69,"./transaction":70,"assert":5,"buffer":7}],72:[function(require,module,exports){
17011 (function (Buffer){
17012 var assert = require('assert')
17013 var bufferutils = require('./bufferutils')
17014 var typeForce = require('typeforce')
17015 var networks = require('./networks')
17016 var randomBytes = require('randombytes')
17017
17018 var Address = require('./address')
17019 var HDNode = require('./hdnode')
17020 var TransactionBuilder = require('./transaction_builder')
17021 var Script = require('./script')
17022
17023 function Wallet (seed, network) {
17024 console.warn('Wallet is deprecated and will be removed in 2.0.0, see #296')
17025
17026 seed = seed || randomBytes(32)
17027 network = network || networks.bitcoin
17028
17029 // Stored in a closure to make accidental serialization less likely
17030 var masterKey = HDNode.fromSeedBuffer(seed, network)
17031
17032 // HD first-level child derivation method should be hardened
17033 // See https://bitcointalk.org/index.php?topic=405179.msg4415254#msg4415254
17034 var accountZero = masterKey.deriveHardened(0)
17035 var externalAccount = accountZero.derive(0)
17036 var internalAccount = accountZero.derive(1)
17037
17038 this.addresses = []
17039 this.changeAddresses = []
17040 this.network = network
17041 this.unspents = []
17042
17043 // FIXME: remove in 2.0.0
17044 this.unspentMap = {}
17045
17046 // FIXME: remove in 2.0.0
17047 var me = this
17048 this.newMasterKey = function (seed) {
17049 console.warn('newMasterKey is deprecated, please make a new Wallet instance instead')
17050
17051 seed = seed || randomBytes(32)
17052 masterKey = HDNode.fromSeedBuffer(seed, network)
17053
17054 accountZero = masterKey.deriveHardened(0)
17055 externalAccount = accountZero.derive(0)
17056 internalAccount = accountZero.derive(1)
17057
17058 me.addresses = []
17059 me.changeAddresses = []
17060
17061 me.unspents = []
17062 me.unspentMap = {}
17063 }
17064
17065 this.getMasterKey = function () {
17066 return masterKey
17067 }
17068 this.getAccountZero = function () {
17069 return accountZero
17070 }
17071 this.getExternalAccount = function () {
17072 return externalAccount
17073 }
17074 this.getInternalAccount = function () {
17075 return internalAccount
17076 }
17077 }
17078
17079 Wallet.prototype.createTransaction = function (to, value, options) {
17080 // FIXME: remove in 2.0.0
17081 if (typeof options !== 'object') {
17082 if (options !== undefined) {
17083 console.warn('Non options object parameters are deprecated, use options object instead')
17084
17085 options = {
17086 fixedFee: arguments[2],
17087 changeAddress: arguments[3]
17088 }
17089 }
17090 }
17091
17092 options = options || {}
17093
17094 assert(value > this.network.dustThreshold, value + ' must be above dust threshold (' + this.network.dustThreshold + ' Satoshis)')
17095
17096 var changeAddress = options.changeAddress
17097 var fixedFee = options.fixedFee
17098 var minConf = options.minConf === undefined ? 0 : options.minConf // FIXME: change minConf:1 by default in 2.0.0
17099
17100 // filter by minConf, then pending and sort by descending value
17101 var unspents = this.unspents.filter(function (unspent) {
17102 return unspent.confirmations >= minConf
17103 }).filter(function (unspent) {
17104 return !unspent.pending
17105 }).sort(function (o1, o2) {
17106 return o2.value - o1.value
17107 })
17108
17109 var accum = 0
17110 var addresses = []
17111 var subTotal = value
17112
17113 var txb = new TransactionBuilder()
17114 txb.addOutput(to, value)
17115
17116 for (var i = 0; i < unspents.length; ++i) {
17117 var unspent = unspents[i]
17118 addresses.push(unspent.address)
17119
17120 txb.addInput(unspent.txHash, unspent.index)
17121
17122 var fee = fixedFee === undefined ? estimatePaddedFee(txb.buildIncomplete(), this.network) : fixedFee
17123
17124 accum += unspent.value
17125 subTotal = value + fee
17126
17127 if (accum >= subTotal) {
17128 var change = accum - subTotal
17129
17130 if (change > this.network.dustThreshold) {
17131 txb.addOutput(changeAddress || this.getChangeAddress(), change)
17132 }
17133
17134 break
17135 }
17136 }
17137
17138 assert(accum >= subTotal, 'Not enough funds (incl. fee): ' + accum + ' < ' + subTotal)
17139
17140 return this.signWith(txb, addresses).build()
17141 }
17142
17143 // FIXME: remove in 2.0.0
17144 Wallet.prototype.processPendingTx = function (tx) {
17145 this.__processTx(tx, true)
17146 }
17147
17148 // FIXME: remove in 2.0.0
17149 Wallet.prototype.processConfirmedTx = function (tx) {
17150 this.__processTx(tx, false)
17151 }
17152
17153 // FIXME: remove in 2.0.0
17154 Wallet.prototype.__processTx = function (tx, isPending) {
17155 console.warn('processTransaction is considered harmful, see issue #260 for more information')
17156
17157 var txId = tx.getId()
17158 var txHash = tx.getHash()
17159
17160 tx.outs.forEach(function (txOut, i) {
17161 var address
17162
17163 try {
17164 address = Address.fromOutputScript(txOut.script, this.network).toString()
17165 } catch (e) {
17166 if (!(e.message.match(/has no matching Address/)))
17167 throw e
17168 }
17169
17170 var myAddresses = this.addresses.concat(this.changeAddresses)
17171 if (myAddresses.indexOf(address) > -1) {
17172 var lookup = txId + ':' + i
17173 if (lookup in this.unspentMap) return
17174
17175 // its unique, add it
17176 var unspent = {
17177 address: address,
17178 confirmations: 0, // no way to determine this without more information
17179 index: i,
17180 txHash: txHash,
17181 txId: txId,
17182 value: txOut.value,
17183 pending: isPending
17184 }
17185
17186 this.unspentMap[lookup] = unspent
17187 this.unspents.push(unspent)
17188 }
17189 }, this)
17190
17191 tx.ins.forEach(function (txIn) {
17192 // copy and convert to big-endian hex
17193 var txInId = bufferutils.reverse(txIn.hash).toString('hex')
17194
17195 var lookup = txInId + ':' + txIn.index
17196 if (!(lookup in this.unspentMap)) return
17197
17198 var unspent = this.unspentMap[lookup]
17199
17200 if (isPending) {
17201 unspent.pending = true
17202 unspent.spent = true
17203 } else {
17204 delete this.unspentMap[lookup]
17205
17206 this.unspents = this.unspents.filter(function (unspent2) {
17207 return unspent !== unspent2
17208 })
17209 }
17210 }, this)
17211 }
17212
17213 Wallet.prototype.generateAddress = function () {
17214 var k = this.addresses.length
17215 var address = this.getExternalAccount().derive(k).getAddress()
17216
17217 this.addresses.push(address.toString())
17218
17219 return this.getReceiveAddress()
17220 }
17221
17222 Wallet.prototype.generateChangeAddress = function () {
17223 var k = this.changeAddresses.length
17224 var address = this.getInternalAccount().derive(k).getAddress()
17225
17226 this.changeAddresses.push(address.toString())
17227
17228 return this.getChangeAddress()
17229 }
17230
17231 Wallet.prototype.getAddress = function () {
17232 if (this.addresses.length === 0) {
17233 this.generateAddress()
17234 }
17235
17236 return this.addresses[this.addresses.length - 1]
17237 }
17238
17239 Wallet.prototype.getBalance = function (minConf) {
17240 minConf = minConf || 0
17241
17242 return this.unspents.filter(function (unspent) {
17243 return unspent.confirmations >= minConf
17244
17245 // FIXME: remove spent filter in 2.0.0
17246 }).filter(function (unspent) {
17247 return !unspent.spent
17248 }).reduce(function (accum, unspent) {
17249 return accum + unspent.value
17250 }, 0)
17251 }
17252
17253 Wallet.prototype.getChangeAddress = function () {
17254 if (this.changeAddresses.length === 0) {
17255 this.generateChangeAddress()
17256 }
17257
17258 return this.changeAddresses[this.changeAddresses.length - 1]
17259 }
17260
17261 Wallet.prototype.getInternalPrivateKey = function (index) {
17262 return this.getInternalAccount().derive(index).privKey
17263 }
17264
17265 Wallet.prototype.getPrivateKey = function (index) {
17266 return this.getExternalAccount().derive(index).privKey
17267 }
17268
17269 Wallet.prototype.getPrivateKeyForAddress = function (address) {
17270 var index
17271
17272 if ((index = this.addresses.indexOf(address)) > -1) {
17273 return this.getPrivateKey(index)
17274 }
17275
17276 if ((index = this.changeAddresses.indexOf(address)) > -1) {
17277 return this.getInternalPrivateKey(index)
17278 }
17279
17280 assert(false, 'Unknown address. Make sure the address is from the keychain and has been generated')
17281 }
17282
17283 Wallet.prototype.getUnspentOutputs = function (minConf) {
17284 minConf = minConf || 0
17285
17286 return this.unspents.filter(function (unspent) {
17287 return unspent.confirmations >= minConf
17288
17289 // FIXME: remove spent filter in 2.0.0
17290 }).filter(function (unspent) {
17291 return !unspent.spent
17292 }).map(function (unspent) {
17293 return {
17294 address: unspent.address,
17295 confirmations: unspent.confirmations,
17296 index: unspent.index,
17297 txId: unspent.txId,
17298 value: unspent.value,
17299
17300 // FIXME: remove in 2.0.0
17301 hash: unspent.txId,
17302 pending: unspent.pending
17303 }
17304 })
17305 }
17306
17307 Wallet.prototype.setUnspentOutputs = function (unspents) {
17308 this.unspentMap = {}
17309 this.unspents = unspents.map(function (unspent) {
17310 // FIXME: remove unspent.hash in 2.0.0
17311 var txId = unspent.txId || unspent.hash
17312 var index = unspent.index
17313
17314 // FIXME: remove in 2.0.0
17315 if (unspent.hash !== undefined) {
17316 console.warn('unspent.hash is deprecated, use unspent.txId instead')
17317 }
17318
17319 // FIXME: remove in 2.0.0
17320 if (index === undefined) {
17321 console.warn('unspent.outputIndex is deprecated, use unspent.index instead')
17322 index = unspent.outputIndex
17323 }
17324
17325 typeForce('String', txId)
17326 typeForce('Number', index)
17327 typeForce('Number', unspent.value)
17328
17329 assert.equal(txId.length, 64, 'Expected valid txId, got ' + txId)
17330 assert.doesNotThrow(function () {
17331 Address.fromBase58Check(unspent.address)
17332 }, 'Expected Base58 Address, got ' + unspent.address)
17333 assert(isFinite(index), 'Expected finite index, got ' + index)
17334
17335 // FIXME: remove branch in 2.0.0
17336 if (unspent.confirmations !== undefined) {
17337 typeForce('Number', unspent.confirmations)
17338 }
17339
17340 var txHash = bufferutils.reverse(new Buffer(txId, 'hex'))
17341
17342 unspent = {
17343 address: unspent.address,
17344 confirmations: unspent.confirmations || 0,
17345 index: index,
17346 txHash: txHash,
17347 txId: txId,
17348 value: unspent.value,
17349
17350 // FIXME: remove in 2.0.0
17351 pending: unspent.pending || false
17352 }
17353
17354 // FIXME: remove in 2.0.0
17355 this.unspentMap[txId + ':' + index] = unspent
17356
17357 return unspent
17358 }, this)
17359 }
17360
17361 Wallet.prototype.signWith = function (tx, addresses) {
17362 addresses.forEach(function (address, i) {
17363 var privKey = this.getPrivateKeyForAddress(address)
17364
17365 tx.sign(i, privKey)
17366 }, this)
17367
17368 return tx
17369 }
17370
17371 function estimatePaddedFee (tx, network) {
17372 var tmpTx = tx.clone()
17373 tmpTx.addOutput(Script.EMPTY, network.dustSoftThreshold || 0)
17374
17375 return network.estimateFee(tmpTx)
17376 }
17377
17378 // FIXME: 1.0.0 shims, remove in 2.0.0
17379 Wallet.prototype.getReceiveAddress = Wallet.prototype.getAddress
17380 Wallet.prototype.createTx = Wallet.prototype.createTransaction
17381
17382 module.exports = Wallet
17383
17384 }).call(this,require("buffer").Buffer)
17385 },{"./address":54,"./bufferutils":57,"./hdnode":63,"./networks":66,"./script":68,"./transaction_builder":71,"assert":5,"buffer":7,"randombytes":52,"typeforce":53}]},{},[64])(64)
17386 });</script>
17387 <script>bitcoin.networks.shadow = {
17388 magicPrefix: '\x19ShadowCash Signed Message:\n',
17389 bip32: {
17390 public: 0xEE80286A,
17391 private: 0xEE8031E8
17392 },
17393 pubKeyHash: 0x3f,
17394 scriptHash: 0x7d,
17395 wif: 0xbf,
17396 dustThreshold: 0,
17397 feePerKb: 1000,
17398 estimateFee: function() { return "unused in this app" },
17399 };
17400
17401 bitcoin.networks.shadowtn = {
17402 magicPrefix: '\x19ShadowCash Signed Message:\n',
17403 bip32: {
17404 public: 0x76C0FDFB,
17405 private: 0x76C1077A
17406 },
17407 pubKeyHash: 0x7f,
17408 scriptHash: 0xc4,
17409 wif: 0xff,
17410 dustThreshold: 0,
17411 feePerKb: 1000,
17412 estimateFee: function() { return "unused in this app" },
17413 };
17414
17415 bitcoin.networks.clam = {
17416 bip32: {
17417 public: 0xa8c26d64,
17418 private: 0xa8c17826
17419 },
17420 pubKeyHash: 0x89,
17421 wif: 0x85,
17422 };
17423
17424 bitcoin.networks.dash = {
17425 bip32: {
17426 public: 0x0488b21e,
17427 private: 0x0488ade4
17428 },
17429 pubKeyHash: 0x4c,
17430 scriptHash: 0x10,
17431 wif: 0xcc,
17432 };
17433
17434 bitcoin.networks.namecoin = {
17435 bip32: {
17436 public: 0x0488b21e,
17437 private: 0x0488ade4
17438 },
17439 pubKeyHash: 0x34,
17440 //scriptHash: 0x10,
17441 wif: 0x80,
17442 };
17443
17444 bitcoin.networks.peercoin = {
17445 bip32: {
17446 public: 0x0488b21e,
17447 private: 0x0488ade4
17448 },
17449 pubKeyHash: 0x37,
17450 //scriptHash: 0x10,
17451 wif: 0xb7,
17452 };
17453
17454 </script>
17455 <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){
17456 (function (global){
17457 'use strict';
17458
17459 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
17460 // original notice:
17461
17462 /*!
17463 * The buffer module from node.js, for the browser.
17464 *
17465 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
17466 * @license MIT
17467 */
17468 function compare(a, b) {
17469 if (a === b) {
17470 return 0;
17471 }
17472
17473 var x = a.length;
17474 var y = b.length;
17475
17476 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
17477 if (a[i] !== b[i]) {
17478 x = a[i];
17479 y = b[i];
17480 break;
17481 }
17482 }
17483
17484 if (x < y) {
17485 return -1;
17486 }
17487 if (y < x) {
17488 return 1;
17489 }
17490 return 0;
17491 }
17492 function isBuffer(b) {
17493 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
17494 return global.Buffer.isBuffer(b);
17495 }
17496 return !!(b != null && b._isBuffer);
17497 }
17498
17499 // based on node assert, original notice:
17500
17501 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
17502 //
17503 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
17504 //
17505 // Originally from narwhal.js (http://narwhaljs.org)
17506 // Copyright (c) 2009 Thomas Robinson <280north.com>
17507 //
17508 // Permission is hereby granted, free of charge, to any person obtaining a copy
17509 // of this software and associated documentation files (the 'Software'), to
17510 // deal in the Software without restriction, including without limitation the
17511 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
17512 // sell copies of the Software, and to permit persons to whom the Software is
17513 // furnished to do so, subject to the following conditions:
17514 //
17515 // The above copyright notice and this permission notice shall be included in
17516 // all copies or substantial portions of the Software.
17517 //
17518 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17519 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17520 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17521 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
17522 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
17523 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
17524
17525 var util = require('util/');
17526 var hasOwn = Object.prototype.hasOwnProperty;
17527 var pSlice = Array.prototype.slice;
17528 var functionsHaveNames = (function () {
17529 return function foo() {}.name === 'foo';
17530 }());
17531 function pToString (obj) {
17532 return Object.prototype.toString.call(obj);
17533 }
17534 function isView(arrbuf) {
17535 if (isBuffer(arrbuf)) {
17536 return false;
17537 }
17538 if (typeof global.ArrayBuffer !== 'function') {
17539 return false;
17540 }
17541 if (typeof ArrayBuffer.isView === 'function') {
17542 return ArrayBuffer.isView(arrbuf);
17543 }
17544 if (!arrbuf) {
17545 return false;
17546 }
17547 if (arrbuf instanceof DataView) {
17548 return true;
17549 }
17550 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
17551 return true;
17552 }
17553 return false;
17554 }
17555 // 1. The assert module provides functions that throw
17556 // AssertionError's when particular conditions are not met. The
17557 // assert module must conform to the following interface.
17558
17559 var assert = module.exports = ok;
17560
17561 // 2. The AssertionError is defined in assert.
17562 // new assert.AssertionError({ message: message,
17563 // actual: actual,
17564 // expected: expected })
17565
17566 var regex = /\s*function\s+([^\(\s]*)\s*/;
17567 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
17568 function getName(func) {
17569 if (!util.isFunction(func)) {
17570 return;
17571 }
17572 if (functionsHaveNames) {
17573 return func.name;
17574 }
17575 var str = func.toString();
17576 var match = str.match(regex);
17577 return match && match[1];
17578 }
17579 assert.AssertionError = function AssertionError(options) {
17580 this.name = 'AssertionError';
17581 this.actual = options.actual;
17582 this.expected = options.expected;
17583 this.operator = options.operator;
17584 if (options.message) {
17585 this.message = options.message;
17586 this.generatedMessage = false;
17587 } else {
17588 this.message = getMessage(this);
17589 this.generatedMessage = true;
17590 }
17591 var stackStartFunction = options.stackStartFunction || fail;
17592 if (Error.captureStackTrace) {
17593 Error.captureStackTrace(this, stackStartFunction);
17594 } else {
17595 // non v8 browsers so we can have a stacktrace
17596 var err = new Error();
17597 if (err.stack) {
17598 var out = err.stack;
17599
17600 // try to strip useless frames
17601 var fn_name = getName(stackStartFunction);
17602 var idx = out.indexOf('\n' + fn_name);
17603 if (idx >= 0) {
17604 // once we have located the function frame
17605 // we need to strip out everything before it (and its line)
17606 var next_line = out.indexOf('\n', idx + 1);
17607 out = out.substring(next_line + 1);
17608 }
17609
17610 this.stack = out;
17611 }
17612 }
17613 };
17614
17615 // assert.AssertionError instanceof Error
17616 util.inherits(assert.AssertionError, Error);
17617
17618 function truncate(s, n) {
17619 if (typeof s === 'string') {
17620 return s.length < n ? s : s.slice(0, n);
17621 } else {
17622 return s;
17623 }
17624 }
17625 function inspect(something) {
17626 if (functionsHaveNames || !util.isFunction(something)) {
17627 return util.inspect(something);
17628 }
17629 var rawname = getName(something);
17630 var name = rawname ? ': ' + rawname : '';
17631 return '[Function' + name + ']';
17632 }
17633 function getMessage(self) {
17634 return truncate(inspect(self.actual), 128) + ' ' +
17635 self.operator + ' ' +
17636 truncate(inspect(self.expected), 128);
17637 }
17638
17639 // At present only the three keys mentioned above are used and
17640 // understood by the spec. Implementations or sub modules can pass
17641 // other keys to the AssertionError's constructor - they will be
17642 // ignored.
17643
17644 // 3. All of the following functions must throw an AssertionError
17645 // when a corresponding condition is not met, with a message that
17646 // may be undefined if not provided. All assertion methods provide
17647 // both the actual and expected values to the assertion error for
17648 // display purposes.
17649
17650 function fail(actual, expected, message, operator, stackStartFunction) {
17651 throw new assert.AssertionError({
17652 message: message,
17653 actual: actual,
17654 expected: expected,
17655 operator: operator,
17656 stackStartFunction: stackStartFunction
17657 });
17658 }
17659
17660 // EXTENSION! allows for well behaved errors defined elsewhere.
17661 assert.fail = fail;
17662
17663 // 4. Pure assertion tests whether a value is truthy, as determined
17664 // by !!guard.
17665 // assert.ok(guard, message_opt);
17666 // This statement is equivalent to assert.equal(true, !!guard,
17667 // message_opt);. To test strictly for the value true, use
17668 // assert.strictEqual(true, guard, message_opt);.
17669
17670 function ok(value, message) {
17671 if (!value) fail(value, true, message, '==', assert.ok);
17672 }
17673 assert.ok = ok;
17674
17675 // 5. The equality assertion tests shallow, coercive equality with
17676 // ==.
17677 // assert.equal(actual, expected, message_opt);
17678
17679 assert.equal = function equal(actual, expected, message) {
17680 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
17681 };
17682
17683 // 6. The non-equality assertion tests for whether two objects are not equal
17684 // with != assert.notEqual(actual, expected, message_opt);
17685
17686 assert.notEqual = function notEqual(actual, expected, message) {
17687 if (actual == expected) {
17688 fail(actual, expected, message, '!=', assert.notEqual);
17689 }
17690 };
17691
17692 // 7. The equivalence assertion tests a deep equality relation.
17693 // assert.deepEqual(actual, expected, message_opt);
17694
17695 assert.deepEqual = function deepEqual(actual, expected, message) {
17696 if (!_deepEqual(actual, expected, false)) {
17697 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
17698 }
17699 };
17700
17701 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
17702 if (!_deepEqual(actual, expected, true)) {
17703 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
17704 }
17705 };
17706
17707 function _deepEqual(actual, expected, strict, memos) {
17708 // 7.1. All identical values are equivalent, as determined by ===.
17709 if (actual === expected) {
17710 return true;
17711 } else if (isBuffer(actual) && isBuffer(expected)) {
17712 return compare(actual, expected) === 0;
17713
17714 // 7.2. If the expected value is a Date object, the actual value is
17715 // equivalent if it is also a Date object that refers to the same time.
17716 } else if (util.isDate(actual) && util.isDate(expected)) {
17717 return actual.getTime() === expected.getTime();
17718
17719 // 7.3 If the expected value is a RegExp object, the actual value is
17720 // equivalent if it is also a RegExp object with the same source and
17721 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
17722 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
17723 return actual.source === expected.source &&
17724 actual.global === expected.global &&
17725 actual.multiline === expected.multiline &&
17726 actual.lastIndex === expected.lastIndex &&
17727 actual.ignoreCase === expected.ignoreCase;
17728
17729 // 7.4. Other pairs that do not both pass typeof value == 'object',
17730 // equivalence is determined by ==.
17731 } else if ((actual === null || typeof actual !== 'object') &&
17732 (expected === null || typeof expected !== 'object')) {
17733 return strict ? actual === expected : actual == expected;
17734
17735 // If both values are instances of typed arrays, wrap their underlying
17736 // ArrayBuffers in a Buffer each to increase performance
17737 // This optimization requires the arrays to have the same type as checked by
17738 // Object.prototype.toString (aka pToString). Never perform binary
17739 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
17740 // bit patterns are not identical.
17741 } else if (isView(actual) && isView(expected) &&
17742 pToString(actual) === pToString(expected) &&
17743 !(actual instanceof Float32Array ||
17744 actual instanceof Float64Array)) {
17745 return compare(new Uint8Array(actual.buffer),
17746 new Uint8Array(expected.buffer)) === 0;
17747
17748 // 7.5 For all other Object pairs, including Array objects, equivalence is
17749 // determined by having the same number of owned properties (as verified
17750 // with Object.prototype.hasOwnProperty.call), the same set of keys
17751 // (although not necessarily the same order), equivalent values for every
17752 // corresponding key, and an identical 'prototype' property. Note: this
17753 // accounts for both named and indexed properties on Arrays.
17754 } else if (isBuffer(actual) !== isBuffer(expected)) {
17755 return false;
17756 } else {
17757 memos = memos || {actual: [], expected: []};
17758
17759 var actualIndex = memos.actual.indexOf(actual);
17760 if (actualIndex !== -1) {
17761 if (actualIndex === memos.expected.indexOf(expected)) {
17762 return true;
17763 }
17764 }
17765
17766 memos.actual.push(actual);
17767 memos.expected.push(expected);
17768
17769 return objEquiv(actual, expected, strict, memos);
17770 }
17771 }
17772
17773 function isArguments(object) {
17774 return Object.prototype.toString.call(object) == '[object Arguments]';
17775 }
17776
17777 function objEquiv(a, b, strict, actualVisitedObjects) {
17778 if (a === null || a === undefined || b === null || b === undefined)
17779 return false;
17780 // if one is a primitive, the other must be same
17781 if (util.isPrimitive(a) || util.isPrimitive(b))
17782 return a === b;
17783 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
17784 return false;
17785 var aIsArgs = isArguments(a);
17786 var bIsArgs = isArguments(b);
17787 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
17788 return false;
17789 if (aIsArgs) {
17790 a = pSlice.call(a);
17791 b = pSlice.call(b);
17792 return _deepEqual(a, b, strict);
17793 }
17794 var ka = objectKeys(a);
17795 var kb = objectKeys(b);
17796 var key, i;
17797 // having the same number of owned properties (keys incorporates
17798 // hasOwnProperty)
17799 if (ka.length !== kb.length)
17800 return false;
17801 //the same set of keys (although not necessarily the same order),
17802 ka.sort();
17803 kb.sort();
17804 //~~~cheap key test
17805 for (i = ka.length - 1; i >= 0; i--) {
17806 if (ka[i] !== kb[i])
17807 return false;
17808 }
17809 //equivalent values for every corresponding key, and
17810 //~~~possibly expensive deep test
17811 for (i = ka.length - 1; i >= 0; i--) {
17812 key = ka[i];
17813 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
17814 return false;
17815 }
17816 return true;
17817 }
17818
17819 // 8. The non-equivalence assertion tests for any deep inequality.
17820 // assert.notDeepEqual(actual, expected, message_opt);
17821
17822 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
17823 if (_deepEqual(actual, expected, false)) {
17824 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
17825 }
17826 };
17827
17828 assert.notDeepStrictEqual = notDeepStrictEqual;
17829 function notDeepStrictEqual(actual, expected, message) {
17830 if (_deepEqual(actual, expected, true)) {
17831 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
17832 }
17833 }
17834
17835
17836 // 9. The strict equality assertion tests strict equality, as determined by ===.
17837 // assert.strictEqual(actual, expected, message_opt);
17838
17839 assert.strictEqual = function strictEqual(actual, expected, message) {
17840 if (actual !== expected) {
17841 fail(actual, expected, message, '===', assert.strictEqual);
17842 }
17843 };
17844
17845 // 10. The strict non-equality assertion tests for strict inequality, as
17846 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
17847
17848 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
17849 if (actual === expected) {
17850 fail(actual, expected, message, '!==', assert.notStrictEqual);
17851 }
17852 };
17853
17854 function expectedException(actual, expected) {
17855 if (!actual || !expected) {
17856 return false;
17857 }
17858
17859 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
17860 return expected.test(actual);
17861 }
17862
17863 try {
17864 if (actual instanceof expected) {
17865 return true;
17866 }
17867 } catch (e) {
17868 // Ignore. The instanceof check doesn't work for arrow functions.
17869 }
17870
17871 if (Error.isPrototypeOf(expected)) {
17872 return false;
17873 }
17874
17875 return expected.call({}, actual) === true;
17876 }
17877
17878 function _tryBlock(block) {
17879 var error;
17880 try {
17881 block();
17882 } catch (e) {
17883 error = e;
17884 }
17885 return error;
17886 }
17887
17888 function _throws(shouldThrow, block, expected, message) {
17889 var actual;
17890
17891 if (typeof block !== 'function') {
17892 throw new TypeError('"block" argument must be a function');
17893 }
17894
17895 if (typeof expected === 'string') {
17896 message = expected;
17897 expected = null;
17898 }
17899
17900 actual = _tryBlock(block);
17901
17902 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
17903 (message ? ' ' + message : '.');
17904
17905 if (shouldThrow && !actual) {
17906 fail(actual, expected, 'Missing expected exception' + message);
17907 }
17908
17909 var userProvidedMessage = typeof message === 'string';
17910 var isUnwantedException = !shouldThrow && util.isError(actual);
17911 var isUnexpectedException = !shouldThrow && actual && !expected;
17912
17913 if ((isUnwantedException &&
17914 userProvidedMessage &&
17915 expectedException(actual, expected)) ||
17916 isUnexpectedException) {
17917 fail(actual, expected, 'Got unwanted exception' + message);
17918 }
17919
17920 if ((shouldThrow && actual && expected &&
17921 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
17922 throw actual;
17923 }
17924 }
17925
17926 // 11. Expected to throw an error:
17927 // assert.throws(block, Error_opt, message_opt);
17928
17929 assert.throws = function(block, /*optional*/error, /*optional*/message) {
17930 _throws(true, block, error, message);
17931 };
17932
17933 // EXTENSION! This is annoying to write outside this module.
17934 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
17935 _throws(false, block, error, message);
17936 };
17937
17938 assert.ifError = function(err) { if (err) throw err; };
17939
17940 var objectKeys = Object.keys || function (obj) {
17941 var keys = [];
17942 for (var key in obj) {
17943 if (hasOwn.call(obj, key)) keys.push(key);
17944 }
17945 return keys;
17946 };
17947
17948 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
17949 },{"util/":30}],2:[function(require,module,exports){
17950 'use strict'
17951
17952 exports.byteLength = byteLength
17953 exports.toByteArray = toByteArray
17954 exports.fromByteArray = fromByteArray
17955
17956 var lookup = []
17957 var revLookup = []
17958 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
17959
17960 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
17961 for (var i = 0, len = code.length; i < len; ++i) {
17962 lookup[i] = code[i]
17963 revLookup[code.charCodeAt(i)] = i
17964 }
17965
17966 revLookup['-'.charCodeAt(0)] = 62
17967 revLookup['_'.charCodeAt(0)] = 63
17968
17969 function placeHoldersCount (b64) {
17970 var len = b64.length
17971 if (len % 4 > 0) {
17972 throw new Error('Invalid string. Length must be a multiple of 4')
17973 }
17974
17975 // the number of equal signs (place holders)
17976 // if there are two placeholders, than the two characters before it
17977 // represent one byte
17978 // if there is only one, then the three characters before it represent 2 bytes
17979 // this is just a cheap hack to not do indexOf twice
17980 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
17981 }
17982
17983 function byteLength (b64) {
17984 // base64 is 4/3 + up to two characters of the original data
17985 return b64.length * 3 / 4 - placeHoldersCount(b64)
17986 }
17987
17988 function toByteArray (b64) {
17989 var i, j, l, tmp, placeHolders, arr
17990 var len = b64.length
17991 placeHolders = placeHoldersCount(b64)
17992
17993 arr = new Arr(len * 3 / 4 - placeHolders)
17994
17995 // if there are placeholders, only get up to the last complete 4 chars
17996 l = placeHolders > 0 ? len - 4 : len
17997
17998 var L = 0
17999
18000 for (i = 0, j = 0; i < l; i += 4, j += 3) {
18001 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
18002 arr[L++] = (tmp >> 16) & 0xFF
18003 arr[L++] = (tmp >> 8) & 0xFF
18004 arr[L++] = tmp & 0xFF
18005 }
18006
18007 if (placeHolders === 2) {
18008 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
18009 arr[L++] = tmp & 0xFF
18010 } else if (placeHolders === 1) {
18011 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
18012 arr[L++] = (tmp >> 8) & 0xFF
18013 arr[L++] = tmp & 0xFF
18014 }
18015
18016 return arr
18017 }
18018
18019 function tripletToBase64 (num) {
18020 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
18021 }
18022
18023 function encodeChunk (uint8, start, end) {
18024 var tmp
18025 var output = []
18026 for (var i = start; i < end; i += 3) {
18027 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
18028 output.push(tripletToBase64(tmp))
18029 }
18030 return output.join('')
18031 }
18032
18033 function fromByteArray (uint8) {
18034 var tmp
18035 var len = uint8.length
18036 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
18037 var output = ''
18038 var parts = []
18039 var maxChunkLength = 16383 // must be multiple of 3
18040
18041 // go through the array every three bytes, we'll deal with trailing stuff later
18042 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
18043 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
18044 }
18045
18046 // pad the end with zeros, but make sure to not forget the extra bytes
18047 if (extraBytes === 1) {
18048 tmp = uint8[len - 1]
18049 output += lookup[tmp >> 2]
18050 output += lookup[(tmp << 4) & 0x3F]
18051 output += '=='
18052 } else if (extraBytes === 2) {
18053 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
18054 output += lookup[tmp >> 10]
18055 output += lookup[(tmp >> 4) & 0x3F]
18056 output += lookup[(tmp << 2) & 0x3F]
18057 output += '='
18058 }
18059
18060 parts.push(output)
18061
18062 return parts.join('')
18063 }
18064
18065 },{}],3:[function(require,module,exports){
18066
18067 },{}],4:[function(require,module,exports){
18068 (function (global){
18069 'use strict';
18070
18071 var buffer = require('buffer');
18072 var Buffer = buffer.Buffer;
18073 var SlowBuffer = buffer.SlowBuffer;
18074 var MAX_LEN = buffer.kMaxLength || 2147483647;
18075 exports.alloc = function alloc(size, fill, encoding) {
18076 if (typeof Buffer.alloc === 'function') {
18077 return Buffer.alloc(size, fill, encoding);
18078 }
18079 if (typeof encoding === 'number') {
18080 throw new TypeError('encoding must not be number');
18081 }
18082 if (typeof size !== 'number') {
18083 throw new TypeError('size must be a number');
18084 }
18085 if (size > MAX_LEN) {
18086 throw new RangeError('size is too large');
18087 }
18088 var enc = encoding;
18089 var _fill = fill;
18090 if (_fill === undefined) {
18091 enc = undefined;
18092 _fill = 0;
18093 }
18094 var buf = new Buffer(size);
18095 if (typeof _fill === 'string') {
18096 var fillBuf = new Buffer(_fill, enc);
18097 var flen = fillBuf.length;
18098 var i = -1;
18099 while (++i < size) {
18100 buf[i] = fillBuf[i % flen];
18101 }
18102 } else {
18103 buf.fill(_fill);
18104 }
18105 return buf;
18106 }
18107 exports.allocUnsafe = function allocUnsafe(size) {
18108 if (typeof Buffer.allocUnsafe === 'function') {
18109 return Buffer.allocUnsafe(size);
18110 }
18111 if (typeof size !== 'number') {
18112 throw new TypeError('size must be a number');
18113 }
18114 if (size > MAX_LEN) {
18115 throw new RangeError('size is too large');
18116 }
18117 return new Buffer(size);
18118 }
18119 exports.from = function from(value, encodingOrOffset, length) {
18120 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
18121 return Buffer.from(value, encodingOrOffset, length);
18122 }
18123 if (typeof value === 'number') {
18124 throw new TypeError('"value" argument must not be a number');
18125 }
18126 if (typeof value === 'string') {
18127 return new Buffer(value, encodingOrOffset);
18128 }
18129 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
18130 var offset = encodingOrOffset;
18131 if (arguments.length === 1) {
18132 return new Buffer(value);
18133 }
18134 if (typeof offset === 'undefined') {
18135 offset = 0;
18136 }
18137 var len = length;
18138 if (typeof len === 'undefined') {
18139 len = value.byteLength - offset;
18140 }
18141 if (offset >= value.byteLength) {
18142 throw new RangeError('\'offset\' is out of bounds');
18143 }
18144 if (len > value.byteLength - offset) {
18145 throw new RangeError('\'length\' is out of bounds');
18146 }
18147 return new Buffer(value.slice(offset, offset + len));
18148 }
18149 if (Buffer.isBuffer(value)) {
18150 var out = new Buffer(value.length);
18151 value.copy(out, 0, 0, value.length);
18152 return out;
18153 }
18154 if (value) {
18155 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
18156 return new Buffer(value);
18157 }
18158 if (value.type === 'Buffer' && Array.isArray(value.data)) {
18159 return new Buffer(value.data);
18160 }
18161 }
18162
18163 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
18164 }
18165 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
18166 if (typeof Buffer.allocUnsafeSlow === 'function') {
18167 return Buffer.allocUnsafeSlow(size);
18168 }
18169 if (typeof size !== 'number') {
18170 throw new TypeError('size must be a number');
18171 }
18172 if (size >= MAX_LEN) {
18173 throw new RangeError('size is too large');
18174 }
18175 return new SlowBuffer(size);
18176 }
18177
18178 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
18179 },{"buffer":5}],5:[function(require,module,exports){
18180 /*!
18181 * The buffer module from node.js, for the browser.
18182 *
18183 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
18184 * @license MIT
18185 */
18186 /* eslint-disable no-proto */
18187
18188 'use strict'
18189
18190 var base64 = require('base64-js')
18191 var ieee754 = require('ieee754')
18192
18193 exports.Buffer = Buffer
18194 exports.SlowBuffer = SlowBuffer
18195 exports.INSPECT_MAX_BYTES = 50
18196
18197 var K_MAX_LENGTH = 0x7fffffff
18198 exports.kMaxLength = K_MAX_LENGTH
18199
18200 /**
18201 * If `Buffer.TYPED_ARRAY_SUPPORT`:
18202 * === true Use Uint8Array implementation (fastest)
18203 * === false Print warning and recommend using `buffer` v4.x which has an Object
18204 * implementation (most compatible, even IE6)
18205 *
18206 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
18207 * Opera 11.6+, iOS 4.2+.
18208 *
18209 * We report that the browser does not support typed arrays if the are not subclassable
18210 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
18211 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
18212 * for __proto__ and has a buggy typed array implementation.
18213 */
18214 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
18215
18216 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
18217 typeof console.error === 'function') {
18218 console.error(
18219 'This browser lacks typed array (Uint8Array) support which is required by ' +
18220 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
18221 )
18222 }
18223
18224 function typedArraySupport () {
18225 // Can typed array instances can be augmented?
18226 try {
18227 var arr = new Uint8Array(1)
18228 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
18229 return arr.foo() === 42
18230 } catch (e) {
18231 return false
18232 }
18233 }
18234
18235 function createBuffer (length) {
18236 if (length > K_MAX_LENGTH) {
18237 throw new RangeError('Invalid typed array length')
18238 }
18239 // Return an augmented `Uint8Array` instance
18240 var buf = new Uint8Array(length)
18241 buf.__proto__ = Buffer.prototype
18242 return buf
18243 }
18244
18245 /**
18246 * The Buffer constructor returns instances of `Uint8Array` that have their
18247 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
18248 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
18249 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
18250 * returns a single octet.
18251 *
18252 * The `Uint8Array` prototype remains unmodified.
18253 */
18254
18255 function Buffer (arg, encodingOrOffset, length) {
18256 // Common case.
18257 if (typeof arg === 'number') {
18258 if (typeof encodingOrOffset === 'string') {
18259 throw new Error(
18260 'If encoding is specified then the first argument must be a string'
18261 )
18262 }
18263 return allocUnsafe(arg)
18264 }
18265 return from(arg, encodingOrOffset, length)
18266 }
18267
18268 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
18269 if (typeof Symbol !== 'undefined' && Symbol.species &&
18270 Buffer[Symbol.species] === Buffer) {
18271 Object.defineProperty(Buffer, Symbol.species, {
18272 value: null,
18273 configurable: true,
18274 enumerable: false,
18275 writable: false
18276 })
18277 }
18278
18279 Buffer.poolSize = 8192 // not used by this implementation
18280
18281 function from (value, encodingOrOffset, length) {
18282 if (typeof value === 'number') {
18283 throw new TypeError('"value" argument must not be a number')
18284 }
18285
18286 if (value instanceof ArrayBuffer) {
18287 return fromArrayBuffer(value, encodingOrOffset, length)
18288 }
18289
18290 if (typeof value === 'string') {
18291 return fromString(value, encodingOrOffset)
18292 }
18293
18294 return fromObject(value)
18295 }
18296
18297 /**
18298 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
18299 * if value is a number.
18300 * Buffer.from(str[, encoding])
18301 * Buffer.from(array)
18302 * Buffer.from(buffer)
18303 * Buffer.from(arrayBuffer[, byteOffset[, length]])
18304 **/
18305 Buffer.from = function (value, encodingOrOffset, length) {
18306 return from(value, encodingOrOffset, length)
18307 }
18308
18309 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
18310 // https://github.com/feross/buffer/pull/148
18311 Buffer.prototype.__proto__ = Uint8Array.prototype
18312 Buffer.__proto__ = Uint8Array
18313
18314 function assertSize (size) {
18315 if (typeof size !== 'number') {
18316 throw new TypeError('"size" argument must be a number')
18317 } else if (size < 0) {
18318 throw new RangeError('"size" argument must not be negative')
18319 }
18320 }
18321
18322 function alloc (size, fill, encoding) {
18323 assertSize(size)
18324 if (size <= 0) {
18325 return createBuffer(size)
18326 }
18327 if (fill !== undefined) {
18328 // Only pay attention to encoding if it's a string. This
18329 // prevents accidentally sending in a number that would
18330 // be interpretted as a start offset.
18331 return typeof encoding === 'string'
18332 ? createBuffer(size).fill(fill, encoding)
18333 : createBuffer(size).fill(fill)
18334 }
18335 return createBuffer(size)
18336 }
18337
18338 /**
18339 * Creates a new filled Buffer instance.
18340 * alloc(size[, fill[, encoding]])
18341 **/
18342 Buffer.alloc = function (size, fill, encoding) {
18343 return alloc(size, fill, encoding)
18344 }
18345
18346 function allocUnsafe (size) {
18347 assertSize(size)
18348 return createBuffer(size < 0 ? 0 : checked(size) | 0)
18349 }
18350
18351 /**
18352 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
18353 * */
18354 Buffer.allocUnsafe = function (size) {
18355 return allocUnsafe(size)
18356 }
18357 /**
18358 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
18359 */
18360 Buffer.allocUnsafeSlow = function (size) {
18361 return allocUnsafe(size)
18362 }
18363
18364 function fromString (string, encoding) {
18365 if (typeof encoding !== 'string' || encoding === '') {
18366 encoding = 'utf8'
18367 }
18368
18369 if (!Buffer.isEncoding(encoding)) {
18370 throw new TypeError('"encoding" must be a valid string encoding')
18371 }
18372
18373 var length = byteLength(string, encoding) | 0
18374 var buf = createBuffer(length)
18375
18376 var actual = buf.write(string, encoding)
18377
18378 if (actual !== length) {
18379 // Writing a hex string, for example, that contains invalid characters will
18380 // cause everything after the first invalid character to be ignored. (e.g.
18381 // 'abxxcd' will be treated as 'ab')
18382 buf = buf.slice(0, actual)
18383 }
18384
18385 return buf
18386 }
18387
18388 function fromArrayLike (array) {
18389 var length = array.length < 0 ? 0 : checked(array.length) | 0
18390 var buf = createBuffer(length)
18391 for (var i = 0; i < length; i += 1) {
18392 buf[i] = array[i] & 255
18393 }
18394 return buf
18395 }
18396
18397 function fromArrayBuffer (array, byteOffset, length) {
18398 if (byteOffset < 0 || array.byteLength < byteOffset) {
18399 throw new RangeError('\'offset\' is out of bounds')
18400 }
18401
18402 if (array.byteLength < byteOffset + (length || 0)) {
18403 throw new RangeError('\'length\' is out of bounds')
18404 }
18405
18406 var buf
18407 if (byteOffset === undefined && length === undefined) {
18408 buf = new Uint8Array(array)
18409 } else if (length === undefined) {
18410 buf = new Uint8Array(array, byteOffset)
18411 } else {
18412 buf = new Uint8Array(array, byteOffset, length)
18413 }
18414
18415 // Return an augmented `Uint8Array` instance
18416 buf.__proto__ = Buffer.prototype
18417 return buf
18418 }
18419
18420 function fromObject (obj) {
18421 if (Buffer.isBuffer(obj)) {
18422 var len = checked(obj.length) | 0
18423 var buf = createBuffer(len)
18424
18425 if (buf.length === 0) {
18426 return buf
18427 }
18428
18429 obj.copy(buf, 0, 0, len)
18430 return buf
18431 }
18432
18433 if (obj) {
18434 if (ArrayBuffer.isView(obj) || 'length' in obj) {
18435 if (typeof obj.length !== 'number' || isnan(obj.length)) {
18436 return createBuffer(0)
18437 }
18438 return fromArrayLike(obj)
18439 }
18440
18441 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
18442 return fromArrayLike(obj.data)
18443 }
18444 }
18445
18446 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
18447 }
18448
18449 function checked (length) {
18450 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
18451 // length is NaN (which is otherwise coerced to zero.)
18452 if (length >= K_MAX_LENGTH) {
18453 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
18454 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
18455 }
18456 return length | 0
18457 }
18458
18459 function SlowBuffer (length) {
18460 if (+length != length) { // eslint-disable-line eqeqeq
18461 length = 0
18462 }
18463 return Buffer.alloc(+length)
18464 }
18465
18466 Buffer.isBuffer = function isBuffer (b) {
18467 return b != null && b._isBuffer === true
18468 }
18469
18470 Buffer.compare = function compare (a, b) {
18471 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
18472 throw new TypeError('Arguments must be Buffers')
18473 }
18474
18475 if (a === b) return 0
18476
18477 var x = a.length
18478 var y = b.length
18479
18480 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
18481 if (a[i] !== b[i]) {
18482 x = a[i]
18483 y = b[i]
18484 break
18485 }
18486 }
18487
18488 if (x < y) return -1
18489 if (y < x) return 1
18490 return 0
18491 }
18492
18493 Buffer.isEncoding = function isEncoding (encoding) {
18494 switch (String(encoding).toLowerCase()) {
18495 case 'hex':
18496 case 'utf8':
18497 case 'utf-8':
18498 case 'ascii':
18499 case 'latin1':
18500 case 'binary':
18501 case 'base64':
18502 case 'ucs2':
18503 case 'ucs-2':
18504 case 'utf16le':
18505 case 'utf-16le':
18506 return true
18507 default:
18508 return false
18509 }
18510 }
18511
18512 Buffer.concat = function concat (list, length) {
18513 if (!Array.isArray(list)) {
18514 throw new TypeError('"list" argument must be an Array of Buffers')
18515 }
18516
18517 if (list.length === 0) {
18518 return Buffer.alloc(0)
18519 }
18520
18521 var i
18522 if (length === undefined) {
18523 length = 0
18524 for (i = 0; i < list.length; ++i) {
18525 length += list[i].length
18526 }
18527 }
18528
18529 var buffer = Buffer.allocUnsafe(length)
18530 var pos = 0
18531 for (i = 0; i < list.length; ++i) {
18532 var buf = list[i]
18533 if (!Buffer.isBuffer(buf)) {
18534 throw new TypeError('"list" argument must be an Array of Buffers')
18535 }
18536 buf.copy(buffer, pos)
18537 pos += buf.length
18538 }
18539 return buffer
18540 }
18541
18542 function byteLength (string, encoding) {
18543 if (Buffer.isBuffer(string)) {
18544 return string.length
18545 }
18546 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
18547 return string.byteLength
18548 }
18549 if (typeof string !== 'string') {
18550 string = '' + string
18551 }
18552
18553 var len = string.length
18554 if (len === 0) return 0
18555
18556 // Use a for loop to avoid recursion
18557 var loweredCase = false
18558 for (;;) {
18559 switch (encoding) {
18560 case 'ascii':
18561 case 'latin1':
18562 case 'binary':
18563 return len
18564 case 'utf8':
18565 case 'utf-8':
18566 case undefined:
18567 return utf8ToBytes(string).length
18568 case 'ucs2':
18569 case 'ucs-2':
18570 case 'utf16le':
18571 case 'utf-16le':
18572 return len * 2
18573 case 'hex':
18574 return len >>> 1
18575 case 'base64':
18576 return base64ToBytes(string).length
18577 default:
18578 if (loweredCase) return utf8ToBytes(string).length // assume utf8
18579 encoding = ('' + encoding).toLowerCase()
18580 loweredCase = true
18581 }
18582 }
18583 }
18584 Buffer.byteLength = byteLength
18585
18586 function slowToString (encoding, start, end) {
18587 var loweredCase = false
18588
18589 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
18590 // property of a typed array.
18591
18592 // This behaves neither like String nor Uint8Array in that we set start/end
18593 // to their upper/lower bounds if the value passed is out of range.
18594 // undefined is handled specially as per ECMA-262 6th Edition,
18595 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
18596 if (start === undefined || start < 0) {
18597 start = 0
18598 }
18599 // Return early if start > this.length. Done here to prevent potential uint32
18600 // coercion fail below.
18601 if (start > this.length) {
18602 return ''
18603 }
18604
18605 if (end === undefined || end > this.length) {
18606 end = this.length
18607 }
18608
18609 if (end <= 0) {
18610 return ''
18611 }
18612
18613 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
18614 end >>>= 0
18615 start >>>= 0
18616
18617 if (end <= start) {
18618 return ''
18619 }
18620
18621 if (!encoding) encoding = 'utf8'
18622
18623 while (true) {
18624 switch (encoding) {
18625 case 'hex':
18626 return hexSlice(this, start, end)
18627
18628 case 'utf8':
18629 case 'utf-8':
18630 return utf8Slice(this, start, end)
18631
18632 case 'ascii':
18633 return asciiSlice(this, start, end)
18634
18635 case 'latin1':
18636 case 'binary':
18637 return latin1Slice(this, start, end)
18638
18639 case 'base64':
18640 return base64Slice(this, start, end)
18641
18642 case 'ucs2':
18643 case 'ucs-2':
18644 case 'utf16le':
18645 case 'utf-16le':
18646 return utf16leSlice(this, start, end)
18647
18648 default:
18649 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
18650 encoding = (encoding + '').toLowerCase()
18651 loweredCase = true
18652 }
18653 }
18654 }
18655
18656 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
18657 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
18658 // reliably in a browserify context because there could be multiple different
18659 // copies of the 'buffer' package in use. This method works even for Buffer
18660 // instances that were created from another copy of the `buffer` package.
18661 // See: https://github.com/feross/buffer/issues/154
18662 Buffer.prototype._isBuffer = true
18663
18664 function swap (b, n, m) {
18665 var i = b[n]
18666 b[n] = b[m]
18667 b[m] = i
18668 }
18669
18670 Buffer.prototype.swap16 = function swap16 () {
18671 var len = this.length
18672 if (len % 2 !== 0) {
18673 throw new RangeError('Buffer size must be a multiple of 16-bits')
18674 }
18675 for (var i = 0; i < len; i += 2) {
18676 swap(this, i, i + 1)
18677 }
18678 return this
18679 }
18680
18681 Buffer.prototype.swap32 = function swap32 () {
18682 var len = this.length
18683 if (len % 4 !== 0) {
18684 throw new RangeError('Buffer size must be a multiple of 32-bits')
18685 }
18686 for (var i = 0; i < len; i += 4) {
18687 swap(this, i, i + 3)
18688 swap(this, i + 1, i + 2)
18689 }
18690 return this
18691 }
18692
18693 Buffer.prototype.swap64 = function swap64 () {
18694 var len = this.length
18695 if (len % 8 !== 0) {
18696 throw new RangeError('Buffer size must be a multiple of 64-bits')
18697 }
18698 for (var i = 0; i < len; i += 8) {
18699 swap(this, i, i + 7)
18700 swap(this, i + 1, i + 6)
18701 swap(this, i + 2, i + 5)
18702 swap(this, i + 3, i + 4)
18703 }
18704 return this
18705 }
18706
18707 Buffer.prototype.toString = function toString () {
18708 var length = this.length
18709 if (length === 0) return ''
18710 if (arguments.length === 0) return utf8Slice(this, 0, length)
18711 return slowToString.apply(this, arguments)
18712 }
18713
18714 Buffer.prototype.equals = function equals (b) {
18715 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
18716 if (this === b) return true
18717 return Buffer.compare(this, b) === 0
18718 }
18719
18720 Buffer.prototype.inspect = function inspect () {
18721 var str = ''
18722 var max = exports.INSPECT_MAX_BYTES
18723 if (this.length > 0) {
18724 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
18725 if (this.length > max) str += ' ... '
18726 }
18727 return '<Buffer ' + str + '>'
18728 }
18729
18730 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
18731 if (!Buffer.isBuffer(target)) {
18732 throw new TypeError('Argument must be a Buffer')
18733 }
18734
18735 if (start === undefined) {
18736 start = 0
18737 }
18738 if (end === undefined) {
18739 end = target ? target.length : 0
18740 }
18741 if (thisStart === undefined) {
18742 thisStart = 0
18743 }
18744 if (thisEnd === undefined) {
18745 thisEnd = this.length
18746 }
18747
18748 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
18749 throw new RangeError('out of range index')
18750 }
18751
18752 if (thisStart >= thisEnd && start >= end) {
18753 return 0
18754 }
18755 if (thisStart >= thisEnd) {
18756 return -1
18757 }
18758 if (start >= end) {
18759 return 1
18760 }
18761
18762 start >>>= 0
18763 end >>>= 0
18764 thisStart >>>= 0
18765 thisEnd >>>= 0
18766
18767 if (this === target) return 0
18768
18769 var x = thisEnd - thisStart
18770 var y = end - start
18771 var len = Math.min(x, y)
18772
18773 var thisCopy = this.slice(thisStart, thisEnd)
18774 var targetCopy = target.slice(start, end)
18775
18776 for (var i = 0; i < len; ++i) {
18777 if (thisCopy[i] !== targetCopy[i]) {
18778 x = thisCopy[i]
18779 y = targetCopy[i]
18780 break
18781 }
18782 }
18783
18784 if (x < y) return -1
18785 if (y < x) return 1
18786 return 0
18787 }
18788
18789 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
18790 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
18791 //
18792 // Arguments:
18793 // - buffer - a Buffer to search
18794 // - val - a string, Buffer, or number
18795 // - byteOffset - an index into `buffer`; will be clamped to an int32
18796 // - encoding - an optional encoding, relevant is val is a string
18797 // - dir - true for indexOf, false for lastIndexOf
18798 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
18799 // Empty buffer means no match
18800 if (buffer.length === 0) return -1
18801
18802 // Normalize byteOffset
18803 if (typeof byteOffset === 'string') {
18804 encoding = byteOffset
18805 byteOffset = 0
18806 } else if (byteOffset > 0x7fffffff) {
18807 byteOffset = 0x7fffffff
18808 } else if (byteOffset < -0x80000000) {
18809 byteOffset = -0x80000000
18810 }
18811 byteOffset = +byteOffset // Coerce to Number.
18812 if (isNaN(byteOffset)) {
18813 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
18814 byteOffset = dir ? 0 : (buffer.length - 1)
18815 }
18816
18817 // Normalize byteOffset: negative offsets start from the end of the buffer
18818 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
18819 if (byteOffset >= buffer.length) {
18820 if (dir) return -1
18821 else byteOffset = buffer.length - 1
18822 } else if (byteOffset < 0) {
18823 if (dir) byteOffset = 0
18824 else return -1
18825 }
18826
18827 // Normalize val
18828 if (typeof val === 'string') {
18829 val = Buffer.from(val, encoding)
18830 }
18831
18832 // Finally, search either indexOf (if dir is true) or lastIndexOf
18833 if (Buffer.isBuffer(val)) {
18834 // Special case: looking for empty string/buffer always fails
18835 if (val.length === 0) {
18836 return -1
18837 }
18838 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
18839 } else if (typeof val === 'number') {
18840 val = val & 0xFF // Search for a byte value [0-255]
18841 if (typeof Uint8Array.prototype.indexOf === 'function') {
18842 if (dir) {
18843 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
18844 } else {
18845 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
18846 }
18847 }
18848 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
18849 }
18850
18851 throw new TypeError('val must be string, number or Buffer')
18852 }
18853
18854 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
18855 var indexSize = 1
18856 var arrLength = arr.length
18857 var valLength = val.length
18858
18859 if (encoding !== undefined) {
18860 encoding = String(encoding).toLowerCase()
18861 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
18862 encoding === 'utf16le' || encoding === 'utf-16le') {
18863 if (arr.length < 2 || val.length < 2) {
18864 return -1
18865 }
18866 indexSize = 2
18867 arrLength /= 2
18868 valLength /= 2
18869 byteOffset /= 2
18870 }
18871 }
18872
18873 function read (buf, i) {
18874 if (indexSize === 1) {
18875 return buf[i]
18876 } else {
18877 return buf.readUInt16BE(i * indexSize)
18878 }
18879 }
18880
18881 var i
18882 if (dir) {
18883 var foundIndex = -1
18884 for (i = byteOffset; i < arrLength; i++) {
18885 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
18886 if (foundIndex === -1) foundIndex = i
18887 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
18888 } else {
18889 if (foundIndex !== -1) i -= i - foundIndex
18890 foundIndex = -1
18891 }
18892 }
18893 } else {
18894 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
18895 for (i = byteOffset; i >= 0; i--) {
18896 var found = true
18897 for (var j = 0; j < valLength; j++) {
18898 if (read(arr, i + j) !== read(val, j)) {
18899 found = false
18900 break
18901 }
18902 }
18903 if (found) return i
18904 }
18905 }
18906
18907 return -1
18908 }
18909
18910 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
18911 return this.indexOf(val, byteOffset, encoding) !== -1
18912 }
18913
18914 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
18915 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
18916 }
18917
18918 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
18919 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
18920 }
18921
18922 function hexWrite (buf, string, offset, length) {
18923 offset = Number(offset) || 0
18924 var remaining = buf.length - offset
18925 if (!length) {
18926 length = remaining
18927 } else {
18928 length = Number(length)
18929 if (length > remaining) {
18930 length = remaining
18931 }
18932 }
18933
18934 // must be an even number of digits
18935 var strLen = string.length
18936 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
18937
18938 if (length > strLen / 2) {
18939 length = strLen / 2
18940 }
18941 for (var i = 0; i < length; ++i) {
18942 var parsed = parseInt(string.substr(i * 2, 2), 16)
18943 if (isNaN(parsed)) return i
18944 buf[offset + i] = parsed
18945 }
18946 return i
18947 }
18948
18949 function utf8Write (buf, string, offset, length) {
18950 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
18951 }
18952
18953 function asciiWrite (buf, string, offset, length) {
18954 return blitBuffer(asciiToBytes(string), buf, offset, length)
18955 }
18956
18957 function latin1Write (buf, string, offset, length) {
18958 return asciiWrite(buf, string, offset, length)
18959 }
18960
18961 function base64Write (buf, string, offset, length) {
18962 return blitBuffer(base64ToBytes(string), buf, offset, length)
18963 }
18964
18965 function ucs2Write (buf, string, offset, length) {
18966 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
18967 }
18968
18969 Buffer.prototype.write = function write (string, offset, length, encoding) {
18970 // Buffer#write(string)
18971 if (offset === undefined) {
18972 encoding = 'utf8'
18973 length = this.length
18974 offset = 0
18975 // Buffer#write(string, encoding)
18976 } else if (length === undefined && typeof offset === 'string') {
18977 encoding = offset
18978 length = this.length
18979 offset = 0
18980 // Buffer#write(string, offset[, length][, encoding])
18981 } else if (isFinite(offset)) {
18982 offset = offset >>> 0
18983 if (isFinite(length)) {
18984 length = length >>> 0
18985 if (encoding === undefined) encoding = 'utf8'
18986 } else {
18987 encoding = length
18988 length = undefined
18989 }
18990 } else {
18991 throw new Error(
18992 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
18993 )
18994 }
18995
18996 var remaining = this.length - offset
18997 if (length === undefined || length > remaining) length = remaining
18998
18999 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
19000 throw new RangeError('Attempt to write outside buffer bounds')
19001 }
19002
19003 if (!encoding) encoding = 'utf8'
19004
19005 var loweredCase = false
19006 for (;;) {
19007 switch (encoding) {
19008 case 'hex':
19009 return hexWrite(this, string, offset, length)
19010
19011 case 'utf8':
19012 case 'utf-8':
19013 return utf8Write(this, string, offset, length)
19014
19015 case 'ascii':
19016 return asciiWrite(this, string, offset, length)
19017
19018 case 'latin1':
19019 case 'binary':
19020 return latin1Write(this, string, offset, length)
19021
19022 case 'base64':
19023 // Warning: maxLength not taken into account in base64Write
19024 return base64Write(this, string, offset, length)
19025
19026 case 'ucs2':
19027 case 'ucs-2':
19028 case 'utf16le':
19029 case 'utf-16le':
19030 return ucs2Write(this, string, offset, length)
19031
19032 default:
19033 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
19034 encoding = ('' + encoding).toLowerCase()
19035 loweredCase = true
19036 }
19037 }
19038 }
19039
19040 Buffer.prototype.toJSON = function toJSON () {
19041 return {
19042 type: 'Buffer',
19043 data: Array.prototype.slice.call(this._arr || this, 0)
19044 }
19045 }
19046
19047 function base64Slice (buf, start, end) {
19048 if (start === 0 && end === buf.length) {
19049 return base64.fromByteArray(buf)
19050 } else {
19051 return base64.fromByteArray(buf.slice(start, end))
19052 }
19053 }
19054
19055 function utf8Slice (buf, start, end) {
19056 end = Math.min(buf.length, end)
19057 var res = []
19058
19059 var i = start
19060 while (i < end) {
19061 var firstByte = buf[i]
19062 var codePoint = null
19063 var bytesPerSequence = (firstByte > 0xEF) ? 4
19064 : (firstByte > 0xDF) ? 3
19065 : (firstByte > 0xBF) ? 2
19066 : 1
19067
19068 if (i + bytesPerSequence <= end) {
19069 var secondByte, thirdByte, fourthByte, tempCodePoint
19070
19071 switch (bytesPerSequence) {
19072 case 1:
19073 if (firstByte < 0x80) {
19074 codePoint = firstByte
19075 }
19076 break
19077 case 2:
19078 secondByte = buf[i + 1]
19079 if ((secondByte & 0xC0) === 0x80) {
19080 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
19081 if (tempCodePoint > 0x7F) {
19082 codePoint = tempCodePoint
19083 }
19084 }
19085 break
19086 case 3:
19087 secondByte = buf[i + 1]
19088 thirdByte = buf[i + 2]
19089 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
19090 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
19091 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
19092 codePoint = tempCodePoint
19093 }
19094 }
19095 break
19096 case 4:
19097 secondByte = buf[i + 1]
19098 thirdByte = buf[i + 2]
19099 fourthByte = buf[i + 3]
19100 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
19101 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
19102 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
19103 codePoint = tempCodePoint
19104 }
19105 }
19106 }
19107 }
19108
19109 if (codePoint === null) {
19110 // we did not generate a valid codePoint so insert a
19111 // replacement char (U+FFFD) and advance only 1 byte
19112 codePoint = 0xFFFD
19113 bytesPerSequence = 1
19114 } else if (codePoint > 0xFFFF) {
19115 // encode to utf16 (surrogate pair dance)
19116 codePoint -= 0x10000
19117 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
19118 codePoint = 0xDC00 | codePoint & 0x3FF
19119 }
19120
19121 res.push(codePoint)
19122 i += bytesPerSequence
19123 }
19124
19125 return decodeCodePointsArray(res)
19126 }
19127
19128 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
19129 // the lowest limit is Chrome, with 0x10000 args.
19130 // We go 1 magnitude less, for safety
19131 var MAX_ARGUMENTS_LENGTH = 0x1000
19132
19133 function decodeCodePointsArray (codePoints) {
19134 var len = codePoints.length
19135 if (len <= MAX_ARGUMENTS_LENGTH) {
19136 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
19137 }
19138
19139 // Decode in chunks to avoid "call stack size exceeded".
19140 var res = ''
19141 var i = 0
19142 while (i < len) {
19143 res += String.fromCharCode.apply(
19144 String,
19145 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
19146 )
19147 }
19148 return res
19149 }
19150
19151 function asciiSlice (buf, start, end) {
19152 var ret = ''
19153 end = Math.min(buf.length, end)
19154
19155 for (var i = start; i < end; ++i) {
19156 ret += String.fromCharCode(buf[i] & 0x7F)
19157 }
19158 return ret
19159 }
19160
19161 function latin1Slice (buf, start, end) {
19162 var ret = ''
19163 end = Math.min(buf.length, end)
19164
19165 for (var i = start; i < end; ++i) {
19166 ret += String.fromCharCode(buf[i])
19167 }
19168 return ret
19169 }
19170
19171 function hexSlice (buf, start, end) {
19172 var len = buf.length
19173
19174 if (!start || start < 0) start = 0
19175 if (!end || end < 0 || end > len) end = len
19176
19177 var out = ''
19178 for (var i = start; i < end; ++i) {
19179 out += toHex(buf[i])
19180 }
19181 return out
19182 }
19183
19184 function utf16leSlice (buf, start, end) {
19185 var bytes = buf.slice(start, end)
19186 var res = ''
19187 for (var i = 0; i < bytes.length; i += 2) {
19188 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
19189 }
19190 return res
19191 }
19192
19193 Buffer.prototype.slice = function slice (start, end) {
19194 var len = this.length
19195 start = ~~start
19196 end = end === undefined ? len : ~~end
19197
19198 if (start < 0) {
19199 start += len
19200 if (start < 0) start = 0
19201 } else if (start > len) {
19202 start = len
19203 }
19204
19205 if (end < 0) {
19206 end += len
19207 if (end < 0) end = 0
19208 } else if (end > len) {
19209 end = len
19210 }
19211
19212 if (end < start) end = start
19213
19214 var newBuf = this.subarray(start, end)
19215 // Return an augmented `Uint8Array` instance
19216 newBuf.__proto__ = Buffer.prototype
19217 return newBuf
19218 }
19219
19220 /*
19221 * Need to make sure that buffer isn't trying to write out of bounds.
19222 */
19223 function checkOffset (offset, ext, length) {
19224 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
19225 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
19226 }
19227
19228 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
19229 offset = offset >>> 0
19230 byteLength = byteLength >>> 0
19231 if (!noAssert) checkOffset(offset, byteLength, this.length)
19232
19233 var val = this[offset]
19234 var mul = 1
19235 var i = 0
19236 while (++i < byteLength && (mul *= 0x100)) {
19237 val += this[offset + i] * mul
19238 }
19239
19240 return val
19241 }
19242
19243 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
19244 offset = offset >>> 0
19245 byteLength = byteLength >>> 0
19246 if (!noAssert) {
19247 checkOffset(offset, byteLength, this.length)
19248 }
19249
19250 var val = this[offset + --byteLength]
19251 var mul = 1
19252 while (byteLength > 0 && (mul *= 0x100)) {
19253 val += this[offset + --byteLength] * mul
19254 }
19255
19256 return val
19257 }
19258
19259 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
19260 offset = offset >>> 0
19261 if (!noAssert) checkOffset(offset, 1, this.length)
19262 return this[offset]
19263 }
19264
19265 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
19266 offset = offset >>> 0
19267 if (!noAssert) checkOffset(offset, 2, this.length)
19268 return this[offset] | (this[offset + 1] << 8)
19269 }
19270
19271 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
19272 offset = offset >>> 0
19273 if (!noAssert) checkOffset(offset, 2, this.length)
19274 return (this[offset] << 8) | this[offset + 1]
19275 }
19276
19277 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
19278 offset = offset >>> 0
19279 if (!noAssert) checkOffset(offset, 4, this.length)
19280
19281 return ((this[offset]) |
19282 (this[offset + 1] << 8) |
19283 (this[offset + 2] << 16)) +
19284 (this[offset + 3] * 0x1000000)
19285 }
19286
19287 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
19288 offset = offset >>> 0
19289 if (!noAssert) checkOffset(offset, 4, this.length)
19290
19291 return (this[offset] * 0x1000000) +
19292 ((this[offset + 1] << 16) |
19293 (this[offset + 2] << 8) |
19294 this[offset + 3])
19295 }
19296
19297 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
19298 offset = offset >>> 0
19299 byteLength = byteLength >>> 0
19300 if (!noAssert) checkOffset(offset, byteLength, this.length)
19301
19302 var val = this[offset]
19303 var mul = 1
19304 var i = 0
19305 while (++i < byteLength && (mul *= 0x100)) {
19306 val += this[offset + i] * mul
19307 }
19308 mul *= 0x80
19309
19310 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
19311
19312 return val
19313 }
19314
19315 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
19316 offset = offset >>> 0
19317 byteLength = byteLength >>> 0
19318 if (!noAssert) checkOffset(offset, byteLength, this.length)
19319
19320 var i = byteLength
19321 var mul = 1
19322 var val = this[offset + --i]
19323 while (i > 0 && (mul *= 0x100)) {
19324 val += this[offset + --i] * mul
19325 }
19326 mul *= 0x80
19327
19328 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
19329
19330 return val
19331 }
19332
19333 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
19334 offset = offset >>> 0
19335 if (!noAssert) checkOffset(offset, 1, this.length)
19336 if (!(this[offset] & 0x80)) return (this[offset])
19337 return ((0xff - this[offset] + 1) * -1)
19338 }
19339
19340 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
19341 offset = offset >>> 0
19342 if (!noAssert) checkOffset(offset, 2, this.length)
19343 var val = this[offset] | (this[offset + 1] << 8)
19344 return (val & 0x8000) ? val | 0xFFFF0000 : val
19345 }
19346
19347 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
19348 offset = offset >>> 0
19349 if (!noAssert) checkOffset(offset, 2, this.length)
19350 var val = this[offset + 1] | (this[offset] << 8)
19351 return (val & 0x8000) ? val | 0xFFFF0000 : val
19352 }
19353
19354 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
19355 offset = offset >>> 0
19356 if (!noAssert) checkOffset(offset, 4, this.length)
19357
19358 return (this[offset]) |
19359 (this[offset + 1] << 8) |
19360 (this[offset + 2] << 16) |
19361 (this[offset + 3] << 24)
19362 }
19363
19364 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
19365 offset = offset >>> 0
19366 if (!noAssert) checkOffset(offset, 4, this.length)
19367
19368 return (this[offset] << 24) |
19369 (this[offset + 1] << 16) |
19370 (this[offset + 2] << 8) |
19371 (this[offset + 3])
19372 }
19373
19374 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
19375 offset = offset >>> 0
19376 if (!noAssert) checkOffset(offset, 4, this.length)
19377 return ieee754.read(this, offset, true, 23, 4)
19378 }
19379
19380 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
19381 offset = offset >>> 0
19382 if (!noAssert) checkOffset(offset, 4, this.length)
19383 return ieee754.read(this, offset, false, 23, 4)
19384 }
19385
19386 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
19387 offset = offset >>> 0
19388 if (!noAssert) checkOffset(offset, 8, this.length)
19389 return ieee754.read(this, offset, true, 52, 8)
19390 }
19391
19392 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
19393 offset = offset >>> 0
19394 if (!noAssert) checkOffset(offset, 8, this.length)
19395 return ieee754.read(this, offset, false, 52, 8)
19396 }
19397
19398 function checkInt (buf, value, offset, ext, max, min) {
19399 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
19400 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
19401 if (offset + ext > buf.length) throw new RangeError('Index out of range')
19402 }
19403
19404 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
19405 value = +value
19406 offset = offset >>> 0
19407 byteLength = byteLength >>> 0
19408 if (!noAssert) {
19409 var maxBytes = Math.pow(2, 8 * byteLength) - 1
19410 checkInt(this, value, offset, byteLength, maxBytes, 0)
19411 }
19412
19413 var mul = 1
19414 var i = 0
19415 this[offset] = value & 0xFF
19416 while (++i < byteLength && (mul *= 0x100)) {
19417 this[offset + i] = (value / mul) & 0xFF
19418 }
19419
19420 return offset + byteLength
19421 }
19422
19423 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
19424 value = +value
19425 offset = offset >>> 0
19426 byteLength = byteLength >>> 0
19427 if (!noAssert) {
19428 var maxBytes = Math.pow(2, 8 * byteLength) - 1
19429 checkInt(this, value, offset, byteLength, maxBytes, 0)
19430 }
19431
19432 var i = byteLength - 1
19433 var mul = 1
19434 this[offset + i] = value & 0xFF
19435 while (--i >= 0 && (mul *= 0x100)) {
19436 this[offset + i] = (value / mul) & 0xFF
19437 }
19438
19439 return offset + byteLength
19440 }
19441
19442 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
19443 value = +value
19444 offset = offset >>> 0
19445 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
19446 this[offset] = (value & 0xff)
19447 return offset + 1
19448 }
19449
19450 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
19451 value = +value
19452 offset = offset >>> 0
19453 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
19454 this[offset] = (value & 0xff)
19455 this[offset + 1] = (value >>> 8)
19456 return offset + 2
19457 }
19458
19459 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
19460 value = +value
19461 offset = offset >>> 0
19462 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
19463 this[offset] = (value >>> 8)
19464 this[offset + 1] = (value & 0xff)
19465 return offset + 2
19466 }
19467
19468 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
19469 value = +value
19470 offset = offset >>> 0
19471 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
19472 this[offset + 3] = (value >>> 24)
19473 this[offset + 2] = (value >>> 16)
19474 this[offset + 1] = (value >>> 8)
19475 this[offset] = (value & 0xff)
19476 return offset + 4
19477 }
19478
19479 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
19480 value = +value
19481 offset = offset >>> 0
19482 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
19483 this[offset] = (value >>> 24)
19484 this[offset + 1] = (value >>> 16)
19485 this[offset + 2] = (value >>> 8)
19486 this[offset + 3] = (value & 0xff)
19487 return offset + 4
19488 }
19489
19490 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
19491 value = +value
19492 offset = offset >>> 0
19493 if (!noAssert) {
19494 var limit = Math.pow(2, (8 * byteLength) - 1)
19495
19496 checkInt(this, value, offset, byteLength, limit - 1, -limit)
19497 }
19498
19499 var i = 0
19500 var mul = 1
19501 var sub = 0
19502 this[offset] = value & 0xFF
19503 while (++i < byteLength && (mul *= 0x100)) {
19504 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
19505 sub = 1
19506 }
19507 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
19508 }
19509
19510 return offset + byteLength
19511 }
19512
19513 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
19514 value = +value
19515 offset = offset >>> 0
19516 if (!noAssert) {
19517 var limit = Math.pow(2, (8 * byteLength) - 1)
19518
19519 checkInt(this, value, offset, byteLength, limit - 1, -limit)
19520 }
19521
19522 var i = byteLength - 1
19523 var mul = 1
19524 var sub = 0
19525 this[offset + i] = value & 0xFF
19526 while (--i >= 0 && (mul *= 0x100)) {
19527 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
19528 sub = 1
19529 }
19530 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
19531 }
19532
19533 return offset + byteLength
19534 }
19535
19536 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
19537 value = +value
19538 offset = offset >>> 0
19539 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
19540 if (value < 0) value = 0xff + value + 1
19541 this[offset] = (value & 0xff)
19542 return offset + 1
19543 }
19544
19545 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
19546 value = +value
19547 offset = offset >>> 0
19548 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
19549 this[offset] = (value & 0xff)
19550 this[offset + 1] = (value >>> 8)
19551 return offset + 2
19552 }
19553
19554 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
19555 value = +value
19556 offset = offset >>> 0
19557 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
19558 this[offset] = (value >>> 8)
19559 this[offset + 1] = (value & 0xff)
19560 return offset + 2
19561 }
19562
19563 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
19564 value = +value
19565 offset = offset >>> 0
19566 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
19567 this[offset] = (value & 0xff)
19568 this[offset + 1] = (value >>> 8)
19569 this[offset + 2] = (value >>> 16)
19570 this[offset + 3] = (value >>> 24)
19571 return offset + 4
19572 }
19573
19574 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
19575 value = +value
19576 offset = offset >>> 0
19577 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
19578 if (value < 0) value = 0xffffffff + value + 1
19579 this[offset] = (value >>> 24)
19580 this[offset + 1] = (value >>> 16)
19581 this[offset + 2] = (value >>> 8)
19582 this[offset + 3] = (value & 0xff)
19583 return offset + 4
19584 }
19585
19586 function checkIEEE754 (buf, value, offset, ext, max, min) {
19587 if (offset + ext > buf.length) throw new RangeError('Index out of range')
19588 if (offset < 0) throw new RangeError('Index out of range')
19589 }
19590
19591 function writeFloat (buf, value, offset, littleEndian, noAssert) {
19592 value = +value
19593 offset = offset >>> 0
19594 if (!noAssert) {
19595 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
19596 }
19597 ieee754.write(buf, value, offset, littleEndian, 23, 4)
19598 return offset + 4
19599 }
19600
19601 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
19602 return writeFloat(this, value, offset, true, noAssert)
19603 }
19604
19605 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
19606 return writeFloat(this, value, offset, false, noAssert)
19607 }
19608
19609 function writeDouble (buf, value, offset, littleEndian, noAssert) {
19610 value = +value
19611 offset = offset >>> 0
19612 if (!noAssert) {
19613 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
19614 }
19615 ieee754.write(buf, value, offset, littleEndian, 52, 8)
19616 return offset + 8
19617 }
19618
19619 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
19620 return writeDouble(this, value, offset, true, noAssert)
19621 }
19622
19623 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
19624 return writeDouble(this, value, offset, false, noAssert)
19625 }
19626
19627 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
19628 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
19629 if (!start) start = 0
19630 if (!end && end !== 0) end = this.length
19631 if (targetStart >= target.length) targetStart = target.length
19632 if (!targetStart) targetStart = 0
19633 if (end > 0 && end < start) end = start
19634
19635 // Copy 0 bytes; we're done
19636 if (end === start) return 0
19637 if (target.length === 0 || this.length === 0) return 0
19638
19639 // Fatal error conditions
19640 if (targetStart < 0) {
19641 throw new RangeError('targetStart out of bounds')
19642 }
19643 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
19644 if (end < 0) throw new RangeError('sourceEnd out of bounds')
19645
19646 // Are we oob?
19647 if (end > this.length) end = this.length
19648 if (target.length - targetStart < end - start) {
19649 end = target.length - targetStart + start
19650 }
19651
19652 var len = end - start
19653 var i
19654
19655 if (this === target && start < targetStart && targetStart < end) {
19656 // descending copy from end
19657 for (i = len - 1; i >= 0; --i) {
19658 target[i + targetStart] = this[i + start]
19659 }
19660 } else if (len < 1000) {
19661 // ascending copy from start
19662 for (i = 0; i < len; ++i) {
19663 target[i + targetStart] = this[i + start]
19664 }
19665 } else {
19666 Uint8Array.prototype.set.call(
19667 target,
19668 this.subarray(start, start + len),
19669 targetStart
19670 )
19671 }
19672
19673 return len
19674 }
19675
19676 // Usage:
19677 // buffer.fill(number[, offset[, end]])
19678 // buffer.fill(buffer[, offset[, end]])
19679 // buffer.fill(string[, offset[, end]][, encoding])
19680 Buffer.prototype.fill = function fill (val, start, end, encoding) {
19681 // Handle string cases:
19682 if (typeof val === 'string') {
19683 if (typeof start === 'string') {
19684 encoding = start
19685 start = 0
19686 end = this.length
19687 } else if (typeof end === 'string') {
19688 encoding = end
19689 end = this.length
19690 }
19691 if (val.length === 1) {
19692 var code = val.charCodeAt(0)
19693 if (code < 256) {
19694 val = code
19695 }
19696 }
19697 if (encoding !== undefined && typeof encoding !== 'string') {
19698 throw new TypeError('encoding must be a string')
19699 }
19700 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
19701 throw new TypeError('Unknown encoding: ' + encoding)
19702 }
19703 } else if (typeof val === 'number') {
19704 val = val & 255
19705 }
19706
19707 // Invalid ranges are not set to a default, so can range check early.
19708 if (start < 0 || this.length < start || this.length < end) {
19709 throw new RangeError('Out of range index')
19710 }
19711
19712 if (end <= start) {
19713 return this
19714 }
19715
19716 start = start >>> 0
19717 end = end === undefined ? this.length : end >>> 0
19718
19719 if (!val) val = 0
19720
19721 var i
19722 if (typeof val === 'number') {
19723 for (i = start; i < end; ++i) {
19724 this[i] = val
19725 }
19726 } else {
19727 var bytes = Buffer.isBuffer(val)
19728 ? val
19729 : new Buffer(val, encoding)
19730 var len = bytes.length
19731 for (i = 0; i < end - start; ++i) {
19732 this[i + start] = bytes[i % len]
19733 }
19734 }
19735
19736 return this
19737 }
19738
19739 // HELPER FUNCTIONS
19740 // ================
19741
19742 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
19743
19744 function base64clean (str) {
19745 // Node strips out invalid characters like \n and \t from the string, base64-js does not
19746 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
19747 // Node converts strings with length < 2 to ''
19748 if (str.length < 2) return ''
19749 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
19750 while (str.length % 4 !== 0) {
19751 str = str + '='
19752 }
19753 return str
19754 }
19755
19756 function stringtrim (str) {
19757 if (str.trim) return str.trim()
19758 return str.replace(/^\s+|\s+$/g, '')
19759 }
19760
19761 function toHex (n) {
19762 if (n < 16) return '0' + n.toString(16)
19763 return n.toString(16)
19764 }
19765
19766 function utf8ToBytes (string, units) {
19767 units = units || Infinity
19768 var codePoint
19769 var length = string.length
19770 var leadSurrogate = null
19771 var bytes = []
19772
19773 for (var i = 0; i < length; ++i) {
19774 codePoint = string.charCodeAt(i)
19775
19776 // is surrogate component
19777 if (codePoint > 0xD7FF && codePoint < 0xE000) {
19778 // last char was a lead
19779 if (!leadSurrogate) {
19780 // no lead yet
19781 if (codePoint > 0xDBFF) {
19782 // unexpected trail
19783 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
19784 continue
19785 } else if (i + 1 === length) {
19786 // unpaired lead
19787 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
19788 continue
19789 }
19790
19791 // valid lead
19792 leadSurrogate = codePoint
19793
19794 continue
19795 }
19796
19797 // 2 leads in a row
19798 if (codePoint < 0xDC00) {
19799 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
19800 leadSurrogate = codePoint
19801 continue
19802 }
19803
19804 // valid surrogate pair
19805 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
19806 } else if (leadSurrogate) {
19807 // valid bmp char, but last char was a lead
19808 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
19809 }
19810
19811 leadSurrogate = null
19812
19813 // encode utf8
19814 if (codePoint < 0x80) {
19815 if ((units -= 1) < 0) break
19816 bytes.push(codePoint)
19817 } else if (codePoint < 0x800) {
19818 if ((units -= 2) < 0) break
19819 bytes.push(
19820 codePoint >> 0x6 | 0xC0,
19821 codePoint & 0x3F | 0x80
19822 )
19823 } else if (codePoint < 0x10000) {
19824 if ((units -= 3) < 0) break
19825 bytes.push(
19826 codePoint >> 0xC | 0xE0,
19827 codePoint >> 0x6 & 0x3F | 0x80,
19828 codePoint & 0x3F | 0x80
19829 )
19830 } else if (codePoint < 0x110000) {
19831 if ((units -= 4) < 0) break
19832 bytes.push(
19833 codePoint >> 0x12 | 0xF0,
19834 codePoint >> 0xC & 0x3F | 0x80,
19835 codePoint >> 0x6 & 0x3F | 0x80,
19836 codePoint & 0x3F | 0x80
19837 )
19838 } else {
19839 throw new Error('Invalid code point')
19840 }
19841 }
19842
19843 return bytes
19844 }
19845
19846 function asciiToBytes (str) {
19847 var byteArray = []
19848 for (var i = 0; i < str.length; ++i) {
19849 // Node's code seems to be doing this and not & 0x7F..
19850 byteArray.push(str.charCodeAt(i) & 0xFF)
19851 }
19852 return byteArray
19853 }
19854
19855 function utf16leToBytes (str, units) {
19856 var c, hi, lo
19857 var byteArray = []
19858 for (var i = 0; i < str.length; ++i) {
19859 if ((units -= 2) < 0) break
19860
19861 c = str.charCodeAt(i)
19862 hi = c >> 8
19863 lo = c % 256
19864 byteArray.push(lo)
19865 byteArray.push(hi)
19866 }
19867
19868 return byteArray
19869 }
19870
19871 function base64ToBytes (str) {
19872 return base64.toByteArray(base64clean(str))
19873 }
19874
19875 function blitBuffer (src, dst, offset, length) {
19876 for (var i = 0; i < length; ++i) {
19877 if ((i + offset >= dst.length) || (i >= src.length)) break
19878 dst[i + offset] = src[i]
19879 }
19880 return i
19881 }
19882
19883 function isnan (val) {
19884 return val !== val // eslint-disable-line no-self-compare
19885 }
19886
19887 },{"base64-js":2,"ieee754":8}],6:[function(require,module,exports){
19888 (function (Buffer){
19889 // Copyright Joyent, Inc. and other Node contributors.
19890 //
19891 // Permission is hereby granted, free of charge, to any person obtaining a
19892 // copy of this software and associated documentation files (the
19893 // "Software"), to deal in the Software without restriction, including
19894 // without limitation the rights to use, copy, modify, merge, publish,
19895 // distribute, sublicense, and/or sell copies of the Software, and to permit
19896 // persons to whom the Software is furnished to do so, subject to the
19897 // following conditions:
19898 //
19899 // The above copyright notice and this permission notice shall be included
19900 // in all copies or substantial portions of the Software.
19901 //
19902 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19903 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19904 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
19905 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
19906 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19907 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
19908 // USE OR OTHER DEALINGS IN THE SOFTWARE.
19909
19910 // NOTE: These type checking functions intentionally don't use `instanceof`
19911 // because it is fragile and can be easily faked with `Object.create()`.
19912
19913 function isArray(arg) {
19914 if (Array.isArray) {
19915 return Array.isArray(arg);
19916 }
19917 return objectToString(arg) === '[object Array]';
19918 }
19919 exports.isArray = isArray;
19920
19921 function isBoolean(arg) {
19922 return typeof arg === 'boolean';
19923 }
19924 exports.isBoolean = isBoolean;
19925
19926 function isNull(arg) {
19927 return arg === null;
19928 }
19929 exports.isNull = isNull;
19930
19931 function isNullOrUndefined(arg) {
19932 return arg == null;
19933 }
19934 exports.isNullOrUndefined = isNullOrUndefined;
19935
19936 function isNumber(arg) {
19937 return typeof arg === 'number';
19938 }
19939 exports.isNumber = isNumber;
19940
19941 function isString(arg) {
19942 return typeof arg === 'string';
19943 }
19944 exports.isString = isString;
19945
19946 function isSymbol(arg) {
19947 return typeof arg === 'symbol';
19948 }
19949 exports.isSymbol = isSymbol;
19950
19951 function isUndefined(arg) {
19952 return arg === void 0;
19953 }
19954 exports.isUndefined = isUndefined;
19955
19956 function isRegExp(re) {
19957 return objectToString(re) === '[object RegExp]';
19958 }
19959 exports.isRegExp = isRegExp;
19960
19961 function isObject(arg) {
19962 return typeof arg === 'object' && arg !== null;
19963 }
19964 exports.isObject = isObject;
19965
19966 function isDate(d) {
19967 return objectToString(d) === '[object Date]';
19968 }
19969 exports.isDate = isDate;
19970
19971 function isError(e) {
19972 return (objectToString(e) === '[object Error]' || e instanceof Error);
19973 }
19974 exports.isError = isError;
19975
19976 function isFunction(arg) {
19977 return typeof arg === 'function';
19978 }
19979 exports.isFunction = isFunction;
19980
19981 function isPrimitive(arg) {
19982 return arg === null ||
19983 typeof arg === 'boolean' ||
19984 typeof arg === 'number' ||
19985 typeof arg === 'string' ||
19986 typeof arg === 'symbol' || // ES6 symbol
19987 typeof arg === 'undefined';
19988 }
19989 exports.isPrimitive = isPrimitive;
19990
19991 exports.isBuffer = Buffer.isBuffer;
19992
19993 function objectToString(o) {
19994 return Object.prototype.toString.call(o);
19995 }
19996
19997 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
19998 },{"../../is-buffer/index.js":10}],7:[function(require,module,exports){
19999 // Copyright Joyent, Inc. and other Node contributors.
20000 //
20001 // Permission is hereby granted, free of charge, to any person obtaining a
20002 // copy of this software and associated documentation files (the
20003 // "Software"), to deal in the Software without restriction, including
20004 // without limitation the rights to use, copy, modify, merge, publish,
20005 // distribute, sublicense, and/or sell copies of the Software, and to permit
20006 // persons to whom the Software is furnished to do so, subject to the
20007 // following conditions:
20008 //
20009 // The above copyright notice and this permission notice shall be included
20010 // in all copies or substantial portions of the Software.
20011 //
20012 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20013 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20014 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
20015 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20016 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
20017 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20018 // USE OR OTHER DEALINGS IN THE SOFTWARE.
20019
20020 function EventEmitter() {
20021 this._events = this._events || {};
20022 this._maxListeners = this._maxListeners || undefined;
20023 }
20024 module.exports = EventEmitter;
20025
20026 // Backwards-compat with node 0.10.x
20027 EventEmitter.EventEmitter = EventEmitter;
20028
20029 EventEmitter.prototype._events = undefined;
20030 EventEmitter.prototype._maxListeners = undefined;
20031
20032 // By default EventEmitters will print a warning if more than 10 listeners are
20033 // added to it. This is a useful default which helps finding memory leaks.
20034 EventEmitter.defaultMaxListeners = 10;
20035
20036 // Obviously not all Emitters should be limited to 10. This function allows
20037 // that to be increased. Set to zero for unlimited.
20038 EventEmitter.prototype.setMaxListeners = function(n) {
20039 if (!isNumber(n) || n < 0 || isNaN(n))
20040 throw TypeError('n must be a positive number');
20041 this._maxListeners = n;
20042 return this;
20043 };
20044
20045 EventEmitter.prototype.emit = function(type) {
20046 var er, handler, len, args, i, listeners;
20047
20048 if (!this._events)
20049 this._events = {};
20050
20051 // If there is no 'error' event listener then throw.
20052 if (type === 'error') {
20053 if (!this._events.error ||
20054 (isObject(this._events.error) && !this._events.error.length)) {
20055 er = arguments[1];
20056 if (er instanceof Error) {
20057 throw er; // Unhandled 'error' event
20058 } else {
20059 // At least give some kind of context to the user
20060 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
20061 err.context = er;
20062 throw err;
20063 }
20064 }
20065 }
20066
20067 handler = this._events[type];
20068
20069 if (isUndefined(handler))
20070 return false;
20071
20072 if (isFunction(handler)) {
20073 switch (arguments.length) {
20074 // fast cases
20075 case 1:
20076 handler.call(this);
20077 break;
20078 case 2:
20079 handler.call(this, arguments[1]);
20080 break;
20081 case 3:
20082 handler.call(this, arguments[1], arguments[2]);
20083 break;
20084 // slower
20085 default:
20086 args = Array.prototype.slice.call(arguments, 1);
20087 handler.apply(this, args);
20088 }
20089 } else if (isObject(handler)) {
20090 args = Array.prototype.slice.call(arguments, 1);
20091 listeners = handler.slice();
20092 len = listeners.length;
20093 for (i = 0; i < len; i++)
20094 listeners[i].apply(this, args);
20095 }
20096
20097 return true;
20098 };
20099
20100 EventEmitter.prototype.addListener = function(type, listener) {
20101 var m;
20102
20103 if (!isFunction(listener))
20104 throw TypeError('listener must be a function');
20105
20106 if (!this._events)
20107 this._events = {};
20108
20109 // To avoid recursion in the case that type === "newListener"! Before
20110 // adding it to the listeners, first emit "newListener".
20111 if (this._events.newListener)
20112 this.emit('newListener', type,
20113 isFunction(listener.listener) ?
20114 listener.listener : listener);
20115
20116 if (!this._events[type])
20117 // Optimize the case of one listener. Don't need the extra array object.
20118 this._events[type] = listener;
20119 else if (isObject(this._events[type]))
20120 // If we've already got an array, just append.
20121 this._events[type].push(listener);
20122 else
20123 // Adding the second element, need to change to array.
20124 this._events[type] = [this._events[type], listener];
20125
20126 // Check for listener leak
20127 if (isObject(this._events[type]) && !this._events[type].warned) {
20128 if (!isUndefined(this._maxListeners)) {
20129 m = this._maxListeners;
20130 } else {
20131 m = EventEmitter.defaultMaxListeners;
20132 }
20133
20134 if (m && m > 0 && this._events[type].length > m) {
20135 this._events[type].warned = true;
20136 console.error('(node) warning: possible EventEmitter memory ' +
20137 'leak detected. %d listeners added. ' +
20138 'Use emitter.setMaxListeners() to increase limit.',
20139 this._events[type].length);
20140 if (typeof console.trace === 'function') {
20141 // not supported in IE 10
20142 console.trace();
20143 }
20144 }
20145 }
20146
20147 return this;
20148 };
20149
20150 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
20151
20152 EventEmitter.prototype.once = function(type, listener) {
20153 if (!isFunction(listener))
20154 throw TypeError('listener must be a function');
20155
20156 var fired = false;
20157
20158 function g() {
20159 this.removeListener(type, g);
20160
20161 if (!fired) {
20162 fired = true;
20163 listener.apply(this, arguments);
20164 }
20165 }
20166
20167 g.listener = listener;
20168 this.on(type, g);
20169
20170 return this;
20171 };
20172
20173 // emits a 'removeListener' event iff the listener was removed
20174 EventEmitter.prototype.removeListener = function(type, listener) {
20175 var list, position, length, i;
20176
20177 if (!isFunction(listener))
20178 throw TypeError('listener must be a function');
20179
20180 if (!this._events || !this._events[type])
20181 return this;
20182
20183 list = this._events[type];
20184 length = list.length;
20185 position = -1;
20186
20187 if (list === listener ||
20188 (isFunction(list.listener) && list.listener === listener)) {
20189 delete this._events[type];
20190 if (this._events.removeListener)
20191 this.emit('removeListener', type, listener);
20192
20193 } else if (isObject(list)) {
20194 for (i = length; i-- > 0;) {
20195 if (list[i] === listener ||
20196 (list[i].listener && list[i].listener === listener)) {
20197 position = i;
20198 break;
20199 }
20200 }
20201
20202 if (position < 0)
20203 return this;
20204
20205 if (list.length === 1) {
20206 list.length = 0;
20207 delete this._events[type];
20208 } else {
20209 list.splice(position, 1);
20210 }
20211
20212 if (this._events.removeListener)
20213 this.emit('removeListener', type, listener);
20214 }
20215
20216 return this;
20217 };
20218
20219 EventEmitter.prototype.removeAllListeners = function(type) {
20220 var key, listeners;
20221
20222 if (!this._events)
20223 return this;
20224
20225 // not listening for removeListener, no need to emit
20226 if (!this._events.removeListener) {
20227 if (arguments.length === 0)
20228 this._events = {};
20229 else if (this._events[type])
20230 delete this._events[type];
20231 return this;
20232 }
20233
20234 // emit removeListener for all listeners on all events
20235 if (arguments.length === 0) {
20236 for (key in this._events) {
20237 if (key === 'removeListener') continue;
20238 this.removeAllListeners(key);
20239 }
20240 this.removeAllListeners('removeListener');
20241 this._events = {};
20242 return this;
20243 }
20244
20245 listeners = this._events[type];
20246
20247 if (isFunction(listeners)) {
20248 this.removeListener(type, listeners);
20249 } else if (listeners) {
20250 // LIFO order
20251 while (listeners.length)
20252 this.removeListener(type, listeners[listeners.length - 1]);
20253 }
20254 delete this._events[type];
20255
20256 return this;
20257 };
20258
20259 EventEmitter.prototype.listeners = function(type) {
20260 var ret;
20261 if (!this._events || !this._events[type])
20262 ret = [];
20263 else if (isFunction(this._events[type]))
20264 ret = [this._events[type]];
20265 else
20266 ret = this._events[type].slice();
20267 return ret;
20268 };
20269
20270 EventEmitter.prototype.listenerCount = function(type) {
20271 if (this._events) {
20272 var evlistener = this._events[type];
20273
20274 if (isFunction(evlistener))
20275 return 1;
20276 else if (evlistener)
20277 return evlistener.length;
20278 }
20279 return 0;
20280 };
20281
20282 EventEmitter.listenerCount = function(emitter, type) {
20283 return emitter.listenerCount(type);
20284 };
20285
20286 function isFunction(arg) {
20287 return typeof arg === 'function';
20288 }
20289
20290 function isNumber(arg) {
20291 return typeof arg === 'number';
20292 }
20293
20294 function isObject(arg) {
20295 return typeof arg === 'object' && arg !== null;
20296 }
20297
20298 function isUndefined(arg) {
20299 return arg === void 0;
20300 }
20301
20302 },{}],8:[function(require,module,exports){
20303 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
20304 var e, m
20305 var eLen = nBytes * 8 - mLen - 1
20306 var eMax = (1 << eLen) - 1
20307 var eBias = eMax >> 1
20308 var nBits = -7
20309 var i = isLE ? (nBytes - 1) : 0
20310 var d = isLE ? -1 : 1
20311 var s = buffer[offset + i]
20312
20313 i += d
20314
20315 e = s & ((1 << (-nBits)) - 1)
20316 s >>= (-nBits)
20317 nBits += eLen
20318 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
20319
20320 m = e & ((1 << (-nBits)) - 1)
20321 e >>= (-nBits)
20322 nBits += mLen
20323 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
20324
20325 if (e === 0) {
20326 e = 1 - eBias
20327 } else if (e === eMax) {
20328 return m ? NaN : ((s ? -1 : 1) * Infinity)
20329 } else {
20330 m = m + Math.pow(2, mLen)
20331 e = e - eBias
20332 }
20333 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
20334 }
20335
20336 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
20337 var e, m, c
20338 var eLen = nBytes * 8 - mLen - 1
20339 var eMax = (1 << eLen) - 1
20340 var eBias = eMax >> 1
20341 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
20342 var i = isLE ? 0 : (nBytes - 1)
20343 var d = isLE ? 1 : -1
20344 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
20345
20346 value = Math.abs(value)
20347
20348 if (isNaN(value) || value === Infinity) {
20349 m = isNaN(value) ? 1 : 0
20350 e = eMax
20351 } else {
20352 e = Math.floor(Math.log(value) / Math.LN2)
20353 if (value * (c = Math.pow(2, -e)) < 1) {
20354 e--
20355 c *= 2
20356 }
20357 if (e + eBias >= 1) {
20358 value += rt / c
20359 } else {
20360 value += rt * Math.pow(2, 1 - eBias)
20361 }
20362 if (value * c >= 2) {
20363 e++
20364 c /= 2
20365 }
20366
20367 if (e + eBias >= eMax) {
20368 m = 0
20369 e = eMax
20370 } else if (e + eBias >= 1) {
20371 m = (value * c - 1) * Math.pow(2, mLen)
20372 e = e + eBias
20373 } else {
20374 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
20375 e = 0
20376 }
20377 }
20378
20379 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
20380
20381 e = (e << mLen) | m
20382 eLen += mLen
20383 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
20384
20385 buffer[offset + i - d] |= s * 128
20386 }
20387
20388 },{}],9:[function(require,module,exports){
20389 if (typeof Object.create === 'function') {
20390 // implementation from standard node.js 'util' module
20391 module.exports = function inherits(ctor, superCtor) {
20392 ctor.super_ = superCtor
20393 ctor.prototype = Object.create(superCtor.prototype, {
20394 constructor: {
20395 value: ctor,
20396 enumerable: false,
20397 writable: true,
20398 configurable: true
20399 }
20400 });
20401 };
20402 } else {
20403 // old school shim for old browsers
20404 module.exports = function inherits(ctor, superCtor) {
20405 ctor.super_ = superCtor
20406 var TempCtor = function () {}
20407 TempCtor.prototype = superCtor.prototype
20408 ctor.prototype = new TempCtor()
20409 ctor.prototype.constructor = ctor
20410 }
20411 }
20412
20413 },{}],10:[function(require,module,exports){
20414 /*!
20415 * Determine if an object is a Buffer
20416 *
20417 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
20418 * @license MIT
20419 */
20420
20421 // The _isBuffer check is for Safari 5-7 support, because it's missing
20422 // Object.prototype.constructor. Remove this eventually
20423 module.exports = function (obj) {
20424 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
20425 }
20426
20427 function isBuffer (obj) {
20428 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
20429 }
20430
20431 // For Node v0.10 support. Remove this eventually.
20432 function isSlowBuffer (obj) {
20433 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
20434 }
20435
20436 },{}],11:[function(require,module,exports){
20437 var toString = {}.toString;
20438
20439 module.exports = Array.isArray || function (arr) {
20440 return toString.call(arr) == '[object Array]';
20441 };
20442
20443 },{}],12:[function(require,module,exports){
20444 (function (process){
20445 'use strict';
20446
20447 if (!process.version ||
20448 process.version.indexOf('v0.') === 0 ||
20449 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
20450 module.exports = nextTick;
20451 } else {
20452 module.exports = process.nextTick;
20453 }
20454
20455 function nextTick(fn, arg1, arg2, arg3) {
20456 if (typeof fn !== 'function') {
20457 throw new TypeError('"callback" argument must be a function');
20458 }
20459 var len = arguments.length;
20460 var args, i;
20461 switch (len) {
20462 case 0:
20463 case 1:
20464 return process.nextTick(fn);
20465 case 2:
20466 return process.nextTick(function afterTickOne() {
20467 fn.call(null, arg1);
20468 });
20469 case 3:
20470 return process.nextTick(function afterTickTwo() {
20471 fn.call(null, arg1, arg2);
20472 });
20473 case 4:
20474 return process.nextTick(function afterTickThree() {
20475 fn.call(null, arg1, arg2, arg3);
20476 });
20477 default:
20478 args = new Array(len - 1);
20479 i = 0;
20480 while (i < args.length) {
20481 args[i++] = arguments[i];
20482 }
20483 return process.nextTick(function afterTick() {
20484 fn.apply(null, args);
20485 });
20486 }
20487 }
20488
20489 }).call(this,require('_process'))
20490 },{"_process":13}],13:[function(require,module,exports){
20491 // shim for using process in browser
20492 var process = module.exports = {};
20493
20494 // cached from whatever global is present so that test runners that stub it
20495 // don't break things. But we need to wrap it in a try catch in case it is
20496 // wrapped in strict mode code which doesn't define any globals. It's inside a
20497 // function because try/catches deoptimize in certain engines.
20498
20499 var cachedSetTimeout;
20500 var cachedClearTimeout;
20501
20502 function defaultSetTimout() {
20503 throw new Error('setTimeout has not been defined');
20504 }
20505 function defaultClearTimeout () {
20506 throw new Error('clearTimeout has not been defined');
20507 }
20508 (function () {
20509 try {
20510 if (typeof setTimeout === 'function') {
20511 cachedSetTimeout = setTimeout;
20512 } else {
20513 cachedSetTimeout = defaultSetTimout;
20514 }
20515 } catch (e) {
20516 cachedSetTimeout = defaultSetTimout;
20517 }
20518 try {
20519 if (typeof clearTimeout === 'function') {
20520 cachedClearTimeout = clearTimeout;
20521 } else {
20522 cachedClearTimeout = defaultClearTimeout;
20523 }
20524 } catch (e) {
20525 cachedClearTimeout = defaultClearTimeout;
20526 }
20527 } ())
20528 function runTimeout(fun) {
20529 if (cachedSetTimeout === setTimeout) {
20530 //normal enviroments in sane situations
20531 return setTimeout(fun, 0);
20532 }
20533 // if setTimeout wasn't available but was latter defined
20534 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
20535 cachedSetTimeout = setTimeout;
20536 return setTimeout(fun, 0);
20537 }
20538 try {
20539 // when when somebody has screwed with setTimeout but no I.E. maddness
20540 return cachedSetTimeout(fun, 0);
20541 } catch(e){
20542 try {
20543 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
20544 return cachedSetTimeout.call(null, fun, 0);
20545 } catch(e){
20546 // 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
20547 return cachedSetTimeout.call(this, fun, 0);
20548 }
20549 }
20550
20551
20552 }
20553 function runClearTimeout(marker) {
20554 if (cachedClearTimeout === clearTimeout) {
20555 //normal enviroments in sane situations
20556 return clearTimeout(marker);
20557 }
20558 // if clearTimeout wasn't available but was latter defined
20559 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
20560 cachedClearTimeout = clearTimeout;
20561 return clearTimeout(marker);
20562 }
20563 try {
20564 // when when somebody has screwed with setTimeout but no I.E. maddness
20565 return cachedClearTimeout(marker);
20566 } catch (e){
20567 try {
20568 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
20569 return cachedClearTimeout.call(null, marker);
20570 } catch (e){
20571 // 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.
20572 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
20573 return cachedClearTimeout.call(this, marker);
20574 }
20575 }
20576
20577
20578
20579 }
20580 var queue = [];
20581 var draining = false;
20582 var currentQueue;
20583 var queueIndex = -1;
20584
20585 function cleanUpNextTick() {
20586 if (!draining || !currentQueue) {
20587 return;
20588 }
20589 draining = false;
20590 if (currentQueue.length) {
20591 queue = currentQueue.concat(queue);
20592 } else {
20593 queueIndex = -1;
20594 }
20595 if (queue.length) {
20596 drainQueue();
20597 }
20598 }
20599
20600 function drainQueue() {
20601 if (draining) {
20602 return;
20603 }
20604 var timeout = runTimeout(cleanUpNextTick);
20605 draining = true;
20606
20607 var len = queue.length;
20608 while(len) {
20609 currentQueue = queue;
20610 queue = [];
20611 while (++queueIndex < len) {
20612 if (currentQueue) {
20613 currentQueue[queueIndex].run();
20614 }
20615 }
20616 queueIndex = -1;
20617 len = queue.length;
20618 }
20619 currentQueue = null;
20620 draining = false;
20621 runClearTimeout(timeout);
20622 }
20623
20624 process.nextTick = function (fun) {
20625 var args = new Array(arguments.length - 1);
20626 if (arguments.length > 1) {
20627 for (var i = 1; i < arguments.length; i++) {
20628 args[i - 1] = arguments[i];
20629 }
20630 }
20631 queue.push(new Item(fun, args));
20632 if (queue.length === 1 && !draining) {
20633 runTimeout(drainQueue);
20634 }
20635 };
20636
20637 // v8 likes predictible objects
20638 function Item(fun, array) {
20639 this.fun = fun;
20640 this.array = array;
20641 }
20642 Item.prototype.run = function () {
20643 this.fun.apply(null, this.array);
20644 };
20645 process.title = 'browser';
20646 process.browser = true;
20647 process.env = {};
20648 process.argv = [];
20649 process.version = ''; // empty string to avoid regexp issues
20650 process.versions = {};
20651
20652 function noop() {}
20653
20654 process.on = noop;
20655 process.addListener = noop;
20656 process.once = noop;
20657 process.off = noop;
20658 process.removeListener = noop;
20659 process.removeAllListeners = noop;
20660 process.emit = noop;
20661
20662 process.binding = function (name) {
20663 throw new Error('process.binding is not supported');
20664 };
20665
20666 process.cwd = function () { return '/' };
20667 process.chdir = function (dir) {
20668 throw new Error('process.chdir is not supported');
20669 };
20670 process.umask = function() { return 0; };
20671
20672 },{}],14:[function(require,module,exports){
20673 module.exports = require("./lib/_stream_duplex.js")
20674
20675 },{"./lib/_stream_duplex.js":15}],15:[function(require,module,exports){
20676 // a duplex stream is just a stream that is both readable and writable.
20677 // Since JS doesn't have multiple prototypal inheritance, this class
20678 // prototypally inherits from Readable, and then parasitically from
20679 // Writable.
20680
20681 'use strict';
20682
20683 /*<replacement>*/
20684
20685 var objectKeys = Object.keys || function (obj) {
20686 var keys = [];
20687 for (var key in obj) {
20688 keys.push(key);
20689 }return keys;
20690 };
20691 /*</replacement>*/
20692
20693 module.exports = Duplex;
20694
20695 /*<replacement>*/
20696 var processNextTick = require('process-nextick-args');
20697 /*</replacement>*/
20698
20699 /*<replacement>*/
20700 var util = require('core-util-is');
20701 util.inherits = require('inherits');
20702 /*</replacement>*/
20703
20704 var Readable = require('./_stream_readable');
20705 var Writable = require('./_stream_writable');
20706
20707 util.inherits(Duplex, Readable);
20708
20709 var keys = objectKeys(Writable.prototype);
20710 for (var v = 0; v < keys.length; v++) {
20711 var method = keys[v];
20712 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
20713 }
20714
20715 function Duplex(options) {
20716 if (!(this instanceof Duplex)) return new Duplex(options);
20717
20718 Readable.call(this, options);
20719 Writable.call(this, options);
20720
20721 if (options && options.readable === false) this.readable = false;
20722
20723 if (options && options.writable === false) this.writable = false;
20724
20725 this.allowHalfOpen = true;
20726 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
20727
20728 this.once('end', onend);
20729 }
20730
20731 // the no-half-open enforcer
20732 function onend() {
20733 // if we allow half-open state, or if the writable side ended,
20734 // then we're ok.
20735 if (this.allowHalfOpen || this._writableState.ended) return;
20736
20737 // no more data can be written.
20738 // But allow more writes to happen in this tick.
20739 processNextTick(onEndNT, this);
20740 }
20741
20742 function onEndNT(self) {
20743 self.end();
20744 }
20745
20746 function forEach(xs, f) {
20747 for (var i = 0, l = xs.length; i < l; i++) {
20748 f(xs[i], i);
20749 }
20750 }
20751 },{"./_stream_readable":17,"./_stream_writable":19,"core-util-is":6,"inherits":9,"process-nextick-args":12}],16:[function(require,module,exports){
20752 // a passthrough stream.
20753 // basically just the most minimal sort of Transform stream.
20754 // Every written chunk gets output as-is.
20755
20756 'use strict';
20757
20758 module.exports = PassThrough;
20759
20760 var Transform = require('./_stream_transform');
20761
20762 /*<replacement>*/
20763 var util = require('core-util-is');
20764 util.inherits = require('inherits');
20765 /*</replacement>*/
20766
20767 util.inherits(PassThrough, Transform);
20768
20769 function PassThrough(options) {
20770 if (!(this instanceof PassThrough)) return new PassThrough(options);
20771
20772 Transform.call(this, options);
20773 }
20774
20775 PassThrough.prototype._transform = function (chunk, encoding, cb) {
20776 cb(null, chunk);
20777 };
20778 },{"./_stream_transform":18,"core-util-is":6,"inherits":9}],17:[function(require,module,exports){
20779 (function (process){
20780 'use strict';
20781
20782 module.exports = Readable;
20783
20784 /*<replacement>*/
20785 var processNextTick = require('process-nextick-args');
20786 /*</replacement>*/
20787
20788 /*<replacement>*/
20789 var isArray = require('isarray');
20790 /*</replacement>*/
20791
20792 /*<replacement>*/
20793 var Duplex;
20794 /*</replacement>*/
20795
20796 Readable.ReadableState = ReadableState;
20797
20798 /*<replacement>*/
20799 var EE = require('events').EventEmitter;
20800
20801 var EElistenerCount = function (emitter, type) {
20802 return emitter.listeners(type).length;
20803 };
20804 /*</replacement>*/
20805
20806 /*<replacement>*/
20807 var Stream;
20808 (function () {
20809 try {
20810 Stream = require('st' + 'ream');
20811 } catch (_) {} finally {
20812 if (!Stream) Stream = require('events').EventEmitter;
20813 }
20814 })();
20815 /*</replacement>*/
20816
20817 var Buffer = require('buffer').Buffer;
20818 /*<replacement>*/
20819 var bufferShim = require('buffer-shims');
20820 /*</replacement>*/
20821
20822 /*<replacement>*/
20823 var util = require('core-util-is');
20824 util.inherits = require('inherits');
20825 /*</replacement>*/
20826
20827 /*<replacement>*/
20828 var debugUtil = require('util');
20829 var debug = void 0;
20830 if (debugUtil && debugUtil.debuglog) {
20831 debug = debugUtil.debuglog('stream');
20832 } else {
20833 debug = function () {};
20834 }
20835 /*</replacement>*/
20836
20837 var BufferList = require('./internal/streams/BufferList');
20838 var StringDecoder;
20839
20840 util.inherits(Readable, Stream);
20841
20842 function prependListener(emitter, event, fn) {
20843 // Sadly this is not cacheable as some libraries bundle their own
20844 // event emitter implementation with them.
20845 if (typeof emitter.prependListener === 'function') {
20846 return emitter.prependListener(event, fn);
20847 } else {
20848 // This is a hack to make sure that our error handler is attached before any
20849 // userland ones. NEVER DO THIS. This is here only because this code needs
20850 // to continue to work with older versions of Node.js that do not include
20851 // the prependListener() method. The goal is to eventually remove this hack.
20852 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]];
20853 }
20854 }
20855
20856 function ReadableState(options, stream) {
20857 Duplex = Duplex || require('./_stream_duplex');
20858
20859 options = options || {};
20860
20861 // object stream flag. Used to make read(n) ignore n and to
20862 // make all the buffer merging and length checks go away
20863 this.objectMode = !!options.objectMode;
20864
20865 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
20866
20867 // the point at which it stops calling _read() to fill the buffer
20868 // Note: 0 is a valid value, means "don't call _read preemptively ever"
20869 var hwm = options.highWaterMark;
20870 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
20871 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
20872
20873 // cast to ints.
20874 this.highWaterMark = ~ ~this.highWaterMark;
20875
20876 // A linked list is used to store data chunks instead of an array because the
20877 // linked list can remove elements from the beginning faster than
20878 // array.shift()
20879 this.buffer = new BufferList();
20880 this.length = 0;
20881 this.pipes = null;
20882 this.pipesCount = 0;
20883 this.flowing = null;
20884 this.ended = false;
20885 this.endEmitted = false;
20886 this.reading = false;
20887
20888 // a flag to be able to tell if the onwrite cb is called immediately,
20889 // or on a later tick. We set this to true at first, because any
20890 // actions that shouldn't happen until "later" should generally also
20891 // not happen before the first write call.
20892 this.sync = true;
20893
20894 // whenever we return null, then we set a flag to say
20895 // that we're awaiting a 'readable' event emission.
20896 this.needReadable = false;
20897 this.emittedReadable = false;
20898 this.readableListening = false;
20899 this.resumeScheduled = false;
20900
20901 // Crypto is kind of old and crusty. Historically, its default string
20902 // encoding is 'binary' so we have to make this configurable.
20903 // Everything else in the universe uses 'utf8', though.
20904 this.defaultEncoding = options.defaultEncoding || 'utf8';
20905
20906 // when piping, we only care about 'readable' events that happen
20907 // after read()ing all the bytes and not getting any pushback.
20908 this.ranOut = false;
20909
20910 // the number of writers that are awaiting a drain event in .pipe()s
20911 this.awaitDrain = 0;
20912
20913 // if true, a maybeReadMore has been scheduled
20914 this.readingMore = false;
20915
20916 this.decoder = null;
20917 this.encoding = null;
20918 if (options.encoding) {
20919 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
20920 this.decoder = new StringDecoder(options.encoding);
20921 this.encoding = options.encoding;
20922 }
20923 }
20924
20925 function Readable(options) {
20926 Duplex = Duplex || require('./_stream_duplex');
20927
20928 if (!(this instanceof Readable)) return new Readable(options);
20929
20930 this._readableState = new ReadableState(options, this);
20931
20932 // legacy
20933 this.readable = true;
20934
20935 if (options && typeof options.read === 'function') this._read = options.read;
20936
20937 Stream.call(this);
20938 }
20939
20940 // Manually shove something into the read() buffer.
20941 // This returns true if the highWaterMark has not been hit yet,
20942 // similar to how Writable.write() returns true if you should
20943 // write() some more.
20944 Readable.prototype.push = function (chunk, encoding) {
20945 var state = this._readableState;
20946
20947 if (!state.objectMode && typeof chunk === 'string') {
20948 encoding = encoding || state.defaultEncoding;
20949 if (encoding !== state.encoding) {
20950 chunk = bufferShim.from(chunk, encoding);
20951 encoding = '';
20952 }
20953 }
20954
20955 return readableAddChunk(this, state, chunk, encoding, false);
20956 };
20957
20958 // Unshift should *always* be something directly out of read()
20959 Readable.prototype.unshift = function (chunk) {
20960 var state = this._readableState;
20961 return readableAddChunk(this, state, chunk, '', true);
20962 };
20963
20964 Readable.prototype.isPaused = function () {
20965 return this._readableState.flowing === false;
20966 };
20967
20968 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
20969 var er = chunkInvalid(state, chunk);
20970 if (er) {
20971 stream.emit('error', er);
20972 } else if (chunk === null) {
20973 state.reading = false;
20974 onEofChunk(stream, state);
20975 } else if (state.objectMode || chunk && chunk.length > 0) {
20976 if (state.ended && !addToFront) {
20977 var e = new Error('stream.push() after EOF');
20978 stream.emit('error', e);
20979 } else if (state.endEmitted && addToFront) {
20980 var _e = new Error('stream.unshift() after end event');
20981 stream.emit('error', _e);
20982 } else {
20983 var skipAdd;
20984 if (state.decoder && !addToFront && !encoding) {
20985 chunk = state.decoder.write(chunk);
20986 skipAdd = !state.objectMode && chunk.length === 0;
20987 }
20988
20989 if (!addToFront) state.reading = false;
20990
20991 // Don't add to the buffer if we've decoded to an empty string chunk and
20992 // we're not in object mode
20993 if (!skipAdd) {
20994 // if we want the data now, just emit it.
20995 if (state.flowing && state.length === 0 && !state.sync) {
20996 stream.emit('data', chunk);
20997 stream.read(0);
20998 } else {
20999 // update the buffer info.
21000 state.length += state.objectMode ? 1 : chunk.length;
21001 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
21002
21003 if (state.needReadable) emitReadable(stream);
21004 }
21005 }
21006
21007 maybeReadMore(stream, state);
21008 }
21009 } else if (!addToFront) {
21010 state.reading = false;
21011 }
21012
21013 return needMoreData(state);
21014 }
21015
21016 // if it's past the high water mark, we can push in some more.
21017 // Also, if we have no data yet, we can stand some
21018 // more bytes. This is to work around cases where hwm=0,
21019 // such as the repl. Also, if the push() triggered a
21020 // readable event, and the user called read(largeNumber) such that
21021 // needReadable was set, then we ought to push more, so that another
21022 // 'readable' event will be triggered.
21023 function needMoreData(state) {
21024 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
21025 }
21026
21027 // backwards compatibility.
21028 Readable.prototype.setEncoding = function (enc) {
21029 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
21030 this._readableState.decoder = new StringDecoder(enc);
21031 this._readableState.encoding = enc;
21032 return this;
21033 };
21034
21035 // Don't raise the hwm > 8MB
21036 var MAX_HWM = 0x800000;
21037 function computeNewHighWaterMark(n) {
21038 if (n >= MAX_HWM) {
21039 n = MAX_HWM;
21040 } else {
21041 // Get the next highest power of 2 to prevent increasing hwm excessively in
21042 // tiny amounts
21043 n--;
21044 n |= n >>> 1;
21045 n |= n >>> 2;
21046 n |= n >>> 4;
21047 n |= n >>> 8;
21048 n |= n >>> 16;
21049 n++;
21050 }
21051 return n;
21052 }
21053
21054 // This function is designed to be inlinable, so please take care when making
21055 // changes to the function body.
21056 function howMuchToRead(n, state) {
21057 if (n <= 0 || state.length === 0 && state.ended) return 0;
21058 if (state.objectMode) return 1;
21059 if (n !== n) {
21060 // Only flow one buffer at a time
21061 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
21062 }
21063 // If we're asking for more than the current hwm, then raise the hwm.
21064 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
21065 if (n <= state.length) return n;
21066 // Don't have enough
21067 if (!state.ended) {
21068 state.needReadable = true;
21069 return 0;
21070 }
21071 return state.length;
21072 }
21073
21074 // you can override either this method, or the async _read(n) below.
21075 Readable.prototype.read = function (n) {
21076 debug('read', n);
21077 n = parseInt(n, 10);
21078 var state = this._readableState;
21079 var nOrig = n;
21080
21081 if (n !== 0) state.emittedReadable = false;
21082
21083 // if we're doing read(0) to trigger a readable event, but we
21084 // already have a bunch of data in the buffer, then just trigger
21085 // the 'readable' event and move on.
21086 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
21087 debug('read: emitReadable', state.length, state.ended);
21088 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
21089 return null;
21090 }
21091
21092 n = howMuchToRead(n, state);
21093
21094 // if we've ended, and we're now clear, then finish it up.
21095 if (n === 0 && state.ended) {
21096 if (state.length === 0) endReadable(this);
21097 return null;
21098 }
21099
21100 // All the actual chunk generation logic needs to be
21101 // *below* the call to _read. The reason is that in certain
21102 // synthetic stream cases, such as passthrough streams, _read
21103 // may be a completely synchronous operation which may change
21104 // the state of the read buffer, providing enough data when
21105 // before there was *not* enough.
21106 //
21107 // So, the steps are:
21108 // 1. Figure out what the state of things will be after we do
21109 // a read from the buffer.
21110 //
21111 // 2. If that resulting state will trigger a _read, then call _read.
21112 // Note that this may be asynchronous, or synchronous. Yes, it is
21113 // deeply ugly to write APIs this way, but that still doesn't mean
21114 // that the Readable class should behave improperly, as streams are
21115 // designed to be sync/async agnostic.
21116 // Take note if the _read call is sync or async (ie, if the read call
21117 // has returned yet), so that we know whether or not it's safe to emit
21118 // 'readable' etc.
21119 //
21120 // 3. Actually pull the requested chunks out of the buffer and return.
21121
21122 // if we need a readable event, then we need to do some reading.
21123 var doRead = state.needReadable;
21124 debug('need readable', doRead);
21125
21126 // if we currently have less than the highWaterMark, then also read some
21127 if (state.length === 0 || state.length - n < state.highWaterMark) {
21128 doRead = true;
21129 debug('length less than watermark', doRead);
21130 }
21131
21132 // however, if we've ended, then there's no point, and if we're already
21133 // reading, then it's unnecessary.
21134 if (state.ended || state.reading) {
21135 doRead = false;
21136 debug('reading or ended', doRead);
21137 } else if (doRead) {
21138 debug('do read');
21139 state.reading = true;
21140 state.sync = true;
21141 // if the length is currently zero, then we *need* a readable event.
21142 if (state.length === 0) state.needReadable = true;
21143 // call internal read method
21144 this._read(state.highWaterMark);
21145 state.sync = false;
21146 // If _read pushed data synchronously, then `reading` will be false,
21147 // and we need to re-evaluate how much data we can return to the user.
21148 if (!state.reading) n = howMuchToRead(nOrig, state);
21149 }
21150
21151 var ret;
21152 if (n > 0) ret = fromList(n, state);else ret = null;
21153
21154 if (ret === null) {
21155 state.needReadable = true;
21156 n = 0;
21157 } else {
21158 state.length -= n;
21159 }
21160
21161 if (state.length === 0) {
21162 // If we have nothing in the buffer, then we want to know
21163 // as soon as we *do* get something into the buffer.
21164 if (!state.ended) state.needReadable = true;
21165
21166 // If we tried to read() past the EOF, then emit end on the next tick.
21167 if (nOrig !== n && state.ended) endReadable(this);
21168 }
21169
21170 if (ret !== null) this.emit('data', ret);
21171
21172 return ret;
21173 };
21174
21175 function chunkInvalid(state, chunk) {
21176 var er = null;
21177 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
21178 er = new TypeError('Invalid non-string/buffer chunk');
21179 }
21180 return er;
21181 }
21182
21183 function onEofChunk(stream, state) {
21184 if (state.ended) return;
21185 if (state.decoder) {
21186 var chunk = state.decoder.end();
21187 if (chunk && chunk.length) {
21188 state.buffer.push(chunk);
21189 state.length += state.objectMode ? 1 : chunk.length;
21190 }
21191 }
21192 state.ended = true;
21193
21194 // emit 'readable' now to make sure it gets picked up.
21195 emitReadable(stream);
21196 }
21197
21198 // Don't emit readable right away in sync mode, because this can trigger
21199 // another read() call => stack overflow. This way, it might trigger
21200 // a nextTick recursion warning, but that's not so bad.
21201 function emitReadable(stream) {
21202 var state = stream._readableState;
21203 state.needReadable = false;
21204 if (!state.emittedReadable) {
21205 debug('emitReadable', state.flowing);
21206 state.emittedReadable = true;
21207 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
21208 }
21209 }
21210
21211 function emitReadable_(stream) {
21212 debug('emit readable');
21213 stream.emit('readable');
21214 flow(stream);
21215 }
21216
21217 // at this point, the user has presumably seen the 'readable' event,
21218 // and called read() to consume some data. that may have triggered
21219 // in turn another _read(n) call, in which case reading = true if
21220 // it's in progress.
21221 // However, if we're not ended, or reading, and the length < hwm,
21222 // then go ahead and try to read some more preemptively.
21223 function maybeReadMore(stream, state) {
21224 if (!state.readingMore) {
21225 state.readingMore = true;
21226 processNextTick(maybeReadMore_, stream, state);
21227 }
21228 }
21229
21230 function maybeReadMore_(stream, state) {
21231 var len = state.length;
21232 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
21233 debug('maybeReadMore read 0');
21234 stream.read(0);
21235 if (len === state.length)
21236 // didn't get any data, stop spinning.
21237 break;else len = state.length;
21238 }
21239 state.readingMore = false;
21240 }
21241
21242 // abstract method. to be overridden in specific implementation classes.
21243 // call cb(er, data) where data is <= n in length.
21244 // for virtual (non-string, non-buffer) streams, "length" is somewhat
21245 // arbitrary, and perhaps not very meaningful.
21246 Readable.prototype._read = function (n) {
21247 this.emit('error', new Error('_read() is not implemented'));
21248 };
21249
21250 Readable.prototype.pipe = function (dest, pipeOpts) {
21251 var src = this;
21252 var state = this._readableState;
21253
21254 switch (state.pipesCount) {
21255 case 0:
21256 state.pipes = dest;
21257 break;
21258 case 1:
21259 state.pipes = [state.pipes, dest];
21260 break;
21261 default:
21262 state.pipes.push(dest);
21263 break;
21264 }
21265 state.pipesCount += 1;
21266 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
21267
21268 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
21269
21270 var endFn = doEnd ? onend : cleanup;
21271 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
21272
21273 dest.on('unpipe', onunpipe);
21274 function onunpipe(readable) {
21275 debug('onunpipe');
21276 if (readable === src) {
21277 cleanup();
21278 }
21279 }
21280
21281 function onend() {
21282 debug('onend');
21283 dest.end();
21284 }
21285
21286 // when the dest drains, it reduces the awaitDrain counter
21287 // on the source. This would be more elegant with a .once()
21288 // handler in flow(), but adding and removing repeatedly is
21289 // too slow.
21290 var ondrain = pipeOnDrain(src);
21291 dest.on('drain', ondrain);
21292
21293 var cleanedUp = false;
21294 function cleanup() {
21295 debug('cleanup');
21296 // cleanup event handlers once the pipe is broken
21297 dest.removeListener('close', onclose);
21298 dest.removeListener('finish', onfinish);
21299 dest.removeListener('drain', ondrain);
21300 dest.removeListener('error', onerror);
21301 dest.removeListener('unpipe', onunpipe);
21302 src.removeListener('end', onend);
21303 src.removeListener('end', cleanup);
21304 src.removeListener('data', ondata);
21305
21306 cleanedUp = true;
21307
21308 // if the reader is waiting for a drain event from this
21309 // specific writer, then it would cause it to never start
21310 // flowing again.
21311 // So, if this is awaiting a drain, then we just call it now.
21312 // If we don't know, then assume that we are waiting for one.
21313 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
21314 }
21315
21316 // If the user pushes more data while we're writing to dest then we'll end up
21317 // in ondata again. However, we only want to increase awaitDrain once because
21318 // dest will only emit one 'drain' event for the multiple writes.
21319 // => Introduce a guard on increasing awaitDrain.
21320 var increasedAwaitDrain = false;
21321 src.on('data', ondata);
21322 function ondata(chunk) {
21323 debug('ondata');
21324 increasedAwaitDrain = false;
21325 var ret = dest.write(chunk);
21326 if (false === ret && !increasedAwaitDrain) {
21327 // If the user unpiped during `dest.write()`, it is possible
21328 // to get stuck in a permanently paused state if that write
21329 // also returned false.
21330 // => Check whether `dest` is still a piping destination.
21331 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
21332 debug('false write response, pause', src._readableState.awaitDrain);
21333 src._readableState.awaitDrain++;
21334 increasedAwaitDrain = true;
21335 }
21336 src.pause();
21337 }
21338 }
21339
21340 // if the dest has an error, then stop piping into it.
21341 // however, don't suppress the throwing behavior for this.
21342 function onerror(er) {
21343 debug('onerror', er);
21344 unpipe();
21345 dest.removeListener('error', onerror);
21346 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
21347 }
21348
21349 // Make sure our error handler is attached before userland ones.
21350 prependListener(dest, 'error', onerror);
21351
21352 // Both close and finish should trigger unpipe, but only once.
21353 function onclose() {
21354 dest.removeListener('finish', onfinish);
21355 unpipe();
21356 }
21357 dest.once('close', onclose);
21358 function onfinish() {
21359 debug('onfinish');
21360 dest.removeListener('close', onclose);
21361 unpipe();
21362 }
21363 dest.once('finish', onfinish);
21364
21365 function unpipe() {
21366 debug('unpipe');
21367 src.unpipe(dest);
21368 }
21369
21370 // tell the dest that it's being piped to
21371 dest.emit('pipe', src);
21372
21373 // start the flow if it hasn't been started already.
21374 if (!state.flowing) {
21375 debug('pipe resume');
21376 src.resume();
21377 }
21378
21379 return dest;
21380 };
21381
21382 function pipeOnDrain(src) {
21383 return function () {
21384 var state = src._readableState;
21385 debug('pipeOnDrain', state.awaitDrain);
21386 if (state.awaitDrain) state.awaitDrain--;
21387 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
21388 state.flowing = true;
21389 flow(src);
21390 }
21391 };
21392 }
21393
21394 Readable.prototype.unpipe = function (dest) {
21395 var state = this._readableState;
21396
21397 // if we're not piping anywhere, then do nothing.
21398 if (state.pipesCount === 0) return this;
21399
21400 // just one destination. most common case.
21401 if (state.pipesCount === 1) {
21402 // passed in one, but it's not the right one.
21403 if (dest && dest !== state.pipes) return this;
21404
21405 if (!dest) dest = state.pipes;
21406
21407 // got a match.
21408 state.pipes = null;
21409 state.pipesCount = 0;
21410 state.flowing = false;
21411 if (dest) dest.emit('unpipe', this);
21412 return this;
21413 }
21414
21415 // slow case. multiple pipe destinations.
21416
21417 if (!dest) {
21418 // remove all.
21419 var dests = state.pipes;
21420 var len = state.pipesCount;
21421 state.pipes = null;
21422 state.pipesCount = 0;
21423 state.flowing = false;
21424
21425 for (var i = 0; i < len; i++) {
21426 dests[i].emit('unpipe', this);
21427 }return this;
21428 }
21429
21430 // try to find the right one.
21431 var index = indexOf(state.pipes, dest);
21432 if (index === -1) return this;
21433
21434 state.pipes.splice(index, 1);
21435 state.pipesCount -= 1;
21436 if (state.pipesCount === 1) state.pipes = state.pipes[0];
21437
21438 dest.emit('unpipe', this);
21439
21440 return this;
21441 };
21442
21443 // set up data events if they are asked for
21444 // Ensure readable listeners eventually get something
21445 Readable.prototype.on = function (ev, fn) {
21446 var res = Stream.prototype.on.call(this, ev, fn);
21447
21448 if (ev === 'data') {
21449 // Start flowing on next tick if stream isn't explicitly paused
21450 if (this._readableState.flowing !== false) this.resume();
21451 } else if (ev === 'readable') {
21452 var state = this._readableState;
21453 if (!state.endEmitted && !state.readableListening) {
21454 state.readableListening = state.needReadable = true;
21455 state.emittedReadable = false;
21456 if (!state.reading) {
21457 processNextTick(nReadingNextTick, this);
21458 } else if (state.length) {
21459 emitReadable(this, state);
21460 }
21461 }
21462 }
21463
21464 return res;
21465 };
21466 Readable.prototype.addListener = Readable.prototype.on;
21467
21468 function nReadingNextTick(self) {
21469 debug('readable nexttick read 0');
21470 self.read(0);
21471 }
21472
21473 // pause() and resume() are remnants of the legacy readable stream API
21474 // If the user uses them, then switch into old mode.
21475 Readable.prototype.resume = function () {
21476 var state = this._readableState;
21477 if (!state.flowing) {
21478 debug('resume');
21479 state.flowing = true;
21480 resume(this, state);
21481 }
21482 return this;
21483 };
21484
21485 function resume(stream, state) {
21486 if (!state.resumeScheduled) {
21487 state.resumeScheduled = true;
21488 processNextTick(resume_, stream, state);
21489 }
21490 }
21491
21492 function resume_(stream, state) {
21493 if (!state.reading) {
21494 debug('resume read 0');
21495 stream.read(0);
21496 }
21497
21498 state.resumeScheduled = false;
21499 state.awaitDrain = 0;
21500 stream.emit('resume');
21501 flow(stream);
21502 if (state.flowing && !state.reading) stream.read(0);
21503 }
21504
21505 Readable.prototype.pause = function () {
21506 debug('call pause flowing=%j', this._readableState.flowing);
21507 if (false !== this._readableState.flowing) {
21508 debug('pause');
21509 this._readableState.flowing = false;
21510 this.emit('pause');
21511 }
21512 return this;
21513 };
21514
21515 function flow(stream) {
21516 var state = stream._readableState;
21517 debug('flow', state.flowing);
21518 while (state.flowing && stream.read() !== null) {}
21519 }
21520
21521 // wrap an old-style stream as the async data source.
21522 // This is *not* part of the readable stream interface.
21523 // It is an ugly unfortunate mess of history.
21524 Readable.prototype.wrap = function (stream) {
21525 var state = this._readableState;
21526 var paused = false;
21527
21528 var self = this;
21529 stream.on('end', function () {
21530 debug('wrapped end');
21531 if (state.decoder && !state.ended) {
21532 var chunk = state.decoder.end();
21533 if (chunk && chunk.length) self.push(chunk);
21534 }
21535
21536 self.push(null);
21537 });
21538
21539 stream.on('data', function (chunk) {
21540 debug('wrapped data');
21541 if (state.decoder) chunk = state.decoder.write(chunk);
21542
21543 // don't skip over falsy values in objectMode
21544 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
21545
21546 var ret = self.push(chunk);
21547 if (!ret) {
21548 paused = true;
21549 stream.pause();
21550 }
21551 });
21552
21553 // proxy all the other methods.
21554 // important when wrapping filters and duplexes.
21555 for (var i in stream) {
21556 if (this[i] === undefined && typeof stream[i] === 'function') {
21557 this[i] = function (method) {
21558 return function () {
21559 return stream[method].apply(stream, arguments);
21560 };
21561 }(i);
21562 }
21563 }
21564
21565 // proxy certain important events.
21566 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
21567 forEach(events, function (ev) {
21568 stream.on(ev, self.emit.bind(self, ev));
21569 });
21570
21571 // when we try to consume some more bytes, simply unpause the
21572 // underlying stream.
21573 self._read = function (n) {
21574 debug('wrapped _read', n);
21575 if (paused) {
21576 paused = false;
21577 stream.resume();
21578 }
21579 };
21580
21581 return self;
21582 };
21583
21584 // exposed for testing purposes only.
21585 Readable._fromList = fromList;
21586
21587 // Pluck off n bytes from an array of buffers.
21588 // Length is the combined lengths of all the buffers in the list.
21589 // This function is designed to be inlinable, so please take care when making
21590 // changes to the function body.
21591 function fromList(n, state) {
21592 // nothing buffered
21593 if (state.length === 0) return null;
21594
21595 var ret;
21596 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
21597 // read it all, truncate the list
21598 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);
21599 state.buffer.clear();
21600 } else {
21601 // read part of list
21602 ret = fromListPartial(n, state.buffer, state.decoder);
21603 }
21604
21605 return ret;
21606 }
21607
21608 // Extracts only enough buffered data to satisfy the amount requested.
21609 // This function is designed to be inlinable, so please take care when making
21610 // changes to the function body.
21611 function fromListPartial(n, list, hasStrings) {
21612 var ret;
21613 if (n < list.head.data.length) {
21614 // slice is the same for buffers and strings
21615 ret = list.head.data.slice(0, n);
21616 list.head.data = list.head.data.slice(n);
21617 } else if (n === list.head.data.length) {
21618 // first chunk is a perfect match
21619 ret = list.shift();
21620 } else {
21621 // result spans more than one buffer
21622 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
21623 }
21624 return ret;
21625 }
21626
21627 // Copies a specified amount of characters from the list of buffered data
21628 // chunks.
21629 // This function is designed to be inlinable, so please take care when making
21630 // changes to the function body.
21631 function copyFromBufferString(n, list) {
21632 var p = list.head;
21633 var c = 1;
21634 var ret = p.data;
21635 n -= ret.length;
21636 while (p = p.next) {
21637 var str = p.data;
21638 var nb = n > str.length ? str.length : n;
21639 if (nb === str.length) ret += str;else ret += str.slice(0, n);
21640 n -= nb;
21641 if (n === 0) {
21642 if (nb === str.length) {
21643 ++c;
21644 if (p.next) list.head = p.next;else list.head = list.tail = null;
21645 } else {
21646 list.head = p;
21647 p.data = str.slice(nb);
21648 }
21649 break;
21650 }
21651 ++c;
21652 }
21653 list.length -= c;
21654 return ret;
21655 }
21656
21657 // Copies a specified amount of bytes from the list of buffered data chunks.
21658 // This function is designed to be inlinable, so please take care when making
21659 // changes to the function body.
21660 function copyFromBuffer(n, list) {
21661 var ret = bufferShim.allocUnsafe(n);
21662 var p = list.head;
21663 var c = 1;
21664 p.data.copy(ret);
21665 n -= p.data.length;
21666 while (p = p.next) {
21667 var buf = p.data;
21668 var nb = n > buf.length ? buf.length : n;
21669 buf.copy(ret, ret.length - n, 0, nb);
21670 n -= nb;
21671 if (n === 0) {
21672 if (nb === buf.length) {
21673 ++c;
21674 if (p.next) list.head = p.next;else list.head = list.tail = null;
21675 } else {
21676 list.head = p;
21677 p.data = buf.slice(nb);
21678 }
21679 break;
21680 }
21681 ++c;
21682 }
21683 list.length -= c;
21684 return ret;
21685 }
21686
21687 function endReadable(stream) {
21688 var state = stream._readableState;
21689
21690 // If we get here before consuming all the bytes, then that is a
21691 // bug in node. Should never happen.
21692 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
21693
21694 if (!state.endEmitted) {
21695 state.ended = true;
21696 processNextTick(endReadableNT, state, stream);
21697 }
21698 }
21699
21700 function endReadableNT(state, stream) {
21701 // Check that we didn't get one last unshift.
21702 if (!state.endEmitted && state.length === 0) {
21703 state.endEmitted = true;
21704 stream.readable = false;
21705 stream.emit('end');
21706 }
21707 }
21708
21709 function forEach(xs, f) {
21710 for (var i = 0, l = xs.length; i < l; i++) {
21711 f(xs[i], i);
21712 }
21713 }
21714
21715 function indexOf(xs, x) {
21716 for (var i = 0, l = xs.length; i < l; i++) {
21717 if (xs[i] === x) return i;
21718 }
21719 return -1;
21720 }
21721 }).call(this,require('_process'))
21722 },{"./_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){
21723 // a transform stream is a readable/writable stream where you do
21724 // something with the data. Sometimes it's called a "filter",
21725 // but that's not a great name for it, since that implies a thing where
21726 // some bits pass through, and others are simply ignored. (That would
21727 // be a valid example of a transform, of course.)
21728 //
21729 // While the output is causally related to the input, it's not a
21730 // necessarily symmetric or synchronous transformation. For example,
21731 // a zlib stream might take multiple plain-text writes(), and then
21732 // emit a single compressed chunk some time in the future.
21733 //
21734 // Here's how this works:
21735 //
21736 // The Transform stream has all the aspects of the readable and writable
21737 // stream classes. When you write(chunk), that calls _write(chunk,cb)
21738 // internally, and returns false if there's a lot of pending writes
21739 // buffered up. When you call read(), that calls _read(n) until
21740 // there's enough pending readable data buffered up.
21741 //
21742 // In a transform stream, the written data is placed in a buffer. When
21743 // _read(n) is called, it transforms the queued up data, calling the
21744 // buffered _write cb's as it consumes chunks. If consuming a single
21745 // written chunk would result in multiple output chunks, then the first
21746 // outputted bit calls the readcb, and subsequent chunks just go into
21747 // the read buffer, and will cause it to emit 'readable' if necessary.
21748 //
21749 // This way, back-pressure is actually determined by the reading side,
21750 // since _read has to be called to start processing a new chunk. However,
21751 // a pathological inflate type of transform can cause excessive buffering
21752 // here. For example, imagine a stream where every byte of input is
21753 // interpreted as an integer from 0-255, and then results in that many
21754 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
21755 // 1kb of data being output. In this case, you could write a very small
21756 // amount of input, and end up with a very large amount of output. In
21757 // such a pathological inflating mechanism, there'd be no way to tell
21758 // the system to stop doing the transform. A single 4MB write could
21759 // cause the system to run out of memory.
21760 //
21761 // However, even in such a pathological case, only a single written chunk
21762 // would be consumed, and then the rest would wait (un-transformed) until
21763 // the results of the previous transformed chunk were consumed.
21764
21765 'use strict';
21766
21767 module.exports = Transform;
21768
21769 var Duplex = require('./_stream_duplex');
21770
21771 /*<replacement>*/
21772 var util = require('core-util-is');
21773 util.inherits = require('inherits');
21774 /*</replacement>*/
21775
21776 util.inherits(Transform, Duplex);
21777
21778 function TransformState(stream) {
21779 this.afterTransform = function (er, data) {
21780 return afterTransform(stream, er, data);
21781 };
21782
21783 this.needTransform = false;
21784 this.transforming = false;
21785 this.writecb = null;
21786 this.writechunk = null;
21787 this.writeencoding = null;
21788 }
21789
21790 function afterTransform(stream, er, data) {
21791 var ts = stream._transformState;
21792 ts.transforming = false;
21793
21794 var cb = ts.writecb;
21795
21796 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
21797
21798 ts.writechunk = null;
21799 ts.writecb = null;
21800
21801 if (data !== null && data !== undefined) stream.push(data);
21802
21803 cb(er);
21804
21805 var rs = stream._readableState;
21806 rs.reading = false;
21807 if (rs.needReadable || rs.length < rs.highWaterMark) {
21808 stream._read(rs.highWaterMark);
21809 }
21810 }
21811
21812 function Transform(options) {
21813 if (!(this instanceof Transform)) return new Transform(options);
21814
21815 Duplex.call(this, options);
21816
21817 this._transformState = new TransformState(this);
21818
21819 var stream = this;
21820
21821 // start out asking for a readable event once data is transformed.
21822 this._readableState.needReadable = true;
21823
21824 // we have implemented the _read method, and done the other things
21825 // that Readable wants before the first _read call, so unset the
21826 // sync guard flag.
21827 this._readableState.sync = false;
21828
21829 if (options) {
21830 if (typeof options.transform === 'function') this._transform = options.transform;
21831
21832 if (typeof options.flush === 'function') this._flush = options.flush;
21833 }
21834
21835 // When the writable side finishes, then flush out anything remaining.
21836 this.once('prefinish', function () {
21837 if (typeof this._flush === 'function') this._flush(function (er, data) {
21838 done(stream, er, data);
21839 });else done(stream);
21840 });
21841 }
21842
21843 Transform.prototype.push = function (chunk, encoding) {
21844 this._transformState.needTransform = false;
21845 return Duplex.prototype.push.call(this, chunk, encoding);
21846 };
21847
21848 // This is the part where you do stuff!
21849 // override this function in implementation classes.
21850 // 'chunk' is an input chunk.
21851 //
21852 // Call `push(newChunk)` to pass along transformed output
21853 // to the readable side. You may call 'push' zero or more times.
21854 //
21855 // Call `cb(err)` when you are done with this chunk. If you pass
21856 // an error, then that'll put the hurt on the whole operation. If you
21857 // never call cb(), then you'll never get another chunk.
21858 Transform.prototype._transform = function (chunk, encoding, cb) {
21859 throw new Error('_transform() is not implemented');
21860 };
21861
21862 Transform.prototype._write = function (chunk, encoding, cb) {
21863 var ts = this._transformState;
21864 ts.writecb = cb;
21865 ts.writechunk = chunk;
21866 ts.writeencoding = encoding;
21867 if (!ts.transforming) {
21868 var rs = this._readableState;
21869 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
21870 }
21871 };
21872
21873 // Doesn't matter what the args are here.
21874 // _transform does all the work.
21875 // That we got here means that the readable side wants more data.
21876 Transform.prototype._read = function (n) {
21877 var ts = this._transformState;
21878
21879 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
21880 ts.transforming = true;
21881 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
21882 } else {
21883 // mark that we need a transform, so that any data that comes in
21884 // will get processed, now that we've asked for it.
21885 ts.needTransform = true;
21886 }
21887 };
21888
21889 function done(stream, er, data) {
21890 if (er) return stream.emit('error', er);
21891
21892 if (data !== null && data !== undefined) stream.push(data);
21893
21894 // if there's nothing in the write buffer, then that means
21895 // that nothing more will ever be provided
21896 var ws = stream._writableState;
21897 var ts = stream._transformState;
21898
21899 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
21900
21901 if (ts.transforming) throw new Error('Calling transform done when still transforming');
21902
21903 return stream.push(null);
21904 }
21905 },{"./_stream_duplex":15,"core-util-is":6,"inherits":9}],19:[function(require,module,exports){
21906 (function (process){
21907 // A bit simpler than readable streams.
21908 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
21909 // the drain event emission and buffering.
21910
21911 'use strict';
21912
21913 module.exports = Writable;
21914
21915 /*<replacement>*/
21916 var processNextTick = require('process-nextick-args');
21917 /*</replacement>*/
21918
21919 /*<replacement>*/
21920 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
21921 /*</replacement>*/
21922
21923 /*<replacement>*/
21924 var Duplex;
21925 /*</replacement>*/
21926
21927 Writable.WritableState = WritableState;
21928
21929 /*<replacement>*/
21930 var util = require('core-util-is');
21931 util.inherits = require('inherits');
21932 /*</replacement>*/
21933
21934 /*<replacement>*/
21935 var internalUtil = {
21936 deprecate: require('util-deprecate')
21937 };
21938 /*</replacement>*/
21939
21940 /*<replacement>*/
21941 var Stream;
21942 (function () {
21943 try {
21944 Stream = require('st' + 'ream');
21945 } catch (_) {} finally {
21946 if (!Stream) Stream = require('events').EventEmitter;
21947 }
21948 })();
21949 /*</replacement>*/
21950
21951 var Buffer = require('buffer').Buffer;
21952 /*<replacement>*/
21953 var bufferShim = require('buffer-shims');
21954 /*</replacement>*/
21955
21956 util.inherits(Writable, Stream);
21957
21958 function nop() {}
21959
21960 function WriteReq(chunk, encoding, cb) {
21961 this.chunk = chunk;
21962 this.encoding = encoding;
21963 this.callback = cb;
21964 this.next = null;
21965 }
21966
21967 function WritableState(options, stream) {
21968 Duplex = Duplex || require('./_stream_duplex');
21969
21970 options = options || {};
21971
21972 // object stream flag to indicate whether or not this stream
21973 // contains buffers or objects.
21974 this.objectMode = !!options.objectMode;
21975
21976 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
21977
21978 // the point at which write() starts returning false
21979 // Note: 0 is a valid value, means that we always return false if
21980 // the entire buffer is not flushed immediately on write()
21981 var hwm = options.highWaterMark;
21982 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
21983 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
21984
21985 // cast to ints.
21986 this.highWaterMark = ~ ~this.highWaterMark;
21987
21988 // drain event flag.
21989 this.needDrain = false;
21990 // at the start of calling end()
21991 this.ending = false;
21992 // when end() has been called, and returned
21993 this.ended = false;
21994 // when 'finish' is emitted
21995 this.finished = false;
21996
21997 // should we decode strings into buffers before passing to _write?
21998 // this is here so that some node-core streams can optimize string
21999 // handling at a lower level.
22000 var noDecode = options.decodeStrings === false;
22001 this.decodeStrings = !noDecode;
22002
22003 // Crypto is kind of old and crusty. Historically, its default string
22004 // encoding is 'binary' so we have to make this configurable.
22005 // Everything else in the universe uses 'utf8', though.
22006 this.defaultEncoding = options.defaultEncoding || 'utf8';
22007
22008 // not an actual buffer we keep track of, but a measurement
22009 // of how much we're waiting to get pushed to some underlying
22010 // socket or file.
22011 this.length = 0;
22012
22013 // a flag to see when we're in the middle of a write.
22014 this.writing = false;
22015
22016 // when true all writes will be buffered until .uncork() call
22017 this.corked = 0;
22018
22019 // a flag to be able to tell if the onwrite cb is called immediately,
22020 // or on a later tick. We set this to true at first, because any
22021 // actions that shouldn't happen until "later" should generally also
22022 // not happen before the first write call.
22023 this.sync = true;
22024
22025 // a flag to know if we're processing previously buffered items, which
22026 // may call the _write() callback in the same tick, so that we don't
22027 // end up in an overlapped onwrite situation.
22028 this.bufferProcessing = false;
22029
22030 // the callback that's passed to _write(chunk,cb)
22031 this.onwrite = function (er) {
22032 onwrite(stream, er);
22033 };
22034
22035 // the callback that the user supplies to write(chunk,encoding,cb)
22036 this.writecb = null;
22037
22038 // the amount that is being written when _write is called.
22039 this.writelen = 0;
22040
22041 this.bufferedRequest = null;
22042 this.lastBufferedRequest = null;
22043
22044 // number of pending user-supplied write callbacks
22045 // this must be 0 before 'finish' can be emitted
22046 this.pendingcb = 0;
22047
22048 // emit prefinish if the only thing we're waiting for is _write cbs
22049 // This is relevant for synchronous Transform streams
22050 this.prefinished = false;
22051
22052 // True if the error was already emitted and should not be thrown again
22053 this.errorEmitted = false;
22054
22055 // count buffered requests
22056 this.bufferedRequestCount = 0;
22057
22058 // allocate the first CorkedRequest, there is always
22059 // one allocated and free to use, and we maintain at most two
22060 this.corkedRequestsFree = new CorkedRequest(this);
22061 }
22062
22063 WritableState.prototype.getBuffer = function getBuffer() {
22064 var current = this.bufferedRequest;
22065 var out = [];
22066 while (current) {
22067 out.push(current);
22068 current = current.next;
22069 }
22070 return out;
22071 };
22072
22073 (function () {
22074 try {
22075 Object.defineProperty(WritableState.prototype, 'buffer', {
22076 get: internalUtil.deprecate(function () {
22077 return this.getBuffer();
22078 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
22079 });
22080 } catch (_) {}
22081 })();
22082
22083 // Test _writableState for inheritance to account for Duplex streams,
22084 // whose prototype chain only points to Readable.
22085 var realHasInstance;
22086 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
22087 realHasInstance = Function.prototype[Symbol.hasInstance];
22088 Object.defineProperty(Writable, Symbol.hasInstance, {
22089 value: function (object) {
22090 if (realHasInstance.call(this, object)) return true;
22091
22092 return object && object._writableState instanceof WritableState;
22093 }
22094 });
22095 } else {
22096 realHasInstance = function (object) {
22097 return object instanceof this;
22098 };
22099 }
22100
22101 function Writable(options) {
22102 Duplex = Duplex || require('./_stream_duplex');
22103
22104 // Writable ctor is applied to Duplexes, too.
22105 // `realHasInstance` is necessary because using plain `instanceof`
22106 // would return false, as no `_writableState` property is attached.
22107
22108 // Trying to use the custom `instanceof` for Writable here will also break the
22109 // Node.js LazyTransform implementation, which has a non-trivial getter for
22110 // `_writableState` that would lead to infinite recursion.
22111 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
22112 return new Writable(options);
22113 }
22114
22115 this._writableState = new WritableState(options, this);
22116
22117 // legacy.
22118 this.writable = true;
22119
22120 if (options) {
22121 if (typeof options.write === 'function') this._write = options.write;
22122
22123 if (typeof options.writev === 'function') this._writev = options.writev;
22124 }
22125
22126 Stream.call(this);
22127 }
22128
22129 // Otherwise people can pipe Writable streams, which is just wrong.
22130 Writable.prototype.pipe = function () {
22131 this.emit('error', new Error('Cannot pipe, not readable'));
22132 };
22133
22134 function writeAfterEnd(stream, cb) {
22135 var er = new Error('write after end');
22136 // TODO: defer error events consistently everywhere, not just the cb
22137 stream.emit('error', er);
22138 processNextTick(cb, er);
22139 }
22140
22141 // If we get something that is not a buffer, string, null, or undefined,
22142 // and we're not in objectMode, then that's an error.
22143 // Otherwise stream chunks are all considered to be of length=1, and the
22144 // watermarks determine how many objects to keep in the buffer, rather than
22145 // how many bytes or characters.
22146 function validChunk(stream, state, chunk, cb) {
22147 var valid = true;
22148 var er = false;
22149 // Always throw error if a null is written
22150 // if we are not in object mode then throw
22151 // if it is not a buffer, string, or undefined.
22152 if (chunk === null) {
22153 er = new TypeError('May not write null values to stream');
22154 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
22155 er = new TypeError('Invalid non-string/buffer chunk');
22156 }
22157 if (er) {
22158 stream.emit('error', er);
22159 processNextTick(cb, er);
22160 valid = false;
22161 }
22162 return valid;
22163 }
22164
22165 Writable.prototype.write = function (chunk, encoding, cb) {
22166 var state = this._writableState;
22167 var ret = false;
22168
22169 if (typeof encoding === 'function') {
22170 cb = encoding;
22171 encoding = null;
22172 }
22173
22174 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
22175
22176 if (typeof cb !== 'function') cb = nop;
22177
22178 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
22179 state.pendingcb++;
22180 ret = writeOrBuffer(this, state, chunk, encoding, cb);
22181 }
22182
22183 return ret;
22184 };
22185
22186 Writable.prototype.cork = function () {
22187 var state = this._writableState;
22188
22189 state.corked++;
22190 };
22191
22192 Writable.prototype.uncork = function () {
22193 var state = this._writableState;
22194
22195 if (state.corked) {
22196 state.corked--;
22197
22198 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
22199 }
22200 };
22201
22202 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
22203 // node::ParseEncoding() requires lower case.
22204 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
22205 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);
22206 this._writableState.defaultEncoding = encoding;
22207 return this;
22208 };
22209
22210 function decodeChunk(state, chunk, encoding) {
22211 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
22212 chunk = bufferShim.from(chunk, encoding);
22213 }
22214 return chunk;
22215 }
22216
22217 // if we're already writing something, then just put this
22218 // in the queue, and wait our turn. Otherwise, call _write
22219 // If we return false, then we need a drain event, so set that flag.
22220 function writeOrBuffer(stream, state, chunk, encoding, cb) {
22221 chunk = decodeChunk(state, chunk, encoding);
22222
22223 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
22224 var len = state.objectMode ? 1 : chunk.length;
22225
22226 state.length += len;
22227
22228 var ret = state.length < state.highWaterMark;
22229 // we must ensure that previous needDrain will not be reset to false.
22230 if (!ret) state.needDrain = true;
22231
22232 if (state.writing || state.corked) {
22233 var last = state.lastBufferedRequest;
22234 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
22235 if (last) {
22236 last.next = state.lastBufferedRequest;
22237 } else {
22238 state.bufferedRequest = state.lastBufferedRequest;
22239 }
22240 state.bufferedRequestCount += 1;
22241 } else {
22242 doWrite(stream, state, false, len, chunk, encoding, cb);
22243 }
22244
22245 return ret;
22246 }
22247
22248 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
22249 state.writelen = len;
22250 state.writecb = cb;
22251 state.writing = true;
22252 state.sync = true;
22253 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
22254 state.sync = false;
22255 }
22256
22257 function onwriteError(stream, state, sync, er, cb) {
22258 --state.pendingcb;
22259 if (sync) processNextTick(cb, er);else cb(er);
22260
22261 stream._writableState.errorEmitted = true;
22262 stream.emit('error', er);
22263 }
22264
22265 function onwriteStateUpdate(state) {
22266 state.writing = false;
22267 state.writecb = null;
22268 state.length -= state.writelen;
22269 state.writelen = 0;
22270 }
22271
22272 function onwrite(stream, er) {
22273 var state = stream._writableState;
22274 var sync = state.sync;
22275 var cb = state.writecb;
22276
22277 onwriteStateUpdate(state);
22278
22279 if (er) onwriteError(stream, state, sync, er, cb);else {
22280 // Check if we're actually ready to finish, but don't emit yet
22281 var finished = needFinish(state);
22282
22283 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
22284 clearBuffer(stream, state);
22285 }
22286
22287 if (sync) {
22288 /*<replacement>*/
22289 asyncWrite(afterWrite, stream, state, finished, cb);
22290 /*</replacement>*/
22291 } else {
22292 afterWrite(stream, state, finished, cb);
22293 }
22294 }
22295 }
22296
22297 function afterWrite(stream, state, finished, cb) {
22298 if (!finished) onwriteDrain(stream, state);
22299 state.pendingcb--;
22300 cb();
22301 finishMaybe(stream, state);
22302 }
22303
22304 // Must force callback to be called on nextTick, so that we don't
22305 // emit 'drain' before the write() consumer gets the 'false' return
22306 // value, and has a chance to attach a 'drain' listener.
22307 function onwriteDrain(stream, state) {
22308 if (state.length === 0 && state.needDrain) {
22309 state.needDrain = false;
22310 stream.emit('drain');
22311 }
22312 }
22313
22314 // if there's something in the buffer waiting, then process it
22315 function clearBuffer(stream, state) {
22316 state.bufferProcessing = true;
22317 var entry = state.bufferedRequest;
22318
22319 if (stream._writev && entry && entry.next) {
22320 // Fast case, write everything using _writev()
22321 var l = state.bufferedRequestCount;
22322 var buffer = new Array(l);
22323 var holder = state.corkedRequestsFree;
22324 holder.entry = entry;
22325
22326 var count = 0;
22327 while (entry) {
22328 buffer[count] = entry;
22329 entry = entry.next;
22330 count += 1;
22331 }
22332
22333 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
22334
22335 // doWrite is almost always async, defer these to save a bit of time
22336 // as the hot path ends with doWrite
22337 state.pendingcb++;
22338 state.lastBufferedRequest = null;
22339 if (holder.next) {
22340 state.corkedRequestsFree = holder.next;
22341 holder.next = null;
22342 } else {
22343 state.corkedRequestsFree = new CorkedRequest(state);
22344 }
22345 } else {
22346 // Slow case, write chunks one-by-one
22347 while (entry) {
22348 var chunk = entry.chunk;
22349 var encoding = entry.encoding;
22350 var cb = entry.callback;
22351 var len = state.objectMode ? 1 : chunk.length;
22352
22353 doWrite(stream, state, false, len, chunk, encoding, cb);
22354 entry = entry.next;
22355 // if we didn't call the onwrite immediately, then
22356 // it means that we need to wait until it does.
22357 // also, that means that the chunk and cb are currently
22358 // being processed, so move the buffer counter past them.
22359 if (state.writing) {
22360 break;
22361 }
22362 }
22363
22364 if (entry === null) state.lastBufferedRequest = null;
22365 }
22366
22367 state.bufferedRequestCount = 0;
22368 state.bufferedRequest = entry;
22369 state.bufferProcessing = false;
22370 }
22371
22372 Writable.prototype._write = function (chunk, encoding, cb) {
22373 cb(new Error('_write() is not implemented'));
22374 };
22375
22376 Writable.prototype._writev = null;
22377
22378 Writable.prototype.end = function (chunk, encoding, cb) {
22379 var state = this._writableState;
22380
22381 if (typeof chunk === 'function') {
22382 cb = chunk;
22383 chunk = null;
22384 encoding = null;
22385 } else if (typeof encoding === 'function') {
22386 cb = encoding;
22387 encoding = null;
22388 }
22389
22390 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
22391
22392 // .end() fully uncorks
22393 if (state.corked) {
22394 state.corked = 1;
22395 this.uncork();
22396 }
22397
22398 // ignore unnecessary end() calls.
22399 if (!state.ending && !state.finished) endWritable(this, state, cb);
22400 };
22401
22402 function needFinish(state) {
22403 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
22404 }
22405
22406 function prefinish(stream, state) {
22407 if (!state.prefinished) {
22408 state.prefinished = true;
22409 stream.emit('prefinish');
22410 }
22411 }
22412
22413 function finishMaybe(stream, state) {
22414 var need = needFinish(state);
22415 if (need) {
22416 if (state.pendingcb === 0) {
22417 prefinish(stream, state);
22418 state.finished = true;
22419 stream.emit('finish');
22420 } else {
22421 prefinish(stream, state);
22422 }
22423 }
22424 return need;
22425 }
22426
22427 function endWritable(stream, state, cb) {
22428 state.ending = true;
22429 finishMaybe(stream, state);
22430 if (cb) {
22431 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
22432 }
22433 state.ended = true;
22434 stream.writable = false;
22435 }
22436
22437 // It seems a linked list but it is not
22438 // there will be only 2 of these for each stream
22439 function CorkedRequest(state) {
22440 var _this = this;
22441
22442 this.next = null;
22443 this.entry = null;
22444
22445 this.finish = function (err) {
22446 var entry = _this.entry;
22447 _this.entry = null;
22448 while (entry) {
22449 var cb = entry.callback;
22450 state.pendingcb--;
22451 cb(err);
22452 entry = entry.next;
22453 }
22454 if (state.corkedRequestsFree) {
22455 state.corkedRequestsFree.next = _this;
22456 } else {
22457 state.corkedRequestsFree = _this;
22458 }
22459 };
22460 }
22461 }).call(this,require('_process'))
22462 },{"./_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){
22463 'use strict';
22464
22465 var Buffer = require('buffer').Buffer;
22466 /*<replacement>*/
22467 var bufferShim = require('buffer-shims');
22468 /*</replacement>*/
22469
22470 module.exports = BufferList;
22471
22472 function BufferList() {
22473 this.head = null;
22474 this.tail = null;
22475 this.length = 0;
22476 }
22477
22478 BufferList.prototype.push = function (v) {
22479 var entry = { data: v, next: null };
22480 if (this.length > 0) this.tail.next = entry;else this.head = entry;
22481 this.tail = entry;
22482 ++this.length;
22483 };
22484
22485 BufferList.prototype.unshift = function (v) {
22486 var entry = { data: v, next: this.head };
22487 if (this.length === 0) this.tail = entry;
22488 this.head = entry;
22489 ++this.length;
22490 };
22491
22492 BufferList.prototype.shift = function () {
22493 if (this.length === 0) return;
22494 var ret = this.head.data;
22495 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
22496 --this.length;
22497 return ret;
22498 };
22499
22500 BufferList.prototype.clear = function () {
22501 this.head = this.tail = null;
22502 this.length = 0;
22503 };
22504
22505 BufferList.prototype.join = function (s) {
22506 if (this.length === 0) return '';
22507 var p = this.head;
22508 var ret = '' + p.data;
22509 while (p = p.next) {
22510 ret += s + p.data;
22511 }return ret;
22512 };
22513
22514 BufferList.prototype.concat = function (n) {
22515 if (this.length === 0) return bufferShim.alloc(0);
22516 if (this.length === 1) return this.head.data;
22517 var ret = bufferShim.allocUnsafe(n >>> 0);
22518 var p = this.head;
22519 var i = 0;
22520 while (p) {
22521 p.data.copy(ret, i);
22522 i += p.data.length;
22523 p = p.next;
22524 }
22525 return ret;
22526 };
22527 },{"buffer":5,"buffer-shims":4}],21:[function(require,module,exports){
22528 module.exports = require("./lib/_stream_passthrough.js")
22529
22530 },{"./lib/_stream_passthrough.js":16}],22:[function(require,module,exports){
22531 (function (process){
22532 var Stream = (function (){
22533 try {
22534 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
22535 } catch(_){}
22536 }());
22537 exports = module.exports = require('./lib/_stream_readable.js');
22538 exports.Stream = Stream || exports;
22539 exports.Readable = exports;
22540 exports.Writable = require('./lib/_stream_writable.js');
22541 exports.Duplex = require('./lib/_stream_duplex.js');
22542 exports.Transform = require('./lib/_stream_transform.js');
22543 exports.PassThrough = require('./lib/_stream_passthrough.js');
22544
22545 if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
22546 module.exports = Stream;
22547 }
22548
22549 }).call(this,require('_process'))
22550 },{"./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){
22551 module.exports = require("./lib/_stream_transform.js")
22552
22553 },{"./lib/_stream_transform.js":18}],24:[function(require,module,exports){
22554 module.exports = require("./lib/_stream_writable.js")
22555
22556 },{"./lib/_stream_writable.js":19}],25:[function(require,module,exports){
22557 // Copyright Joyent, Inc. and other Node contributors.
22558 //
22559 // Permission is hereby granted, free of charge, to any person obtaining a
22560 // copy of this software and associated documentation files (the
22561 // "Software"), to deal in the Software without restriction, including
22562 // without limitation the rights to use, copy, modify, merge, publish,
22563 // distribute, sublicense, and/or sell copies of the Software, and to permit
22564 // persons to whom the Software is furnished to do so, subject to the
22565 // following conditions:
22566 //
22567 // The above copyright notice and this permission notice shall be included
22568 // in all copies or substantial portions of the Software.
22569 //
22570 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22571 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22572 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
22573 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
22574 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22575 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22576 // USE OR OTHER DEALINGS IN THE SOFTWARE.
22577
22578 module.exports = Stream;
22579
22580 var EE = require('events').EventEmitter;
22581 var inherits = require('inherits');
22582
22583 inherits(Stream, EE);
22584 Stream.Readable = require('readable-stream/readable.js');
22585 Stream.Writable = require('readable-stream/writable.js');
22586 Stream.Duplex = require('readable-stream/duplex.js');
22587 Stream.Transform = require('readable-stream/transform.js');
22588 Stream.PassThrough = require('readable-stream/passthrough.js');
22589
22590 // Backwards-compat with node 0.4.x
22591 Stream.Stream = Stream;
22592
22593
22594
22595 // old-style streams. Note that the pipe method (the only relevant
22596 // part of this class) is overridden in the Readable class.
22597
22598 function Stream() {
22599 EE.call(this);
22600 }
22601
22602 Stream.prototype.pipe = function(dest, options) {
22603 var source = this;
22604
22605 function ondata(chunk) {
22606 if (dest.writable) {
22607 if (false === dest.write(chunk) && source.pause) {
22608 source.pause();
22609 }
22610 }
22611 }
22612
22613 source.on('data', ondata);
22614
22615 function ondrain() {
22616 if (source.readable && source.resume) {
22617 source.resume();
22618 }
22619 }
22620
22621 dest.on('drain', ondrain);
22622
22623 // If the 'end' option is not supplied, dest.end() will be called when
22624 // source gets the 'end' or 'close' events. Only dest.end() once.
22625 if (!dest._isStdio && (!options || options.end !== false)) {
22626 source.on('end', onend);
22627 source.on('close', onclose);
22628 }
22629
22630 var didOnEnd = false;
22631 function onend() {
22632 if (didOnEnd) return;
22633 didOnEnd = true;
22634
22635 dest.end();
22636 }
22637
22638
22639 function onclose() {
22640 if (didOnEnd) return;
22641 didOnEnd = true;
22642
22643 if (typeof dest.destroy === 'function') dest.destroy();
22644 }
22645
22646 // don't leave dangling pipes when there are errors.
22647 function onerror(er) {
22648 cleanup();
22649 if (EE.listenerCount(this, 'error') === 0) {
22650 throw er; // Unhandled stream error in pipe.
22651 }
22652 }
22653
22654 source.on('error', onerror);
22655 dest.on('error', onerror);
22656
22657 // remove all the event listeners that were added.
22658 function cleanup() {
22659 source.removeListener('data', ondata);
22660 dest.removeListener('drain', ondrain);
22661
22662 source.removeListener('end', onend);
22663 source.removeListener('close', onclose);
22664
22665 source.removeListener('error', onerror);
22666 dest.removeListener('error', onerror);
22667
22668 source.removeListener('end', cleanup);
22669 source.removeListener('close', cleanup);
22670
22671 dest.removeListener('close', cleanup);
22672 }
22673
22674 source.on('end', cleanup);
22675 source.on('close', cleanup);
22676
22677 dest.on('close', cleanup);
22678
22679 dest.emit('pipe', source);
22680
22681 // Allow for unix-like usage: A.pipe(B).pipe(C)
22682 return dest;
22683 };
22684
22685 },{"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){
22686 // Copyright Joyent, Inc. and other Node contributors.
22687 //
22688 // Permission is hereby granted, free of charge, to any person obtaining a
22689 // copy of this software and associated documentation files (the
22690 // "Software"), to deal in the Software without restriction, including
22691 // without limitation the rights to use, copy, modify, merge, publish,
22692 // distribute, sublicense, and/or sell copies of the Software, and to permit
22693 // persons to whom the Software is furnished to do so, subject to the
22694 // following conditions:
22695 //
22696 // The above copyright notice and this permission notice shall be included
22697 // in all copies or substantial portions of the Software.
22698 //
22699 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22700 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22701 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
22702 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
22703 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22704 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22705 // USE OR OTHER DEALINGS IN THE SOFTWARE.
22706
22707 var Buffer = require('buffer').Buffer;
22708
22709 var isBufferEncoding = Buffer.isEncoding
22710 || function(encoding) {
22711 switch (encoding && encoding.toLowerCase()) {
22712 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;
22713 default: return false;
22714 }
22715 }
22716
22717
22718 function assertEncoding(encoding) {
22719 if (encoding && !isBufferEncoding(encoding)) {
22720 throw new Error('Unknown encoding: ' + encoding);
22721 }
22722 }
22723
22724 // StringDecoder provides an interface for efficiently splitting a series of
22725 // buffers into a series of JS strings without breaking apart multi-byte
22726 // characters. CESU-8 is handled as part of the UTF-8 encoding.
22727 //
22728 // @TODO Handling all encodings inside a single object makes it very difficult
22729 // to reason about this code, so it should be split up in the future.
22730 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
22731 // points as used by CESU-8.
22732 var StringDecoder = exports.StringDecoder = function(encoding) {
22733 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
22734 assertEncoding(encoding);
22735 switch (this.encoding) {
22736 case 'utf8':
22737 // CESU-8 represents each of Surrogate Pair by 3-bytes
22738 this.surrogateSize = 3;
22739 break;
22740 case 'ucs2':
22741 case 'utf16le':
22742 // UTF-16 represents each of Surrogate Pair by 2-bytes
22743 this.surrogateSize = 2;
22744 this.detectIncompleteChar = utf16DetectIncompleteChar;
22745 break;
22746 case 'base64':
22747 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
22748 this.surrogateSize = 3;
22749 this.detectIncompleteChar = base64DetectIncompleteChar;
22750 break;
22751 default:
22752 this.write = passThroughWrite;
22753 return;
22754 }
22755
22756 // Enough space to store all bytes of a single character. UTF-8 needs 4
22757 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
22758 this.charBuffer = new Buffer(6);
22759 // Number of bytes received for the current incomplete multi-byte character.
22760 this.charReceived = 0;
22761 // Number of bytes expected for the current incomplete multi-byte character.
22762 this.charLength = 0;
22763 };
22764
22765
22766 // write decodes the given buffer and returns it as JS string that is
22767 // guaranteed to not contain any partial multi-byte characters. Any partial
22768 // character found at the end of the buffer is buffered up, and will be
22769 // returned when calling write again with the remaining bytes.
22770 //
22771 // Note: Converting a Buffer containing an orphan surrogate to a String
22772 // currently works, but converting a String to a Buffer (via `new Buffer`, or
22773 // Buffer#write) will replace incomplete surrogates with the unicode
22774 // replacement character. See https://codereview.chromium.org/121173009/ .
22775 StringDecoder.prototype.write = function(buffer) {
22776 var charStr = '';
22777 // if our last write ended with an incomplete multibyte character
22778 while (this.charLength) {
22779 // determine how many remaining bytes this buffer has to offer for this char
22780 var available = (buffer.length >= this.charLength - this.charReceived) ?
22781 this.charLength - this.charReceived :
22782 buffer.length;
22783
22784 // add the new bytes to the char buffer
22785 buffer.copy(this.charBuffer, this.charReceived, 0, available);
22786 this.charReceived += available;
22787
22788 if (this.charReceived < this.charLength) {
22789 // still not enough chars in this buffer? wait for more ...
22790 return '';
22791 }
22792
22793 // remove bytes belonging to the current character from the buffer
22794 buffer = buffer.slice(available, buffer.length);
22795
22796 // get the character that was split
22797 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
22798
22799 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
22800 var charCode = charStr.charCodeAt(charStr.length - 1);
22801 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
22802 this.charLength += this.surrogateSize;
22803 charStr = '';
22804 continue;
22805 }
22806 this.charReceived = this.charLength = 0;
22807
22808 // if there are no more bytes in this buffer, just emit our char
22809 if (buffer.length === 0) {
22810 return charStr;
22811 }
22812 break;
22813 }
22814
22815 // determine and set charLength / charReceived
22816 this.detectIncompleteChar(buffer);
22817
22818 var end = buffer.length;
22819 if (this.charLength) {
22820 // buffer the incomplete character bytes we got
22821 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
22822 end -= this.charReceived;
22823 }
22824
22825 charStr += buffer.toString(this.encoding, 0, end);
22826
22827 var end = charStr.length - 1;
22828 var charCode = charStr.charCodeAt(end);
22829 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
22830 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
22831 var size = this.surrogateSize;
22832 this.charLength += size;
22833 this.charReceived += size;
22834 this.charBuffer.copy(this.charBuffer, size, 0, size);
22835 buffer.copy(this.charBuffer, 0, 0, size);
22836 return charStr.substring(0, end);
22837 }
22838
22839 // or just emit the charStr
22840 return charStr;
22841 };
22842
22843 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
22844 // the end of the given buffer. If so, it sets this.charLength to the byte
22845 // length that character, and sets this.charReceived to the number of bytes
22846 // that are available for this character.
22847 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
22848 // determine how many bytes we have to check at the end of this buffer
22849 var i = (buffer.length >= 3) ? 3 : buffer.length;
22850
22851 // Figure out if one of the last i bytes of our buffer announces an
22852 // incomplete char.
22853 for (; i > 0; i--) {
22854 var c = buffer[buffer.length - i];
22855
22856 // See http://en.wikipedia.org/wiki/UTF-8#Description
22857
22858 // 110XXXXX
22859 if (i == 1 && c >> 5 == 0x06) {
22860 this.charLength = 2;
22861 break;
22862 }
22863
22864 // 1110XXXX
22865 if (i <= 2 && c >> 4 == 0x0E) {
22866 this.charLength = 3;
22867 break;
22868 }
22869
22870 // 11110XXX
22871 if (i <= 3 && c >> 3 == 0x1E) {
22872 this.charLength = 4;
22873 break;
22874 }
22875 }
22876 this.charReceived = i;
22877 };
22878
22879 StringDecoder.prototype.end = function(buffer) {
22880 var res = '';
22881 if (buffer && buffer.length)
22882 res = this.write(buffer);
22883
22884 if (this.charReceived) {
22885 var cr = this.charReceived;
22886 var buf = this.charBuffer;
22887 var enc = this.encoding;
22888 res += buf.slice(0, cr).toString(enc);
22889 }
22890
22891 return res;
22892 };
22893
22894 function passThroughWrite(buffer) {
22895 return buffer.toString(this.encoding);
22896 }
22897
22898 function utf16DetectIncompleteChar(buffer) {
22899 this.charReceived = buffer.length % 2;
22900 this.charLength = this.charReceived ? 2 : 0;
22901 }
22902
22903 function base64DetectIncompleteChar(buffer) {
22904 this.charReceived = buffer.length % 3;
22905 this.charLength = this.charReceived ? 3 : 0;
22906 }
22907
22908 },{"buffer":5}],27:[function(require,module,exports){
22909 (function (global){
22910
22911 /**
22912 * Module exports.
22913 */
22914
22915 module.exports = deprecate;
22916
22917 /**
22918 * Mark that a method should not be used.
22919 * Returns a modified function which warns once by default.
22920 *
22921 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
22922 *
22923 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
22924 * will throw an Error when invoked.
22925 *
22926 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
22927 * will invoke `console.trace()` instead of `console.error()`.
22928 *
22929 * @param {Function} fn - the function to deprecate
22930 * @param {String} msg - the string to print to the console when `fn` is invoked
22931 * @returns {Function} a new "deprecated" version of `fn`
22932 * @api public
22933 */
22934
22935 function deprecate (fn, msg) {
22936 if (config('noDeprecation')) {
22937 return fn;
22938 }
22939
22940 var warned = false;
22941 function deprecated() {
22942 if (!warned) {
22943 if (config('throwDeprecation')) {
22944 throw new Error(msg);
22945 } else if (config('traceDeprecation')) {
22946 console.trace(msg);
22947 } else {
22948 console.warn(msg);
22949 }
22950 warned = true;
22951 }
22952 return fn.apply(this, arguments);
22953 }
22954
22955 return deprecated;
22956 }
22957
22958 /**
22959 * Checks `localStorage` for boolean values for the given `name`.
22960 *
22961 * @param {String} name
22962 * @returns {Boolean}
22963 * @api private
22964 */
22965
22966 function config (name) {
22967 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
22968 try {
22969 if (!global.localStorage) return false;
22970 } catch (_) {
22971 return false;
22972 }
22973 var val = global.localStorage[name];
22974 if (null == val) return false;
22975 return String(val).toLowerCase() === 'true';
22976 }
22977
22978 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
22979 },{}],28:[function(require,module,exports){
22980 arguments[4][9][0].apply(exports,arguments)
22981 },{"dup":9}],29:[function(require,module,exports){
22982 module.exports = function isBuffer(arg) {
22983 return arg && typeof arg === 'object'
22984 && typeof arg.copy === 'function'
22985 && typeof arg.fill === 'function'
22986 && typeof arg.readUInt8 === 'function';
22987 }
22988 },{}],30:[function(require,module,exports){
22989 (function (process,global){
22990 // Copyright Joyent, Inc. and other Node contributors.
22991 //
22992 // Permission is hereby granted, free of charge, to any person obtaining a
22993 // copy of this software and associated documentation files (the
22994 // "Software"), to deal in the Software without restriction, including
22995 // without limitation the rights to use, copy, modify, merge, publish,
22996 // distribute, sublicense, and/or sell copies of the Software, and to permit
22997 // persons to whom the Software is furnished to do so, subject to the
22998 // following conditions:
22999 //
23000 // The above copyright notice and this permission notice shall be included
23001 // in all copies or substantial portions of the Software.
23002 //
23003 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23004 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23005 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
23006 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
23007 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
23008 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
23009 // USE OR OTHER DEALINGS IN THE SOFTWARE.
23010
23011 var formatRegExp = /%[sdj%]/g;
23012 exports.format = function(f) {
23013 if (!isString(f)) {
23014 var objects = [];
23015 for (var i = 0; i < arguments.length; i++) {
23016 objects.push(inspect(arguments[i]));
23017 }
23018 return objects.join(' ');
23019 }
23020
23021 var i = 1;
23022 var args = arguments;
23023 var len = args.length;
23024 var str = String(f).replace(formatRegExp, function(x) {
23025 if (x === '%%') return '%';
23026 if (i >= len) return x;
23027 switch (x) {
23028 case '%s': return String(args[i++]);
23029 case '%d': return Number(args[i++]);
23030 case '%j':
23031 try {
23032 return JSON.stringify(args[i++]);
23033 } catch (_) {
23034 return '[Circular]';
23035 }
23036 default:
23037 return x;
23038 }
23039 });
23040 for (var x = args[i]; i < len; x = args[++i]) {
23041 if (isNull(x) || !isObject(x)) {
23042 str += ' ' + x;
23043 } else {
23044 str += ' ' + inspect(x);
23045 }
23046 }
23047 return str;
23048 };
23049
23050
23051 // Mark that a method should not be used.
23052 // Returns a modified function which warns once by default.
23053 // If --no-deprecation is set, then it is a no-op.
23054 exports.deprecate = function(fn, msg) {
23055 // Allow for deprecating things in the process of starting up.
23056 if (isUndefined(global.process)) {
23057 return function() {
23058 return exports.deprecate(fn, msg).apply(this, arguments);
23059 };
23060 }
23061
23062 if (process.noDeprecation === true) {
23063 return fn;
23064 }
23065
23066 var warned = false;
23067 function deprecated() {
23068 if (!warned) {
23069 if (process.throwDeprecation) {
23070 throw new Error(msg);
23071 } else if (process.traceDeprecation) {
23072 console.trace(msg);
23073 } else {
23074 console.error(msg);
23075 }
23076 warned = true;
23077 }
23078 return fn.apply(this, arguments);
23079 }
23080
23081 return deprecated;
23082 };
23083
23084
23085 var debugs = {};
23086 var debugEnviron;
23087 exports.debuglog = function(set) {
23088 if (isUndefined(debugEnviron))
23089 debugEnviron = process.env.NODE_DEBUG || '';
23090 set = set.toUpperCase();
23091 if (!debugs[set]) {
23092 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
23093 var pid = process.pid;
23094 debugs[set] = function() {
23095 var msg = exports.format.apply(exports, arguments);
23096 console.error('%s %d: %s', set, pid, msg);
23097 };
23098 } else {
23099 debugs[set] = function() {};
23100 }
23101 }
23102 return debugs[set];
23103 };
23104
23105
23106 /**
23107 * Echos the value of a value. Trys to print the value out
23108 * in the best way possible given the different types.
23109 *
23110 * @param {Object} obj The object to print out.
23111 * @param {Object} opts Optional options object that alters the output.
23112 */
23113 /* legacy: obj, showHidden, depth, colors*/
23114 function inspect(obj, opts) {
23115 // default options
23116 var ctx = {
23117 seen: [],
23118 stylize: stylizeNoColor
23119 };
23120 // legacy...
23121 if (arguments.length >= 3) ctx.depth = arguments[2];
23122 if (arguments.length >= 4) ctx.colors = arguments[3];
23123 if (isBoolean(opts)) {
23124 // legacy...
23125 ctx.showHidden = opts;
23126 } else if (opts) {
23127 // got an "options" object
23128 exports._extend(ctx, opts);
23129 }
23130 // set default options
23131 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
23132 if (isUndefined(ctx.depth)) ctx.depth = 2;
23133 if (isUndefined(ctx.colors)) ctx.colors = false;
23134 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
23135 if (ctx.colors) ctx.stylize = stylizeWithColor;
23136 return formatValue(ctx, obj, ctx.depth);
23137 }
23138 exports.inspect = inspect;
23139
23140
23141 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
23142 inspect.colors = {
23143 'bold' : [1, 22],
23144 'italic' : [3, 23],
23145 'underline' : [4, 24],
23146 'inverse' : [7, 27],
23147 'white' : [37, 39],
23148 'grey' : [90, 39],
23149 'black' : [30, 39],
23150 'blue' : [34, 39],
23151 'cyan' : [36, 39],
23152 'green' : [32, 39],
23153 'magenta' : [35, 39],
23154 'red' : [31, 39],
23155 'yellow' : [33, 39]
23156 };
23157
23158 // Don't use 'blue' not visible on cmd.exe
23159 inspect.styles = {
23160 'special': 'cyan',
23161 'number': 'yellow',
23162 'boolean': 'yellow',
23163 'undefined': 'grey',
23164 'null': 'bold',
23165 'string': 'green',
23166 'date': 'magenta',
23167 // "name": intentionally not styling
23168 'regexp': 'red'
23169 };
23170
23171
23172 function stylizeWithColor(str, styleType) {
23173 var style = inspect.styles[styleType];
23174
23175 if (style) {
23176 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
23177 '\u001b[' + inspect.colors[style][1] + 'm';
23178 } else {
23179 return str;
23180 }
23181 }
23182
23183
23184 function stylizeNoColor(str, styleType) {
23185 return str;
23186 }
23187
23188
23189 function arrayToHash(array) {
23190 var hash = {};
23191
23192 array.forEach(function(val, idx) {
23193 hash[val] = true;
23194 });
23195
23196 return hash;
23197 }
23198
23199
23200 function formatValue(ctx, value, recurseTimes) {
23201 // Provide a hook for user-specified inspect functions.
23202 // Check that value is an object with an inspect function on it
23203 if (ctx.customInspect &&
23204 value &&
23205 isFunction(value.inspect) &&
23206 // Filter out the util module, it's inspect function is special
23207 value.inspect !== exports.inspect &&
23208 // Also filter out any prototype objects using the circular check.
23209 !(value.constructor && value.constructor.prototype === value)) {
23210 var ret = value.inspect(recurseTimes, ctx);
23211 if (!isString(ret)) {
23212 ret = formatValue(ctx, ret, recurseTimes);
23213 }
23214 return ret;
23215 }
23216
23217 // Primitive types cannot have properties
23218 var primitive = formatPrimitive(ctx, value);
23219 if (primitive) {
23220 return primitive;
23221 }
23222
23223 // Look up the keys of the object.
23224 var keys = Object.keys(value);
23225 var visibleKeys = arrayToHash(keys);
23226
23227 if (ctx.showHidden) {
23228 keys = Object.getOwnPropertyNames(value);
23229 }
23230
23231 // IE doesn't make error fields non-enumerable
23232 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
23233 if (isError(value)
23234 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
23235 return formatError(value);
23236 }
23237
23238 // Some type of object without properties can be shortcutted.
23239 if (keys.length === 0) {
23240 if (isFunction(value)) {
23241 var name = value.name ? ': ' + value.name : '';
23242 return ctx.stylize('[Function' + name + ']', 'special');
23243 }
23244 if (isRegExp(value)) {
23245 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
23246 }
23247 if (isDate(value)) {
23248 return ctx.stylize(Date.prototype.toString.call(value), 'date');
23249 }
23250 if (isError(value)) {
23251 return formatError(value);
23252 }
23253 }
23254
23255 var base = '', array = false, braces = ['{', '}'];
23256
23257 // Make Array say that they are Array
23258 if (isArray(value)) {
23259 array = true;
23260 braces = ['[', ']'];
23261 }
23262
23263 // Make functions say that they are functions
23264 if (isFunction(value)) {
23265 var n = value.name ? ': ' + value.name : '';
23266 base = ' [Function' + n + ']';
23267 }
23268
23269 // Make RegExps say that they are RegExps
23270 if (isRegExp(value)) {
23271 base = ' ' + RegExp.prototype.toString.call(value);
23272 }
23273
23274 // Make dates with properties first say the date
23275 if (isDate(value)) {
23276 base = ' ' + Date.prototype.toUTCString.call(value);
23277 }
23278
23279 // Make error with message first say the error
23280 if (isError(value)) {
23281 base = ' ' + formatError(value);
23282 }
23283
23284 if (keys.length === 0 && (!array || value.length == 0)) {
23285 return braces[0] + base + braces[1];
23286 }
23287
23288 if (recurseTimes < 0) {
23289 if (isRegExp(value)) {
23290 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
23291 } else {
23292 return ctx.stylize('[Object]', 'special');
23293 }
23294 }
23295
23296 ctx.seen.push(value);
23297
23298 var output;
23299 if (array) {
23300 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
23301 } else {
23302 output = keys.map(function(key) {
23303 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
23304 });
23305 }
23306
23307 ctx.seen.pop();
23308
23309 return reduceToSingleString(output, base, braces);
23310 }
23311
23312
23313 function formatPrimitive(ctx, value) {
23314 if (isUndefined(value))
23315 return ctx.stylize('undefined', 'undefined');
23316 if (isString(value)) {
23317 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
23318 .replace(/'/g, "\\'")
23319 .replace(/\\"/g, '"') + '\'';
23320 return ctx.stylize(simple, 'string');
23321 }
23322 if (isNumber(value))
23323 return ctx.stylize('' + value, 'number');
23324 if (isBoolean(value))
23325 return ctx.stylize('' + value, 'boolean');
23326 // For some reason typeof null is "object", so special case here.
23327 if (isNull(value))
23328 return ctx.stylize('null', 'null');
23329 }
23330
23331
23332 function formatError(value) {
23333 return '[' + Error.prototype.toString.call(value) + ']';
23334 }
23335
23336
23337 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
23338 var output = [];
23339 for (var i = 0, l = value.length; i < l; ++i) {
23340 if (hasOwnProperty(value, String(i))) {
23341 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
23342 String(i), true));
23343 } else {
23344 output.push('');
23345 }
23346 }
23347 keys.forEach(function(key) {
23348 if (!key.match(/^\d+$/)) {
23349 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
23350 key, true));
23351 }
23352 });
23353 return output;
23354 }
23355
23356
23357 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
23358 var name, str, desc;
23359 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
23360 if (desc.get) {
23361 if (desc.set) {
23362 str = ctx.stylize('[Getter/Setter]', 'special');
23363 } else {
23364 str = ctx.stylize('[Getter]', 'special');
23365 }
23366 } else {
23367 if (desc.set) {
23368 str = ctx.stylize('[Setter]', 'special');
23369 }
23370 }
23371 if (!hasOwnProperty(visibleKeys, key)) {
23372 name = '[' + key + ']';
23373 }
23374 if (!str) {
23375 if (ctx.seen.indexOf(desc.value) < 0) {
23376 if (isNull(recurseTimes)) {
23377 str = formatValue(ctx, desc.value, null);
23378 } else {
23379 str = formatValue(ctx, desc.value, recurseTimes - 1);
23380 }
23381 if (str.indexOf('\n') > -1) {
23382 if (array) {
23383 str = str.split('\n').map(function(line) {
23384 return ' ' + line;
23385 }).join('\n').substr(2);
23386 } else {
23387 str = '\n' + str.split('\n').map(function(line) {
23388 return ' ' + line;
23389 }).join('\n');
23390 }
23391 }
23392 } else {
23393 str = ctx.stylize('[Circular]', 'special');
23394 }
23395 }
23396 if (isUndefined(name)) {
23397 if (array && key.match(/^\d+$/)) {
23398 return str;
23399 }
23400 name = JSON.stringify('' + key);
23401 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
23402 name = name.substr(1, name.length - 2);
23403 name = ctx.stylize(name, 'name');
23404 } else {
23405 name = name.replace(/'/g, "\\'")
23406 .replace(/\\"/g, '"')
23407 .replace(/(^"|"$)/g, "'");
23408 name = ctx.stylize(name, 'string');
23409 }
23410 }
23411
23412 return name + ': ' + str;
23413 }
23414
23415
23416 function reduceToSingleString(output, base, braces) {
23417 var numLinesEst = 0;
23418 var length = output.reduce(function(prev, cur) {
23419 numLinesEst++;
23420 if (cur.indexOf('\n') >= 0) numLinesEst++;
23421 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
23422 }, 0);
23423
23424 if (length > 60) {
23425 return braces[0] +
23426 (base === '' ? '' : base + '\n ') +
23427 ' ' +
23428 output.join(',\n ') +
23429 ' ' +
23430 braces[1];
23431 }
23432
23433 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
23434 }
23435
23436
23437 // NOTE: These type checking functions intentionally don't use `instanceof`
23438 // because it is fragile and can be easily faked with `Object.create()`.
23439 function isArray(ar) {
23440 return Array.isArray(ar);
23441 }
23442 exports.isArray = isArray;
23443
23444 function isBoolean(arg) {
23445 return typeof arg === 'boolean';
23446 }
23447 exports.isBoolean = isBoolean;
23448
23449 function isNull(arg) {
23450 return arg === null;
23451 }
23452 exports.isNull = isNull;
23453
23454 function isNullOrUndefined(arg) {
23455 return arg == null;
23456 }
23457 exports.isNullOrUndefined = isNullOrUndefined;
23458
23459 function isNumber(arg) {
23460 return typeof arg === 'number';
23461 }
23462 exports.isNumber = isNumber;
23463
23464 function isString(arg) {
23465 return typeof arg === 'string';
23466 }
23467 exports.isString = isString;
23468
23469 function isSymbol(arg) {
23470 return typeof arg === 'symbol';
23471 }
23472 exports.isSymbol = isSymbol;
23473
23474 function isUndefined(arg) {
23475 return arg === void 0;
23476 }
23477 exports.isUndefined = isUndefined;
23478
23479 function isRegExp(re) {
23480 return isObject(re) && objectToString(re) === '[object RegExp]';
23481 }
23482 exports.isRegExp = isRegExp;
23483
23484 function isObject(arg) {
23485 return typeof arg === 'object' && arg !== null;
23486 }
23487 exports.isObject = isObject;
23488
23489 function isDate(d) {
23490 return isObject(d) && objectToString(d) === '[object Date]';
23491 }
23492 exports.isDate = isDate;
23493
23494 function isError(e) {
23495 return isObject(e) &&
23496 (objectToString(e) === '[object Error]' || e instanceof Error);
23497 }
23498 exports.isError = isError;
23499
23500 function isFunction(arg) {
23501 return typeof arg === 'function';
23502 }
23503 exports.isFunction = isFunction;
23504
23505 function isPrimitive(arg) {
23506 return arg === null ||
23507 typeof arg === 'boolean' ||
23508 typeof arg === 'number' ||
23509 typeof arg === 'string' ||
23510 typeof arg === 'symbol' || // ES6 symbol
23511 typeof arg === 'undefined';
23512 }
23513 exports.isPrimitive = isPrimitive;
23514
23515 exports.isBuffer = require('./support/isBuffer');
23516
23517 function objectToString(o) {
23518 return Object.prototype.toString.call(o);
23519 }
23520
23521
23522 function pad(n) {
23523 return n < 10 ? '0' + n.toString(10) : n.toString(10);
23524 }
23525
23526
23527 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
23528 'Oct', 'Nov', 'Dec'];
23529
23530 // 26 Feb 16:19:34
23531 function timestamp() {
23532 var d = new Date();
23533 var time = [pad(d.getHours()),
23534 pad(d.getMinutes()),
23535 pad(d.getSeconds())].join(':');
23536 return [d.getDate(), months[d.getMonth()], time].join(' ');
23537 }
23538
23539
23540 // log is just a thin wrapper to console.log that prepends a timestamp
23541 exports.log = function() {
23542 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
23543 };
23544
23545
23546 /**
23547 * Inherit the prototype methods from one constructor into another.
23548 *
23549 * The Function.prototype.inherits from lang.js rewritten as a standalone
23550 * function (not on Function.prototype). NOTE: If this file is to be loaded
23551 * during bootstrapping this function needs to be rewritten using some native
23552 * functions as prototype setup using normal JavaScript does not work as
23553 * expected during bootstrapping (see mirror.js in r114903).
23554 *
23555 * @param {function} ctor Constructor function which needs to inherit the
23556 * prototype.
23557 * @param {function} superCtor Constructor function to inherit prototype from.
23558 */
23559 exports.inherits = require('inherits');
23560
23561 exports._extend = function(origin, add) {
23562 // Don't do anything if add isn't an object
23563 if (!add || !isObject(add)) return origin;
23564
23565 var keys = Object.keys(add);
23566 var i = keys.length;
23567 while (i--) {
23568 origin[keys[i]] = add[keys[i]];
23569 }
23570 return origin;
23571 };
23572
23573 function hasOwnProperty(obj, prop) {
23574 return Object.prototype.hasOwnProperty.call(obj, prop);
23575 }
23576
23577 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
23578 },{"./support/isBuffer":29,"_process":13,"inherits":28}],31:[function(require,module,exports){
23579 (function (Buffer){
23580 const createKeccakHash = require('keccak')
23581 const secp256k1 = require('secp256k1')
23582 const assert = require('assert')
23583 const rlp = require('rlp')
23584 const BN = require('bn.js')
23585 const createHash = require('create-hash')
23586 Object.assign(exports, require('ethjs-util'))
23587
23588 /**
23589 * the max integer that this VM can handle (a ```BN```)
23590 * @var {BN} MAX_INTEGER
23591 */
23592 exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)
23593
23594 /**
23595 * 2^256 (a ```BN```)
23596 * @var {BN} TWO_POW256
23597 */
23598 exports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16)
23599
23600 /**
23601 * SHA3-256 hash of null (a ```String```)
23602 * @var {String} SHA3_NULL_S
23603 */
23604 exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
23605
23606 /**
23607 * SHA3-256 hash of null (a ```Buffer```)
23608 * @var {Buffer} SHA3_NULL
23609 */
23610 exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
23611
23612 /**
23613 * SHA3-256 of an RLP of an empty array (a ```String```)
23614 * @var {String} SHA3_RLP_ARRAY_S
23615 */
23616 exports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
23617
23618 /**
23619 * SHA3-256 of an RLP of an empty array (a ```Buffer```)
23620 * @var {Buffer} SHA3_RLP_ARRAY
23621 */
23622 exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
23623
23624 /**
23625 * SHA3-256 hash of the RLP of null (a ```String```)
23626 * @var {String} SHA3_RLP_S
23627 */
23628 exports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
23629
23630 /**
23631 * SHA3-256 hash of the RLP of null (a ```Buffer```)
23632 * @var {Buffer} SHA3_RLP
23633 */
23634 exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
23635
23636 /**
23637 * [`BN`](https://github.com/indutny/bn.js)
23638 * @var {Function}
23639 */
23640 exports.BN = BN
23641
23642 /**
23643 * [`rlp`](https://github.com/ethereumjs/rlp)
23644 * @var {Function}
23645 */
23646 exports.rlp = rlp
23647
23648 /**
23649 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
23650 * @var {Object}
23651 */
23652 exports.secp256k1 = secp256k1
23653
23654 /**
23655 * Returns a buffer filled with 0s
23656 * @method zeros
23657 * @param {Number} bytes the number of bytes the buffer should be
23658 * @return {Buffer}
23659 */
23660 exports.zeros = function (bytes) {
23661 return Buffer.allocUnsafe(bytes).fill(0)
23662 }
23663
23664 /**
23665 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
23666 * Or it truncates the beginning if it exceeds.
23667 * @method lsetLength
23668 * @param {Buffer|Array} msg the value to pad
23669 * @param {Number} length the number of bytes the output should be
23670 * @param {Boolean} [right=false] whether to start padding form the left or right
23671 * @return {Buffer|Array}
23672 */
23673 exports.setLengthLeft = exports.setLength = function (msg, length, right) {
23674 var buf = exports.zeros(length)
23675 msg = exports.toBuffer(msg)
23676 if (right) {
23677 if (msg.length < length) {
23678 msg.copy(buf)
23679 return buf
23680 }
23681 return msg.slice(0, length)
23682 } else {
23683 if (msg.length < length) {
23684 msg.copy(buf, length - msg.length)
23685 return buf
23686 }
23687 return msg.slice(-length)
23688 }
23689 }
23690
23691 /**
23692 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
23693 * Or it truncates the beginning if it exceeds.
23694 * @param {Buffer|Array} msg the value to pad
23695 * @param {Number} length the number of bytes the output should be
23696 * @return {Buffer|Array}
23697 */
23698 exports.setLengthRight = function (msg, length) {
23699 return exports.setLength(msg, length, true)
23700 }
23701
23702 /**
23703 * Trims leading zeros from a `Buffer` or an `Array`
23704 * @param {Buffer|Array|String} a
23705 * @return {Buffer|Array|String}
23706 */
23707 exports.unpad = exports.stripZeros = function (a) {
23708 a = exports.stripHexPrefix(a)
23709 var first = a[0]
23710 while (a.length > 0 && first.toString() === '0') {
23711 a = a.slice(1)
23712 first = a[0]
23713 }
23714 return a
23715 }
23716 /**
23717 * 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.
23718 * @param {*} v the value
23719 */
23720 exports.toBuffer = function (v) {
23721 if (!Buffer.isBuffer(v)) {
23722 if (Array.isArray(v)) {
23723 v = Buffer.from(v)
23724 } else if (typeof v === 'string') {
23725 if (exports.isHexPrefixed(v)) {
23726 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
23727 } else {
23728 v = Buffer.from(v)
23729 }
23730 } else if (typeof v === 'number') {
23731 v = exports.intToBuffer(v)
23732 } else if (v === null || v === undefined) {
23733 v = Buffer.allocUnsafe(0)
23734 } else if (v.toArray) {
23735 // converts a BN to a Buffer
23736 v = Buffer.from(v.toArray())
23737 } else {
23738 throw new Error('invalid type')
23739 }
23740 }
23741 return v
23742 }
23743
23744 /**
23745 * Converts a `Buffer` to a `Number`
23746 * @param {Buffer} buf
23747 * @return {Number}
23748 * @throws If the input number exceeds 53 bits.
23749 */
23750 exports.bufferToInt = function (buf) {
23751 return new BN(exports.toBuffer(buf)).toNumber()
23752 }
23753
23754 /**
23755 * Converts a `Buffer` into a hex `String`
23756 * @param {Buffer} buf
23757 * @return {String}
23758 */
23759 exports.bufferToHex = function (buf) {
23760 buf = exports.toBuffer(buf)
23761 return '0x' + buf.toString('hex')
23762 }
23763
23764 /**
23765 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
23766 * @param {Buffer} num
23767 * @return {BN}
23768 */
23769 exports.fromSigned = function (num) {
23770 return new BN(num).fromTwos(256)
23771 }
23772
23773 /**
23774 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
23775 * @param {BN} num
23776 * @return {Buffer}
23777 */
23778 exports.toUnsigned = function (num) {
23779 return Buffer.from(num.toTwos(256).toArray())
23780 }
23781
23782 /**
23783 * Creates SHA-3 hash of the input
23784 * @param {Buffer|Array|String|Number} a the input data
23785 * @param {Number} [bits=256] the SHA width
23786 * @return {Buffer}
23787 */
23788 exports.sha3 = function (a, bits) {
23789 a = exports.toBuffer(a)
23790 if (!bits) bits = 256
23791
23792 return createKeccakHash('keccak' + bits).update(a).digest()
23793 }
23794
23795 /**
23796 * Creates SHA256 hash of the input
23797 * @param {Buffer|Array|String|Number} a the input data
23798 * @return {Buffer}
23799 */
23800 exports.sha256 = function (a) {
23801 a = exports.toBuffer(a)
23802 return createHash('sha256').update(a).digest()
23803 }
23804
23805 /**
23806 * Creates RIPEMD160 hash of the input
23807 * @param {Buffer|Array|String|Number} a the input data
23808 * @param {Boolean} padded whether it should be padded to 256 bits or not
23809 * @return {Buffer}
23810 */
23811 exports.ripemd160 = function (a, padded) {
23812 a = exports.toBuffer(a)
23813 var hash = createHash('rmd160').update(a).digest()
23814 if (padded === true) {
23815 return exports.setLength(hash, 32)
23816 } else {
23817 return hash
23818 }
23819 }
23820
23821 /**
23822 * Creates SHA-3 hash of the RLP encoded version of the input
23823 * @param {Buffer|Array|String|Number} a the input data
23824 * @return {Buffer}
23825 */
23826 exports.rlphash = function (a) {
23827 return exports.sha3(rlp.encode(a))
23828 }
23829
23830 /**
23831 * Checks if the private key satisfies the rules of the curve secp256k1.
23832 * @param {Buffer} privateKey
23833 * @return {Boolean}
23834 */
23835 exports.isValidPrivate = function (privateKey) {
23836 return secp256k1.privateKeyVerify(privateKey)
23837 }
23838
23839 /**
23840 * Checks if the public key satisfies the rules of the curve secp256k1
23841 * and the requirements of Ethereum.
23842 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
23843 * @param {Boolean} [sanitize=false] Accept public keys in other formats
23844 * @return {Boolean}
23845 */
23846 exports.isValidPublic = function (publicKey, sanitize) {
23847 if (publicKey.length === 64) {
23848 // Convert to SEC1 for secp256k1
23849 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([4]), publicKey ]))
23850 }
23851
23852 if (!sanitize) {
23853 return false
23854 }
23855
23856 return secp256k1.publicKeyVerify(publicKey)
23857 }
23858
23859 /**
23860 * Returns the ethereum address of a given public key.
23861 * Accepts "Ethereum public keys" and SEC1 encoded keys.
23862 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
23863 * @param {Boolean} [sanitize=false] Accept public keys in other formats
23864 * @return {Buffer}
23865 */
23866 exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
23867 pubKey = exports.toBuffer(pubKey)
23868 if (sanitize && (pubKey.length !== 64)) {
23869 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1)
23870 }
23871 assert(pubKey.length === 64)
23872 // Only take the lower 160bits of the hash
23873 return exports.sha3(pubKey).slice(-20)
23874 }
23875
23876 /**
23877 * Returns the ethereum public key of a given private key
23878 * @param {Buffer} privateKey A private key must be 256 bits wide
23879 * @return {Buffer}
23880 */
23881 var privateToPublic = exports.privateToPublic = function (privateKey) {
23882 privateKey = exports.toBuffer(privateKey)
23883 // skip the type flag and use the X, Y points
23884 return secp256k1.publicKeyCreate(privateKey, false).slice(1)
23885 }
23886
23887 /**
23888 * Converts a public key to the Ethereum format.
23889 * @param {Buffer} publicKey
23890 * @return {Buffer}
23891 */
23892 exports.importPublic = function (publicKey) {
23893 publicKey = exports.toBuffer(publicKey)
23894 if (publicKey.length !== 64) {
23895 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1)
23896 }
23897 return publicKey
23898 }
23899
23900 /**
23901 * ECDSA sign
23902 * @param {Buffer} msgHash
23903 * @param {Buffer} privateKey
23904 * @return {Object}
23905 */
23906 exports.ecsign = function (msgHash, privateKey) {
23907 var sig = secp256k1.sign(msgHash, privateKey)
23908
23909 var ret = {}
23910 ret.r = sig.signature.slice(0, 32)
23911 ret.s = sig.signature.slice(32, 64)
23912 ret.v = sig.recovery + 27
23913 return ret
23914 }
23915
23916 /**
23917 * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
23918 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
23919 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
23920 * used to produce the signature.
23921 * @param message
23922 * @returns {Buffer} hash
23923 */
23924 exports.hashPersonalMessage = function (message) {
23925 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
23926 return exports.sha3(Buffer.concat([prefix, message]))
23927 }
23928
23929 /**
23930 * ECDSA public key recovery from signature
23931 * @param {Buffer} msgHash
23932 * @param {Number} v
23933 * @param {Buffer} r
23934 * @param {Buffer} s
23935 * @return {Buffer} publicKey
23936 */
23937 exports.ecrecover = function (msgHash, v, r, s) {
23938 var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
23939 var recovery = v - 27
23940 if (recovery !== 0 && recovery !== 1) {
23941 throw new Error('Invalid signature v value')
23942 }
23943 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
23944 return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
23945 }
23946
23947 /**
23948 * Convert signature parameters into the format of `eth_sign` RPC method
23949 * @param {Number} v
23950 * @param {Buffer} r
23951 * @param {Buffer} s
23952 * @return {String} sig
23953 */
23954 exports.toRpcSig = function (v, r, s) {
23955 // NOTE: with potential introduction of chainId this might need to be updated
23956 if (v !== 27 && v !== 28) {
23957 throw new Error('Invalid recovery id')
23958 }
23959
23960 // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin
23961 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053
23962 return exports.bufferToHex(Buffer.concat([
23963 exports.setLengthLeft(r, 32),
23964 exports.setLengthLeft(s, 32),
23965 exports.toBuffer(v - 27)
23966 ]))
23967 }
23968
23969 /**
23970 * Convert signature format of the `eth_sign` RPC method to signature parameters
23971 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
23972 * @param {String} sig
23973 * @return {Object}
23974 */
23975 exports.fromRpcSig = function (sig) {
23976 sig = exports.toBuffer(sig)
23977
23978 // NOTE: with potential introduction of chainId this might need to be updated
23979 if (sig.length !== 65) {
23980 throw new Error('Invalid signature length')
23981 }
23982
23983 var v = sig[64]
23984 // support both versions of `eth_sign` responses
23985 if (v < 27) {
23986 v += 27
23987 }
23988
23989 return {
23990 v: v,
23991 r: sig.slice(0, 32),
23992 s: sig.slice(32, 64)
23993 }
23994 }
23995
23996 /**
23997 * Returns the ethereum address of a given private key
23998 * @param {Buffer} privateKey A private key must be 256 bits wide
23999 * @return {Buffer}
24000 */
24001 exports.privateToAddress = function (privateKey) {
24002 return exports.publicToAddress(privateToPublic(privateKey))
24003 }
24004
24005 /**
24006 * Checks if the address is a valid. Accepts checksummed addresses too
24007 * @param {String} address
24008 * @return {Boolean}
24009 */
24010 exports.isValidAddress = function (address) {
24011 return /^0x[0-9a-fA-F]{40}$/i.test(address)
24012 }
24013
24014 /**
24015 * Returns a checksummed address
24016 * @param {String} address
24017 * @return {String}
24018 */
24019 exports.toChecksumAddress = function (address) {
24020 address = exports.stripHexPrefix(address).toLowerCase()
24021 var hash = exports.sha3(address).toString('hex')
24022 var ret = '0x'
24023
24024 for (var i = 0; i < address.length; i++) {
24025 if (parseInt(hash[i], 16) >= 8) {
24026 ret += address[i].toUpperCase()
24027 } else {
24028 ret += address[i]
24029 }
24030 }
24031
24032 return ret
24033 }
24034
24035 /**
24036 * Checks if the address is a valid checksummed address
24037 * @param {Buffer} address
24038 * @return {Boolean}
24039 */
24040 exports.isValidChecksumAddress = function (address) {
24041 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
24042 }
24043
24044 /**
24045 * Generates an address of a newly created contract
24046 * @param {Buffer} from the address which is creating this new address
24047 * @param {Buffer} nonce the nonce of the from account
24048 * @return {Buffer}
24049 */
24050 exports.generateAddress = function (from, nonce) {
24051 from = exports.toBuffer(from)
24052 nonce = new BN(nonce)
24053
24054 if (nonce.isZero()) {
24055 // in RLP we want to encode null in the case of zero nonce
24056 // read the RLP documentation for an answer if you dare
24057 nonce = null
24058 } else {
24059 nonce = Buffer.from(nonce.toArray())
24060 }
24061
24062 // Only take the lower 160bits of the hash
24063 return exports.rlphash([from, nonce]).slice(-20)
24064 }
24065
24066 /**
24067 * Returns true if the supplied address belongs to a precompiled account
24068 * @param {Buffer|String} address
24069 * @return {Boolean}
24070 */
24071 exports.isPrecompiled = function (address) {
24072 var a = exports.unpad(address)
24073 return a.length === 1 && a[0] > 0 && a[0] < 5
24074 }
24075
24076 /**
24077 * Adds "0x" to a given `String` if it does not already start with "0x"
24078 * @param {String} str
24079 * @return {String}
24080 */
24081 exports.addHexPrefix = function (str) {
24082 if (typeof str !== 'string') {
24083 return str
24084 }
24085
24086 return exports.isHexPrefixed(str) ? str : '0x' + str
24087 }
24088
24089 /**
24090 * Validate ECDSA signature
24091 * @method isValidSignature
24092 * @param {Buffer} v
24093 * @param {Buffer} r
24094 * @param {Buffer} s
24095 * @param {Boolean} [homestead=true]
24096 * @return {Boolean}
24097 */
24098
24099 exports.isValidSignature = function (v, r, s, homestead) {
24100 const SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16)
24101 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)
24102
24103 if (r.length !== 32 || s.length !== 32) {
24104 return false
24105 }
24106
24107 if (v !== 27 && v !== 28) {
24108 return false
24109 }
24110
24111 r = new BN(r)
24112 s = new BN(s)
24113
24114 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
24115 return false
24116 }
24117
24118 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) === 1)) {
24119 return false
24120 }
24121
24122 return true
24123 }
24124
24125 /**
24126 * Converts a `Buffer` or `Array` to JSON
24127 * @param {Buffer|Array} ba
24128 * @return {Array|String|null}
24129 */
24130 exports.baToJSON = function (ba) {
24131 if (Buffer.isBuffer(ba)) {
24132 return '0x' + ba.toString('hex')
24133 } else if (ba instanceof Array) {
24134 var array = []
24135 for (var i = 0; i < ba.length; i++) {
24136 array.push(exports.baToJSON(ba[i]))
24137 }
24138 return array
24139 }
24140 }
24141
24142 /**
24143 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
24144 * @param {Object} self the `Object` to define properties on
24145 * @param {Array} fields an array fields to define. Fields can contain:
24146 * * `name` - the name of the properties
24147 * * `length` - the number of bytes the field can have
24148 * * `allowLess` - if the field can be less than the length
24149 * * `allowEmpty`
24150 * @param {*} data data to be validated against the definitions
24151 */
24152 exports.defineProperties = function (self, fields, data) {
24153 self.raw = []
24154 self._fields = []
24155
24156 // attach the `toJSON`
24157 self.toJSON = function (label) {
24158 if (label) {
24159 var obj = {}
24160 self._fields.forEach(function (field) {
24161 obj[field] = '0x' + self[field].toString('hex')
24162 })
24163 return obj
24164 }
24165 return exports.baToJSON(this.raw)
24166 }
24167
24168 self.serialize = function serialize () {
24169 return rlp.encode(self.raw)
24170 }
24171
24172 fields.forEach(function (field, i) {
24173 self._fields.push(field.name)
24174 function getter () {
24175 return self.raw[i]
24176 }
24177 function setter (v) {
24178 v = exports.toBuffer(v)
24179
24180 if (v.toString('hex') === '00' && !field.allowZero) {
24181 v = Buffer.allocUnsafe(0)
24182 }
24183
24184 if (field.allowLess && field.length) {
24185 v = exports.stripZeros(v)
24186 assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
24187 } else if (!(field.allowZero && v.length === 0) && field.length) {
24188 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
24189 }
24190
24191 self.raw[i] = v
24192 }
24193
24194 Object.defineProperty(self, field.name, {
24195 enumerable: true,
24196 configurable: true,
24197 get: getter,
24198 set: setter
24199 })
24200
24201 if (field.default) {
24202 self[field.name] = field.default
24203 }
24204
24205 // attach alias
24206 if (field.alias) {
24207 Object.defineProperty(self, field.alias, {
24208 enumerable: false,
24209 configurable: true,
24210 set: setter,
24211 get: getter
24212 })
24213 }
24214 })
24215
24216 // if the constuctor is passed data
24217 if (data) {
24218 if (typeof data === 'string') {
24219 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
24220 }
24221
24222 if (Buffer.isBuffer(data)) {
24223 data = rlp.decode(data)
24224 }
24225
24226 if (Array.isArray(data)) {
24227 if (data.length > self._fields.length) {
24228 throw (new Error('wrong number of fields in data'))
24229 }
24230
24231 // make sure all the items are buffers
24232 data.forEach(function (d, i) {
24233 self[self._fields[i]] = exports.toBuffer(d)
24234 })
24235 } else if (typeof data === 'object') {
24236 const keys = Object.keys(data)
24237 fields.forEach(function (field) {
24238 if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]
24239 if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]
24240 })
24241 } else {
24242 throw new Error('invalid data')
24243 }
24244 }
24245 }
24246
24247 }).call(this,require("buffer").Buffer)
24248 },{"assert":1,"bn.js":33,"buffer":5,"create-hash":36,"ethjs-util":56,"keccak":65,"rlp":72,"secp256k1":73}],32:[function(require,module,exports){
24249 (function (Buffer){
24250 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
24251 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
24252 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
24253
24254 function check (buffer) {
24255 if (buffer.length < 8) return false
24256 if (buffer.length > 72) return false
24257 if (buffer[0] !== 0x30) return false
24258 if (buffer[1] !== buffer.length - 2) return false
24259 if (buffer[2] !== 0x02) return false
24260
24261 var lenR = buffer[3]
24262 if (lenR === 0) return false
24263 if (5 + lenR >= buffer.length) return false
24264 if (buffer[4 + lenR] !== 0x02) return false
24265
24266 var lenS = buffer[5 + lenR]
24267 if (lenS === 0) return false
24268 if ((6 + lenR + lenS) !== buffer.length) return false
24269
24270 if (buffer[4] & 0x80) return false
24271 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
24272
24273 if (buffer[lenR + 6] & 0x80) return false
24274 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
24275 return true
24276 }
24277
24278 function decode (buffer) {
24279 if (buffer.length < 8) throw new Error('DER sequence length is too short')
24280 if (buffer.length > 72) throw new Error('DER sequence length is too long')
24281 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
24282 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
24283 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
24284
24285 var lenR = buffer[3]
24286 if (lenR === 0) throw new Error('R length is zero')
24287 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
24288 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
24289
24290 var lenS = buffer[5 + lenR]
24291 if (lenS === 0) throw new Error('S length is zero')
24292 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
24293
24294 if (buffer[4] & 0x80) throw new Error('R value is negative')
24295 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
24296
24297 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
24298 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
24299
24300 // non-BIP66 - extract R, S values
24301 return {
24302 r: buffer.slice(4, 4 + lenR),
24303 s: buffer.slice(6 + lenR)
24304 }
24305 }
24306
24307 /*
24308 * Expects r and s to be positive DER integers.
24309 *
24310 * The DER format uses the most significant bit as a sign bit (& 0x80).
24311 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
24312 *
24313 * Examples:
24314 *
24315 * 0 => 0x00
24316 * 1 => 0x01
24317 * -1 => 0xff
24318 * 127 => 0x7f
24319 * -127 => 0x81
24320 * 128 => 0x0080
24321 * -128 => 0x80
24322 * 255 => 0x00ff
24323 * -255 => 0xff01
24324 * 16300 => 0x3fac
24325 * -16300 => 0xc054
24326 * 62300 => 0x00f35c
24327 * -62300 => 0xff0ca4
24328 */
24329 function encode (r, s) {
24330 var lenR = r.length
24331 var lenS = s.length
24332 if (lenR === 0) throw new Error('R length is zero')
24333 if (lenS === 0) throw new Error('S length is zero')
24334 if (lenR > 33) throw new Error('R length is too long')
24335 if (lenS > 33) throw new Error('S length is too long')
24336 if (r[0] & 0x80) throw new Error('R value is negative')
24337 if (s[0] & 0x80) throw new Error('S value is negative')
24338 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
24339 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
24340
24341 var signature = new Buffer(6 + lenR + lenS)
24342
24343 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
24344 signature[0] = 0x30
24345 signature[1] = signature.length - 2
24346 signature[2] = 0x02
24347 signature[3] = r.length
24348 r.copy(signature, 4)
24349 signature[4 + lenR] = 0x02
24350 signature[5 + lenR] = s.length
24351 s.copy(signature, 6 + lenR)
24352
24353 return signature
24354 }
24355
24356 module.exports = {
24357 check: check,
24358 decode: decode,
24359 encode: encode
24360 }
24361
24362 }).call(this,require("buffer").Buffer)
24363 },{"buffer":5}],33:[function(require,module,exports){
24364 (function (module, exports) {
24365 'use strict';
24366
24367 // Utils
24368 function assert (val, msg) {
24369 if (!val) throw new Error(msg || 'Assertion failed');
24370 }
24371
24372 // Could use `inherits` module, but don't want to move from single file
24373 // architecture yet.
24374 function inherits (ctor, superCtor) {
24375 ctor.super_ = superCtor;
24376 var TempCtor = function () {};
24377 TempCtor.prototype = superCtor.prototype;
24378 ctor.prototype = new TempCtor();
24379 ctor.prototype.constructor = ctor;
24380 }
24381
24382 // BN
24383
24384 function BN (number, base, endian) {
24385 if (BN.isBN(number)) {
24386 return number;
24387 }
24388
24389 this.negative = 0;
24390 this.words = null;
24391 this.length = 0;
24392
24393 // Reduction context
24394 this.red = null;
24395
24396 if (number !== null) {
24397 if (base === 'le' || base === 'be') {
24398 endian = base;
24399 base = 10;
24400 }
24401
24402 this._init(number || 0, base || 10, endian || 'be');
24403 }
24404 }
24405 if (typeof module === 'object') {
24406 module.exports = BN;
24407 } else {
24408 exports.BN = BN;
24409 }
24410
24411 BN.BN = BN;
24412 BN.wordSize = 26;
24413
24414 var Buffer;
24415 try {
24416 Buffer = require('buf' + 'fer').Buffer;
24417 } catch (e) {
24418 }
24419
24420 BN.isBN = function isBN (num) {
24421 if (num instanceof BN) {
24422 return true;
24423 }
24424
24425 return num !== null && typeof num === 'object' &&
24426 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
24427 };
24428
24429 BN.max = function max (left, right) {
24430 if (left.cmp(right) > 0) return left;
24431 return right;
24432 };
24433
24434 BN.min = function min (left, right) {
24435 if (left.cmp(right) < 0) return left;
24436 return right;
24437 };
24438
24439 BN.prototype._init = function init (number, base, endian) {
24440 if (typeof number === 'number') {
24441 return this._initNumber(number, base, endian);
24442 }
24443
24444 if (typeof number === 'object') {
24445 return this._initArray(number, base, endian);
24446 }
24447
24448 if (base === 'hex') {
24449 base = 16;
24450 }
24451 assert(base === (base | 0) && base >= 2 && base <= 36);
24452
24453 number = number.toString().replace(/\s+/g, '');
24454 var start = 0;
24455 if (number[0] === '-') {
24456 start++;
24457 }
24458
24459 if (base === 16) {
24460 this._parseHex(number, start);
24461 } else {
24462 this._parseBase(number, base, start);
24463 }
24464
24465 if (number[0] === '-') {
24466 this.negative = 1;
24467 }
24468
24469 this.strip();
24470
24471 if (endian !== 'le') return;
24472
24473 this._initArray(this.toArray(), base, endian);
24474 };
24475
24476 BN.prototype._initNumber = function _initNumber (number, base, endian) {
24477 if (number < 0) {
24478 this.negative = 1;
24479 number = -number;
24480 }
24481 if (number < 0x4000000) {
24482 this.words = [ number & 0x3ffffff ];
24483 this.length = 1;
24484 } else if (number < 0x10000000000000) {
24485 this.words = [
24486 number & 0x3ffffff,
24487 (number / 0x4000000) & 0x3ffffff
24488 ];
24489 this.length = 2;
24490 } else {
24491 assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
24492 this.words = [
24493 number & 0x3ffffff,
24494 (number / 0x4000000) & 0x3ffffff,
24495 1
24496 ];
24497 this.length = 3;
24498 }
24499
24500 if (endian !== 'le') return;
24501
24502 // Reverse the bytes
24503 this._initArray(this.toArray(), base, endian);
24504 };
24505
24506 BN.prototype._initArray = function _initArray (number, base, endian) {
24507 // Perhaps a Uint8Array
24508 assert(typeof number.length === 'number');
24509 if (number.length <= 0) {
24510 this.words = [ 0 ];
24511 this.length = 1;
24512 return this;
24513 }
24514
24515 this.length = Math.ceil(number.length / 3);
24516 this.words = new Array(this.length);
24517 for (var i = 0; i < this.length; i++) {
24518 this.words[i] = 0;
24519 }
24520
24521 var j, w;
24522 var off = 0;
24523 if (endian === 'be') {
24524 for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
24525 w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
24526 this.words[j] |= (w << off) & 0x3ffffff;
24527 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
24528 off += 24;
24529 if (off >= 26) {
24530 off -= 26;
24531 j++;
24532 }
24533 }
24534 } else if (endian === 'le') {
24535 for (i = 0, j = 0; i < number.length; i += 3) {
24536 w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
24537 this.words[j] |= (w << off) & 0x3ffffff;
24538 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
24539 off += 24;
24540 if (off >= 26) {
24541 off -= 26;
24542 j++;
24543 }
24544 }
24545 }
24546 return this.strip();
24547 };
24548
24549 function parseHex (str, start, end) {
24550 var r = 0;
24551 var len = Math.min(str.length, end);
24552 for (var i = start; i < len; i++) {
24553 var c = str.charCodeAt(i) - 48;
24554
24555 r <<= 4;
24556
24557 // 'a' - 'f'
24558 if (c >= 49 && c <= 54) {
24559 r |= c - 49 + 0xa;
24560
24561 // 'A' - 'F'
24562 } else if (c >= 17 && c <= 22) {
24563 r |= c - 17 + 0xa;
24564
24565 // '0' - '9'
24566 } else {
24567 r |= c & 0xf;
24568 }
24569 }
24570 return r;
24571 }
24572
24573 BN.prototype._parseHex = function _parseHex (number, start) {
24574 // Create possibly bigger array to ensure that it fits the number
24575 this.length = Math.ceil((number.length - start) / 6);
24576 this.words = new Array(this.length);
24577 for (var i = 0; i < this.length; i++) {
24578 this.words[i] = 0;
24579 }
24580
24581 var j, w;
24582 // Scan 24-bit chunks and add them to the number
24583 var off = 0;
24584 for (i = number.length - 6, j = 0; i >= start; i -= 6) {
24585 w = parseHex(number, i, i + 6);
24586 this.words[j] |= (w << off) & 0x3ffffff;
24587 // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
24588 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
24589 off += 24;
24590 if (off >= 26) {
24591 off -= 26;
24592 j++;
24593 }
24594 }
24595 if (i + 6 !== start) {
24596 w = parseHex(number, start, i + 6);
24597 this.words[j] |= (w << off) & 0x3ffffff;
24598 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
24599 }
24600 this.strip();
24601 };
24602
24603 function parseBase (str, start, end, mul) {
24604 var r = 0;
24605 var len = Math.min(str.length, end);
24606 for (var i = start; i < len; i++) {
24607 var c = str.charCodeAt(i) - 48;
24608
24609 r *= mul;
24610
24611 // 'a'
24612 if (c >= 49) {
24613 r += c - 49 + 0xa;
24614
24615 // 'A'
24616 } else if (c >= 17) {
24617 r += c - 17 + 0xa;
24618
24619 // '0' - '9'
24620 } else {
24621 r += c;
24622 }
24623 }
24624 return r;
24625 }
24626
24627 BN.prototype._parseBase = function _parseBase (number, base, start) {
24628 // Initialize as zero
24629 this.words = [ 0 ];
24630 this.length = 1;
24631
24632 // Find length of limb in base
24633 for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
24634 limbLen++;
24635 }
24636 limbLen--;
24637 limbPow = (limbPow / base) | 0;
24638
24639 var total = number.length - start;
24640 var mod = total % limbLen;
24641 var end = Math.min(total, total - mod) + start;
24642
24643 var word = 0;
24644 for (var i = start; i < end; i += limbLen) {
24645 word = parseBase(number, i, i + limbLen, base);
24646
24647 this.imuln(limbPow);
24648 if (this.words[0] + word < 0x4000000) {
24649 this.words[0] += word;
24650 } else {
24651 this._iaddn(word);
24652 }
24653 }
24654
24655 if (mod !== 0) {
24656 var pow = 1;
24657 word = parseBase(number, i, number.length, base);
24658
24659 for (i = 0; i < mod; i++) {
24660 pow *= base;
24661 }
24662
24663 this.imuln(pow);
24664 if (this.words[0] + word < 0x4000000) {
24665 this.words[0] += word;
24666 } else {
24667 this._iaddn(word);
24668 }
24669 }
24670 };
24671
24672 BN.prototype.copy = function copy (dest) {
24673 dest.words = new Array(this.length);
24674 for (var i = 0; i < this.length; i++) {
24675 dest.words[i] = this.words[i];
24676 }
24677 dest.length = this.length;
24678 dest.negative = this.negative;
24679 dest.red = this.red;
24680 };
24681
24682 BN.prototype.clone = function clone () {
24683 var r = new BN(null);
24684 this.copy(r);
24685 return r;
24686 };
24687
24688 BN.prototype._expand = function _expand (size) {
24689 while (this.length < size) {
24690 this.words[this.length++] = 0;
24691 }
24692 return this;
24693 };
24694
24695 // Remove leading `0` from `this`
24696 BN.prototype.strip = function strip () {
24697 while (this.length > 1 && this.words[this.length - 1] === 0) {
24698 this.length--;
24699 }
24700 return this._normSign();
24701 };
24702
24703 BN.prototype._normSign = function _normSign () {
24704 // -0 = 0
24705 if (this.length === 1 && this.words[0] === 0) {
24706 this.negative = 0;
24707 }
24708 return this;
24709 };
24710
24711 BN.prototype.inspect = function inspect () {
24712 return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
24713 };
24714
24715 /*
24716
24717 var zeros = [];
24718 var groupSizes = [];
24719 var groupBases = [];
24720
24721 var s = '';
24722 var i = -1;
24723 while (++i < BN.wordSize) {
24724 zeros[i] = s;
24725 s += '0';
24726 }
24727 groupSizes[0] = 0;
24728 groupSizes[1] = 0;
24729 groupBases[0] = 0;
24730 groupBases[1] = 0;
24731 var base = 2 - 1;
24732 while (++base < 36 + 1) {
24733 var groupSize = 0;
24734 var groupBase = 1;
24735 while (groupBase < (1 << BN.wordSize) / base) {
24736 groupBase *= base;
24737 groupSize += 1;
24738 }
24739 groupSizes[base] = groupSize;
24740 groupBases[base] = groupBase;
24741 }
24742
24743 */
24744
24745 var zeros = [
24746 '',
24747 '0',
24748 '00',
24749 '000',
24750 '0000',
24751 '00000',
24752 '000000',
24753 '0000000',
24754 '00000000',
24755 '000000000',
24756 '0000000000',
24757 '00000000000',
24758 '000000000000',
24759 '0000000000000',
24760 '00000000000000',
24761 '000000000000000',
24762 '0000000000000000',
24763 '00000000000000000',
24764 '000000000000000000',
24765 '0000000000000000000',
24766 '00000000000000000000',
24767 '000000000000000000000',
24768 '0000000000000000000000',
24769 '00000000000000000000000',
24770 '000000000000000000000000',
24771 '0000000000000000000000000'
24772 ];
24773
24774 var groupSizes = [
24775 0, 0,
24776 25, 16, 12, 11, 10, 9, 8,
24777 8, 7, 7, 7, 7, 6, 6,
24778 6, 6, 6, 6, 6, 5, 5,
24779 5, 5, 5, 5, 5, 5, 5,
24780 5, 5, 5, 5, 5, 5, 5
24781 ];
24782
24783 var groupBases = [
24784 0, 0,
24785 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
24786 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
24787 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
24788 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
24789 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
24790 ];
24791
24792 BN.prototype.toString = function toString (base, padding) {
24793 base = base || 10;
24794 padding = padding | 0 || 1;
24795
24796 var out;
24797 if (base === 16 || base === 'hex') {
24798 out = '';
24799 var off = 0;
24800 var carry = 0;
24801 for (var i = 0; i < this.length; i++) {
24802 var w = this.words[i];
24803 var word = (((w << off) | carry) & 0xffffff).toString(16);
24804 carry = (w >>> (24 - off)) & 0xffffff;
24805 if (carry !== 0 || i !== this.length - 1) {
24806 out = zeros[6 - word.length] + word + out;
24807 } else {
24808 out = word + out;
24809 }
24810 off += 2;
24811 if (off >= 26) {
24812 off -= 26;
24813 i--;
24814 }
24815 }
24816 if (carry !== 0) {
24817 out = carry.toString(16) + out;
24818 }
24819 while (out.length % padding !== 0) {
24820 out = '0' + out;
24821 }
24822 if (this.negative !== 0) {
24823 out = '-' + out;
24824 }
24825 return out;
24826 }
24827
24828 if (base === (base | 0) && base >= 2 && base <= 36) {
24829 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
24830 var groupSize = groupSizes[base];
24831 // var groupBase = Math.pow(base, groupSize);
24832 var groupBase = groupBases[base];
24833 out = '';
24834 var c = this.clone();
24835 c.negative = 0;
24836 while (!c.isZero()) {
24837 var r = c.modn(groupBase).toString(base);
24838 c = c.idivn(groupBase);
24839
24840 if (!c.isZero()) {
24841 out = zeros[groupSize - r.length] + r + out;
24842 } else {
24843 out = r + out;
24844 }
24845 }
24846 if (this.isZero()) {
24847 out = '0' + out;
24848 }
24849 while (out.length % padding !== 0) {
24850 out = '0' + out;
24851 }
24852 if (this.negative !== 0) {
24853 out = '-' + out;
24854 }
24855 return out;
24856 }
24857
24858 assert(false, 'Base should be between 2 and 36');
24859 };
24860
24861 BN.prototype.toNumber = function toNumber () {
24862 var ret = this.words[0];
24863 if (this.length === 2) {
24864 ret += this.words[1] * 0x4000000;
24865 } else if (this.length === 3 && this.words[2] === 0x01) {
24866 // NOTE: at this stage it is known that the top bit is set
24867 ret += 0x10000000000000 + (this.words[1] * 0x4000000);
24868 } else if (this.length > 2) {
24869 assert(false, 'Number can only safely store up to 53 bits');
24870 }
24871 return (this.negative !== 0) ? -ret : ret;
24872 };
24873
24874 BN.prototype.toJSON = function toJSON () {
24875 return this.toString(16);
24876 };
24877
24878 BN.prototype.toBuffer = function toBuffer (endian, length) {
24879 assert(typeof Buffer !== 'undefined');
24880 return this.toArrayLike(Buffer, endian, length);
24881 };
24882
24883 BN.prototype.toArray = function toArray (endian, length) {
24884 return this.toArrayLike(Array, endian, length);
24885 };
24886
24887 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
24888 var byteLength = this.byteLength();
24889 var reqLength = length || Math.max(1, byteLength);
24890 assert(byteLength <= reqLength, 'byte array longer than desired length');
24891 assert(reqLength > 0, 'Requested array length <= 0');
24892
24893 this.strip();
24894 var littleEndian = endian === 'le';
24895 var res = new ArrayType(reqLength);
24896
24897 var b, i;
24898 var q = this.clone();
24899 if (!littleEndian) {
24900 // Assume big-endian
24901 for (i = 0; i < reqLength - byteLength; i++) {
24902 res[i] = 0;
24903 }
24904
24905 for (i = 0; !q.isZero(); i++) {
24906 b = q.andln(0xff);
24907 q.iushrn(8);
24908
24909 res[reqLength - i - 1] = b;
24910 }
24911 } else {
24912 for (i = 0; !q.isZero(); i++) {
24913 b = q.andln(0xff);
24914 q.iushrn(8);
24915
24916 res[i] = b;
24917 }
24918
24919 for (; i < reqLength; i++) {
24920 res[i] = 0;
24921 }
24922 }
24923
24924 return res;
24925 };
24926
24927 if (Math.clz32) {
24928 BN.prototype._countBits = function _countBits (w) {
24929 return 32 - Math.clz32(w);
24930 };
24931 } else {
24932 BN.prototype._countBits = function _countBits (w) {
24933 var t = w;
24934 var r = 0;
24935 if (t >= 0x1000) {
24936 r += 13;
24937 t >>>= 13;
24938 }
24939 if (t >= 0x40) {
24940 r += 7;
24941 t >>>= 7;
24942 }
24943 if (t >= 0x8) {
24944 r += 4;
24945 t >>>= 4;
24946 }
24947 if (t >= 0x02) {
24948 r += 2;
24949 t >>>= 2;
24950 }
24951 return r + t;
24952 };
24953 }
24954
24955 BN.prototype._zeroBits = function _zeroBits (w) {
24956 // Short-cut
24957 if (w === 0) return 26;
24958
24959 var t = w;
24960 var r = 0;
24961 if ((t & 0x1fff) === 0) {
24962 r += 13;
24963 t >>>= 13;
24964 }
24965 if ((t & 0x7f) === 0) {
24966 r += 7;
24967 t >>>= 7;
24968 }
24969 if ((t & 0xf) === 0) {
24970 r += 4;
24971 t >>>= 4;
24972 }
24973 if ((t & 0x3) === 0) {
24974 r += 2;
24975 t >>>= 2;
24976 }
24977 if ((t & 0x1) === 0) {
24978 r++;
24979 }
24980 return r;
24981 };
24982
24983 // Return number of used bits in a BN
24984 BN.prototype.bitLength = function bitLength () {
24985 var w = this.words[this.length - 1];
24986 var hi = this._countBits(w);
24987 return (this.length - 1) * 26 + hi;
24988 };
24989
24990 function toBitArray (num) {
24991 var w = new Array(num.bitLength());
24992
24993 for (var bit = 0; bit < w.length; bit++) {
24994 var off = (bit / 26) | 0;
24995 var wbit = bit % 26;
24996
24997 w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
24998 }
24999
25000 return w;
25001 }
25002
25003 // Number of trailing zero bits
25004 BN.prototype.zeroBits = function zeroBits () {
25005 if (this.isZero()) return 0;
25006
25007 var r = 0;
25008 for (var i = 0; i < this.length; i++) {
25009 var b = this._zeroBits(this.words[i]);
25010 r += b;
25011 if (b !== 26) break;
25012 }
25013 return r;
25014 };
25015
25016 BN.prototype.byteLength = function byteLength () {
25017 return Math.ceil(this.bitLength() / 8);
25018 };
25019
25020 BN.prototype.toTwos = function toTwos (width) {
25021 if (this.negative !== 0) {
25022 return this.abs().inotn(width).iaddn(1);
25023 }
25024 return this.clone();
25025 };
25026
25027 BN.prototype.fromTwos = function fromTwos (width) {
25028 if (this.testn(width - 1)) {
25029 return this.notn(width).iaddn(1).ineg();
25030 }
25031 return this.clone();
25032 };
25033
25034 BN.prototype.isNeg = function isNeg () {
25035 return this.negative !== 0;
25036 };
25037
25038 // Return negative clone of `this`
25039 BN.prototype.neg = function neg () {
25040 return this.clone().ineg();
25041 };
25042
25043 BN.prototype.ineg = function ineg () {
25044 if (!this.isZero()) {
25045 this.negative ^= 1;
25046 }
25047
25048 return this;
25049 };
25050
25051 // Or `num` with `this` in-place
25052 BN.prototype.iuor = function iuor (num) {
25053 while (this.length < num.length) {
25054 this.words[this.length++] = 0;
25055 }
25056
25057 for (var i = 0; i < num.length; i++) {
25058 this.words[i] = this.words[i] | num.words[i];
25059 }
25060
25061 return this.strip();
25062 };
25063
25064 BN.prototype.ior = function ior (num) {
25065 assert((this.negative | num.negative) === 0);
25066 return this.iuor(num);
25067 };
25068
25069 // Or `num` with `this`
25070 BN.prototype.or = function or (num) {
25071 if (this.length > num.length) return this.clone().ior(num);
25072 return num.clone().ior(this);
25073 };
25074
25075 BN.prototype.uor = function uor (num) {
25076 if (this.length > num.length) return this.clone().iuor(num);
25077 return num.clone().iuor(this);
25078 };
25079
25080 // And `num` with `this` in-place
25081 BN.prototype.iuand = function iuand (num) {
25082 // b = min-length(num, this)
25083 var b;
25084 if (this.length > num.length) {
25085 b = num;
25086 } else {
25087 b = this;
25088 }
25089
25090 for (var i = 0; i < b.length; i++) {
25091 this.words[i] = this.words[i] & num.words[i];
25092 }
25093
25094 this.length = b.length;
25095
25096 return this.strip();
25097 };
25098
25099 BN.prototype.iand = function iand (num) {
25100 assert((this.negative | num.negative) === 0);
25101 return this.iuand(num);
25102 };
25103
25104 // And `num` with `this`
25105 BN.prototype.and = function and (num) {
25106 if (this.length > num.length) return this.clone().iand(num);
25107 return num.clone().iand(this);
25108 };
25109
25110 BN.prototype.uand = function uand (num) {
25111 if (this.length > num.length) return this.clone().iuand(num);
25112 return num.clone().iuand(this);
25113 };
25114
25115 // Xor `num` with `this` in-place
25116 BN.prototype.iuxor = function iuxor (num) {
25117 // a.length > b.length
25118 var a;
25119 var b;
25120 if (this.length > num.length) {
25121 a = this;
25122 b = num;
25123 } else {
25124 a = num;
25125 b = this;
25126 }
25127
25128 for (var i = 0; i < b.length; i++) {
25129 this.words[i] = a.words[i] ^ b.words[i];
25130 }
25131
25132 if (this !== a) {
25133 for (; i < a.length; i++) {
25134 this.words[i] = a.words[i];
25135 }
25136 }
25137
25138 this.length = a.length;
25139
25140 return this.strip();
25141 };
25142
25143 BN.prototype.ixor = function ixor (num) {
25144 assert((this.negative | num.negative) === 0);
25145 return this.iuxor(num);
25146 };
25147
25148 // Xor `num` with `this`
25149 BN.prototype.xor = function xor (num) {
25150 if (this.length > num.length) return this.clone().ixor(num);
25151 return num.clone().ixor(this);
25152 };
25153
25154 BN.prototype.uxor = function uxor (num) {
25155 if (this.length > num.length) return this.clone().iuxor(num);
25156 return num.clone().iuxor(this);
25157 };
25158
25159 // Not ``this`` with ``width`` bitwidth
25160 BN.prototype.inotn = function inotn (width) {
25161 assert(typeof width === 'number' && width >= 0);
25162
25163 var bytesNeeded = Math.ceil(width / 26) | 0;
25164 var bitsLeft = width % 26;
25165
25166 // Extend the buffer with leading zeroes
25167 this._expand(bytesNeeded);
25168
25169 if (bitsLeft > 0) {
25170 bytesNeeded--;
25171 }
25172
25173 // Handle complete words
25174 for (var i = 0; i < bytesNeeded; i++) {
25175 this.words[i] = ~this.words[i] & 0x3ffffff;
25176 }
25177
25178 // Handle the residue
25179 if (bitsLeft > 0) {
25180 this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
25181 }
25182
25183 // And remove leading zeroes
25184 return this.strip();
25185 };
25186
25187 BN.prototype.notn = function notn (width) {
25188 return this.clone().inotn(width);
25189 };
25190
25191 // Set `bit` of `this`
25192 BN.prototype.setn = function setn (bit, val) {
25193 assert(typeof bit === 'number' && bit >= 0);
25194
25195 var off = (bit / 26) | 0;
25196 var wbit = bit % 26;
25197
25198 this._expand(off + 1);
25199
25200 if (val) {
25201 this.words[off] = this.words[off] | (1 << wbit);
25202 } else {
25203 this.words[off] = this.words[off] & ~(1 << wbit);
25204 }
25205
25206 return this.strip();
25207 };
25208
25209 // Add `num` to `this` in-place
25210 BN.prototype.iadd = function iadd (num) {
25211 var r;
25212
25213 // negative + positive
25214 if (this.negative !== 0 && num.negative === 0) {
25215 this.negative = 0;
25216 r = this.isub(num);
25217 this.negative ^= 1;
25218 return this._normSign();
25219
25220 // positive + negative
25221 } else if (this.negative === 0 && num.negative !== 0) {
25222 num.negative = 0;
25223 r = this.isub(num);
25224 num.negative = 1;
25225 return r._normSign();
25226 }
25227
25228 // a.length > b.length
25229 var a, b;
25230 if (this.length > num.length) {
25231 a = this;
25232 b = num;
25233 } else {
25234 a = num;
25235 b = this;
25236 }
25237
25238 var carry = 0;
25239 for (var i = 0; i < b.length; i++) {
25240 r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
25241 this.words[i] = r & 0x3ffffff;
25242 carry = r >>> 26;
25243 }
25244 for (; carry !== 0 && i < a.length; i++) {
25245 r = (a.words[i] | 0) + carry;
25246 this.words[i] = r & 0x3ffffff;
25247 carry = r >>> 26;
25248 }
25249
25250 this.length = a.length;
25251 if (carry !== 0) {
25252 this.words[this.length] = carry;
25253 this.length++;
25254 // Copy the rest of the words
25255 } else if (a !== this) {
25256 for (; i < a.length; i++) {
25257 this.words[i] = a.words[i];
25258 }
25259 }
25260
25261 return this;
25262 };
25263
25264 // Add `num` to `this`
25265 BN.prototype.add = function add (num) {
25266 var res;
25267 if (num.negative !== 0 && this.negative === 0) {
25268 num.negative = 0;
25269 res = this.sub(num);
25270 num.negative ^= 1;
25271 return res;
25272 } else if (num.negative === 0 && this.negative !== 0) {
25273 this.negative = 0;
25274 res = num.sub(this);
25275 this.negative = 1;
25276 return res;
25277 }
25278
25279 if (this.length > num.length) return this.clone().iadd(num);
25280
25281 return num.clone().iadd(this);
25282 };
25283
25284 // Subtract `num` from `this` in-place
25285 BN.prototype.isub = function isub (num) {
25286 // this - (-num) = this + num
25287 if (num.negative !== 0) {
25288 num.negative = 0;
25289 var r = this.iadd(num);
25290 num.negative = 1;
25291 return r._normSign();
25292
25293 // -this - num = -(this + num)
25294 } else if (this.negative !== 0) {
25295 this.negative = 0;
25296 this.iadd(num);
25297 this.negative = 1;
25298 return this._normSign();
25299 }
25300
25301 // At this point both numbers are positive
25302 var cmp = this.cmp(num);
25303
25304 // Optimization - zeroify
25305 if (cmp === 0) {
25306 this.negative = 0;
25307 this.length = 1;
25308 this.words[0] = 0;
25309 return this;
25310 }
25311
25312 // a > b
25313 var a, b;
25314 if (cmp > 0) {
25315 a = this;
25316 b = num;
25317 } else {
25318 a = num;
25319 b = this;
25320 }
25321
25322 var carry = 0;
25323 for (var i = 0; i < b.length; i++) {
25324 r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
25325 carry = r >> 26;
25326 this.words[i] = r & 0x3ffffff;
25327 }
25328 for (; carry !== 0 && i < a.length; i++) {
25329 r = (a.words[i] | 0) + carry;
25330 carry = r >> 26;
25331 this.words[i] = r & 0x3ffffff;
25332 }
25333
25334 // Copy rest of the words
25335 if (carry === 0 && i < a.length && a !== this) {
25336 for (; i < a.length; i++) {
25337 this.words[i] = a.words[i];
25338 }
25339 }
25340
25341 this.length = Math.max(this.length, i);
25342
25343 if (a !== this) {
25344 this.negative = 1;
25345 }
25346
25347 return this.strip();
25348 };
25349
25350 // Subtract `num` from `this`
25351 BN.prototype.sub = function sub (num) {
25352 return this.clone().isub(num);
25353 };
25354
25355 function smallMulTo (self, num, out) {
25356 out.negative = num.negative ^ self.negative;
25357 var len = (self.length + num.length) | 0;
25358 out.length = len;
25359 len = (len - 1) | 0;
25360
25361 // Peel one iteration (compiler can't do it, because of code complexity)
25362 var a = self.words[0] | 0;
25363 var b = num.words[0] | 0;
25364 var r = a * b;
25365
25366 var lo = r & 0x3ffffff;
25367 var carry = (r / 0x4000000) | 0;
25368 out.words[0] = lo;
25369
25370 for (var k = 1; k < len; k++) {
25371 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
25372 // note that ncarry could be >= 0x3ffffff
25373 var ncarry = carry >>> 26;
25374 var rword = carry & 0x3ffffff;
25375 var maxJ = Math.min(k, num.length - 1);
25376 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
25377 var i = (k - j) | 0;
25378 a = self.words[i] | 0;
25379 b = num.words[j] | 0;
25380 r = a * b + rword;
25381 ncarry += (r / 0x4000000) | 0;
25382 rword = r & 0x3ffffff;
25383 }
25384 out.words[k] = rword | 0;
25385 carry = ncarry | 0;
25386 }
25387 if (carry !== 0) {
25388 out.words[k] = carry | 0;
25389 } else {
25390 out.length--;
25391 }
25392
25393 return out.strip();
25394 }
25395
25396 // TODO(indutny): it may be reasonable to omit it for users who don't need
25397 // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
25398 // multiplication (like elliptic secp256k1).
25399 var comb10MulTo = function comb10MulTo (self, num, out) {
25400 var a = self.words;
25401 var b = num.words;
25402 var o = out.words;
25403 var c = 0;
25404 var lo;
25405 var mid;
25406 var hi;
25407 var a0 = a[0] | 0;
25408 var al0 = a0 & 0x1fff;
25409 var ah0 = a0 >>> 13;
25410 var a1 = a[1] | 0;
25411 var al1 = a1 & 0x1fff;
25412 var ah1 = a1 >>> 13;
25413 var a2 = a[2] | 0;
25414 var al2 = a2 & 0x1fff;
25415 var ah2 = a2 >>> 13;
25416 var a3 = a[3] | 0;
25417 var al3 = a3 & 0x1fff;
25418 var ah3 = a3 >>> 13;
25419 var a4 = a[4] | 0;
25420 var al4 = a4 & 0x1fff;
25421 var ah4 = a4 >>> 13;
25422 var a5 = a[5] | 0;
25423 var al5 = a5 & 0x1fff;
25424 var ah5 = a5 >>> 13;
25425 var a6 = a[6] | 0;
25426 var al6 = a6 & 0x1fff;
25427 var ah6 = a6 >>> 13;
25428 var a7 = a[7] | 0;
25429 var al7 = a7 & 0x1fff;
25430 var ah7 = a7 >>> 13;
25431 var a8 = a[8] | 0;
25432 var al8 = a8 & 0x1fff;
25433 var ah8 = a8 >>> 13;
25434 var a9 = a[9] | 0;
25435 var al9 = a9 & 0x1fff;
25436 var ah9 = a9 >>> 13;
25437 var b0 = b[0] | 0;
25438 var bl0 = b0 & 0x1fff;
25439 var bh0 = b0 >>> 13;
25440 var b1 = b[1] | 0;
25441 var bl1 = b1 & 0x1fff;
25442 var bh1 = b1 >>> 13;
25443 var b2 = b[2] | 0;
25444 var bl2 = b2 & 0x1fff;
25445 var bh2 = b2 >>> 13;
25446 var b3 = b[3] | 0;
25447 var bl3 = b3 & 0x1fff;
25448 var bh3 = b3 >>> 13;
25449 var b4 = b[4] | 0;
25450 var bl4 = b4 & 0x1fff;
25451 var bh4 = b4 >>> 13;
25452 var b5 = b[5] | 0;
25453 var bl5 = b5 & 0x1fff;
25454 var bh5 = b5 >>> 13;
25455 var b6 = b[6] | 0;
25456 var bl6 = b6 & 0x1fff;
25457 var bh6 = b6 >>> 13;
25458 var b7 = b[7] | 0;
25459 var bl7 = b7 & 0x1fff;
25460 var bh7 = b7 >>> 13;
25461 var b8 = b[8] | 0;
25462 var bl8 = b8 & 0x1fff;
25463 var bh8 = b8 >>> 13;
25464 var b9 = b[9] | 0;
25465 var bl9 = b9 & 0x1fff;
25466 var bh9 = b9 >>> 13;
25467
25468 out.negative = self.negative ^ num.negative;
25469 out.length = 19;
25470 /* k = 0 */
25471 lo = Math.imul(al0, bl0);
25472 mid = Math.imul(al0, bh0);
25473 mid = (mid + Math.imul(ah0, bl0)) | 0;
25474 hi = Math.imul(ah0, bh0);
25475 var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25476 c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
25477 w0 &= 0x3ffffff;
25478 /* k = 1 */
25479 lo = Math.imul(al1, bl0);
25480 mid = Math.imul(al1, bh0);
25481 mid = (mid + Math.imul(ah1, bl0)) | 0;
25482 hi = Math.imul(ah1, bh0);
25483 lo = (lo + Math.imul(al0, bl1)) | 0;
25484 mid = (mid + Math.imul(al0, bh1)) | 0;
25485 mid = (mid + Math.imul(ah0, bl1)) | 0;
25486 hi = (hi + Math.imul(ah0, bh1)) | 0;
25487 var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25488 c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
25489 w1 &= 0x3ffffff;
25490 /* k = 2 */
25491 lo = Math.imul(al2, bl0);
25492 mid = Math.imul(al2, bh0);
25493 mid = (mid + Math.imul(ah2, bl0)) | 0;
25494 hi = Math.imul(ah2, bh0);
25495 lo = (lo + Math.imul(al1, bl1)) | 0;
25496 mid = (mid + Math.imul(al1, bh1)) | 0;
25497 mid = (mid + Math.imul(ah1, bl1)) | 0;
25498 hi = (hi + Math.imul(ah1, bh1)) | 0;
25499 lo = (lo + Math.imul(al0, bl2)) | 0;
25500 mid = (mid + Math.imul(al0, bh2)) | 0;
25501 mid = (mid + Math.imul(ah0, bl2)) | 0;
25502 hi = (hi + Math.imul(ah0, bh2)) | 0;
25503 var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25504 c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
25505 w2 &= 0x3ffffff;
25506 /* k = 3 */
25507 lo = Math.imul(al3, bl0);
25508 mid = Math.imul(al3, bh0);
25509 mid = (mid + Math.imul(ah3, bl0)) | 0;
25510 hi = Math.imul(ah3, bh0);
25511 lo = (lo + Math.imul(al2, bl1)) | 0;
25512 mid = (mid + Math.imul(al2, bh1)) | 0;
25513 mid = (mid + Math.imul(ah2, bl1)) | 0;
25514 hi = (hi + Math.imul(ah2, bh1)) | 0;
25515 lo = (lo + Math.imul(al1, bl2)) | 0;
25516 mid = (mid + Math.imul(al1, bh2)) | 0;
25517 mid = (mid + Math.imul(ah1, bl2)) | 0;
25518 hi = (hi + Math.imul(ah1, bh2)) | 0;
25519 lo = (lo + Math.imul(al0, bl3)) | 0;
25520 mid = (mid + Math.imul(al0, bh3)) | 0;
25521 mid = (mid + Math.imul(ah0, bl3)) | 0;
25522 hi = (hi + Math.imul(ah0, bh3)) | 0;
25523 var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25524 c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
25525 w3 &= 0x3ffffff;
25526 /* k = 4 */
25527 lo = Math.imul(al4, bl0);
25528 mid = Math.imul(al4, bh0);
25529 mid = (mid + Math.imul(ah4, bl0)) | 0;
25530 hi = Math.imul(ah4, bh0);
25531 lo = (lo + Math.imul(al3, bl1)) | 0;
25532 mid = (mid + Math.imul(al3, bh1)) | 0;
25533 mid = (mid + Math.imul(ah3, bl1)) | 0;
25534 hi = (hi + Math.imul(ah3, bh1)) | 0;
25535 lo = (lo + Math.imul(al2, bl2)) | 0;
25536 mid = (mid + Math.imul(al2, bh2)) | 0;
25537 mid = (mid + Math.imul(ah2, bl2)) | 0;
25538 hi = (hi + Math.imul(ah2, bh2)) | 0;
25539 lo = (lo + Math.imul(al1, bl3)) | 0;
25540 mid = (mid + Math.imul(al1, bh3)) | 0;
25541 mid = (mid + Math.imul(ah1, bl3)) | 0;
25542 hi = (hi + Math.imul(ah1, bh3)) | 0;
25543 lo = (lo + Math.imul(al0, bl4)) | 0;
25544 mid = (mid + Math.imul(al0, bh4)) | 0;
25545 mid = (mid + Math.imul(ah0, bl4)) | 0;
25546 hi = (hi + Math.imul(ah0, bh4)) | 0;
25547 var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25548 c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
25549 w4 &= 0x3ffffff;
25550 /* k = 5 */
25551 lo = Math.imul(al5, bl0);
25552 mid = Math.imul(al5, bh0);
25553 mid = (mid + Math.imul(ah5, bl0)) | 0;
25554 hi = Math.imul(ah5, bh0);
25555 lo = (lo + Math.imul(al4, bl1)) | 0;
25556 mid = (mid + Math.imul(al4, bh1)) | 0;
25557 mid = (mid + Math.imul(ah4, bl1)) | 0;
25558 hi = (hi + Math.imul(ah4, bh1)) | 0;
25559 lo = (lo + Math.imul(al3, bl2)) | 0;
25560 mid = (mid + Math.imul(al3, bh2)) | 0;
25561 mid = (mid + Math.imul(ah3, bl2)) | 0;
25562 hi = (hi + Math.imul(ah3, bh2)) | 0;
25563 lo = (lo + Math.imul(al2, bl3)) | 0;
25564 mid = (mid + Math.imul(al2, bh3)) | 0;
25565 mid = (mid + Math.imul(ah2, bl3)) | 0;
25566 hi = (hi + Math.imul(ah2, bh3)) | 0;
25567 lo = (lo + Math.imul(al1, bl4)) | 0;
25568 mid = (mid + Math.imul(al1, bh4)) | 0;
25569 mid = (mid + Math.imul(ah1, bl4)) | 0;
25570 hi = (hi + Math.imul(ah1, bh4)) | 0;
25571 lo = (lo + Math.imul(al0, bl5)) | 0;
25572 mid = (mid + Math.imul(al0, bh5)) | 0;
25573 mid = (mid + Math.imul(ah0, bl5)) | 0;
25574 hi = (hi + Math.imul(ah0, bh5)) | 0;
25575 var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25576 c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
25577 w5 &= 0x3ffffff;
25578 /* k = 6 */
25579 lo = Math.imul(al6, bl0);
25580 mid = Math.imul(al6, bh0);
25581 mid = (mid + Math.imul(ah6, bl0)) | 0;
25582 hi = Math.imul(ah6, bh0);
25583 lo = (lo + Math.imul(al5, bl1)) | 0;
25584 mid = (mid + Math.imul(al5, bh1)) | 0;
25585 mid = (mid + Math.imul(ah5, bl1)) | 0;
25586 hi = (hi + Math.imul(ah5, bh1)) | 0;
25587 lo = (lo + Math.imul(al4, bl2)) | 0;
25588 mid = (mid + Math.imul(al4, bh2)) | 0;
25589 mid = (mid + Math.imul(ah4, bl2)) | 0;
25590 hi = (hi + Math.imul(ah4, bh2)) | 0;
25591 lo = (lo + Math.imul(al3, bl3)) | 0;
25592 mid = (mid + Math.imul(al3, bh3)) | 0;
25593 mid = (mid + Math.imul(ah3, bl3)) | 0;
25594 hi = (hi + Math.imul(ah3, bh3)) | 0;
25595 lo = (lo + Math.imul(al2, bl4)) | 0;
25596 mid = (mid + Math.imul(al2, bh4)) | 0;
25597 mid = (mid + Math.imul(ah2, bl4)) | 0;
25598 hi = (hi + Math.imul(ah2, bh4)) | 0;
25599 lo = (lo + Math.imul(al1, bl5)) | 0;
25600 mid = (mid + Math.imul(al1, bh5)) | 0;
25601 mid = (mid + Math.imul(ah1, bl5)) | 0;
25602 hi = (hi + Math.imul(ah1, bh5)) | 0;
25603 lo = (lo + Math.imul(al0, bl6)) | 0;
25604 mid = (mid + Math.imul(al0, bh6)) | 0;
25605 mid = (mid + Math.imul(ah0, bl6)) | 0;
25606 hi = (hi + Math.imul(ah0, bh6)) | 0;
25607 var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25608 c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
25609 w6 &= 0x3ffffff;
25610 /* k = 7 */
25611 lo = Math.imul(al7, bl0);
25612 mid = Math.imul(al7, bh0);
25613 mid = (mid + Math.imul(ah7, bl0)) | 0;
25614 hi = Math.imul(ah7, bh0);
25615 lo = (lo + Math.imul(al6, bl1)) | 0;
25616 mid = (mid + Math.imul(al6, bh1)) | 0;
25617 mid = (mid + Math.imul(ah6, bl1)) | 0;
25618 hi = (hi + Math.imul(ah6, bh1)) | 0;
25619 lo = (lo + Math.imul(al5, bl2)) | 0;
25620 mid = (mid + Math.imul(al5, bh2)) | 0;
25621 mid = (mid + Math.imul(ah5, bl2)) | 0;
25622 hi = (hi + Math.imul(ah5, bh2)) | 0;
25623 lo = (lo + Math.imul(al4, bl3)) | 0;
25624 mid = (mid + Math.imul(al4, bh3)) | 0;
25625 mid = (mid + Math.imul(ah4, bl3)) | 0;
25626 hi = (hi + Math.imul(ah4, bh3)) | 0;
25627 lo = (lo + Math.imul(al3, bl4)) | 0;
25628 mid = (mid + Math.imul(al3, bh4)) | 0;
25629 mid = (mid + Math.imul(ah3, bl4)) | 0;
25630 hi = (hi + Math.imul(ah3, bh4)) | 0;
25631 lo = (lo + Math.imul(al2, bl5)) | 0;
25632 mid = (mid + Math.imul(al2, bh5)) | 0;
25633 mid = (mid + Math.imul(ah2, bl5)) | 0;
25634 hi = (hi + Math.imul(ah2, bh5)) | 0;
25635 lo = (lo + Math.imul(al1, bl6)) | 0;
25636 mid = (mid + Math.imul(al1, bh6)) | 0;
25637 mid = (mid + Math.imul(ah1, bl6)) | 0;
25638 hi = (hi + Math.imul(ah1, bh6)) | 0;
25639 lo = (lo + Math.imul(al0, bl7)) | 0;
25640 mid = (mid + Math.imul(al0, bh7)) | 0;
25641 mid = (mid + Math.imul(ah0, bl7)) | 0;
25642 hi = (hi + Math.imul(ah0, bh7)) | 0;
25643 var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25644 c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
25645 w7 &= 0x3ffffff;
25646 /* k = 8 */
25647 lo = Math.imul(al8, bl0);
25648 mid = Math.imul(al8, bh0);
25649 mid = (mid + Math.imul(ah8, bl0)) | 0;
25650 hi = Math.imul(ah8, bh0);
25651 lo = (lo + Math.imul(al7, bl1)) | 0;
25652 mid = (mid + Math.imul(al7, bh1)) | 0;
25653 mid = (mid + Math.imul(ah7, bl1)) | 0;
25654 hi = (hi + Math.imul(ah7, bh1)) | 0;
25655 lo = (lo + Math.imul(al6, bl2)) | 0;
25656 mid = (mid + Math.imul(al6, bh2)) | 0;
25657 mid = (mid + Math.imul(ah6, bl2)) | 0;
25658 hi = (hi + Math.imul(ah6, bh2)) | 0;
25659 lo = (lo + Math.imul(al5, bl3)) | 0;
25660 mid = (mid + Math.imul(al5, bh3)) | 0;
25661 mid = (mid + Math.imul(ah5, bl3)) | 0;
25662 hi = (hi + Math.imul(ah5, bh3)) | 0;
25663 lo = (lo + Math.imul(al4, bl4)) | 0;
25664 mid = (mid + Math.imul(al4, bh4)) | 0;
25665 mid = (mid + Math.imul(ah4, bl4)) | 0;
25666 hi = (hi + Math.imul(ah4, bh4)) | 0;
25667 lo = (lo + Math.imul(al3, bl5)) | 0;
25668 mid = (mid + Math.imul(al3, bh5)) | 0;
25669 mid = (mid + Math.imul(ah3, bl5)) | 0;
25670 hi = (hi + Math.imul(ah3, bh5)) | 0;
25671 lo = (lo + Math.imul(al2, bl6)) | 0;
25672 mid = (mid + Math.imul(al2, bh6)) | 0;
25673 mid = (mid + Math.imul(ah2, bl6)) | 0;
25674 hi = (hi + Math.imul(ah2, bh6)) | 0;
25675 lo = (lo + Math.imul(al1, bl7)) | 0;
25676 mid = (mid + Math.imul(al1, bh7)) | 0;
25677 mid = (mid + Math.imul(ah1, bl7)) | 0;
25678 hi = (hi + Math.imul(ah1, bh7)) | 0;
25679 lo = (lo + Math.imul(al0, bl8)) | 0;
25680 mid = (mid + Math.imul(al0, bh8)) | 0;
25681 mid = (mid + Math.imul(ah0, bl8)) | 0;
25682 hi = (hi + Math.imul(ah0, bh8)) | 0;
25683 var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25684 c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
25685 w8 &= 0x3ffffff;
25686 /* k = 9 */
25687 lo = Math.imul(al9, bl0);
25688 mid = Math.imul(al9, bh0);
25689 mid = (mid + Math.imul(ah9, bl0)) | 0;
25690 hi = Math.imul(ah9, bh0);
25691 lo = (lo + Math.imul(al8, bl1)) | 0;
25692 mid = (mid + Math.imul(al8, bh1)) | 0;
25693 mid = (mid + Math.imul(ah8, bl1)) | 0;
25694 hi = (hi + Math.imul(ah8, bh1)) | 0;
25695 lo = (lo + Math.imul(al7, bl2)) | 0;
25696 mid = (mid + Math.imul(al7, bh2)) | 0;
25697 mid = (mid + Math.imul(ah7, bl2)) | 0;
25698 hi = (hi + Math.imul(ah7, bh2)) | 0;
25699 lo = (lo + Math.imul(al6, bl3)) | 0;
25700 mid = (mid + Math.imul(al6, bh3)) | 0;
25701 mid = (mid + Math.imul(ah6, bl3)) | 0;
25702 hi = (hi + Math.imul(ah6, bh3)) | 0;
25703 lo = (lo + Math.imul(al5, bl4)) | 0;
25704 mid = (mid + Math.imul(al5, bh4)) | 0;
25705 mid = (mid + Math.imul(ah5, bl4)) | 0;
25706 hi = (hi + Math.imul(ah5, bh4)) | 0;
25707 lo = (lo + Math.imul(al4, bl5)) | 0;
25708 mid = (mid + Math.imul(al4, bh5)) | 0;
25709 mid = (mid + Math.imul(ah4, bl5)) | 0;
25710 hi = (hi + Math.imul(ah4, bh5)) | 0;
25711 lo = (lo + Math.imul(al3, bl6)) | 0;
25712 mid = (mid + Math.imul(al3, bh6)) | 0;
25713 mid = (mid + Math.imul(ah3, bl6)) | 0;
25714 hi = (hi + Math.imul(ah3, bh6)) | 0;
25715 lo = (lo + Math.imul(al2, bl7)) | 0;
25716 mid = (mid + Math.imul(al2, bh7)) | 0;
25717 mid = (mid + Math.imul(ah2, bl7)) | 0;
25718 hi = (hi + Math.imul(ah2, bh7)) | 0;
25719 lo = (lo + Math.imul(al1, bl8)) | 0;
25720 mid = (mid + Math.imul(al1, bh8)) | 0;
25721 mid = (mid + Math.imul(ah1, bl8)) | 0;
25722 hi = (hi + Math.imul(ah1, bh8)) | 0;
25723 lo = (lo + Math.imul(al0, bl9)) | 0;
25724 mid = (mid + Math.imul(al0, bh9)) | 0;
25725 mid = (mid + Math.imul(ah0, bl9)) | 0;
25726 hi = (hi + Math.imul(ah0, bh9)) | 0;
25727 var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25728 c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
25729 w9 &= 0x3ffffff;
25730 /* k = 10 */
25731 lo = Math.imul(al9, bl1);
25732 mid = Math.imul(al9, bh1);
25733 mid = (mid + Math.imul(ah9, bl1)) | 0;
25734 hi = Math.imul(ah9, bh1);
25735 lo = (lo + Math.imul(al8, bl2)) | 0;
25736 mid = (mid + Math.imul(al8, bh2)) | 0;
25737 mid = (mid + Math.imul(ah8, bl2)) | 0;
25738 hi = (hi + Math.imul(ah8, bh2)) | 0;
25739 lo = (lo + Math.imul(al7, bl3)) | 0;
25740 mid = (mid + Math.imul(al7, bh3)) | 0;
25741 mid = (mid + Math.imul(ah7, bl3)) | 0;
25742 hi = (hi + Math.imul(ah7, bh3)) | 0;
25743 lo = (lo + Math.imul(al6, bl4)) | 0;
25744 mid = (mid + Math.imul(al6, bh4)) | 0;
25745 mid = (mid + Math.imul(ah6, bl4)) | 0;
25746 hi = (hi + Math.imul(ah6, bh4)) | 0;
25747 lo = (lo + Math.imul(al5, bl5)) | 0;
25748 mid = (mid + Math.imul(al5, bh5)) | 0;
25749 mid = (mid + Math.imul(ah5, bl5)) | 0;
25750 hi = (hi + Math.imul(ah5, bh5)) | 0;
25751 lo = (lo + Math.imul(al4, bl6)) | 0;
25752 mid = (mid + Math.imul(al4, bh6)) | 0;
25753 mid = (mid + Math.imul(ah4, bl6)) | 0;
25754 hi = (hi + Math.imul(ah4, bh6)) | 0;
25755 lo = (lo + Math.imul(al3, bl7)) | 0;
25756 mid = (mid + Math.imul(al3, bh7)) | 0;
25757 mid = (mid + Math.imul(ah3, bl7)) | 0;
25758 hi = (hi + Math.imul(ah3, bh7)) | 0;
25759 lo = (lo + Math.imul(al2, bl8)) | 0;
25760 mid = (mid + Math.imul(al2, bh8)) | 0;
25761 mid = (mid + Math.imul(ah2, bl8)) | 0;
25762 hi = (hi + Math.imul(ah2, bh8)) | 0;
25763 lo = (lo + Math.imul(al1, bl9)) | 0;
25764 mid = (mid + Math.imul(al1, bh9)) | 0;
25765 mid = (mid + Math.imul(ah1, bl9)) | 0;
25766 hi = (hi + Math.imul(ah1, bh9)) | 0;
25767 var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25768 c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
25769 w10 &= 0x3ffffff;
25770 /* k = 11 */
25771 lo = Math.imul(al9, bl2);
25772 mid = Math.imul(al9, bh2);
25773 mid = (mid + Math.imul(ah9, bl2)) | 0;
25774 hi = Math.imul(ah9, bh2);
25775 lo = (lo + Math.imul(al8, bl3)) | 0;
25776 mid = (mid + Math.imul(al8, bh3)) | 0;
25777 mid = (mid + Math.imul(ah8, bl3)) | 0;
25778 hi = (hi + Math.imul(ah8, bh3)) | 0;
25779 lo = (lo + Math.imul(al7, bl4)) | 0;
25780 mid = (mid + Math.imul(al7, bh4)) | 0;
25781 mid = (mid + Math.imul(ah7, bl4)) | 0;
25782 hi = (hi + Math.imul(ah7, bh4)) | 0;
25783 lo = (lo + Math.imul(al6, bl5)) | 0;
25784 mid = (mid + Math.imul(al6, bh5)) | 0;
25785 mid = (mid + Math.imul(ah6, bl5)) | 0;
25786 hi = (hi + Math.imul(ah6, bh5)) | 0;
25787 lo = (lo + Math.imul(al5, bl6)) | 0;
25788 mid = (mid + Math.imul(al5, bh6)) | 0;
25789 mid = (mid + Math.imul(ah5, bl6)) | 0;
25790 hi = (hi + Math.imul(ah5, bh6)) | 0;
25791 lo = (lo + Math.imul(al4, bl7)) | 0;
25792 mid = (mid + Math.imul(al4, bh7)) | 0;
25793 mid = (mid + Math.imul(ah4, bl7)) | 0;
25794 hi = (hi + Math.imul(ah4, bh7)) | 0;
25795 lo = (lo + Math.imul(al3, bl8)) | 0;
25796 mid = (mid + Math.imul(al3, bh8)) | 0;
25797 mid = (mid + Math.imul(ah3, bl8)) | 0;
25798 hi = (hi + Math.imul(ah3, bh8)) | 0;
25799 lo = (lo + Math.imul(al2, bl9)) | 0;
25800 mid = (mid + Math.imul(al2, bh9)) | 0;
25801 mid = (mid + Math.imul(ah2, bl9)) | 0;
25802 hi = (hi + Math.imul(ah2, bh9)) | 0;
25803 var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25804 c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
25805 w11 &= 0x3ffffff;
25806 /* k = 12 */
25807 lo = Math.imul(al9, bl3);
25808 mid = Math.imul(al9, bh3);
25809 mid = (mid + Math.imul(ah9, bl3)) | 0;
25810 hi = Math.imul(ah9, bh3);
25811 lo = (lo + Math.imul(al8, bl4)) | 0;
25812 mid = (mid + Math.imul(al8, bh4)) | 0;
25813 mid = (mid + Math.imul(ah8, bl4)) | 0;
25814 hi = (hi + Math.imul(ah8, bh4)) | 0;
25815 lo = (lo + Math.imul(al7, bl5)) | 0;
25816 mid = (mid + Math.imul(al7, bh5)) | 0;
25817 mid = (mid + Math.imul(ah7, bl5)) | 0;
25818 hi = (hi + Math.imul(ah7, bh5)) | 0;
25819 lo = (lo + Math.imul(al6, bl6)) | 0;
25820 mid = (mid + Math.imul(al6, bh6)) | 0;
25821 mid = (mid + Math.imul(ah6, bl6)) | 0;
25822 hi = (hi + Math.imul(ah6, bh6)) | 0;
25823 lo = (lo + Math.imul(al5, bl7)) | 0;
25824 mid = (mid + Math.imul(al5, bh7)) | 0;
25825 mid = (mid + Math.imul(ah5, bl7)) | 0;
25826 hi = (hi + Math.imul(ah5, bh7)) | 0;
25827 lo = (lo + Math.imul(al4, bl8)) | 0;
25828 mid = (mid + Math.imul(al4, bh8)) | 0;
25829 mid = (mid + Math.imul(ah4, bl8)) | 0;
25830 hi = (hi + Math.imul(ah4, bh8)) | 0;
25831 lo = (lo + Math.imul(al3, bl9)) | 0;
25832 mid = (mid + Math.imul(al3, bh9)) | 0;
25833 mid = (mid + Math.imul(ah3, bl9)) | 0;
25834 hi = (hi + Math.imul(ah3, bh9)) | 0;
25835 var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25836 c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
25837 w12 &= 0x3ffffff;
25838 /* k = 13 */
25839 lo = Math.imul(al9, bl4);
25840 mid = Math.imul(al9, bh4);
25841 mid = (mid + Math.imul(ah9, bl4)) | 0;
25842 hi = Math.imul(ah9, bh4);
25843 lo = (lo + Math.imul(al8, bl5)) | 0;
25844 mid = (mid + Math.imul(al8, bh5)) | 0;
25845 mid = (mid + Math.imul(ah8, bl5)) | 0;
25846 hi = (hi + Math.imul(ah8, bh5)) | 0;
25847 lo = (lo + Math.imul(al7, bl6)) | 0;
25848 mid = (mid + Math.imul(al7, bh6)) | 0;
25849 mid = (mid + Math.imul(ah7, bl6)) | 0;
25850 hi = (hi + Math.imul(ah7, bh6)) | 0;
25851 lo = (lo + Math.imul(al6, bl7)) | 0;
25852 mid = (mid + Math.imul(al6, bh7)) | 0;
25853 mid = (mid + Math.imul(ah6, bl7)) | 0;
25854 hi = (hi + Math.imul(ah6, bh7)) | 0;
25855 lo = (lo + Math.imul(al5, bl8)) | 0;
25856 mid = (mid + Math.imul(al5, bh8)) | 0;
25857 mid = (mid + Math.imul(ah5, bl8)) | 0;
25858 hi = (hi + Math.imul(ah5, bh8)) | 0;
25859 lo = (lo + Math.imul(al4, bl9)) | 0;
25860 mid = (mid + Math.imul(al4, bh9)) | 0;
25861 mid = (mid + Math.imul(ah4, bl9)) | 0;
25862 hi = (hi + Math.imul(ah4, bh9)) | 0;
25863 var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25864 c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
25865 w13 &= 0x3ffffff;
25866 /* k = 14 */
25867 lo = Math.imul(al9, bl5);
25868 mid = Math.imul(al9, bh5);
25869 mid = (mid + Math.imul(ah9, bl5)) | 0;
25870 hi = Math.imul(ah9, bh5);
25871 lo = (lo + Math.imul(al8, bl6)) | 0;
25872 mid = (mid + Math.imul(al8, bh6)) | 0;
25873 mid = (mid + Math.imul(ah8, bl6)) | 0;
25874 hi = (hi + Math.imul(ah8, bh6)) | 0;
25875 lo = (lo + Math.imul(al7, bl7)) | 0;
25876 mid = (mid + Math.imul(al7, bh7)) | 0;
25877 mid = (mid + Math.imul(ah7, bl7)) | 0;
25878 hi = (hi + Math.imul(ah7, bh7)) | 0;
25879 lo = (lo + Math.imul(al6, bl8)) | 0;
25880 mid = (mid + Math.imul(al6, bh8)) | 0;
25881 mid = (mid + Math.imul(ah6, bl8)) | 0;
25882 hi = (hi + Math.imul(ah6, bh8)) | 0;
25883 lo = (lo + Math.imul(al5, bl9)) | 0;
25884 mid = (mid + Math.imul(al5, bh9)) | 0;
25885 mid = (mid + Math.imul(ah5, bl9)) | 0;
25886 hi = (hi + Math.imul(ah5, bh9)) | 0;
25887 var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25888 c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
25889 w14 &= 0x3ffffff;
25890 /* k = 15 */
25891 lo = Math.imul(al9, bl6);
25892 mid = Math.imul(al9, bh6);
25893 mid = (mid + Math.imul(ah9, bl6)) | 0;
25894 hi = Math.imul(ah9, bh6);
25895 lo = (lo + Math.imul(al8, bl7)) | 0;
25896 mid = (mid + Math.imul(al8, bh7)) | 0;
25897 mid = (mid + Math.imul(ah8, bl7)) | 0;
25898 hi = (hi + Math.imul(ah8, bh7)) | 0;
25899 lo = (lo + Math.imul(al7, bl8)) | 0;
25900 mid = (mid + Math.imul(al7, bh8)) | 0;
25901 mid = (mid + Math.imul(ah7, bl8)) | 0;
25902 hi = (hi + Math.imul(ah7, bh8)) | 0;
25903 lo = (lo + Math.imul(al6, bl9)) | 0;
25904 mid = (mid + Math.imul(al6, bh9)) | 0;
25905 mid = (mid + Math.imul(ah6, bl9)) | 0;
25906 hi = (hi + Math.imul(ah6, bh9)) | 0;
25907 var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25908 c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
25909 w15 &= 0x3ffffff;
25910 /* k = 16 */
25911 lo = Math.imul(al9, bl7);
25912 mid = Math.imul(al9, bh7);
25913 mid = (mid + Math.imul(ah9, bl7)) | 0;
25914 hi = Math.imul(ah9, bh7);
25915 lo = (lo + Math.imul(al8, bl8)) | 0;
25916 mid = (mid + Math.imul(al8, bh8)) | 0;
25917 mid = (mid + Math.imul(ah8, bl8)) | 0;
25918 hi = (hi + Math.imul(ah8, bh8)) | 0;
25919 lo = (lo + Math.imul(al7, bl9)) | 0;
25920 mid = (mid + Math.imul(al7, bh9)) | 0;
25921 mid = (mid + Math.imul(ah7, bl9)) | 0;
25922 hi = (hi + Math.imul(ah7, bh9)) | 0;
25923 var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25924 c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
25925 w16 &= 0x3ffffff;
25926 /* k = 17 */
25927 lo = Math.imul(al9, bl8);
25928 mid = Math.imul(al9, bh8);
25929 mid = (mid + Math.imul(ah9, bl8)) | 0;
25930 hi = Math.imul(ah9, bh8);
25931 lo = (lo + Math.imul(al8, bl9)) | 0;
25932 mid = (mid + Math.imul(al8, bh9)) | 0;
25933 mid = (mid + Math.imul(ah8, bl9)) | 0;
25934 hi = (hi + Math.imul(ah8, bh9)) | 0;
25935 var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25936 c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
25937 w17 &= 0x3ffffff;
25938 /* k = 18 */
25939 lo = Math.imul(al9, bl9);
25940 mid = Math.imul(al9, bh9);
25941 mid = (mid + Math.imul(ah9, bl9)) | 0;
25942 hi = Math.imul(ah9, bh9);
25943 var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
25944 c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
25945 w18 &= 0x3ffffff;
25946 o[0] = w0;
25947 o[1] = w1;
25948 o[2] = w2;
25949 o[3] = w3;
25950 o[4] = w4;
25951 o[5] = w5;
25952 o[6] = w6;
25953 o[7] = w7;
25954 o[8] = w8;
25955 o[9] = w9;
25956 o[10] = w10;
25957 o[11] = w11;
25958 o[12] = w12;
25959 o[13] = w13;
25960 o[14] = w14;
25961 o[15] = w15;
25962 o[16] = w16;
25963 o[17] = w17;
25964 o[18] = w18;
25965 if (c !== 0) {
25966 o[19] = c;
25967 out.length++;
25968 }
25969 return out;
25970 };
25971
25972 // Polyfill comb
25973 if (!Math.imul) {
25974 comb10MulTo = smallMulTo;
25975 }
25976
25977 function bigMulTo (self, num, out) {
25978 out.negative = num.negative ^ self.negative;
25979 out.length = self.length + num.length;
25980
25981 var carry = 0;
25982 var hncarry = 0;
25983 for (var k = 0; k < out.length - 1; k++) {
25984 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
25985 // note that ncarry could be >= 0x3ffffff
25986 var ncarry = hncarry;
25987 hncarry = 0;
25988 var rword = carry & 0x3ffffff;
25989 var maxJ = Math.min(k, num.length - 1);
25990 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
25991 var i = k - j;
25992 var a = self.words[i] | 0;
25993 var b = num.words[j] | 0;
25994 var r = a * b;
25995
25996 var lo = r & 0x3ffffff;
25997 ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
25998 lo = (lo + rword) | 0;
25999 rword = lo & 0x3ffffff;
26000 ncarry = (ncarry + (lo >>> 26)) | 0;
26001
26002 hncarry += ncarry >>> 26;
26003 ncarry &= 0x3ffffff;
26004 }
26005 out.words[k] = rword;
26006 carry = ncarry;
26007 ncarry = hncarry;
26008 }
26009 if (carry !== 0) {
26010 out.words[k] = carry;
26011 } else {
26012 out.length--;
26013 }
26014
26015 return out.strip();
26016 }
26017
26018 function jumboMulTo (self, num, out) {
26019 var fftm = new FFTM();
26020 return fftm.mulp(self, num, out);
26021 }
26022
26023 BN.prototype.mulTo = function mulTo (num, out) {
26024 var res;
26025 var len = this.length + num.length;
26026 if (this.length === 10 && num.length === 10) {
26027 res = comb10MulTo(this, num, out);
26028 } else if (len < 63) {
26029 res = smallMulTo(this, num, out);
26030 } else if (len < 1024) {
26031 res = bigMulTo(this, num, out);
26032 } else {
26033 res = jumboMulTo(this, num, out);
26034 }
26035
26036 return res;
26037 };
26038
26039 // Cooley-Tukey algorithm for FFT
26040 // slightly revisited to rely on looping instead of recursion
26041
26042 function FFTM (x, y) {
26043 this.x = x;
26044 this.y = y;
26045 }
26046
26047 FFTM.prototype.makeRBT = function makeRBT (N) {
26048 var t = new Array(N);
26049 var l = BN.prototype._countBits(N) - 1;
26050 for (var i = 0; i < N; i++) {
26051 t[i] = this.revBin(i, l, N);
26052 }
26053
26054 return t;
26055 };
26056
26057 // Returns binary-reversed representation of `x`
26058 FFTM.prototype.revBin = function revBin (x, l, N) {
26059 if (x === 0 || x === N - 1) return x;
26060
26061 var rb = 0;
26062 for (var i = 0; i < l; i++) {
26063 rb |= (x & 1) << (l - i - 1);
26064 x >>= 1;
26065 }
26066
26067 return rb;
26068 };
26069
26070 // Performs "tweedling" phase, therefore 'emulating'
26071 // behaviour of the recursive algorithm
26072 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
26073 for (var i = 0; i < N; i++) {
26074 rtws[i] = rws[rbt[i]];
26075 itws[i] = iws[rbt[i]];
26076 }
26077 };
26078
26079 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
26080 this.permute(rbt, rws, iws, rtws, itws, N);
26081
26082 for (var s = 1; s < N; s <<= 1) {
26083 var l = s << 1;
26084
26085 var rtwdf = Math.cos(2 * Math.PI / l);
26086 var itwdf = Math.sin(2 * Math.PI / l);
26087
26088 for (var p = 0; p < N; p += l) {
26089 var rtwdf_ = rtwdf;
26090 var itwdf_ = itwdf;
26091
26092 for (var j = 0; j < s; j++) {
26093 var re = rtws[p + j];
26094 var ie = itws[p + j];
26095
26096 var ro = rtws[p + j + s];
26097 var io = itws[p + j + s];
26098
26099 var rx = rtwdf_ * ro - itwdf_ * io;
26100
26101 io = rtwdf_ * io + itwdf_ * ro;
26102 ro = rx;
26103
26104 rtws[p + j] = re + ro;
26105 itws[p + j] = ie + io;
26106
26107 rtws[p + j + s] = re - ro;
26108 itws[p + j + s] = ie - io;
26109
26110 /* jshint maxdepth : false */
26111 if (j !== l) {
26112 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
26113
26114 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
26115 rtwdf_ = rx;
26116 }
26117 }
26118 }
26119 }
26120 };
26121
26122 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
26123 var N = Math.max(m, n) | 1;
26124 var odd = N & 1;
26125 var i = 0;
26126 for (N = N / 2 | 0; N; N = N >>> 1) {
26127 i++;
26128 }
26129
26130 return 1 << i + 1 + odd;
26131 };
26132
26133 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
26134 if (N <= 1) return;
26135
26136 for (var i = 0; i < N / 2; i++) {
26137 var t = rws[i];
26138
26139 rws[i] = rws[N - i - 1];
26140 rws[N - i - 1] = t;
26141
26142 t = iws[i];
26143
26144 iws[i] = -iws[N - i - 1];
26145 iws[N - i - 1] = -t;
26146 }
26147 };
26148
26149 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
26150 var carry = 0;
26151 for (var i = 0; i < N / 2; i++) {
26152 var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
26153 Math.round(ws[2 * i] / N) +
26154 carry;
26155
26156 ws[i] = w & 0x3ffffff;
26157
26158 if (w < 0x4000000) {
26159 carry = 0;
26160 } else {
26161 carry = w / 0x4000000 | 0;
26162 }
26163 }
26164
26165 return ws;
26166 };
26167
26168 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
26169 var carry = 0;
26170 for (var i = 0; i < len; i++) {
26171 carry = carry + (ws[i] | 0);
26172
26173 rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
26174 rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
26175 }
26176
26177 // Pad with zeroes
26178 for (i = 2 * len; i < N; ++i) {
26179 rws[i] = 0;
26180 }
26181
26182 assert(carry === 0);
26183 assert((carry & ~0x1fff) === 0);
26184 };
26185
26186 FFTM.prototype.stub = function stub (N) {
26187 var ph = new Array(N);
26188 for (var i = 0; i < N; i++) {
26189 ph[i] = 0;
26190 }
26191
26192 return ph;
26193 };
26194
26195 FFTM.prototype.mulp = function mulp (x, y, out) {
26196 var N = 2 * this.guessLen13b(x.length, y.length);
26197
26198 var rbt = this.makeRBT(N);
26199
26200 var _ = this.stub(N);
26201
26202 var rws = new Array(N);
26203 var rwst = new Array(N);
26204 var iwst = new Array(N);
26205
26206 var nrws = new Array(N);
26207 var nrwst = new Array(N);
26208 var niwst = new Array(N);
26209
26210 var rmws = out.words;
26211 rmws.length = N;
26212
26213 this.convert13b(x.words, x.length, rws, N);
26214 this.convert13b(y.words, y.length, nrws, N);
26215
26216 this.transform(rws, _, rwst, iwst, N, rbt);
26217 this.transform(nrws, _, nrwst, niwst, N, rbt);
26218
26219 for (var i = 0; i < N; i++) {
26220 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
26221 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
26222 rwst[i] = rx;
26223 }
26224
26225 this.conjugate(rwst, iwst, N);
26226 this.transform(rwst, iwst, rmws, _, N, rbt);
26227 this.conjugate(rmws, _, N);
26228 this.normalize13b(rmws, N);
26229
26230 out.negative = x.negative ^ y.negative;
26231 out.length = x.length + y.length;
26232 return out.strip();
26233 };
26234
26235 // Multiply `this` by `num`
26236 BN.prototype.mul = function mul (num) {
26237 var out = new BN(null);
26238 out.words = new Array(this.length + num.length);
26239 return this.mulTo(num, out);
26240 };
26241
26242 // Multiply employing FFT
26243 BN.prototype.mulf = function mulf (num) {
26244 var out = new BN(null);
26245 out.words = new Array(this.length + num.length);
26246 return jumboMulTo(this, num, out);
26247 };
26248
26249 // In-place Multiplication
26250 BN.prototype.imul = function imul (num) {
26251 return this.clone().mulTo(num, this);
26252 };
26253
26254 BN.prototype.imuln = function imuln (num) {
26255 assert(typeof num === 'number');
26256 assert(num < 0x4000000);
26257
26258 // Carry
26259 var carry = 0;
26260 for (var i = 0; i < this.length; i++) {
26261 var w = (this.words[i] | 0) * num;
26262 var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
26263 carry >>= 26;
26264 carry += (w / 0x4000000) | 0;
26265 // NOTE: lo is 27bit maximum
26266 carry += lo >>> 26;
26267 this.words[i] = lo & 0x3ffffff;
26268 }
26269
26270 if (carry !== 0) {
26271 this.words[i] = carry;
26272 this.length++;
26273 }
26274
26275 return this;
26276 };
26277
26278 BN.prototype.muln = function muln (num) {
26279 return this.clone().imuln(num);
26280 };
26281
26282 // `this` * `this`
26283 BN.prototype.sqr = function sqr () {
26284 return this.mul(this);
26285 };
26286
26287 // `this` * `this` in-place
26288 BN.prototype.isqr = function isqr () {
26289 return this.imul(this.clone());
26290 };
26291
26292 // Math.pow(`this`, `num`)
26293 BN.prototype.pow = function pow (num) {
26294 var w = toBitArray(num);
26295 if (w.length === 0) return new BN(1);
26296
26297 // Skip leading zeroes
26298 var res = this;
26299 for (var i = 0; i < w.length; i++, res = res.sqr()) {
26300 if (w[i] !== 0) break;
26301 }
26302
26303 if (++i < w.length) {
26304 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
26305 if (w[i] === 0) continue;
26306
26307 res = res.mul(q);
26308 }
26309 }
26310
26311 return res;
26312 };
26313
26314 // Shift-left in-place
26315 BN.prototype.iushln = function iushln (bits) {
26316 assert(typeof bits === 'number' && bits >= 0);
26317 var r = bits % 26;
26318 var s = (bits - r) / 26;
26319 var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
26320 var i;
26321
26322 if (r !== 0) {
26323 var carry = 0;
26324
26325 for (i = 0; i < this.length; i++) {
26326 var newCarry = this.words[i] & carryMask;
26327 var c = ((this.words[i] | 0) - newCarry) << r;
26328 this.words[i] = c | carry;
26329 carry = newCarry >>> (26 - r);
26330 }
26331
26332 if (carry) {
26333 this.words[i] = carry;
26334 this.length++;
26335 }
26336 }
26337
26338 if (s !== 0) {
26339 for (i = this.length - 1; i >= 0; i--) {
26340 this.words[i + s] = this.words[i];
26341 }
26342
26343 for (i = 0; i < s; i++) {
26344 this.words[i] = 0;
26345 }
26346
26347 this.length += s;
26348 }
26349
26350 return this.strip();
26351 };
26352
26353 BN.prototype.ishln = function ishln (bits) {
26354 // TODO(indutny): implement me
26355 assert(this.negative === 0);
26356 return this.iushln(bits);
26357 };
26358
26359 // Shift-right in-place
26360 // NOTE: `hint` is a lowest bit before trailing zeroes
26361 // NOTE: if `extended` is present - it will be filled with destroyed bits
26362 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
26363 assert(typeof bits === 'number' && bits >= 0);
26364 var h;
26365 if (hint) {
26366 h = (hint - (hint % 26)) / 26;
26367 } else {
26368 h = 0;
26369 }
26370
26371 var r = bits % 26;
26372 var s = Math.min((bits - r) / 26, this.length);
26373 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
26374 var maskedWords = extended;
26375
26376 h -= s;
26377 h = Math.max(0, h);
26378
26379 // Extended mode, copy masked part
26380 if (maskedWords) {
26381 for (var i = 0; i < s; i++) {
26382 maskedWords.words[i] = this.words[i];
26383 }
26384 maskedWords.length = s;
26385 }
26386
26387 if (s === 0) {
26388 // No-op, we should not move anything at all
26389 } else if (this.length > s) {
26390 this.length -= s;
26391 for (i = 0; i < this.length; i++) {
26392 this.words[i] = this.words[i + s];
26393 }
26394 } else {
26395 this.words[0] = 0;
26396 this.length = 1;
26397 }
26398
26399 var carry = 0;
26400 for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
26401 var word = this.words[i] | 0;
26402 this.words[i] = (carry << (26 - r)) | (word >>> r);
26403 carry = word & mask;
26404 }
26405
26406 // Push carried bits as a mask
26407 if (maskedWords && carry !== 0) {
26408 maskedWords.words[maskedWords.length++] = carry;
26409 }
26410
26411 if (this.length === 0) {
26412 this.words[0] = 0;
26413 this.length = 1;
26414 }
26415
26416 return this.strip();
26417 };
26418
26419 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
26420 // TODO(indutny): implement me
26421 assert(this.negative === 0);
26422 return this.iushrn(bits, hint, extended);
26423 };
26424
26425 // Shift-left
26426 BN.prototype.shln = function shln (bits) {
26427 return this.clone().ishln(bits);
26428 };
26429
26430 BN.prototype.ushln = function ushln (bits) {
26431 return this.clone().iushln(bits);
26432 };
26433
26434 // Shift-right
26435 BN.prototype.shrn = function shrn (bits) {
26436 return this.clone().ishrn(bits);
26437 };
26438
26439 BN.prototype.ushrn = function ushrn (bits) {
26440 return this.clone().iushrn(bits);
26441 };
26442
26443 // Test if n bit is set
26444 BN.prototype.testn = function testn (bit) {
26445 assert(typeof bit === 'number' && bit >= 0);
26446 var r = bit % 26;
26447 var s = (bit - r) / 26;
26448 var q = 1 << r;
26449
26450 // Fast case: bit is much higher than all existing words
26451 if (this.length <= s) return false;
26452
26453 // Check bit and return
26454 var w = this.words[s];
26455
26456 return !!(w & q);
26457 };
26458
26459 // Return only lowers bits of number (in-place)
26460 BN.prototype.imaskn = function imaskn (bits) {
26461 assert(typeof bits === 'number' && bits >= 0);
26462 var r = bits % 26;
26463 var s = (bits - r) / 26;
26464
26465 assert(this.negative === 0, 'imaskn works only with positive numbers');
26466
26467 if (this.length <= s) {
26468 return this;
26469 }
26470
26471 if (r !== 0) {
26472 s++;
26473 }
26474 this.length = Math.min(s, this.length);
26475
26476 if (r !== 0) {
26477 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
26478 this.words[this.length - 1] &= mask;
26479 }
26480
26481 return this.strip();
26482 };
26483
26484 // Return only lowers bits of number
26485 BN.prototype.maskn = function maskn (bits) {
26486 return this.clone().imaskn(bits);
26487 };
26488
26489 // Add plain number `num` to `this`
26490 BN.prototype.iaddn = function iaddn (num) {
26491 assert(typeof num === 'number');
26492 assert(num < 0x4000000);
26493 if (num < 0) return this.isubn(-num);
26494
26495 // Possible sign change
26496 if (this.negative !== 0) {
26497 if (this.length === 1 && (this.words[0] | 0) < num) {
26498 this.words[0] = num - (this.words[0] | 0);
26499 this.negative = 0;
26500 return this;
26501 }
26502
26503 this.negative = 0;
26504 this.isubn(num);
26505 this.negative = 1;
26506 return this;
26507 }
26508
26509 // Add without checks
26510 return this._iaddn(num);
26511 };
26512
26513 BN.prototype._iaddn = function _iaddn (num) {
26514 this.words[0] += num;
26515
26516 // Carry
26517 for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
26518 this.words[i] -= 0x4000000;
26519 if (i === this.length - 1) {
26520 this.words[i + 1] = 1;
26521 } else {
26522 this.words[i + 1]++;
26523 }
26524 }
26525 this.length = Math.max(this.length, i + 1);
26526
26527 return this;
26528 };
26529
26530 // Subtract plain number `num` from `this`
26531 BN.prototype.isubn = function isubn (num) {
26532 assert(typeof num === 'number');
26533 assert(num < 0x4000000);
26534 if (num < 0) return this.iaddn(-num);
26535
26536 if (this.negative !== 0) {
26537 this.negative = 0;
26538 this.iaddn(num);
26539 this.negative = 1;
26540 return this;
26541 }
26542
26543 this.words[0] -= num;
26544
26545 if (this.length === 1 && this.words[0] < 0) {
26546 this.words[0] = -this.words[0];
26547 this.negative = 1;
26548 } else {
26549 // Carry
26550 for (var i = 0; i < this.length && this.words[i] < 0; i++) {
26551 this.words[i] += 0x4000000;
26552 this.words[i + 1] -= 1;
26553 }
26554 }
26555
26556 return this.strip();
26557 };
26558
26559 BN.prototype.addn = function addn (num) {
26560 return this.clone().iaddn(num);
26561 };
26562
26563 BN.prototype.subn = function subn (num) {
26564 return this.clone().isubn(num);
26565 };
26566
26567 BN.prototype.iabs = function iabs () {
26568 this.negative = 0;
26569
26570 return this;
26571 };
26572
26573 BN.prototype.abs = function abs () {
26574 return this.clone().iabs();
26575 };
26576
26577 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
26578 var len = num.length + shift;
26579 var i;
26580
26581 this._expand(len);
26582
26583 var w;
26584 var carry = 0;
26585 for (i = 0; i < num.length; i++) {
26586 w = (this.words[i + shift] | 0) + carry;
26587 var right = (num.words[i] | 0) * mul;
26588 w -= right & 0x3ffffff;
26589 carry = (w >> 26) - ((right / 0x4000000) | 0);
26590 this.words[i + shift] = w & 0x3ffffff;
26591 }
26592 for (; i < this.length - shift; i++) {
26593 w = (this.words[i + shift] | 0) + carry;
26594 carry = w >> 26;
26595 this.words[i + shift] = w & 0x3ffffff;
26596 }
26597
26598 if (carry === 0) return this.strip();
26599
26600 // Subtraction overflow
26601 assert(carry === -1);
26602 carry = 0;
26603 for (i = 0; i < this.length; i++) {
26604 w = -(this.words[i] | 0) + carry;
26605 carry = w >> 26;
26606 this.words[i] = w & 0x3ffffff;
26607 }
26608 this.negative = 1;
26609
26610 return this.strip();
26611 };
26612
26613 BN.prototype._wordDiv = function _wordDiv (num, mode) {
26614 var shift = this.length - num.length;
26615
26616 var a = this.clone();
26617 var b = num;
26618
26619 // Normalize
26620 var bhi = b.words[b.length - 1] | 0;
26621 var bhiBits = this._countBits(bhi);
26622 shift = 26 - bhiBits;
26623 if (shift !== 0) {
26624 b = b.ushln(shift);
26625 a.iushln(shift);
26626 bhi = b.words[b.length - 1] | 0;
26627 }
26628
26629 // Initialize quotient
26630 var m = a.length - b.length;
26631 var q;
26632
26633 if (mode !== 'mod') {
26634 q = new BN(null);
26635 q.length = m + 1;
26636 q.words = new Array(q.length);
26637 for (var i = 0; i < q.length; i++) {
26638 q.words[i] = 0;
26639 }
26640 }
26641
26642 var diff = a.clone()._ishlnsubmul(b, 1, m);
26643 if (diff.negative === 0) {
26644 a = diff;
26645 if (q) {
26646 q.words[m] = 1;
26647 }
26648 }
26649
26650 for (var j = m - 1; j >= 0; j--) {
26651 var qj = (a.words[b.length + j] | 0) * 0x4000000 +
26652 (a.words[b.length + j - 1] | 0);
26653
26654 // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
26655 // (0x7ffffff)
26656 qj = Math.min((qj / bhi) | 0, 0x3ffffff);
26657
26658 a._ishlnsubmul(b, qj, j);
26659 while (a.negative !== 0) {
26660 qj--;
26661 a.negative = 0;
26662 a._ishlnsubmul(b, 1, j);
26663 if (!a.isZero()) {
26664 a.negative ^= 1;
26665 }
26666 }
26667 if (q) {
26668 q.words[j] = qj;
26669 }
26670 }
26671 if (q) {
26672 q.strip();
26673 }
26674 a.strip();
26675
26676 // Denormalize
26677 if (mode !== 'div' && shift !== 0) {
26678 a.iushrn(shift);
26679 }
26680
26681 return {
26682 div: q || null,
26683 mod: a
26684 };
26685 };
26686
26687 // NOTE: 1) `mode` can be set to `mod` to request mod only,
26688 // to `div` to request div only, or be absent to
26689 // request both div & mod
26690 // 2) `positive` is true if unsigned mod is requested
26691 BN.prototype.divmod = function divmod (num, mode, positive) {
26692 assert(!num.isZero());
26693
26694 if (this.isZero()) {
26695 return {
26696 div: new BN(0),
26697 mod: new BN(0)
26698 };
26699 }
26700
26701 var div, mod, res;
26702 if (this.negative !== 0 && num.negative === 0) {
26703 res = this.neg().divmod(num, mode);
26704
26705 if (mode !== 'mod') {
26706 div = res.div.neg();
26707 }
26708
26709 if (mode !== 'div') {
26710 mod = res.mod.neg();
26711 if (positive && mod.negative !== 0) {
26712 mod.iadd(num);
26713 }
26714 }
26715
26716 return {
26717 div: div,
26718 mod: mod
26719 };
26720 }
26721
26722 if (this.negative === 0 && num.negative !== 0) {
26723 res = this.divmod(num.neg(), mode);
26724
26725 if (mode !== 'mod') {
26726 div = res.div.neg();
26727 }
26728
26729 return {
26730 div: div,
26731 mod: res.mod
26732 };
26733 }
26734
26735 if ((this.negative & num.negative) !== 0) {
26736 res = this.neg().divmod(num.neg(), mode);
26737
26738 if (mode !== 'div') {
26739 mod = res.mod.neg();
26740 if (positive && mod.negative !== 0) {
26741 mod.isub(num);
26742 }
26743 }
26744
26745 return {
26746 div: res.div,
26747 mod: mod
26748 };
26749 }
26750
26751 // Both numbers are positive at this point
26752
26753 // Strip both numbers to approximate shift value
26754 if (num.length > this.length || this.cmp(num) < 0) {
26755 return {
26756 div: new BN(0),
26757 mod: this
26758 };
26759 }
26760
26761 // Very short reduction
26762 if (num.length === 1) {
26763 if (mode === 'div') {
26764 return {
26765 div: this.divn(num.words[0]),
26766 mod: null
26767 };
26768 }
26769
26770 if (mode === 'mod') {
26771 return {
26772 div: null,
26773 mod: new BN(this.modn(num.words[0]))
26774 };
26775 }
26776
26777 return {
26778 div: this.divn(num.words[0]),
26779 mod: new BN(this.modn(num.words[0]))
26780 };
26781 }
26782
26783 return this._wordDiv(num, mode);
26784 };
26785
26786 // Find `this` / `num`
26787 BN.prototype.div = function div (num) {
26788 return this.divmod(num, 'div', false).div;
26789 };
26790
26791 // Find `this` % `num`
26792 BN.prototype.mod = function mod (num) {
26793 return this.divmod(num, 'mod', false).mod;
26794 };
26795
26796 BN.prototype.umod = function umod (num) {
26797 return this.divmod(num, 'mod', true).mod;
26798 };
26799
26800 // Find Round(`this` / `num`)
26801 BN.prototype.divRound = function divRound (num) {
26802 var dm = this.divmod(num);
26803
26804 // Fast case - exact division
26805 if (dm.mod.isZero()) return dm.div;
26806
26807 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
26808
26809 var half = num.ushrn(1);
26810 var r2 = num.andln(1);
26811 var cmp = mod.cmp(half);
26812
26813 // Round down
26814 if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
26815
26816 // Round up
26817 return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
26818 };
26819
26820 BN.prototype.modn = function modn (num) {
26821 assert(num <= 0x3ffffff);
26822 var p = (1 << 26) % num;
26823
26824 var acc = 0;
26825 for (var i = this.length - 1; i >= 0; i--) {
26826 acc = (p * acc + (this.words[i] | 0)) % num;
26827 }
26828
26829 return acc;
26830 };
26831
26832 // In-place division by number
26833 BN.prototype.idivn = function idivn (num) {
26834 assert(num <= 0x3ffffff);
26835
26836 var carry = 0;
26837 for (var i = this.length - 1; i >= 0; i--) {
26838 var w = (this.words[i] | 0) + carry * 0x4000000;
26839 this.words[i] = (w / num) | 0;
26840 carry = w % num;
26841 }
26842
26843 return this.strip();
26844 };
26845
26846 BN.prototype.divn = function divn (num) {
26847 return this.clone().idivn(num);
26848 };
26849
26850 BN.prototype.egcd = function egcd (p) {
26851 assert(p.negative === 0);
26852 assert(!p.isZero());
26853
26854 var x = this;
26855 var y = p.clone();
26856
26857 if (x.negative !== 0) {
26858 x = x.umod(p);
26859 } else {
26860 x = x.clone();
26861 }
26862
26863 // A * x + B * y = x
26864 var A = new BN(1);
26865 var B = new BN(0);
26866
26867 // C * x + D * y = y
26868 var C = new BN(0);
26869 var D = new BN(1);
26870
26871 var g = 0;
26872
26873 while (x.isEven() && y.isEven()) {
26874 x.iushrn(1);
26875 y.iushrn(1);
26876 ++g;
26877 }
26878
26879 var yp = y.clone();
26880 var xp = x.clone();
26881
26882 while (!x.isZero()) {
26883 for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
26884 if (i > 0) {
26885 x.iushrn(i);
26886 while (i-- > 0) {
26887 if (A.isOdd() || B.isOdd()) {
26888 A.iadd(yp);
26889 B.isub(xp);
26890 }
26891
26892 A.iushrn(1);
26893 B.iushrn(1);
26894 }
26895 }
26896
26897 for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
26898 if (j > 0) {
26899 y.iushrn(j);
26900 while (j-- > 0) {
26901 if (C.isOdd() || D.isOdd()) {
26902 C.iadd(yp);
26903 D.isub(xp);
26904 }
26905
26906 C.iushrn(1);
26907 D.iushrn(1);
26908 }
26909 }
26910
26911 if (x.cmp(y) >= 0) {
26912 x.isub(y);
26913 A.isub(C);
26914 B.isub(D);
26915 } else {
26916 y.isub(x);
26917 C.isub(A);
26918 D.isub(B);
26919 }
26920 }
26921
26922 return {
26923 a: C,
26924 b: D,
26925 gcd: y.iushln(g)
26926 };
26927 };
26928
26929 // This is reduced incarnation of the binary EEA
26930 // above, designated to invert members of the
26931 // _prime_ fields F(p) at a maximal speed
26932 BN.prototype._invmp = function _invmp (p) {
26933 assert(p.negative === 0);
26934 assert(!p.isZero());
26935
26936 var a = this;
26937 var b = p.clone();
26938
26939 if (a.negative !== 0) {
26940 a = a.umod(p);
26941 } else {
26942 a = a.clone();
26943 }
26944
26945 var x1 = new BN(1);
26946 var x2 = new BN(0);
26947
26948 var delta = b.clone();
26949
26950 while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
26951 for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
26952 if (i > 0) {
26953 a.iushrn(i);
26954 while (i-- > 0) {
26955 if (x1.isOdd()) {
26956 x1.iadd(delta);
26957 }
26958
26959 x1.iushrn(1);
26960 }
26961 }
26962
26963 for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
26964 if (j > 0) {
26965 b.iushrn(j);
26966 while (j-- > 0) {
26967 if (x2.isOdd()) {
26968 x2.iadd(delta);
26969 }
26970
26971 x2.iushrn(1);
26972 }
26973 }
26974
26975 if (a.cmp(b) >= 0) {
26976 a.isub(b);
26977 x1.isub(x2);
26978 } else {
26979 b.isub(a);
26980 x2.isub(x1);
26981 }
26982 }
26983
26984 var res;
26985 if (a.cmpn(1) === 0) {
26986 res = x1;
26987 } else {
26988 res = x2;
26989 }
26990
26991 if (res.cmpn(0) < 0) {
26992 res.iadd(p);
26993 }
26994
26995 return res;
26996 };
26997
26998 BN.prototype.gcd = function gcd (num) {
26999 if (this.isZero()) return num.abs();
27000 if (num.isZero()) return this.abs();
27001
27002 var a = this.clone();
27003 var b = num.clone();
27004 a.negative = 0;
27005 b.negative = 0;
27006
27007 // Remove common factor of two
27008 for (var shift = 0; a.isEven() && b.isEven(); shift++) {
27009 a.iushrn(1);
27010 b.iushrn(1);
27011 }
27012
27013 do {
27014 while (a.isEven()) {
27015 a.iushrn(1);
27016 }
27017 while (b.isEven()) {
27018 b.iushrn(1);
27019 }
27020
27021 var r = a.cmp(b);
27022 if (r < 0) {
27023 // Swap `a` and `b` to make `a` always bigger than `b`
27024 var t = a;
27025 a = b;
27026 b = t;
27027 } else if (r === 0 || b.cmpn(1) === 0) {
27028 break;
27029 }
27030
27031 a.isub(b);
27032 } while (true);
27033
27034 return b.iushln(shift);
27035 };
27036
27037 // Invert number in the field F(num)
27038 BN.prototype.invm = function invm (num) {
27039 return this.egcd(num).a.umod(num);
27040 };
27041
27042 BN.prototype.isEven = function isEven () {
27043 return (this.words[0] & 1) === 0;
27044 };
27045
27046 BN.prototype.isOdd = function isOdd () {
27047 return (this.words[0] & 1) === 1;
27048 };
27049
27050 // And first word and num
27051 BN.prototype.andln = function andln (num) {
27052 return this.words[0] & num;
27053 };
27054
27055 // Increment at the bit position in-line
27056 BN.prototype.bincn = function bincn (bit) {
27057 assert(typeof bit === 'number');
27058 var r = bit % 26;
27059 var s = (bit - r) / 26;
27060 var q = 1 << r;
27061
27062 // Fast case: bit is much higher than all existing words
27063 if (this.length <= s) {
27064 this._expand(s + 1);
27065 this.words[s] |= q;
27066 return this;
27067 }
27068
27069 // Add bit and propagate, if needed
27070 var carry = q;
27071 for (var i = s; carry !== 0 && i < this.length; i++) {
27072 var w = this.words[i] | 0;
27073 w += carry;
27074 carry = w >>> 26;
27075 w &= 0x3ffffff;
27076 this.words[i] = w;
27077 }
27078 if (carry !== 0) {
27079 this.words[i] = carry;
27080 this.length++;
27081 }
27082 return this;
27083 };
27084
27085 BN.prototype.isZero = function isZero () {
27086 return this.length === 1 && this.words[0] === 0;
27087 };
27088
27089 BN.prototype.cmpn = function cmpn (num) {
27090 var negative = num < 0;
27091
27092 if (this.negative !== 0 && !negative) return -1;
27093 if (this.negative === 0 && negative) return 1;
27094
27095 this.strip();
27096
27097 var res;
27098 if (this.length > 1) {
27099 res = 1;
27100 } else {
27101 if (negative) {
27102 num = -num;
27103 }
27104
27105 assert(num <= 0x3ffffff, 'Number is too big');
27106
27107 var w = this.words[0] | 0;
27108 res = w === num ? 0 : w < num ? -1 : 1;
27109 }
27110 if (this.negative !== 0) return -res | 0;
27111 return res;
27112 };
27113
27114 // Compare two numbers and return:
27115 // 1 - if `this` > `num`
27116 // 0 - if `this` == `num`
27117 // -1 - if `this` < `num`
27118 BN.prototype.cmp = function cmp (num) {
27119 if (this.negative !== 0 && num.negative === 0) return -1;
27120 if (this.negative === 0 && num.negative !== 0) return 1;
27121
27122 var res = this.ucmp(num);
27123 if (this.negative !== 0) return -res | 0;
27124 return res;
27125 };
27126
27127 // Unsigned comparison
27128 BN.prototype.ucmp = function ucmp (num) {
27129 // At this point both numbers have the same sign
27130 if (this.length > num.length) return 1;
27131 if (this.length < num.length) return -1;
27132
27133 var res = 0;
27134 for (var i = this.length - 1; i >= 0; i--) {
27135 var a = this.words[i] | 0;
27136 var b = num.words[i] | 0;
27137
27138 if (a === b) continue;
27139 if (a < b) {
27140 res = -1;
27141 } else if (a > b) {
27142 res = 1;
27143 }
27144 break;
27145 }
27146 return res;
27147 };
27148
27149 BN.prototype.gtn = function gtn (num) {
27150 return this.cmpn(num) === 1;
27151 };
27152
27153 BN.prototype.gt = function gt (num) {
27154 return this.cmp(num) === 1;
27155 };
27156
27157 BN.prototype.gten = function gten (num) {
27158 return this.cmpn(num) >= 0;
27159 };
27160
27161 BN.prototype.gte = function gte (num) {
27162 return this.cmp(num) >= 0;
27163 };
27164
27165 BN.prototype.ltn = function ltn (num) {
27166 return this.cmpn(num) === -1;
27167 };
27168
27169 BN.prototype.lt = function lt (num) {
27170 return this.cmp(num) === -1;
27171 };
27172
27173 BN.prototype.lten = function lten (num) {
27174 return this.cmpn(num) <= 0;
27175 };
27176
27177 BN.prototype.lte = function lte (num) {
27178 return this.cmp(num) <= 0;
27179 };
27180
27181 BN.prototype.eqn = function eqn (num) {
27182 return this.cmpn(num) === 0;
27183 };
27184
27185 BN.prototype.eq = function eq (num) {
27186 return this.cmp(num) === 0;
27187 };
27188
27189 //
27190 // A reduce context, could be using montgomery or something better, depending
27191 // on the `m` itself.
27192 //
27193 BN.red = function red (num) {
27194 return new Red(num);
27195 };
27196
27197 BN.prototype.toRed = function toRed (ctx) {
27198 assert(!this.red, 'Already a number in reduction context');
27199 assert(this.negative === 0, 'red works only with positives');
27200 return ctx.convertTo(this)._forceRed(ctx);
27201 };
27202
27203 BN.prototype.fromRed = function fromRed () {
27204 assert(this.red, 'fromRed works only with numbers in reduction context');
27205 return this.red.convertFrom(this);
27206 };
27207
27208 BN.prototype._forceRed = function _forceRed (ctx) {
27209 this.red = ctx;
27210 return this;
27211 };
27212
27213 BN.prototype.forceRed = function forceRed (ctx) {
27214 assert(!this.red, 'Already a number in reduction context');
27215 return this._forceRed(ctx);
27216 };
27217
27218 BN.prototype.redAdd = function redAdd (num) {
27219 assert(this.red, 'redAdd works only with red numbers');
27220 return this.red.add(this, num);
27221 };
27222
27223 BN.prototype.redIAdd = function redIAdd (num) {
27224 assert(this.red, 'redIAdd works only with red numbers');
27225 return this.red.iadd(this, num);
27226 };
27227
27228 BN.prototype.redSub = function redSub (num) {
27229 assert(this.red, 'redSub works only with red numbers');
27230 return this.red.sub(this, num);
27231 };
27232
27233 BN.prototype.redISub = function redISub (num) {
27234 assert(this.red, 'redISub works only with red numbers');
27235 return this.red.isub(this, num);
27236 };
27237
27238 BN.prototype.redShl = function redShl (num) {
27239 assert(this.red, 'redShl works only with red numbers');
27240 return this.red.shl(this, num);
27241 };
27242
27243 BN.prototype.redMul = function redMul (num) {
27244 assert(this.red, 'redMul works only with red numbers');
27245 this.red._verify2(this, num);
27246 return this.red.mul(this, num);
27247 };
27248
27249 BN.prototype.redIMul = function redIMul (num) {
27250 assert(this.red, 'redMul works only with red numbers');
27251 this.red._verify2(this, num);
27252 return this.red.imul(this, num);
27253 };
27254
27255 BN.prototype.redSqr = function redSqr () {
27256 assert(this.red, 'redSqr works only with red numbers');
27257 this.red._verify1(this);
27258 return this.red.sqr(this);
27259 };
27260
27261 BN.prototype.redISqr = function redISqr () {
27262 assert(this.red, 'redISqr works only with red numbers');
27263 this.red._verify1(this);
27264 return this.red.isqr(this);
27265 };
27266
27267 // Square root over p
27268 BN.prototype.redSqrt = function redSqrt () {
27269 assert(this.red, 'redSqrt works only with red numbers');
27270 this.red._verify1(this);
27271 return this.red.sqrt(this);
27272 };
27273
27274 BN.prototype.redInvm = function redInvm () {
27275 assert(this.red, 'redInvm works only with red numbers');
27276 this.red._verify1(this);
27277 return this.red.invm(this);
27278 };
27279
27280 // Return negative clone of `this` % `red modulo`
27281 BN.prototype.redNeg = function redNeg () {
27282 assert(this.red, 'redNeg works only with red numbers');
27283 this.red._verify1(this);
27284 return this.red.neg(this);
27285 };
27286
27287 BN.prototype.redPow = function redPow (num) {
27288 assert(this.red && !num.red, 'redPow(normalNum)');
27289 this.red._verify1(this);
27290 return this.red.pow(this, num);
27291 };
27292
27293 // Prime numbers with efficient reduction
27294 var primes = {
27295 k256: null,
27296 p224: null,
27297 p192: null,
27298 p25519: null
27299 };
27300
27301 // Pseudo-Mersenne prime
27302 function MPrime (name, p) {
27303 // P = 2 ^ N - K
27304 this.name = name;
27305 this.p = new BN(p, 16);
27306 this.n = this.p.bitLength();
27307 this.k = new BN(1).iushln(this.n).isub(this.p);
27308
27309 this.tmp = this._tmp();
27310 }
27311
27312 MPrime.prototype._tmp = function _tmp () {
27313 var tmp = new BN(null);
27314 tmp.words = new Array(Math.ceil(this.n / 13));
27315 return tmp;
27316 };
27317
27318 MPrime.prototype.ireduce = function ireduce (num) {
27319 // Assumes that `num` is less than `P^2`
27320 // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
27321 var r = num;
27322 var rlen;
27323
27324 do {
27325 this.split(r, this.tmp);
27326 r = this.imulK(r);
27327 r = r.iadd(this.tmp);
27328 rlen = r.bitLength();
27329 } while (rlen > this.n);
27330
27331 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
27332 if (cmp === 0) {
27333 r.words[0] = 0;
27334 r.length = 1;
27335 } else if (cmp > 0) {
27336 r.isub(this.p);
27337 } else {
27338 r.strip();
27339 }
27340
27341 return r;
27342 };
27343
27344 MPrime.prototype.split = function split (input, out) {
27345 input.iushrn(this.n, 0, out);
27346 };
27347
27348 MPrime.prototype.imulK = function imulK (num) {
27349 return num.imul(this.k);
27350 };
27351
27352 function K256 () {
27353 MPrime.call(
27354 this,
27355 'k256',
27356 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
27357 }
27358 inherits(K256, MPrime);
27359
27360 K256.prototype.split = function split (input, output) {
27361 // 256 = 9 * 26 + 22
27362 var mask = 0x3fffff;
27363
27364 var outLen = Math.min(input.length, 9);
27365 for (var i = 0; i < outLen; i++) {
27366 output.words[i] = input.words[i];
27367 }
27368 output.length = outLen;
27369
27370 if (input.length <= 9) {
27371 input.words[0] = 0;
27372 input.length = 1;
27373 return;
27374 }
27375
27376 // Shift by 9 limbs
27377 var prev = input.words[9];
27378 output.words[output.length++] = prev & mask;
27379
27380 for (i = 10; i < input.length; i++) {
27381 var next = input.words[i] | 0;
27382 input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
27383 prev = next;
27384 }
27385 prev >>>= 22;
27386 input.words[i - 10] = prev;
27387 if (prev === 0 && input.length > 10) {
27388 input.length -= 10;
27389 } else {
27390 input.length -= 9;
27391 }
27392 };
27393
27394 K256.prototype.imulK = function imulK (num) {
27395 // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
27396 num.words[num.length] = 0;
27397 num.words[num.length + 1] = 0;
27398 num.length += 2;
27399
27400 // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
27401 var lo = 0;
27402 for (var i = 0; i < num.length; i++) {
27403 var w = num.words[i] | 0;
27404 lo += w * 0x3d1;
27405 num.words[i] = lo & 0x3ffffff;
27406 lo = w * 0x40 + ((lo / 0x4000000) | 0);
27407 }
27408
27409 // Fast length reduction
27410 if (num.words[num.length - 1] === 0) {
27411 num.length--;
27412 if (num.words[num.length - 1] === 0) {
27413 num.length--;
27414 }
27415 }
27416 return num;
27417 };
27418
27419 function P224 () {
27420 MPrime.call(
27421 this,
27422 'p224',
27423 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
27424 }
27425 inherits(P224, MPrime);
27426
27427 function P192 () {
27428 MPrime.call(
27429 this,
27430 'p192',
27431 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
27432 }
27433 inherits(P192, MPrime);
27434
27435 function P25519 () {
27436 // 2 ^ 255 - 19
27437 MPrime.call(
27438 this,
27439 '25519',
27440 '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
27441 }
27442 inherits(P25519, MPrime);
27443
27444 P25519.prototype.imulK = function imulK (num) {
27445 // K = 0x13
27446 var carry = 0;
27447 for (var i = 0; i < num.length; i++) {
27448 var hi = (num.words[i] | 0) * 0x13 + carry;
27449 var lo = hi & 0x3ffffff;
27450 hi >>>= 26;
27451
27452 num.words[i] = lo;
27453 carry = hi;
27454 }
27455 if (carry !== 0) {
27456 num.words[num.length++] = carry;
27457 }
27458 return num;
27459 };
27460
27461 // Exported mostly for testing purposes, use plain name instead
27462 BN._prime = function prime (name) {
27463 // Cached version of prime
27464 if (primes[name]) return primes[name];
27465
27466 var prime;
27467 if (name === 'k256') {
27468 prime = new K256();
27469 } else if (name === 'p224') {
27470 prime = new P224();
27471 } else if (name === 'p192') {
27472 prime = new P192();
27473 } else if (name === 'p25519') {
27474 prime = new P25519();
27475 } else {
27476 throw new Error('Unknown prime ' + name);
27477 }
27478 primes[name] = prime;
27479
27480 return prime;
27481 };
27482
27483 //
27484 // Base reduction engine
27485 //
27486 function Red (m) {
27487 if (typeof m === 'string') {
27488 var prime = BN._prime(m);
27489 this.m = prime.p;
27490 this.prime = prime;
27491 } else {
27492 assert(m.gtn(1), 'modulus must be greater than 1');
27493 this.m = m;
27494 this.prime = null;
27495 }
27496 }
27497
27498 Red.prototype._verify1 = function _verify1 (a) {
27499 assert(a.negative === 0, 'red works only with positives');
27500 assert(a.red, 'red works only with red numbers');
27501 };
27502
27503 Red.prototype._verify2 = function _verify2 (a, b) {
27504 assert((a.negative | b.negative) === 0, 'red works only with positives');
27505 assert(a.red && a.red === b.red,
27506 'red works only with red numbers');
27507 };
27508
27509 Red.prototype.imod = function imod (a) {
27510 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
27511 return a.umod(this.m)._forceRed(this);
27512 };
27513
27514 Red.prototype.neg = function neg (a) {
27515 if (a.isZero()) {
27516 return a.clone();
27517 }
27518
27519 return this.m.sub(a)._forceRed(this);
27520 };
27521
27522 Red.prototype.add = function add (a, b) {
27523 this._verify2(a, b);
27524
27525 var res = a.add(b);
27526 if (res.cmp(this.m) >= 0) {
27527 res.isub(this.m);
27528 }
27529 return res._forceRed(this);
27530 };
27531
27532 Red.prototype.iadd = function iadd (a, b) {
27533 this._verify2(a, b);
27534
27535 var res = a.iadd(b);
27536 if (res.cmp(this.m) >= 0) {
27537 res.isub(this.m);
27538 }
27539 return res;
27540 };
27541
27542 Red.prototype.sub = function sub (a, b) {
27543 this._verify2(a, b);
27544
27545 var res = a.sub(b);
27546 if (res.cmpn(0) < 0) {
27547 res.iadd(this.m);
27548 }
27549 return res._forceRed(this);
27550 };
27551
27552 Red.prototype.isub = function isub (a, b) {
27553 this._verify2(a, b);
27554
27555 var res = a.isub(b);
27556 if (res.cmpn(0) < 0) {
27557 res.iadd(this.m);
27558 }
27559 return res;
27560 };
27561
27562 Red.prototype.shl = function shl (a, num) {
27563 this._verify1(a);
27564 return this.imod(a.ushln(num));
27565 };
27566
27567 Red.prototype.imul = function imul (a, b) {
27568 this._verify2(a, b);
27569 return this.imod(a.imul(b));
27570 };
27571
27572 Red.prototype.mul = function mul (a, b) {
27573 this._verify2(a, b);
27574 return this.imod(a.mul(b));
27575 };
27576
27577 Red.prototype.isqr = function isqr (a) {
27578 return this.imul(a, a.clone());
27579 };
27580
27581 Red.prototype.sqr = function sqr (a) {
27582 return this.mul(a, a);
27583 };
27584
27585 Red.prototype.sqrt = function sqrt (a) {
27586 if (a.isZero()) return a.clone();
27587
27588 var mod3 = this.m.andln(3);
27589 assert(mod3 % 2 === 1);
27590
27591 // Fast case
27592 if (mod3 === 3) {
27593 var pow = this.m.add(new BN(1)).iushrn(2);
27594 return this.pow(a, pow);
27595 }
27596
27597 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
27598 //
27599 // Find Q and S, that Q * 2 ^ S = (P - 1)
27600 var q = this.m.subn(1);
27601 var s = 0;
27602 while (!q.isZero() && q.andln(1) === 0) {
27603 s++;
27604 q.iushrn(1);
27605 }
27606 assert(!q.isZero());
27607
27608 var one = new BN(1).toRed(this);
27609 var nOne = one.redNeg();
27610
27611 // Find quadratic non-residue
27612 // NOTE: Max is such because of generalized Riemann hypothesis.
27613 var lpow = this.m.subn(1).iushrn(1);
27614 var z = this.m.bitLength();
27615 z = new BN(2 * z * z).toRed(this);
27616
27617 while (this.pow(z, lpow).cmp(nOne) !== 0) {
27618 z.redIAdd(nOne);
27619 }
27620
27621 var c = this.pow(z, q);
27622 var r = this.pow(a, q.addn(1).iushrn(1));
27623 var t = this.pow(a, q);
27624 var m = s;
27625 while (t.cmp(one) !== 0) {
27626 var tmp = t;
27627 for (var i = 0; tmp.cmp(one) !== 0; i++) {
27628 tmp = tmp.redSqr();
27629 }
27630 assert(i < m);
27631 var b = this.pow(c, new BN(1).iushln(m - i - 1));
27632
27633 r = r.redMul(b);
27634 c = b.redSqr();
27635 t = t.redMul(c);
27636 m = i;
27637 }
27638
27639 return r;
27640 };
27641
27642 Red.prototype.invm = function invm (a) {
27643 var inv = a._invmp(this.m);
27644 if (inv.negative !== 0) {
27645 inv.negative = 0;
27646 return this.imod(inv).redNeg();
27647 } else {
27648 return this.imod(inv);
27649 }
27650 };
27651
27652 Red.prototype.pow = function pow (a, num) {
27653 if (num.isZero()) return new BN(1);
27654 if (num.cmpn(1) === 0) return a.clone();
27655
27656 var windowSize = 4;
27657 var wnd = new Array(1 << windowSize);
27658 wnd[0] = new BN(1).toRed(this);
27659 wnd[1] = a;
27660 for (var i = 2; i < wnd.length; i++) {
27661 wnd[i] = this.mul(wnd[i - 1], a);
27662 }
27663
27664 var res = wnd[0];
27665 var current = 0;
27666 var currentLen = 0;
27667 var start = num.bitLength() % 26;
27668 if (start === 0) {
27669 start = 26;
27670 }
27671
27672 for (i = num.length - 1; i >= 0; i--) {
27673 var word = num.words[i];
27674 for (var j = start - 1; j >= 0; j--) {
27675 var bit = (word >> j) & 1;
27676 if (res !== wnd[0]) {
27677 res = this.sqr(res);
27678 }
27679
27680 if (bit === 0 && current === 0) {
27681 currentLen = 0;
27682 continue;
27683 }
27684
27685 current <<= 1;
27686 current |= bit;
27687 currentLen++;
27688 if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
27689
27690 res = this.mul(res, wnd[current]);
27691 currentLen = 0;
27692 current = 0;
27693 }
27694 start = 26;
27695 }
27696
27697 return res;
27698 };
27699
27700 Red.prototype.convertTo = function convertTo (num) {
27701 var r = num.umod(this.m);
27702
27703 return r === num ? r.clone() : r;
27704 };
27705
27706 Red.prototype.convertFrom = function convertFrom (num) {
27707 var res = num.clone();
27708 res.red = null;
27709 return res;
27710 };
27711
27712 //
27713 // Montgomery method engine
27714 //
27715
27716 BN.mont = function mont (num) {
27717 return new Mont(num);
27718 };
27719
27720 function Mont (m) {
27721 Red.call(this, m);
27722
27723 this.shift = this.m.bitLength();
27724 if (this.shift % 26 !== 0) {
27725 this.shift += 26 - (this.shift % 26);
27726 }
27727
27728 this.r = new BN(1).iushln(this.shift);
27729 this.r2 = this.imod(this.r.sqr());
27730 this.rinv = this.r._invmp(this.m);
27731
27732 this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
27733 this.minv = this.minv.umod(this.r);
27734 this.minv = this.r.sub(this.minv);
27735 }
27736 inherits(Mont, Red);
27737
27738 Mont.prototype.convertTo = function convertTo (num) {
27739 return this.imod(num.ushln(this.shift));
27740 };
27741
27742 Mont.prototype.convertFrom = function convertFrom (num) {
27743 var r = this.imod(num.mul(this.rinv));
27744 r.red = null;
27745 return r;
27746 };
27747
27748 Mont.prototype.imul = function imul (a, b) {
27749 if (a.isZero() || b.isZero()) {
27750 a.words[0] = 0;
27751 a.length = 1;
27752 return a;
27753 }
27754
27755 var t = a.imul(b);
27756 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
27757 var u = t.isub(c).iushrn(this.shift);
27758 var res = u;
27759
27760 if (u.cmp(this.m) >= 0) {
27761 res = u.isub(this.m);
27762 } else if (u.cmpn(0) < 0) {
27763 res = u.iadd(this.m);
27764 }
27765
27766 return res._forceRed(this);
27767 };
27768
27769 Mont.prototype.mul = function mul (a, b) {
27770 if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
27771
27772 var t = a.mul(b);
27773 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
27774 var u = t.isub(c).iushrn(this.shift);
27775 var res = u;
27776 if (u.cmp(this.m) >= 0) {
27777 res = u.isub(this.m);
27778 } else if (u.cmpn(0) < 0) {
27779 res = u.iadd(this.m);
27780 }
27781
27782 return res._forceRed(this);
27783 };
27784
27785 Mont.prototype.invm = function invm (a) {
27786 // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
27787 var res = this.imod(a._invmp(this.m).mul(this.r2));
27788 return res._forceRed(this);
27789 };
27790 })(typeof module === 'undefined' || module, this);
27791
27792 },{}],34:[function(require,module,exports){
27793 var r;
27794
27795 module.exports = function rand(len) {
27796 if (!r)
27797 r = new Rand(null);
27798
27799 return r.generate(len);
27800 };
27801
27802 function Rand(rand) {
27803 this.rand = rand;
27804 }
27805 module.exports.Rand = Rand;
27806
27807 Rand.prototype.generate = function generate(len) {
27808 return this._rand(len);
27809 };
27810
27811 if (typeof self === 'object') {
27812 if (self.crypto && self.crypto.getRandomValues) {
27813 // Modern browsers
27814 Rand.prototype._rand = function _rand(n) {
27815 var arr = new Uint8Array(n);
27816 self.crypto.getRandomValues(arr);
27817 return arr;
27818 };
27819 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
27820 // IE
27821 Rand.prototype._rand = function _rand(n) {
27822 var arr = new Uint8Array(n);
27823 self.msCrypto.getRandomValues(arr);
27824 return arr;
27825 };
27826 } else {
27827 // Old junk
27828 Rand.prototype._rand = function() {
27829 throw new Error('Not implemented yet');
27830 };
27831 }
27832 } else {
27833 // Node.js or Web worker with no crypto support
27834 try {
27835 var crypto = require('crypto');
27836
27837 Rand.prototype._rand = function _rand(n) {
27838 return crypto.randomBytes(n);
27839 };
27840 } catch (e) {
27841 // Emulate crypto API using randy
27842 Rand.prototype._rand = function _rand(n) {
27843 var res = new Uint8Array(n);
27844 for (var i = 0; i < res.length; i++)
27845 res[i] = this.rand.getByte();
27846 return res;
27847 };
27848 }
27849 }
27850
27851 },{"crypto":3}],35:[function(require,module,exports){
27852 (function (Buffer){
27853 var Transform = require('stream').Transform
27854 var inherits = require('inherits')
27855 var StringDecoder = require('string_decoder').StringDecoder
27856 module.exports = CipherBase
27857 inherits(CipherBase, Transform)
27858 function CipherBase (hashMode) {
27859 Transform.call(this)
27860 this.hashMode = typeof hashMode === 'string'
27861 if (this.hashMode) {
27862 this[hashMode] = this._finalOrDigest
27863 } else {
27864 this.final = this._finalOrDigest
27865 }
27866 this._decoder = null
27867 this._encoding = null
27868 }
27869 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
27870 if (typeof data === 'string') {
27871 data = new Buffer(data, inputEnc)
27872 }
27873 var outData = this._update(data)
27874 if (this.hashMode) {
27875 return this
27876 }
27877 if (outputEnc) {
27878 outData = this._toString(outData, outputEnc)
27879 }
27880 return outData
27881 }
27882
27883 CipherBase.prototype.setAutoPadding = function () {}
27884
27885 CipherBase.prototype.getAuthTag = function () {
27886 throw new Error('trying to get auth tag in unsupported state')
27887 }
27888
27889 CipherBase.prototype.setAuthTag = function () {
27890 throw new Error('trying to set auth tag in unsupported state')
27891 }
27892
27893 CipherBase.prototype.setAAD = function () {
27894 throw new Error('trying to set aad in unsupported state')
27895 }
27896
27897 CipherBase.prototype._transform = function (data, _, next) {
27898 var err
27899 try {
27900 if (this.hashMode) {
27901 this._update(data)
27902 } else {
27903 this.push(this._update(data))
27904 }
27905 } catch (e) {
27906 err = e
27907 } finally {
27908 next(err)
27909 }
27910 }
27911 CipherBase.prototype._flush = function (done) {
27912 var err
27913 try {
27914 this.push(this._final())
27915 } catch (e) {
27916 err = e
27917 } finally {
27918 done(err)
27919 }
27920 }
27921 CipherBase.prototype._finalOrDigest = function (outputEnc) {
27922 var outData = this._final() || new Buffer('')
27923 if (outputEnc) {
27924 outData = this._toString(outData, outputEnc, true)
27925 }
27926 return outData
27927 }
27928
27929 CipherBase.prototype._toString = function (value, enc, fin) {
27930 if (!this._decoder) {
27931 this._decoder = new StringDecoder(enc)
27932 this._encoding = enc
27933 }
27934 if (this._encoding !== enc) {
27935 throw new Error('can\'t switch encodings')
27936 }
27937 var out = this._decoder.write(value)
27938 if (fin) {
27939 out += this._decoder.end()
27940 }
27941 return out
27942 }
27943
27944 }).call(this,require("buffer").Buffer)
27945 },{"buffer":5,"inherits":63,"stream":25,"string_decoder":26}],36:[function(require,module,exports){
27946 (function (Buffer){
27947 'use strict';
27948 var inherits = require('inherits')
27949 var md5 = require('./md5')
27950 var rmd160 = require('ripemd160')
27951 var sha = require('sha.js')
27952
27953 var Base = require('cipher-base')
27954
27955 function HashNoConstructor(hash) {
27956 Base.call(this, 'digest')
27957
27958 this._hash = hash
27959 this.buffers = []
27960 }
27961
27962 inherits(HashNoConstructor, Base)
27963
27964 HashNoConstructor.prototype._update = function (data) {
27965 this.buffers.push(data)
27966 }
27967
27968 HashNoConstructor.prototype._final = function () {
27969 var buf = Buffer.concat(this.buffers)
27970 var r = this._hash(buf)
27971 this.buffers = null
27972
27973 return r
27974 }
27975
27976 function Hash(hash) {
27977 Base.call(this, 'digest')
27978
27979 this._hash = hash
27980 }
27981
27982 inherits(Hash, Base)
27983
27984 Hash.prototype._update = function (data) {
27985 this._hash.update(data)
27986 }
27987
27988 Hash.prototype._final = function () {
27989 return this._hash.digest()
27990 }
27991
27992 module.exports = function createHash (alg) {
27993 alg = alg.toLowerCase()
27994 if ('md5' === alg) return new HashNoConstructor(md5)
27995 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
27996
27997 return new Hash(sha(alg))
27998 }
27999
28000 }).call(this,require("buffer").Buffer)
28001 },{"./md5":38,"buffer":5,"cipher-base":35,"inherits":63,"ripemd160":71,"sha.js":80}],37:[function(require,module,exports){
28002 (function (Buffer){
28003 'use strict';
28004 var intSize = 4;
28005 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
28006 var chrsz = 8;
28007
28008 function toArray(buf, bigEndian) {
28009 if ((buf.length % intSize) !== 0) {
28010 var len = buf.length + (intSize - (buf.length % intSize));
28011 buf = Buffer.concat([buf, zeroBuffer], len);
28012 }
28013
28014 var arr = [];
28015 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
28016 for (var i = 0; i < buf.length; i += intSize) {
28017 arr.push(fn.call(buf, i));
28018 }
28019 return arr;
28020 }
28021
28022 function toBuffer(arr, size, bigEndian) {
28023 var buf = new Buffer(size);
28024 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
28025 for (var i = 0; i < arr.length; i++) {
28026 fn.call(buf, arr[i], i * 4, true);
28027 }
28028 return buf;
28029 }
28030
28031 function hash(buf, fn, hashSize, bigEndian) {
28032 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
28033 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
28034 return toBuffer(arr, hashSize, bigEndian);
28035 }
28036 exports.hash = hash;
28037 }).call(this,require("buffer").Buffer)
28038 },{"buffer":5}],38:[function(require,module,exports){
28039 'use strict';
28040 /*
28041 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
28042 * Digest Algorithm, as defined in RFC 1321.
28043 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
28044 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
28045 * Distributed under the BSD License
28046 * See http://pajhome.org.uk/crypt/md5 for more info.
28047 */
28048
28049 var helpers = require('./helpers');
28050
28051 /*
28052 * Calculate the MD5 of an array of little-endian words, and a bit length
28053 */
28054 function core_md5(x, len)
28055 {
28056 /* append padding */
28057 x[len >> 5] |= 0x80 << ((len) % 32);
28058 x[(((len + 64) >>> 9) << 4) + 14] = len;
28059
28060 var a = 1732584193;
28061 var b = -271733879;
28062 var c = -1732584194;
28063 var d = 271733878;
28064
28065 for(var i = 0; i < x.length; i += 16)
28066 {
28067 var olda = a;
28068 var oldb = b;
28069 var oldc = c;
28070 var oldd = d;
28071
28072 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
28073 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
28074 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
28075 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
28076 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
28077 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
28078 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
28079 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
28080 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
28081 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
28082 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
28083 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
28084 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
28085 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
28086 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
28087 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
28088
28089 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
28090 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
28091 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
28092 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
28093 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
28094 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
28095 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
28096 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
28097 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
28098 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
28099 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
28100 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
28101 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
28102 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
28103 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
28104 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
28105
28106 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
28107 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
28108 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
28109 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
28110 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
28111 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
28112 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
28113 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
28114 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
28115 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
28116 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
28117 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
28118 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
28119 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
28120 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
28121 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
28122
28123 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
28124 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
28125 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
28126 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
28127 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
28128 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
28129 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
28130 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
28131 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
28132 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
28133 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
28134 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
28135 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
28136 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
28137 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
28138 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
28139
28140 a = safe_add(a, olda);
28141 b = safe_add(b, oldb);
28142 c = safe_add(c, oldc);
28143 d = safe_add(d, oldd);
28144 }
28145 return Array(a, b, c, d);
28146
28147 }
28148
28149 /*
28150 * These functions implement the four basic operations the algorithm uses.
28151 */
28152 function md5_cmn(q, a, b, x, s, t)
28153 {
28154 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
28155 }
28156 function md5_ff(a, b, c, d, x, s, t)
28157 {
28158 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
28159 }
28160 function md5_gg(a, b, c, d, x, s, t)
28161 {
28162 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
28163 }
28164 function md5_hh(a, b, c, d, x, s, t)
28165 {
28166 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
28167 }
28168 function md5_ii(a, b, c, d, x, s, t)
28169 {
28170 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
28171 }
28172
28173 /*
28174 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
28175 * to work around bugs in some JS interpreters.
28176 */
28177 function safe_add(x, y)
28178 {
28179 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
28180 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
28181 return (msw << 16) | (lsw & 0xFFFF);
28182 }
28183
28184 /*
28185 * Bitwise rotate a 32-bit number to the left.
28186 */
28187 function bit_rol(num, cnt)
28188 {
28189 return (num << cnt) | (num >>> (32 - cnt));
28190 }
28191
28192 module.exports = function md5(buf) {
28193 return helpers.hash(buf, core_md5, 16);
28194 };
28195 },{"./helpers":37}],39:[function(require,module,exports){
28196 'use strict';
28197
28198 var elliptic = exports;
28199
28200 elliptic.version = require('../package.json').version;
28201 elliptic.utils = require('./elliptic/utils');
28202 elliptic.rand = require('brorand');
28203 elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
28204 elliptic.curve = require('./elliptic/curve');
28205 elliptic.curves = require('./elliptic/curves');
28206
28207 // Protocols
28208 elliptic.ec = require('./elliptic/ec');
28209 elliptic.eddsa = require('./elliptic/eddsa');
28210
28211 },{"../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){
28212 'use strict';
28213
28214 var BN = require('bn.js');
28215 var elliptic = require('../../elliptic');
28216 var utils = elliptic.utils;
28217 var getNAF = utils.getNAF;
28218 var getJSF = utils.getJSF;
28219 var assert = utils.assert;
28220
28221 function BaseCurve(type, conf) {
28222 this.type = type;
28223 this.p = new BN(conf.p, 16);
28224
28225 // Use Montgomery, when there is no fast reduction for the prime
28226 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
28227
28228 // Useful for many curves
28229 this.zero = new BN(0).toRed(this.red);
28230 this.one = new BN(1).toRed(this.red);
28231 this.two = new BN(2).toRed(this.red);
28232
28233 // Curve configuration, optional
28234 this.n = conf.n && new BN(conf.n, 16);
28235 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
28236
28237 // Temporary arrays
28238 this._wnafT1 = new Array(4);
28239 this._wnafT2 = new Array(4);
28240 this._wnafT3 = new Array(4);
28241 this._wnafT4 = new Array(4);
28242
28243 // Generalized Greg Maxwell's trick
28244 var adjustCount = this.n && this.p.div(this.n);
28245 if (!adjustCount || adjustCount.cmpn(100) > 0) {
28246 this.redN = null;
28247 } else {
28248 this._maxwellTrick = true;
28249 this.redN = this.n.toRed(this.red);
28250 }
28251 }
28252 module.exports = BaseCurve;
28253
28254 BaseCurve.prototype.point = function point() {
28255 throw new Error('Not implemented');
28256 };
28257
28258 BaseCurve.prototype.validate = function validate() {
28259 throw new Error('Not implemented');
28260 };
28261
28262 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
28263 assert(p.precomputed);
28264 var doubles = p._getDoubles();
28265
28266 var naf = getNAF(k, 1);
28267 var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
28268 I /= 3;
28269
28270 // Translate into more windowed form
28271 var repr = [];
28272 for (var j = 0; j < naf.length; j += doubles.step) {
28273 var nafW = 0;
28274 for (var k = j + doubles.step - 1; k >= j; k--)
28275 nafW = (nafW << 1) + naf[k];
28276 repr.push(nafW);
28277 }
28278
28279 var a = this.jpoint(null, null, null);
28280 var b = this.jpoint(null, null, null);
28281 for (var i = I; i > 0; i--) {
28282 for (var j = 0; j < repr.length; j++) {
28283 var nafW = repr[j];
28284 if (nafW === i)
28285 b = b.mixedAdd(doubles.points[j]);
28286 else if (nafW === -i)
28287 b = b.mixedAdd(doubles.points[j].neg());
28288 }
28289 a = a.add(b);
28290 }
28291 return a.toP();
28292 };
28293
28294 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
28295 var w = 4;
28296
28297 // Precompute window
28298 var nafPoints = p._getNAFPoints(w);
28299 w = nafPoints.wnd;
28300 var wnd = nafPoints.points;
28301
28302 // Get NAF form
28303 var naf = getNAF(k, w);
28304
28305 // Add `this`*(N+1) for every w-NAF index
28306 var acc = this.jpoint(null, null, null);
28307 for (var i = naf.length - 1; i >= 0; i--) {
28308 // Count zeroes
28309 for (var k = 0; i >= 0 && naf[i] === 0; i--)
28310 k++;
28311 if (i >= 0)
28312 k++;
28313 acc = acc.dblp(k);
28314
28315 if (i < 0)
28316 break;
28317 var z = naf[i];
28318 assert(z !== 0);
28319 if (p.type === 'affine') {
28320 // J +- P
28321 if (z > 0)
28322 acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
28323 else
28324 acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
28325 } else {
28326 // J +- J
28327 if (z > 0)
28328 acc = acc.add(wnd[(z - 1) >> 1]);
28329 else
28330 acc = acc.add(wnd[(-z - 1) >> 1].neg());
28331 }
28332 }
28333 return p.type === 'affine' ? acc.toP() : acc;
28334 };
28335
28336 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
28337 points,
28338 coeffs,
28339 len,
28340 jacobianResult) {
28341 var wndWidth = this._wnafT1;
28342 var wnd = this._wnafT2;
28343 var naf = this._wnafT3;
28344
28345 // Fill all arrays
28346 var max = 0;
28347 for (var i = 0; i < len; i++) {
28348 var p = points[i];
28349 var nafPoints = p._getNAFPoints(defW);
28350 wndWidth[i] = nafPoints.wnd;
28351 wnd[i] = nafPoints.points;
28352 }
28353
28354 // Comb small window NAFs
28355 for (var i = len - 1; i >= 1; i -= 2) {
28356 var a = i - 1;
28357 var b = i;
28358 if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
28359 naf[a] = getNAF(coeffs[a], wndWidth[a]);
28360 naf[b] = getNAF(coeffs[b], wndWidth[b]);
28361 max = Math.max(naf[a].length, max);
28362 max = Math.max(naf[b].length, max);
28363 continue;
28364 }
28365
28366 var comb = [
28367 points[a], /* 1 */
28368 null, /* 3 */
28369 null, /* 5 */
28370 points[b] /* 7 */
28371 ];
28372
28373 // Try to avoid Projective points, if possible
28374 if (points[a].y.cmp(points[b].y) === 0) {
28375 comb[1] = points[a].add(points[b]);
28376 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
28377 } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
28378 comb[1] = points[a].toJ().mixedAdd(points[b]);
28379 comb[2] = points[a].add(points[b].neg());
28380 } else {
28381 comb[1] = points[a].toJ().mixedAdd(points[b]);
28382 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
28383 }
28384
28385 var index = [
28386 -3, /* -1 -1 */
28387 -1, /* -1 0 */
28388 -5, /* -1 1 */
28389 -7, /* 0 -1 */
28390 0, /* 0 0 */
28391 7, /* 0 1 */
28392 5, /* 1 -1 */
28393 1, /* 1 0 */
28394 3 /* 1 1 */
28395 ];
28396
28397 var jsf = getJSF(coeffs[a], coeffs[b]);
28398 max = Math.max(jsf[0].length, max);
28399 naf[a] = new Array(max);
28400 naf[b] = new Array(max);
28401 for (var j = 0; j < max; j++) {
28402 var ja = jsf[0][j] | 0;
28403 var jb = jsf[1][j] | 0;
28404
28405 naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
28406 naf[b][j] = 0;
28407 wnd[a] = comb;
28408 }
28409 }
28410
28411 var acc = this.jpoint(null, null, null);
28412 var tmp = this._wnafT4;
28413 for (var i = max; i >= 0; i--) {
28414 var k = 0;
28415
28416 while (i >= 0) {
28417 var zero = true;
28418 for (var j = 0; j < len; j++) {
28419 tmp[j] = naf[j][i] | 0;
28420 if (tmp[j] !== 0)
28421 zero = false;
28422 }
28423 if (!zero)
28424 break;
28425 k++;
28426 i--;
28427 }
28428 if (i >= 0)
28429 k++;
28430 acc = acc.dblp(k);
28431 if (i < 0)
28432 break;
28433
28434 for (var j = 0; j < len; j++) {
28435 var z = tmp[j];
28436 var p;
28437 if (z === 0)
28438 continue;
28439 else if (z > 0)
28440 p = wnd[j][(z - 1) >> 1];
28441 else if (z < 0)
28442 p = wnd[j][(-z - 1) >> 1].neg();
28443
28444 if (p.type === 'affine')
28445 acc = acc.mixedAdd(p);
28446 else
28447 acc = acc.add(p);
28448 }
28449 }
28450 // Zeroify references
28451 for (var i = 0; i < len; i++)
28452 wnd[i] = null;
28453
28454 if (jacobianResult)
28455 return acc;
28456 else
28457 return acc.toP();
28458 };
28459
28460 function BasePoint(curve, type) {
28461 this.curve = curve;
28462 this.type = type;
28463 this.precomputed = null;
28464 }
28465 BaseCurve.BasePoint = BasePoint;
28466
28467 BasePoint.prototype.eq = function eq(/*other*/) {
28468 throw new Error('Not implemented');
28469 };
28470
28471 BasePoint.prototype.validate = function validate() {
28472 return this.curve.validate(this);
28473 };
28474
28475 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
28476 bytes = utils.toArray(bytes, enc);
28477
28478 var len = this.p.byteLength();
28479
28480 // uncompressed, hybrid-odd, hybrid-even
28481 if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
28482 bytes.length - 1 === 2 * len) {
28483 if (bytes[0] === 0x06)
28484 assert(bytes[bytes.length - 1] % 2 === 0);
28485 else if (bytes[0] === 0x07)
28486 assert(bytes[bytes.length - 1] % 2 === 1);
28487
28488 var res = this.point(bytes.slice(1, 1 + len),
28489 bytes.slice(1 + len, 1 + 2 * len));
28490
28491 return res;
28492 } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
28493 bytes.length - 1 === len) {
28494 return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
28495 }
28496 throw new Error('Unknown point format');
28497 };
28498
28499 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
28500 return this.encode(enc, true);
28501 };
28502
28503 BasePoint.prototype._encode = function _encode(compact) {
28504 var len = this.curve.p.byteLength();
28505 var x = this.getX().toArray('be', len);
28506
28507 if (compact)
28508 return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
28509
28510 return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
28511 };
28512
28513 BasePoint.prototype.encode = function encode(enc, compact) {
28514 return utils.encode(this._encode(compact), enc);
28515 };
28516
28517 BasePoint.prototype.precompute = function precompute(power) {
28518 if (this.precomputed)
28519 return this;
28520
28521 var precomputed = {
28522 doubles: null,
28523 naf: null,
28524 beta: null
28525 };
28526 precomputed.naf = this._getNAFPoints(8);
28527 precomputed.doubles = this._getDoubles(4, power);
28528 precomputed.beta = this._getBeta();
28529 this.precomputed = precomputed;
28530
28531 return this;
28532 };
28533
28534 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
28535 if (!this.precomputed)
28536 return false;
28537
28538 var doubles = this.precomputed.doubles;
28539 if (!doubles)
28540 return false;
28541
28542 return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
28543 };
28544
28545 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
28546 if (this.precomputed && this.precomputed.doubles)
28547 return this.precomputed.doubles;
28548
28549 var doubles = [ this ];
28550 var acc = this;
28551 for (var i = 0; i < power; i += step) {
28552 for (var j = 0; j < step; j++)
28553 acc = acc.dbl();
28554 doubles.push(acc);
28555 }
28556 return {
28557 step: step,
28558 points: doubles
28559 };
28560 };
28561
28562 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
28563 if (this.precomputed && this.precomputed.naf)
28564 return this.precomputed.naf;
28565
28566 var res = [ this ];
28567 var max = (1 << wnd) - 1;
28568 var dbl = max === 1 ? null : this.dbl();
28569 for (var i = 1; i < max; i++)
28570 res[i] = res[i - 1].add(dbl);
28571 return {
28572 wnd: wnd,
28573 points: res
28574 };
28575 };
28576
28577 BasePoint.prototype._getBeta = function _getBeta() {
28578 return null;
28579 };
28580
28581 BasePoint.prototype.dblp = function dblp(k) {
28582 var r = this;
28583 for (var i = 0; i < k; i++)
28584 r = r.dbl();
28585 return r;
28586 };
28587
28588 },{"../../elliptic":39,"bn.js":33}],41:[function(require,module,exports){
28589 'use strict';
28590
28591 var curve = require('../curve');
28592 var elliptic = require('../../elliptic');
28593 var BN = require('bn.js');
28594 var inherits = require('inherits');
28595 var Base = curve.base;
28596
28597 var assert = elliptic.utils.assert;
28598
28599 function EdwardsCurve(conf) {
28600 // NOTE: Important as we are creating point in Base.call()
28601 this.twisted = (conf.a | 0) !== 1;
28602 this.mOneA = this.twisted && (conf.a | 0) === -1;
28603 this.extended = this.mOneA;
28604
28605 Base.call(this, 'edwards', conf);
28606
28607 this.a = new BN(conf.a, 16).umod(this.red.m);
28608 this.a = this.a.toRed(this.red);
28609 this.c = new BN(conf.c, 16).toRed(this.red);
28610 this.c2 = this.c.redSqr();
28611 this.d = new BN(conf.d, 16).toRed(this.red);
28612 this.dd = this.d.redAdd(this.d);
28613
28614 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
28615 this.oneC = (conf.c | 0) === 1;
28616 }
28617 inherits(EdwardsCurve, Base);
28618 module.exports = EdwardsCurve;
28619
28620 EdwardsCurve.prototype._mulA = function _mulA(num) {
28621 if (this.mOneA)
28622 return num.redNeg();
28623 else
28624 return this.a.redMul(num);
28625 };
28626
28627 EdwardsCurve.prototype._mulC = function _mulC(num) {
28628 if (this.oneC)
28629 return num;
28630 else
28631 return this.c.redMul(num);
28632 };
28633
28634 // Just for compatibility with Short curve
28635 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
28636 return this.point(x, y, z, t);
28637 };
28638
28639 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
28640 x = new BN(x, 16);
28641 if (!x.red)
28642 x = x.toRed(this.red);
28643
28644 var x2 = x.redSqr();
28645 var rhs = this.c2.redSub(this.a.redMul(x2));
28646 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
28647
28648 var y2 = rhs.redMul(lhs.redInvm());
28649 var y = y2.redSqrt();
28650 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
28651 throw new Error('invalid point');
28652
28653 var isOdd = y.fromRed().isOdd();
28654 if (odd && !isOdd || !odd && isOdd)
28655 y = y.redNeg();
28656
28657 return this.point(x, y);
28658 };
28659
28660 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
28661 y = new BN(y, 16);
28662 if (!y.red)
28663 y = y.toRed(this.red);
28664
28665 // x^2 = (y^2 - 1) / (d y^2 + 1)
28666 var y2 = y.redSqr();
28667 var lhs = y2.redSub(this.one);
28668 var rhs = y2.redMul(this.d).redAdd(this.one);
28669 var x2 = lhs.redMul(rhs.redInvm());
28670
28671 if (x2.cmp(this.zero) === 0) {
28672 if (odd)
28673 throw new Error('invalid point');
28674 else
28675 return this.point(this.zero, y);
28676 }
28677
28678 var x = x2.redSqrt();
28679 if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
28680 throw new Error('invalid point');
28681
28682 if (x.isOdd() !== odd)
28683 x = x.redNeg();
28684
28685 return this.point(x, y);
28686 };
28687
28688 EdwardsCurve.prototype.validate = function validate(point) {
28689 if (point.isInfinity())
28690 return true;
28691
28692 // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
28693 point.normalize();
28694
28695 var x2 = point.x.redSqr();
28696 var y2 = point.y.redSqr();
28697 var lhs = x2.redMul(this.a).redAdd(y2);
28698 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
28699
28700 return lhs.cmp(rhs) === 0;
28701 };
28702
28703 function Point(curve, x, y, z, t) {
28704 Base.BasePoint.call(this, curve, 'projective');
28705 if (x === null && y === null && z === null) {
28706 this.x = this.curve.zero;
28707 this.y = this.curve.one;
28708 this.z = this.curve.one;
28709 this.t = this.curve.zero;
28710 this.zOne = true;
28711 } else {
28712 this.x = new BN(x, 16);
28713 this.y = new BN(y, 16);
28714 this.z = z ? new BN(z, 16) : this.curve.one;
28715 this.t = t && new BN(t, 16);
28716 if (!this.x.red)
28717 this.x = this.x.toRed(this.curve.red);
28718 if (!this.y.red)
28719 this.y = this.y.toRed(this.curve.red);
28720 if (!this.z.red)
28721 this.z = this.z.toRed(this.curve.red);
28722 if (this.t && !this.t.red)
28723 this.t = this.t.toRed(this.curve.red);
28724 this.zOne = this.z === this.curve.one;
28725
28726 // Use extended coordinates
28727 if (this.curve.extended && !this.t) {
28728 this.t = this.x.redMul(this.y);
28729 if (!this.zOne)
28730 this.t = this.t.redMul(this.z.redInvm());
28731 }
28732 }
28733 }
28734 inherits(Point, Base.BasePoint);
28735
28736 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
28737 return Point.fromJSON(this, obj);
28738 };
28739
28740 EdwardsCurve.prototype.point = function point(x, y, z, t) {
28741 return new Point(this, x, y, z, t);
28742 };
28743
28744 Point.fromJSON = function fromJSON(curve, obj) {
28745 return new Point(curve, obj[0], obj[1], obj[2]);
28746 };
28747
28748 Point.prototype.inspect = function inspect() {
28749 if (this.isInfinity())
28750 return '<EC Point Infinity>';
28751 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
28752 ' y: ' + this.y.fromRed().toString(16, 2) +
28753 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
28754 };
28755
28756 Point.prototype.isInfinity = function isInfinity() {
28757 // XXX This code assumes that zero is always zero in red
28758 return this.x.cmpn(0) === 0 &&
28759 this.y.cmp(this.z) === 0;
28760 };
28761
28762 Point.prototype._extDbl = function _extDbl() {
28763 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
28764 // #doubling-dbl-2008-hwcd
28765 // 4M + 4S
28766
28767 // A = X1^2
28768 var a = this.x.redSqr();
28769 // B = Y1^2
28770 var b = this.y.redSqr();
28771 // C = 2 * Z1^2
28772 var c = this.z.redSqr();
28773 c = c.redIAdd(c);
28774 // D = a * A
28775 var d = this.curve._mulA(a);
28776 // E = (X1 + Y1)^2 - A - B
28777 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
28778 // G = D + B
28779 var g = d.redAdd(b);
28780 // F = G - C
28781 var f = g.redSub(c);
28782 // H = D - B
28783 var h = d.redSub(b);
28784 // X3 = E * F
28785 var nx = e.redMul(f);
28786 // Y3 = G * H
28787 var ny = g.redMul(h);
28788 // T3 = E * H
28789 var nt = e.redMul(h);
28790 // Z3 = F * G
28791 var nz = f.redMul(g);
28792 return this.curve.point(nx, ny, nz, nt);
28793 };
28794
28795 Point.prototype._projDbl = function _projDbl() {
28796 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
28797 // #doubling-dbl-2008-bbjlp
28798 // #doubling-dbl-2007-bl
28799 // and others
28800 // Generally 3M + 4S or 2M + 4S
28801
28802 // B = (X1 + Y1)^2
28803 var b = this.x.redAdd(this.y).redSqr();
28804 // C = X1^2
28805 var c = this.x.redSqr();
28806 // D = Y1^2
28807 var d = this.y.redSqr();
28808
28809 var nx;
28810 var ny;
28811 var nz;
28812 if (this.curve.twisted) {
28813 // E = a * C
28814 var e = this.curve._mulA(c);
28815 // F = E + D
28816 var f = e.redAdd(d);
28817 if (this.zOne) {
28818 // X3 = (B - C - D) * (F - 2)
28819 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
28820 // Y3 = F * (E - D)
28821 ny = f.redMul(e.redSub(d));
28822 // Z3 = F^2 - 2 * F
28823 nz = f.redSqr().redSub(f).redSub(f);
28824 } else {
28825 // H = Z1^2
28826 var h = this.z.redSqr();
28827 // J = F - 2 * H
28828 var j = f.redSub(h).redISub(h);
28829 // X3 = (B-C-D)*J
28830 nx = b.redSub(c).redISub(d).redMul(j);
28831 // Y3 = F * (E - D)
28832 ny = f.redMul(e.redSub(d));
28833 // Z3 = F * J
28834 nz = f.redMul(j);
28835 }
28836 } else {
28837 // E = C + D
28838 var e = c.redAdd(d);
28839 // H = (c * Z1)^2
28840 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
28841 // J = E - 2 * H
28842 var j = e.redSub(h).redSub(h);
28843 // X3 = c * (B - E) * J
28844 nx = this.curve._mulC(b.redISub(e)).redMul(j);
28845 // Y3 = c * E * (C - D)
28846 ny = this.curve._mulC(e).redMul(c.redISub(d));
28847 // Z3 = E * J
28848 nz = e.redMul(j);
28849 }
28850 return this.curve.point(nx, ny, nz);
28851 };
28852
28853 Point.prototype.dbl = function dbl() {
28854 if (this.isInfinity())
28855 return this;
28856
28857 // Double in extended coordinates
28858 if (this.curve.extended)
28859 return this._extDbl();
28860 else
28861 return this._projDbl();
28862 };
28863
28864 Point.prototype._extAdd = function _extAdd(p) {
28865 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
28866 // #addition-add-2008-hwcd-3
28867 // 8M
28868
28869 // A = (Y1 - X1) * (Y2 - X2)
28870 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
28871 // B = (Y1 + X1) * (Y2 + X2)
28872 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
28873 // C = T1 * k * T2
28874 var c = this.t.redMul(this.curve.dd).redMul(p.t);
28875 // D = Z1 * 2 * Z2
28876 var d = this.z.redMul(p.z.redAdd(p.z));
28877 // E = B - A
28878 var e = b.redSub(a);
28879 // F = D - C
28880 var f = d.redSub(c);
28881 // G = D + C
28882 var g = d.redAdd(c);
28883 // H = B + A
28884 var h = b.redAdd(a);
28885 // X3 = E * F
28886 var nx = e.redMul(f);
28887 // Y3 = G * H
28888 var ny = g.redMul(h);
28889 // T3 = E * H
28890 var nt = e.redMul(h);
28891 // Z3 = F * G
28892 var nz = f.redMul(g);
28893 return this.curve.point(nx, ny, nz, nt);
28894 };
28895
28896 Point.prototype._projAdd = function _projAdd(p) {
28897 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
28898 // #addition-add-2008-bbjlp
28899 // #addition-add-2007-bl
28900 // 10M + 1S
28901
28902 // A = Z1 * Z2
28903 var a = this.z.redMul(p.z);
28904 // B = A^2
28905 var b = a.redSqr();
28906 // C = X1 * X2
28907 var c = this.x.redMul(p.x);
28908 // D = Y1 * Y2
28909 var d = this.y.redMul(p.y);
28910 // E = d * C * D
28911 var e = this.curve.d.redMul(c).redMul(d);
28912 // F = B - E
28913 var f = b.redSub(e);
28914 // G = B + E
28915 var g = b.redAdd(e);
28916 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
28917 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
28918 var nx = a.redMul(f).redMul(tmp);
28919 var ny;
28920 var nz;
28921 if (this.curve.twisted) {
28922 // Y3 = A * G * (D - a * C)
28923 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
28924 // Z3 = F * G
28925 nz = f.redMul(g);
28926 } else {
28927 // Y3 = A * G * (D - C)
28928 ny = a.redMul(g).redMul(d.redSub(c));
28929 // Z3 = c * F * G
28930 nz = this.curve._mulC(f).redMul(g);
28931 }
28932 return this.curve.point(nx, ny, nz);
28933 };
28934
28935 Point.prototype.add = function add(p) {
28936 if (this.isInfinity())
28937 return p;
28938 if (p.isInfinity())
28939 return this;
28940
28941 if (this.curve.extended)
28942 return this._extAdd(p);
28943 else
28944 return this._projAdd(p);
28945 };
28946
28947 Point.prototype.mul = function mul(k) {
28948 if (this._hasDoubles(k))
28949 return this.curve._fixedNafMul(this, k);
28950 else
28951 return this.curve._wnafMul(this, k);
28952 };
28953
28954 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
28955 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
28956 };
28957
28958 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
28959 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
28960 };
28961
28962 Point.prototype.normalize = function normalize() {
28963 if (this.zOne)
28964 return this;
28965
28966 // Normalize coordinates
28967 var zi = this.z.redInvm();
28968 this.x = this.x.redMul(zi);
28969 this.y = this.y.redMul(zi);
28970 if (this.t)
28971 this.t = this.t.redMul(zi);
28972 this.z = this.curve.one;
28973 this.zOne = true;
28974 return this;
28975 };
28976
28977 Point.prototype.neg = function neg() {
28978 return this.curve.point(this.x.redNeg(),
28979 this.y,
28980 this.z,
28981 this.t && this.t.redNeg());
28982 };
28983
28984 Point.prototype.getX = function getX() {
28985 this.normalize();
28986 return this.x.fromRed();
28987 };
28988
28989 Point.prototype.getY = function getY() {
28990 this.normalize();
28991 return this.y.fromRed();
28992 };
28993
28994 Point.prototype.eq = function eq(other) {
28995 return this === other ||
28996 this.getX().cmp(other.getX()) === 0 &&
28997 this.getY().cmp(other.getY()) === 0;
28998 };
28999
29000 Point.prototype.eqXToP = function eqXToP(x) {
29001 var rx = x.toRed(this.curve.red).redMul(this.z);
29002 if (this.x.cmp(rx) === 0)
29003 return true;
29004
29005 var xc = x.clone();
29006 var t = this.curve.redN.redMul(this.z);
29007 for (;;) {
29008 xc.iadd(this.curve.n);
29009 if (xc.cmp(this.curve.p) >= 0)
29010 return false;
29011
29012 rx.redIAdd(t);
29013 if (this.x.cmp(rx) === 0)
29014 return true;
29015 }
29016 return false;
29017 };
29018
29019 // Compatibility with BaseCurve
29020 Point.prototype.toP = Point.prototype.normalize;
29021 Point.prototype.mixedAdd = Point.prototype.add;
29022
29023 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],42:[function(require,module,exports){
29024 'use strict';
29025
29026 var curve = exports;
29027
29028 curve.base = require('./base');
29029 curve.short = require('./short');
29030 curve.mont = require('./mont');
29031 curve.edwards = require('./edwards');
29032
29033 },{"./base":40,"./edwards":41,"./mont":43,"./short":44}],43:[function(require,module,exports){
29034 'use strict';
29035
29036 var curve = require('../curve');
29037 var BN = require('bn.js');
29038 var inherits = require('inherits');
29039 var Base = curve.base;
29040
29041 var elliptic = require('../../elliptic');
29042 var utils = elliptic.utils;
29043
29044 function MontCurve(conf) {
29045 Base.call(this, 'mont', conf);
29046
29047 this.a = new BN(conf.a, 16).toRed(this.red);
29048 this.b = new BN(conf.b, 16).toRed(this.red);
29049 this.i4 = new BN(4).toRed(this.red).redInvm();
29050 this.two = new BN(2).toRed(this.red);
29051 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
29052 }
29053 inherits(MontCurve, Base);
29054 module.exports = MontCurve;
29055
29056 MontCurve.prototype.validate = function validate(point) {
29057 var x = point.normalize().x;
29058 var x2 = x.redSqr();
29059 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
29060 var y = rhs.redSqrt();
29061
29062 return y.redSqr().cmp(rhs) === 0;
29063 };
29064
29065 function Point(curve, x, z) {
29066 Base.BasePoint.call(this, curve, 'projective');
29067 if (x === null && z === null) {
29068 this.x = this.curve.one;
29069 this.z = this.curve.zero;
29070 } else {
29071 this.x = new BN(x, 16);
29072 this.z = new BN(z, 16);
29073 if (!this.x.red)
29074 this.x = this.x.toRed(this.curve.red);
29075 if (!this.z.red)
29076 this.z = this.z.toRed(this.curve.red);
29077 }
29078 }
29079 inherits(Point, Base.BasePoint);
29080
29081 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
29082 return this.point(utils.toArray(bytes, enc), 1);
29083 };
29084
29085 MontCurve.prototype.point = function point(x, z) {
29086 return new Point(this, x, z);
29087 };
29088
29089 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
29090 return Point.fromJSON(this, obj);
29091 };
29092
29093 Point.prototype.precompute = function precompute() {
29094 // No-op
29095 };
29096
29097 Point.prototype._encode = function _encode() {
29098 return this.getX().toArray('be', this.curve.p.byteLength());
29099 };
29100
29101 Point.fromJSON = function fromJSON(curve, obj) {
29102 return new Point(curve, obj[0], obj[1] || curve.one);
29103 };
29104
29105 Point.prototype.inspect = function inspect() {
29106 if (this.isInfinity())
29107 return '<EC Point Infinity>';
29108 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
29109 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
29110 };
29111
29112 Point.prototype.isInfinity = function isInfinity() {
29113 // XXX This code assumes that zero is always zero in red
29114 return this.z.cmpn(0) === 0;
29115 };
29116
29117 Point.prototype.dbl = function dbl() {
29118 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
29119 // 2M + 2S + 4A
29120
29121 // A = X1 + Z1
29122 var a = this.x.redAdd(this.z);
29123 // AA = A^2
29124 var aa = a.redSqr();
29125 // B = X1 - Z1
29126 var b = this.x.redSub(this.z);
29127 // BB = B^2
29128 var bb = b.redSqr();
29129 // C = AA - BB
29130 var c = aa.redSub(bb);
29131 // X3 = AA * BB
29132 var nx = aa.redMul(bb);
29133 // Z3 = C * (BB + A24 * C)
29134 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
29135 return this.curve.point(nx, nz);
29136 };
29137
29138 Point.prototype.add = function add() {
29139 throw new Error('Not supported on Montgomery curve');
29140 };
29141
29142 Point.prototype.diffAdd = function diffAdd(p, diff) {
29143 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
29144 // 4M + 2S + 6A
29145
29146 // A = X2 + Z2
29147 var a = this.x.redAdd(this.z);
29148 // B = X2 - Z2
29149 var b = this.x.redSub(this.z);
29150 // C = X3 + Z3
29151 var c = p.x.redAdd(p.z);
29152 // D = X3 - Z3
29153 var d = p.x.redSub(p.z);
29154 // DA = D * A
29155 var da = d.redMul(a);
29156 // CB = C * B
29157 var cb = c.redMul(b);
29158 // X5 = Z1 * (DA + CB)^2
29159 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
29160 // Z5 = X1 * (DA - CB)^2
29161 var nz = diff.x.redMul(da.redISub(cb).redSqr());
29162 return this.curve.point(nx, nz);
29163 };
29164
29165 Point.prototype.mul = function mul(k) {
29166 var t = k.clone();
29167 var a = this; // (N / 2) * Q + Q
29168 var b = this.curve.point(null, null); // (N / 2) * Q
29169 var c = this; // Q
29170
29171 for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
29172 bits.push(t.andln(1));
29173
29174 for (var i = bits.length - 1; i >= 0; i--) {
29175 if (bits[i] === 0) {
29176 // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
29177 a = a.diffAdd(b, c);
29178 // N * Q = 2 * ((N / 2) * Q + Q))
29179 b = b.dbl();
29180 } else {
29181 // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
29182 b = a.diffAdd(b, c);
29183 // N * Q + Q = 2 * ((N / 2) * Q + Q)
29184 a = a.dbl();
29185 }
29186 }
29187 return b;
29188 };
29189
29190 Point.prototype.mulAdd = function mulAdd() {
29191 throw new Error('Not supported on Montgomery curve');
29192 };
29193
29194 Point.prototype.jumlAdd = function jumlAdd() {
29195 throw new Error('Not supported on Montgomery curve');
29196 };
29197
29198 Point.prototype.eq = function eq(other) {
29199 return this.getX().cmp(other.getX()) === 0;
29200 };
29201
29202 Point.prototype.normalize = function normalize() {
29203 this.x = this.x.redMul(this.z.redInvm());
29204 this.z = this.curve.one;
29205 return this;
29206 };
29207
29208 Point.prototype.getX = function getX() {
29209 // Normalize coordinates
29210 this.normalize();
29211
29212 return this.x.fromRed();
29213 };
29214
29215 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],44:[function(require,module,exports){
29216 'use strict';
29217
29218 var curve = require('../curve');
29219 var elliptic = require('../../elliptic');
29220 var BN = require('bn.js');
29221 var inherits = require('inherits');
29222 var Base = curve.base;
29223
29224 var assert = elliptic.utils.assert;
29225
29226 function ShortCurve(conf) {
29227 Base.call(this, 'short', conf);
29228
29229 this.a = new BN(conf.a, 16).toRed(this.red);
29230 this.b = new BN(conf.b, 16).toRed(this.red);
29231 this.tinv = this.two.redInvm();
29232
29233 this.zeroA = this.a.fromRed().cmpn(0) === 0;
29234 this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
29235
29236 // If the curve is endomorphic, precalculate beta and lambda
29237 this.endo = this._getEndomorphism(conf);
29238 this._endoWnafT1 = new Array(4);
29239 this._endoWnafT2 = new Array(4);
29240 }
29241 inherits(ShortCurve, Base);
29242 module.exports = ShortCurve;
29243
29244 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
29245 // No efficient endomorphism
29246 if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
29247 return;
29248
29249 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
29250 var beta;
29251 var lambda;
29252 if (conf.beta) {
29253 beta = new BN(conf.beta, 16).toRed(this.red);
29254 } else {
29255 var betas = this._getEndoRoots(this.p);
29256 // Choose the smallest beta
29257 beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
29258 beta = beta.toRed(this.red);
29259 }
29260 if (conf.lambda) {
29261 lambda = new BN(conf.lambda, 16);
29262 } else {
29263 // Choose the lambda that is matching selected beta
29264 var lambdas = this._getEndoRoots(this.n);
29265 if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
29266 lambda = lambdas[0];
29267 } else {
29268 lambda = lambdas[1];
29269 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
29270 }
29271 }
29272
29273 // Get basis vectors, used for balanced length-two representation
29274 var basis;
29275 if (conf.basis) {
29276 basis = conf.basis.map(function(vec) {
29277 return {
29278 a: new BN(vec.a, 16),
29279 b: new BN(vec.b, 16)
29280 };
29281 });
29282 } else {
29283 basis = this._getEndoBasis(lambda);
29284 }
29285
29286 return {
29287 beta: beta,
29288 lambda: lambda,
29289 basis: basis
29290 };
29291 };
29292
29293 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
29294 // Find roots of for x^2 + x + 1 in F
29295 // Root = (-1 +- Sqrt(-3)) / 2
29296 //
29297 var red = num === this.p ? this.red : BN.mont(num);
29298 var tinv = new BN(2).toRed(red).redInvm();
29299 var ntinv = tinv.redNeg();
29300
29301 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
29302
29303 var l1 = ntinv.redAdd(s).fromRed();
29304 var l2 = ntinv.redSub(s).fromRed();
29305 return [ l1, l2 ];
29306 };
29307
29308 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
29309 // aprxSqrt >= sqrt(this.n)
29310 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
29311
29312 // 3.74
29313 // Run EGCD, until r(L + 1) < aprxSqrt
29314 var u = lambda;
29315 var v = this.n.clone();
29316 var x1 = new BN(1);
29317 var y1 = new BN(0);
29318 var x2 = new BN(0);
29319 var y2 = new BN(1);
29320
29321 // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
29322 var a0;
29323 var b0;
29324 // First vector
29325 var a1;
29326 var b1;
29327 // Second vector
29328 var a2;
29329 var b2;
29330
29331 var prevR;
29332 var i = 0;
29333 var r;
29334 var x;
29335 while (u.cmpn(0) !== 0) {
29336 var q = v.div(u);
29337 r = v.sub(q.mul(u));
29338 x = x2.sub(q.mul(x1));
29339 var y = y2.sub(q.mul(y1));
29340
29341 if (!a1 && r.cmp(aprxSqrt) < 0) {
29342 a0 = prevR.neg();
29343 b0 = x1;
29344 a1 = r.neg();
29345 b1 = x;
29346 } else if (a1 && ++i === 2) {
29347 break;
29348 }
29349 prevR = r;
29350
29351 v = u;
29352 u = r;
29353 x2 = x1;
29354 x1 = x;
29355 y2 = y1;
29356 y1 = y;
29357 }
29358 a2 = r.neg();
29359 b2 = x;
29360
29361 var len1 = a1.sqr().add(b1.sqr());
29362 var len2 = a2.sqr().add(b2.sqr());
29363 if (len2.cmp(len1) >= 0) {
29364 a2 = a0;
29365 b2 = b0;
29366 }
29367
29368 // Normalize signs
29369 if (a1.negative) {
29370 a1 = a1.neg();
29371 b1 = b1.neg();
29372 }
29373 if (a2.negative) {
29374 a2 = a2.neg();
29375 b2 = b2.neg();
29376 }
29377
29378 return [
29379 { a: a1, b: b1 },
29380 { a: a2, b: b2 }
29381 ];
29382 };
29383
29384 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
29385 var basis = this.endo.basis;
29386 var v1 = basis[0];
29387 var v2 = basis[1];
29388
29389 var c1 = v2.b.mul(k).divRound(this.n);
29390 var c2 = v1.b.neg().mul(k).divRound(this.n);
29391
29392 var p1 = c1.mul(v1.a);
29393 var p2 = c2.mul(v2.a);
29394 var q1 = c1.mul(v1.b);
29395 var q2 = c2.mul(v2.b);
29396
29397 // Calculate answer
29398 var k1 = k.sub(p1).sub(p2);
29399 var k2 = q1.add(q2).neg();
29400 return { k1: k1, k2: k2 };
29401 };
29402
29403 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
29404 x = new BN(x, 16);
29405 if (!x.red)
29406 x = x.toRed(this.red);
29407
29408 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
29409 var y = y2.redSqrt();
29410 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
29411 throw new Error('invalid point');
29412
29413 // XXX Is there any way to tell if the number is odd without converting it
29414 // to non-red form?
29415 var isOdd = y.fromRed().isOdd();
29416 if (odd && !isOdd || !odd && isOdd)
29417 y = y.redNeg();
29418
29419 return this.point(x, y);
29420 };
29421
29422 ShortCurve.prototype.validate = function validate(point) {
29423 if (point.inf)
29424 return true;
29425
29426 var x = point.x;
29427 var y = point.y;
29428
29429 var ax = this.a.redMul(x);
29430 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
29431 return y.redSqr().redISub(rhs).cmpn(0) === 0;
29432 };
29433
29434 ShortCurve.prototype._endoWnafMulAdd =
29435 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
29436 var npoints = this._endoWnafT1;
29437 var ncoeffs = this._endoWnafT2;
29438 for (var i = 0; i < points.length; i++) {
29439 var split = this._endoSplit(coeffs[i]);
29440 var p = points[i];
29441 var beta = p._getBeta();
29442
29443 if (split.k1.negative) {
29444 split.k1.ineg();
29445 p = p.neg(true);
29446 }
29447 if (split.k2.negative) {
29448 split.k2.ineg();
29449 beta = beta.neg(true);
29450 }
29451
29452 npoints[i * 2] = p;
29453 npoints[i * 2 + 1] = beta;
29454 ncoeffs[i * 2] = split.k1;
29455 ncoeffs[i * 2 + 1] = split.k2;
29456 }
29457 var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
29458
29459 // Clean-up references to points and coefficients
29460 for (var j = 0; j < i * 2; j++) {
29461 npoints[j] = null;
29462 ncoeffs[j] = null;
29463 }
29464 return res;
29465 };
29466
29467 function Point(curve, x, y, isRed) {
29468 Base.BasePoint.call(this, curve, 'affine');
29469 if (x === null && y === null) {
29470 this.x = null;
29471 this.y = null;
29472 this.inf = true;
29473 } else {
29474 this.x = new BN(x, 16);
29475 this.y = new BN(y, 16);
29476 // Force redgomery representation when loading from JSON
29477 if (isRed) {
29478 this.x.forceRed(this.curve.red);
29479 this.y.forceRed(this.curve.red);
29480 }
29481 if (!this.x.red)
29482 this.x = this.x.toRed(this.curve.red);
29483 if (!this.y.red)
29484 this.y = this.y.toRed(this.curve.red);
29485 this.inf = false;
29486 }
29487 }
29488 inherits(Point, Base.BasePoint);
29489
29490 ShortCurve.prototype.point = function point(x, y, isRed) {
29491 return new Point(this, x, y, isRed);
29492 };
29493
29494 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
29495 return Point.fromJSON(this, obj, red);
29496 };
29497
29498 Point.prototype._getBeta = function _getBeta() {
29499 if (!this.curve.endo)
29500 return;
29501
29502 var pre = this.precomputed;
29503 if (pre && pre.beta)
29504 return pre.beta;
29505
29506 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
29507 if (pre) {
29508 var curve = this.curve;
29509 var endoMul = function(p) {
29510 return curve.point(p.x.redMul(curve.endo.beta), p.y);
29511 };
29512 pre.beta = beta;
29513 beta.precomputed = {
29514 beta: null,
29515 naf: pre.naf && {
29516 wnd: pre.naf.wnd,
29517 points: pre.naf.points.map(endoMul)
29518 },
29519 doubles: pre.doubles && {
29520 step: pre.doubles.step,
29521 points: pre.doubles.points.map(endoMul)
29522 }
29523 };
29524 }
29525 return beta;
29526 };
29527
29528 Point.prototype.toJSON = function toJSON() {
29529 if (!this.precomputed)
29530 return [ this.x, this.y ];
29531
29532 return [ this.x, this.y, this.precomputed && {
29533 doubles: this.precomputed.doubles && {
29534 step: this.precomputed.doubles.step,
29535 points: this.precomputed.doubles.points.slice(1)
29536 },
29537 naf: this.precomputed.naf && {
29538 wnd: this.precomputed.naf.wnd,
29539 points: this.precomputed.naf.points.slice(1)
29540 }
29541 } ];
29542 };
29543
29544 Point.fromJSON = function fromJSON(curve, obj, red) {
29545 if (typeof obj === 'string')
29546 obj = JSON.parse(obj);
29547 var res = curve.point(obj[0], obj[1], red);
29548 if (!obj[2])
29549 return res;
29550
29551 function obj2point(obj) {
29552 return curve.point(obj[0], obj[1], red);
29553 }
29554
29555 var pre = obj[2];
29556 res.precomputed = {
29557 beta: null,
29558 doubles: pre.doubles && {
29559 step: pre.doubles.step,
29560 points: [ res ].concat(pre.doubles.points.map(obj2point))
29561 },
29562 naf: pre.naf && {
29563 wnd: pre.naf.wnd,
29564 points: [ res ].concat(pre.naf.points.map(obj2point))
29565 }
29566 };
29567 return res;
29568 };
29569
29570 Point.prototype.inspect = function inspect() {
29571 if (this.isInfinity())
29572 return '<EC Point Infinity>';
29573 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
29574 ' y: ' + this.y.fromRed().toString(16, 2) + '>';
29575 };
29576
29577 Point.prototype.isInfinity = function isInfinity() {
29578 return this.inf;
29579 };
29580
29581 Point.prototype.add = function add(p) {
29582 // O + P = P
29583 if (this.inf)
29584 return p;
29585
29586 // P + O = P
29587 if (p.inf)
29588 return this;
29589
29590 // P + P = 2P
29591 if (this.eq(p))
29592 return this.dbl();
29593
29594 // P + (-P) = O
29595 if (this.neg().eq(p))
29596 return this.curve.point(null, null);
29597
29598 // P + Q = O
29599 if (this.x.cmp(p.x) === 0)
29600 return this.curve.point(null, null);
29601
29602 var c = this.y.redSub(p.y);
29603 if (c.cmpn(0) !== 0)
29604 c = c.redMul(this.x.redSub(p.x).redInvm());
29605 var nx = c.redSqr().redISub(this.x).redISub(p.x);
29606 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
29607 return this.curve.point(nx, ny);
29608 };
29609
29610 Point.prototype.dbl = function dbl() {
29611 if (this.inf)
29612 return this;
29613
29614 // 2P = O
29615 var ys1 = this.y.redAdd(this.y);
29616 if (ys1.cmpn(0) === 0)
29617 return this.curve.point(null, null);
29618
29619 var a = this.curve.a;
29620
29621 var x2 = this.x.redSqr();
29622 var dyinv = ys1.redInvm();
29623 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
29624
29625 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
29626 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
29627 return this.curve.point(nx, ny);
29628 };
29629
29630 Point.prototype.getX = function getX() {
29631 return this.x.fromRed();
29632 };
29633
29634 Point.prototype.getY = function getY() {
29635 return this.y.fromRed();
29636 };
29637
29638 Point.prototype.mul = function mul(k) {
29639 k = new BN(k, 16);
29640
29641 if (this._hasDoubles(k))
29642 return this.curve._fixedNafMul(this, k);
29643 else if (this.curve.endo)
29644 return this.curve._endoWnafMulAdd([ this ], [ k ]);
29645 else
29646 return this.curve._wnafMul(this, k);
29647 };
29648
29649 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
29650 var points = [ this, p2 ];
29651 var coeffs = [ k1, k2 ];
29652 if (this.curve.endo)
29653 return this.curve._endoWnafMulAdd(points, coeffs);
29654 else
29655 return this.curve._wnafMulAdd(1, points, coeffs, 2);
29656 };
29657
29658 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
29659 var points = [ this, p2 ];
29660 var coeffs = [ k1, k2 ];
29661 if (this.curve.endo)
29662 return this.curve._endoWnafMulAdd(points, coeffs, true);
29663 else
29664 return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
29665 };
29666
29667 Point.prototype.eq = function eq(p) {
29668 return this === p ||
29669 this.inf === p.inf &&
29670 (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
29671 };
29672
29673 Point.prototype.neg = function neg(_precompute) {
29674 if (this.inf)
29675 return this;
29676
29677 var res = this.curve.point(this.x, this.y.redNeg());
29678 if (_precompute && this.precomputed) {
29679 var pre = this.precomputed;
29680 var negate = function(p) {
29681 return p.neg();
29682 };
29683 res.precomputed = {
29684 naf: pre.naf && {
29685 wnd: pre.naf.wnd,
29686 points: pre.naf.points.map(negate)
29687 },
29688 doubles: pre.doubles && {
29689 step: pre.doubles.step,
29690 points: pre.doubles.points.map(negate)
29691 }
29692 };
29693 }
29694 return res;
29695 };
29696
29697 Point.prototype.toJ = function toJ() {
29698 if (this.inf)
29699 return this.curve.jpoint(null, null, null);
29700
29701 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
29702 return res;
29703 };
29704
29705 function JPoint(curve, x, y, z) {
29706 Base.BasePoint.call(this, curve, 'jacobian');
29707 if (x === null && y === null && z === null) {
29708 this.x = this.curve.one;
29709 this.y = this.curve.one;
29710 this.z = new BN(0);
29711 } else {
29712 this.x = new BN(x, 16);
29713 this.y = new BN(y, 16);
29714 this.z = new BN(z, 16);
29715 }
29716 if (!this.x.red)
29717 this.x = this.x.toRed(this.curve.red);
29718 if (!this.y.red)
29719 this.y = this.y.toRed(this.curve.red);
29720 if (!this.z.red)
29721 this.z = this.z.toRed(this.curve.red);
29722
29723 this.zOne = this.z === this.curve.one;
29724 }
29725 inherits(JPoint, Base.BasePoint);
29726
29727 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
29728 return new JPoint(this, x, y, z);
29729 };
29730
29731 JPoint.prototype.toP = function toP() {
29732 if (this.isInfinity())
29733 return this.curve.point(null, null);
29734
29735 var zinv = this.z.redInvm();
29736 var zinv2 = zinv.redSqr();
29737 var ax = this.x.redMul(zinv2);
29738 var ay = this.y.redMul(zinv2).redMul(zinv);
29739
29740 return this.curve.point(ax, ay);
29741 };
29742
29743 JPoint.prototype.neg = function neg() {
29744 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
29745 };
29746
29747 JPoint.prototype.add = function add(p) {
29748 // O + P = P
29749 if (this.isInfinity())
29750 return p;
29751
29752 // P + O = P
29753 if (p.isInfinity())
29754 return this;
29755
29756 // 12M + 4S + 7A
29757 var pz2 = p.z.redSqr();
29758 var z2 = this.z.redSqr();
29759 var u1 = this.x.redMul(pz2);
29760 var u2 = p.x.redMul(z2);
29761 var s1 = this.y.redMul(pz2.redMul(p.z));
29762 var s2 = p.y.redMul(z2.redMul(this.z));
29763
29764 var h = u1.redSub(u2);
29765 var r = s1.redSub(s2);
29766 if (h.cmpn(0) === 0) {
29767 if (r.cmpn(0) !== 0)
29768 return this.curve.jpoint(null, null, null);
29769 else
29770 return this.dbl();
29771 }
29772
29773 var h2 = h.redSqr();
29774 var h3 = h2.redMul(h);
29775 var v = u1.redMul(h2);
29776
29777 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
29778 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
29779 var nz = this.z.redMul(p.z).redMul(h);
29780
29781 return this.curve.jpoint(nx, ny, nz);
29782 };
29783
29784 JPoint.prototype.mixedAdd = function mixedAdd(p) {
29785 // O + P = P
29786 if (this.isInfinity())
29787 return p.toJ();
29788
29789 // P + O = P
29790 if (p.isInfinity())
29791 return this;
29792
29793 // 8M + 3S + 7A
29794 var z2 = this.z.redSqr();
29795 var u1 = this.x;
29796 var u2 = p.x.redMul(z2);
29797 var s1 = this.y;
29798 var s2 = p.y.redMul(z2).redMul(this.z);
29799
29800 var h = u1.redSub(u2);
29801 var r = s1.redSub(s2);
29802 if (h.cmpn(0) === 0) {
29803 if (r.cmpn(0) !== 0)
29804 return this.curve.jpoint(null, null, null);
29805 else
29806 return this.dbl();
29807 }
29808
29809 var h2 = h.redSqr();
29810 var h3 = h2.redMul(h);
29811 var v = u1.redMul(h2);
29812
29813 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
29814 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
29815 var nz = this.z.redMul(h);
29816
29817 return this.curve.jpoint(nx, ny, nz);
29818 };
29819
29820 JPoint.prototype.dblp = function dblp(pow) {
29821 if (pow === 0)
29822 return this;
29823 if (this.isInfinity())
29824 return this;
29825 if (!pow)
29826 return this.dbl();
29827
29828 if (this.curve.zeroA || this.curve.threeA) {
29829 var r = this;
29830 for (var i = 0; i < pow; i++)
29831 r = r.dbl();
29832 return r;
29833 }
29834
29835 // 1M + 2S + 1A + N * (4S + 5M + 8A)
29836 // N = 1 => 6M + 6S + 9A
29837 var a = this.curve.a;
29838 var tinv = this.curve.tinv;
29839
29840 var jx = this.x;
29841 var jy = this.y;
29842 var jz = this.z;
29843 var jz4 = jz.redSqr().redSqr();
29844
29845 // Reuse results
29846 var jyd = jy.redAdd(jy);
29847 for (var i = 0; i < pow; i++) {
29848 var jx2 = jx.redSqr();
29849 var jyd2 = jyd.redSqr();
29850 var jyd4 = jyd2.redSqr();
29851 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
29852
29853 var t1 = jx.redMul(jyd2);
29854 var nx = c.redSqr().redISub(t1.redAdd(t1));
29855 var t2 = t1.redISub(nx);
29856 var dny = c.redMul(t2);
29857 dny = dny.redIAdd(dny).redISub(jyd4);
29858 var nz = jyd.redMul(jz);
29859 if (i + 1 < pow)
29860 jz4 = jz4.redMul(jyd4);
29861
29862 jx = nx;
29863 jz = nz;
29864 jyd = dny;
29865 }
29866
29867 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
29868 };
29869
29870 JPoint.prototype.dbl = function dbl() {
29871 if (this.isInfinity())
29872 return this;
29873
29874 if (this.curve.zeroA)
29875 return this._zeroDbl();
29876 else if (this.curve.threeA)
29877 return this._threeDbl();
29878 else
29879 return this._dbl();
29880 };
29881
29882 JPoint.prototype._zeroDbl = function _zeroDbl() {
29883 var nx;
29884 var ny;
29885 var nz;
29886 // Z = 1
29887 if (this.zOne) {
29888 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
29889 // #doubling-mdbl-2007-bl
29890 // 1M + 5S + 14A
29891
29892 // XX = X1^2
29893 var xx = this.x.redSqr();
29894 // YY = Y1^2
29895 var yy = this.y.redSqr();
29896 // YYYY = YY^2
29897 var yyyy = yy.redSqr();
29898 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
29899 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
29900 s = s.redIAdd(s);
29901 // M = 3 * XX + a; a = 0
29902 var m = xx.redAdd(xx).redIAdd(xx);
29903 // T = M ^ 2 - 2*S
29904 var t = m.redSqr().redISub(s).redISub(s);
29905
29906 // 8 * YYYY
29907 var yyyy8 = yyyy.redIAdd(yyyy);
29908 yyyy8 = yyyy8.redIAdd(yyyy8);
29909 yyyy8 = yyyy8.redIAdd(yyyy8);
29910
29911 // X3 = T
29912 nx = t;
29913 // Y3 = M * (S - T) - 8 * YYYY
29914 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
29915 // Z3 = 2*Y1
29916 nz = this.y.redAdd(this.y);
29917 } else {
29918 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
29919 // #doubling-dbl-2009-l
29920 // 2M + 5S + 13A
29921
29922 // A = X1^2
29923 var a = this.x.redSqr();
29924 // B = Y1^2
29925 var b = this.y.redSqr();
29926 // C = B^2
29927 var c = b.redSqr();
29928 // D = 2 * ((X1 + B)^2 - A - C)
29929 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
29930 d = d.redIAdd(d);
29931 // E = 3 * A
29932 var e = a.redAdd(a).redIAdd(a);
29933 // F = E^2
29934 var f = e.redSqr();
29935
29936 // 8 * C
29937 var c8 = c.redIAdd(c);
29938 c8 = c8.redIAdd(c8);
29939 c8 = c8.redIAdd(c8);
29940
29941 // X3 = F - 2 * D
29942 nx = f.redISub(d).redISub(d);
29943 // Y3 = E * (D - X3) - 8 * C
29944 ny = e.redMul(d.redISub(nx)).redISub(c8);
29945 // Z3 = 2 * Y1 * Z1
29946 nz = this.y.redMul(this.z);
29947 nz = nz.redIAdd(nz);
29948 }
29949
29950 return this.curve.jpoint(nx, ny, nz);
29951 };
29952
29953 JPoint.prototype._threeDbl = function _threeDbl() {
29954 var nx;
29955 var ny;
29956 var nz;
29957 // Z = 1
29958 if (this.zOne) {
29959 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
29960 // #doubling-mdbl-2007-bl
29961 // 1M + 5S + 15A
29962
29963 // XX = X1^2
29964 var xx = this.x.redSqr();
29965 // YY = Y1^2
29966 var yy = this.y.redSqr();
29967 // YYYY = YY^2
29968 var yyyy = yy.redSqr();
29969 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
29970 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
29971 s = s.redIAdd(s);
29972 // M = 3 * XX + a
29973 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
29974 // T = M^2 - 2 * S
29975 var t = m.redSqr().redISub(s).redISub(s);
29976 // X3 = T
29977 nx = t;
29978 // Y3 = M * (S - T) - 8 * YYYY
29979 var yyyy8 = yyyy.redIAdd(yyyy);
29980 yyyy8 = yyyy8.redIAdd(yyyy8);
29981 yyyy8 = yyyy8.redIAdd(yyyy8);
29982 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
29983 // Z3 = 2 * Y1
29984 nz = this.y.redAdd(this.y);
29985 } else {
29986 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
29987 // 3M + 5S
29988
29989 // delta = Z1^2
29990 var delta = this.z.redSqr();
29991 // gamma = Y1^2
29992 var gamma = this.y.redSqr();
29993 // beta = X1 * gamma
29994 var beta = this.x.redMul(gamma);
29995 // alpha = 3 * (X1 - delta) * (X1 + delta)
29996 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
29997 alpha = alpha.redAdd(alpha).redIAdd(alpha);
29998 // X3 = alpha^2 - 8 * beta
29999 var beta4 = beta.redIAdd(beta);
30000 beta4 = beta4.redIAdd(beta4);
30001 var beta8 = beta4.redAdd(beta4);
30002 nx = alpha.redSqr().redISub(beta8);
30003 // Z3 = (Y1 + Z1)^2 - gamma - delta
30004 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
30005 // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
30006 var ggamma8 = gamma.redSqr();
30007 ggamma8 = ggamma8.redIAdd(ggamma8);
30008 ggamma8 = ggamma8.redIAdd(ggamma8);
30009 ggamma8 = ggamma8.redIAdd(ggamma8);
30010 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
30011 }
30012
30013 return this.curve.jpoint(nx, ny, nz);
30014 };
30015
30016 JPoint.prototype._dbl = function _dbl() {
30017 var a = this.curve.a;
30018
30019 // 4M + 6S + 10A
30020 var jx = this.x;
30021 var jy = this.y;
30022 var jz = this.z;
30023 var jz4 = jz.redSqr().redSqr();
30024
30025 var jx2 = jx.redSqr();
30026 var jy2 = jy.redSqr();
30027
30028 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
30029
30030 var jxd4 = jx.redAdd(jx);
30031 jxd4 = jxd4.redIAdd(jxd4);
30032 var t1 = jxd4.redMul(jy2);
30033 var nx = c.redSqr().redISub(t1.redAdd(t1));
30034 var t2 = t1.redISub(nx);
30035
30036 var jyd8 = jy2.redSqr();
30037 jyd8 = jyd8.redIAdd(jyd8);
30038 jyd8 = jyd8.redIAdd(jyd8);
30039 jyd8 = jyd8.redIAdd(jyd8);
30040 var ny = c.redMul(t2).redISub(jyd8);
30041 var nz = jy.redAdd(jy).redMul(jz);
30042
30043 return this.curve.jpoint(nx, ny, nz);
30044 };
30045
30046 JPoint.prototype.trpl = function trpl() {
30047 if (!this.curve.zeroA)
30048 return this.dbl().add(this);
30049
30050 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
30051 // 5M + 10S + ...
30052
30053 // XX = X1^2
30054 var xx = this.x.redSqr();
30055 // YY = Y1^2
30056 var yy = this.y.redSqr();
30057 // ZZ = Z1^2
30058 var zz = this.z.redSqr();
30059 // YYYY = YY^2
30060 var yyyy = yy.redSqr();
30061 // M = 3 * XX + a * ZZ2; a = 0
30062 var m = xx.redAdd(xx).redIAdd(xx);
30063 // MM = M^2
30064 var mm = m.redSqr();
30065 // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
30066 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
30067 e = e.redIAdd(e);
30068 e = e.redAdd(e).redIAdd(e);
30069 e = e.redISub(mm);
30070 // EE = E^2
30071 var ee = e.redSqr();
30072 // T = 16*YYYY
30073 var t = yyyy.redIAdd(yyyy);
30074 t = t.redIAdd(t);
30075 t = t.redIAdd(t);
30076 t = t.redIAdd(t);
30077 // U = (M + E)^2 - MM - EE - T
30078 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
30079 // X3 = 4 * (X1 * EE - 4 * YY * U)
30080 var yyu4 = yy.redMul(u);
30081 yyu4 = yyu4.redIAdd(yyu4);
30082 yyu4 = yyu4.redIAdd(yyu4);
30083 var nx = this.x.redMul(ee).redISub(yyu4);
30084 nx = nx.redIAdd(nx);
30085 nx = nx.redIAdd(nx);
30086 // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
30087 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
30088 ny = ny.redIAdd(ny);
30089 ny = ny.redIAdd(ny);
30090 ny = ny.redIAdd(ny);
30091 // Z3 = (Z1 + E)^2 - ZZ - EE
30092 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
30093
30094 return this.curve.jpoint(nx, ny, nz);
30095 };
30096
30097 JPoint.prototype.mul = function mul(k, kbase) {
30098 k = new BN(k, kbase);
30099
30100 return this.curve._wnafMul(this, k);
30101 };
30102
30103 JPoint.prototype.eq = function eq(p) {
30104 if (p.type === 'affine')
30105 return this.eq(p.toJ());
30106
30107 if (this === p)
30108 return true;
30109
30110 // x1 * z2^2 == x2 * z1^2
30111 var z2 = this.z.redSqr();
30112 var pz2 = p.z.redSqr();
30113 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
30114 return false;
30115
30116 // y1 * z2^3 == y2 * z1^3
30117 var z3 = z2.redMul(this.z);
30118 var pz3 = pz2.redMul(p.z);
30119 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
30120 };
30121
30122 JPoint.prototype.eqXToP = function eqXToP(x) {
30123 var zs = this.z.redSqr();
30124 var rx = x.toRed(this.curve.red).redMul(zs);
30125 if (this.x.cmp(rx) === 0)
30126 return true;
30127
30128 var xc = x.clone();
30129 var t = this.curve.redN.redMul(zs);
30130 for (;;) {
30131 xc.iadd(this.curve.n);
30132 if (xc.cmp(this.curve.p) >= 0)
30133 return false;
30134
30135 rx.redIAdd(t);
30136 if (this.x.cmp(rx) === 0)
30137 return true;
30138 }
30139 return false;
30140 };
30141
30142 JPoint.prototype.inspect = function inspect() {
30143 if (this.isInfinity())
30144 return '<EC JPoint Infinity>';
30145 return '<EC JPoint x: ' + this.x.toString(16, 2) +
30146 ' y: ' + this.y.toString(16, 2) +
30147 ' z: ' + this.z.toString(16, 2) + '>';
30148 };
30149
30150 JPoint.prototype.isInfinity = function isInfinity() {
30151 // XXX This code assumes that zero is always zero in red
30152 return this.z.cmpn(0) === 0;
30153 };
30154
30155 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],45:[function(require,module,exports){
30156 'use strict';
30157
30158 var curves = exports;
30159
30160 var hash = require('hash.js');
30161 var elliptic = require('../elliptic');
30162
30163 var assert = elliptic.utils.assert;
30164
30165 function PresetCurve(options) {
30166 if (options.type === 'short')
30167 this.curve = new elliptic.curve.short(options);
30168 else if (options.type === 'edwards')
30169 this.curve = new elliptic.curve.edwards(options);
30170 else
30171 this.curve = new elliptic.curve.mont(options);
30172 this.g = this.curve.g;
30173 this.n = this.curve.n;
30174 this.hash = options.hash;
30175
30176 assert(this.g.validate(), 'Invalid curve');
30177 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
30178 }
30179 curves.PresetCurve = PresetCurve;
30180
30181 function defineCurve(name, options) {
30182 Object.defineProperty(curves, name, {
30183 configurable: true,
30184 enumerable: true,
30185 get: function() {
30186 var curve = new PresetCurve(options);
30187 Object.defineProperty(curves, name, {
30188 configurable: true,
30189 enumerable: true,
30190 value: curve
30191 });
30192 return curve;
30193 }
30194 });
30195 }
30196
30197 defineCurve('p192', {
30198 type: 'short',
30199 prime: 'p192',
30200 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
30201 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
30202 b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
30203 n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
30204 hash: hash.sha256,
30205 gRed: false,
30206 g: [
30207 '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
30208 '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
30209 ]
30210 });
30211
30212 defineCurve('p224', {
30213 type: 'short',
30214 prime: 'p224',
30215 p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
30216 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
30217 b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
30218 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
30219 hash: hash.sha256,
30220 gRed: false,
30221 g: [
30222 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
30223 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
30224 ]
30225 });
30226
30227 defineCurve('p256', {
30228 type: 'short',
30229 prime: null,
30230 p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
30231 a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
30232 b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
30233 n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
30234 hash: hash.sha256,
30235 gRed: false,
30236 g: [
30237 '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
30238 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
30239 ]
30240 });
30241
30242 defineCurve('p384', {
30243 type: 'short',
30244 prime: null,
30245 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
30246 'fffffffe ffffffff 00000000 00000000 ffffffff',
30247 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
30248 'fffffffe ffffffff 00000000 00000000 fffffffc',
30249 b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
30250 '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
30251 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
30252 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
30253 hash: hash.sha384,
30254 gRed: false,
30255 g: [
30256 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
30257 '5502f25d bf55296c 3a545e38 72760ab7',
30258 '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
30259 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
30260 ]
30261 });
30262
30263 defineCurve('p521', {
30264 type: 'short',
30265 prime: null,
30266 p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
30267 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
30268 'ffffffff ffffffff ffffffff ffffffff ffffffff',
30269 a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
30270 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
30271 'ffffffff ffffffff ffffffff ffffffff fffffffc',
30272 b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
30273 '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
30274 '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
30275 n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
30276 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
30277 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
30278 hash: hash.sha512,
30279 gRed: false,
30280 g: [
30281 '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
30282 '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
30283 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
30284 '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
30285 '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
30286 '3fad0761 353c7086 a272c240 88be9476 9fd16650'
30287 ]
30288 });
30289
30290 defineCurve('curve25519', {
30291 type: 'mont',
30292 prime: 'p25519',
30293 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
30294 a: '76d06',
30295 b: '1',
30296 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
30297 hash: hash.sha256,
30298 gRed: false,
30299 g: [
30300 '9'
30301 ]
30302 });
30303
30304 defineCurve('ed25519', {
30305 type: 'edwards',
30306 prime: 'p25519',
30307 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
30308 a: '-1',
30309 c: '1',
30310 // -121665 * (121666^(-1)) (mod P)
30311 d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
30312 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
30313 hash: hash.sha256,
30314 gRed: false,
30315 g: [
30316 '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
30317
30318 // 4/5
30319 '6666666666666666666666666666666666666666666666666666666666666658'
30320 ]
30321 });
30322
30323 var pre;
30324 try {
30325 pre = require('./precomputed/secp256k1');
30326 } catch (e) {
30327 pre = undefined;
30328 }
30329
30330 defineCurve('secp256k1', {
30331 type: 'short',
30332 prime: 'k256',
30333 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
30334 a: '0',
30335 b: '7',
30336 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
30337 h: '1',
30338 hash: hash.sha256,
30339
30340 // Precomputed endomorphism
30341 beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
30342 lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
30343 basis: [
30344 {
30345 a: '3086d221a7d46bcde86c90e49284eb15',
30346 b: '-e4437ed6010e88286f547fa90abfe4c3'
30347 },
30348 {
30349 a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
30350 b: '3086d221a7d46bcde86c90e49284eb15'
30351 }
30352 ],
30353
30354 gRed: false,
30355 g: [
30356 '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
30357 '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
30358 pre
30359 ]
30360 });
30361
30362 },{"../elliptic":39,"./precomputed/secp256k1":53,"hash.js":57}],46:[function(require,module,exports){
30363 'use strict';
30364
30365 var BN = require('bn.js');
30366 var elliptic = require('../../elliptic');
30367 var utils = elliptic.utils;
30368 var assert = utils.assert;
30369
30370 var KeyPair = require('./key');
30371 var Signature = require('./signature');
30372
30373 function EC(options) {
30374 if (!(this instanceof EC))
30375 return new EC(options);
30376
30377 // Shortcut `elliptic.ec(curve-name)`
30378 if (typeof options === 'string') {
30379 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
30380
30381 options = elliptic.curves[options];
30382 }
30383
30384 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
30385 if (options instanceof elliptic.curves.PresetCurve)
30386 options = { curve: options };
30387
30388 this.curve = options.curve.curve;
30389 this.n = this.curve.n;
30390 this.nh = this.n.ushrn(1);
30391 this.g = this.curve.g;
30392
30393 // Point on curve
30394 this.g = options.curve.g;
30395 this.g.precompute(options.curve.n.bitLength() + 1);
30396
30397 // Hash for function for DRBG
30398 this.hash = options.hash || options.curve.hash;
30399 }
30400 module.exports = EC;
30401
30402 EC.prototype.keyPair = function keyPair(options) {
30403 return new KeyPair(this, options);
30404 };
30405
30406 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
30407 return KeyPair.fromPrivate(this, priv, enc);
30408 };
30409
30410 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
30411 return KeyPair.fromPublic(this, pub, enc);
30412 };
30413
30414 EC.prototype.genKeyPair = function genKeyPair(options) {
30415 if (!options)
30416 options = {};
30417
30418 // Instantiate Hmac_DRBG
30419 var drbg = new elliptic.hmacDRBG({
30420 hash: this.hash,
30421 pers: options.pers,
30422 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
30423 nonce: this.n.toArray()
30424 });
30425
30426 var bytes = this.n.byteLength();
30427 var ns2 = this.n.sub(new BN(2));
30428 do {
30429 var priv = new BN(drbg.generate(bytes));
30430 if (priv.cmp(ns2) > 0)
30431 continue;
30432
30433 priv.iaddn(1);
30434 return this.keyFromPrivate(priv);
30435 } while (true);
30436 };
30437
30438 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
30439 var delta = msg.byteLength() * 8 - this.n.bitLength();
30440 if (delta > 0)
30441 msg = msg.ushrn(delta);
30442 if (!truncOnly && msg.cmp(this.n) >= 0)
30443 return msg.sub(this.n);
30444 else
30445 return msg;
30446 };
30447
30448 EC.prototype.sign = function sign(msg, key, enc, options) {
30449 if (typeof enc === 'object') {
30450 options = enc;
30451 enc = null;
30452 }
30453 if (!options)
30454 options = {};
30455
30456 key = this.keyFromPrivate(key, enc);
30457 msg = this._truncateToN(new BN(msg, 16));
30458
30459 // Zero-extend key to provide enough entropy
30460 var bytes = this.n.byteLength();
30461 var bkey = key.getPrivate().toArray('be', bytes);
30462
30463 // Zero-extend nonce to have the same byte size as N
30464 var nonce = msg.toArray('be', bytes);
30465
30466 // Instantiate Hmac_DRBG
30467 var drbg = new elliptic.hmacDRBG({
30468 hash: this.hash,
30469 entropy: bkey,
30470 nonce: nonce,
30471 pers: options.pers,
30472 persEnc: options.persEnc
30473 });
30474
30475 // Number of bytes to generate
30476 var ns1 = this.n.sub(new BN(1));
30477
30478 for (var iter = 0; true; iter++) {
30479 var k = options.k ?
30480 options.k(iter) :
30481 new BN(drbg.generate(this.n.byteLength()));
30482 k = this._truncateToN(k, true);
30483 if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
30484 continue;
30485
30486 var kp = this.g.mul(k);
30487 if (kp.isInfinity())
30488 continue;
30489
30490 var kpX = kp.getX();
30491 var r = kpX.umod(this.n);
30492 if (r.cmpn(0) === 0)
30493 continue;
30494
30495 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
30496 s = s.umod(this.n);
30497 if (s.cmpn(0) === 0)
30498 continue;
30499
30500 var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
30501 (kpX.cmp(r) !== 0 ? 2 : 0);
30502
30503 // Use complement of `s`, if it is > `n / 2`
30504 if (options.canonical && s.cmp(this.nh) > 0) {
30505 s = this.n.sub(s);
30506 recoveryParam ^= 1;
30507 }
30508
30509 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
30510 }
30511 };
30512
30513 EC.prototype.verify = function verify(msg, signature, key, enc) {
30514 msg = this._truncateToN(new BN(msg, 16));
30515 key = this.keyFromPublic(key, enc);
30516 signature = new Signature(signature, 'hex');
30517
30518 // Perform primitive values validation
30519 var r = signature.r;
30520 var s = signature.s;
30521 if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
30522 return false;
30523 if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
30524 return false;
30525
30526 // Validate signature
30527 var sinv = s.invm(this.n);
30528 var u1 = sinv.mul(msg).umod(this.n);
30529 var u2 = sinv.mul(r).umod(this.n);
30530
30531 if (!this.curve._maxwellTrick) {
30532 var p = this.g.mulAdd(u1, key.getPublic(), u2);
30533 if (p.isInfinity())
30534 return false;
30535
30536 return p.getX().umod(this.n).cmp(r) === 0;
30537 }
30538
30539 // NOTE: Greg Maxwell's trick, inspired by:
30540 // https://git.io/vad3K
30541
30542 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
30543 if (p.isInfinity())
30544 return false;
30545
30546 // Compare `p.x` of Jacobian point with `r`,
30547 // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
30548 // inverse of `p.z^2`
30549 return p.eqXToP(r);
30550 };
30551
30552 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
30553 assert((3 & j) === j, 'The recovery param is more than two bits');
30554 signature = new Signature(signature, enc);
30555
30556 var n = this.n;
30557 var e = new BN(msg);
30558 var r = signature.r;
30559 var s = signature.s;
30560
30561 // A set LSB signifies that the y-coordinate is odd
30562 var isYOdd = j & 1;
30563 var isSecondKey = j >> 1;
30564 if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
30565 throw new Error('Unable to find sencond key candinate');
30566
30567 // 1.1. Let x = r + jn.
30568 if (isSecondKey)
30569 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
30570 else
30571 r = this.curve.pointFromX(r, isYOdd);
30572
30573 var rInv = signature.r.invm(n);
30574 var s1 = n.sub(e).mul(rInv).umod(n);
30575 var s2 = s.mul(rInv).umod(n);
30576
30577 // 1.6.1 Compute Q = r^-1 (sR - eG)
30578 // Q = r^-1 (sR + -eG)
30579 return this.g.mulAdd(s1, r, s2);
30580 };
30581
30582 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
30583 signature = new Signature(signature, enc);
30584 if (signature.recoveryParam !== null)
30585 return signature.recoveryParam;
30586
30587 for (var i = 0; i < 4; i++) {
30588 var Qprime;
30589 try {
30590 Qprime = this.recoverPubKey(e, signature, i);
30591 } catch (e) {
30592 continue;
30593 }
30594
30595 if (Qprime.eq(Q))
30596 return i;
30597 }
30598 throw new Error('Unable to find valid recovery factor');
30599 };
30600
30601 },{"../../elliptic":39,"./key":47,"./signature":48,"bn.js":33}],47:[function(require,module,exports){
30602 'use strict';
30603
30604 var BN = require('bn.js');
30605 var elliptic = require('../../elliptic');
30606 var utils = elliptic.utils;
30607 var assert = utils.assert;
30608
30609 function KeyPair(ec, options) {
30610 this.ec = ec;
30611 this.priv = null;
30612 this.pub = null;
30613
30614 // KeyPair(ec, { priv: ..., pub: ... })
30615 if (options.priv)
30616 this._importPrivate(options.priv, options.privEnc);
30617 if (options.pub)
30618 this._importPublic(options.pub, options.pubEnc);
30619 }
30620 module.exports = KeyPair;
30621
30622 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
30623 if (pub instanceof KeyPair)
30624 return pub;
30625
30626 return new KeyPair(ec, {
30627 pub: pub,
30628 pubEnc: enc
30629 });
30630 };
30631
30632 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
30633 if (priv instanceof KeyPair)
30634 return priv;
30635
30636 return new KeyPair(ec, {
30637 priv: priv,
30638 privEnc: enc
30639 });
30640 };
30641
30642 KeyPair.prototype.validate = function validate() {
30643 var pub = this.getPublic();
30644
30645 if (pub.isInfinity())
30646 return { result: false, reason: 'Invalid public key' };
30647 if (!pub.validate())
30648 return { result: false, reason: 'Public key is not a point' };
30649 if (!pub.mul(this.ec.curve.n).isInfinity())
30650 return { result: false, reason: 'Public key * N != O' };
30651
30652 return { result: true, reason: null };
30653 };
30654
30655 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
30656 // compact is optional argument
30657 if (typeof compact === 'string') {
30658 enc = compact;
30659 compact = null;
30660 }
30661
30662 if (!this.pub)
30663 this.pub = this.ec.g.mul(this.priv);
30664
30665 if (!enc)
30666 return this.pub;
30667
30668 return this.pub.encode(enc, compact);
30669 };
30670
30671 KeyPair.prototype.getPrivate = function getPrivate(enc) {
30672 if (enc === 'hex')
30673 return this.priv.toString(16, 2);
30674 else
30675 return this.priv;
30676 };
30677
30678 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
30679 this.priv = new BN(key, enc || 16);
30680
30681 // Ensure that the priv won't be bigger than n, otherwise we may fail
30682 // in fixed multiplication method
30683 this.priv = this.priv.umod(this.ec.curve.n);
30684 };
30685
30686 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
30687 if (key.x || key.y) {
30688 // Montgomery points only have an `x` coordinate.
30689 // Weierstrass/Edwards points on the other hand have both `x` and
30690 // `y` coordinates.
30691 if (this.ec.curve.type === 'mont') {
30692 assert(key.x, 'Need x coordinate');
30693 } else if (this.ec.curve.type === 'short' ||
30694 this.ec.curve.type === 'edwards') {
30695 assert(key.x && key.y, 'Need both x and y coordinate');
30696 }
30697 this.pub = this.ec.curve.point(key.x, key.y);
30698 return;
30699 }
30700 this.pub = this.ec.curve.decodePoint(key, enc);
30701 };
30702
30703 // ECDH
30704 KeyPair.prototype.derive = function derive(pub) {
30705 return pub.mul(this.priv).getX();
30706 };
30707
30708 // ECDSA
30709 KeyPair.prototype.sign = function sign(msg, enc, options) {
30710 return this.ec.sign(msg, this, enc, options);
30711 };
30712
30713 KeyPair.prototype.verify = function verify(msg, signature) {
30714 return this.ec.verify(msg, signature, this);
30715 };
30716
30717 KeyPair.prototype.inspect = function inspect() {
30718 return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
30719 ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
30720 };
30721
30722 },{"../../elliptic":39,"bn.js":33}],48:[function(require,module,exports){
30723 'use strict';
30724
30725 var BN = require('bn.js');
30726
30727 var elliptic = require('../../elliptic');
30728 var utils = elliptic.utils;
30729 var assert = utils.assert;
30730
30731 function Signature(options, enc) {
30732 if (options instanceof Signature)
30733 return options;
30734
30735 if (this._importDER(options, enc))
30736 return;
30737
30738 assert(options.r && options.s, 'Signature without r or s');
30739 this.r = new BN(options.r, 16);
30740 this.s = new BN(options.s, 16);
30741 if (options.recoveryParam === undefined)
30742 this.recoveryParam = null;
30743 else
30744 this.recoveryParam = options.recoveryParam;
30745 }
30746 module.exports = Signature;
30747
30748 function Position() {
30749 this.place = 0;
30750 }
30751
30752 function getLength(buf, p) {
30753 var initial = buf[p.place++];
30754 if (!(initial & 0x80)) {
30755 return initial;
30756 }
30757 var octetLen = initial & 0xf;
30758 var val = 0;
30759 for (var i = 0, off = p.place; i < octetLen; i++, off++) {
30760 val <<= 8;
30761 val |= buf[off];
30762 }
30763 p.place = off;
30764 return val;
30765 }
30766
30767 function rmPadding(buf) {
30768 var i = 0;
30769 var len = buf.length - 1;
30770 while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
30771 i++;
30772 }
30773 if (i === 0) {
30774 return buf;
30775 }
30776 return buf.slice(i);
30777 }
30778
30779 Signature.prototype._importDER = function _importDER(data, enc) {
30780 data = utils.toArray(data, enc);
30781 var p = new Position();
30782 if (data[p.place++] !== 0x30) {
30783 return false;
30784 }
30785 var len = getLength(data, p);
30786 if ((len + p.place) !== data.length) {
30787 return false;
30788 }
30789 if (data[p.place++] !== 0x02) {
30790 return false;
30791 }
30792 var rlen = getLength(data, p);
30793 var r = data.slice(p.place, rlen + p.place);
30794 p.place += rlen;
30795 if (data[p.place++] !== 0x02) {
30796 return false;
30797 }
30798 var slen = getLength(data, p);
30799 if (data.length !== slen + p.place) {
30800 return false;
30801 }
30802 var s = data.slice(p.place, slen + p.place);
30803 if (r[0] === 0 && (r[1] & 0x80)) {
30804 r = r.slice(1);
30805 }
30806 if (s[0] === 0 && (s[1] & 0x80)) {
30807 s = s.slice(1);
30808 }
30809
30810 this.r = new BN(r);
30811 this.s = new BN(s);
30812 this.recoveryParam = null;
30813
30814 return true;
30815 };
30816
30817 function constructLength(arr, len) {
30818 if (len < 0x80) {
30819 arr.push(len);
30820 return;
30821 }
30822 var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
30823 arr.push(octets | 0x80);
30824 while (--octets) {
30825 arr.push((len >>> (octets << 3)) & 0xff);
30826 }
30827 arr.push(len);
30828 }
30829
30830 Signature.prototype.toDER = function toDER(enc) {
30831 var r = this.r.toArray();
30832 var s = this.s.toArray();
30833
30834 // Pad values
30835 if (r[0] & 0x80)
30836 r = [ 0 ].concat(r);
30837 // Pad values
30838 if (s[0] & 0x80)
30839 s = [ 0 ].concat(s);
30840
30841 r = rmPadding(r);
30842 s = rmPadding(s);
30843
30844 while (!s[0] && !(s[1] & 0x80)) {
30845 s = s.slice(1);
30846 }
30847 var arr = [ 0x02 ];
30848 constructLength(arr, r.length);
30849 arr = arr.concat(r);
30850 arr.push(0x02);
30851 constructLength(arr, s.length);
30852 var backHalf = arr.concat(s);
30853 var res = [ 0x30 ];
30854 constructLength(res, backHalf.length);
30855 res = res.concat(backHalf);
30856 return utils.encode(res, enc);
30857 };
30858
30859 },{"../../elliptic":39,"bn.js":33}],49:[function(require,module,exports){
30860 'use strict';
30861
30862 var hash = require('hash.js');
30863 var elliptic = require('../../elliptic');
30864 var utils = elliptic.utils;
30865 var assert = utils.assert;
30866 var parseBytes = utils.parseBytes;
30867 var KeyPair = require('./key');
30868 var Signature = require('./signature');
30869
30870 function EDDSA(curve) {
30871 assert(curve === 'ed25519', 'only tested with ed25519 so far');
30872
30873 if (!(this instanceof EDDSA))
30874 return new EDDSA(curve);
30875
30876 var curve = elliptic.curves[curve].curve;
30877 this.curve = curve;
30878 this.g = curve.g;
30879 this.g.precompute(curve.n.bitLength() + 1);
30880
30881 this.pointClass = curve.point().constructor;
30882 this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
30883 this.hash = hash.sha512;
30884 }
30885
30886 module.exports = EDDSA;
30887
30888 /**
30889 * @param {Array|String} message - message bytes
30890 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
30891 * @returns {Signature} - signature
30892 */
30893 EDDSA.prototype.sign = function sign(message, secret) {
30894 message = parseBytes(message);
30895 var key = this.keyFromSecret(secret);
30896 var r = this.hashInt(key.messagePrefix(), message);
30897 var R = this.g.mul(r);
30898 var Rencoded = this.encodePoint(R);
30899 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
30900 .mul(key.priv());
30901 var S = r.add(s_).umod(this.curve.n);
30902 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
30903 };
30904
30905 /**
30906 * @param {Array} message - message bytes
30907 * @param {Array|String|Signature} sig - sig bytes
30908 * @param {Array|String|Point|KeyPair} pub - public key
30909 * @returns {Boolean} - true if public key matches sig of message
30910 */
30911 EDDSA.prototype.verify = function verify(message, sig, pub) {
30912 message = parseBytes(message);
30913 sig = this.makeSignature(sig);
30914 var key = this.keyFromPublic(pub);
30915 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
30916 var SG = this.g.mul(sig.S());
30917 var RplusAh = sig.R().add(key.pub().mul(h));
30918 return RplusAh.eq(SG);
30919 };
30920
30921 EDDSA.prototype.hashInt = function hashInt() {
30922 var hash = this.hash();
30923 for (var i = 0; i < arguments.length; i++)
30924 hash.update(arguments[i]);
30925 return utils.intFromLE(hash.digest()).umod(this.curve.n);
30926 };
30927
30928 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
30929 return KeyPair.fromPublic(this, pub);
30930 };
30931
30932 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
30933 return KeyPair.fromSecret(this, secret);
30934 };
30935
30936 EDDSA.prototype.makeSignature = function makeSignature(sig) {
30937 if (sig instanceof Signature)
30938 return sig;
30939 return new Signature(this, sig);
30940 };
30941
30942 /**
30943 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
30944 *
30945 * EDDSA defines methods for encoding and decoding points and integers. These are
30946 * helper convenience methods, that pass along to utility functions implied
30947 * parameters.
30948 *
30949 */
30950 EDDSA.prototype.encodePoint = function encodePoint(point) {
30951 var enc = point.getY().toArray('le', this.encodingLength);
30952 enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
30953 return enc;
30954 };
30955
30956 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
30957 bytes = utils.parseBytes(bytes);
30958
30959 var lastIx = bytes.length - 1;
30960 var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
30961 var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
30962
30963 var y = utils.intFromLE(normed);
30964 return this.curve.pointFromY(y, xIsOdd);
30965 };
30966
30967 EDDSA.prototype.encodeInt = function encodeInt(num) {
30968 return num.toArray('le', this.encodingLength);
30969 };
30970
30971 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
30972 return utils.intFromLE(bytes);
30973 };
30974
30975 EDDSA.prototype.isPoint = function isPoint(val) {
30976 return val instanceof this.pointClass;
30977 };
30978
30979 },{"../../elliptic":39,"./key":50,"./signature":51,"hash.js":57}],50:[function(require,module,exports){
30980 'use strict';
30981
30982 var elliptic = require('../../elliptic');
30983 var utils = elliptic.utils;
30984 var assert = utils.assert;
30985 var parseBytes = utils.parseBytes;
30986 var cachedProperty = utils.cachedProperty;
30987
30988 /**
30989 * @param {EDDSA} eddsa - instance
30990 * @param {Object} params - public/private key parameters
30991 *
30992 * @param {Array<Byte>} [params.secret] - secret seed bytes
30993 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
30994 * @param {Array<Byte>} [params.pub] - public key point encoded as bytes
30995 *
30996 */
30997 function KeyPair(eddsa, params) {
30998 this.eddsa = eddsa;
30999 this._secret = parseBytes(params.secret);
31000 if (eddsa.isPoint(params.pub))
31001 this._pub = params.pub;
31002 else
31003 this._pubBytes = parseBytes(params.pub);
31004 }
31005
31006 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
31007 if (pub instanceof KeyPair)
31008 return pub;
31009 return new KeyPair(eddsa, { pub: pub });
31010 };
31011
31012 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
31013 if (secret instanceof KeyPair)
31014 return secret;
31015 return new KeyPair(eddsa, { secret: secret });
31016 };
31017
31018 KeyPair.prototype.secret = function secret() {
31019 return this._secret;
31020 };
31021
31022 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
31023 return this.eddsa.encodePoint(this.pub());
31024 });
31025
31026 cachedProperty(KeyPair, 'pub', function pub() {
31027 if (this._pubBytes)
31028 return this.eddsa.decodePoint(this._pubBytes);
31029 return this.eddsa.g.mul(this.priv());
31030 });
31031
31032 cachedProperty(KeyPair, 'privBytes', function privBytes() {
31033 var eddsa = this.eddsa;
31034 var hash = this.hash();
31035 var lastIx = eddsa.encodingLength - 1;
31036
31037 var a = hash.slice(0, eddsa.encodingLength);
31038 a[0] &= 248;
31039 a[lastIx] &= 127;
31040 a[lastIx] |= 64;
31041
31042 return a;
31043 });
31044
31045 cachedProperty(KeyPair, 'priv', function priv() {
31046 return this.eddsa.decodeInt(this.privBytes());
31047 });
31048
31049 cachedProperty(KeyPair, 'hash', function hash() {
31050 return this.eddsa.hash().update(this.secret()).digest();
31051 });
31052
31053 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
31054 return this.hash().slice(this.eddsa.encodingLength);
31055 });
31056
31057 KeyPair.prototype.sign = function sign(message) {
31058 assert(this._secret, 'KeyPair can only verify');
31059 return this.eddsa.sign(message, this);
31060 };
31061
31062 KeyPair.prototype.verify = function verify(message, sig) {
31063 return this.eddsa.verify(message, sig, this);
31064 };
31065
31066 KeyPair.prototype.getSecret = function getSecret(enc) {
31067 assert(this._secret, 'KeyPair is public only');
31068 return utils.encode(this.secret(), enc);
31069 };
31070
31071 KeyPair.prototype.getPublic = function getPublic(enc) {
31072 return utils.encode(this.pubBytes(), enc);
31073 };
31074
31075 module.exports = KeyPair;
31076
31077 },{"../../elliptic":39}],51:[function(require,module,exports){
31078 'use strict';
31079
31080 var BN = require('bn.js');
31081 var elliptic = require('../../elliptic');
31082 var utils = elliptic.utils;
31083 var assert = utils.assert;
31084 var cachedProperty = utils.cachedProperty;
31085 var parseBytes = utils.parseBytes;
31086
31087 /**
31088 * @param {EDDSA} eddsa - eddsa instance
31089 * @param {Array<Bytes>|Object} sig -
31090 * @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
31091 * @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
31092 * @param {Array<Bytes>} [sig.Rencoded] - R point encoded
31093 * @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
31094 */
31095 function Signature(eddsa, sig) {
31096 this.eddsa = eddsa;
31097
31098 if (typeof sig !== 'object')
31099 sig = parseBytes(sig);
31100
31101 if (Array.isArray(sig)) {
31102 sig = {
31103 R: sig.slice(0, eddsa.encodingLength),
31104 S: sig.slice(eddsa.encodingLength)
31105 };
31106 }
31107
31108 assert(sig.R && sig.S, 'Signature without R or S');
31109
31110 if (eddsa.isPoint(sig.R))
31111 this._R = sig.R;
31112 if (sig.S instanceof BN)
31113 this._S = sig.S;
31114
31115 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
31116 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
31117 }
31118
31119 cachedProperty(Signature, 'S', function S() {
31120 return this.eddsa.decodeInt(this.Sencoded());
31121 });
31122
31123 cachedProperty(Signature, 'R', function R() {
31124 return this.eddsa.decodePoint(this.Rencoded());
31125 });
31126
31127 cachedProperty(Signature, 'Rencoded', function Rencoded() {
31128 return this.eddsa.encodePoint(this.R());
31129 });
31130
31131 cachedProperty(Signature, 'Sencoded', function Sencoded() {
31132 return this.eddsa.encodeInt(this.S());
31133 });
31134
31135 Signature.prototype.toBytes = function toBytes() {
31136 return this.Rencoded().concat(this.Sencoded());
31137 };
31138
31139 Signature.prototype.toHex = function toHex() {
31140 return utils.encode(this.toBytes(), 'hex').toUpperCase();
31141 };
31142
31143 module.exports = Signature;
31144
31145 },{"../../elliptic":39,"bn.js":33}],52:[function(require,module,exports){
31146 'use strict';
31147
31148 var hash = require('hash.js');
31149 var elliptic = require('../elliptic');
31150 var utils = elliptic.utils;
31151 var assert = utils.assert;
31152
31153 function HmacDRBG(options) {
31154 if (!(this instanceof HmacDRBG))
31155 return new HmacDRBG(options);
31156 this.hash = options.hash;
31157 this.predResist = !!options.predResist;
31158
31159 this.outLen = this.hash.outSize;
31160 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
31161
31162 this.reseed = null;
31163 this.reseedInterval = null;
31164 this.K = null;
31165 this.V = null;
31166
31167 var entropy = utils.toArray(options.entropy, options.entropyEnc);
31168 var nonce = utils.toArray(options.nonce, options.nonceEnc);
31169 var pers = utils.toArray(options.pers, options.persEnc);
31170 assert(entropy.length >= (this.minEntropy / 8),
31171 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
31172 this._init(entropy, nonce, pers);
31173 }
31174 module.exports = HmacDRBG;
31175
31176 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
31177 var seed = entropy.concat(nonce).concat(pers);
31178
31179 this.K = new Array(this.outLen / 8);
31180 this.V = new Array(this.outLen / 8);
31181 for (var i = 0; i < this.V.length; i++) {
31182 this.K[i] = 0x00;
31183 this.V[i] = 0x01;
31184 }
31185
31186 this._update(seed);
31187 this.reseed = 1;
31188 this.reseedInterval = 0x1000000000000; // 2^48
31189 };
31190
31191 HmacDRBG.prototype._hmac = function hmac() {
31192 return new hash.hmac(this.hash, this.K);
31193 };
31194
31195 HmacDRBG.prototype._update = function update(seed) {
31196 var kmac = this._hmac()
31197 .update(this.V)
31198 .update([ 0x00 ]);
31199 if (seed)
31200 kmac = kmac.update(seed);
31201 this.K = kmac.digest();
31202 this.V = this._hmac().update(this.V).digest();
31203 if (!seed)
31204 return;
31205
31206 this.K = this._hmac()
31207 .update(this.V)
31208 .update([ 0x01 ])
31209 .update(seed)
31210 .digest();
31211 this.V = this._hmac().update(this.V).digest();
31212 };
31213
31214 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
31215 // Optional entropy enc
31216 if (typeof entropyEnc !== 'string') {
31217 addEnc = add;
31218 add = entropyEnc;
31219 entropyEnc = null;
31220 }
31221
31222 entropy = utils.toBuffer(entropy, entropyEnc);
31223 add = utils.toBuffer(add, addEnc);
31224
31225 assert(entropy.length >= (this.minEntropy / 8),
31226 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
31227
31228 this._update(entropy.concat(add || []));
31229 this.reseed = 1;
31230 };
31231
31232 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
31233 if (this.reseed > this.reseedInterval)
31234 throw new Error('Reseed is required');
31235
31236 // Optional encoding
31237 if (typeof enc !== 'string') {
31238 addEnc = add;
31239 add = enc;
31240 enc = null;
31241 }
31242
31243 // Optional additional data
31244 if (add) {
31245 add = utils.toArray(add, addEnc);
31246 this._update(add);
31247 }
31248
31249 var temp = [];
31250 while (temp.length < len) {
31251 this.V = this._hmac().update(this.V).digest();
31252 temp = temp.concat(this.V);
31253 }
31254
31255 var res = temp.slice(0, len);
31256 this._update(add);
31257 this.reseed++;
31258 return utils.encode(res, enc);
31259 };
31260
31261 },{"../elliptic":39,"hash.js":57}],53:[function(require,module,exports){
31262 module.exports = {
31263 doubles: {
31264 step: 4,
31265 points: [
31266 [
31267 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
31268 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
31269 ],
31270 [
31271 '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
31272 '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
31273 ],
31274 [
31275 '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
31276 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
31277 ],
31278 [
31279 '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
31280 '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
31281 ],
31282 [
31283 '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
31284 '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
31285 ],
31286 [
31287 '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
31288 '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
31289 ],
31290 [
31291 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
31292 '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
31293 ],
31294 [
31295 '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
31296 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
31297 ],
31298 [
31299 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
31300 '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
31301 ],
31302 [
31303 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
31304 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
31305 ],
31306 [
31307 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
31308 '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
31309 ],
31310 [
31311 '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
31312 '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
31313 ],
31314 [
31315 '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
31316 '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
31317 ],
31318 [
31319 '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
31320 '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
31321 ],
31322 [
31323 '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
31324 '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
31325 ],
31326 [
31327 '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
31328 '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
31329 ],
31330 [
31331 '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
31332 '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
31333 ],
31334 [
31335 '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
31336 '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
31337 ],
31338 [
31339 '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
31340 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
31341 ],
31342 [
31343 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
31344 '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
31345 ],
31346 [
31347 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
31348 '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
31349 ],
31350 [
31351 '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
31352 '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
31353 ],
31354 [
31355 '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
31356 '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
31357 ],
31358 [
31359 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
31360 '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
31361 ],
31362 [
31363 '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
31364 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
31365 ],
31366 [
31367 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
31368 '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
31369 ],
31370 [
31371 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
31372 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
31373 ],
31374 [
31375 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
31376 '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
31377 ],
31378 [
31379 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
31380 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
31381 ],
31382 [
31383 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
31384 '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
31385 ],
31386 [
31387 '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
31388 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
31389 ],
31390 [
31391 '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
31392 '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
31393 ],
31394 [
31395 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
31396 '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
31397 ],
31398 [
31399 '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
31400 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
31401 ],
31402 [
31403 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
31404 '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
31405 ],
31406 [
31407 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
31408 '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
31409 ],
31410 [
31411 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
31412 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
31413 ],
31414 [
31415 '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
31416 '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
31417 ],
31418 [
31419 '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
31420 '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
31421 ],
31422 [
31423 '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
31424 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
31425 ],
31426 [
31427 '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
31428 '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
31429 ],
31430 [
31431 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
31432 '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
31433 ],
31434 [
31435 '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
31436 '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
31437 ],
31438 [
31439 '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
31440 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
31441 ],
31442 [
31443 '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
31444 '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
31445 ],
31446 [
31447 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
31448 '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
31449 ],
31450 [
31451 '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
31452 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
31453 ],
31454 [
31455 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
31456 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
31457 ],
31458 [
31459 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
31460 '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
31461 ],
31462 [
31463 '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
31464 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
31465 ],
31466 [
31467 '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
31468 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
31469 ],
31470 [
31471 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
31472 '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
31473 ],
31474 [
31475 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
31476 '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
31477 ],
31478 [
31479 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
31480 '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
31481 ],
31482 [
31483 '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
31484 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
31485 ],
31486 [
31487 '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
31488 '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
31489 ],
31490 [
31491 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
31492 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
31493 ],
31494 [
31495 '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
31496 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
31497 ],
31498 [
31499 '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
31500 '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
31501 ],
31502 [
31503 '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
31504 '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
31505 ],
31506 [
31507 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
31508 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
31509 ],
31510 [
31511 '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
31512 '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
31513 ],
31514 [
31515 '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
31516 '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
31517 ],
31518 [
31519 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
31520 '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
31521 ],
31522 [
31523 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
31524 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
31525 ]
31526 ]
31527 },
31528 naf: {
31529 wnd: 7,
31530 points: [
31531 [
31532 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
31533 '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
31534 ],
31535 [
31536 '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
31537 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
31538 ],
31539 [
31540 '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
31541 '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
31542 ],
31543 [
31544 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
31545 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
31546 ],
31547 [
31548 '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
31549 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
31550 ],
31551 [
31552 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
31553 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
31554 ],
31555 [
31556 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
31557 '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
31558 ],
31559 [
31560 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
31561 '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
31562 ],
31563 [
31564 '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
31565 '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
31566 ],
31567 [
31568 '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
31569 '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
31570 ],
31571 [
31572 '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
31573 '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
31574 ],
31575 [
31576 '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
31577 '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
31578 ],
31579 [
31580 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
31581 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
31582 ],
31583 [
31584 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
31585 '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
31586 ],
31587 [
31588 '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
31589 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
31590 ],
31591 [
31592 '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
31593 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
31594 ],
31595 [
31596 '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
31597 '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
31598 ],
31599 [
31600 '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
31601 '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
31602 ],
31603 [
31604 '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
31605 '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
31606 ],
31607 [
31608 '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
31609 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
31610 ],
31611 [
31612 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
31613 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
31614 ],
31615 [
31616 '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
31617 '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
31618 ],
31619 [
31620 '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
31621 '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
31622 ],
31623 [
31624 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
31625 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
31626 ],
31627 [
31628 '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
31629 '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
31630 ],
31631 [
31632 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
31633 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
31634 ],
31635 [
31636 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
31637 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
31638 ],
31639 [
31640 '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
31641 '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
31642 ],
31643 [
31644 '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
31645 '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
31646 ],
31647 [
31648 '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
31649 '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
31650 ],
31651 [
31652 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
31653 '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
31654 ],
31655 [
31656 '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
31657 '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
31658 ],
31659 [
31660 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
31661 '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
31662 ],
31663 [
31664 '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
31665 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
31666 ],
31667 [
31668 '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
31669 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
31670 ],
31671 [
31672 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
31673 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
31674 ],
31675 [
31676 '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
31677 '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
31678 ],
31679 [
31680 '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
31681 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
31682 ],
31683 [
31684 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
31685 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
31686 ],
31687 [
31688 '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
31689 '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
31690 ],
31691 [
31692 '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
31693 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
31694 ],
31695 [
31696 '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
31697 '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
31698 ],
31699 [
31700 '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
31701 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
31702 ],
31703 [
31704 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
31705 '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
31706 ],
31707 [
31708 '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
31709 '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
31710 ],
31711 [
31712 '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
31713 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
31714 ],
31715 [
31716 '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
31717 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
31718 ],
31719 [
31720 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
31721 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
31722 ],
31723 [
31724 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
31725 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
31726 ],
31727 [
31728 '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
31729 '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
31730 ],
31731 [
31732 '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
31733 '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
31734 ],
31735 [
31736 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
31737 '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
31738 ],
31739 [
31740 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
31741 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
31742 ],
31743 [
31744 '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
31745 '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
31746 ],
31747 [
31748 '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
31749 '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
31750 ],
31751 [
31752 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
31753 '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
31754 ],
31755 [
31756 '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
31757 '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
31758 ],
31759 [
31760 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
31761 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
31762 ],
31763 [
31764 '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
31765 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
31766 ],
31767 [
31768 '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
31769 '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
31770 ],
31771 [
31772 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
31773 '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
31774 ],
31775 [
31776 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
31777 '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
31778 ],
31779 [
31780 '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
31781 '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
31782 ],
31783 [
31784 '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
31785 '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
31786 ],
31787 [
31788 '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
31789 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
31790 ],
31791 [
31792 '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
31793 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
31794 ],
31795 [
31796 '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
31797 '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
31798 ],
31799 [
31800 '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
31801 '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
31802 ],
31803 [
31804 '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
31805 '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
31806 ],
31807 [
31808 '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
31809 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
31810 ],
31811 [
31812 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
31813 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
31814 ],
31815 [
31816 '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
31817 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
31818 ],
31819 [
31820 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
31821 '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
31822 ],
31823 [
31824 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
31825 '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
31826 ],
31827 [
31828 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
31829 '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
31830 ],
31831 [
31832 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
31833 '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
31834 ],
31835 [
31836 '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
31837 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
31838 ],
31839 [
31840 '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
31841 '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
31842 ],
31843 [
31844 '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
31845 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
31846 ],
31847 [
31848 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
31849 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
31850 ],
31851 [
31852 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
31853 '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
31854 ],
31855 [
31856 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
31857 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
31858 ],
31859 [
31860 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
31861 '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
31862 ],
31863 [
31864 '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
31865 '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
31866 ],
31867 [
31868 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
31869 '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
31870 ],
31871 [
31872 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
31873 '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
31874 ],
31875 [
31876 '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
31877 '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
31878 ],
31879 [
31880 '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
31881 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
31882 ],
31883 [
31884 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
31885 '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
31886 ],
31887 [
31888 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
31889 '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
31890 ],
31891 [
31892 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
31893 '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
31894 ],
31895 [
31896 '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
31897 '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
31898 ],
31899 [
31900 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
31901 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
31902 ],
31903 [
31904 '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
31905 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
31906 ],
31907 [
31908 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
31909 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
31910 ],
31911 [
31912 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
31913 '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
31914 ],
31915 [
31916 '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
31917 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
31918 ],
31919 [
31920 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
31921 '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
31922 ],
31923 [
31924 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
31925 '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
31926 ],
31927 [
31928 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
31929 '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
31930 ],
31931 [
31932 '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
31933 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
31934 ],
31935 [
31936 '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
31937 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
31938 ],
31939 [
31940 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
31941 '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
31942 ],
31943 [
31944 '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
31945 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
31946 ],
31947 [
31948 '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
31949 '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
31950 ],
31951 [
31952 '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
31953 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
31954 ],
31955 [
31956 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
31957 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
31958 ],
31959 [
31960 '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
31961 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
31962 ],
31963 [
31964 '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
31965 '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
31966 ],
31967 [
31968 '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
31969 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
31970 ],
31971 [
31972 '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
31973 '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
31974 ],
31975 [
31976 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
31977 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
31978 ],
31979 [
31980 '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
31981 '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
31982 ],
31983 [
31984 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
31985 '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
31986 ],
31987 [
31988 '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
31989 '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
31990 ],
31991 [
31992 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
31993 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
31994 ],
31995 [
31996 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
31997 '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
31998 ],
31999 [
32000 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
32001 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
32002 ],
32003 [
32004 '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
32005 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
32006 ],
32007 [
32008 '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
32009 '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
32010 ],
32011 [
32012 '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
32013 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
32014 ],
32015 [
32016 '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
32017 '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
32018 ],
32019 [
32020 '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
32021 '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
32022 ],
32023 [
32024 '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
32025 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
32026 ],
32027 [
32028 '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
32029 '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
32030 ],
32031 [
32032 '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
32033 '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
32034 ],
32035 [
32036 '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
32037 '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
32038 ]
32039 ]
32040 }
32041 };
32042
32043 },{}],54:[function(require,module,exports){
32044 'use strict';
32045
32046 var utils = exports;
32047 var BN = require('bn.js');
32048
32049 utils.assert = function assert(val, msg) {
32050 if (!val)
32051 throw new Error(msg || 'Assertion failed');
32052 };
32053
32054 function toArray(msg, enc) {
32055 if (Array.isArray(msg))
32056 return msg.slice();
32057 if (!msg)
32058 return [];
32059 var res = [];
32060 if (typeof msg !== 'string') {
32061 for (var i = 0; i < msg.length; i++)
32062 res[i] = msg[i] | 0;
32063 return res;
32064 }
32065 if (!enc) {
32066 for (var i = 0; i < msg.length; i++) {
32067 var c = msg.charCodeAt(i);
32068 var hi = c >> 8;
32069 var lo = c & 0xff;
32070 if (hi)
32071 res.push(hi, lo);
32072 else
32073 res.push(lo);
32074 }
32075 } else if (enc === 'hex') {
32076 msg = msg.replace(/[^a-z0-9]+/ig, '');
32077 if (msg.length % 2 !== 0)
32078 msg = '0' + msg;
32079 for (var i = 0; i < msg.length; i += 2)
32080 res.push(parseInt(msg[i] + msg[i + 1], 16));
32081 }
32082 return res;
32083 }
32084 utils.toArray = toArray;
32085
32086 function zero2(word) {
32087 if (word.length === 1)
32088 return '0' + word;
32089 else
32090 return word;
32091 }
32092 utils.zero2 = zero2;
32093
32094 function toHex(msg) {
32095 var res = '';
32096 for (var i = 0; i < msg.length; i++)
32097 res += zero2(msg[i].toString(16));
32098 return res;
32099 }
32100 utils.toHex = toHex;
32101
32102 utils.encode = function encode(arr, enc) {
32103 if (enc === 'hex')
32104 return toHex(arr);
32105 else
32106 return arr;
32107 };
32108
32109 // Represent num in a w-NAF form
32110 function getNAF(num, w) {
32111 var naf = [];
32112 var ws = 1 << (w + 1);
32113 var k = num.clone();
32114 while (k.cmpn(1) >= 0) {
32115 var z;
32116 if (k.isOdd()) {
32117 var mod = k.andln(ws - 1);
32118 if (mod > (ws >> 1) - 1)
32119 z = (ws >> 1) - mod;
32120 else
32121 z = mod;
32122 k.isubn(z);
32123 } else {
32124 z = 0;
32125 }
32126 naf.push(z);
32127
32128 // Optimization, shift by word if possible
32129 var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
32130 for (var i = 1; i < shift; i++)
32131 naf.push(0);
32132 k.iushrn(shift);
32133 }
32134
32135 return naf;
32136 }
32137 utils.getNAF = getNAF;
32138
32139 // Represent k1, k2 in a Joint Sparse Form
32140 function getJSF(k1, k2) {
32141 var jsf = [
32142 [],
32143 []
32144 ];
32145
32146 k1 = k1.clone();
32147 k2 = k2.clone();
32148 var d1 = 0;
32149 var d2 = 0;
32150 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
32151
32152 // First phase
32153 var m14 = (k1.andln(3) + d1) & 3;
32154 var m24 = (k2.andln(3) + d2) & 3;
32155 if (m14 === 3)
32156 m14 = -1;
32157 if (m24 === 3)
32158 m24 = -1;
32159 var u1;
32160 if ((m14 & 1) === 0) {
32161 u1 = 0;
32162 } else {
32163 var m8 = (k1.andln(7) + d1) & 7;
32164 if ((m8 === 3 || m8 === 5) && m24 === 2)
32165 u1 = -m14;
32166 else
32167 u1 = m14;
32168 }
32169 jsf[0].push(u1);
32170
32171 var u2;
32172 if ((m24 & 1) === 0) {
32173 u2 = 0;
32174 } else {
32175 var m8 = (k2.andln(7) + d2) & 7;
32176 if ((m8 === 3 || m8 === 5) && m14 === 2)
32177 u2 = -m24;
32178 else
32179 u2 = m24;
32180 }
32181 jsf[1].push(u2);
32182
32183 // Second phase
32184 if (2 * d1 === u1 + 1)
32185 d1 = 1 - d1;
32186 if (2 * d2 === u2 + 1)
32187 d2 = 1 - d2;
32188 k1.iushrn(1);
32189 k2.iushrn(1);
32190 }
32191
32192 return jsf;
32193 }
32194 utils.getJSF = getJSF;
32195
32196 function cachedProperty(obj, name, computer) {
32197 var key = '_' + name;
32198 obj.prototype[name] = function cachedProperty() {
32199 return this[key] !== undefined ? this[key] :
32200 this[key] = computer.call(this);
32201 };
32202 }
32203 utils.cachedProperty = cachedProperty;
32204
32205 function parseBytes(bytes) {
32206 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
32207 bytes;
32208 }
32209 utils.parseBytes = parseBytes;
32210
32211 function intFromLE(bytes) {
32212 return new BN(bytes, 'hex', 'le');
32213 }
32214 utils.intFromLE = intFromLE;
32215
32216
32217 },{"bn.js":33}],55:[function(require,module,exports){
32218 module.exports={
32219 "_args": [
32220 [
32221 {
32222 "raw": "elliptic@^6.2.3",
32223 "scope": null,
32224 "escapedName": "elliptic",
32225 "name": "elliptic",
32226 "rawSpec": "^6.2.3",
32227 "spec": ">=6.2.3 <7.0.0",
32228 "type": "range"
32229 },
32230 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
32231 ]
32232 ],
32233 "_from": "elliptic@>=6.2.3 <7.0.0",
32234 "_id": "elliptic@6.3.3",
32235 "_inCache": true,
32236 "_location": "/elliptic",
32237 "_nodeVersion": "7.0.0",
32238 "_npmOperationalInternal": {
32239 "host": "packages-18-east.internal.npmjs.com",
32240 "tmp": "tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
32241 },
32242 "_npmUser": {
32243 "name": "indutny",
32244 "email": "fedor@indutny.com"
32245 },
32246 "_npmVersion": "3.10.8",
32247 "_phantomChildren": {},
32248 "_requested": {
32249 "raw": "elliptic@^6.2.3",
32250 "scope": null,
32251 "escapedName": "elliptic",
32252 "name": "elliptic",
32253 "rawSpec": "^6.2.3",
32254 "spec": ">=6.2.3 <7.0.0",
32255 "type": "range"
32256 },
32257 "_requiredBy": [
32258 "/browserify-sign",
32259 "/create-ecdh",
32260 "/secp256k1"
32261 ],
32262 "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
32263 "_shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
32264 "_shrinkwrap": null,
32265 "_spec": "elliptic@^6.2.3",
32266 "_where": "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
32267 "author": {
32268 "name": "Fedor Indutny",
32269 "email": "fedor@indutny.com"
32270 },
32271 "bugs": {
32272 "url": "https://github.com/indutny/elliptic/issues"
32273 },
32274 "dependencies": {
32275 "bn.js": "^4.4.0",
32276 "brorand": "^1.0.1",
32277 "hash.js": "^1.0.0",
32278 "inherits": "^2.0.1"
32279 },
32280 "description": "EC cryptography",
32281 "devDependencies": {
32282 "brfs": "^1.4.3",
32283 "coveralls": "^2.11.3",
32284 "grunt": "^0.4.5",
32285 "grunt-browserify": "^5.0.0",
32286 "grunt-cli": "^1.2.0",
32287 "grunt-contrib-connect": "^1.0.0",
32288 "grunt-contrib-copy": "^1.0.0",
32289 "grunt-contrib-uglify": "^1.0.1",
32290 "grunt-mocha-istanbul": "^3.0.1",
32291 "grunt-saucelabs": "^8.6.2",
32292 "istanbul": "^0.4.2",
32293 "jscs": "^2.9.0",
32294 "jshint": "^2.6.0",
32295 "mocha": "^2.1.0"
32296 },
32297 "directories": {},
32298 "dist": {
32299 "shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
32300 "tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
32301 },
32302 "files": [
32303 "lib"
32304 ],
32305 "gitHead": "63aee8d697e9b7fac37ece24222029117a890a7e",
32306 "homepage": "https://github.com/indutny/elliptic",
32307 "keywords": [
32308 "EC",
32309 "Elliptic",
32310 "curve",
32311 "Cryptography"
32312 ],
32313 "license": "MIT",
32314 "main": "lib/elliptic.js",
32315 "maintainers": [
32316 {
32317 "name": "indutny",
32318 "email": "fedor@indutny.com"
32319 }
32320 ],
32321 "name": "elliptic",
32322 "optionalDependencies": {},
32323 "readme": "ERROR: No README data found!",
32324 "repository": {
32325 "type": "git",
32326 "url": "git+ssh://git@github.com/indutny/elliptic.git"
32327 },
32328 "scripts": {
32329 "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
32330 "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
32331 "lint": "npm run jscs && npm run jshint",
32332 "test": "npm run lint && npm run unit",
32333 "unit": "istanbul test _mocha --reporter=spec test/index.js",
32334 "version": "grunt dist && git add dist/"
32335 },
32336 "version": "6.3.3"
32337 }
32338
32339 },{}],56:[function(require,module,exports){
32340 (function (Buffer){
32341 'use strict';
32342
32343 var isHexPrefixed = require('is-hex-prefixed');
32344 var stripHexPrefix = require('strip-hex-prefix');
32345
32346 /**
32347 * Pads a `String` to have an even length
32348 * @param {String} value
32349 * @return {String} output
32350 */
32351 function padToEven(value) {
32352 var a = value; // eslint-disable-line
32353
32354 if (typeof a !== 'string') {
32355 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
32356 }
32357
32358 if (a.length % 2) {
32359 a = '0' + a;
32360 }
32361
32362 return a;
32363 }
32364
32365 /**
32366 * Converts a `Number` into a hex `String`
32367 * @param {Number} i
32368 * @return {String}
32369 */
32370 function intToHex(i) {
32371 var hex = i.toString(16); // eslint-disable-line
32372
32373 return '0x' + padToEven(hex);
32374 }
32375
32376 /**
32377 * Converts an `Number` to a `Buffer`
32378 * @param {Number} i
32379 * @return {Buffer}
32380 */
32381 function intToBuffer(i) {
32382 var hex = intToHex(i);
32383
32384 return new Buffer(hex.slice(2), 'hex');
32385 }
32386
32387 /**
32388 * Get the binary size of a string
32389 * @param {String} str
32390 * @return {Number}
32391 */
32392 function getBinarySize(str) {
32393 if (typeof str !== 'string') {
32394 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
32395 }
32396
32397 return Buffer.byteLength(str, 'utf8');
32398 }
32399
32400 /**
32401 * Returns TRUE if the first specified array contains all elements
32402 * from the second one. FALSE otherwise.
32403 *
32404 * @param {array} superset
32405 * @param {array} subset
32406 *
32407 * @returns {boolean}
32408 */
32409 function arrayContainsArray(superset, subset, some) {
32410 if (Array.isArray(superset) !== true) {
32411 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
32412 }
32413 if (Array.isArray(subset) !== true) {
32414 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
32415 }
32416
32417 return subset[Boolean(some) && 'some' || 'every'](function (value) {
32418 return superset.indexOf(value) >= 0;
32419 });
32420 }
32421
32422 /**
32423 * Should be called to get utf8 from it's hex representation
32424 *
32425 * @method toUtf8
32426 * @param {String} string in hex
32427 * @returns {String} ascii string representation of hex value
32428 */
32429 function toUtf8(hex) {
32430 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');
32431
32432 return bufferValue.toString('utf8');
32433 }
32434
32435 /**
32436 * Should be called to get ascii from it's hex representation
32437 *
32438 * @method toAscii
32439 * @param {String} string in hex
32440 * @returns {String} ascii string representation of hex value
32441 */
32442 function toAscii(hex) {
32443 var str = ''; // eslint-disable-line
32444 var i = 0,
32445 l = hex.length; // eslint-disable-line
32446
32447 if (hex.substring(0, 2) === '0x') {
32448 i = 2;
32449 }
32450
32451 for (; i < l; i += 2) {
32452 var code = parseInt(hex.substr(i, 2), 16);
32453 str += String.fromCharCode(code);
32454 }
32455
32456 return str;
32457 }
32458
32459 /**
32460 * Should be called to get hex representation (prefixed by 0x) of utf8 string
32461 *
32462 * @method fromUtf8
32463 * @param {String} string
32464 * @param {Number} optional padding
32465 * @returns {String} hex representation of input string
32466 */
32467 function fromUtf8(stringValue) {
32468 var str = new Buffer(stringValue, 'utf8');
32469
32470 return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');
32471 }
32472
32473 /**
32474 * Should be called to get hex representation (prefixed by 0x) of ascii string
32475 *
32476 * @method fromAscii
32477 * @param {String} string
32478 * @param {Number} optional padding
32479 * @returns {String} hex representation of input string
32480 */
32481 function fromAscii(stringValue) {
32482 var hex = ''; // eslint-disable-line
32483 for (var i = 0; i < stringValue.length; i++) {
32484 // eslint-disable-line
32485 var code = stringValue.charCodeAt(i);
32486 var n = code.toString(16);
32487 hex += n.length < 2 ? '0' + n : n;
32488 }
32489
32490 return '0x' + hex;
32491 }
32492
32493 /**
32494 * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]
32495 *
32496 * @method getKeys get specific key from inner object array of objects
32497 * @param {String} params
32498 * @param {String} key
32499 * @param {Boolean} allowEmpty
32500 * @returns {Array} output just a simple array of output keys
32501 */
32502 function getKeys(params, key, allowEmpty) {
32503 if (!Array.isArray(params)) {
32504 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
32505 }
32506 if (typeof key !== 'string') {
32507 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
32508 }
32509
32510 var result = []; // eslint-disable-line
32511
32512 for (var i = 0; i < params.length; i++) {
32513 // eslint-disable-line
32514 var value = params[i][key]; // eslint-disable-line
32515 if (allowEmpty && !value) {
32516 value = '';
32517 } else if (typeof value !== 'string') {
32518 throw new Error('invalid abi');
32519 }
32520 result.push(value);
32521 }
32522
32523 return result;
32524 }
32525
32526 /**
32527 * Is the string a hex string.
32528 *
32529 * @method check if string is hex string of specific length
32530 * @param {String} value
32531 * @param {Number} length
32532 * @returns {Boolean} output the string is a hex string
32533 */
32534 function isHexString(value, length) {
32535 if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
32536 return false;
32537 }
32538
32539 if (length && value.length !== 2 + 2 * length) {
32540 return false;
32541 }
32542
32543 return true;
32544 }
32545
32546 module.exports = {
32547 arrayContainsArray: arrayContainsArray,
32548 intToBuffer: intToBuffer,
32549 getBinarySize: getBinarySize,
32550 isHexPrefixed: isHexPrefixed,
32551 stripHexPrefix: stripHexPrefix,
32552 padToEven: padToEven,
32553 intToHex: intToHex,
32554 fromAscii: fromAscii,
32555 fromUtf8: fromUtf8,
32556 toAscii: toAscii,
32557 toUtf8: toUtf8,
32558 getKeys: getKeys,
32559 isHexString: isHexString
32560 };
32561 }).call(this,require("buffer").Buffer)
32562 },{"buffer":5,"is-hex-prefixed":64,"strip-hex-prefix":87}],57:[function(require,module,exports){
32563 var hash = exports;
32564
32565 hash.utils = require('./hash/utils');
32566 hash.common = require('./hash/common');
32567 hash.sha = require('./hash/sha');
32568 hash.ripemd = require('./hash/ripemd');
32569 hash.hmac = require('./hash/hmac');
32570
32571 // Proxy hash functions to the main object
32572 hash.sha1 = hash.sha.sha1;
32573 hash.sha256 = hash.sha.sha256;
32574 hash.sha224 = hash.sha.sha224;
32575 hash.sha384 = hash.sha.sha384;
32576 hash.sha512 = hash.sha.sha512;
32577 hash.ripemd160 = hash.ripemd.ripemd160;
32578
32579 },{"./hash/common":58,"./hash/hmac":59,"./hash/ripemd":60,"./hash/sha":61,"./hash/utils":62}],58:[function(require,module,exports){
32580 var hash = require('../hash');
32581 var utils = hash.utils;
32582 var assert = utils.assert;
32583
32584 function BlockHash() {
32585 this.pending = null;
32586 this.pendingTotal = 0;
32587 this.blockSize = this.constructor.blockSize;
32588 this.outSize = this.constructor.outSize;
32589 this.hmacStrength = this.constructor.hmacStrength;
32590 this.padLength = this.constructor.padLength / 8;
32591 this.endian = 'big';
32592
32593 this._delta8 = this.blockSize / 8;
32594 this._delta32 = this.blockSize / 32;
32595 }
32596 exports.BlockHash = BlockHash;
32597
32598 BlockHash.prototype.update = function update(msg, enc) {
32599 // Convert message to array, pad it, and join into 32bit blocks
32600 msg = utils.toArray(msg, enc);
32601 if (!this.pending)
32602 this.pending = msg;
32603 else
32604 this.pending = this.pending.concat(msg);
32605 this.pendingTotal += msg.length;
32606
32607 // Enough data, try updating
32608 if (this.pending.length >= this._delta8) {
32609 msg = this.pending;
32610
32611 // Process pending data in blocks
32612 var r = msg.length % this._delta8;
32613 this.pending = msg.slice(msg.length - r, msg.length);
32614 if (this.pending.length === 0)
32615 this.pending = null;
32616
32617 msg = utils.join32(msg, 0, msg.length - r, this.endian);
32618 for (var i = 0; i < msg.length; i += this._delta32)
32619 this._update(msg, i, i + this._delta32);
32620 }
32621
32622 return this;
32623 };
32624
32625 BlockHash.prototype.digest = function digest(enc) {
32626 this.update(this._pad());
32627 assert(this.pending === null);
32628
32629 return this._digest(enc);
32630 };
32631
32632 BlockHash.prototype._pad = function pad() {
32633 var len = this.pendingTotal;
32634 var bytes = this._delta8;
32635 var k = bytes - ((len + this.padLength) % bytes);
32636 var res = new Array(k + this.padLength);
32637 res[0] = 0x80;
32638 for (var i = 1; i < k; i++)
32639 res[i] = 0;
32640
32641 // Append length
32642 len <<= 3;
32643 if (this.endian === 'big') {
32644 for (var t = 8; t < this.padLength; t++)
32645 res[i++] = 0;
32646
32647 res[i++] = 0;
32648 res[i++] = 0;
32649 res[i++] = 0;
32650 res[i++] = 0;
32651 res[i++] = (len >>> 24) & 0xff;
32652 res[i++] = (len >>> 16) & 0xff;
32653 res[i++] = (len >>> 8) & 0xff;
32654 res[i++] = len & 0xff;
32655 } else {
32656 res[i++] = len & 0xff;
32657 res[i++] = (len >>> 8) & 0xff;
32658 res[i++] = (len >>> 16) & 0xff;
32659 res[i++] = (len >>> 24) & 0xff;
32660 res[i++] = 0;
32661 res[i++] = 0;
32662 res[i++] = 0;
32663 res[i++] = 0;
32664
32665 for (var t = 8; t < this.padLength; t++)
32666 res[i++] = 0;
32667 }
32668
32669 return res;
32670 };
32671
32672 },{"../hash":57}],59:[function(require,module,exports){
32673 var hmac = exports;
32674
32675 var hash = require('../hash');
32676 var utils = hash.utils;
32677 var assert = utils.assert;
32678
32679 function Hmac(hash, key, enc) {
32680 if (!(this instanceof Hmac))
32681 return new Hmac(hash, key, enc);
32682 this.Hash = hash;
32683 this.blockSize = hash.blockSize / 8;
32684 this.outSize = hash.outSize / 8;
32685 this.inner = null;
32686 this.outer = null;
32687
32688 this._init(utils.toArray(key, enc));
32689 }
32690 module.exports = Hmac;
32691
32692 Hmac.prototype._init = function init(key) {
32693 // Shorten key, if needed
32694 if (key.length > this.blockSize)
32695 key = new this.Hash().update(key).digest();
32696 assert(key.length <= this.blockSize);
32697
32698 // Add padding to key
32699 for (var i = key.length; i < this.blockSize; i++)
32700 key.push(0);
32701
32702 for (var i = 0; i < key.length; i++)
32703 key[i] ^= 0x36;
32704 this.inner = new this.Hash().update(key);
32705
32706 // 0x36 ^ 0x5c = 0x6a
32707 for (var i = 0; i < key.length; i++)
32708 key[i] ^= 0x6a;
32709 this.outer = new this.Hash().update(key);
32710 };
32711
32712 Hmac.prototype.update = function update(msg, enc) {
32713 this.inner.update(msg, enc);
32714 return this;
32715 };
32716
32717 Hmac.prototype.digest = function digest(enc) {
32718 this.outer.update(this.inner.digest());
32719 return this.outer.digest(enc);
32720 };
32721
32722 },{"../hash":57}],60:[function(require,module,exports){
32723 var hash = require('../hash');
32724 var utils = hash.utils;
32725
32726 var rotl32 = utils.rotl32;
32727 var sum32 = utils.sum32;
32728 var sum32_3 = utils.sum32_3;
32729 var sum32_4 = utils.sum32_4;
32730 var BlockHash = hash.common.BlockHash;
32731
32732 function RIPEMD160() {
32733 if (!(this instanceof RIPEMD160))
32734 return new RIPEMD160();
32735
32736 BlockHash.call(this);
32737
32738 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
32739 this.endian = 'little';
32740 }
32741 utils.inherits(RIPEMD160, BlockHash);
32742 exports.ripemd160 = RIPEMD160;
32743
32744 RIPEMD160.blockSize = 512;
32745 RIPEMD160.outSize = 160;
32746 RIPEMD160.hmacStrength = 192;
32747 RIPEMD160.padLength = 64;
32748
32749 RIPEMD160.prototype._update = function update(msg, start) {
32750 var A = this.h[0];
32751 var B = this.h[1];
32752 var C = this.h[2];
32753 var D = this.h[3];
32754 var E = this.h[4];
32755 var Ah = A;
32756 var Bh = B;
32757 var Ch = C;
32758 var Dh = D;
32759 var Eh = E;
32760 for (var j = 0; j < 80; j++) {
32761 var T = sum32(
32762 rotl32(
32763 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
32764 s[j]),
32765 E);
32766 A = E;
32767 E = D;
32768 D = rotl32(C, 10);
32769 C = B;
32770 B = T;
32771 T = sum32(
32772 rotl32(
32773 sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
32774 sh[j]),
32775 Eh);
32776 Ah = Eh;
32777 Eh = Dh;
32778 Dh = rotl32(Ch, 10);
32779 Ch = Bh;
32780 Bh = T;
32781 }
32782 T = sum32_3(this.h[1], C, Dh);
32783 this.h[1] = sum32_3(this.h[2], D, Eh);
32784 this.h[2] = sum32_3(this.h[3], E, Ah);
32785 this.h[3] = sum32_3(this.h[4], A, Bh);
32786 this.h[4] = sum32_3(this.h[0], B, Ch);
32787 this.h[0] = T;
32788 };
32789
32790 RIPEMD160.prototype._digest = function digest(enc) {
32791 if (enc === 'hex')
32792 return utils.toHex32(this.h, 'little');
32793 else
32794 return utils.split32(this.h, 'little');
32795 };
32796
32797 function f(j, x, y, z) {
32798 if (j <= 15)
32799 return x ^ y ^ z;
32800 else if (j <= 31)
32801 return (x & y) | ((~x) & z);
32802 else if (j <= 47)
32803 return (x | (~y)) ^ z;
32804 else if (j <= 63)
32805 return (x & z) | (y & (~z));
32806 else
32807 return x ^ (y | (~z));
32808 }
32809
32810 function K(j) {
32811 if (j <= 15)
32812 return 0x00000000;
32813 else if (j <= 31)
32814 return 0x5a827999;
32815 else if (j <= 47)
32816 return 0x6ed9eba1;
32817 else if (j <= 63)
32818 return 0x8f1bbcdc;
32819 else
32820 return 0xa953fd4e;
32821 }
32822
32823 function Kh(j) {
32824 if (j <= 15)
32825 return 0x50a28be6;
32826 else if (j <= 31)
32827 return 0x5c4dd124;
32828 else if (j <= 47)
32829 return 0x6d703ef3;
32830 else if (j <= 63)
32831 return 0x7a6d76e9;
32832 else
32833 return 0x00000000;
32834 }
32835
32836 var r = [
32837 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
32838 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
32839 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
32840 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
32841 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
32842 ];
32843
32844 var rh = [
32845 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
32846 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
32847 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
32848 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
32849 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
32850 ];
32851
32852 var s = [
32853 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
32854 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
32855 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
32856 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
32857 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
32858 ];
32859
32860 var sh = [
32861 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
32862 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
32863 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
32864 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
32865 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
32866 ];
32867
32868 },{"../hash":57}],61:[function(require,module,exports){
32869 var hash = require('../hash');
32870 var utils = hash.utils;
32871 var assert = utils.assert;
32872
32873 var rotr32 = utils.rotr32;
32874 var rotl32 = utils.rotl32;
32875 var sum32 = utils.sum32;
32876 var sum32_4 = utils.sum32_4;
32877 var sum32_5 = utils.sum32_5;
32878 var rotr64_hi = utils.rotr64_hi;
32879 var rotr64_lo = utils.rotr64_lo;
32880 var shr64_hi = utils.shr64_hi;
32881 var shr64_lo = utils.shr64_lo;
32882 var sum64 = utils.sum64;
32883 var sum64_hi = utils.sum64_hi;
32884 var sum64_lo = utils.sum64_lo;
32885 var sum64_4_hi = utils.sum64_4_hi;
32886 var sum64_4_lo = utils.sum64_4_lo;
32887 var sum64_5_hi = utils.sum64_5_hi;
32888 var sum64_5_lo = utils.sum64_5_lo;
32889 var BlockHash = hash.common.BlockHash;
32890
32891 var sha256_K = [
32892 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
32893 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
32894 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
32895 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
32896 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
32897 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
32898 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
32899 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
32900 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
32901 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
32902 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
32903 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
32904 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
32905 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
32906 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
32907 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
32908 ];
32909
32910 var sha512_K = [
32911 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
32912 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
32913 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
32914 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
32915 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
32916 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
32917 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
32918 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
32919 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
32920 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
32921 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
32922 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
32923 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
32924 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
32925 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
32926 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
32927 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
32928 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
32929 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
32930 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
32931 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
32932 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
32933 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
32934 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
32935 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
32936 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
32937 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
32938 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
32939 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
32940 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
32941 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
32942 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
32943 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
32944 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
32945 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
32946 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
32947 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
32948 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
32949 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
32950 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
32951 ];
32952
32953 var sha1_K = [
32954 0x5A827999, 0x6ED9EBA1,
32955 0x8F1BBCDC, 0xCA62C1D6
32956 ];
32957
32958 function SHA256() {
32959 if (!(this instanceof SHA256))
32960 return new SHA256();
32961
32962 BlockHash.call(this);
32963 this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
32964 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];
32965 this.k = sha256_K;
32966 this.W = new Array(64);
32967 }
32968 utils.inherits(SHA256, BlockHash);
32969 exports.sha256 = SHA256;
32970
32971 SHA256.blockSize = 512;
32972 SHA256.outSize = 256;
32973 SHA256.hmacStrength = 192;
32974 SHA256.padLength = 64;
32975
32976 SHA256.prototype._update = function _update(msg, start) {
32977 var W = this.W;
32978
32979 for (var i = 0; i < 16; i++)
32980 W[i] = msg[start + i];
32981 for (; i < W.length; i++)
32982 W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
32983
32984 var a = this.h[0];
32985 var b = this.h[1];
32986 var c = this.h[2];
32987 var d = this.h[3];
32988 var e = this.h[4];
32989 var f = this.h[5];
32990 var g = this.h[6];
32991 var h = this.h[7];
32992
32993 assert(this.k.length === W.length);
32994 for (var i = 0; i < W.length; i++) {
32995 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
32996 var T2 = sum32(s0_256(a), maj32(a, b, c));
32997 h = g;
32998 g = f;
32999 f = e;
33000 e = sum32(d, T1);
33001 d = c;
33002 c = b;
33003 b = a;
33004 a = sum32(T1, T2);
33005 }
33006
33007 this.h[0] = sum32(this.h[0], a);
33008 this.h[1] = sum32(this.h[1], b);
33009 this.h[2] = sum32(this.h[2], c);
33010 this.h[3] = sum32(this.h[3], d);
33011 this.h[4] = sum32(this.h[4], e);
33012 this.h[5] = sum32(this.h[5], f);
33013 this.h[6] = sum32(this.h[6], g);
33014 this.h[7] = sum32(this.h[7], h);
33015 };
33016
33017 SHA256.prototype._digest = function digest(enc) {
33018 if (enc === 'hex')
33019 return utils.toHex32(this.h, 'big');
33020 else
33021 return utils.split32(this.h, 'big');
33022 };
33023
33024 function SHA224() {
33025 if (!(this instanceof SHA224))
33026 return new SHA224();
33027
33028 SHA256.call(this);
33029 this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
33030 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
33031 }
33032 utils.inherits(SHA224, SHA256);
33033 exports.sha224 = SHA224;
33034
33035 SHA224.blockSize = 512;
33036 SHA224.outSize = 224;
33037 SHA224.hmacStrength = 192;
33038 SHA224.padLength = 64;
33039
33040 SHA224.prototype._digest = function digest(enc) {
33041 // Just truncate output
33042 if (enc === 'hex')
33043 return utils.toHex32(this.h.slice(0, 7), 'big');
33044 else
33045 return utils.split32(this.h.slice(0, 7), 'big');
33046 };
33047
33048 function SHA512() {
33049 if (!(this instanceof SHA512))
33050 return new SHA512();
33051
33052 BlockHash.call(this);
33053 this.h = [ 0x6a09e667, 0xf3bcc908,
33054 0xbb67ae85, 0x84caa73b,
33055 0x3c6ef372, 0xfe94f82b,
33056 0xa54ff53a, 0x5f1d36f1,
33057 0x510e527f, 0xade682d1,
33058 0x9b05688c, 0x2b3e6c1f,
33059 0x1f83d9ab, 0xfb41bd6b,
33060 0x5be0cd19, 0x137e2179 ];
33061 this.k = sha512_K;
33062 this.W = new Array(160);
33063 }
33064 utils.inherits(SHA512, BlockHash);
33065 exports.sha512 = SHA512;
33066
33067 SHA512.blockSize = 1024;
33068 SHA512.outSize = 512;
33069 SHA512.hmacStrength = 192;
33070 SHA512.padLength = 128;
33071
33072 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
33073 var W = this.W;
33074
33075 // 32 x 32bit words
33076 for (var i = 0; i < 32; i++)
33077 W[i] = msg[start + i];
33078 for (; i < W.length; i += 2) {
33079 var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
33080 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
33081 var c1_hi = W[i - 14]; // i - 7
33082 var c1_lo = W[i - 13];
33083 var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
33084 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
33085 var c3_hi = W[i - 32]; // i - 16
33086 var c3_lo = W[i - 31];
33087
33088 W[i] = sum64_4_hi(c0_hi, c0_lo,
33089 c1_hi, c1_lo,
33090 c2_hi, c2_lo,
33091 c3_hi, c3_lo);
33092 W[i + 1] = sum64_4_lo(c0_hi, c0_lo,
33093 c1_hi, c1_lo,
33094 c2_hi, c2_lo,
33095 c3_hi, c3_lo);
33096 }
33097 };
33098
33099 SHA512.prototype._update = function _update(msg, start) {
33100 this._prepareBlock(msg, start);
33101
33102 var W = this.W;
33103
33104 var ah = this.h[0];
33105 var al = this.h[1];
33106 var bh = this.h[2];
33107 var bl = this.h[3];
33108 var ch = this.h[4];
33109 var cl = this.h[5];
33110 var dh = this.h[6];
33111 var dl = this.h[7];
33112 var eh = this.h[8];
33113 var el = this.h[9];
33114 var fh = this.h[10];
33115 var fl = this.h[11];
33116 var gh = this.h[12];
33117 var gl = this.h[13];
33118 var hh = this.h[14];
33119 var hl = this.h[15];
33120
33121 assert(this.k.length === W.length);
33122 for (var i = 0; i < W.length; i += 2) {
33123 var c0_hi = hh;
33124 var c0_lo = hl;
33125 var c1_hi = s1_512_hi(eh, el);
33126 var c1_lo = s1_512_lo(eh, el);
33127 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
33128 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
33129 var c3_hi = this.k[i];
33130 var c3_lo = this.k[i + 1];
33131 var c4_hi = W[i];
33132 var c4_lo = W[i + 1];
33133
33134 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
33135 c1_hi, c1_lo,
33136 c2_hi, c2_lo,
33137 c3_hi, c3_lo,
33138 c4_hi, c4_lo);
33139 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
33140 c1_hi, c1_lo,
33141 c2_hi, c2_lo,
33142 c3_hi, c3_lo,
33143 c4_hi, c4_lo);
33144
33145 var c0_hi = s0_512_hi(ah, al);
33146 var c0_lo = s0_512_lo(ah, al);
33147 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
33148 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
33149
33150 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
33151 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
33152
33153 hh = gh;
33154 hl = gl;
33155
33156 gh = fh;
33157 gl = fl;
33158
33159 fh = eh;
33160 fl = el;
33161
33162 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
33163 el = sum64_lo(dl, dl, T1_hi, T1_lo);
33164
33165 dh = ch;
33166 dl = cl;
33167
33168 ch = bh;
33169 cl = bl;
33170
33171 bh = ah;
33172 bl = al;
33173
33174 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
33175 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
33176 }
33177
33178 sum64(this.h, 0, ah, al);
33179 sum64(this.h, 2, bh, bl);
33180 sum64(this.h, 4, ch, cl);
33181 sum64(this.h, 6, dh, dl);
33182 sum64(this.h, 8, eh, el);
33183 sum64(this.h, 10, fh, fl);
33184 sum64(this.h, 12, gh, gl);
33185 sum64(this.h, 14, hh, hl);
33186 };
33187
33188 SHA512.prototype._digest = function digest(enc) {
33189 if (enc === 'hex')
33190 return utils.toHex32(this.h, 'big');
33191 else
33192 return utils.split32(this.h, 'big');
33193 };
33194
33195 function SHA384() {
33196 if (!(this instanceof SHA384))
33197 return new SHA384();
33198
33199 SHA512.call(this);
33200 this.h = [ 0xcbbb9d5d, 0xc1059ed8,
33201 0x629a292a, 0x367cd507,
33202 0x9159015a, 0x3070dd17,
33203 0x152fecd8, 0xf70e5939,
33204 0x67332667, 0xffc00b31,
33205 0x8eb44a87, 0x68581511,
33206 0xdb0c2e0d, 0x64f98fa7,
33207 0x47b5481d, 0xbefa4fa4 ];
33208 }
33209 utils.inherits(SHA384, SHA512);
33210 exports.sha384 = SHA384;
33211
33212 SHA384.blockSize = 1024;
33213 SHA384.outSize = 384;
33214 SHA384.hmacStrength = 192;
33215 SHA384.padLength = 128;
33216
33217 SHA384.prototype._digest = function digest(enc) {
33218 if (enc === 'hex')
33219 return utils.toHex32(this.h.slice(0, 12), 'big');
33220 else
33221 return utils.split32(this.h.slice(0, 12), 'big');
33222 };
33223
33224 function SHA1() {
33225 if (!(this instanceof SHA1))
33226 return new SHA1();
33227
33228 BlockHash.call(this);
33229 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,
33230 0x10325476, 0xc3d2e1f0 ];
33231 this.W = new Array(80);
33232 }
33233
33234 utils.inherits(SHA1, BlockHash);
33235 exports.sha1 = SHA1;
33236
33237 SHA1.blockSize = 512;
33238 SHA1.outSize = 160;
33239 SHA1.hmacStrength = 80;
33240 SHA1.padLength = 64;
33241
33242 SHA1.prototype._update = function _update(msg, start) {
33243 var W = this.W;
33244
33245 for (var i = 0; i < 16; i++)
33246 W[i] = msg[start + i];
33247
33248 for(; i < W.length; i++)
33249 W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
33250
33251 var a = this.h[0];
33252 var b = this.h[1];
33253 var c = this.h[2];
33254 var d = this.h[3];
33255 var e = this.h[4];
33256
33257 for (var i = 0; i < W.length; i++) {
33258 var s = ~~(i / 20);
33259 var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
33260 e = d;
33261 d = c;
33262 c = rotl32(b, 30);
33263 b = a;
33264 a = t;
33265 }
33266
33267 this.h[0] = sum32(this.h[0], a);
33268 this.h[1] = sum32(this.h[1], b);
33269 this.h[2] = sum32(this.h[2], c);
33270 this.h[3] = sum32(this.h[3], d);
33271 this.h[4] = sum32(this.h[4], e);
33272 };
33273
33274 SHA1.prototype._digest = function digest(enc) {
33275 if (enc === 'hex')
33276 return utils.toHex32(this.h, 'big');
33277 else
33278 return utils.split32(this.h, 'big');
33279 };
33280
33281 function ch32(x, y, z) {
33282 return (x & y) ^ ((~x) & z);
33283 }
33284
33285 function maj32(x, y, z) {
33286 return (x & y) ^ (x & z) ^ (y & z);
33287 }
33288
33289 function p32(x, y, z) {
33290 return x ^ y ^ z;
33291 }
33292
33293 function s0_256(x) {
33294 return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
33295 }
33296
33297 function s1_256(x) {
33298 return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
33299 }
33300
33301 function g0_256(x) {
33302 return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
33303 }
33304
33305 function g1_256(x) {
33306 return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
33307 }
33308
33309 function ft_1(s, x, y, z) {
33310 if (s === 0)
33311 return ch32(x, y, z);
33312 if (s === 1 || s === 3)
33313 return p32(x, y, z);
33314 if (s === 2)
33315 return maj32(x, y, z);
33316 }
33317
33318 function ch64_hi(xh, xl, yh, yl, zh, zl) {
33319 var r = (xh & yh) ^ ((~xh) & zh);
33320 if (r < 0)
33321 r += 0x100000000;
33322 return r;
33323 }
33324
33325 function ch64_lo(xh, xl, yh, yl, zh, zl) {
33326 var r = (xl & yl) ^ ((~xl) & zl);
33327 if (r < 0)
33328 r += 0x100000000;
33329 return r;
33330 }
33331
33332 function maj64_hi(xh, xl, yh, yl, zh, zl) {
33333 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
33334 if (r < 0)
33335 r += 0x100000000;
33336 return r;
33337 }
33338
33339 function maj64_lo(xh, xl, yh, yl, zh, zl) {
33340 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
33341 if (r < 0)
33342 r += 0x100000000;
33343 return r;
33344 }
33345
33346 function s0_512_hi(xh, xl) {
33347 var c0_hi = rotr64_hi(xh, xl, 28);
33348 var c1_hi = rotr64_hi(xl, xh, 2); // 34
33349 var c2_hi = rotr64_hi(xl, xh, 7); // 39
33350
33351 var r = c0_hi ^ c1_hi ^ c2_hi;
33352 if (r < 0)
33353 r += 0x100000000;
33354 return r;
33355 }
33356
33357 function s0_512_lo(xh, xl) {
33358 var c0_lo = rotr64_lo(xh, xl, 28);
33359 var c1_lo = rotr64_lo(xl, xh, 2); // 34
33360 var c2_lo = rotr64_lo(xl, xh, 7); // 39
33361
33362 var r = c0_lo ^ c1_lo ^ c2_lo;
33363 if (r < 0)
33364 r += 0x100000000;
33365 return r;
33366 }
33367
33368 function s1_512_hi(xh, xl) {
33369 var c0_hi = rotr64_hi(xh, xl, 14);
33370 var c1_hi = rotr64_hi(xh, xl, 18);
33371 var c2_hi = rotr64_hi(xl, xh, 9); // 41
33372
33373 var r = c0_hi ^ c1_hi ^ c2_hi;
33374 if (r < 0)
33375 r += 0x100000000;
33376 return r;
33377 }
33378
33379 function s1_512_lo(xh, xl) {
33380 var c0_lo = rotr64_lo(xh, xl, 14);
33381 var c1_lo = rotr64_lo(xh, xl, 18);
33382 var c2_lo = rotr64_lo(xl, xh, 9); // 41
33383
33384 var r = c0_lo ^ c1_lo ^ c2_lo;
33385 if (r < 0)
33386 r += 0x100000000;
33387 return r;
33388 }
33389
33390 function g0_512_hi(xh, xl) {
33391 var c0_hi = rotr64_hi(xh, xl, 1);
33392 var c1_hi = rotr64_hi(xh, xl, 8);
33393 var c2_hi = shr64_hi(xh, xl, 7);
33394
33395 var r = c0_hi ^ c1_hi ^ c2_hi;
33396 if (r < 0)
33397 r += 0x100000000;
33398 return r;
33399 }
33400
33401 function g0_512_lo(xh, xl) {
33402 var c0_lo = rotr64_lo(xh, xl, 1);
33403 var c1_lo = rotr64_lo(xh, xl, 8);
33404 var c2_lo = shr64_lo(xh, xl, 7);
33405
33406 var r = c0_lo ^ c1_lo ^ c2_lo;
33407 if (r < 0)
33408 r += 0x100000000;
33409 return r;
33410 }
33411
33412 function g1_512_hi(xh, xl) {
33413 var c0_hi = rotr64_hi(xh, xl, 19);
33414 var c1_hi = rotr64_hi(xl, xh, 29); // 61
33415 var c2_hi = shr64_hi(xh, xl, 6);
33416
33417 var r = c0_hi ^ c1_hi ^ c2_hi;
33418 if (r < 0)
33419 r += 0x100000000;
33420 return r;
33421 }
33422
33423 function g1_512_lo(xh, xl) {
33424 var c0_lo = rotr64_lo(xh, xl, 19);
33425 var c1_lo = rotr64_lo(xl, xh, 29); // 61
33426 var c2_lo = shr64_lo(xh, xl, 6);
33427
33428 var r = c0_lo ^ c1_lo ^ c2_lo;
33429 if (r < 0)
33430 r += 0x100000000;
33431 return r;
33432 }
33433
33434 },{"../hash":57}],62:[function(require,module,exports){
33435 var utils = exports;
33436 var inherits = require('inherits');
33437
33438 function toArray(msg, enc) {
33439 if (Array.isArray(msg))
33440 return msg.slice();
33441 if (!msg)
33442 return [];
33443 var res = [];
33444 if (typeof msg === 'string') {
33445 if (!enc) {
33446 for (var i = 0; i < msg.length; i++) {
33447 var c = msg.charCodeAt(i);
33448 var hi = c >> 8;
33449 var lo = c & 0xff;
33450 if (hi)
33451 res.push(hi, lo);
33452 else
33453 res.push(lo);
33454 }
33455 } else if (enc === 'hex') {
33456 msg = msg.replace(/[^a-z0-9]+/ig, '');
33457 if (msg.length % 2 !== 0)
33458 msg = '0' + msg;
33459 for (var i = 0; i < msg.length; i += 2)
33460 res.push(parseInt(msg[i] + msg[i + 1], 16));
33461 }
33462 } else {
33463 for (var i = 0; i < msg.length; i++)
33464 res[i] = msg[i] | 0;
33465 }
33466 return res;
33467 }
33468 utils.toArray = toArray;
33469
33470 function toHex(msg) {
33471 var res = '';
33472 for (var i = 0; i < msg.length; i++)
33473 res += zero2(msg[i].toString(16));
33474 return res;
33475 }
33476 utils.toHex = toHex;
33477
33478 function htonl(w) {
33479 var res = (w >>> 24) |
33480 ((w >>> 8) & 0xff00) |
33481 ((w << 8) & 0xff0000) |
33482 ((w & 0xff) << 24);
33483 return res >>> 0;
33484 }
33485 utils.htonl = htonl;
33486
33487 function toHex32(msg, endian) {
33488 var res = '';
33489 for (var i = 0; i < msg.length; i++) {
33490 var w = msg[i];
33491 if (endian === 'little')
33492 w = htonl(w);
33493 res += zero8(w.toString(16));
33494 }
33495 return res;
33496 }
33497 utils.toHex32 = toHex32;
33498
33499 function zero2(word) {
33500 if (word.length === 1)
33501 return '0' + word;
33502 else
33503 return word;
33504 }
33505 utils.zero2 = zero2;
33506
33507 function zero8(word) {
33508 if (word.length === 7)
33509 return '0' + word;
33510 else if (word.length === 6)
33511 return '00' + word;
33512 else if (word.length === 5)
33513 return '000' + word;
33514 else if (word.length === 4)
33515 return '0000' + word;
33516 else if (word.length === 3)
33517 return '00000' + word;
33518 else if (word.length === 2)
33519 return '000000' + word;
33520 else if (word.length === 1)
33521 return '0000000' + word;
33522 else
33523 return word;
33524 }
33525 utils.zero8 = zero8;
33526
33527 function join32(msg, start, end, endian) {
33528 var len = end - start;
33529 assert(len % 4 === 0);
33530 var res = new Array(len / 4);
33531 for (var i = 0, k = start; i < res.length; i++, k += 4) {
33532 var w;
33533 if (endian === 'big')
33534 w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
33535 else
33536 w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
33537 res[i] = w >>> 0;
33538 }
33539 return res;
33540 }
33541 utils.join32 = join32;
33542
33543 function split32(msg, endian) {
33544 var res = new Array(msg.length * 4);
33545 for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
33546 var m = msg[i];
33547 if (endian === 'big') {
33548 res[k] = m >>> 24;
33549 res[k + 1] = (m >>> 16) & 0xff;
33550 res[k + 2] = (m >>> 8) & 0xff;
33551 res[k + 3] = m & 0xff;
33552 } else {
33553 res[k + 3] = m >>> 24;
33554 res[k + 2] = (m >>> 16) & 0xff;
33555 res[k + 1] = (m >>> 8) & 0xff;
33556 res[k] = m & 0xff;
33557 }
33558 }
33559 return res;
33560 }
33561 utils.split32 = split32;
33562
33563 function rotr32(w, b) {
33564 return (w >>> b) | (w << (32 - b));
33565 }
33566 utils.rotr32 = rotr32;
33567
33568 function rotl32(w, b) {
33569 return (w << b) | (w >>> (32 - b));
33570 }
33571 utils.rotl32 = rotl32;
33572
33573 function sum32(a, b) {
33574 return (a + b) >>> 0;
33575 }
33576 utils.sum32 = sum32;
33577
33578 function sum32_3(a, b, c) {
33579 return (a + b + c) >>> 0;
33580 }
33581 utils.sum32_3 = sum32_3;
33582
33583 function sum32_4(a, b, c, d) {
33584 return (a + b + c + d) >>> 0;
33585 }
33586 utils.sum32_4 = sum32_4;
33587
33588 function sum32_5(a, b, c, d, e) {
33589 return (a + b + c + d + e) >>> 0;
33590 }
33591 utils.sum32_5 = sum32_5;
33592
33593 function assert(cond, msg) {
33594 if (!cond)
33595 throw new Error(msg || 'Assertion failed');
33596 }
33597 utils.assert = assert;
33598
33599 utils.inherits = inherits;
33600
33601 function sum64(buf, pos, ah, al) {
33602 var bh = buf[pos];
33603 var bl = buf[pos + 1];
33604
33605 var lo = (al + bl) >>> 0;
33606 var hi = (lo < al ? 1 : 0) + ah + bh;
33607 buf[pos] = hi >>> 0;
33608 buf[pos + 1] = lo;
33609 }
33610 exports.sum64 = sum64;
33611
33612 function sum64_hi(ah, al, bh, bl) {
33613 var lo = (al + bl) >>> 0;
33614 var hi = (lo < al ? 1 : 0) + ah + bh;
33615 return hi >>> 0;
33616 };
33617 exports.sum64_hi = sum64_hi;
33618
33619 function sum64_lo(ah, al, bh, bl) {
33620 var lo = al + bl;
33621 return lo >>> 0;
33622 };
33623 exports.sum64_lo = sum64_lo;
33624
33625 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
33626 var carry = 0;
33627 var lo = al;
33628 lo = (lo + bl) >>> 0;
33629 carry += lo < al ? 1 : 0;
33630 lo = (lo + cl) >>> 0;
33631 carry += lo < cl ? 1 : 0;
33632 lo = (lo + dl) >>> 0;
33633 carry += lo < dl ? 1 : 0;
33634
33635 var hi = ah + bh + ch + dh + carry;
33636 return hi >>> 0;
33637 };
33638 exports.sum64_4_hi = sum64_4_hi;
33639
33640 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
33641 var lo = al + bl + cl + dl;
33642 return lo >>> 0;
33643 };
33644 exports.sum64_4_lo = sum64_4_lo;
33645
33646 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
33647 var carry = 0;
33648 var lo = al;
33649 lo = (lo + bl) >>> 0;
33650 carry += lo < al ? 1 : 0;
33651 lo = (lo + cl) >>> 0;
33652 carry += lo < cl ? 1 : 0;
33653 lo = (lo + dl) >>> 0;
33654 carry += lo < dl ? 1 : 0;
33655 lo = (lo + el) >>> 0;
33656 carry += lo < el ? 1 : 0;
33657
33658 var hi = ah + bh + ch + dh + eh + carry;
33659 return hi >>> 0;
33660 };
33661 exports.sum64_5_hi = sum64_5_hi;
33662
33663 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
33664 var lo = al + bl + cl + dl + el;
33665
33666 return lo >>> 0;
33667 };
33668 exports.sum64_5_lo = sum64_5_lo;
33669
33670 function rotr64_hi(ah, al, num) {
33671 var r = (al << (32 - num)) | (ah >>> num);
33672 return r >>> 0;
33673 };
33674 exports.rotr64_hi = rotr64_hi;
33675
33676 function rotr64_lo(ah, al, num) {
33677 var r = (ah << (32 - num)) | (al >>> num);
33678 return r >>> 0;
33679 };
33680 exports.rotr64_lo = rotr64_lo;
33681
33682 function shr64_hi(ah, al, num) {
33683 return ah >>> num;
33684 };
33685 exports.shr64_hi = shr64_hi;
33686
33687 function shr64_lo(ah, al, num) {
33688 var r = (ah << (32 - num)) | (al >>> num);
33689 return r >>> 0;
33690 };
33691 exports.shr64_lo = shr64_lo;
33692
33693 },{"inherits":63}],63:[function(require,module,exports){
33694 arguments[4][9][0].apply(exports,arguments)
33695 },{"dup":9}],64:[function(require,module,exports){
33696 /**
33697 * Returns a `Boolean` on whether or not the a `String` starts with '0x'
33698 * @param {String} str the string input value
33699 * @return {Boolean} a boolean if it is or is not hex prefixed
33700 * @throws if the str input is not a string
33701 */
33702 module.exports = function isHexPrefixed(str) {
33703 if (typeof str !== 'string') {
33704 throw new Error("[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) + ", while checking isHexPrefixed.");
33705 }
33706
33707 return str.slice(0, 2) === '0x';
33708 }
33709
33710 },{}],65:[function(require,module,exports){
33711 'use strict'
33712 module.exports = require('./lib/api')(require('./lib/keccak'))
33713
33714 },{"./lib/api":66,"./lib/keccak":70}],66:[function(require,module,exports){
33715 'use strict'
33716 var createKeccak = require('./keccak')
33717 var createShake = require('./shake')
33718
33719 module.exports = function (KeccakState) {
33720 var Keccak = createKeccak(KeccakState)
33721 var Shake = createShake(KeccakState)
33722
33723 return function (algorithm, options) {
33724 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
33725 switch (hash) {
33726 case 'keccak224': return new Keccak(1152, 448, null, 224, options)
33727 case 'keccak256': return new Keccak(1088, 512, null, 256, options)
33728 case 'keccak384': return new Keccak(832, 768, null, 384, options)
33729 case 'keccak512': return new Keccak(576, 1024, null, 512, options)
33730
33731 case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)
33732 case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)
33733 case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)
33734 case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)
33735
33736 case 'shake128': return new Shake(1344, 256, 0x1f, options)
33737 case 'shake256': return new Shake(1088, 512, 0x1f, options)
33738
33739 default: throw new Error('Invald algorithm: ' + algorithm)
33740 }
33741 }
33742 }
33743
33744 },{"./keccak":67,"./shake":68}],67:[function(require,module,exports){
33745 (function (Buffer){
33746 'use strict'
33747 var Transform = require('stream').Transform
33748 var inherits = require('inherits')
33749
33750 module.exports = function (KeccakState) {
33751 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
33752 Transform.call(this, options)
33753
33754 this._rate = rate
33755 this._capacity = capacity
33756 this._delimitedSuffix = delimitedSuffix
33757 this._hashBitLength = hashBitLength
33758 this._options = options
33759
33760 this._state = new KeccakState()
33761 this._state.initialize(rate, capacity)
33762 this._finalized = false
33763 }
33764
33765 inherits(Keccak, Transform)
33766
33767 Keccak.prototype._transform = function (chunk, encoding, callback) {
33768 var error = null
33769 try {
33770 this.update(chunk, encoding)
33771 } catch (err) {
33772 error = err
33773 }
33774
33775 callback(error)
33776 }
33777
33778 Keccak.prototype._flush = function (callback) {
33779 var error = null
33780 try {
33781 this.push(this.digest())
33782 } catch (err) {
33783 error = err
33784 }
33785
33786 callback(error)
33787 }
33788
33789 Keccak.prototype.update = function (data, encoding) {
33790 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
33791 if (this._finalized) throw new Error('Digest already called')
33792 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
33793
33794 this._state.absorb(data)
33795
33796 return this
33797 }
33798
33799 Keccak.prototype.digest = function (encoding) {
33800 if (this._finalized) throw new Error('Digest already called')
33801 this._finalized = true
33802
33803 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
33804 var digest = this._state.squeeze(this._hashBitLength / 8)
33805 if (encoding !== undefined) digest = digest.toString(encoding)
33806
33807 this._resetState()
33808
33809 return digest
33810 }
33811
33812 // remove result from memory
33813 Keccak.prototype._resetState = function () {
33814 this._state.initialize(this._rate, this._capacity)
33815 return this
33816 }
33817
33818 // because sometimes we need hash right now and little later
33819 Keccak.prototype._clone = function () {
33820 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
33821 this._state.copy(clone._state)
33822 clone._finalized = this._finalized
33823
33824 return clone
33825 }
33826
33827 return Keccak
33828 }
33829
33830 }).call(this,require("buffer").Buffer)
33831 },{"buffer":5,"inherits":63,"stream":25}],68:[function(require,module,exports){
33832 (function (Buffer){
33833 'use strict'
33834 var Transform = require('stream').Transform
33835 var inherits = require('inherits')
33836
33837 module.exports = function (KeccakState) {
33838 function Shake (rate, capacity, delimitedSuffix, options) {
33839 Transform.call(this, options)
33840
33841 this._rate = rate
33842 this._capacity = capacity
33843 this._delimitedSuffix = delimitedSuffix
33844 this._options = options
33845
33846 this._state = new KeccakState()
33847 this._state.initialize(rate, capacity)
33848 this._finalized = false
33849 }
33850
33851 inherits(Shake, Transform)
33852
33853 Shake.prototype._transform = function (chunk, encoding, callback) {
33854 var error = null
33855 try {
33856 this.update(chunk, encoding)
33857 } catch (err) {
33858 error = err
33859 }
33860
33861 callback(error)
33862 }
33863
33864 Shake.prototype._flush = function () {}
33865
33866 Shake.prototype._read = function (size) {
33867 this.push(this.squeeze(size))
33868 }
33869
33870 Shake.prototype.update = function (data, encoding) {
33871 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
33872 if (this._finalized) throw new Error('Squeeze already called')
33873 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
33874
33875 this._state.absorb(data)
33876
33877 return this
33878 }
33879
33880 Shake.prototype.squeeze = function (dataByteLength, encoding) {
33881 if (!this._finalized) {
33882 this._finalized = true
33883 this._state.absorbLastFewBits(this._delimitedSuffix)
33884 }
33885
33886 var data = this._state.squeeze(dataByteLength)
33887 if (encoding !== undefined) data = data.toString(encoding)
33888
33889 return data
33890 }
33891
33892 Shake.prototype._resetState = function () {
33893 this._state.initialize(this._rate, this._capacity)
33894 return this
33895 }
33896
33897 Shake.prototype._clone = function () {
33898 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
33899 this._state.copy(clone._state)
33900 clone._finalized = this._finalized
33901
33902 return clone
33903 }
33904
33905 return Shake
33906 }
33907
33908 }).call(this,require("buffer").Buffer)
33909 },{"buffer":5,"inherits":63,"stream":25}],69:[function(require,module,exports){
33910 'use strict'
33911 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]
33912
33913 exports.p1600 = function (s) {
33914 for (var round = 0; round < 24; ++round) {
33915 // theta
33916 var lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]
33917 var hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]
33918 var lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]
33919 var hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]
33920 var lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]
33921 var hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]
33922 var lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]
33923 var hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]
33924 var lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]
33925 var hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]
33926
33927 var lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)
33928 var hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)
33929 var t1slo0 = s[0] ^ lo
33930 var t1shi0 = s[1] ^ hi
33931 var t1slo5 = s[10] ^ lo
33932 var t1shi5 = s[11] ^ hi
33933 var t1slo10 = s[20] ^ lo
33934 var t1shi10 = s[21] ^ hi
33935 var t1slo15 = s[30] ^ lo
33936 var t1shi15 = s[31] ^ hi
33937 var t1slo20 = s[40] ^ lo
33938 var t1shi20 = s[41] ^ hi
33939 lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)
33940 hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)
33941 var t1slo1 = s[2] ^ lo
33942 var t1shi1 = s[3] ^ hi
33943 var t1slo6 = s[12] ^ lo
33944 var t1shi6 = s[13] ^ hi
33945 var t1slo11 = s[22] ^ lo
33946 var t1shi11 = s[23] ^ hi
33947 var t1slo16 = s[32] ^ lo
33948 var t1shi16 = s[33] ^ hi
33949 var t1slo21 = s[42] ^ lo
33950 var t1shi21 = s[43] ^ hi
33951 lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)
33952 hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)
33953 var t1slo2 = s[4] ^ lo
33954 var t1shi2 = s[5] ^ hi
33955 var t1slo7 = s[14] ^ lo
33956 var t1shi7 = s[15] ^ hi
33957 var t1slo12 = s[24] ^ lo
33958 var t1shi12 = s[25] ^ hi
33959 var t1slo17 = s[34] ^ lo
33960 var t1shi17 = s[35] ^ hi
33961 var t1slo22 = s[44] ^ lo
33962 var t1shi22 = s[45] ^ hi
33963 lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)
33964 hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)
33965 var t1slo3 = s[6] ^ lo
33966 var t1shi3 = s[7] ^ hi
33967 var t1slo8 = s[16] ^ lo
33968 var t1shi8 = s[17] ^ hi
33969 var t1slo13 = s[26] ^ lo
33970 var t1shi13 = s[27] ^ hi
33971 var t1slo18 = s[36] ^ lo
33972 var t1shi18 = s[37] ^ hi
33973 var t1slo23 = s[46] ^ lo
33974 var t1shi23 = s[47] ^ hi
33975 lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)
33976 hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)
33977 var t1slo4 = s[8] ^ lo
33978 var t1shi4 = s[9] ^ hi
33979 var t1slo9 = s[18] ^ lo
33980 var t1shi9 = s[19] ^ hi
33981 var t1slo14 = s[28] ^ lo
33982 var t1shi14 = s[29] ^ hi
33983 var t1slo19 = s[38] ^ lo
33984 var t1shi19 = s[39] ^ hi
33985 var t1slo24 = s[48] ^ lo
33986 var t1shi24 = s[49] ^ hi
33987
33988 // rho & pi
33989 var t2slo0 = t1slo0
33990 var t2shi0 = t1shi0
33991 var t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)
33992 var t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)
33993 var t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)
33994 var t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)
33995 var t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)
33996 var t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)
33997 var t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)
33998 var t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)
33999 var t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)
34000 var t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)
34001 var t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)
34002 var t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)
34003 var t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)
34004 var t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)
34005 var t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)
34006 var t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)
34007 var t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)
34008 var t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)
34009 var t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)
34010 var t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)
34011 var t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)
34012 var t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)
34013 var t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)
34014 var t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)
34015 var t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)
34016 var t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)
34017 var t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)
34018 var t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)
34019 var t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)
34020 var t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)
34021 var t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)
34022 var t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)
34023 var t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)
34024 var t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)
34025 var t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)
34026 var t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)
34027 var t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)
34028 var t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)
34029 var t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)
34030 var t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)
34031 var t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)
34032 var t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)
34033 var t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)
34034 var t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)
34035 var t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)
34036 var t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)
34037 var t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)
34038 var t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)
34039
34040 // chi
34041 s[0] = t2slo0 ^ (~t2slo1 & t2slo2)
34042 s[1] = t2shi0 ^ (~t2shi1 & t2shi2)
34043 s[10] = t2slo5 ^ (~t2slo6 & t2slo7)
34044 s[11] = t2shi5 ^ (~t2shi6 & t2shi7)
34045 s[20] = t2slo10 ^ (~t2slo11 & t2slo12)
34046 s[21] = t2shi10 ^ (~t2shi11 & t2shi12)
34047 s[30] = t2slo15 ^ (~t2slo16 & t2slo17)
34048 s[31] = t2shi15 ^ (~t2shi16 & t2shi17)
34049 s[40] = t2slo20 ^ (~t2slo21 & t2slo22)
34050 s[41] = t2shi20 ^ (~t2shi21 & t2shi22)
34051 s[2] = t2slo1 ^ (~t2slo2 & t2slo3)
34052 s[3] = t2shi1 ^ (~t2shi2 & t2shi3)
34053 s[12] = t2slo6 ^ (~t2slo7 & t2slo8)
34054 s[13] = t2shi6 ^ (~t2shi7 & t2shi8)
34055 s[22] = t2slo11 ^ (~t2slo12 & t2slo13)
34056 s[23] = t2shi11 ^ (~t2shi12 & t2shi13)
34057 s[32] = t2slo16 ^ (~t2slo17 & t2slo18)
34058 s[33] = t2shi16 ^ (~t2shi17 & t2shi18)
34059 s[42] = t2slo21 ^ (~t2slo22 & t2slo23)
34060 s[43] = t2shi21 ^ (~t2shi22 & t2shi23)
34061 s[4] = t2slo2 ^ (~t2slo3 & t2slo4)
34062 s[5] = t2shi2 ^ (~t2shi3 & t2shi4)
34063 s[14] = t2slo7 ^ (~t2slo8 & t2slo9)
34064 s[15] = t2shi7 ^ (~t2shi8 & t2shi9)
34065 s[24] = t2slo12 ^ (~t2slo13 & t2slo14)
34066 s[25] = t2shi12 ^ (~t2shi13 & t2shi14)
34067 s[34] = t2slo17 ^ (~t2slo18 & t2slo19)
34068 s[35] = t2shi17 ^ (~t2shi18 & t2shi19)
34069 s[44] = t2slo22 ^ (~t2slo23 & t2slo24)
34070 s[45] = t2shi22 ^ (~t2shi23 & t2shi24)
34071 s[6] = t2slo3 ^ (~t2slo4 & t2slo0)
34072 s[7] = t2shi3 ^ (~t2shi4 & t2shi0)
34073 s[16] = t2slo8 ^ (~t2slo9 & t2slo5)
34074 s[17] = t2shi8 ^ (~t2shi9 & t2shi5)
34075 s[26] = t2slo13 ^ (~t2slo14 & t2slo10)
34076 s[27] = t2shi13 ^ (~t2shi14 & t2shi10)
34077 s[36] = t2slo18 ^ (~t2slo19 & t2slo15)
34078 s[37] = t2shi18 ^ (~t2shi19 & t2shi15)
34079 s[46] = t2slo23 ^ (~t2slo24 & t2slo20)
34080 s[47] = t2shi23 ^ (~t2shi24 & t2shi20)
34081 s[8] = t2slo4 ^ (~t2slo0 & t2slo1)
34082 s[9] = t2shi4 ^ (~t2shi0 & t2shi1)
34083 s[18] = t2slo9 ^ (~t2slo5 & t2slo6)
34084 s[19] = t2shi9 ^ (~t2shi5 & t2shi6)
34085 s[28] = t2slo14 ^ (~t2slo10 & t2slo11)
34086 s[29] = t2shi14 ^ (~t2shi10 & t2shi11)
34087 s[38] = t2slo19 ^ (~t2slo15 & t2slo16)
34088 s[39] = t2shi19 ^ (~t2shi15 & t2shi16)
34089 s[48] = t2slo24 ^ (~t2slo20 & t2slo21)
34090 s[49] = t2shi24 ^ (~t2shi20 & t2shi21)
34091
34092 // iota
34093 s[0] ^= P1600_ROUND_CONSTANTS[round * 2]
34094 s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]
34095 }
34096 }
34097
34098 },{}],70:[function(require,module,exports){
34099 (function (Buffer){
34100 'use strict'
34101 var keccakState = require('./keccak-state-unroll')
34102
34103 function Keccak () {
34104 // much faster than `new Array(50)`
34105 this.state = [
34106 0, 0, 0, 0, 0,
34107 0, 0, 0, 0, 0,
34108 0, 0, 0, 0, 0,
34109 0, 0, 0, 0, 0,
34110 0, 0, 0, 0, 0
34111 ]
34112
34113 this.blockSize = null
34114 this.count = 0
34115 this.squeezing = false
34116 }
34117
34118 Keccak.prototype.initialize = function (rate, capacity) {
34119 for (var i = 0; i < 50; ++i) this.state[i] = 0
34120 this.blockSize = rate / 8
34121 this.count = 0
34122 this.squeezing = false
34123 }
34124
34125 Keccak.prototype.absorb = function (data) {
34126 for (var i = 0; i < data.length; ++i) {
34127 this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))
34128 this.count += 1
34129 if (this.count === this.blockSize) {
34130 keccakState.p1600(this.state)
34131 this.count = 0
34132 }
34133 }
34134 }
34135
34136 Keccak.prototype.absorbLastFewBits = function (bits) {
34137 this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))
34138 if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)
34139 this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))
34140 keccakState.p1600(this.state)
34141 this.count = 0
34142 this.squeezing = true
34143 }
34144
34145 Keccak.prototype.squeeze = function (length) {
34146 if (!this.squeezing) this.absorbLastFewBits(0x01)
34147
34148 var output = Buffer.allocUnsafe(length)
34149 for (var i = 0; i < length; ++i) {
34150 output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff
34151 this.count += 1
34152 if (this.count === this.blockSize) {
34153 keccakState.p1600(this.state)
34154 this.count = 0
34155 }
34156 }
34157
34158 return output
34159 }
34160
34161 Keccak.prototype.copy = function (dest) {
34162 for (var i = 0; i < 50; ++i) dest.state[i] = this.state[i]
34163 dest.blockSize = this.blockSize
34164 dest.count = this.count
34165 dest.squeezing = this.squeezing
34166 }
34167
34168 module.exports = Keccak
34169
34170 }).call(this,require("buffer").Buffer)
34171 },{"./keccak-state-unroll":69,"buffer":5}],71:[function(require,module,exports){
34172 (function (Buffer){
34173 /*
34174 CryptoJS v3.1.2
34175 code.google.com/p/crypto-js
34176 (c) 2009-2013 by Jeff Mott. All rights reserved.
34177 code.google.com/p/crypto-js/wiki/License
34178 */
34179 /** @preserve
34180 (c) 2012 by Cédric Mesnil. All rights reserved.
34181
34182 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
34183
34184 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
34185 - 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.
34186
34187 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.
34188 */
34189
34190 // constants table
34191 var zl = [
34192 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
34193 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
34194 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
34195 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
34196 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
34197 ]
34198
34199 var zr = [
34200 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
34201 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
34202 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
34203 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
34204 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
34205 ]
34206
34207 var sl = [
34208 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
34209 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
34210 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
34211 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
34212 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
34213 ]
34214
34215 var sr = [
34216 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
34217 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
34218 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
34219 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
34220 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
34221 ]
34222
34223 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
34224 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
34225
34226 function bytesToWords (bytes) {
34227 var words = []
34228 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
34229 words[b >>> 5] |= bytes[i] << (24 - b % 32)
34230 }
34231 return words
34232 }
34233
34234 function wordsToBytes (words) {
34235 var bytes = []
34236 for (var b = 0; b < words.length * 32; b += 8) {
34237 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
34238 }
34239 return bytes
34240 }
34241
34242 function processBlock (H, M, offset) {
34243 // swap endian
34244 for (var i = 0; i < 16; i++) {
34245 var offset_i = offset + i
34246 var M_offset_i = M[offset_i]
34247
34248 // Swap
34249 M[offset_i] = (
34250 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
34251 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
34252 )
34253 }
34254
34255 // Working variables
34256 var al, bl, cl, dl, el
34257 var ar, br, cr, dr, er
34258
34259 ar = al = H[0]
34260 br = bl = H[1]
34261 cr = cl = H[2]
34262 dr = dl = H[3]
34263 er = el = H[4]
34264
34265 // computation
34266 var t
34267 for (i = 0; i < 80; i += 1) {
34268 t = (al + M[offset + zl[i]]) | 0
34269 if (i < 16) {
34270 t += f1(bl, cl, dl) + hl[0]
34271 } else if (i < 32) {
34272 t += f2(bl, cl, dl) + hl[1]
34273 } else if (i < 48) {
34274 t += f3(bl, cl, dl) + hl[2]
34275 } else if (i < 64) {
34276 t += f4(bl, cl, dl) + hl[3]
34277 } else {// if (i<80) {
34278 t += f5(bl, cl, dl) + hl[4]
34279 }
34280 t = t | 0
34281 t = rotl(t, sl[i])
34282 t = (t + el) | 0
34283 al = el
34284 el = dl
34285 dl = rotl(cl, 10)
34286 cl = bl
34287 bl = t
34288
34289 t = (ar + M[offset + zr[i]]) | 0
34290 if (i < 16) {
34291 t += f5(br, cr, dr) + hr[0]
34292 } else if (i < 32) {
34293 t += f4(br, cr, dr) + hr[1]
34294 } else if (i < 48) {
34295 t += f3(br, cr, dr) + hr[2]
34296 } else if (i < 64) {
34297 t += f2(br, cr, dr) + hr[3]
34298 } else {// if (i<80) {
34299 t += f1(br, cr, dr) + hr[4]
34300 }
34301
34302 t = t | 0
34303 t = rotl(t, sr[i])
34304 t = (t + er) | 0
34305 ar = er
34306 er = dr
34307 dr = rotl(cr, 10)
34308 cr = br
34309 br = t
34310 }
34311
34312 // intermediate hash value
34313 t = (H[1] + cl + dr) | 0
34314 H[1] = (H[2] + dl + er) | 0
34315 H[2] = (H[3] + el + ar) | 0
34316 H[3] = (H[4] + al + br) | 0
34317 H[4] = (H[0] + bl + cr) | 0
34318 H[0] = t
34319 }
34320
34321 function f1 (x, y, z) {
34322 return ((x) ^ (y) ^ (z))
34323 }
34324
34325 function f2 (x, y, z) {
34326 return (((x) & (y)) | ((~x) & (z)))
34327 }
34328
34329 function f3 (x, y, z) {
34330 return (((x) | (~(y))) ^ (z))
34331 }
34332
34333 function f4 (x, y, z) {
34334 return (((x) & (z)) | ((y) & (~(z))))
34335 }
34336
34337 function f5 (x, y, z) {
34338 return ((x) ^ ((y) | (~(z))))
34339 }
34340
34341 function rotl (x, n) {
34342 return (x << n) | (x >>> (32 - n))
34343 }
34344
34345 function ripemd160 (message) {
34346 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
34347
34348 if (typeof message === 'string') {
34349 message = new Buffer(message, 'utf8')
34350 }
34351
34352 var m = bytesToWords(message)
34353
34354 var nBitsLeft = message.length * 8
34355 var nBitsTotal = message.length * 8
34356
34357 // Add padding
34358 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
34359 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
34360 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
34361 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
34362 )
34363
34364 for (var i = 0; i < m.length; i += 16) {
34365 processBlock(H, m, i)
34366 }
34367
34368 // swap endian
34369 for (i = 0; i < 5; i++) {
34370 // shortcut
34371 var H_i = H[i]
34372
34373 // Swap
34374 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
34375 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
34376 }
34377
34378 var digestbytes = wordsToBytes(H)
34379 return new Buffer(digestbytes)
34380 }
34381
34382 module.exports = ripemd160
34383
34384 }).call(this,require("buffer").Buffer)
34385 },{"buffer":5}],72:[function(require,module,exports){
34386 (function (Buffer){
34387 const assert = require('assert')
34388 /**
34389 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
34390 * This function takes in a data, convert it to buffer if not, and a length for recursion
34391 *
34392 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
34393 * @returns {Buffer} - returns buffer of encoded data
34394 **/
34395 exports.encode = function (input) {
34396 if (input instanceof Array) {
34397 var output = []
34398 for (var i = 0; i < input.length; i++) {
34399 output.push(exports.encode(input[i]))
34400 }
34401 var buf = Buffer.concat(output)
34402 return Buffer.concat([encodeLength(buf.length, 192), buf])
34403 } else {
34404 input = toBuffer(input)
34405 if (input.length === 1 && input[0] < 128) {
34406 return input
34407 } else {
34408 return Buffer.concat([encodeLength(input.length, 128), input])
34409 }
34410 }
34411 }
34412
34413 function safeParseInt (v, base) {
34414 if (v.slice(0, 2) === '00') {
34415 throw (new Error('invalid RLP: extra zeros'))
34416 }
34417
34418 return parseInt(v, base)
34419 }
34420
34421 function encodeLength (len, offset) {
34422 if (len < 56) {
34423 return new Buffer([len + offset])
34424 } else {
34425 var hexLength = intToHex(len)
34426 var lLength = hexLength.length / 2
34427 var firstByte = intToHex(offset + 55 + lLength)
34428 return new Buffer(firstByte + hexLength, 'hex')
34429 }
34430 }
34431
34432 /**
34433 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}
34434 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
34435 * @returns {Array} - returns decode Array of Buffers containg the original message
34436 **/
34437 exports.decode = function (input, stream) {
34438 if (!input || input.length === 0) {
34439 return new Buffer([])
34440 }
34441
34442 input = toBuffer(input)
34443 var decoded = _decode(input)
34444
34445 if (stream) {
34446 return decoded
34447 }
34448
34449 assert.equal(decoded.remainder.length, 0, 'invalid remainder')
34450 return decoded.data
34451 }
34452
34453 exports.getLength = function (input) {
34454 if (!input || input.length === 0) {
34455 return new Buffer([])
34456 }
34457
34458 input = toBuffer(input)
34459 var firstByte = input[0]
34460 if (firstByte <= 0x7f) {
34461 return input.length
34462 } else if (firstByte <= 0xb7) {
34463 return firstByte - 0x7f
34464 } else if (firstByte <= 0xbf) {
34465 return firstByte - 0xb6
34466 } else if (firstByte <= 0xf7) {
34467 // a list between 0-55 bytes long
34468 return firstByte - 0xbf
34469 } else {
34470 // a list over 55 bytes long
34471 var llength = firstByte - 0xf6
34472 var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
34473 return llength + length
34474 }
34475 }
34476
34477 function _decode (input) {
34478 var length, llength, data, innerRemainder, d
34479 var decoded = []
34480 var firstByte = input[0]
34481
34482 if (firstByte <= 0x7f) {
34483 // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
34484 return {
34485 data: input.slice(0, 1),
34486 remainder: input.slice(1)
34487 }
34488 } else if (firstByte <= 0xb7) {
34489 // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string
34490 // The range of the first byte is [0x80, 0xb7]
34491 length = firstByte - 0x7f
34492
34493 // set 0x80 null to 0
34494 if (firstByte === 0x80) {
34495 data = new Buffer([])
34496 } else {
34497 data = input.slice(1, length)
34498 }
34499
34500 if (length === 2 && data[0] < 0x80) {
34501 throw new Error('invalid rlp encoding: byte must be less 0x80')
34502 }
34503
34504 return {
34505 data: data,
34506 remainder: input.slice(length)
34507 }
34508 } else if (firstByte <= 0xbf) {
34509 llength = firstByte - 0xb6
34510 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
34511 data = input.slice(llength, length + llength)
34512 if (data.length < length) {
34513 throw (new Error('invalid RLP'))
34514 }
34515
34516 return {
34517 data: data,
34518 remainder: input.slice(length + llength)
34519 }
34520 } else if (firstByte <= 0xf7) {
34521 // a list between 0-55 bytes long
34522 length = firstByte - 0xbf
34523 innerRemainder = input.slice(1, length)
34524 while (innerRemainder.length) {
34525 d = _decode(innerRemainder)
34526 decoded.push(d.data)
34527 innerRemainder = d.remainder
34528 }
34529
34530 return {
34531 data: decoded,
34532 remainder: input.slice(length)
34533 }
34534 } else {
34535 // a list over 55 bytes long
34536 llength = firstByte - 0xf6
34537 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
34538 var totalLength = llength + length
34539 if (totalLength > input.length) {
34540 throw new Error('invalid rlp: total length is larger than the data')
34541 }
34542
34543 innerRemainder = input.slice(llength, totalLength)
34544 if (innerRemainder.length === 0) {
34545 throw new Error('invalid rlp, List has a invalid length')
34546 }
34547
34548 while (innerRemainder.length) {
34549 d = _decode(innerRemainder)
34550 decoded.push(d.data)
34551 innerRemainder = d.remainder
34552 }
34553 return {
34554 data: decoded,
34555 remainder: input.slice(totalLength)
34556 }
34557 }
34558 }
34559
34560 function isHexPrefixed (str) {
34561 return str.slice(0, 2) === '0x'
34562 }
34563
34564 // Removes 0x from a given String
34565 function stripHexPrefix (str) {
34566 if (typeof str !== 'string') {
34567 return str
34568 }
34569 return isHexPrefixed(str) ? str.slice(2) : str
34570 }
34571
34572 function intToHex (i) {
34573 var hex = i.toString(16)
34574 if (hex.length % 2) {
34575 hex = '0' + hex
34576 }
34577
34578 return hex
34579 }
34580
34581 function padToEven (a) {
34582 if (a.length % 2) a = '0' + a
34583 return a
34584 }
34585
34586 function intToBuffer (i) {
34587 var hex = intToHex(i)
34588 return new Buffer(hex, 'hex')
34589 }
34590
34591 function toBuffer (v) {
34592 if (!Buffer.isBuffer(v)) {
34593 if (typeof v === 'string') {
34594 if (isHexPrefixed(v)) {
34595 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
34596 } else {
34597 v = new Buffer(v)
34598 }
34599 } else if (typeof v === 'number') {
34600 if (!v) {
34601 v = new Buffer([])
34602 } else {
34603 v = intToBuffer(v)
34604 }
34605 } else if (v === null || v === undefined) {
34606 v = new Buffer([])
34607 } else if (v.toArray) {
34608 // converts a BN to a Buffer
34609 v = new Buffer(v.toArray())
34610 } else {
34611 throw new Error('invalid type')
34612 }
34613 }
34614 return v
34615 }
34616
34617 }).call(this,require("buffer").Buffer)
34618 },{"assert":1,"buffer":5}],73:[function(require,module,exports){
34619 'use strict'
34620 module.exports = require('./lib')(require('./lib/elliptic'))
34621
34622 },{"./lib":77,"./lib/elliptic":76}],74:[function(require,module,exports){
34623 (function (Buffer){
34624 'use strict'
34625 var toString = Object.prototype.toString
34626
34627 // TypeError
34628 exports.isArray = function (value, message) {
34629 if (!Array.isArray(value)) throw TypeError(message)
34630 }
34631
34632 exports.isBoolean = function (value, message) {
34633 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
34634 }
34635
34636 exports.isBuffer = function (value, message) {
34637 if (!Buffer.isBuffer(value)) throw TypeError(message)
34638 }
34639
34640 exports.isFunction = function (value, message) {
34641 if (toString.call(value) !== '[object Function]') throw TypeError(message)
34642 }
34643
34644 exports.isNumber = function (value, message) {
34645 if (toString.call(value) !== '[object Number]') throw TypeError(message)
34646 }
34647
34648 exports.isObject = function (value, message) {
34649 if (toString.call(value) !== '[object Object]') throw TypeError(message)
34650 }
34651
34652 // RangeError
34653 exports.isBufferLength = function (buffer, length, message) {
34654 if (buffer.length !== length) throw RangeError(message)
34655 }
34656
34657 exports.isBufferLength2 = function (buffer, length1, length2, message) {
34658 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
34659 }
34660
34661 exports.isLengthGTZero = function (value, message) {
34662 if (value.length === 0) throw RangeError(message)
34663 }
34664
34665 exports.isNumberInInterval = function (number, x, y, message) {
34666 if (number <= x || number >= y) throw RangeError(message)
34667 }
34668
34669 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
34670 },{"../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":10}],75:[function(require,module,exports){
34671 (function (Buffer){
34672 'use strict'
34673 var bip66 = require('bip66')
34674
34675 var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
34676 // begin
34677 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,
34678 // private key
34679 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34680 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34681 // middle
34682 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
34683 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
34684 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
34685 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
34686 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
34687 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
34688 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
34689 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
34690 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,
34691 // public key
34692 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34693 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34694 0x00
34695 ])
34696
34697 var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
34698 // begin
34699 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,
34700 // private key
34701 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34702 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34703 // middle
34704 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
34705 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
34706 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
34707 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
34708 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
34709 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
34710 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,
34711 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
34712 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
34713 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
34714 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,
34715 // public key
34716 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34717 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34718 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34719 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34720 0x00
34721 ])
34722
34723 var ZERO_BUFFER_32 = new Buffer([
34724 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34725 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
34726 ])
34727
34728 exports.privateKeyExport = function (privateKey, publicKey, compressed) {
34729 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
34730 privateKey.copy(result, compressed ? 8 : 9)
34731 publicKey.copy(result, compressed ? 181 : 214)
34732 return result
34733 }
34734
34735 exports.privateKeyImport = function (privateKey) {
34736 var length = privateKey.length
34737
34738 // sequence header
34739 var index = 0
34740 if (length < index + 1 || privateKey[index] !== 0x30) return
34741 index += 1
34742
34743 // sequence length constructor
34744 if (length < index + 1 || !(privateKey[index] & 0x80)) return
34745
34746 var lenb = privateKey[index] & 0x7f
34747 index += 1
34748 if (lenb < 1 || lenb > 2) return
34749 if (length < index + lenb) return
34750
34751 // sequence length
34752 var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)
34753 index += lenb
34754 if (length < index + len) return
34755
34756 // sequence element 0: version number (=1)
34757 if (length < index + 3 ||
34758 privateKey[index] !== 0x02 ||
34759 privateKey[index + 1] !== 0x01 ||
34760 privateKey[index + 2] !== 0x01) {
34761 return
34762 }
34763 index += 3
34764
34765 // sequence element 1: octet string, up to 32 bytes
34766 if (length < index + 2 ||
34767 privateKey[index] !== 0x04 ||
34768 privateKey[index + 1] > 0x20 ||
34769 length < index + 2 + privateKey[index + 1]) {
34770 return
34771 }
34772
34773 return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])
34774 }
34775
34776 exports.signatureExport = function (sigObj) {
34777 var r = Buffer.concat([new Buffer([0]), sigObj.r])
34778 for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);
34779
34780 var s = Buffer.concat([new Buffer([0]), sigObj.s])
34781 for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);
34782
34783 return bip66.encode(r.slice(posR), s.slice(posS))
34784 }
34785
34786 exports.signatureImport = function (sig) {
34787 var r = new Buffer(ZERO_BUFFER_32)
34788 var s = new Buffer(ZERO_BUFFER_32)
34789
34790 try {
34791 var sigObj = bip66.decode(sig)
34792 if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)
34793 if (sigObj.r.length > 32) throw new Error('R length is too long')
34794 if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)
34795 if (sigObj.s.length > 32) throw new Error('S length is too long')
34796 } catch (err) {
34797 return
34798 }
34799
34800 sigObj.r.copy(r, 32 - sigObj.r.length)
34801 sigObj.s.copy(s, 32 - sigObj.s.length)
34802
34803 return { r: r, s: s }
34804 }
34805
34806 exports.signatureImportLax = function (sig) {
34807 var r = new Buffer(ZERO_BUFFER_32)
34808 var s = new Buffer(ZERO_BUFFER_32)
34809
34810 var length = sig.length
34811 var index = 0
34812
34813 // sequence tag byte
34814 if (sig[index++] !== 0x30) return
34815
34816 // sequence length byte
34817 var lenbyte = sig[index++]
34818 if (lenbyte & 0x80) {
34819 index += lenbyte - 0x80
34820 if (index > length) return
34821 }
34822
34823 // sequence tag byte for r
34824 if (sig[index++] !== 0x02) return
34825
34826 // length for r
34827 var rlen = sig[index++]
34828 if (rlen & 0x80) {
34829 lenbyte = rlen - 0x80
34830 if (index + lenbyte > length) return
34831 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
34832 for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]
34833 }
34834 if (rlen > length - index) return
34835 var rindex = index
34836 index += rlen
34837
34838 // sequence tag byte for s
34839 if (sig[index++] !== 0x02) return
34840
34841 // length for s
34842 var slen = sig[index++]
34843 if (slen & 0x80) {
34844 lenbyte = slen - 0x80
34845 if (index + lenbyte > length) return
34846 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
34847 for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]
34848 }
34849 if (slen > length - index) return
34850 var sindex = index
34851 index += slen
34852
34853 // ignore leading zeros in r
34854 for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);
34855 // copy r value
34856 if (rlen > 32) return
34857 var rvalue = sig.slice(rindex, rindex + rlen)
34858 rvalue.copy(r, 32 - rvalue.length)
34859
34860 // ignore leading zeros in s
34861 for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);
34862 // copy s value
34863 if (slen > 32) return
34864 var svalue = sig.slice(sindex, sindex + slen)
34865 svalue.copy(s, 32 - svalue.length)
34866
34867 return { r: r, s: s }
34868 }
34869
34870 }).call(this,require("buffer").Buffer)
34871 },{"bip66":32,"buffer":5}],76:[function(require,module,exports){
34872 (function (Buffer){
34873 'use strict'
34874 var createHash = require('create-hash')
34875 var BN = require('bn.js')
34876 var EC = require('elliptic').ec
34877
34878 var messages = require('../messages.json')
34879
34880 var ec = new EC('secp256k1')
34881 var ecparams = ec.curve
34882
34883 function loadCompressedPublicKey (first, xBuffer) {
34884 var x = new BN(xBuffer)
34885
34886 // overflow
34887 if (x.cmp(ecparams.p) >= 0) return null
34888 x = x.toRed(ecparams.red)
34889
34890 // compute corresponding Y
34891 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
34892 if ((first === 0x03) !== y.isOdd()) y = y.redNeg()
34893
34894 return ec.keyPair({ pub: { x: x, y: y } })
34895 }
34896
34897 function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
34898 var x = new BN(xBuffer)
34899 var y = new BN(yBuffer)
34900
34901 // overflow
34902 if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null
34903
34904 x = x.toRed(ecparams.red)
34905 y = y.toRed(ecparams.red)
34906
34907 // is odd flag
34908 if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null
34909
34910 // x*x*x + b = y*y
34911 var x3 = x.redSqr().redIMul(x)
34912 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
34913
34914 return ec.keyPair({ pub: { x: x, y: y } })
34915 }
34916
34917 function loadPublicKey (publicKey) {
34918 var first = publicKey[0]
34919 switch (first) {
34920 case 0x02:
34921 case 0x03:
34922 if (publicKey.length !== 33) return null
34923 return loadCompressedPublicKey(first, publicKey.slice(1, 33))
34924 case 0x04:
34925 case 0x06:
34926 case 0x07:
34927 if (publicKey.length !== 65) return null
34928 return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))
34929 default:
34930 return null
34931 }
34932 }
34933
34934 exports.privateKeyVerify = function (privateKey) {
34935 var bn = new BN(privateKey)
34936 return bn.cmp(ecparams.n) < 0 && !bn.isZero()
34937 }
34938
34939 exports.privateKeyExport = function (privateKey, compressed) {
34940 var d = new BN(privateKey)
34941 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
34942
34943 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
34944 }
34945
34946 exports.privateKeyTweakAdd = function (privateKey, tweak) {
34947 var bn = new BN(tweak)
34948 if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
34949
34950 bn.iadd(new BN(privateKey))
34951 if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)
34952 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
34953
34954 return bn.toArrayLike(Buffer, 'be', 32)
34955 }
34956
34957 exports.privateKeyTweakMul = function (privateKey, tweak) {
34958 var bn = new BN(tweak)
34959 if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
34960
34961 bn.imul(new BN(privateKey))
34962 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
34963
34964 return bn.toArrayLike(Buffer, 'be', 32)
34965 }
34966
34967 exports.publicKeyCreate = function (privateKey, compressed) {
34968 var d = new BN(privateKey)
34969 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
34970
34971 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
34972 }
34973
34974 exports.publicKeyConvert = function (publicKey, compressed) {
34975 var pair = loadPublicKey(publicKey)
34976 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
34977
34978 return new Buffer(pair.getPublic(compressed, true))
34979 }
34980
34981 exports.publicKeyVerify = function (publicKey) {
34982 return loadPublicKey(publicKey) !== null
34983 }
34984
34985 exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
34986 var pair = loadPublicKey(publicKey)
34987 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
34988
34989 tweak = new BN(tweak)
34990 if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
34991
34992 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
34993 }
34994
34995 exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
34996 var pair = loadPublicKey(publicKey)
34997 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
34998
34999 tweak = new BN(tweak)
35000 if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
35001
35002 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
35003 }
35004
35005 exports.publicKeyCombine = function (publicKeys, compressed) {
35006 var pairs = new Array(publicKeys.length)
35007 for (var i = 0; i < publicKeys.length; ++i) {
35008 pairs[i] = loadPublicKey(publicKeys[i])
35009 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
35010 }
35011
35012 var point = pairs[0].pub
35013 for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
35014 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
35015
35016 return new Buffer(point.encode(true, compressed))
35017 }
35018
35019 exports.signatureNormalize = function (signature) {
35020 var r = new BN(signature.slice(0, 32))
35021 var s = new BN(signature.slice(32, 64))
35022 if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
35023
35024 var result = new Buffer(signature)
35025 if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)
35026
35027 return result
35028 }
35029
35030 exports.signatureExport = function (signature) {
35031 var r = signature.slice(0, 32)
35032 var s = signature.slice(32, 64)
35033 if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
35034
35035 return { r: r, s: s }
35036 }
35037
35038 exports.signatureImport = function (sigObj) {
35039 var r = new BN(sigObj.r)
35040 if (r.cmp(ecparams.n) >= 0) r = new BN(0)
35041
35042 var s = new BN(sigObj.s)
35043 if (s.cmp(ecparams.n) >= 0) s = new BN(0)
35044
35045 return Buffer.concat([
35046 r.toArrayLike(Buffer, 'be', 32),
35047 s.toArrayLike(Buffer, 'be', 32)
35048 ])
35049 }
35050
35051 exports.sign = function (message, privateKey, noncefn, data) {
35052 if (typeof noncefn === 'function') {
35053 var getNonce = noncefn
35054 noncefn = function (counter) {
35055 var nonce = getNonce(message, privateKey, null, data, counter)
35056 if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)
35057
35058 return new BN(nonce)
35059 }
35060 }
35061
35062 var d = new BN(privateKey)
35063 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
35064
35065 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
35066 return {
35067 signature: Buffer.concat([
35068 result.r.toArrayLike(Buffer, 'be', 32),
35069 result.s.toArrayLike(Buffer, 'be', 32)
35070 ]),
35071 recovery: result.recoveryParam
35072 }
35073 }
35074
35075 exports.verify = function (message, signature, publicKey) {
35076 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
35077
35078 var sigr = new BN(sigObj.r)
35079 var sigs = new BN(sigObj.s)
35080 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
35081 if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false
35082
35083 var pair = loadPublicKey(publicKey)
35084 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
35085
35086 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
35087 }
35088
35089 exports.recover = function (message, signature, recovery, compressed) {
35090 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
35091
35092 var sigr = new BN(sigObj.r)
35093 var sigs = new BN(sigObj.s)
35094 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
35095
35096 try {
35097 if (sigr.isZero() || sigs.isZero()) throw new Error()
35098
35099 var point = ec.recoverPubKey(message, sigObj, recovery)
35100 return new Buffer(point.encode(true, compressed))
35101 } catch (err) {
35102 throw new Error(messages.ECDSA_RECOVER_FAIL)
35103 }
35104 }
35105
35106 exports.ecdh = function (publicKey, privateKey) {
35107 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
35108 return createHash('sha256').update(shared).digest()
35109 }
35110
35111 exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
35112 var pair = loadPublicKey(publicKey)
35113 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
35114
35115 var scalar = new BN(privateKey)
35116 if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
35117
35118 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
35119 }
35120
35121 }).call(this,require("buffer").Buffer)
35122 },{"../messages.json":78,"bn.js":33,"buffer":5,"create-hash":36,"elliptic":39}],77:[function(require,module,exports){
35123 'use strict'
35124 var assert = require('./assert')
35125 var der = require('./der')
35126 var messages = require('./messages.json')
35127
35128 function initCompressedValue (value, defaultValue) {
35129 if (value === undefined) return defaultValue
35130
35131 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
35132 return value
35133 }
35134
35135 module.exports = function (secp256k1) {
35136 return {
35137 privateKeyVerify: function (privateKey) {
35138 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35139 return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)
35140 },
35141
35142 privateKeyExport: function (privateKey, compressed) {
35143 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35144 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35145
35146 compressed = initCompressedValue(compressed, true)
35147 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
35148
35149 return der.privateKeyExport(privateKey, publicKey, compressed)
35150 },
35151
35152 privateKeyImport: function (privateKey) {
35153 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35154
35155 privateKey = der.privateKeyImport(privateKey)
35156 if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
35157
35158 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
35159 },
35160
35161 privateKeyTweakAdd: function (privateKey, tweak) {
35162 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35163 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35164
35165 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
35166 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
35167
35168 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
35169 },
35170
35171 privateKeyTweakMul: function (privateKey, tweak) {
35172 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35173 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35174
35175 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
35176 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
35177
35178 return secp256k1.privateKeyTweakMul(privateKey, tweak)
35179 },
35180
35181 publicKeyCreate: function (privateKey, compressed) {
35182 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35183 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35184
35185 compressed = initCompressedValue(compressed, true)
35186
35187 return secp256k1.publicKeyCreate(privateKey, compressed)
35188 },
35189
35190 publicKeyConvert: function (publicKey, compressed) {
35191 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
35192 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
35193
35194 compressed = initCompressedValue(compressed, true)
35195
35196 return secp256k1.publicKeyConvert(publicKey, compressed)
35197 },
35198
35199 publicKeyVerify: function (publicKey) {
35200 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
35201 return secp256k1.publicKeyVerify(publicKey)
35202 },
35203
35204 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
35205 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
35206 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
35207
35208 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
35209 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
35210
35211 compressed = initCompressedValue(compressed, true)
35212
35213 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
35214 },
35215
35216 publicKeyTweakMul: function (publicKey, tweak, compressed) {
35217 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
35218 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
35219
35220 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
35221 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
35222
35223 compressed = initCompressedValue(compressed, true)
35224
35225 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
35226 },
35227
35228 publicKeyCombine: function (publicKeys, compressed) {
35229 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
35230 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
35231 for (var i = 0; i < publicKeys.length; ++i) {
35232 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
35233 assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
35234 }
35235
35236 compressed = initCompressedValue(compressed, true)
35237
35238 return secp256k1.publicKeyCombine(publicKeys, compressed)
35239 },
35240
35241 signatureNormalize: function (signature) {
35242 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
35243 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
35244
35245 return secp256k1.signatureNormalize(signature)
35246 },
35247
35248 signatureExport: function (signature) {
35249 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
35250 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
35251
35252 var sigObj = secp256k1.signatureExport(signature)
35253 return der.signatureExport(sigObj)
35254 },
35255
35256 signatureImport: function (sig) {
35257 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
35258 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
35259
35260 var sigObj = der.signatureImport(sig)
35261 if (sigObj) return secp256k1.signatureImport(sigObj)
35262
35263 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
35264 },
35265
35266 signatureImportLax: function (sig) {
35267 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
35268 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
35269
35270 var sigObj = der.signatureImportLax(sig)
35271 if (sigObj) return secp256k1.signatureImport(sigObj)
35272
35273 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
35274 },
35275
35276 sign: function (message, privateKey, options) {
35277 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
35278 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
35279
35280 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35281 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35282
35283 var data = null
35284 var noncefn = null
35285 if (options !== undefined) {
35286 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
35287
35288 if (options.data !== undefined) {
35289 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
35290 assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)
35291 data = options.data
35292 }
35293
35294 if (options.noncefn !== undefined) {
35295 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
35296 noncefn = options.noncefn
35297 }
35298 }
35299
35300 return secp256k1.sign(message, privateKey, noncefn, data)
35301 },
35302
35303 verify: function (message, signature, publicKey) {
35304 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
35305 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
35306
35307 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
35308 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
35309
35310 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
35311 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
35312
35313 return secp256k1.verify(message, signature, publicKey)
35314 },
35315
35316 recover: function (message, signature, recovery, compressed) {
35317 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
35318 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
35319
35320 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
35321 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
35322
35323 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
35324 assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)
35325
35326 compressed = initCompressedValue(compressed, true)
35327
35328 return secp256k1.recover(message, signature, recovery, compressed)
35329 },
35330
35331 ecdh: function (publicKey, privateKey) {
35332 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
35333 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
35334
35335 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35336 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35337
35338 return secp256k1.ecdh(publicKey, privateKey)
35339 },
35340
35341 ecdhUnsafe: function (publicKey, privateKey, compressed) {
35342 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
35343 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
35344
35345 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35346 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35347
35348 compressed = initCompressedValue(compressed, true)
35349
35350 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
35351 }
35352 }
35353 }
35354
35355 },{"./assert":74,"./der":75,"./messages.json":78}],78:[function(require,module,exports){
35356 module.exports={
35357 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
35358 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
35359 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
35360 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
35361 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
35362 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
35363 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
35364 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
35365 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least 1 element",
35366 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
35367 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
35368 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
35369 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
35370 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
35371 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
35372 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
35373 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
35374 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
35375 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
35376 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
35377 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
35378 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
35379 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
35380 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
35381 "MSG32_TYPE_INVALID": "message should be a Buffer",
35382 "MSG32_LENGTH_INVALID": "message length is invalid",
35383 "OPTIONS_TYPE_INVALID": "options should be an Object",
35384 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
35385 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
35386 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
35387 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
35388 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -1 and 4",
35389 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
35390 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
35391 }
35392
35393 },{}],79:[function(require,module,exports){
35394 (function (Buffer){
35395 // prototype class for hash functions
35396 function Hash (blockSize, finalSize) {
35397 this._block = new Buffer(blockSize)
35398 this._finalSize = finalSize
35399 this._blockSize = blockSize
35400 this._len = 0
35401 this._s = 0
35402 }
35403
35404 Hash.prototype.update = function (data, enc) {
35405 if (typeof data === 'string') {
35406 enc = enc || 'utf8'
35407 data = new Buffer(data, enc)
35408 }
35409
35410 var l = this._len += data.length
35411 var s = this._s || 0
35412 var f = 0
35413 var buffer = this._block
35414
35415 while (s < l) {
35416 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
35417 var ch = (t - f)
35418
35419 for (var i = 0; i < ch; i++) {
35420 buffer[(s % this._blockSize) + i] = data[i + f]
35421 }
35422
35423 s += ch
35424 f += ch
35425
35426 if ((s % this._blockSize) === 0) {
35427 this._update(buffer)
35428 }
35429 }
35430 this._s = s
35431
35432 return this
35433 }
35434
35435 Hash.prototype.digest = function (enc) {
35436 // Suppose the length of the message M, in bits, is l
35437 var l = this._len * 8
35438
35439 // Append the bit 1 to the end of the message
35440 this._block[this._len % this._blockSize] = 0x80
35441
35442 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
35443 this._block.fill(0, this._len % this._blockSize + 1)
35444
35445 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
35446 this._update(this._block)
35447 this._block.fill(0)
35448 }
35449
35450 // to this append the block which is equal to the number l written in binary
35451 // TODO: handle case where l is > Math.pow(2, 29)
35452 this._block.writeInt32BE(l, this._blockSize - 4)
35453
35454 var hash = this._update(this._block) || this._hash()
35455
35456 return enc ? hash.toString(enc) : hash
35457 }
35458
35459 Hash.prototype._update = function () {
35460 throw new Error('_update must be implemented by subclass')
35461 }
35462
35463 module.exports = Hash
35464
35465 }).call(this,require("buffer").Buffer)
35466 },{"buffer":5}],80:[function(require,module,exports){
35467 var exports = module.exports = function SHA (algorithm) {
35468 algorithm = algorithm.toLowerCase()
35469
35470 var Algorithm = exports[algorithm]
35471 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
35472
35473 return new Algorithm()
35474 }
35475
35476 exports.sha = require('./sha')
35477 exports.sha1 = require('./sha1')
35478 exports.sha224 = require('./sha224')
35479 exports.sha256 = require('./sha256')
35480 exports.sha384 = require('./sha384')
35481 exports.sha512 = require('./sha512')
35482
35483 },{"./sha":81,"./sha1":82,"./sha224":83,"./sha256":84,"./sha384":85,"./sha512":86}],81:[function(require,module,exports){
35484 (function (Buffer){
35485 /*
35486 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
35487 * in FIPS PUB 180-1
35488 * This source code is derived from sha1.js of the same repository.
35489 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
35490 * operation was added.
35491 */
35492
35493 var inherits = require('inherits')
35494 var Hash = require('./hash')
35495
35496 var K = [
35497 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
35498 ]
35499
35500 var W = new Array(80)
35501
35502 function Sha () {
35503 this.init()
35504 this._w = W
35505
35506 Hash.call(this, 64, 56)
35507 }
35508
35509 inherits(Sha, Hash)
35510
35511 Sha.prototype.init = function () {
35512 this._a = 0x67452301
35513 this._b = 0xefcdab89
35514 this._c = 0x98badcfe
35515 this._d = 0x10325476
35516 this._e = 0xc3d2e1f0
35517
35518 return this
35519 }
35520
35521 function rotl5 (num) {
35522 return (num << 5) | (num >>> 27)
35523 }
35524
35525 function rotl30 (num) {
35526 return (num << 30) | (num >>> 2)
35527 }
35528
35529 function ft (s, b, c, d) {
35530 if (s === 0) return (b & c) | ((~b) & d)
35531 if (s === 2) return (b & c) | (b & d) | (c & d)
35532 return b ^ c ^ d
35533 }
35534
35535 Sha.prototype._update = function (M) {
35536 var W = this._w
35537
35538 var a = this._a | 0
35539 var b = this._b | 0
35540 var c = this._c | 0
35541 var d = this._d | 0
35542 var e = this._e | 0
35543
35544 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
35545 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
35546
35547 for (var j = 0; j < 80; ++j) {
35548 var s = ~~(j / 20)
35549 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
35550
35551 e = d
35552 d = c
35553 c = rotl30(b)
35554 b = a
35555 a = t
35556 }
35557
35558 this._a = (a + this._a) | 0
35559 this._b = (b + this._b) | 0
35560 this._c = (c + this._c) | 0
35561 this._d = (d + this._d) | 0
35562 this._e = (e + this._e) | 0
35563 }
35564
35565 Sha.prototype._hash = function () {
35566 var H = new Buffer(20)
35567
35568 H.writeInt32BE(this._a | 0, 0)
35569 H.writeInt32BE(this._b | 0, 4)
35570 H.writeInt32BE(this._c | 0, 8)
35571 H.writeInt32BE(this._d | 0, 12)
35572 H.writeInt32BE(this._e | 0, 16)
35573
35574 return H
35575 }
35576
35577 module.exports = Sha
35578
35579 }).call(this,require("buffer").Buffer)
35580 },{"./hash":79,"buffer":5,"inherits":63}],82:[function(require,module,exports){
35581 (function (Buffer){
35582 /*
35583 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
35584 * in FIPS PUB 180-1
35585 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
35586 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
35587 * Distributed under the BSD License
35588 * See http://pajhome.org.uk/crypt/md5 for details.
35589 */
35590
35591 var inherits = require('inherits')
35592 var Hash = require('./hash')
35593
35594 var K = [
35595 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
35596 ]
35597
35598 var W = new Array(80)
35599
35600 function Sha1 () {
35601 this.init()
35602 this._w = W
35603
35604 Hash.call(this, 64, 56)
35605 }
35606
35607 inherits(Sha1, Hash)
35608
35609 Sha1.prototype.init = function () {
35610 this._a = 0x67452301
35611 this._b = 0xefcdab89
35612 this._c = 0x98badcfe
35613 this._d = 0x10325476
35614 this._e = 0xc3d2e1f0
35615
35616 return this
35617 }
35618
35619 function rotl1 (num) {
35620 return (num << 1) | (num >>> 31)
35621 }
35622
35623 function rotl5 (num) {
35624 return (num << 5) | (num >>> 27)
35625 }
35626
35627 function rotl30 (num) {
35628 return (num << 30) | (num >>> 2)
35629 }
35630
35631 function ft (s, b, c, d) {
35632 if (s === 0) return (b & c) | ((~b) & d)
35633 if (s === 2) return (b & c) | (b & d) | (c & d)
35634 return b ^ c ^ d
35635 }
35636
35637 Sha1.prototype._update = function (M) {
35638 var W = this._w
35639
35640 var a = this._a | 0
35641 var b = this._b | 0
35642 var c = this._c | 0
35643 var d = this._d | 0
35644 var e = this._e | 0
35645
35646 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
35647 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
35648
35649 for (var j = 0; j < 80; ++j) {
35650 var s = ~~(j / 20)
35651 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
35652
35653 e = d
35654 d = c
35655 c = rotl30(b)
35656 b = a
35657 a = t
35658 }
35659
35660 this._a = (a + this._a) | 0
35661 this._b = (b + this._b) | 0
35662 this._c = (c + this._c) | 0
35663 this._d = (d + this._d) | 0
35664 this._e = (e + this._e) | 0
35665 }
35666
35667 Sha1.prototype._hash = function () {
35668 var H = new Buffer(20)
35669
35670 H.writeInt32BE(this._a | 0, 0)
35671 H.writeInt32BE(this._b | 0, 4)
35672 H.writeInt32BE(this._c | 0, 8)
35673 H.writeInt32BE(this._d | 0, 12)
35674 H.writeInt32BE(this._e | 0, 16)
35675
35676 return H
35677 }
35678
35679 module.exports = Sha1
35680
35681 }).call(this,require("buffer").Buffer)
35682 },{"./hash":79,"buffer":5,"inherits":63}],83:[function(require,module,exports){
35683 (function (Buffer){
35684 /**
35685 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
35686 * in FIPS 180-2
35687 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
35688 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
35689 *
35690 */
35691
35692 var inherits = require('inherits')
35693 var Sha256 = require('./sha256')
35694 var Hash = require('./hash')
35695
35696 var W = new Array(64)
35697
35698 function Sha224 () {
35699 this.init()
35700
35701 this._w = W // new Array(64)
35702
35703 Hash.call(this, 64, 56)
35704 }
35705
35706 inherits(Sha224, Sha256)
35707
35708 Sha224.prototype.init = function () {
35709 this._a = 0xc1059ed8
35710 this._b = 0x367cd507
35711 this._c = 0x3070dd17
35712 this._d = 0xf70e5939
35713 this._e = 0xffc00b31
35714 this._f = 0x68581511
35715 this._g = 0x64f98fa7
35716 this._h = 0xbefa4fa4
35717
35718 return this
35719 }
35720
35721 Sha224.prototype._hash = function () {
35722 var H = new Buffer(28)
35723
35724 H.writeInt32BE(this._a, 0)
35725 H.writeInt32BE(this._b, 4)
35726 H.writeInt32BE(this._c, 8)
35727 H.writeInt32BE(this._d, 12)
35728 H.writeInt32BE(this._e, 16)
35729 H.writeInt32BE(this._f, 20)
35730 H.writeInt32BE(this._g, 24)
35731
35732 return H
35733 }
35734
35735 module.exports = Sha224
35736
35737 }).call(this,require("buffer").Buffer)
35738 },{"./hash":79,"./sha256":84,"buffer":5,"inherits":63}],84:[function(require,module,exports){
35739 (function (Buffer){
35740 /**
35741 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
35742 * in FIPS 180-2
35743 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
35744 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
35745 *
35746 */
35747
35748 var inherits = require('inherits')
35749 var Hash = require('./hash')
35750
35751 var K = [
35752 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
35753 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
35754 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
35755 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
35756 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
35757 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
35758 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
35759 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
35760 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
35761 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
35762 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
35763 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
35764 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
35765 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
35766 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
35767 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
35768 ]
35769
35770 var W = new Array(64)
35771
35772 function Sha256 () {
35773 this.init()
35774
35775 this._w = W // new Array(64)
35776
35777 Hash.call(this, 64, 56)
35778 }
35779
35780 inherits(Sha256, Hash)
35781
35782 Sha256.prototype.init = function () {
35783 this._a = 0x6a09e667
35784 this._b = 0xbb67ae85
35785 this._c = 0x3c6ef372
35786 this._d = 0xa54ff53a
35787 this._e = 0x510e527f
35788 this._f = 0x9b05688c
35789 this._g = 0x1f83d9ab
35790 this._h = 0x5be0cd19
35791
35792 return this
35793 }
35794
35795 function ch (x, y, z) {
35796 return z ^ (x & (y ^ z))
35797 }
35798
35799 function maj (x, y, z) {
35800 return (x & y) | (z & (x | y))
35801 }
35802
35803 function sigma0 (x) {
35804 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
35805 }
35806
35807 function sigma1 (x) {
35808 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
35809 }
35810
35811 function gamma0 (x) {
35812 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
35813 }
35814
35815 function gamma1 (x) {
35816 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
35817 }
35818
35819 Sha256.prototype._update = function (M) {
35820 var W = this._w
35821
35822 var a = this._a | 0
35823 var b = this._b | 0
35824 var c = this._c | 0
35825 var d = this._d | 0
35826 var e = this._e | 0
35827 var f = this._f | 0
35828 var g = this._g | 0
35829 var h = this._h | 0
35830
35831 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
35832 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
35833
35834 for (var j = 0; j < 64; ++j) {
35835 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
35836 var T2 = (sigma0(a) + maj(a, b, c)) | 0
35837
35838 h = g
35839 g = f
35840 f = e
35841 e = (d + T1) | 0
35842 d = c
35843 c = b
35844 b = a
35845 a = (T1 + T2) | 0
35846 }
35847
35848 this._a = (a + this._a) | 0
35849 this._b = (b + this._b) | 0
35850 this._c = (c + this._c) | 0
35851 this._d = (d + this._d) | 0
35852 this._e = (e + this._e) | 0
35853 this._f = (f + this._f) | 0
35854 this._g = (g + this._g) | 0
35855 this._h = (h + this._h) | 0
35856 }
35857
35858 Sha256.prototype._hash = function () {
35859 var H = new Buffer(32)
35860
35861 H.writeInt32BE(this._a, 0)
35862 H.writeInt32BE(this._b, 4)
35863 H.writeInt32BE(this._c, 8)
35864 H.writeInt32BE(this._d, 12)
35865 H.writeInt32BE(this._e, 16)
35866 H.writeInt32BE(this._f, 20)
35867 H.writeInt32BE(this._g, 24)
35868 H.writeInt32BE(this._h, 28)
35869
35870 return H
35871 }
35872
35873 module.exports = Sha256
35874
35875 }).call(this,require("buffer").Buffer)
35876 },{"./hash":79,"buffer":5,"inherits":63}],85:[function(require,module,exports){
35877 (function (Buffer){
35878 var inherits = require('inherits')
35879 var SHA512 = require('./sha512')
35880 var Hash = require('./hash')
35881
35882 var W = new Array(160)
35883
35884 function Sha384 () {
35885 this.init()
35886 this._w = W
35887
35888 Hash.call(this, 128, 112)
35889 }
35890
35891 inherits(Sha384, SHA512)
35892
35893 Sha384.prototype.init = function () {
35894 this._ah = 0xcbbb9d5d
35895 this._bh = 0x629a292a
35896 this._ch = 0x9159015a
35897 this._dh = 0x152fecd8
35898 this._eh = 0x67332667
35899 this._fh = 0x8eb44a87
35900 this._gh = 0xdb0c2e0d
35901 this._hh = 0x47b5481d
35902
35903 this._al = 0xc1059ed8
35904 this._bl = 0x367cd507
35905 this._cl = 0x3070dd17
35906 this._dl = 0xf70e5939
35907 this._el = 0xffc00b31
35908 this._fl = 0x68581511
35909 this._gl = 0x64f98fa7
35910 this._hl = 0xbefa4fa4
35911
35912 return this
35913 }
35914
35915 Sha384.prototype._hash = function () {
35916 var H = new Buffer(48)
35917
35918 function writeInt64BE (h, l, offset) {
35919 H.writeInt32BE(h, offset)
35920 H.writeInt32BE(l, offset + 4)
35921 }
35922
35923 writeInt64BE(this._ah, this._al, 0)
35924 writeInt64BE(this._bh, this._bl, 8)
35925 writeInt64BE(this._ch, this._cl, 16)
35926 writeInt64BE(this._dh, this._dl, 24)
35927 writeInt64BE(this._eh, this._el, 32)
35928 writeInt64BE(this._fh, this._fl, 40)
35929
35930 return H
35931 }
35932
35933 module.exports = Sha384
35934
35935 }).call(this,require("buffer").Buffer)
35936 },{"./hash":79,"./sha512":86,"buffer":5,"inherits":63}],86:[function(require,module,exports){
35937 (function (Buffer){
35938 var inherits = require('inherits')
35939 var Hash = require('./hash')
35940
35941 var K = [
35942 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
35943 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
35944 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
35945 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
35946 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
35947 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
35948 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
35949 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
35950 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
35951 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
35952 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
35953 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
35954 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
35955 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
35956 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
35957 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
35958 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
35959 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
35960 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
35961 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
35962 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
35963 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
35964 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
35965 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
35966 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
35967 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
35968 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
35969 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
35970 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
35971 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
35972 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
35973 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
35974 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
35975 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
35976 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
35977 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
35978 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
35979 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
35980 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
35981 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
35982 ]
35983
35984 var W = new Array(160)
35985
35986 function Sha512 () {
35987 this.init()
35988 this._w = W
35989
35990 Hash.call(this, 128, 112)
35991 }
35992
35993 inherits(Sha512, Hash)
35994
35995 Sha512.prototype.init = function () {
35996 this._ah = 0x6a09e667
35997 this._bh = 0xbb67ae85
35998 this._ch = 0x3c6ef372
35999 this._dh = 0xa54ff53a
36000 this._eh = 0x510e527f
36001 this._fh = 0x9b05688c
36002 this._gh = 0x1f83d9ab
36003 this._hh = 0x5be0cd19
36004
36005 this._al = 0xf3bcc908
36006 this._bl = 0x84caa73b
36007 this._cl = 0xfe94f82b
36008 this._dl = 0x5f1d36f1
36009 this._el = 0xade682d1
36010 this._fl = 0x2b3e6c1f
36011 this._gl = 0xfb41bd6b
36012 this._hl = 0x137e2179
36013
36014 return this
36015 }
36016
36017 function Ch (x, y, z) {
36018 return z ^ (x & (y ^ z))
36019 }
36020
36021 function maj (x, y, z) {
36022 return (x & y) | (z & (x | y))
36023 }
36024
36025 function sigma0 (x, xl) {
36026 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
36027 }
36028
36029 function sigma1 (x, xl) {
36030 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
36031 }
36032
36033 function Gamma0 (x, xl) {
36034 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
36035 }
36036
36037 function Gamma0l (x, xl) {
36038 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
36039 }
36040
36041 function Gamma1 (x, xl) {
36042 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
36043 }
36044
36045 function Gamma1l (x, xl) {
36046 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
36047 }
36048
36049 function getCarry (a, b) {
36050 return (a >>> 0) < (b >>> 0) ? 1 : 0
36051 }
36052
36053 Sha512.prototype._update = function (M) {
36054 var W = this._w
36055
36056 var ah = this._ah | 0
36057 var bh = this._bh | 0
36058 var ch = this._ch | 0
36059 var dh = this._dh | 0
36060 var eh = this._eh | 0
36061 var fh = this._fh | 0
36062 var gh = this._gh | 0
36063 var hh = this._hh | 0
36064
36065 var al = this._al | 0
36066 var bl = this._bl | 0
36067 var cl = this._cl | 0
36068 var dl = this._dl | 0
36069 var el = this._el | 0
36070 var fl = this._fl | 0
36071 var gl = this._gl | 0
36072 var hl = this._hl | 0
36073
36074 for (var i = 0; i < 32; i += 2) {
36075 W[i] = M.readInt32BE(i * 4)
36076 W[i + 1] = M.readInt32BE(i * 4 + 4)
36077 }
36078 for (; i < 160; i += 2) {
36079 var xh = W[i - 15 * 2]
36080 var xl = W[i - 15 * 2 + 1]
36081 var gamma0 = Gamma0(xh, xl)
36082 var gamma0l = Gamma0l(xl, xh)
36083
36084 xh = W[i - 2 * 2]
36085 xl = W[i - 2 * 2 + 1]
36086 var gamma1 = Gamma1(xh, xl)
36087 var gamma1l = Gamma1l(xl, xh)
36088
36089 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
36090 var Wi7h = W[i - 7 * 2]
36091 var Wi7l = W[i - 7 * 2 + 1]
36092
36093 var Wi16h = W[i - 16 * 2]
36094 var Wi16l = W[i - 16 * 2 + 1]
36095
36096 var Wil = (gamma0l + Wi7l) | 0
36097 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
36098 Wil = (Wil + gamma1l) | 0
36099 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
36100 Wil = (Wil + Wi16l) | 0
36101 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
36102
36103 W[i] = Wih
36104 W[i + 1] = Wil
36105 }
36106
36107 for (var j = 0; j < 160; j += 2) {
36108 Wih = W[j]
36109 Wil = W[j + 1]
36110
36111 var majh = maj(ah, bh, ch)
36112 var majl = maj(al, bl, cl)
36113
36114 var sigma0h = sigma0(ah, al)
36115 var sigma0l = sigma0(al, ah)
36116 var sigma1h = sigma1(eh, el)
36117 var sigma1l = sigma1(el, eh)
36118
36119 // t1 = h + sigma1 + ch + K[j] + W[j]
36120 var Kih = K[j]
36121 var Kil = K[j + 1]
36122
36123 var chh = Ch(eh, fh, gh)
36124 var chl = Ch(el, fl, gl)
36125
36126 var t1l = (hl + sigma1l) | 0
36127 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
36128 t1l = (t1l + chl) | 0
36129 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
36130 t1l = (t1l + Kil) | 0
36131 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
36132 t1l = (t1l + Wil) | 0
36133 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
36134
36135 // t2 = sigma0 + maj
36136 var t2l = (sigma0l + majl) | 0
36137 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
36138
36139 hh = gh
36140 hl = gl
36141 gh = fh
36142 gl = fl
36143 fh = eh
36144 fl = el
36145 el = (dl + t1l) | 0
36146 eh = (dh + t1h + getCarry(el, dl)) | 0
36147 dh = ch
36148 dl = cl
36149 ch = bh
36150 cl = bl
36151 bh = ah
36152 bl = al
36153 al = (t1l + t2l) | 0
36154 ah = (t1h + t2h + getCarry(al, t1l)) | 0
36155 }
36156
36157 this._al = (this._al + al) | 0
36158 this._bl = (this._bl + bl) | 0
36159 this._cl = (this._cl + cl) | 0
36160 this._dl = (this._dl + dl) | 0
36161 this._el = (this._el + el) | 0
36162 this._fl = (this._fl + fl) | 0
36163 this._gl = (this._gl + gl) | 0
36164 this._hl = (this._hl + hl) | 0
36165
36166 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
36167 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
36168 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
36169 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
36170 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
36171 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
36172 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
36173 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
36174 }
36175
36176 Sha512.prototype._hash = function () {
36177 var H = new Buffer(64)
36178
36179 function writeInt64BE (h, l, offset) {
36180 H.writeInt32BE(h, offset)
36181 H.writeInt32BE(l, offset + 4)
36182 }
36183
36184 writeInt64BE(this._ah, this._al, 0)
36185 writeInt64BE(this._bh, this._bl, 8)
36186 writeInt64BE(this._ch, this._cl, 16)
36187 writeInt64BE(this._dh, this._dl, 24)
36188 writeInt64BE(this._eh, this._el, 32)
36189 writeInt64BE(this._fh, this._fl, 40)
36190 writeInt64BE(this._gh, this._gl, 48)
36191 writeInt64BE(this._hh, this._hl, 56)
36192
36193 return H
36194 }
36195
36196 module.exports = Sha512
36197
36198 }).call(this,require("buffer").Buffer)
36199 },{"./hash":79,"buffer":5,"inherits":63}],87:[function(require,module,exports){
36200 var isHexPrefixed = require('is-hex-prefixed');
36201
36202 /**
36203 * Removes '0x' from a given `String` is present
36204 * @param {String} str the string value
36205 * @return {String|Optional} a string by pass if necessary
36206 */
36207 module.exports = function stripHexPrefix(str) {
36208 if (typeof str !== 'string') {
36209 return str;
36210 }
36211
36212 return isHexPrefixed(str) ? str.slice(2) : str;
36213 }
36214
36215 },{"is-hex-prefixed":64}]},{},[31])(31)
36216 });</script>
36217 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
36218
36219 //// base.js
36220
36221 /** @fileOverview Javascript cryptography implementation.
36222 *
36223 * Crush to remove comments, shorten variable names and
36224 * generally reduce transmission size.
36225 *
36226 * @author Emily Stark
36227 * @author Mike Hamburg
36228 * @author Dan Boneh
36229 */
36230
36231 "use strict";
36232 /*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
36233 /*global document, window, escape, unescape, module, require, Uint32Array */
36234
36235 /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
36236 var sjcl = {
36237 /** @namespace Symmetric ciphers. */
36238 cipher: {},
36239
36240 /** @namespace Hash functions. Right now only SHA256 is implemented. */
36241 hash: {},
36242
36243 /** @namespace Key exchange functions. Right now only SRP is implemented. */
36244 keyexchange: {},
36245
36246 /** @namespace Block cipher modes of operation. */
36247 mode: {},
36248
36249 /** @namespace Miscellaneous. HMAC and PBKDF2. */
36250 misc: {},
36251
36252 /**
36253 * @namespace Bit array encoders and decoders.
36254 *
36255 * @description
36256 * The members of this namespace are functions which translate between
36257 * SJCL's bitArrays and other objects (usually strings). Because it
36258 * isn't always clear which direction is encoding and which is decoding,
36259 * the method names are "fromBits" and "toBits".
36260 */
36261 codec: {},
36262
36263 /** @namespace Exceptions. */
36264 exception: {
36265 /** @constructor Ciphertext is corrupt. */
36266 corrupt: function(message) {
36267 this.toString = function() { return "CORRUPT: "+this.message; };
36268 this.message = message;
36269 },
36270
36271 /** @constructor Invalid parameter. */
36272 invalid: function(message) {
36273 this.toString = function() { return "INVALID: "+this.message; };
36274 this.message = message;
36275 },
36276
36277 /** @constructor Bug or missing feature in SJCL. @constructor */
36278 bug: function(message) {
36279 this.toString = function() { return "BUG: "+this.message; };
36280 this.message = message;
36281 },
36282
36283 /** @constructor Something isn't ready. */
36284 notReady: function(message) {
36285 this.toString = function() { return "NOT READY: "+this.message; };
36286 this.message = message;
36287 }
36288 }
36289 };
36290
36291 if(typeof module !== 'undefined' && module.exports){
36292 module.exports = sjcl;
36293 }
36294 if (typeof define === "function") {
36295 define([], function () {
36296 return sjcl;
36297 });
36298 }
36299
36300
36301 //// bitArray.js
36302
36303 /** @fileOverview Arrays of bits, encoded as arrays of Numbers.
36304 *
36305 * @author Emily Stark
36306 * @author Mike Hamburg
36307 * @author Dan Boneh
36308 */
36309
36310 /** @namespace Arrays of bits, encoded as arrays of Numbers.
36311 *
36312 * @description
36313 * <p>
36314 * These objects are the currency accepted by SJCL's crypto functions.
36315 * </p>
36316 *
36317 * <p>
36318 * Most of our crypto primitives operate on arrays of 4-byte words internally,
36319 * but many of them can take arguments that are not a multiple of 4 bytes.
36320 * This library encodes arrays of bits (whose size need not be a multiple of 8
36321 * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
36322 * array of words, 32 bits at a time. Since the words are double-precision
36323 * floating point numbers, they fit some extra data. We use this (in a private,
36324 * possibly-changing manner) to encode the number of bits actually present
36325 * in the last word of the array.
36326 * </p>
36327 *
36328 * <p>
36329 * Because bitwise ops clear this out-of-band data, these arrays can be passed
36330 * to ciphers like AES which want arrays of words.
36331 * </p>
36332 */
36333 sjcl.bitArray = {
36334 /**
36335 * Array slices in units of bits.
36336 * @param {bitArray} a The array to slice.
36337 * @param {Number} bstart The offset to the start of the slice, in bits.
36338 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
36339 * slice until the end of the array.
36340 * @return {bitArray} The requested slice.
36341 */
36342 bitSlice: function (a, bstart, bend) {
36343 a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
36344 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
36345 },
36346
36347 /**
36348 * Extract a number packed into a bit array.
36349 * @param {bitArray} a The array to slice.
36350 * @param {Number} bstart The offset to the start of the slice, in bits.
36351 * @param {Number} length The length of the number to extract.
36352 * @return {Number} The requested slice.
36353 */
36354 extract: function(a, bstart, blength) {
36355 // FIXME: this Math.floor is not necessary at all, but for some reason
36356 // seems to suppress a bug in the Chromium JIT.
36357 var x, sh = Math.floor((-bstart-blength) & 31);
36358 if ((bstart + blength - 1 ^ bstart) & -32) {
36359 // it crosses a boundary
36360 x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
36361 } else {
36362 // within a single word
36363 x = a[bstart/32|0] >>> sh;
36364 }
36365 return x & ((1<<blength) - 1);
36366 },
36367
36368 /**
36369 * Concatenate two bit arrays.
36370 * @param {bitArray} a1 The first array.
36371 * @param {bitArray} a2 The second array.
36372 * @return {bitArray} The concatenation of a1 and a2.
36373 */
36374 concat: function (a1, a2) {
36375 if (a1.length === 0 || a2.length === 0) {
36376 return a1.concat(a2);
36377 }
36378
36379 var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
36380 if (shift === 32) {
36381 return a1.concat(a2);
36382 } else {
36383 return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
36384 }
36385 },
36386
36387 /**
36388 * Find the length of an array of bits.
36389 * @param {bitArray} a The array.
36390 * @return {Number} The length of a, in bits.
36391 */
36392 bitLength: function (a) {
36393 var l = a.length, x;
36394 if (l === 0) { return 0; }
36395 x = a[l - 1];
36396 return (l-1) * 32 + sjcl.bitArray.getPartial(x);
36397 },
36398
36399 /**
36400 * Truncate an array.
36401 * @param {bitArray} a The array.
36402 * @param {Number} len The length to truncate to, in bits.
36403 * @return {bitArray} A new array, truncated to len bits.
36404 */
36405 clamp: function (a, len) {
36406 if (a.length * 32 < len) { return a; }
36407 a = a.slice(0, Math.ceil(len / 32));
36408 var l = a.length;
36409 len = len & 31;
36410 if (l > 0 && len) {
36411 a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
36412 }
36413 return a;
36414 },
36415
36416 /**
36417 * Make a partial word for a bit array.
36418 * @param {Number} len The number of bits in the word.
36419 * @param {Number} x The bits.
36420 * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
36421 * @return {Number} The partial word.
36422 */
36423 partial: function (len, x, _end) {
36424 if (len === 32) { return x; }
36425 return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
36426 },
36427
36428 /**
36429 * Get the number of bits used by a partial word.
36430 * @param {Number} x The partial word.
36431 * @return {Number} The number of bits used by the partial word.
36432 */
36433 getPartial: function (x) {
36434 return Math.round(x/0x10000000000) || 32;
36435 },
36436
36437 /**
36438 * Compare two arrays for equality in a predictable amount of time.
36439 * @param {bitArray} a The first array.
36440 * @param {bitArray} b The second array.
36441 * @return {boolean} true if a == b; false otherwise.
36442 */
36443 equal: function (a, b) {
36444 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
36445 return false;
36446 }
36447 var x = 0, i;
36448 for (i=0; i<a.length; i++) {
36449 x |= a[i]^b[i];
36450 }
36451 return (x === 0);
36452 },
36453
36454 /** Shift an array right.
36455 * @param {bitArray} a The array to shift.
36456 * @param {Number} shift The number of bits to shift.
36457 * @param {Number} [carry=0] A byte to carry in
36458 * @param {bitArray} [out=[]] An array to prepend to the output.
36459 * @private
36460 */
36461 _shiftRight: function (a, shift, carry, out) {
36462 var i, last2=0, shift2;
36463 if (out === undefined) { out = []; }
36464
36465 for (; shift >= 32; shift -= 32) {
36466 out.push(carry);
36467 carry = 0;
36468 }
36469 if (shift === 0) {
36470 return out.concat(a);
36471 }
36472
36473 for (i=0; i<a.length; i++) {
36474 out.push(carry | a[i]>>>shift);
36475 carry = a[i] << (32-shift);
36476 }
36477 last2 = a.length ? a[a.length-1] : 0;
36478 shift2 = sjcl.bitArray.getPartial(last2);
36479 out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
36480 return out;
36481 },
36482
36483 /** xor a block of 4 words together.
36484 * @private
36485 */
36486 _xor4: function(x,y) {
36487 return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
36488 },
36489
36490 /** byteswap a word array inplace.
36491 * (does not handle partial words)
36492 * @param {sjcl.bitArray} a word array
36493 * @return {sjcl.bitArray} byteswapped array
36494 */
36495 byteswapM: function(a) {
36496 var i, v, m = 0xff00;
36497 for (i = 0; i < a.length; ++i) {
36498 v = a[i];
36499 a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24);
36500 }
36501 return a;
36502 }
36503 };
36504
36505
36506 //// codecString.js
36507
36508 /** @fileOverview Bit array codec implementations.
36509 *
36510 * @author Emily Stark
36511 * @author Mike Hamburg
36512 * @author Dan Boneh
36513 */
36514
36515 /** @namespace UTF-8 strings */
36516 sjcl.codec.utf8String = {
36517 /** Convert from a bitArray to a UTF-8 string. */
36518 fromBits: function (arr) {
36519 var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
36520 for (i=0; i<bl/8; i++) {
36521 if ((i&3) === 0) {
36522 tmp = arr[i/4];
36523 }
36524 out += String.fromCharCode(tmp >>> 24);
36525 tmp <<= 8;
36526 }
36527 return decodeURIComponent(escape(out));
36528 },
36529
36530 /** Convert from a UTF-8 string to a bitArray. */
36531 toBits: function (str) {
36532 str = unescape(encodeURIComponent(str));
36533 var out = [], i, tmp=0;
36534 for (i=0; i<str.length; i++) {
36535 tmp = tmp << 8 | str.charCodeAt(i);
36536 if ((i&3) === 3) {
36537 out.push(tmp);
36538 tmp = 0;
36539 }
36540 }
36541 if (i&3) {
36542 out.push(sjcl.bitArray.partial(8*(i&3), tmp));
36543 }
36544 return out;
36545 }
36546 };
36547
36548
36549 //// codecHex.js
36550
36551 /** @fileOverview Bit array codec implementations.
36552 *
36553 * @author Emily Stark
36554 * @author Mike Hamburg
36555 * @author Dan Boneh
36556 */
36557
36558 /** @namespace Hexadecimal */
36559 sjcl.codec.hex = {
36560 /** Convert from a bitArray to a hex string. */
36561 fromBits: function (arr) {
36562 var out = "", i;
36563 for (i=0; i<arr.length; i++) {
36564 out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4);
36565 }
36566 return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 ");
36567 },
36568 /** Convert from a hex string to a bitArray. */
36569 toBits: function (str) {
36570 var i, out=[], len;
36571 str = str.replace(/\s|0x/g, "");
36572 len = str.length;
36573 str = str + "00000000";
36574 for (i=0; i<str.length; i+=8) {
36575 out.push(parseInt(str.substr(i,8),16)^0);
36576 }
36577 return sjcl.bitArray.clamp(out, len*4);
36578 }
36579 };
36580
36581
36582 //// sha512.js
36583
36584 /** @fileOverview Javascript SHA-512 implementation.
36585 *
36586 * This implementation was written for CryptoJS by Jeff Mott and adapted for
36587 * SJCL by Stefan Thomas.
36588 *
36589 * CryptoJS (c) 20092012 by Jeff Mott. All rights reserved.
36590 * Released with New BSD License
36591 *
36592 * @author Emily Stark
36593 * @author Mike Hamburg
36594 * @author Dan Boneh
36595 * @author Jeff Mott
36596 * @author Stefan Thomas
36597 */
36598
36599 /**
36600 * Context for a SHA-512 operation in progress.
36601 * @constructor
36602 * @class Secure Hash Algorithm, 512 bits.
36603 */
36604 sjcl.hash.sha512 = function (hash) {
36605 if (!this._key[0]) { this._precompute(); }
36606 if (hash) {
36607 this._h = hash._h.slice(0);
36608 this._buffer = hash._buffer.slice(0);
36609 this._length = hash._length;
36610 } else {
36611 this.reset();
36612 }
36613 };
36614
36615 /**
36616 * Hash a string or an array of words.
36617 * @static
36618 * @param {bitArray|String} data the data to hash.
36619 * @return {bitArray} The hash value, an array of 16 big-endian words.
36620 */
36621 sjcl.hash.sha512.hash = function (data) {
36622 return (new sjcl.hash.sha512()).update(data).finalize();
36623 };
36624
36625 sjcl.hash.sha512.prototype = {
36626 /**
36627 * The hash's block size, in bits.
36628 * @constant
36629 */
36630 blockSize: 1024,
36631
36632 /**
36633 * Reset the hash state.
36634 * @return this
36635 */
36636 reset:function () {
36637 this._h = this._init.slice(0);
36638 this._buffer = [];
36639 this._length = 0;
36640 return this;
36641 },
36642
36643 /**
36644 * Input several words to the hash.
36645 * @param {bitArray|String} data the data to hash.
36646 * @return this
36647 */
36648 update: function (data) {
36649 if (typeof data === "string") {
36650 data = sjcl.codec.utf8String.toBits(data);
36651 }
36652 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
36653 ol = this._length,
36654 nl = this._length = ol + sjcl.bitArray.bitLength(data);
36655 for (i = 1024+ol & -1024; i <= nl; i+= 1024) {
36656 this._block(b.splice(0,32));
36657 }
36658 return this;
36659 },
36660
36661 /**
36662 * Complete hashing and output the hash value.
36663 * @return {bitArray} The hash value, an array of 16 big-endian words.
36664 */
36665 finalize:function () {
36666 var i, b = this._buffer, h = this._h;
36667
36668 // Round out and push the buffer
36669 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
36670
36671 // Round out the buffer to a multiple of 32 words, less the 4 length words.
36672 for (i = b.length + 4; i & 31; i++) {
36673 b.push(0);
36674 }
36675
36676 // append the length
36677 b.push(0);
36678 b.push(0);
36679 b.push(Math.floor(this._length / 0x100000000));
36680 b.push(this._length | 0);
36681
36682 while (b.length) {
36683 this._block(b.splice(0,32));
36684 }
36685
36686 this.reset();
36687 return h;
36688 },
36689
36690 /**
36691 * The SHA-512 initialization vector, to be precomputed.
36692 * @private
36693 */
36694 _init:[],
36695
36696 /**
36697 * Least significant 24 bits of SHA512 initialization values.
36698 *
36699 * Javascript only has 53 bits of precision, so we compute the 40 most
36700 * significant bits and add the remaining 24 bits as constants.
36701 *
36702 * @private
36703 */
36704 _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ],
36705
36706 /*
36707 _init:
36708 [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
36709 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179],
36710 */
36711
36712 /**
36713 * The SHA-512 hash key, to be precomputed.
36714 * @private
36715 */
36716 _key:[],
36717
36718 /**
36719 * Least significant 24 bits of SHA512 key values.
36720 * @private
36721 */
36722 _keyr:
36723 [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118,
36724 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694,
36725 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5,
36726 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70,
36727 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b,
36728 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8,
36729 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3,
36730 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b,
36731 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b,
36732 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817],
36733
36734 /*
36735 _key:
36736 [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
36737 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
36738 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
36739 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
36740 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
36741 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
36742 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
36743 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
36744 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
36745 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
36746 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
36747 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
36748 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
36749 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
36750 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
36751 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
36752 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
36753 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
36754 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
36755 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817],
36756 */
36757
36758 /**
36759 * Function to precompute _init and _key.
36760 * @private
36761 */
36762 _precompute: function () {
36763 // XXX: This code is for precomputing the SHA256 constants, change for
36764 // SHA512 and re-enable.
36765 var i = 0, prime = 2, factor;
36766
36767 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
36768 function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; }
36769
36770 outer: for (; i<80; prime++) {
36771 for (factor=2; factor*factor <= prime; factor++) {
36772 if (prime % factor === 0) {
36773 // not a prime
36774 continue outer;
36775 }
36776 }
36777
36778 if (i<8) {
36779 this._init[i*2] = frac(Math.pow(prime, 1/2));
36780 this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i];
36781 }
36782 this._key[i*2] = frac(Math.pow(prime, 1/3));
36783 this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i];
36784 i++;
36785 }
36786 },
36787
36788 /**
36789 * Perform one cycle of SHA-512.
36790 * @param {bitArray} words one block of words.
36791 * @private
36792 */
36793 _block:function (words) {
36794 var i, wrh, wrl,
36795 w = words.slice(0),
36796 h = this._h,
36797 k = this._key,
36798 h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3],
36799 h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7],
36800 h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11],
36801 h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15];
36802
36803 // Working variables
36804 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
36805 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
36806 eh = h4h, el = h4l, fh = h5h, fl = h5l,
36807 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
36808
36809 for (i=0; i<80; i++) {
36810 // load up the input word for this round
36811 if (i<16) {
36812 wrh = w[i * 2];
36813 wrl = w[i * 2 + 1];
36814 } else {
36815 // Gamma0
36816 var gamma0xh = w[(i-15) * 2];
36817 var gamma0xl = w[(i-15) * 2 + 1];
36818 var gamma0h =
36819 ((gamma0xl << 31) | (gamma0xh >>> 1)) ^
36820 ((gamma0xl << 24) | (gamma0xh >>> 8)) ^
36821 (gamma0xh >>> 7);
36822 var gamma0l =
36823 ((gamma0xh << 31) | (gamma0xl >>> 1)) ^
36824 ((gamma0xh << 24) | (gamma0xl >>> 8)) ^
36825 ((gamma0xh << 25) | (gamma0xl >>> 7));
36826
36827 // Gamma1
36828 var gamma1xh = w[(i-2) * 2];
36829 var gamma1xl = w[(i-2) * 2 + 1];
36830 var gamma1h =
36831 ((gamma1xl << 13) | (gamma1xh >>> 19)) ^
36832 ((gamma1xh << 3) | (gamma1xl >>> 29)) ^
36833 (gamma1xh >>> 6);
36834 var gamma1l =
36835 ((gamma1xh << 13) | (gamma1xl >>> 19)) ^
36836 ((gamma1xl << 3) | (gamma1xh >>> 29)) ^
36837 ((gamma1xh << 26) | (gamma1xl >>> 6));
36838
36839 // Shortcuts
36840 var wr7h = w[(i-7) * 2];
36841 var wr7l = w[(i-7) * 2 + 1];
36842
36843 var wr16h = w[(i-16) * 2];
36844 var wr16l = w[(i-16) * 2 + 1];
36845
36846 // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16)
36847 wrl = gamma0l + wr7l;
36848 wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0);
36849 wrl += gamma1l;
36850 wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0);
36851 wrl += wr16l;
36852 wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0);
36853 }
36854
36855 w[i*2] = wrh |= 0;
36856 w[i*2 + 1] = wrl |= 0;
36857
36858 // Ch
36859 var chh = (eh & fh) ^ (~eh & gh);
36860 var chl = (el & fl) ^ (~el & gl);
36861
36862 // Maj
36863 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
36864 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
36865
36866 // Sigma0
36867 var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
36868 var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
36869
36870 // Sigma1
36871 var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9));
36872 var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9));
36873
36874 // K(round)
36875 var krh = k[i*2];
36876 var krl = k[i*2+1];
36877
36878 // t1 = h + sigma1 + ch + K(round) + W(round)
36879 var t1l = hl + sigma1l;
36880 var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
36881 t1l += chl;
36882 t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
36883 t1l += krl;
36884 t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0);
36885 t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972
36886 t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0);
36887
36888 // t2 = sigma0 + maj
36889 var t2l = sigma0l + majl;
36890 var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
36891
36892 // Update working variables
36893 hh = gh;
36894 hl = gl;
36895 gh = fh;
36896 gl = fl;
36897 fh = eh;
36898 fl = el;
36899 el = (dl + t1l) | 0;
36900 eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
36901 dh = ch;
36902 dl = cl;
36903 ch = bh;
36904 cl = bl;
36905 bh = ah;
36906 bl = al;
36907 al = (t1l + t2l) | 0;
36908 ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
36909 }
36910
36911 // Intermediate hash
36912 h0l = h[1] = (h0l + al) | 0;
36913 h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0;
36914 h1l = h[3] = (h1l + bl) | 0;
36915 h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0;
36916 h2l = h[5] = (h2l + cl) | 0;
36917 h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0;
36918 h3l = h[7] = (h3l + dl) | 0;
36919 h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
36920 h4l = h[9] = (h4l + el) | 0;
36921 h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0;
36922 h5l = h[11] = (h5l + fl) | 0;
36923 h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0;
36924 h6l = h[13] = (h6l + gl) | 0;
36925 h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0;
36926 h7l = h[15] = (h7l + hl) | 0;
36927 h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
36928 }
36929 };
36930
36931
36932 //// hmac.js
36933
36934 /** @fileOverview HMAC implementation.
36935 *
36936 * @author Emily Stark
36937 * @author Mike Hamburg
36938 * @author Dan Boneh
36939 */
36940
36941 /** HMAC with the specified hash function.
36942 * @constructor
36943 * @param {bitArray} key the key for HMAC.
36944 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
36945 */
36946 sjcl.misc.hmac = function (key, Hash) {
36947 this._hash = Hash = Hash || sjcl.hash.sha256;
36948 var exKey = [[],[]], i,
36949 bs = Hash.prototype.blockSize / 32;
36950 this._baseHash = [new Hash(), new Hash()];
36951
36952 if (key.length > bs) {
36953 key = Hash.hash(key);
36954 }
36955
36956 for (i=0; i<bs; i++) {
36957 exKey[0][i] = key[i]^0x36363636;
36958 exKey[1][i] = key[i]^0x5C5C5C5C;
36959 }
36960
36961 this._baseHash[0].update(exKey[0]);
36962 this._baseHash[1].update(exKey[1]);
36963 this._resultHash = new Hash(this._baseHash[0]);
36964 };
36965
36966 /** HMAC with the specified hash function. Also called encrypt since it's a prf.
36967 * @param {bitArray|String} data The data to mac.
36968 */
36969 sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
36970 if (!this._updated) {
36971 this.update(data);
36972 return this.digest(data);
36973 } else {
36974 throw new sjcl.exception.invalid("encrypt on already updated hmac called!");
36975 }
36976 };
36977
36978 sjcl.misc.hmac.prototype.reset = function () {
36979 this._resultHash = new this._hash(this._baseHash[0]);
36980 this._updated = false;
36981 };
36982
36983 sjcl.misc.hmac.prototype.update = function (data) {
36984 this._updated = true;
36985 this._resultHash.update(data);
36986 };
36987
36988 sjcl.misc.hmac.prototype.digest = function () {
36989 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize();
36990
36991 this.reset();
36992
36993 return result;
36994 };
36995
36996
36997 //// pbkdf2.js
36998
36999
37000 /** @fileOverview Password-based key-derivation function, version 2.0.
37001 *
37002 * @author Emily Stark
37003 * @author Mike Hamburg
37004 * @author Dan Boneh
37005 */
37006
37007 /** Password-Based Key-Derivation Function, version 2.0.
37008 *
37009 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
37010 *
37011 * This is the method specified by RSA's PKCS #5 standard.
37012 *
37013 * @param {bitArray|String} password The password.
37014 * @param {bitArray|String} salt The salt. Should have lots of entropy.
37015 * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure.
37016 * @param {Number} [length] The length of the derived key. Defaults to the
37017 output size of the hash function.
37018 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
37019 * @return {bitArray} the derived key.
37020 */
37021 sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
37022 count = count || 1000;
37023
37024 if (length < 0 || count < 0) {
37025 throw sjcl.exception.invalid("invalid params to pbkdf2");
37026 }
37027
37028 if (typeof password === "string") {
37029 password = sjcl.codec.utf8String.toBits(password);
37030 }
37031
37032 if (typeof salt === "string") {
37033 salt = sjcl.codec.utf8String.toBits(salt);
37034 }
37035
37036 Prff = Prff || sjcl.misc.hmac;
37037
37038 var prf = new Prff(password),
37039 u, ui, i, j, k, out = [], b = sjcl.bitArray;
37040
37041 for (k = 1; 32 * out.length < (length || 1); k++) {
37042 u = ui = prf.encrypt(b.concat(salt,[k]));
37043
37044 for (i=1; i<count; i++) {
37045 ui = prf.encrypt(ui);
37046 for (j=0; j<ui.length; j++) {
37047 u[j] ^= ui[j];
37048 }
37049 }
37050
37051 out = out.concat(u);
37052 }
37053
37054 if (length) { out = b.clamp(out, length); }
37055
37056 return out;
37057 };
37058
37059
37060 //// sha256.js
37061
37062 /** @fileOverview Javascript SHA-256 implementation.
37063 *
37064 * An older version of this implementation is available in the public
37065 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
37066 * Stanford University 2008-2010 and BSD-licensed for liability
37067 * reasons.
37068 *
37069 * Special thanks to Aldo Cortesi for pointing out several bugs in
37070 * this code.
37071 *
37072 * @author Emily Stark
37073 * @author Mike Hamburg
37074 * @author Dan Boneh
37075 */
37076
37077 /**
37078 * Context for a SHA-256 operation in progress.
37079 * @constructor
37080 * @class Secure Hash Algorithm, 256 bits.
37081 */
37082 sjcl.hash.sha256 = function (hash) {
37083 if (!this._key[0]) { this._precompute(); }
37084 if (hash) {
37085 this._h = hash._h.slice(0);
37086 this._buffer = hash._buffer.slice(0);
37087 this._length = hash._length;
37088 } else {
37089 this.reset();
37090 }
37091 };
37092
37093 /**
37094 * Hash a string or an array of words.
37095 * @static
37096 * @param {bitArray|String} data the data to hash.
37097 * @return {bitArray} The hash value, an array of 16 big-endian words.
37098 */
37099 sjcl.hash.sha256.hash = function (data) {
37100 return (new sjcl.hash.sha256()).update(data).finalize();
37101 };
37102
37103 sjcl.hash.sha256.prototype = {
37104 /**
37105 * The hash's block size, in bits.
37106 * @constant
37107 */
37108 blockSize: 512,
37109
37110 /**
37111 * Reset the hash state.
37112 * @return this
37113 */
37114 reset:function () {
37115 this._h = this._init.slice(0);
37116 this._buffer = [];
37117 this._length = 0;
37118 return this;
37119 },
37120
37121 /**
37122 * Input several words to the hash.
37123 * @param {bitArray|String} data the data to hash.
37124 * @return this
37125 */
37126 update: function (data) {
37127 if (typeof data === "string") {
37128 data = sjcl.codec.utf8String.toBits(data);
37129 }
37130 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
37131 ol = this._length,
37132 nl = this._length = ol + sjcl.bitArray.bitLength(data);
37133 for (i = 512+ol & -512; i <= nl; i+= 512) {
37134 this._block(b.splice(0,16));
37135 }
37136 return this;
37137 },
37138
37139 /**
37140 * Complete hashing and output the hash value.
37141 * @return {bitArray} The hash value, an array of 8 big-endian words.
37142 */
37143 finalize:function () {
37144 var i, b = this._buffer, h = this._h;
37145
37146 // Round out and push the buffer
37147 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
37148
37149 // Round out the buffer to a multiple of 16 words, less the 2 length words.
37150 for (i = b.length + 2; i & 15; i++) {
37151 b.push(0);
37152 }
37153
37154 // append the length
37155 b.push(Math.floor(this._length / 0x100000000));
37156 b.push(this._length | 0);
37157
37158 while (b.length) {
37159 this._block(b.splice(0,16));
37160 }
37161
37162 this.reset();
37163 return h;
37164 },
37165
37166 /**
37167 * The SHA-256 initialization vector, to be precomputed.
37168 * @private
37169 */
37170 _init:[],
37171 /*
37172 _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
37173 */
37174
37175 /**
37176 * The SHA-256 hash key, to be precomputed.
37177 * @private
37178 */
37179 _key:[],
37180 /*
37181 _key:
37182 [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
37183 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
37184 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
37185 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
37186 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
37187 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
37188 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
37189 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
37190 */
37191
37192
37193 /**
37194 * Function to precompute _init and _key.
37195 * @private
37196 */
37197 _precompute: function () {
37198 var i = 0, prime = 2, factor;
37199
37200 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
37201
37202 outer: for (; i<64; prime++) {
37203 for (factor=2; factor*factor <= prime; factor++) {
37204 if (prime % factor === 0) {
37205 // not a prime
37206 continue outer;
37207 }
37208 }
37209
37210 if (i<8) {
37211 this._init[i] = frac(Math.pow(prime, 1/2));
37212 }
37213 this._key[i] = frac(Math.pow(prime, 1/3));
37214 i++;
37215 }
37216 },
37217
37218 /**
37219 * Perform one cycle of SHA-256.
37220 * @param {bitArray} words one block of words.
37221 * @private
37222 */
37223 _block:function (words) {
37224 var i, tmp, a, b,
37225 w = words.slice(0),
37226 h = this._h,
37227 k = this._key,
37228 h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
37229 h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
37230
37231 /* Rationale for placement of |0 :
37232 * If a value can overflow is original 32 bits by a factor of more than a few
37233 * million (2^23 ish), there is a possibility that it might overflow the
37234 * 53-bit mantissa and lose precision.
37235 *
37236 * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
37237 * propagates around the loop, and on the hash state h[]. I don't believe
37238 * that the clamps on h4 and on h0 are strictly necessary, but it's close
37239 * (for h4 anyway), and better safe than sorry.
37240 *
37241 * The clamps on h[] are necessary for the output to be correct even in the
37242 * common case and for short inputs.
37243 */
37244 for (i=0; i<64; i++) {
37245 // load up the input word for this round
37246 if (i<16) {
37247 tmp = w[i];
37248 } else {
37249 a = w[(i+1 ) & 15];
37250 b = w[(i+14) & 15];
37251 tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
37252 (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
37253 w[i&15] + w[(i+9) & 15]) | 0;
37254 }
37255
37256 tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
37257
37258 // shift register
37259 h7 = h6; h6 = h5; h5 = h4;
37260 h4 = h3 + tmp | 0;
37261 h3 = h2; h2 = h1; h1 = h0;
37262
37263 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
37264 }
37265
37266 h[0] = h[0]+h0 | 0;
37267 h[1] = h[1]+h1 | 0;
37268 h[2] = h[2]+h2 | 0;
37269 h[3] = h[3]+h3 | 0;
37270 h[4] = h[4]+h4 | 0;
37271 h[5] = h[5]+h5 | 0;
37272 h[6] = h[6]+h6 | 0;
37273 h[7] = h[7]+h7 | 0;
37274 }
37275 };
37276 </script>
37277 <script>// An extremely basic translation library
37278 //
37279 // Example usage:
37280 //
37281 // Set some html to be translated. Do this using the 'data-translate' attribute:
37282 //
37283 // <div data-translate>Test</div>
37284 // <div data-translate-html><em>keep em tag</em></div>
37285 // <input data-translate-placeholder placeholder="Example placeholder">
37286 // <span data-translate-title title="Example title"></span>
37287 //
37288 // Obtain all the phrases to be translated via js debug console:
37289 //
37290 // Translate.phrasesAsJson();
37291 //
37292 // Use that template to translate the phrases into another language.
37293 // Leave the key the same. Change the value to the new language.
37294 //
37295 // Create a js file to load the new phrases. In this example for Spanish,
37296 // es.js will contain the following code:
37297 //
37298 // Translate.loadForeignPhrases("es", {
37299 // "Test": "Test in Spanish",
37300 // "<em>keep em tag</em>": "<em>keep em tag in Spanish</em>",
37301 // "Example placeholder": "Example placeholder in Spanish"
37302 // "Example title": "Example title in Spanish"
37303 // });
37304 //
37305 // In your UI put a listener for clicking on the Spanish button:
37306 //
37307 // mySpanishButton.addEventListener("click", function() {
37308 // Translate.setLanguage("es");
37309 // });
37310 // myEnglishButton.addEventListener("click", function() {
37311 // Translate.setLanguage("en");
37312 // });
37313
37314 Translate = new (function() {
37315
37316 var defaultLanguage = "en";
37317
37318 var allPhrases = {};
37319 allPhrases[defaultLanguage] = {};
37320
37321 // Node types
37322
37323 var text = {
37324 selector: "[data-translate]",
37325 getKey: function() {
37326 return this.textContent.trim().replace(/\s+/g, " ");
37327 },
37328 setPhrase: function(p) {
37329 this.textContent = p;
37330 },
37331 }
37332
37333 var html = {
37334 selector: "[data-translate-html]",
37335 getKey: function() {
37336 return this.innerHTML.trim().replace(/\s+/g, " ");
37337 },
37338 setPhrase: function(p) {
37339 this.innerHTML = p;
37340 },
37341 }
37342
37343 var placeholder = {
37344 selector: "[data-translate-placeholder]",
37345 getKey: function() {
37346 return this.getAttribute("placeholder").trim().replace(/\s+/g, " ");
37347 },
37348 setPhrase: function(p) {
37349 this.setAttribute("placeholder", p);
37350 },
37351 }
37352
37353 var title = {
37354 selector: "[data-translate-title]",
37355 getKey: function() {
37356 return this.getAttribute("title").trim().replace(/\s+/g, " ");
37357 },
37358 setPhrase: function(p) {
37359 this.setAttribute("title", p);
37360 },
37361 }
37362
37363 // Get elements to be translated
37364 var allEls = getEls(text)
37365 .concat(getEls(html))
37366 .concat(getEls(placeholder))
37367 .concat(getEls(title));
37368
37369 // Provides access to phrases from a non-default language.
37370 // See phrases_en.js for example usage.
37371 this.loadForeignPhrases = function(language, phrases) {
37372 allPhrases[language] = phrases;
37373 }
37374
37375 // Displays a different language, eg "en" or "fr"
37376 this.setLanguage = function(language) {
37377 for (var i=0; i<allEls.length; i++) {
37378 var el = allEls[i];
37379 var key = el.key;
37380 if (!(language in allPhrases)) {
37381 console.log(language + " not in allPhrases");
37382 return;
37383 }
37384 if (!(key in allPhrases[language])) {
37385 console.log(language + " does not contain phrase: " + key);
37386 return;
37387 }
37388 var phrase = allPhrases[language][key];
37389 el.setPhrase(phrase);
37390 }
37391 }
37392
37393 // Converts the phrases to a key-pair json file.
37394 // This is a good way to export phrases for use in translation tools.
37395 this.phrasesAsJson = function(language) {
37396 var keys = [];
37397 for (var i=0; i<allEls.length; i++) {
37398 var el = allEls[i];
37399 var key = el.key;
37400 keys.push(key);
37401 }
37402 keys.sort();
37403 var output = {};
37404 for (var i=0; i<keys.length; i++) {
37405 var key = keys[i];
37406 var translated = "";
37407 if (language in allPhrases && key in allPhrases[language]) {
37408 translated = allPhrases[language][key];
37409 }
37410 output[key] = translated;
37411 }
37412 return JSON.stringify(output, null, 2);
37413 }
37414
37415 function getEls(nodeType) {
37416 var nodes = document.querySelectorAll(nodeType.selector);
37417 var els = [];
37418 for (var i=0; i<nodes.length; i++) {
37419 var node = nodes[i];
37420 node.getKey = nodeType.getKey;
37421 node.setPhrase = nodeType.setPhrase;
37422 node.key = node.getKey();
37423 allPhrases[defaultLanguage][node.key] = node.key;
37424 els.push(node);
37425 }
37426 return els;
37427 }
37428
37429 })();
37430 </script>
37431 <script>Translate.loadForeignPhrases("en",
37432 {
37433 "<code>m/44'/0'/0'/0</code> generates public addresses": "<code>m/44'/0'/0'/0</code> generates public addresses",
37434 "<code>m/44'/0'/0'/1</code> generates change addresses": "<code>m/44'/0'/0'/1</code> generates change addresses",
37435 "<code>m/44'/0'/0'</code> generates extended keys for import / export": "<code>m/44'/0'/0'</code> generates extended keys for import / export",
37436 "<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).",
37437 "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards": "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards",
37438 "Account": "Account",
37439 "Address": "Address",
37440 "Alternatively, download the file from the repository": "Alternatively, download the file from the repository",
37441 "BIP32 Derivation Path": "BIP32 Derivation Path",
37442 "BIP32 Extended Key": "BIP32 Extended Key",
37443 "BIP32 Extended Key (addresses only)": "BIP32 Extended Key (addresses only)",
37444 "BIP32 Root Key": "BIP32 Root Key",
37445 "BIP39 Mnemonic": "BIP39 Mnemonic",
37446 "BIP39 Passphrase (optional)": "BIP39 Passphrase (optional)",
37447 "BIP39 Seed": "BIP39 Seed",
37448 "Base 10": "Base 10",
37449 "Base 6": "Base 6",
37450 "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.",
37451 "Binary": "Binary",
37452 "Bitcoin Core": "Bitcoin Core",
37453 "Bits Per Event": "Bits Per Event",
37454 "Block Explorers": "Block Explorers",
37455 "Can be used with": "Can be used with",
37456 "Card": "Card",
37457 "Coin": "Coin",
37458 "Dice": "Dice",
37459 "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.",
37460 "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.",
37461 "Entropy": "Entropy",
37462 "Entropy Type": "Entropy Type",
37463 "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.",
37464 "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>.",
37465 "Event Count": "Event Count",
37466 "External / Internal": "External / Internal",
37467 "Filtered Entropy": "Filtered Entropy",
37468 "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>",
37469 "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>.",
37470 "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>.",
37471 "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>",
37472 "For more info see the BIP32 spec": "For more info see the BIP32 spec",
37473 "From entropy length (3 words per 32 bits)": "From entropy length (3 words per 32 bits)",
37474 "Generate a random mnemonic, or enter your own below": "Generate a random mnemonic, or enter your own below",
37475 "Get the source code from the repository": "Get the source code from the repository",
37476 "Hex": "Hex",
37477 "Hierarchical Deterministic Wallets": "Hierarchical Deterministic Wallets",
37478 "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.",
37479 "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.",
37480 "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.",
37481 "Libraries": "Libraries",
37482 "Mnemonic Language": "Mnemonic Language",
37483 "Mnemonic Length": "Mnemonic Length",
37484 "Mnemonic code for generating deterministic keys": "Mnemonic code for generating deterministic keys",
37485 "More info": "More info",
37486 "Multi-Account Hierarchy for Deterministic Wallets": "Multi-Account Hierarchy for Deterministic Wallets",
37487 "Mycelium Wallet": "Mycelium Wallet",
37488 "Note these addreses are derived from the BIP32 Extended Key": "Note these addreses are derived from the BIP32 Extended Key",
37489 "Offline Usage": "Offline Usage",
37490 "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.",
37491 "Path": "Path",
37492 "Private Key": "Private Key",
37493 "Private Keys": "Private Keys",
37494 "Public Key": "Public Key",
37495 "Purpose": "Purpose",
37496 "Raw Binary": "Raw Binary",
37497 "Read more": "Read more",
37498 "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>",
37499 "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>",
37500 "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>",
37501 "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>",
37502 "Show": "Show",
37503 "Show more rows": "Show more rows",
37504 "Strength": "Strength",
37505 "Supply my own source of entropy": "Supply my own source of entropy",
37506 "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.",
37507 "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>.",
37508 "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.",
37509 "This project is 100% open-source code": "This project is 100% open-source code",
37510 "Toggle": "Toggle",
37511 "Total Bits": "Total Bits",
37512 "Use hardened addresses": "Use hardened addresses",
37513 "Use path <code>m/0'/0'</code> with hardened addresses.": "Use path <code>m/0'/0'</code> with hardened addresses.",
37514 "Use path <code>m/44'/0'/0'</code>.": "Use path <code>m/44'/0'/0'</code>.",
37515 "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>.",
37516 "Valid entropy values include:": "Valid entropy values include:",
37517 "Warning": "Warning",
37518 "Word Count": "Word Count",
37519 "You are not a good source of entropy.": "You are not a good source of entropy.",
37520 "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).",
37521 "You can use this tool without having to be online.": "You can use this tool without having to be online.",
37522 "words": "words"
37523 }
37524 );
37525 </script>
37526 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
37527 WORDLISTS["english"] = [
37528 "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
37529 "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
37530 "action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
37531 "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
37532 "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
37533 "alien","all","alley","allow","almost","alone","alpha","already","also","alter",
37534 "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
37535 "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
37536 "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
37537 "area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
37538 "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
37539 "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
37540 "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
37541 "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
37542 "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
37543 "barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
37544 "beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
37545 "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
37546 "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
37547 "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
37548 "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
37549 "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
37550 "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
37551 "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
37552 "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
37553 "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
37554 "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
37555 "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
37556 "cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
37557 "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
37558 "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
37559 "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
37560 "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
37561 "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
37562 "clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
37563 "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
37564 "code","coffee","coil","coin","collect","color","column","combine","come","comfort",
37565 "comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
37566 "convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
37567 "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
37568 "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
37569 "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
37570 "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
37571 "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
37572 "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
37573 "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
37574 "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
37575 "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
37576 "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
37577 "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
37578 "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
37579 "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
37580 "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
37581 "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
37582 "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
37583 "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
37584 "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
37585 "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
37586 "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
37587 "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
37588 "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
37589 "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
37590 "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
37591 "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
37592 "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
37593 "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
37594 "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
37595 "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
37596 "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
37597 "film","filter","final","find","fine","finger","finish","fire","firm","first",
37598 "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
37599 "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
37600 "foam","focus","fog","foil","fold","follow","food","foot","force","forest",
37601 "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
37602 "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
37603 "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
37604 "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
37605 "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
37606 "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
37607 "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
37608 "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
37609 "grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
37610 "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
37611 "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
37612 "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
37613 "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
37614 "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
37615 "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
37616 "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
37617 "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
37618 "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
37619 "impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
37620 "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
37621 "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
37622 "intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
37623 "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
37624 "job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
37625 "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
37626 "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
37627 "knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
37628 "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
37629 "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
37630 "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
37631 "liar","liberty","library","license","life","lift","light","like","limb","limit",
37632 "link","lion","liquid","list","little","live","lizard","load","loan","lobster",
37633 "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
37634 "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
37635 "magic","magnet","maid","mail","main","major","make","mammal","man","manage",
37636 "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
37637 "marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
37638 "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
37639 "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
37640 "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
37641 "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
37642 "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
37643 "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
37644 "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
37645 "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
37646 "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
37647 "network","neutral","never","news","next","nice","night","noble","noise","nominee",
37648 "noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
37649 "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
37650 "obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
37651 "oil","okay","old","olive","olympic","omit","once","one","onion","online",
37652 "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
37653 "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
37654 "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
37655 "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
37656 "parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
37657 "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
37658 "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
37659 "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
37660 "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
37661 "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
37662 "pole","police","pond","pony","pool","popular","portion","position","possible","post",
37663 "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
37664 "present","pretty","prevent","price","pride","primary","print","priority","prison","private",
37665 "prize","problem","process","produce","profit","program","project","promote","proof","property",
37666 "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
37667 "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
37668 "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
37669 "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
37670 "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
37671 "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
37672 "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
37673 "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
37674 "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
37675 "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
37676 "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
37677 "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
37678 "romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
37679 "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
37680 "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
37681 "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
37682 "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
37683 "scrub","sea","search","season","seat","second","secret","section","security","seed",
37684 "seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
37685 "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
37686 "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
37687 "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
37688 "siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
37689 "sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
37690 "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
37691 "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
37692 "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
37693 "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
37694 "sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
37695 "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
37696 "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
37697 "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
37698 "stand","start","state","stay","steak","steel","stem","step","stereo","stick",
37699 "still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
37700 "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
37701 "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
37702 "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
37703 "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
37704 "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
37705 "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
37706 "teach","team","tell","ten","tenant","tennis","tent","term","test","text",
37707 "thank","that","theme","then","theory","there","they","thing","this","thought",
37708 "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
37709 "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
37710 "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
37711 "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
37712 "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
37713 "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
37714 "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
37715 "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
37716 "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
37717 "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
37718 "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
37719 "uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
37720 "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
37721 "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
37722 "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
37723 "video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
37724 "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
37725 "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
37726 "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
37727 "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
37728 "wheel","when","where","whip","whisper","wide","width","wife","wild","will",
37729 "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
37730 "wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
37731 "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
37732 "yellow","you","young","youth","zebra","zero","zone","zoo"]
37733 </script>
37734 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
37735 WORDLISTS["japanese"] = [
37736 "あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
37737 "あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
37738 "あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
37739 "あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
37740 "あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
37741 "あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
37742 "いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
37743 "いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
37744 "いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
37745 "いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
37746 "いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
37747 "いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
37748 "いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
37749 "いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
37750 "いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
37751 "うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
37752 "うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
37753 "うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
37754 "うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
37755 "うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
37756 "うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
37757 "えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
37758 "えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
37759 "えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
37760 "えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
37761 "おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
37762 "おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
37763 "おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
37764 "おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
37765 "おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
37766 "おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
37767 "おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
37768 "かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
37769 "かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
37770 "かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
37771 "がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
37772 "かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
37773 "かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
37774 "きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
37775 "きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
37776 "ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
37777 "きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
37778 "きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
37779 "きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
37780 "きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
37781 "きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
37782 "くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ",
37783 "くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう",
37784 "くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした",
37785 "ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる",
37786 "くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく",
37787 "ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん",
37788 "けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは",
37789 "げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと",
37790 "けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい",
37791 "けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ",
37792 "けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし",
37793 "けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき",
37794 "けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない",
37795 "けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと",
37796 "ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい",
37797 "ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう",
37798 "ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい",
37799 "こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ",
37800 "こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか",
37801 "こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな",
37802 "こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら",
37803 "こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく",
37804 "こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる",
37805 "こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん",
37806 "こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ",
37807 "さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち",
37808 "さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん",
37809 "さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも",
37810 "さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ",
37811 "さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう",
37812 "さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい",
37813 "ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ",
37814 "しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん",
37815 "しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり",
37816 "しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん",
37817 "しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう",
37818 "しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ",
37819 "しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん",
37820 "しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん",
37821 "しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい",
37822 "しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ",
37823 "しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん",
37824 "すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい",
37825 "すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる",
37826 "すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる",
37827 "ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと",
37828 "すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん",
37829 "せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく",
37830 "せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび",
37831 "せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる",
37832 "せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん",
37833 "ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう",
37834 "せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう",
37835 "せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき",
37836 "そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい",
37837 "そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう",
37838 "そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる",
37839 "そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも",
37840 "そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび",
37841 "ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう",
37842 "たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい",
37843 "だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな",
37844 "たいみんぐ", "たいむ", "たいめん", "たいやき", "たいよう", "たいら", "たいりょく", "たいる", "たいわん", "たうえ",
37845 "たえる", "たおす", "たおる", "たおれる", "たかい", "たかね", "たきび", "たくさん", "たこく", "たこやき",
37846 "たさい", "たしざん", "だじゃれ", "たすける", "たずさわる", "たそがれ", "たたかう", "たたく", "ただしい", "たたみ",
37847 "たちばな", "だっかい", "だっきゃく", "だっこ", "だっしゅつ", "だったい", "たてる", "たとえる", "たなばた", "たにん",
37848 "たぬき", "たのしみ", "たはつ", "たぶん", "たべる", "たぼう", "たまご", "たまる", "だむる", "ためいき",
37849 "ためす", "ためる", "たもつ", "たやすい", "たよる", "たらす", "たりきほんがん", "たりょう", "たりる", "たると",
37850 "たれる", "たれんと", "たろっと", "たわむれる", "だんあつ", "たんい", "たんおん", "たんか", "たんき", "たんけん",
37851 "たんご", "たんさん", "たんじょうび", "だんせい", "たんそく", "たんたい", "だんち", "たんてい", "たんとう", "だんな",
37852 "たんにん", "だんねつ", "たんのう", "たんぴん", "だんぼう", "たんまつ", "たんめい", "だんれつ", "だんろ", "だんわ",
37853 "ちあい", "ちあん", "ちいき", "ちいさい", "ちえん", "ちかい", "ちから", "ちきゅう", "ちきん", "ちけいず",
37854 "ちけん", "ちこく", "ちさい", "ちしき", "ちしりょう", "ちせい", "ちそう", "ちたい", "ちたん", "ちちおや",
37855 "ちつじょ", "ちてき", "ちてん", "ちぬき", "ちぬり", "ちのう", "ちひょう", "ちへいせん", "ちほう", "ちまた",
37856 "ちみつ", "ちみどろ", "ちめいど", "ちゃんこなべ", "ちゅうい", "ちゆりょく", "ちょうし", "ちょさくけん", "ちらし", "ちらみ",
37857 "ちりがみ", "ちりょう", "ちるど", "ちわわ", "ちんたい", "ちんもく", "ついか", "ついたち", "つうか", "つうじょう",
37858 "つうはん", "つうわ", "つかう", "つかれる", "つくね", "つくる", "つけね", "つける", "つごう", "つたえる",
37859 "つづく", "つつじ", "つつむ", "つとめる", "つながる", "つなみ", "つねづね", "つのる", "つぶす", "つまらない",
37860 "つまる", "つみき", "つめたい", "つもり", "つもる", "つよい", "つるぼ", "つるみく", "つわもの", "つわり",
37861 "てあし", "てあて", "てあみ", "ていおん", "ていか", "ていき", "ていけい", "ていこく", "ていさつ", "ていし",
37862 "ていせい", "ていたい", "ていど", "ていねい", "ていひょう", "ていへん", "ていぼう", "てうち", "ておくれ", "てきとう",
37863 "てくび", "でこぼこ", "てさぎょう", "てさげ", "てすり", "てそう", "てちがい", "てちょう", "てつがく", "てつづき",
37864 "でっぱ", "てつぼう", "てつや", "でぬかえ", "てぬき", "てぬぐい", "てのひら", "てはい", "てぶくろ", "てふだ",
37865 "てほどき", "てほん", "てまえ", "てまきずし", "てみじか", "てみやげ", "てらす", "てれび", "てわけ", "てわたし",
37866 "でんあつ", "てんいん", "てんかい", "てんき", "てんぐ", "てんけん", "てんごく", "てんさい", "てんし", "てんすう",
37867 "でんち", "てんてき", "てんとう", "てんない", "てんぷら", "てんぼうだい", "てんめつ", "てんらんかい", "でんりょく", "でんわ",
37868 "どあい", "といれ", "どうかん", "とうきゅう", "どうぐ", "とうし", "とうむぎ", "とおい", "とおか", "とおく",
37869 "とおす", "とおる", "とかい", "とかす", "ときおり", "ときどき", "とくい", "とくしゅう", "とくてん", "とくに",
37870 "とくべつ", "とけい", "とける", "とこや", "とさか", "としょかん", "とそう", "とたん", "とちゅう", "とっきゅう",
37871 "とっくん", "とつぜん", "とつにゅう", "とどける", "ととのえる", "とない", "となえる", "となり", "とのさま", "とばす",
37872 "どぶがわ", "とほう", "とまる", "とめる", "ともだち", "ともる", "どようび", "とらえる", "とんかつ", "どんぶり",
37873 "ないかく", "ないこう", "ないしょ", "ないす", "ないせん", "ないそう", "なおす", "ながい", "なくす", "なげる",
37874 "なこうど", "なさけ", "なたでここ", "なっとう", "なつやすみ", "ななおし", "なにごと", "なにもの", "なにわ", "なのか",
37875 "なふだ", "なまいき", "なまえ", "なまみ", "なみだ", "なめらか", "なめる", "なやむ", "ならう", "ならび",
37876 "ならぶ", "なれる", "なわとび", "なわばり", "にあう", "にいがた", "にうけ", "におい", "にかい", "にがて",
37877 "にきび", "にくしみ", "にくまん", "にげる", "にさんかたんそ", "にしき", "にせもの", "にちじょう", "にちようび", "にっか",
37878 "にっき", "にっけい", "にっこう", "にっさん", "にっしょく", "にっすう", "にっせき", "にってい", "になう", "にほん",
37879 "にまめ", "にもつ", "にやり", "にゅういん", "にりんしゃ", "にわとり", "にんい", "にんか", "にんき", "にんげん",
37880 "にんしき", "にんずう", "にんそう", "にんたい", "にんち", "にんてい", "にんにく", "にんぷ", "にんまり", "にんむ",
37881 "にんめい", "にんよう", "ぬいくぎ", "ぬかす", "ぬぐいとる", "ぬぐう", "ぬくもり", "ぬすむ", "ぬまえび", "ぬめり",
37882 "ぬらす", "ぬんちゃく", "ねあげ", "ねいき", "ねいる", "ねいろ", "ねぐせ", "ねくたい", "ねくら", "ねこぜ",
37883 "ねこむ", "ねさげ", "ねすごす", "ねそべる", "ねだん", "ねつい", "ねっしん", "ねつぞう", "ねったいぎょ", "ねぶそく",
37884 "ねふだ", "ねぼう", "ねほりはほり", "ねまき", "ねまわし", "ねみみ", "ねむい", "ねむたい", "ねもと", "ねらう",
37885 "ねわざ", "ねんいり", "ねんおし", "ねんかん", "ねんきん", "ねんぐ", "ねんざ", "ねんし", "ねんちゃく", "ねんど",
37886 "ねんぴ", "ねんぶつ", "ねんまつ", "ねんりょう", "ねんれい", "のいず", "のおづま", "のがす", "のきなみ", "のこぎり",
37887 "のこす", "のこる", "のせる", "のぞく", "のぞむ", "のたまう", "のちほど", "のっく", "のばす", "のはら",
37888 "のべる", "のぼる", "のみもの", "のやま", "のらいぬ", "のらねこ", "のりもの", "のりゆき", "のれん", "のんき",
37889 "ばあい", "はあく", "ばあさん", "ばいか", "ばいく", "はいけん", "はいご", "はいしん", "はいすい", "はいせん",
37890 "はいそう", "はいち", "ばいばい", "はいれつ", "はえる", "はおる", "はかい", "ばかり", "はかる", "はくしゅ",
37891 "はけん", "はこぶ", "はさみ", "はさん", "はしご", "ばしょ", "はしる", "はせる", "ぱそこん", "はそん",
37892 "はたん", "はちみつ", "はつおん", "はっかく", "はづき", "はっきり", "はっくつ", "はっけん", "はっこう", "はっさん",
37893 "はっしん", "はったつ", "はっちゅう", "はってん", "はっぴょう", "はっぽう", "はなす", "はなび", "はにかむ", "はぶらし",
37894 "はみがき", "はむかう", "はめつ", "はやい", "はやし", "はらう", "はろうぃん", "はわい", "はんい", "はんえい",
37895 "はんおん", "はんかく", "はんきょう", "ばんぐみ", "はんこ", "はんしゃ", "はんすう", "はんだん", "ぱんち", "ぱんつ",
37896 "はんてい", "はんとし", "はんのう", "はんぱ", "はんぶん", "はんぺん", "はんぼうき", "はんめい", "はんらん", "はんろん",
37897 "ひいき", "ひうん", "ひえる", "ひかく", "ひかり", "ひかる", "ひかん", "ひくい", "ひけつ", "ひこうき",
37898 "ひこく", "ひさい", "ひさしぶり", "ひさん", "びじゅつかん", "ひしょ", "ひそか", "ひそむ", "ひたむき", "ひだり",
37899 "ひたる", "ひつぎ", "ひっこし", "ひっし", "ひつじゅひん", "ひっす", "ひつぜん", "ぴったり", "ぴっちり", "ひつよう",
37900 "ひてい", "ひとごみ", "ひなまつり", "ひなん", "ひねる", "ひはん", "ひびく", "ひひょう", "ひほう", "ひまわり",
37901 "ひまん", "ひみつ", "ひめい", "ひめじし", "ひやけ", "ひやす", "ひよう", "びょうき", "ひらがな", "ひらく",
37902 "ひりつ", "ひりょう", "ひるま", "ひるやすみ", "ひれい", "ひろい", "ひろう", "ひろき", "ひろゆき", "ひんかく",
37903 "ひんけつ", "ひんこん", "ひんしゅ", "ひんそう", "ぴんち", "ひんぱん", "びんぼう", "ふあん", "ふいうち", "ふうけい",
37904 "ふうせん", "ぷうたろう", "ふうとう", "ふうふ", "ふえる", "ふおん", "ふかい", "ふきん", "ふくざつ", "ふくぶくろ",
37905 "ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん",
37906 "ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう",
37907 "ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる",
37908 "ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん",
37909 "へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん",
37910 "へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし",
37911 "へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん",
37912 "ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう",
37913 "ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる",
37914 "ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ",
37915 "ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく",
37916 "まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう",
37917 "まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち",
37918 "みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる",
37919 "みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす",
37920 "みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき",
37921 "むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい",
37922 "むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう",
37923 "むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん",
37924 "めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす",
37925 "めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん",
37926 "もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや",
37927 "やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん",
37928 "やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ",
37929 "ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ",
37930 "ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん",
37931 "よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか",
37932 "よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご",
37933 "らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい",
37934 "りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん",
37935 "りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき",
37936 "りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ",
37937 "れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい",
37938 "れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら",
37939 "ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす",
37940 "わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"]
37941 </script>
37942 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
37943 WORDLISTS["spanish"] = [
37944 "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
37945 "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
37946 "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
37947 "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
37948 "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
37949 "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
37950 "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
37951 "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
37952 "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
37953 "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
37954 "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
37955 "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
37956 "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
37957 "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
37958 "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
37959 "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
37960 "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
37961 "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
37962 "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
37963 "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
37964 "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
37965 "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
37966 "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
37967 "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
37968 "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
37969 "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
37970 "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
37971 "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
37972 "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
37973 "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
37974 "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
37975 "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
37976 "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
37977 "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
37978 "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
37979 "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
37980 "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
37981 "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
37982 "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
37983 "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
37984 "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
37985 "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
37986 "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
37987 "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
37988 "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
37989 "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
37990 "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
37991 "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
37992 "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
37993 "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
37994 "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
37995 "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
37996 "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
37997 "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
37998 "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
37999 "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
38000 "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
38001 "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
38002 "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
38003 "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
38004 "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
38005 "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
38006 "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
38007 "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
38008 "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
38009 "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
38010 "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
38011 "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
38012 "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
38013 "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
38014 "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
38015 "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
38016 "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
38017 "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
38018 "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
38019 "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
38020 "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
38021 "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
38022 "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
38023 "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
38024 "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
38025 "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
38026 "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
38027 "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
38028 "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
38029 "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
38030 "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
38031 "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
38032 "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
38033 "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
38034 "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
38035 "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
38036 "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
38037 "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
38038 "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
38039 "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
38040 "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
38041 "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
38042 "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
38043 "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
38044 "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
38045 "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
38046 "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
38047 "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
38048 "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
38049 "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
38050 "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
38051 "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
38052 "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
38053 "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
38054 "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
38055 "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
38056 "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
38057 "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
38058 "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
38059 "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
38060 "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
38061 "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
38062 "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
38063 "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
38064 "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
38065 "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
38066 "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
38067 "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
38068 "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
38069 "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
38070 "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
38071 "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
38072 "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
38073 "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
38074 "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
38075 "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
38076 "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
38077 "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
38078 "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
38079 "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
38080 "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
38081 "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
38082 "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
38083 "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
38084 "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
38085 "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
38086 "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
38087 "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
38088 "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
38089 "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
38090 "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
38091 "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
38092 "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
38093 "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
38094 "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
38095 "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
38096 "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
38097 "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
38098 "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
38099 "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
38100 "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
38101 "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
38102 "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
38103 "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
38104 "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
38105 "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
38106 "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
38107 "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
38108 "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
38109 "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
38110 "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
38111 "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
38112 "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
38113 "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
38114 "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
38115 "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
38116 "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
38117 "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
38118 "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
38119 "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
38120 "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
38121 "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
38122 "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
38123 "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
38124 "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
38125 "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
38126 "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
38127 "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
38128 "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
38129 "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
38130 "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
38131 "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
38132 "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
38133 "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
38134 "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
38135 "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
38136 "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
38137 "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
38138 "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
38139 "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
38140 "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
38141 "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
38142 "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
38143 "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
38144 "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
38145 "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
38146 "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
38147 "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
38148 "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
38149 </script>
38150 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
38151 WORDLISTS["chinese_simplified"] = [
38152 "的", "一", "是", "在", "不", "了", "有", "和", "人", "这",
38153 "中", "大", "为", "上", "个", "国", "我", "以", "要", "他",
38154 "时", "来", "用", "们", "生", "到", "作", "地", "于", "出",
38155 "就", "分", "对", "成", "会", "可", "主", "发", "年", "动",
38156 "同", "工", "也", "能", "下", "过", "子", "说", "产", "种",
38157 "面", "而", "方", "后", "多", "定", "行", "学", "法", "所",
38158 "民", "得", "经", "十", "三", "之", "进", "着", "等", "部",
38159 "度", "家", "电", "力", "里", "如", "水", "化", "高", "自",
38160 "二", "理", "起", "小", "物", "现", "实", "加", "量", "都",
38161 "两", "体", "制", "机", "当", "使", "点", "从", "业", "本",
38162 "去", "把", "性", "好", "应", "开", "它", "合", "还", "因",
38163 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
38164 "那", "社", "义", "事", "平", "形", "相", "全", "表", "间",
38165 "样", "与", "关", "各", "重", "新", "线", "内", "数", "正",
38166 "心", "反", "你", "明", "看", "原", "又", "么", "利", "比",
38167 "或", "但", "质", "气", "第", "向", "道", "命", "此", "变",
38168 "条", "只", "没", "结", "解", "问", "意", "建", "月", "公",
38169 "无", "系", "军", "很", "情", "者", "最", "立", "代", "想",
38170 "已", "通", "并", "提", "直", "题", "党", "程", "展", "五",
38171 "果", "料", "象", "员", "革", "位", "入", "常", "文", "总",
38172 "次", "品", "式", "活", "设", "及", "管", "特", "件", "长",
38173 "求", "老", "头", "基", "资", "边", "流", "路", "级", "少",
38174 "图", "山", "统", "接", "知", "较", "将", "组", "见", "计",
38175 "别", "她", "手", "角", "期", "根", "论", "运", "农", "指",
38176 "几", "九", "区", "强", "放", "决", "西", "被", "干", "做",
38177 "必", "战", "先", "回", "则", "任", "取", "据", "处", "队",
38178 "南", "给", "色", "光", "门", "即", "保", "治", "北", "造",
38179 "百", "规", "热", "领", "七", "海", "口", "东", "导", "器",
38180 "压", "志", "世", "金", "增", "争", "济", "阶", "油", "思",
38181 "术", "极", "交", "受", "联", "什", "认", "六", "共", "权",
38182 "收", "证", "改", "清", "美", "再", "采", "转", "更", "单",
38183 "风", "切", "打", "白", "教", "速", "花", "带", "安", "场",
38184 "身", "车", "例", "真", "务", "具", "万", "每", "目", "至",
38185 "达", "走", "积", "示", "议", "声", "报", "斗", "完", "类",
38186 "八", "离", "华", "名", "确", "才", "科", "张", "信", "马",
38187 "节", "话", "米", "整", "空", "元", "况", "今", "集", "温",
38188 "传", "土", "许", "步", "群", "广", "石", "记", "需", "段",
38189 "研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越",
38190 "织", "装", "影", "算", "低", "持", "音", "众", "书", "布",
38191 "复", "容", "儿", "须", "际", "商", "非", "验", "连", "断",
38192 "深", "难", "近", "矿", "千", "周", "委", "素", "技", "备",
38193 "半", "办", "青", "省", "列", "习", "响", "约", "支", "般",
38194 "史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克",
38195 "何", "除", "消", "构", "府", "称", "太", "准", "精", "值",
38196 "号", "率", "族", "维", "划", "选", "标", "写", "存", "候",
38197 "毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼",
38198 "王", "按", "格", "养", "易", "置", "派", "层", "片", "始",
38199 "却", "专", "状", "育", "厂", "京", "识", "适", "属", "圆",
38200 "包", "火", "住", "调", "满", "县", "局", "照", "参", "红",
38201 "细", "引", "听", "该", "铁", "价", "严", "首", "底", "液",
38202 "官", "德", "随", "病", "苏", "失", "尔", "死", "讲", "配",
38203 "女", "黄", "推", "显", "谈", "罪", "神", "艺", "呢", "席",
38204 "含", "企", "望", "密", "批", "营", "项", "防", "举", "球",
38205 "英", "氧", "势", "告", "李", "台", "落", "木", "帮", "轮",
38206 "破", "亚", "师", "围", "注", "远", "字", "材", "排", "供",
38207 "河", "态", "封", "另", "施", "减", "树", "溶", "怎", "止",
38208 "案", "言", "士", "均", "武", "固", "叶", "鱼", "波", "视",
38209 "仅", "费", "紧", "爱", "左", "章", "早", "朝", "害", "续",
38210 "轻", "服", "试", "食", "充", "兵", "源", "判", "护", "司",
38211 "足", "某", "练", "差", "致", "板", "田", "降", "黑", "犯",
38212 "负", "击", "范", "继", "兴", "似", "余", "坚", "曲", "输",
38213 "修", "故", "城", "夫", "够", "送", "笔", "船", "占", "右",
38214 "财", "吃", "富", "春", "职", "觉", "汉", "画", "功", "巴",
38215 "跟", "虽", "杂", "飞", "检", "吸", "助", "升", "阳", "互",
38216 "初", "创", "抗", "考", "投", "坏", "策", "古", "径", "换",
38217 "未", "跑", "留", "钢", "曾", "端", "责", "站", "简", "述",
38218 "钱", "副", "尽", "帝", "射", "草", "冲", "承", "独", "令",
38219 "限", "阿", "宣", "环", "双", "请", "超", "微", "让", "控",
38220 "州", "良", "轴", "找", "否", "纪", "益", "依", "优", "顶",
38221 "础", "载", "倒", "房", "突", "坐", "粉", "敌", "略", "客",
38222 "袁", "冷", "胜", "绝", "析", "块", "剂", "测", "丝", "协",
38223 "诉", "念", "陈", "仍", "罗", "盐", "友", "洋", "错", "苦",
38224 "夜", "刑", "移", "频", "逐", "靠", "混", "母", "短", "皮",
38225 "终", "聚", "汽", "村", "云", "哪", "既", "距", "卫", "停",
38226 "烈", "央", "察", "烧", "迅", "境", "若", "印", "洲", "刻",
38227 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
38228 "侵", "吧", "甲", "游", "久", "菜", "味", "旧", "模", "湖",
38229 "货", "损", "预", "阻", "毫", "普", "稳", "乙", "妈", "植",
38230 "息", "扩", "银", "语", "挥", "酒", "守", "拿", "序", "纸",
38231 "医", "缺", "雨", "吗", "针", "刘", "啊", "急", "唱", "误",
38232 "训", "愿", "审", "附", "获", "茶", "鲜", "粮", "斤", "孩",
38233 "脱", "硫", "肥", "善", "龙", "演", "父", "渐", "血", "欢",
38234 "械", "掌", "歌", "沙", "刚", "攻", "谓", "盾", "讨", "晚",
38235 "粒", "乱", "燃", "矛", "乎", "杀", "药", "宁", "鲁", "贵",
38236 "钟", "煤", "读", "班", "伯", "香", "介", "迫", "句", "丰",
38237 "培", "握", "兰", "担", "弦", "蛋", "沉", "假", "穿", "执",
38238 "答", "乐", "谁", "顺", "烟", "缩", "征", "脸", "喜", "松",
38239 "脚", "困", "异", "免", "背", "星", "福", "买", "染", "井",
38240 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "静", "补",
38241 "评", "翻", "肉", "践", "尼", "衣", "宽", "扬", "棉", "希",
38242 "伤", "操", "垂", "秋", "宜", "氢", "套", "督", "振", "架",
38243 "亮", "末", "宪", "庆", "编", "牛", "触", "映", "雷", "销",
38244 "诗", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
38245 "绿", "晶", "厚", "盟", "衡", "鸡", "孙", "延", "危", "胶",
38246 "屋", "乡", "临", "陆", "顾", "掉", "呀", "灯", "岁", "措",
38247 "束", "耐", "剧", "玉", "赵", "跳", "哥", "季", "课", "凯",
38248 "胡", "额", "款", "绍", "卷", "齐", "伟", "蒸", "殖", "永",
38249 "宗", "苗", "川", "炉", "岩", "弱", "零", "杨", "奏", "沿",
38250 "露", "杆", "探", "滑", "镇", "饭", "浓", "航", "怀", "赶",
38251 "库", "夺", "伊", "灵", "税", "途", "灭", "赛", "归", "召",
38252 "鼓", "播", "盘", "裁", "险", "康", "唯", "录", "菌", "纯",
38253 "借", "糖", "盖", "横", "符", "私", "努", "堂", "域", "枪",
38254 "润", "幅", "哈", "竟", "熟", "虫", "泽", "脑", "壤", "碳",
38255 "欧", "遍", "侧", "寨", "敢", "彻", "虑", "斜", "薄", "庭",
38256 "纳", "弹", "饲", "伸", "折", "麦", "湿", "暗", "荷", "瓦",
38257 "塞", "床", "筑", "恶", "户", "访", "塔", "奇", "透", "梁",
38258 "刀", "旋", "迹", "卡", "氯", "遇", "份", "毒", "泥", "退",
38259 "洗", "摆", "灰", "彩", "卖", "耗", "夏", "择", "忙", "铜",
38260 "献", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
38261 "阵", "阴", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
38262 "楼", "避", "谋", "吨", "野", "猪", "旗", "累", "偏", "典",
38263 "馆", "索", "秦", "脂", "潮", "爷", "豆", "忽", "托", "惊",
38264 "塑", "遗", "愈", "朱", "替", "纤", "粗", "倾", "尚", "痛",
38265 "楚", "谢", "奋", "购", "磨", "君", "池", "旁", "碎", "骨",
38266 "监", "捕", "弟", "暴", "割", "贯", "殊", "释", "词", "亡",
38267 "壁", "顿", "宝", "午", "尘", "闻", "揭", "炮", "残", "冬",
38268 "桥", "妇", "警", "综", "招", "吴", "付", "浮", "遭", "徐",
38269 "您", "摇", "谷", "赞", "箱", "隔", "订", "男", "吹", "园",
38270 "纷", "唐", "败", "宋", "玻", "巨", "耕", "坦", "荣", "闭",
38271 "湾", "键", "凡", "驻", "锅", "救", "恩", "剥", "凝", "碱",
38272 "齿", "截", "炼", "麻", "纺", "禁", "废", "盛", "版", "缓",
38273 "净", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
38274 "庄", "街", "藏", "姑", "贸", "腐", "奴", "啦", "惯", "乘",
38275 "伙", "恢", "匀", "纱", "扎", "辩", "耳", "彪", "臣", "亿",
38276 "璃", "抵", "脉", "秀", "萨", "俄", "网", "舞", "店", "喷",
38277 "纵", "寸", "汗", "挂", "洪", "贺", "闪", "柬", "爆", "烯",
38278 "津", "稻", "墙", "软", "勇", "像", "滚", "厘", "蒙", "芳",
38279 "肯", "坡", "柱", "荡", "腿", "仪", "旅", "尾", "轧", "冰",
38280 "贡", "登", "黎", "削", "钻", "勒", "逃", "障", "氨", "郭",
38281 "峰", "币", "港", "伏", "轨", "亩", "毕", "擦", "莫", "刺",
38282 "浪", "秘", "援", "株", "健", "售", "股", "岛", "甘", "泡",
38283 "睡", "童", "铸", "汤", "阀", "休", "汇", "舍", "牧", "绕",
38284 "炸", "哲", "磷", "绩", "朋", "淡", "尖", "启", "陷", "柴",
38285 "呈", "徒", "颜", "泪", "稍", "忘", "泵", "蓝", "拖", "洞",
38286 "授", "镜", "辛", "壮", "锋", "贫", "虚", "弯", "摩", "泰",
38287 "幼", "廷", "尊", "窗", "纲", "弄", "隶", "疑", "氏", "宫",
38288 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "违",
38289 "夹", "腰", "缘", "珠", "穷", "森", "枝", "竹", "沟", "催",
38290 "绳", "忆", "邦", "剩", "幸", "浆", "栏", "拥", "牙", "贮",
38291 "礼", "滤", "钠", "纹", "罢", "拍", "咱", "喊", "袖", "埃",
38292 "勤", "罚", "焦", "潜", "伍", "墨", "欲", "缝", "姓", "刊",
38293 "饱", "仿", "奖", "铝", "鬼", "丽", "跨", "默", "挖", "链",
38294 "扫", "喝", "袋", "炭", "污", "幕", "诸", "弧", "励", "梅",
38295 "奶", "洁", "灾", "舟", "鉴", "苯", "讼", "抱", "毁", "懂",
38296 "寒", "智", "埔", "寄", "届", "跃", "渡", "挑", "丹", "艰",
38297 "贝", "碰", "拔", "爹", "戴", "码", "梦", "芽", "熔", "赤",
38298 "渔", "哭", "敬", "颗", "奔", "铅", "仲", "虎", "稀", "妹",
38299 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "仓", "魏",
38300 "锐", "晓", "氮", "兼", "隐", "碍", "赫", "拨", "忠", "肃",
38301 "缸", "牵", "抢", "博", "巧", "壳", "兄", "杜", "讯", "诚",
38302 "碧", "祥", "柯", "页", "巡", "矩", "悲", "灌", "龄", "伦",
38303 "票", "寻", "桂", "铺", "圣", "恐", "恰", "郑", "趣", "抬",
38304 "荒", "腾", "贴", "柔", "滴", "猛", "阔", "辆", "妻", "填",
38305 "撤", "储", "签", "闹", "扰", "紫", "砂", "递", "戏", "吊",
38306 "陶", "伐", "喂", "疗", "瓶", "婆", "抚", "臂", "摸", "忍",
38307 "虾", "蜡", "邻", "胸", "巩", "挤", "偶", "弃", "槽", "劲",
38308 "乳", "邓", "吉", "仁", "烂", "砖", "租", "乌", "舰", "伴",
38309 "瓜", "浅", "丙", "暂", "燥", "橡", "柳", "迷", "暖", "牌",
38310 "秧", "胆", "详", "簧", "踏", "瓷", "谱", "呆", "宾", "糊",
38311 "洛", "辉", "愤", "竞", "隙", "怒", "粘", "乃", "绪", "肩",
38312 "籍", "敏", "涂", "熙", "皆", "侦", "悬", "掘", "享", "纠",
38313 "醒", "狂", "锁", "淀", "恨", "牲", "霸", "爬", "赏", "逆",
38314 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鸭",
38315 "趋", "凤", "晨", "畜", "辈", "秩", "卵", "署", "梯", "炎",
38316 "滩", "棋", "驱", "筛", "峡", "冒", "啥", "寿", "译", "浸",
38317 "泉", "帽", "迟", "硅", "疆", "贷", "漏", "稿", "冠", "嫩",
38318 "胁", "芯", "牢", "叛", "蚀", "奥", "鸣", "岭", "羊", "凭",
38319 "串", "塘", "绘", "酵", "融", "盆", "锡", "庙", "筹", "冻",
38320 "辅", "摄", "袭", "筋", "拒", "僚", "旱", "钾", "鸟", "漆",
38321 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韩", "逼", "扭",
38322 "侨", "凉", "挺", "碗", "栽", "炒", "杯", "患", "馏", "劝",
38323 "豪", "辽", "勃", "鸿", "旦", "吏", "拜", "狗", "埋", "辊",
38324 "掩", "饮", "搬", "骂", "辞", "勾", "扣", "估", "蒋", "绒",
38325 "雾", "丈", "朵", "姆", "拟", "宇", "辑", "陕", "雕", "偿",
38326 "蓄", "崇", "剪", "倡", "厅", "咬", "驶", "薯", "刷", "斥",
38327 "番", "赋", "奉", "佛", "浇", "漫", "曼", "扇", "钙", "桃",
38328 "扶", "仔", "返", "俗", "亏", "腔", "鞋", "棱", "覆", "框",
38329 "悄", "叔", "撞", "骗", "勘", "旺", "沸", "孤", "吐", "孟",
38330 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "胀", "谐", "抛",
38331 "霉", "桑", "岗", "嘛", "衰", "盗", "渗", "脏", "赖", "涌",
38332 "甜", "曹", "阅", "肌", "哩", "厉", "烃", "纬", "毅", "昨",
38333 "伪", "症", "煮", "叹", "钉", "搭", "茎", "笼", "酷", "偷",
38334 "弓", "锥", "恒", "杰", "坑", "鼻", "翼", "纶", "叙", "狱",
38335 "逮", "罐", "络", "棚", "抑", "膨", "蔬", "寺", "骤", "穆",
38336 "冶", "枯", "册", "尸", "凸", "绅", "坯", "牺", "焰", "轰",
38337 "欣", "晋", "瘦", "御", "锭", "锦", "丧", "旬", "锻", "垄",
38338 "搜", "扑", "邀", "亭", "酯", "迈", "舒", "脆", "酶", "闲",
38339 "忧", "酚", "顽", "羽", "涨", "卸", "仗", "陪", "辟", "惩",
38340 "杭", "姚", "肚", "捉", "飘", "漂", "昆", "欺", "吾", "郎",
38341 "烷", "汁", "呵", "饰", "萧", "雅", "邮", "迁", "燕", "撒",
38342 "姻", "赴", "宴", "烦", "债", "帐", "斑", "铃", "旨", "醇",
38343 "董", "饼", "雏", "姿", "拌", "傅", "腹", "妥", "揉", "贤",
38344 "拆", "歪", "葡", "胺", "丢", "浩", "徽", "昂", "垫", "挡",
38345 "览", "贪", "慰", "缴", "汪", "慌", "冯", "诺", "姜", "谊",
38346 "凶", "劣", "诬", "耀", "昏", "躺", "盈", "骑", "乔", "溪",
38347 "丛", "卢", "抹", "闷", "咨", "刮", "驾", "缆", "悟", "摘",
38348 "铒", "掷", "颇", "幻", "柄", "惠", "惨", "佳", "仇", "腊",
38349 "窝", "涤", "剑", "瞧", "堡", "泼", "葱", "罩", "霍", "捞",
38350 "胎", "苍", "滨", "俩", "捅", "湘", "砍", "霞", "邵", "萄",
38351 "疯", "淮", "遂", "熊", "粪", "烘", "宿", "档", "戈", "驳",
38352 "嫂", "裕", "徙", "箭", "捐", "肠", "撑", "晒", "辨", "殿",
38353 "莲", "摊", "搅", "酱", "屏", "疫", "哀", "蔡", "堵", "沫",
38354 "皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝",
38355 "巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝",
38356 "卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ]
38357 </script>
38358 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
38359 WORDLISTS["chinese_traditional"] = [
38360 "的", "一", "是", "在", "不", "了", "有", "和", "人", "這",
38361 "中", "大", "為", "上", "個", "國", "我", "以", "要", "他",
38362 "時", "來", "用", "們", "生", "到", "作", "地", "於", "出",
38363 "就", "分", "對", "成", "會", "可", "主", "發", "年", "動",
38364 "同", "工", "也", "能", "下", "過", "子", "說", "產", "種",
38365 "面", "而", "方", "後", "多", "定", "行", "學", "法", "所",
38366 "民", "得", "經", "十", "三", "之", "進", "著", "等", "部",
38367 "度", "家", "電", "力", "裡", "如", "水", "化", "高", "自",
38368 "二", "理", "起", "小", "物", "現", "實", "加", "量", "都",
38369 "兩", "體", "制", "機", "當", "使", "點", "從", "業", "本",
38370 "去", "把", "性", "好", "應", "開", "它", "合", "還", "因",
38371 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
38372 "那", "社", "義", "事", "平", "形", "相", "全", "表", "間",
38373 "樣", "與", "關", "各", "重", "新", "線", "內", "數", "正",
38374 "心", "反", "你", "明", "看", "原", "又", "麼", "利", "比",
38375 "或", "但", "質", "氣", "第", "向", "道", "命", "此", "變",
38376 "條", "只", "沒", "結", "解", "問", "意", "建", "月", "公",
38377 "無", "系", "軍", "很", "情", "者", "最", "立", "代", "想",
38378 "已", "通", "並", "提", "直", "題", "黨", "程", "展", "五",
38379 "果", "料", "象", "員", "革", "位", "入", "常", "文", "總",
38380 "次", "品", "式", "活", "設", "及", "管", "特", "件", "長",
38381 "求", "老", "頭", "基", "資", "邊", "流", "路", "級", "少",
38382 "圖", "山", "統", "接", "知", "較", "將", "組", "見", "計",
38383 "別", "她", "手", "角", "期", "根", "論", "運", "農", "指",
38384 "幾", "九", "區", "強", "放", "決", "西", "被", "幹", "做",
38385 "必", "戰", "先", "回", "則", "任", "取", "據", "處", "隊",
38386 "南", "給", "色", "光", "門", "即", "保", "治", "北", "造",
38387 "百", "規", "熱", "領", "七", "海", "口", "東", "導", "器",
38388 "壓", "志", "世", "金", "增", "爭", "濟", "階", "油", "思",
38389 "術", "極", "交", "受", "聯", "什", "認", "六", "共", "權",
38390 "收", "證", "改", "清", "美", "再", "採", "轉", "更", "單",
38391 "風", "切", "打", "白", "教", "速", "花", "帶", "安", "場",
38392 "身", "車", "例", "真", "務", "具", "萬", "每", "目", "至",
38393 "達", "走", "積", "示", "議", "聲", "報", "鬥", "完", "類",
38394 "八", "離", "華", "名", "確", "才", "科", "張", "信", "馬",
38395 "節", "話", "米", "整", "空", "元", "況", "今", "集", "溫",
38396 "傳", "土", "許", "步", "群", "廣", "石", "記", "需", "段",
38397 "研", "界", "拉", "林", "律", "叫", "且", "究", "觀", "越",
38398 "織", "裝", "影", "算", "低", "持", "音", "眾", "書", "布",
38399 "复", "容", "兒", "須", "際", "商", "非", "驗", "連", "斷",
38400 "深", "難", "近", "礦", "千", "週", "委", "素", "技", "備",
38401 "半", "辦", "青", "省", "列", "習", "響", "約", "支", "般",
38402 "史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克",
38403 "何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
38404 "號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
38405 "毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
38406 "王", "按", "格", "養", "易", "置", "派", "層", "片", "始",
38407 "卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓",
38408 "包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅",
38409 "細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液",
38410 "官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配",
38411 "女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席",
38412 "含", "企", "望", "密", "批", "營", "項", "防", "舉", "球",
38413 "英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪",
38414 "破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供",
38415 "河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止",
38416 "案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視",
38417 "僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續",
38418 "輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司",
38419 "足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯",
38420 "負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸",
38421 "修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右",
38422 "財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴",
38423 "跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互",
38424 "初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換",
38425 "未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述",
38426 "錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令",
38427 "限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控",
38428 "州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂",
38429 "礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客",
38430 "袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協",
38431 "訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦",
38432 "夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮",
38433 "終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停",
38434 "烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻",
38435 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
38436 "侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖",
38437 "貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植",
38438 "息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙",
38439 "醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤",
38440 "訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩",
38441 "脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡",
38442 "械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚",
38443 "粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴",
38444 "鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐",
38445 "培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執",
38446 "答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松",
38447 "腳", "困", "異", "免", "背", "星", "福", "買", "染", "井",
38448 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補",
38449 "評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希",
38450 "傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架",
38451 "亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷",
38452 "詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
38453 "綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠",
38454 "屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措",
38455 "束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱",
38456 "胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永",
38457 "宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿",
38458 "露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕",
38459 "庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召",
38460 "鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純",
38461 "借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍",
38462 "潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳",
38463 "歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭",
38464 "納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦",
38465 "塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁",
38466 "刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退",
38467 "洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅",
38468 "獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
38469 "陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
38470 "樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典",
38471 "館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚",
38472 "塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛",
38473 "楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨",
38474 "監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡",
38475 "壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬",
38476 "橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐",
38477 "您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園",
38478 "紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉",
38479 "灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼",
38480 "齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩",
38481 "淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
38482 "莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘",
38483 "夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億",
38484 "璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴",
38485 "縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯",
38486 "津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳",
38487 "肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰",
38488 "貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭",
38489 "峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺",
38490 "浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡",
38491 "睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞",
38492 "炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴",
38493 "呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞",
38494 "授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰",
38495 "幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮",
38496 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違",
38497 "夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催",
38498 "繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯",
38499 "禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃",
38500 "勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊",
38501 "飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈",
38502 "掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅",
38503 "奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂",
38504 "寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱",
38505 "貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤",
38506 "漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹",
38507 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏",
38508 "銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅",
38509 "缸", "牽", "搶", "博", "巧", "殼", "兄", "杜", "訊", "誠",
38510 "碧", "祥", "柯", "頁", "巡", "矩", "悲", "灌", "齡", "倫",
38511 "票", "尋", "桂", "鋪", "聖", "恐", "恰", "鄭", "趣", "抬",
38512 "荒", "騰", "貼", "柔", "滴", "猛", "闊", "輛", "妻", "填",
38513 "撤", "儲", "簽", "鬧", "擾", "紫", "砂", "遞", "戲", "吊",
38514 "陶", "伐", "餵", "療", "瓶", "婆", "撫", "臂", "摸", "忍",
38515 "蝦", "蠟", "鄰", "胸", "鞏", "擠", "偶", "棄", "槽", "勁",
38516 "乳", "鄧", "吉", "仁", "爛", "磚", "租", "烏", "艦", "伴",
38517 "瓜", "淺", "丙", "暫", "燥", "橡", "柳", "迷", "暖", "牌",
38518 "秧", "膽", "詳", "簧", "踏", "瓷", "譜", "呆", "賓", "糊",
38519 "洛", "輝", "憤", "競", "隙", "怒", "粘", "乃", "緒", "肩",
38520 "籍", "敏", "塗", "熙", "皆", "偵", "懸", "掘", "享", "糾",
38521 "醒", "狂", "鎖", "淀", "恨", "牲", "霸", "爬", "賞", "逆",
38522 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鴨",
38523 "趨", "鳳", "晨", "畜", "輩", "秩", "卵", "署", "梯", "炎",
38524 "灘", "棋", "驅", "篩", "峽", "冒", "啥", "壽", "譯", "浸",
38525 "泉", "帽", "遲", "矽", "疆", "貸", "漏", "稿", "冠", "嫩",
38526 "脅", "芯", "牢", "叛", "蝕", "奧", "鳴", "嶺", "羊", "憑",
38527 "串", "塘", "繪", "酵", "融", "盆", "錫", "廟", "籌", "凍",
38528 "輔", "攝", "襲", "筋", "拒", "僚", "旱", "鉀", "鳥", "漆",
38529 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭",
38530 "僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸",
38531 "豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥",
38532 "掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨",
38533 "霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償",
38534 "蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥",
38535 "番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃",
38536 "扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框",
38537 "悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟",
38538 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋",
38539 "黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧",
38540 "甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨",
38541 "偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷",
38542 "弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄",
38543 "逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆",
38544 "冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟",
38545 "欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟",
38546 "搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒",
38547 "憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲",
38548 "杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎",
38549 "烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒",
38550 "姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇",
38551 "董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢",
38552 "拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋",
38553 "覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼",
38554 "兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪",
38555 "叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘",
38556 "鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘",
38557 "窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈",
38558 "胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄",
38559 "瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁",
38560 "嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿",
38561 "蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫",
38562 "皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩",
38563 "巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗",
38564 "卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ]
38565 </script>
38566 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
38567 WORDLISTS["french"] = [
38568 "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
38569 "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
38570 "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
38571 "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
38572 "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
38573 "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
38574 "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
38575 "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
38576 "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
38577 "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
38578 "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
38579 "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
38580 "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
38581 "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
38582 "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
38583 "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
38584 "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
38585 "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
38586 "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
38587 "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
38588 "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
38589 "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
38590 "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
38591 "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
38592 "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
38593 "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
38594 "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
38595 "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
38596 "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
38597 "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
38598 "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
38599 "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
38600 "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
38601 "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
38602 "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
38603 "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
38604 "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
38605 "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
38606 "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
38607 "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
38608 "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
38609 "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
38610 "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
38611 "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
38612 "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
38613 "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
38614 "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
38615 "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
38616 "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
38617 "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
38618 "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
38619 "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
38620 "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
38621 "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
38622 "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
38623 "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
38624 "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
38625 "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
38626 "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
38627 "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
38628 "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
38629 "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
38630 "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
38631 "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
38632 "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
38633 "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
38634 "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
38635 "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
38636 "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
38637 "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
38638 "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
38639 "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
38640 "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
38641 "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
38642 "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
38643 "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
38644 "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
38645 "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
38646 "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
38647 "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
38648 "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
38649 "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
38650 "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
38651 "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
38652 "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
38653 "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
38654 "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
38655 "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
38656 "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
38657 "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
38658 "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
38659 "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
38660 "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
38661 "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
38662 "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
38663 "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
38664 "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
38665 "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
38666 "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
38667 "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
38668 "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
38669 "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
38670 "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
38671 "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
38672 "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
38673 "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
38674 "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
38675 "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
38676 "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
38677 "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
38678 "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
38679 "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
38680 "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
38681 "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
38682 "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
38683 "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
38684 "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
38685 "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
38686 "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
38687 "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
38688 "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
38689 "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
38690 "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
38691 "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
38692 "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
38693 "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
38694 "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
38695 "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
38696 "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
38697 "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
38698 "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
38699 "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
38700 "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
38701 "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
38702 "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
38703 "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
38704 "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
38705 "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
38706 "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
38707 "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
38708 "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
38709 "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
38710 "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
38711 "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
38712 "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
38713 "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
38714 "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
38715 "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
38716 "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
38717 "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
38718 "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
38719 "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
38720 "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
38721 "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
38722 "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
38723 "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
38724 "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
38725 "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
38726 "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
38727 "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
38728 "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
38729 "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
38730 "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
38731 "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
38732 "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
38733 "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
38734 "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
38735 "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
38736 "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
38737 "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
38738 "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
38739 "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
38740 "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
38741 "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
38742 "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
38743 "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
38744 "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
38745 "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
38746 "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
38747 "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
38748 "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
38749 "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
38750 "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
38751 "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
38752 "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
38753 "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
38754 "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
38755 "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
38756 "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
38757 "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
38758 "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
38759 "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
38760 "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
38761 "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
38762 "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
38763 "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
38764 "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
38765 "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
38766 "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
38767 "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
38768 "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
38769 "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
38770 "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
38771 "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
38772 "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
38773 </script>
38774 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
38775 WORDLISTS["italian"] = [
38776 "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
38777 "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
38778 "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
38779 "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
38780 "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
38781 "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
38782 "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
38783 "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
38784 "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
38785 "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
38786 "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
38787 "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
38788 "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
38789 "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
38790 "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
38791 "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
38792 "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
38793 "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
38794 "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
38795 "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
38796 "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
38797 "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
38798 "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
38799 "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
38800 "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
38801 "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
38802 "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
38803 "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
38804 "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
38805 "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
38806 "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
38807 "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
38808 "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
38809 "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
38810 "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
38811 "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
38812 "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
38813 "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
38814 "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
38815 "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
38816 "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
38817 "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
38818 "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
38819 "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
38820 "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
38821 "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
38822 "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
38823 "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
38824 "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
38825 "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
38826 "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
38827 "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
38828 "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
38829 "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
38830 "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
38831 "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
38832 "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
38833 "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
38834 "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
38835 "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
38836 "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
38837 "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
38838 "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
38839 "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
38840 "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
38841 "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
38842 "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
38843 "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
38844 "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
38845 "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
38846 "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
38847 "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
38848 "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
38849 "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
38850 "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
38851 "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
38852 "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
38853 "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
38854 "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
38855 "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
38856 "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
38857 "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
38858 "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
38859 "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
38860 "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
38861 "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
38862 "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
38863 "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
38864 "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
38865 "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
38866 "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
38867 "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
38868 "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
38869 "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
38870 "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
38871 "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
38872 "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
38873 "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
38874 "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
38875 "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
38876 "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
38877 "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
38878 "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
38879 "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
38880 "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
38881 "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
38882 "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
38883 "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
38884 "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
38885 "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
38886 "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
38887 "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
38888 "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
38889 "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
38890 "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
38891 "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
38892 "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
38893 "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
38894 "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
38895 "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
38896 "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
38897 "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
38898 "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
38899 "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
38900 "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
38901 "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
38902 "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
38903 "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
38904 "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
38905 "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
38906 "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
38907 "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
38908 "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
38909 "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
38910 "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
38911 "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
38912 "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
38913 "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
38914 "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
38915 "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
38916 "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
38917 "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
38918 "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
38919 "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
38920 "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
38921 "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
38922 "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
38923 "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
38924 "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
38925 "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
38926 "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
38927 "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
38928 "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
38929 "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
38930 "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
38931 "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
38932 "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
38933 "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
38934 "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
38935 "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
38936 "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
38937 "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
38938 "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
38939 "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
38940 "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
38941 "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
38942 "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
38943 "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
38944 "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
38945 "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
38946 "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
38947 "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
38948 "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
38949 "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
38950 "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
38951 "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
38952 "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
38953 "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
38954 "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
38955 "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
38956 "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
38957 "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
38958 "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
38959 "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
38960 "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
38961 "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
38962 "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
38963 "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
38964 "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
38965 "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
38966 "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
38967 "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
38968 "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
38969 "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
38970 "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
38971 "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
38972 "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
38973 "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
38974 "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
38975 "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
38976 "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
38977 "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
38978 "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
38979 "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
38980 "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
38981 </script>
38982 <script>/*
38983 * Copyright (c) 2013 Pavol Rusnak
38984 *
38985 * Permission is hereby granted, free of charge, to any person obtaining a copy of
38986 * this software and associated documentation files (the "Software"), to deal in
38987 * the Software without restriction, including without limitation the rights to
38988 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
38989 * of the Software, and to permit persons to whom the Software is furnished to do
38990 * so, subject to the following conditions:
38991 *
38992 * The above copyright notice and this permission notice shall be included in all
38993 * copies or substantial portions of the Software.
38994 *
38995 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
38996 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
38997 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
38998 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
38999 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
39000 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
39001 */
39002
39003 /*
39004 * Javascript port from python by Ian Coleman
39005 *
39006 * Requires code from sjcl
39007 * https://github.com/bitwiseshiftleft/sjcl
39008 */
39009
39010 var Mnemonic = function(language) {
39011
39012 var PBKDF2_ROUNDS = 2048;
39013 var RADIX = 2048;
39014
39015 var self = this;
39016 var wordlist = [];
39017
39018 var hmacSHA512 = function(key) {
39019 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
39020 this.encrypt = function() {
39021 return hasher.encrypt.apply(hasher, arguments);
39022 };
39023 };
39024
39025 function init() {
39026 wordlist = WORDLISTS[language];
39027 if (wordlist.length != RADIX) {
39028 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
39029 throw err;
39030 }
39031 }
39032
39033 self.generate = function(strength) {
39034 strength = strength || 128;
39035 var r = strength % 32;
39036 if (r > 0) {
39037 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
39038 }
39039 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
39040 if (!hasStrongCrypto) {
39041 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
39042 }
39043 var buffer = new Uint8Array(strength / 8);
39044 var data = crypto.getRandomValues(buffer);
39045 return self.toMnemonic(data);
39046 }
39047
39048 self.toMnemonic = function(byteArray) {
39049 if (byteArray.length % 4 > 0) {
39050 throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).'
39051 }
39052
39053 //h = hashlib.sha256(data).hexdigest()
39054 var data = byteArrayToWordArray(byteArray);
39055 var hash = sjcl.hash.sha256.hash(data);
39056 var h = sjcl.codec.hex.fromBits(hash);
39057
39058 // b is a binary string, eg '00111010101100...'
39059 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
39060 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
39061 //
39062 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
39063 // c = bin(int(h, 16))[2:].zfill(256)
39064 // d = c[:len(data) * 8 / 32]
39065 var a = byteArrayToBinaryString(byteArray);
39066 var c = zfill(hexStringToBinaryString(h), 256);
39067 var d = c.substring(0, byteArray.length * 8 / 32);
39068 // b = line1 + line2
39069 var b = a + d;
39070
39071 var result = [];
39072 var blen = b.length / 11;
39073 for (var i=0; i<blen; i++) {
39074 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
39075 result.push(wordlist[idx]);
39076 }
39077 return self.joinWords(result);
39078 }
39079
39080 self.check = function(mnemonic) {
39081 var mnemonic = self.splitWords(mnemonic);
39082 if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
39083 return false
39084 }
39085 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
39086 var idx = [];
39087 for (var i=0; i<mnemonic.length; i++) {
39088 var word = mnemonic[i];
39089 var wordIndex = wordlist.indexOf(word);
39090 if (wordIndex == -1) {
39091 return false;
39092 }
39093 var binaryIndex = zfill(wordIndex.toString(2), 11);
39094 idx.push(binaryIndex);
39095 }
39096 var b = idx.join('');
39097 var l = b.length;
39098 //d = b[:l / 33 * 32]
39099 //h = b[-l / 33:]
39100 var d = b.substring(0, l / 33 * 32);
39101 var h = b.substring(l - l / 33, l);
39102 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
39103 var nd = binaryStringToWordArray(d);
39104 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
39105 var ndHash = sjcl.hash.sha256.hash(nd);
39106 var ndHex = sjcl.codec.hex.fromBits(ndHash);
39107 var ndBstr = zfill(hexStringToBinaryString(ndHex), 256);
39108 var nh = ndBstr.substring(0,l/33);
39109 return h == nh;
39110 }
39111
39112 self.toSeed = function(mnemonic, passphrase) {
39113 passphrase = passphrase || '';
39114 mnemonic = self.joinWords(self.splitWords(self.normalizeString(mnemonic))); // removes blanks
39115 passphrase = self.normalizeString(passphrase)
39116 passphrase = "mnemonic" + passphrase;
39117 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonic);
39118 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
39119 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
39120 var hashHex = sjcl.codec.hex.fromBits(result);
39121 return hashHex;
39122 }
39123
39124 self.splitWords = function(mnemonic) {
39125 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
39126 }
39127
39128 self.joinWords = function(words) {
39129 // Set space correctly depending on the language
39130 // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
39131 var space = " ";
39132 if (language == "japanese") {
39133 space = "\u3000"; // ideographic space
39134 }
39135 return words.join(space);
39136 }
39137
39138 self.normalizeString = function(str) {
39139 if (typeof str.normalize == "function") {
39140 return str.normalize("NFKD");
39141 }
39142 else {
39143 // TODO decide how to handle this in the future.
39144 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
39145 return str;
39146 }
39147 }
39148
39149 function byteArrayToWordArray(data) {
39150 var a = [];
39151 for (var i=0; i<data.length/4; i++) {
39152 v = 0;
39153 v += data[i*4 + 0] << 8 * 3;
39154 v += data[i*4 + 1] << 8 * 2;
39155 v += data[i*4 + 2] << 8 * 1;
39156 v += data[i*4 + 3] << 8 * 0;
39157 a.push(v);
39158 }
39159 return a;
39160 }
39161
39162 function byteArrayToBinaryString(data) {
39163 var bin = "";
39164 for (var i=0; i<data.length; i++) {
39165 bin += zfill(data[i].toString(2), 8);
39166 }
39167 return bin;
39168 }
39169
39170 function hexStringToBinaryString(hexString) {
39171 binaryString = "";
39172 for (var i=0; i<hexString.length; i++) {
39173 binaryString += zfill(parseInt(hexString[i], 16).toString(2),4);
39174 }
39175 return binaryString;
39176 }
39177
39178 function binaryStringToWordArray(binary) {
39179 var aLen = binary.length / 32;
39180 var a = [];
39181 for (var i=0; i<aLen; i++) {
39182 var valueStr = binary.substring(0,32);
39183 var value = parseInt(valueStr, 2);
39184 a.push(value);
39185 binary = binary.slice(32);
39186 }
39187 return a;
39188 }
39189
39190 // Pad a numeric string on the left with zero digits until the given width
39191 // is reached.
39192 // Note this differs to the python implementation because it does not
39193 // handle numbers starting with a sign.
39194 function zfill(source, length) {
39195 source = source.toString();
39196 while (source.length < length) {
39197 source = '0' + source;
39198 }
39199 return source;
39200 }
39201
39202 init();
39203
39204 }
39205 </script>
39206 <script>/*
39207 JavaScript BigInteger library version 0.9.1
39208 http://silentmatt.com/biginteger/
39209
39210 Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
39211 Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
39212 Licensed under the MIT license.
39213
39214 Support for arbitrary internal representation base was added by
39215 Vitaly Magerya.
39216 */
39217
39218 /*
39219 File: biginteger.js
39220
39221 Exports:
39222
39223 <BigInteger>
39224 */
39225 (function(exports) {
39226 "use strict";
39227 /*
39228 Class: BigInteger
39229 An arbitrarily-large integer.
39230
39231 <BigInteger> objects should be considered immutable. None of the "built-in"
39232 methods modify *this* or their arguments. All properties should be
39233 considered private.
39234
39235 All the methods of <BigInteger> instances can be called "statically". The
39236 static versions are convenient if you don't already have a <BigInteger>
39237 object.
39238
39239 As an example, these calls are equivalent.
39240
39241 > BigInteger(4).multiply(5); // returns BigInteger(20);
39242 > BigInteger.multiply(4, 5); // returns BigInteger(20);
39243
39244 > var a = 42;
39245 > var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
39246 */
39247
39248 var CONSTRUCT = {}; // Unique token to call "private" version of constructor
39249
39250 /*
39251 Constructor: BigInteger()
39252 Convert a value to a <BigInteger>.
39253
39254 Although <BigInteger()> is the constructor for <BigInteger> objects, it is
39255 best not to call it as a constructor. If *n* is a <BigInteger> object, it is
39256 simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
39257 without a radix argument.
39258
39259 > var n0 = BigInteger(); // Same as <BigInteger.ZERO>
39260 > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
39261 > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123
39262 > var n3 = BigInteger(n2); // Return n2, unchanged
39263
39264 The constructor form only takes an array and a sign. *n* must be an
39265 array of numbers in little-endian order, where each digit is between 0
39266 and BigInteger.base. The second parameter sets the sign: -1 for
39267 negative, +1 for positive, or 0 for zero. The array is *not copied and
39268 may be modified*. If the array contains only zeros, the sign parameter
39269 is ignored and is forced to zero.
39270
39271 > new BigInteger([5], -1): create a new BigInteger with value -5
39272
39273 Parameters:
39274
39275 n - Value to convert to a <BigInteger>.
39276
39277 Returns:
39278
39279 A <BigInteger> value.
39280
39281 See Also:
39282
39283 <parse>, <BigInteger>
39284 */
39285 function BigInteger(n, s, token) {
39286 if (token !== CONSTRUCT) {
39287 if (n instanceof BigInteger) {
39288 return n;
39289 }
39290 else if (typeof n === "undefined") {
39291 return ZERO;
39292 }
39293 return BigInteger.parse(n);
39294 }
39295
39296 n = n || []; // Provide the nullary constructor for subclasses.
39297 while (n.length && !n[n.length - 1]) {
39298 --n.length;
39299 }
39300 this._d = n;
39301 this._s = n.length ? (s || 1) : 0;
39302 }
39303
39304 BigInteger._construct = function(n, s) {
39305 return new BigInteger(n, s, CONSTRUCT);
39306 };
39307
39308 // Base-10 speedup hacks in parse, toString, exp10 and log functions
39309 // require base to be a power of 10. 10^7 is the largest such power
39310 // that won't cause a precision loss when digits are multiplied.
39311 var BigInteger_base = 10000000;
39312 var BigInteger_base_log10 = 7;
39313
39314 BigInteger.base = BigInteger_base;
39315 BigInteger.base_log10 = BigInteger_base_log10;
39316
39317 var ZERO = new BigInteger([], 0, CONSTRUCT);
39318 // Constant: ZERO
39319 // <BigInteger> 0.
39320 BigInteger.ZERO = ZERO;
39321
39322 var ONE = new BigInteger([1], 1, CONSTRUCT);
39323 // Constant: ONE
39324 // <BigInteger> 1.
39325 BigInteger.ONE = ONE;
39326
39327 var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
39328 // Constant: M_ONE
39329 // <BigInteger> -1.
39330 BigInteger.M_ONE = M_ONE;
39331
39332 // Constant: _0
39333 // Shortcut for <ZERO>.
39334 BigInteger._0 = ZERO;
39335
39336 // Constant: _1
39337 // Shortcut for <ONE>.
39338 BigInteger._1 = ONE;
39339
39340 /*
39341 Constant: small
39342 Array of <BigIntegers> from 0 to 36.
39343
39344 These are used internally for parsing, but useful when you need a "small"
39345 <BigInteger>.
39346
39347 See Also:
39348
39349 <ZERO>, <ONE>, <_0>, <_1>
39350 */
39351 BigInteger.small = [
39352 ZERO,
39353 ONE,
39354 /* Assuming BigInteger_base > 36 */
39355 new BigInteger( [2], 1, CONSTRUCT),
39356 new BigInteger( [3], 1, CONSTRUCT),
39357 new BigInteger( [4], 1, CONSTRUCT),
39358 new BigInteger( [5], 1, CONSTRUCT),
39359 new BigInteger( [6], 1, CONSTRUCT),
39360 new BigInteger( [7], 1, CONSTRUCT),
39361 new BigInteger( [8], 1, CONSTRUCT),
39362 new BigInteger( [9], 1, CONSTRUCT),
39363 new BigInteger([10], 1, CONSTRUCT),
39364 new BigInteger([11], 1, CONSTRUCT),
39365 new BigInteger([12], 1, CONSTRUCT),
39366 new BigInteger([13], 1, CONSTRUCT),
39367 new BigInteger([14], 1, CONSTRUCT),
39368 new BigInteger([15], 1, CONSTRUCT),
39369 new BigInteger([16], 1, CONSTRUCT),
39370 new BigInteger([17], 1, CONSTRUCT),
39371 new BigInteger([18], 1, CONSTRUCT),
39372 new BigInteger([19], 1, CONSTRUCT),
39373 new BigInteger([20], 1, CONSTRUCT),
39374 new BigInteger([21], 1, CONSTRUCT),
39375 new BigInteger([22], 1, CONSTRUCT),
39376 new BigInteger([23], 1, CONSTRUCT),
39377 new BigInteger([24], 1, CONSTRUCT),
39378 new BigInteger([25], 1, CONSTRUCT),
39379 new BigInteger([26], 1, CONSTRUCT),
39380 new BigInteger([27], 1, CONSTRUCT),
39381 new BigInteger([28], 1, CONSTRUCT),
39382 new BigInteger([29], 1, CONSTRUCT),
39383 new BigInteger([30], 1, CONSTRUCT),
39384 new BigInteger([31], 1, CONSTRUCT),
39385 new BigInteger([32], 1, CONSTRUCT),
39386 new BigInteger([33], 1, CONSTRUCT),
39387 new BigInteger([34], 1, CONSTRUCT),
39388 new BigInteger([35], 1, CONSTRUCT),
39389 new BigInteger([36], 1, CONSTRUCT)
39390 ];
39391
39392 // Used for parsing/radix conversion
39393 BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
39394
39395 /*
39396 Method: toString
39397 Convert a <BigInteger> to a string.
39398
39399 When *base* is greater than 10, letters are upper case.
39400
39401 Parameters:
39402
39403 base - Optional base to represent the number in (default is base 10).
39404 Must be between 2 and 36 inclusive, or an Error will be thrown.
39405
39406 Returns:
39407
39408 The string representation of the <BigInteger>.
39409 */
39410 BigInteger.prototype.toString = function(base) {
39411 base = +base || 10;
39412 if (base < 2 || base > 36) {
39413 throw new Error("illegal radix " + base + ".");
39414 }
39415 if (this._s === 0) {
39416 return "0";
39417 }
39418 if (base === 10) {
39419 var str = this._s < 0 ? "-" : "";
39420 str += this._d[this._d.length - 1].toString();
39421 for (var i = this._d.length - 2; i >= 0; i--) {
39422 var group = this._d[i].toString();
39423 while (group.length < BigInteger_base_log10) group = '0' + group;
39424 str += group;
39425 }
39426 return str;
39427 }
39428 else {
39429 var numerals = BigInteger.digits;
39430 base = BigInteger.small[base];
39431 var sign = this._s;
39432
39433 var n = this.abs();
39434 var digits = [];
39435 var digit;
39436
39437 while (n._s !== 0) {
39438 var divmod = n.divRem(base);
39439 n = divmod[0];
39440 digit = divmod[1];
39441 // TODO: This could be changed to unshift instead of reversing at the end.
39442 // Benchmark both to compare speeds.
39443 digits.push(numerals[digit.valueOf()]);
39444 }
39445 return (sign < 0 ? "-" : "") + digits.reverse().join("");
39446 }
39447 };
39448
39449 // Verify strings for parsing
39450 BigInteger.radixRegex = [
39451 /^$/,
39452 /^$/,
39453 /^[01]*$/,
39454 /^[012]*$/,
39455 /^[0-3]*$/,
39456 /^[0-4]*$/,
39457 /^[0-5]*$/,
39458 /^[0-6]*$/,
39459 /^[0-7]*$/,
39460 /^[0-8]*$/,
39461 /^[0-9]*$/,
39462 /^[0-9aA]*$/,
39463 /^[0-9abAB]*$/,
39464 /^[0-9abcABC]*$/,
39465 /^[0-9a-dA-D]*$/,
39466 /^[0-9a-eA-E]*$/,
39467 /^[0-9a-fA-F]*$/,
39468 /^[0-9a-gA-G]*$/,
39469 /^[0-9a-hA-H]*$/,
39470 /^[0-9a-iA-I]*$/,
39471 /^[0-9a-jA-J]*$/,
39472 /^[0-9a-kA-K]*$/,
39473 /^[0-9a-lA-L]*$/,
39474 /^[0-9a-mA-M]*$/,
39475 /^[0-9a-nA-N]*$/,
39476 /^[0-9a-oA-O]*$/,
39477 /^[0-9a-pA-P]*$/,
39478 /^[0-9a-qA-Q]*$/,
39479 /^[0-9a-rA-R]*$/,
39480 /^[0-9a-sA-S]*$/,
39481 /^[0-9a-tA-T]*$/,
39482 /^[0-9a-uA-U]*$/,
39483 /^[0-9a-vA-V]*$/,
39484 /^[0-9a-wA-W]*$/,
39485 /^[0-9a-xA-X]*$/,
39486 /^[0-9a-yA-Y]*$/,
39487 /^[0-9a-zA-Z]*$/
39488 ];
39489
39490 /*
39491 Function: parse
39492 Parse a string into a <BigInteger>.
39493
39494 *base* is optional but, if provided, must be from 2 to 36 inclusive. If
39495 *base* is not provided, it will be guessed based on the leading characters
39496 of *s* as follows:
39497
39498 - "0x" or "0X": *base* = 16
39499 - "0c" or "0C": *base* = 8
39500 - "0b" or "0B": *base* = 2
39501 - else: *base* = 10
39502
39503 If no base is provided, or *base* is 10, the number can be in exponential
39504 form. For example, these are all valid:
39505
39506 > BigInteger.parse("1e9"); // Same as "1000000000"
39507 > BigInteger.parse("1.234*10^3"); // Same as 1234
39508 > BigInteger.parse("56789 * 10 ** -2"); // Same as 567
39509
39510 If any characters fall outside the range defined by the radix, an exception
39511 will be thrown.
39512
39513 Parameters:
39514
39515 s - The string to parse.
39516 base - Optional radix (default is to guess based on *s*).
39517
39518 Returns:
39519
39520 a <BigInteger> instance.
39521 */
39522 BigInteger.parse = function(s, base) {
39523 // Expands a number in exponential form to decimal form.
39524 // expandExponential("-13.441*10^5") === "1344100";
39525 // expandExponential("1.12300e-1") === "0.112300";
39526 // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
39527 function expandExponential(str) {
39528 str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
39529
39530 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
39531 c = +c;
39532 var l = c < 0;
39533 var i = n.length + c;
39534 x = (l ? n : f).length;
39535 c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
39536 var z = (new Array(c + 1)).join("0");
39537 var r = n + f;
39538 return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
39539 });
39540 }
39541
39542 s = s.toString();
39543 if (typeof base === "undefined" || +base === 10) {
39544 s = expandExponential(s);
39545 }
39546
39547 var prefixRE;
39548 if (typeof base === "undefined") {
39549 prefixRE = '0[xcb]';
39550 }
39551 else if (base == 16) {
39552 prefixRE = '0x';
39553 }
39554 else if (base == 8) {
39555 prefixRE = '0c';
39556 }
39557 else if (base == 2) {
39558 prefixRE = '0b';
39559 }
39560 else {
39561 prefixRE = '';
39562 }
39563 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
39564 if (parts) {
39565 var sign = parts[1] || "+";
39566 var baseSection = parts[2] || "";
39567 var digits = parts[3] || "";
39568
39569 if (typeof base === "undefined") {
39570 // Guess base
39571 if (baseSection === "0x" || baseSection === "0X") { // Hex
39572 base = 16;
39573 }
39574 else if (baseSection === "0c" || baseSection === "0C") { // Octal
39575 base = 8;
39576 }
39577 else if (baseSection === "0b" || baseSection === "0B") { // Binary
39578 base = 2;
39579 }
39580 else {
39581 base = 10;
39582 }
39583 }
39584 else if (base < 2 || base > 36) {
39585 throw new Error("Illegal radix " + base + ".");
39586 }
39587
39588 base = +base;
39589
39590 // Check for digits outside the range
39591 if (!(BigInteger.radixRegex[base].test(digits))) {
39592 throw new Error("Bad digit for radix " + base);
39593 }
39594
39595 // Strip leading zeros, and convert to array
39596 digits = digits.replace(/^0+/, "").split("");
39597 if (digits.length === 0) {
39598 return ZERO;
39599 }
39600
39601 // Get the sign (we know it's not zero)
39602 sign = (sign === "-") ? -1 : 1;
39603
39604 // Optimize 10
39605 if (base == 10) {
39606 var d = [];
39607 while (digits.length >= BigInteger_base_log10) {
39608 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
39609 }
39610 d.push(parseInt(digits.join(''), 10));
39611 return new BigInteger(d, sign, CONSTRUCT);
39612 }
39613
39614 // Do the conversion
39615 var d = ZERO;
39616 base = BigInteger.small[base];
39617 var small = BigInteger.small;
39618 for (var i = 0; i < digits.length; i++) {
39619 d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
39620 }
39621 return new BigInteger(d._d, sign, CONSTRUCT);
39622 }
39623 else {
39624 throw new Error("Invalid BigInteger format: " + s);
39625 }
39626 };
39627
39628 /*
39629 Function: add
39630 Add two <BigIntegers>.
39631
39632 Parameters:
39633
39634 n - The number to add to *this*. Will be converted to a <BigInteger>.
39635
39636 Returns:
39637
39638 The numbers added together.
39639
39640 See Also:
39641
39642 <subtract>, <multiply>, <quotient>, <next>
39643 */
39644 BigInteger.prototype.add = function(n) {
39645 if (this._s === 0) {
39646 return BigInteger(n);
39647 }
39648
39649 n = BigInteger(n);
39650 if (n._s === 0) {
39651 return this;
39652 }
39653 if (this._s !== n._s) {
39654 n = n.negate();
39655 return this.subtract(n);
39656 }
39657
39658 var a = this._d;
39659 var b = n._d;
39660 var al = a.length;
39661 var bl = b.length;
39662 var sum = new Array(Math.max(al, bl) + 1);
39663 var size = Math.min(al, bl);
39664 var carry = 0;
39665 var digit;
39666
39667 for (var i = 0; i < size; i++) {
39668 digit = a[i] + b[i] + carry;
39669 sum[i] = digit % BigInteger_base;
39670 carry = (digit / BigInteger_base) | 0;
39671 }
39672 if (bl > al) {
39673 a = b;
39674 al = bl;
39675 }
39676 for (i = size; carry && i < al; i++) {
39677 digit = a[i] + carry;
39678 sum[i] = digit % BigInteger_base;
39679 carry = (digit / BigInteger_base) | 0;
39680 }
39681 if (carry) {
39682 sum[i] = carry;
39683 }
39684
39685 for ( ; i < al; i++) {
39686 sum[i] = a[i];
39687 }
39688
39689 return new BigInteger(sum, this._s, CONSTRUCT);
39690 };
39691
39692 /*
39693 Function: negate
39694 Get the additive inverse of a <BigInteger>.
39695
39696 Returns:
39697
39698 A <BigInteger> with the same magnatude, but with the opposite sign.
39699
39700 See Also:
39701
39702 <abs>
39703 */
39704 BigInteger.prototype.negate = function() {
39705 return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
39706 };
39707
39708 /*
39709 Function: abs
39710 Get the absolute value of a <BigInteger>.
39711
39712 Returns:
39713
39714 A <BigInteger> with the same magnatude, but always positive (or zero).
39715
39716 See Also:
39717
39718 <negate>
39719 */
39720 BigInteger.prototype.abs = function() {
39721 return (this._s < 0) ? this.negate() : this;
39722 };
39723
39724 /*
39725 Function: subtract
39726 Subtract two <BigIntegers>.
39727
39728 Parameters:
39729
39730 n - The number to subtract from *this*. Will be converted to a <BigInteger>.
39731
39732 Returns:
39733
39734 The *n* subtracted from *this*.
39735
39736 See Also:
39737
39738 <add>, <multiply>, <quotient>, <prev>
39739 */
39740 BigInteger.prototype.subtract = function(n) {
39741 if (this._s === 0) {
39742 return BigInteger(n).negate();
39743 }
39744
39745 n = BigInteger(n);
39746 if (n._s === 0) {
39747 return this;
39748 }
39749 if (this._s !== n._s) {
39750 n = n.negate();
39751 return this.add(n);
39752 }
39753
39754 var m = this;
39755 // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
39756 if (this._s < 0) {
39757 m = new BigInteger(n._d, 1, CONSTRUCT);
39758 n = new BigInteger(this._d, 1, CONSTRUCT);
39759 }
39760
39761 // Both are positive => a - b
39762 var sign = m.compareAbs(n);
39763 if (sign === 0) {
39764 return ZERO;
39765 }
39766 else if (sign < 0) {
39767 // swap m and n
39768 var t = n;
39769 n = m;
39770 m = t;
39771 }
39772
39773 // a > b
39774 var a = m._d;
39775 var b = n._d;
39776 var al = a.length;
39777 var bl = b.length;
39778 var diff = new Array(al); // al >= bl since a > b
39779 var borrow = 0;
39780 var i;
39781 var digit;
39782
39783 for (i = 0; i < bl; i++) {
39784 digit = a[i] - borrow - b[i];
39785 if (digit < 0) {
39786 digit += BigInteger_base;
39787 borrow = 1;
39788 }
39789 else {
39790 borrow = 0;
39791 }
39792 diff[i] = digit;
39793 }
39794 for (i = bl; i < al; i++) {
39795 digit = a[i] - borrow;
39796 if (digit < 0) {
39797 digit += BigInteger_base;
39798 }
39799 else {
39800 diff[i++] = digit;
39801 break;
39802 }
39803 diff[i] = digit;
39804 }
39805 for ( ; i < al; i++) {
39806 diff[i] = a[i];
39807 }
39808
39809 return new BigInteger(diff, sign, CONSTRUCT);
39810 };
39811
39812 (function() {
39813 function addOne(n, sign) {
39814 var a = n._d;
39815 var sum = a.slice();
39816 var carry = true;
39817 var i = 0;
39818
39819 while (true) {
39820 var digit = (a[i] || 0) + 1;
39821 sum[i] = digit % BigInteger_base;
39822 if (digit <= BigInteger_base - 1) {
39823 break;
39824 }
39825 ++i;
39826 }
39827
39828 return new BigInteger(sum, sign, CONSTRUCT);
39829 }
39830
39831 function subtractOne(n, sign) {
39832 var a = n._d;
39833 var sum = a.slice();
39834 var borrow = true;
39835 var i = 0;
39836
39837 while (true) {
39838 var digit = (a[i] || 0) - 1;
39839 if (digit < 0) {
39840 sum[i] = digit + BigInteger_base;
39841 }
39842 else {
39843 sum[i] = digit;
39844 break;
39845 }
39846 ++i;
39847 }
39848
39849 return new BigInteger(sum, sign, CONSTRUCT);
39850 }
39851
39852 /*
39853 Function: next
39854 Get the next <BigInteger> (add one).
39855
39856 Returns:
39857
39858 *this* + 1.
39859
39860 See Also:
39861
39862 <add>, <prev>
39863 */
39864 BigInteger.prototype.next = function() {
39865 switch (this._s) {
39866 case 0:
39867 return ONE;
39868 case -1:
39869 return subtractOne(this, -1);
39870 // case 1:
39871 default:
39872 return addOne(this, 1);
39873 }
39874 };
39875
39876 /*
39877 Function: prev
39878 Get the previous <BigInteger> (subtract one).
39879
39880 Returns:
39881
39882 *this* - 1.
39883
39884 See Also:
39885
39886 <next>, <subtract>
39887 */
39888 BigInteger.prototype.prev = function() {
39889 switch (this._s) {
39890 case 0:
39891 return M_ONE;
39892 case -1:
39893 return addOne(this, -1);
39894 // case 1:
39895 default:
39896 return subtractOne(this, 1);
39897 }
39898 };
39899 })();
39900
39901 /*
39902 Function: compareAbs
39903 Compare the absolute value of two <BigIntegers>.
39904
39905 Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
39906
39907 Parameters:
39908
39909 n - The number to compare to *this*. Will be converted to a <BigInteger>.
39910
39911 Returns:
39912
39913 -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
39914
39915 See Also:
39916
39917 <compare>, <abs>
39918 */
39919 BigInteger.prototype.compareAbs = function(n) {
39920 if (this === n) {
39921 return 0;
39922 }
39923
39924 if (!(n instanceof BigInteger)) {
39925 if (!isFinite(n)) {
39926 return(isNaN(n) ? n : -1);
39927 }
39928 n = BigInteger(n);
39929 }
39930
39931 if (this._s === 0) {
39932 return (n._s !== 0) ? -1 : 0;
39933 }
39934 if (n._s === 0) {
39935 return 1;
39936 }
39937
39938 var l = this._d.length;
39939 var nl = n._d.length;
39940 if (l < nl) {
39941 return -1;
39942 }
39943 else if (l > nl) {
39944 return 1;
39945 }
39946
39947 var a = this._d;
39948 var b = n._d;
39949 for (var i = l-1; i >= 0; i--) {
39950 if (a[i] !== b[i]) {
39951 return a[i] < b[i] ? -1 : 1;
39952 }
39953 }
39954
39955 return 0;
39956 };
39957
39958 /*
39959 Function: compare
39960 Compare two <BigIntegers>.
39961
39962 Parameters:
39963
39964 n - The number to compare to *this*. Will be converted to a <BigInteger>.
39965
39966 Returns:
39967
39968 -1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
39969
39970 See Also:
39971
39972 <compareAbs>, <isPositive>, <isNegative>, <isUnit>
39973 */
39974 BigInteger.prototype.compare = function(n) {
39975 if (this === n) {
39976 return 0;
39977 }
39978
39979 n = BigInteger(n);
39980
39981 if (this._s === 0) {
39982 return -n._s;
39983 }
39984
39985 if (this._s === n._s) { // both positive or both negative
39986 var cmp = this.compareAbs(n);
39987 return cmp * this._s;
39988 }
39989 else {
39990 return this._s;
39991 }
39992 };
39993
39994 /*
39995 Function: isUnit
39996 Return true iff *this* is either 1 or -1.
39997
39998 Returns:
39999
40000 true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
40001
40002 See Also:
40003
40004 <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
40005 <BigInteger.ONE>, <BigInteger.M_ONE>
40006 */
40007 BigInteger.prototype.isUnit = function() {
40008 return this === ONE ||
40009 this === M_ONE ||
40010 (this._d.length === 1 && this._d[0] === 1);
40011 };
40012
40013 /*
40014 Function: multiply
40015 Multiply two <BigIntegers>.
40016
40017 Parameters:
40018
40019 n - The number to multiply *this* by. Will be converted to a
40020 <BigInteger>.
40021
40022 Returns:
40023
40024 The numbers multiplied together.
40025
40026 See Also:
40027
40028 <add>, <subtract>, <quotient>, <square>
40029 */
40030 BigInteger.prototype.multiply = function(n) {
40031 // TODO: Consider adding Karatsuba multiplication for large numbers
40032 if (this._s === 0) {
40033 return ZERO;
40034 }
40035
40036 n = BigInteger(n);
40037 if (n._s === 0) {
40038 return ZERO;
40039 }
40040 if (this.isUnit()) {
40041 if (this._s < 0) {
40042 return n.negate();
40043 }
40044 return n;
40045 }
40046 if (n.isUnit()) {
40047 if (n._s < 0) {
40048 return this.negate();
40049 }
40050 return this;
40051 }
40052 if (this === n) {
40053 return this.square();
40054 }
40055
40056 var r = (this._d.length >= n._d.length);
40057 var a = (r ? this : n)._d; // a will be longer than b
40058 var b = (r ? n : this)._d;
40059 var al = a.length;
40060 var bl = b.length;
40061
40062 var pl = al + bl;
40063 var partial = new Array(pl);
40064 var i;
40065 for (i = 0; i < pl; i++) {
40066 partial[i] = 0;
40067 }
40068
40069 for (i = 0; i < bl; i++) {
40070 var carry = 0;
40071 var bi = b[i];
40072 var jlimit = al + i;
40073 var digit;
40074 for (var j = i; j < jlimit; j++) {
40075 digit = partial[j] + bi * a[j - i] + carry;
40076 carry = (digit / BigInteger_base) | 0;
40077 partial[j] = (digit % BigInteger_base) | 0;
40078 }
40079 if (carry) {
40080 digit = partial[j] + carry;
40081 carry = (digit / BigInteger_base) | 0;
40082 partial[j] = digit % BigInteger_base;
40083 }
40084 }
40085 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
40086 };
40087
40088 // Multiply a BigInteger by a single-digit native number
40089 // Assumes that this and n are >= 0
40090 // This is not really intended to be used outside the library itself
40091 BigInteger.prototype.multiplySingleDigit = function(n) {
40092 if (n === 0 || this._s === 0) {
40093 return ZERO;
40094 }
40095 if (n === 1) {
40096 return this;
40097 }
40098
40099 var digit;
40100 if (this._d.length === 1) {
40101 digit = this._d[0] * n;
40102 if (digit >= BigInteger_base) {
40103 return new BigInteger([(digit % BigInteger_base)|0,
40104 (digit / BigInteger_base)|0], 1, CONSTRUCT);
40105 }
40106 return new BigInteger([digit], 1, CONSTRUCT);
40107 }
40108
40109 if (n === 2) {
40110 return this.add(this);
40111 }
40112 if (this.isUnit()) {
40113 return new BigInteger([n], 1, CONSTRUCT);
40114 }
40115
40116 var a = this._d;
40117 var al = a.length;
40118
40119 var pl = al + 1;
40120 var partial = new Array(pl);
40121 for (var i = 0; i < pl; i++) {
40122 partial[i] = 0;
40123 }
40124
40125 var carry = 0;
40126 for (var j = 0; j < al; j++) {
40127 digit = n * a[j] + carry;
40128 carry = (digit / BigInteger_base) | 0;
40129 partial[j] = (digit % BigInteger_base) | 0;
40130 }
40131 if (carry) {
40132 partial[j] = carry;
40133 }
40134
40135 return new BigInteger(partial, 1, CONSTRUCT);
40136 };
40137
40138 /*
40139 Function: square
40140 Multiply a <BigInteger> by itself.
40141
40142 This is slightly faster than regular multiplication, since it removes the
40143 duplicated multiplcations.
40144
40145 Returns:
40146
40147 > this.multiply(this)
40148
40149 See Also:
40150 <multiply>
40151 */
40152 BigInteger.prototype.square = function() {
40153 // Normally, squaring a 10-digit number would take 100 multiplications.
40154 // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
40155 // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
40156 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
40157
40158 if (this._s === 0) {
40159 return ZERO;
40160 }
40161 if (this.isUnit()) {
40162 return ONE;
40163 }
40164
40165 var digits = this._d;
40166 var length = digits.length;
40167 var imult1 = new Array(length + length + 1);
40168 var product, carry, k;
40169 var i;
40170
40171 // Calculate diagonal
40172 for (i = 0; i < length; i++) {
40173 k = i * 2;
40174 product = digits[i] * digits[i];
40175 carry = (product / BigInteger_base) | 0;
40176 imult1[k] = product % BigInteger_base;
40177 imult1[k + 1] = carry;
40178 }
40179
40180 // Calculate repeating part
40181 for (i = 0; i < length; i++) {
40182 carry = 0;
40183 k = i * 2 + 1;
40184 for (var j = i + 1; j < length; j++, k++) {
40185 product = digits[j] * digits[i] * 2 + imult1[k] + carry;
40186 carry = (product / BigInteger_base) | 0;
40187 imult1[k] = product % BigInteger_base;
40188 }
40189 k = length + i;
40190 var digit = carry + imult1[k];
40191 carry = (digit / BigInteger_base) | 0;
40192 imult1[k] = digit % BigInteger_base;
40193 imult1[k + 1] += carry;
40194 }
40195
40196 return new BigInteger(imult1, 1, CONSTRUCT);
40197 };
40198
40199 /*
40200 Function: quotient
40201 Divide two <BigIntegers> and truncate towards zero.
40202
40203 <quotient> throws an exception if *n* is zero.
40204
40205 Parameters:
40206
40207 n - The number to divide *this* by. Will be converted to a <BigInteger>.
40208
40209 Returns:
40210
40211 The *this* / *n*, truncated to an integer.
40212
40213 See Also:
40214
40215 <add>, <subtract>, <multiply>, <divRem>, <remainder>
40216 */
40217 BigInteger.prototype.quotient = function(n) {
40218 return this.divRem(n)[0];
40219 };
40220
40221 /*
40222 Function: divide
40223 Deprecated synonym for <quotient>.
40224 */
40225 BigInteger.prototype.divide = BigInteger.prototype.quotient;
40226
40227 /*
40228 Function: remainder
40229 Calculate the remainder of two <BigIntegers>.
40230
40231 <remainder> throws an exception if *n* is zero.
40232
40233 Parameters:
40234
40235 n - The remainder after *this* is divided *this* by *n*. Will be
40236 converted to a <BigInteger>.
40237
40238 Returns:
40239
40240 *this* % *n*.
40241
40242 See Also:
40243
40244 <divRem>, <quotient>
40245 */
40246 BigInteger.prototype.remainder = function(n) {
40247 return this.divRem(n)[1];
40248 };
40249
40250 /*
40251 Function: divRem
40252 Calculate the integer quotient and remainder of two <BigIntegers>.
40253
40254 <divRem> throws an exception if *n* is zero.
40255
40256 Parameters:
40257
40258 n - The number to divide *this* by. Will be converted to a <BigInteger>.
40259
40260 Returns:
40261
40262 A two-element array containing the quotient and the remainder.
40263
40264 > a.divRem(b)
40265
40266 is exactly equivalent to
40267
40268 > [a.quotient(b), a.remainder(b)]
40269
40270 except it is faster, because they are calculated at the same time.
40271
40272 See Also:
40273
40274 <quotient>, <remainder>
40275 */
40276 BigInteger.prototype.divRem = function(n) {
40277 n = BigInteger(n);
40278 if (n._s === 0) {
40279 throw new Error("Divide by zero");
40280 }
40281 if (this._s === 0) {
40282 return [ZERO, ZERO];
40283 }
40284 if (n._d.length === 1) {
40285 return this.divRemSmall(n._s * n._d[0]);
40286 }
40287
40288 // Test for easy cases -- |n1| <= |n2|
40289 switch (this.compareAbs(n)) {
40290 case 0: // n1 == n2
40291 return [this._s === n._s ? ONE : M_ONE, ZERO];
40292 case -1: // |n1| < |n2|
40293 return [ZERO, this];
40294 }
40295
40296 var sign = this._s * n._s;
40297 var a = n.abs();
40298 var b_digits = this._d;
40299 var b_index = b_digits.length;
40300 var digits = n._d.length;
40301 var quot = [];
40302 var guess;
40303
40304 var part = new BigInteger([], 0, CONSTRUCT);
40305
40306 while (b_index) {
40307 part._d.unshift(b_digits[--b_index]);
40308 part = new BigInteger(part._d, 1, CONSTRUCT);
40309
40310 if (part.compareAbs(n) < 0) {
40311 quot.push(0);
40312 continue;
40313 }
40314 if (part._s === 0) {
40315 guess = 0;
40316 }
40317 else {
40318 var xlen = part._d.length, ylen = a._d.length;
40319 var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
40320 var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
40321 if (part._d.length > a._d.length) {
40322 // The length of part._d can either match a._d length,
40323 // or exceed it by one.
40324 highx = (highx+1)*BigInteger_base;
40325 }
40326 guess = Math.ceil(highx/highy);
40327 }
40328 do {
40329 var check = a.multiplySingleDigit(guess);
40330 if (check.compareAbs(part) <= 0) {
40331 break;
40332 }
40333 guess--;
40334 } while (guess);
40335
40336 quot.push(guess);
40337 if (!guess) {
40338 continue;
40339 }
40340 var diff = part.subtract(check);
40341 part._d = diff._d.slice();
40342 }
40343
40344 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
40345 new BigInteger(part._d, this._s, CONSTRUCT)];
40346 };
40347
40348 // Throws an exception if n is outside of (-BigInteger.base, -1] or
40349 // [1, BigInteger.base). It's not necessary to call this, since the
40350 // other division functions will call it if they are able to.
40351 BigInteger.prototype.divRemSmall = function(n) {
40352 var r;
40353 n = +n;
40354 if (n === 0) {
40355 throw new Error("Divide by zero");
40356 }
40357
40358 var n_s = n < 0 ? -1 : 1;
40359 var sign = this._s * n_s;
40360 n = Math.abs(n);
40361
40362 if (n < 1 || n >= BigInteger_base) {
40363 throw new Error("Argument out of range");
40364 }
40365
40366 if (this._s === 0) {
40367 return [ZERO, ZERO];
40368 }
40369
40370 if (n === 1 || n === -1) {
40371 return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
40372 }
40373
40374 // 2 <= n < BigInteger_base
40375
40376 // divide a single digit by a single digit
40377 if (this._d.length === 1) {
40378 var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
40379 r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
40380 if (sign < 0) {
40381 q = q.negate();
40382 }
40383 if (this._s < 0) {
40384 r = r.negate();
40385 }
40386 return [q, r];
40387 }
40388
40389 var digits = this._d.slice();
40390 var quot = new Array(digits.length);
40391 var part = 0;
40392 var diff = 0;
40393 var i = 0;
40394 var guess;
40395
40396 while (digits.length) {
40397 part = part * BigInteger_base + digits[digits.length - 1];
40398 if (part < n) {
40399 quot[i++] = 0;
40400 digits.pop();
40401 diff = BigInteger_base * diff + part;
40402 continue;
40403 }
40404 if (part === 0) {
40405 guess = 0;
40406 }
40407 else {
40408 guess = (part / n) | 0;
40409 }
40410
40411 var check = n * guess;
40412 diff = part - check;
40413 quot[i++] = guess;
40414 if (!guess) {
40415 digits.pop();
40416 continue;
40417 }
40418
40419 digits.pop();
40420 part = diff;
40421 }
40422
40423 r = new BigInteger([diff], 1, CONSTRUCT);
40424 if (this._s < 0) {
40425 r = r.negate();
40426 }
40427 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
40428 };
40429
40430 /*
40431 Function: isEven
40432 Return true iff *this* is divisible by two.
40433
40434 Note that <BigInteger.ZERO> is even.
40435
40436 Returns:
40437
40438 true if *this* is even, false otherwise.
40439
40440 See Also:
40441
40442 <isOdd>
40443 */
40444 BigInteger.prototype.isEven = function() {
40445 var digits = this._d;
40446 return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
40447 };
40448
40449 /*
40450 Function: isOdd
40451 Return true iff *this* is not divisible by two.
40452
40453 Returns:
40454
40455 true if *this* is odd, false otherwise.
40456
40457 See Also:
40458
40459 <isEven>
40460 */
40461 BigInteger.prototype.isOdd = function() {
40462 return !this.isEven();
40463 };
40464
40465 /*
40466 Function: sign
40467 Get the sign of a <BigInteger>.
40468
40469 Returns:
40470
40471 * -1 if *this* < 0
40472 * 0 if *this* == 0
40473 * +1 if *this* > 0
40474
40475 See Also:
40476
40477 <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
40478 */
40479 BigInteger.prototype.sign = function() {
40480 return this._s;
40481 };
40482
40483 /*
40484 Function: isPositive
40485 Return true iff *this* > 0.
40486
40487 Returns:
40488
40489 true if *this*.compare(<BigInteger.ZERO>) == 1.
40490
40491 See Also:
40492
40493 <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
40494 */
40495 BigInteger.prototype.isPositive = function() {
40496 return this._s > 0;
40497 };
40498
40499 /*
40500 Function: isNegative
40501 Return true iff *this* < 0.
40502
40503 Returns:
40504
40505 true if *this*.compare(<BigInteger.ZERO>) == -1.
40506
40507 See Also:
40508
40509 <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
40510 */
40511 BigInteger.prototype.isNegative = function() {
40512 return this._s < 0;
40513 };
40514
40515 /*
40516 Function: isZero
40517 Return true iff *this* == 0.
40518
40519 Returns:
40520
40521 true if *this*.compare(<BigInteger.ZERO>) == 0.
40522
40523 See Also:
40524
40525 <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
40526 */
40527 BigInteger.prototype.isZero = function() {
40528 return this._s === 0;
40529 };
40530
40531 /*
40532 Function: exp10
40533 Multiply a <BigInteger> by a power of 10.
40534
40535 This is equivalent to, but faster than
40536
40537 > if (n >= 0) {
40538 > return this.multiply(BigInteger("1e" + n));
40539 > }
40540 > else { // n <= 0
40541 > return this.quotient(BigInteger("1e" + -n));
40542 > }
40543
40544 Parameters:
40545
40546 n - The power of 10 to multiply *this* by. *n* is converted to a
40547 javascipt number and must be no greater than <BigInteger.MAX_EXP>
40548 (0x7FFFFFFF), or an exception will be thrown.
40549
40550 Returns:
40551
40552 *this* * (10 ** *n*), truncated to an integer if necessary.
40553
40554 See Also:
40555
40556 <pow>, <multiply>
40557 */
40558 BigInteger.prototype.exp10 = function(n) {
40559 n = +n;
40560 if (n === 0) {
40561 return this;
40562 }
40563 if (Math.abs(n) > Number(MAX_EXP)) {
40564 throw new Error("exponent too large in BigInteger.exp10");
40565 }
40566 // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
40567 if (this._s === 0) {
40568 return ZERO;
40569 }
40570 if (n > 0) {
40571 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
40572
40573 for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
40574 k._d.unshift(0);
40575 }
40576 if (n == 0)
40577 return k;
40578 k._s = 1;
40579 k = k.multiplySingleDigit(Math.pow(10, n));
40580 return (this._s < 0 ? k.negate() : k);
40581 } else if (-n >= this._d.length*BigInteger_base_log10) {
40582 return ZERO;
40583 } else {
40584 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
40585
40586 for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
40587 k._d.shift();
40588 }
40589 return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
40590 }
40591 };
40592
40593 /*
40594 Function: pow
40595 Raise a <BigInteger> to a power.
40596
40597 In this implementation, 0**0 is 1.
40598
40599 Parameters:
40600
40601 n - The exponent to raise *this* by. *n* must be no greater than
40602 <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
40603
40604 Returns:
40605
40606 *this* raised to the *nth* power.
40607
40608 See Also:
40609
40610 <modPow>
40611 */
40612 BigInteger.prototype.pow = function(n) {
40613 if (this.isUnit()) {
40614 if (this._s > 0) {
40615 return this;
40616 }
40617 else {
40618 return BigInteger(n).isOdd() ? this : this.negate();
40619 }
40620 }
40621
40622 n = BigInteger(n);
40623 if (n._s === 0) {
40624 return ONE;
40625 }
40626 else if (n._s < 0) {
40627 if (this._s === 0) {
40628 throw new Error("Divide by zero");
40629 }
40630 else {
40631 return ZERO;
40632 }
40633 }
40634 if (this._s === 0) {
40635 return ZERO;
40636 }
40637 if (n.isUnit()) {
40638 return this;
40639 }
40640
40641 if (n.compareAbs(MAX_EXP) > 0) {
40642 throw new Error("exponent too large in BigInteger.pow");
40643 }
40644 var x = this;
40645 var aux = ONE;
40646 var two = BigInteger.small[2];
40647
40648 while (n.isPositive()) {
40649 if (n.isOdd()) {
40650 aux = aux.multiply(x);
40651 if (n.isUnit()) {
40652 return aux;
40653 }
40654 }
40655 x = x.square();
40656 n = n.quotient(two);
40657 }
40658
40659 return aux;
40660 };
40661
40662 /*
40663 Function: modPow
40664 Raise a <BigInteger> to a power (mod m).
40665
40666 Because it is reduced by a modulus, <modPow> is not limited by
40667 <BigInteger.MAX_EXP> like <pow>.
40668
40669 Parameters:
40670
40671 exponent - The exponent to raise *this* by. Must be positive.
40672 modulus - The modulus.
40673
40674 Returns:
40675
40676 *this* ^ *exponent* (mod *modulus*).
40677
40678 See Also:
40679
40680 <pow>, <mod>
40681 */
40682 BigInteger.prototype.modPow = function(exponent, modulus) {
40683 var result = ONE;
40684 var base = this;
40685
40686 while (exponent.isPositive()) {
40687 if (exponent.isOdd()) {
40688 result = result.multiply(base).remainder(modulus);
40689 }
40690
40691 exponent = exponent.quotient(BigInteger.small[2]);
40692 if (exponent.isPositive()) {
40693 base = base.square().remainder(modulus);
40694 }
40695 }
40696
40697 return result;
40698 };
40699
40700 /*
40701 Function: log
40702 Get the natural logarithm of a <BigInteger> as a native JavaScript number.
40703
40704 This is equivalent to
40705
40706 > Math.log(this.toJSValue())
40707
40708 but handles values outside of the native number range.
40709
40710 Returns:
40711
40712 log( *this* )
40713
40714 See Also:
40715
40716 <toJSValue>
40717 */
40718 BigInteger.prototype.log = function() {
40719 switch (this._s) {
40720 case 0: return -Infinity;
40721 case -1: return NaN;
40722 default: // Fall through.
40723 }
40724
40725 var l = this._d.length;
40726
40727 if (l*BigInteger_base_log10 < 30) {
40728 return Math.log(this.valueOf());
40729 }
40730
40731 var N = Math.ceil(30/BigInteger_base_log10);
40732 var firstNdigits = this._d.slice(l - N);
40733 return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
40734 };
40735
40736 /*
40737 Function: valueOf
40738 Convert a <BigInteger> to a native JavaScript integer.
40739
40740 This is called automatically by JavaScipt to convert a <BigInteger> to a
40741 native value.
40742
40743 Returns:
40744
40745 > parseInt(this.toString(), 10)
40746
40747 See Also:
40748
40749 <toString>, <toJSValue>
40750 */
40751 BigInteger.prototype.valueOf = function() {
40752 return parseInt(this.toString(), 10);
40753 };
40754
40755 /*
40756 Function: toJSValue
40757 Convert a <BigInteger> to a native JavaScript integer.
40758
40759 This is the same as valueOf, but more explicitly named.
40760
40761 Returns:
40762
40763 > parseInt(this.toString(), 10)
40764
40765 See Also:
40766
40767 <toString>, <valueOf>
40768 */
40769 BigInteger.prototype.toJSValue = function() {
40770 return parseInt(this.toString(), 10);
40771 };
40772
40773 var MAX_EXP = BigInteger(0x7FFFFFFF);
40774 // Constant: MAX_EXP
40775 // The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
40776 BigInteger.MAX_EXP = MAX_EXP;
40777
40778 (function() {
40779 function makeUnary(fn) {
40780 return function(a) {
40781 return fn.call(BigInteger(a));
40782 };
40783 }
40784
40785 function makeBinary(fn) {
40786 return function(a, b) {
40787 return fn.call(BigInteger(a), BigInteger(b));
40788 };
40789 }
40790
40791 function makeTrinary(fn) {
40792 return function(a, b, c) {
40793 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
40794 };
40795 }
40796
40797 (function() {
40798 var i, fn;
40799 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
40800 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
40801 var trinary = ["modPow"];
40802
40803 for (i = 0; i < unary.length; i++) {
40804 fn = unary[i];
40805 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
40806 }
40807
40808 for (i = 0; i < binary.length; i++) {
40809 fn = binary[i];
40810 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
40811 }
40812
40813 for (i = 0; i < trinary.length; i++) {
40814 fn = trinary[i];
40815 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
40816 }
40817
40818 BigInteger.exp10 = function(x, n) {
40819 return BigInteger(x).exp10(n);
40820 };
40821 })();
40822 })();
40823
40824 exports.BigInteger = BigInteger;
40825 })(typeof exports !== 'undefined' ? exports : this);
40826 </script>
40827 <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){
40828 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;
40829
40830 },{}],2:[function(require,module,exports){
40831 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;
40832
40833 },{"./scoring":6}],3:[function(require,module,exports){
40834 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(","),
40835 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(","),
40836 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(","),
40837 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(","),
40838 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;
40839
40840 },{}],4:[function(require,module,exports){
40841 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;
40842
40843 },{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){
40844 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;
40845
40846 },{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){
40847 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;
40848
40849 },{"./adjacency_graphs":1}],7:[function(require,module,exports){
40850 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;
40851
40852 },{}]},{},[4])(4)
40853 });
40854 //# sourceMappingURL=zxcvbn.js.map
40855 </script>
40856 <script>/*
40857 * Detects entropy from a string.
40858 *
40859 * Formats include:
40860 * binary [0-1]
40861 * base 6 [0-5]
40862 * dice 6 [1-6]
40863 * decimal [0-9]
40864 * hexadecimal [0-9A-F]
40865 * card [A2-9TJQK][CDHS]
40866 *
40867 * Automatically uses lowest entropy to avoid issues such as interpretting 0101
40868 * as hexadecimal which would be 16 bits when really it's only 4 bits of binary
40869 * entropy.
40870 */
40871
40872 window.Entropy = new (function() {
40873
40874 var TWO = new BigInteger(2);
40875
40876 // matchers returns an array of the matched events for each type of entropy.
40877 // eg
40878 // matchers.binary("010") returns ["0", "1", "0"]
40879 // matchers.binary("a10") returns ["1", "0"]
40880 // matchers.hex("a10") returns ["a", "1", "0"]
40881 var matchers = {
40882 binary: function(str) {
40883 return str.match(/[0-1]/gi) || [];
40884 },
40885 base6: function(str) {
40886 return str.match(/[0-5]/gi) || [];
40887 },
40888 dice: function(str) {
40889 return str.match(/[1-6]/gi) || []; // ie dice numbers
40890 },
40891 base10: function(str) {
40892 return str.match(/[0-9]/gi) || [];
40893 },
40894 hex: function(str) {
40895 return str.match(/[0-9A-F]/gi) || [];
40896 },
40897 card: function(str) {
40898 // Format is NumberSuit, eg
40899 // AH ace of hearts
40900 // 8C eight of clubs
40901 // TD ten of diamonds
40902 // JS jack of spades
40903 // QH queen of hearts
40904 // KC king of clubs
40905 return str.match(/([A2-9TJQK][CDHS])/gi) || [];
40906 }
40907 }
40908
40909 // Convert array of cards from ["ac", "4d", "ks"]
40910 // to numbers between 0 and 51 [0, 16, 51]
40911 function convertCardsToInts(cards) {
40912 var ints = [];
40913 var values = "a23456789tjqk";
40914 var suits = "cdhs";
40915 for (var i=0; i<cards.length; i++) {
40916 var card = cards[i].toLowerCase();
40917 var value = card[0];
40918 var suit = card[1];
40919 var asInt = 13 * suits.indexOf(suit) + values.indexOf(value);
40920 ints.push(asInt);
40921 }
40922 return ints;
40923 }
40924
40925 this.fromString = function(rawEntropyStr) {
40926 // Find type of entropy being used (binary, hex, dice etc)
40927 var base = getBase(rawEntropyStr);
40928 // Convert dice to base6 entropy (ie 1-6 to 0-5)
40929 // This is done by changing all 6s to 0s
40930 if (base.str == "dice") {
40931 var newParts = [];
40932 var newInts = [];
40933 for (var i=0; i<base.parts.length; i++) {
40934 var c = base.parts[i];
40935 if ("12345".indexOf(c) > -1) {
40936 newParts[i] = base.parts[i];
40937 newInts[i] = base.ints[i];
40938 }
40939 else {
40940 newParts[i] = "0";
40941 newInts[i] = 0;
40942 }
40943 }
40944 base.str = "base 6 (dice)";
40945 base.ints = newInts;
40946 base.parts = newParts;
40947 base.matcher = matchers.base6;
40948 }
40949 // Detect empty entropy
40950 if (base.parts.length == 0) {
40951 return {
40952 binaryStr: "",
40953 cleanStr: "",
40954 cleanHtml: "",
40955 base: base,
40956 };
40957 }
40958 // Convert base.ints to BigInteger.
40959 // Due to using unusual bases, eg cards of base52, this is not as simple as
40960 // using BigInteger.parse()
40961 var entropyInt = BigInteger.ZERO;
40962 for (var i=base.ints.length-1; i>=0; i--) {
40963 var thisInt = BigInteger.parse(base.ints[i]);
40964 var power = (base.ints.length - 1) - i;
40965 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
40966 entropyInt = entropyInt.add(additionalEntropy);
40967 }
40968 // Convert entropy to binary
40969 var entropyBin = entropyInt.toString(2);
40970 // If the first integer is small, it must be padded with zeros.
40971 // Otherwise the chance of the first bit being 1 is 100%, which is
40972 // obviously incorrect.
40973 // This is not perfect for non-2^n bases.
40974 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
40975 while (entropyBin.length < expectedBits) {
40976 entropyBin = "0" + entropyBin;
40977 }
40978 // Calculate the number of bits per event
40979 var bitsPerEvent = Math.log2(base.asInt);
40980 // Cards binary must be handled differently, since they're not replaced
40981 if (base.asInt == 52) {
40982 var cardEntropy = processCardEntropy(base.parts);
40983 entropyBin = cardEntropy.binaryStr;
40984 bitsPerEvent = cardEntropy.bitsPerEvent;
40985 }
40986 // Supply a 'filtered' entropy string for display purposes
40987 var entropyClean = base.parts.join("");
40988 var entropyHtml = base.parts.join("");
40989 if (base.asInt == 52) {
40990 entropyClean = base.parts.join(" ").toUpperCase();
40991 entropyClean = entropyClean.replace(/C/g, "\u2663");
40992 entropyClean = entropyClean.replace(/D/g, "\u2666");
40993 entropyClean = entropyClean.replace(/H/g, "\u2665");
40994 entropyClean = entropyClean.replace(/S/g, "\u2660");
40995 entropyHtml = base.parts.join(" ").toUpperCase();
40996 entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>");
40997 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>");
40998 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>");
40999 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>");
41000 }
41001 // Return the result
41002 var e = {
41003 binaryStr: entropyBin,
41004 cleanStr: entropyClean,
41005 cleanHtml: entropyHtml,
41006 bitsPerEvent: bitsPerEvent,
41007 base: base,
41008 }
41009 return e;
41010 }
41011
41012 function getSortedDeck() {
41013 var s = [];
41014 var suits = "CDHS";
41015 var values = "A23456789TJQK";
41016 for (var i=0; i<suits.length; i++) {
41017 for (var j=0; j<values.length; j++) {
41018 s.push(values[j]+suits[i]);
41019 }
41020 }
41021 return s;
41022 }
41023
41024 function getBase(str) {
41025 // Need to get the lowest base for the supplied entropy.
41026 // This prevents interpreting, say, dice rolls as hexadecimal.
41027 var binaryMatches = matchers.binary(str);
41028 var hexMatches = matchers.hex(str);
41029 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
41030 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
41031 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
41032 return {
41033 ints: ints,
41034 parts: binaryMatches,
41035 matcher: matchers.binary,
41036 asInt: 2,
41037 str: "binary",
41038 }
41039 }
41040 var cardMatches = matchers.card(str);
41041 if (cardMatches.length >= hexMatches.length / 2) {
41042 var ints = convertCardsToInts(cardMatches);
41043 return {
41044 ints: ints,
41045 parts: cardMatches,
41046 matcher: matchers.card,
41047 asInt: 52,
41048 str: "card",
41049 }
41050 }
41051 var diceMatches = matchers.dice(str);
41052 if (diceMatches.length == hexMatches.length && hexMatches.length > 0) {
41053 var ints = diceMatches.map(function(i) { return parseInt(i) });
41054 return {
41055 ints: ints,
41056 parts: diceMatches,
41057 matcher: matchers.dice,
41058 asInt: 6,
41059 str: "dice",
41060 }
41061 }
41062 var base6Matches = matchers.base6(str);
41063 if (base6Matches.length == hexMatches.length && hexMatches.length > 0) {
41064 var ints = base6Matches.map(function(i) { return parseInt(i) });
41065 return {
41066 ints: ints,
41067 parts: base6Matches,
41068 matcher: matchers.base6,
41069 asInt: 6,
41070 str: "base 6",
41071 }
41072 }
41073 var base10Matches = matchers.base10(str);
41074 if (base10Matches.length == hexMatches.length && hexMatches.length > 0) {
41075 var ints = base10Matches.map(function(i) { return parseInt(i) });
41076 return {
41077 ints: ints,
41078 parts: base10Matches,
41079 matcher: matchers.base10,
41080 asInt: 10,
41081 str: "base 10",
41082 }
41083 }
41084 var ints = hexMatches.map(function(i) { return parseInt(i, 16) });
41085 return {
41086 ints: ints,
41087 parts: hexMatches,
41088 matcher: matchers.hex,
41089 asInt: 16,
41090 str: "hexadecimal",
41091 }
41092 }
41093
41094 // Assume cards are NOT replaced.
41095 // Additional entropy decreases as more cards are used. This means
41096 // total possible entropy is measured using n!, not base^n.
41097 // eg the second last card can be only one of two, not one of fifty two
41098 // so the added entropy for that card is only one bit at most
41099 function processCardEntropy(cards) {
41100 // Track how many instances of each card have been used, and thus
41101 // how many decks are in use.
41102 var cardCounts = {};
41103 var numberOfDecks = 0;
41104 // Work out number of decks by max(duplicates)
41105 for (var i=0; i<cards.length; i++) {
41106 // Get the card that was drawn
41107 var cardLower = cards[i];
41108 var card = cardLower.toUpperCase();
41109 // Initialize the count for this card if needed
41110 if (!(card in cardCounts)) {
41111 cardCounts[card] = 0;
41112 }
41113 cardCounts[card] += 1;
41114 // See if this is max(duplicates)
41115 if (cardCounts[card] > numberOfDecks) {
41116 numberOfDecks = cardCounts[card];
41117 }
41118 }
41119 // Work out the total number of bits for this many decks
41120 // See http://crypto.stackexchange.com/q/41886
41121 var gainedBits = 0;
41122 // Equivalent of Math.log2(factorial(52*numberOfDecks))
41123 // which becomes infinity for numberOfDecks > 4
41124 for (var i=1; i<=52*numberOfDecks; i++) {
41125 gainedBits = gainedBits + Math.log2(i);
41126 }
41127 var lostBits = 52 * Math.log2(factorial(numberOfDecks));
41128 var maxBits = gainedBits - lostBits;
41129 // Convert the drawn cards to a binary representation.
41130 // The exact technique for doing this is unclear.
41131 // See
41132 // http://crypto.stackexchange.com/a/41896
41133 // "I even doubt that this is well defined (only the average entropy
41134 // is, I believe)."
41135 // See
41136 // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856
41137 // "The binary representation can be the first log(permutations,2) bits
41138 // of the sha-2 hash of the normalized deck string."
41139 //
41140 // In this specific implementation, the first N bits of the hash of the
41141 // normalized cards string is being used. Uppercase, no spaces; eg
41142 // sha256("AH8DQSTC2H")
41143 var totalCards = numberOfDecks * 52;
41144 var percentUsed = cards.length / totalCards;
41145 // Calculate the average number of bits of entropy for the number of
41146 // cards drawn.
41147 var numberOfBits = Math.floor(maxBits * percentUsed);
41148 // Create a normalized string of the selected cards
41149 var normalizedCards = cards.join("").toUpperCase();
41150 // Convert to binary using the SHA256 hash of the normalized cards.
41151 // If the number of bits is more than 256, multiple hashes
41152 // are used until the required number of bits is reached.
41153 var entropyBin = "";
41154 var iterations = 0;
41155 while (entropyBin.length < numberOfBits) {
41156 var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations);
41157 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
41158 for (var i=0; i<hashHex.length; i++) {
41159 var decimal = parseInt(hashHex[i], 16);
41160 var binary = decimal.toString(2);
41161 while (binary.length < 4) {
41162 binary = "0" + binary;
41163 }
41164 entropyBin = entropyBin + binary;
41165 }
41166 iterations = iterations + 1;
41167 }
41168 // Truncate to the appropriate number of bits.
41169 entropyBin = entropyBin.substring(0, numberOfBits);
41170 // Get the number of bits per event
41171 bitsPerEvent = maxBits / totalCards;
41172 return {
41173 binaryStr: entropyBin,
41174 bitsPerEvent: bitsPerEvent,
41175 }
41176 }
41177
41178 // Polyfill for Math.log2
41179 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
41180 Math.log2 = Math.log2 || function(x) {
41181 // The polyfill isn't good enough because of the poor accuracy of
41182 // Math.LOG2E
41183 // log2(8) gave 2.9999999999999996 which when floored causes issues.
41184 // So instead use the BigInteger library to get it right.
41185 return BigInteger.log(x) / BigInteger.log(2);
41186 };
41187
41188 // Depends on BigInteger
41189 function factorial(n) {
41190 if (n == 0) {
41191 return 1;
41192 }
41193 f = BigInteger.ONE;
41194 for (var i=1; i<=n; i++) {
41195 f = f.multiply(new BigInteger(i));
41196 }
41197 return f;
41198 }
41199
41200 })();
41201 </script>
41202 <script>(function() {
41203
41204 // mnemonics is populated as required by getLanguage
41205 var mnemonics = { "english": new Mnemonic("english") };
41206 var mnemonic = mnemonics["english"];
41207 var seed = null;
41208 var bip32RootKey = null;
41209 var bip32ExtendedKey = null;
41210 var network = bitcoin.networks.bitcoin;
41211 var addressRowTemplate = $("#address-row-template");
41212
41213 var showIndex = true;
41214 var showAddress = true;
41215 var showPubKey = true;
41216 var showPrivKey = true;
41217 var showQr = false;
41218
41219 var entropyChangeTimeoutEvent = null;
41220 var phraseChangeTimeoutEvent = null;
41221 var rootKeyChangedTimeoutEvent = null;
41222
41223 var generationProcesses = [];
41224
41225 var DOM = {};
41226 DOM.network = $(".network");
41227 DOM.phraseNetwork = $("#network-phrase");
41228 DOM.useEntropy = $(".use-entropy");
41229 DOM.entropyContainer = $(".entropy-container");
41230 DOM.entropy = $(".entropy");
41231 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
41232 DOM.entropyType = DOM.entropyContainer.find(".type");
41233 DOM.entropyStrength = DOM.entropyContainer.find(".strength");
41234 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
41235 DOM.entropyBits = DOM.entropyContainer.find(".bits");
41236 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
41237 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
41238 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
41239 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
41240 DOM.phrase = $(".phrase");
41241 DOM.passphrase = $(".passphrase");
41242 DOM.generateContainer = $(".generate-container");
41243 DOM.generate = $(".generate");
41244 DOM.seed = $(".seed");
41245 DOM.rootKey = $(".root-key");
41246 DOM.extendedPrivKey = $(".extended-priv-key");
41247 DOM.extendedPubKey = $(".extended-pub-key");
41248 DOM.bip32tab = $("#bip32-tab");
41249 DOM.bip44tab = $("#bip44-tab");
41250 DOM.bip32panel = $("#bip32");
41251 DOM.bip44panel = $("#bip44");
41252 DOM.bip32path = $("#bip32-path");
41253 DOM.bip44path = $("#bip44-path");
41254 DOM.bip44purpose = $("#bip44 .purpose");
41255 DOM.bip44coin = $("#bip44 .coin");
41256 DOM.bip44account = $("#bip44 .account");
41257 DOM.bip44accountXprv = $("#bip44 .account-xprv");
41258 DOM.bip44accountXpub = $("#bip44 .account-xpub");
41259 DOM.bip44change = $("#bip44 .change");
41260 DOM.generatedStrength = $(".generate-container .strength");
41261 DOM.hardenedAddresses = $(".hardened-addresses");
41262 DOM.addresses = $(".addresses");
41263 DOM.rowsToAdd = $(".rows-to-add");
41264 DOM.more = $(".more");
41265 DOM.feedback = $(".feedback");
41266 DOM.tab = $(".derivation-type a");
41267 DOM.indexToggle = $(".index-toggle");
41268 DOM.addressToggle = $(".address-toggle");
41269 DOM.publicKeyToggle = $(".public-key-toggle");
41270 DOM.privateKeyToggle = $(".private-key-toggle");
41271 DOM.languages = $(".languages a");
41272 DOM.qrContainer = $(".qr-container");
41273 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
41274 DOM.qrImage = DOM.qrContainer.find(".qr-image");
41275 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
41276 DOM.showQrEls = $("[data-show-qr]");
41277
41278 function init() {
41279 // Events
41280 DOM.network.on("change", networkChanged);
41281 DOM.useEntropy.on("change", setEntropyVisibility);
41282 DOM.entropy.on("input", delayedEntropyChanged);
41283 DOM.entropyMnemonicLength.on("change", entropyChanged);
41284 DOM.phrase.on("input", delayedPhraseChanged);
41285 DOM.passphrase.on("input", delayedPhraseChanged);
41286 DOM.generate.on("click", generateClicked);
41287 DOM.more.on("click", showMore);
41288 DOM.rootKey.on("input", delayedRootKeyChanged);
41289 DOM.bip32path.on("input", calcForDerivationPath);
41290 DOM.bip44purpose.on("input", calcForDerivationPath);
41291 DOM.bip44coin.on("input", calcForDerivationPath);
41292 DOM.bip44account.on("input", calcForDerivationPath);
41293 DOM.bip44change.on("input", calcForDerivationPath);
41294 DOM.tab.on("shown.bs.tab", calcForDerivationPath);
41295 DOM.hardenedAddresses.on("change", calcForDerivationPath);
41296 DOM.indexToggle.on("click", toggleIndexes);
41297 DOM.addressToggle.on("click", toggleAddresses);
41298 DOM.publicKeyToggle.on("click", togglePublicKeys);
41299 DOM.privateKeyToggle.on("click", togglePrivateKeys);
41300 DOM.languages.on("click", languageChanged);
41301 setQrEvents(DOM.showQrEls);
41302 disableForms();
41303 hidePending();
41304 hideValidationError();
41305 populateNetworkSelect();
41306 }
41307
41308 // Event handlers
41309
41310 function networkChanged(e) {
41311 var networkIndex = e.target.value;
41312 networks[networkIndex].onSelect();
41313 if (seed != null) {
41314 phraseChanged();
41315 }
41316 else {
41317 rootKeyChanged();
41318 }
41319 }
41320
41321 function setEntropyVisibility() {
41322 if (isUsingOwnEntropy()) {
41323 DOM.entropyContainer.removeClass("hidden");
41324 DOM.generateContainer.addClass("hidden");
41325 DOM.phrase.prop("readonly", true);
41326 DOM.entropy.focus();
41327 entropyChanged();
41328 }
41329 else {
41330 DOM.entropyContainer.addClass("hidden");
41331 DOM.generateContainer.removeClass("hidden");
41332 DOM.phrase.prop("readonly", false);
41333 hidePending();
41334 }
41335 }
41336
41337 function delayedPhraseChanged() {
41338 hideValidationError();
41339 showPending();
41340 if (phraseChangeTimeoutEvent != null) {
41341 clearTimeout(phraseChangeTimeoutEvent);
41342 }
41343 phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400);
41344 }
41345
41346 function phraseChanged() {
41347 showPending();
41348 hideValidationError();
41349 setMnemonicLanguage();
41350 // Get the mnemonic phrase
41351 var phrase = DOM.phrase.val();
41352 var errorText = findPhraseErrors(phrase);
41353 if (errorText) {
41354 showValidationError(errorText);
41355 return;
41356 }
41357 // Calculate and display
41358 var passphrase = DOM.passphrase.val();
41359 calcBip32RootKeyFromSeed(phrase, passphrase);
41360 calcForDerivationPath();
41361 hidePending();
41362 }
41363
41364 function delayedEntropyChanged() {
41365 hideValidationError();
41366 showPending();
41367 if (entropyChangeTimeoutEvent != null) {
41368 clearTimeout(entropyChangeTimeoutEvent);
41369 }
41370 entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400);
41371 }
41372
41373 function entropyChanged() {
41374 // If blank entropy, clear mnemonic, addresses, errors
41375 if (DOM.entropy.val().trim().length == 0) {
41376 clearDisplay();
41377 clearEntropyFeedback();
41378 DOM.phrase.val("");
41379 showValidationError("Blank entropy");
41380 return;
41381 }
41382 // Get the current phrase to detect changes
41383 var phrase = DOM.phrase.val();
41384 // Set the phrase from the entropy
41385 setMnemonicFromEntropy();
41386 // Recalc addresses if the phrase has changed
41387 var newPhrase = DOM.phrase.val();
41388 if (newPhrase != phrase) {
41389 if (newPhrase.length == 0) {
41390 clearDisplay();
41391 }
41392 else {
41393 phraseChanged();
41394 }
41395 }
41396 else {
41397 hidePending();
41398 }
41399 }
41400
41401 function delayedRootKeyChanged() {
41402 // Warn if there is an existing mnemonic or passphrase.
41403 if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
41404 if (!confirm("This will clear existing mnemonic and passphrase")) {
41405 DOM.rootKey.val(bip32RootKey);
41406 return
41407 }
41408 }
41409 hideValidationError();
41410 showPending();
41411 // Clear existing mnemonic and passphrase
41412 DOM.phrase.val("");
41413 DOM.passphrase.val("");
41414 seed = null;
41415 if (rootKeyChangedTimeoutEvent != null) {
41416 clearTimeout(rootKeyChangedTimeoutEvent);
41417 }
41418 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
41419 }
41420
41421 function rootKeyChanged() {
41422 showPending();
41423 hideValidationError();
41424 // Validate the root key TODO
41425 var rootKeyBase58 = DOM.rootKey.val();
41426 var errorText = validateRootKey(rootKeyBase58);
41427 if (errorText) {
41428 showValidationError(errorText);
41429 return;
41430 }
41431 // Calculate and display
41432 calcBip32RootKeyFromBase58(rootKeyBase58);
41433 calcForDerivationPath();
41434 }
41435
41436 function calcForDerivationPath() {
41437 showPending();
41438 clearAddressesList();
41439 hideValidationError();
41440 // Get the derivation path
41441 var derivationPath = getDerivationPath();
41442 var errorText = findDerivationPathErrors(derivationPath);
41443 if (errorText) {
41444 showValidationError(errorText);
41445 return;
41446 }
41447 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
41448 if (bip44TabSelected()) {
41449 displayBip44Info();
41450 }
41451 displayBip32Info();
41452 hidePending();
41453 }
41454
41455 function generateClicked() {
41456 if (isUsingOwnEntropy()) {
41457 return;
41458 }
41459 clearDisplay();
41460 showPending();
41461 setTimeout(function() {
41462 setMnemonicLanguage();
41463 var phrase = generateRandomPhrase();
41464 if (!phrase) {
41465 return;
41466 }
41467 phraseChanged();
41468 }, 50);
41469 }
41470
41471 function languageChanged() {
41472 setTimeout(function() {
41473 setMnemonicLanguage();
41474 if (DOM.phrase.val().length > 0) {
41475 var newPhrase = convertPhraseToNewLanguage();
41476 DOM.phrase.val(newPhrase);
41477 phraseChanged();
41478 }
41479 else {
41480 DOM.generate.trigger("click");
41481 }
41482 }, 50);
41483 }
41484
41485 function toggleIndexes() {
41486 showIndex = !showIndex;
41487 $("td.index span").toggleClass("invisible");
41488 }
41489
41490 function toggleAddresses() {
41491 showAddress = !showAddress;
41492 $("td.address span").toggleClass("invisible");
41493 }
41494
41495 function togglePublicKeys() {
41496 showPubKey = !showPubKey;
41497 $("td.pubkey span").toggleClass("invisible");
41498 }
41499
41500 function togglePrivateKeys() {
41501 showPrivKey = !showPrivKey;
41502 $("td.privkey span").toggleClass("invisible");
41503 }
41504
41505 // Private methods
41506
41507 function generateRandomPhrase() {
41508 if (!hasStrongRandom()) {
41509 var errorText = "This browser does not support strong randomness";
41510 showValidationError(errorText);
41511 return;
41512 }
41513 var numWords = parseInt(DOM.generatedStrength.val());
41514 var strength = numWords / 3 * 32;
41515 var words = mnemonic.generate(strength);
41516 DOM.phrase.val(words);
41517 return words;
41518 }
41519
41520 function calcBip32RootKeyFromSeed(phrase, passphrase) {
41521 seed = mnemonic.toSeed(phrase, passphrase);
41522 bip32RootKey = bitcoin.HDNode.fromSeedHex(seed, network);
41523 }
41524
41525 function calcBip32RootKeyFromBase58(rootKeyBase58) {
41526 bip32RootKey = bitcoin.HDNode.fromBase58(rootKeyBase58, network);
41527 }
41528
41529 function calcBip32ExtendedKey(path) {
41530 // Check there's a root key to derive from
41531 if (!bip32RootKey) {
41532 return bip32RootKey;
41533 }
41534 var extendedKey = bip32RootKey;
41535 // Derive the key from the path
41536 var pathBits = path.split("/");
41537 for (var i=0; i<pathBits.length; i++) {
41538 var bit = pathBits[i];
41539 var index = parseInt(bit);
41540 if (isNaN(index)) {
41541 continue;
41542 }
41543 var hardened = bit[bit.length-1] == "'";
41544 var isPriv = "privKey" in extendedKey;
41545 var invalidDerivationPath = hardened && !isPriv;
41546 if (invalidDerivationPath) {
41547 extendedKey = null;
41548 }
41549 else if (hardened) {
41550 extendedKey = extendedKey.deriveHardened(index);
41551 }
41552 else {
41553 extendedKey = extendedKey.derive(index);
41554 }
41555 }
41556 return extendedKey
41557 }
41558
41559 function showValidationError(errorText) {
41560 DOM.feedback
41561 .text(errorText)
41562 .show();
41563 }
41564
41565 function hideValidationError() {
41566 DOM.feedback
41567 .text("")
41568 .hide();
41569 }
41570
41571 function findPhraseErrors(phrase) {
41572 // Preprocess the words
41573 phrase = mnemonic.normalizeString(phrase);
41574 var words = phraseToWordArray(phrase);
41575 // Detect blank phrase
41576 if (words.length == 0) {
41577 return "Blank mnemonic";
41578 }
41579 // Check each word
41580 for (var i=0; i<words.length; i++) {
41581 var word = words[i];
41582 var language = getLanguage();
41583 if (WORDLISTS[language].indexOf(word) == -1) {
41584 console.log("Finding closest match to " + word);
41585 var nearestWord = findNearestWord(word);
41586 return word + " not in wordlist, did you mean " + nearestWord + "?";
41587 }
41588 }
41589 // Check the words are valid
41590 var properPhrase = wordArrayToPhrase(words);
41591 var isValid = mnemonic.check(properPhrase);
41592 if (!isValid) {
41593 return "Invalid mnemonic";
41594 }
41595 return false;
41596 }
41597
41598 function validateRootKey(rootKeyBase58) {
41599 try {
41600 bitcoin.HDNode.fromBase58(rootKeyBase58);
41601 }
41602 catch (e) {
41603 return "Invalid root key";
41604 }
41605 return "";
41606 }
41607
41608 function getDerivationPath() {
41609 if (bip44TabSelected()) {
41610 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
41611 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
41612 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
41613 var change = parseIntNoNaN(DOM.bip44change.val(), 0);
41614 var path = "m/";
41615 path += purpose + "'/";
41616 path += coin + "'/";
41617 path += account + "'/";
41618 path += change;
41619 DOM.bip44path.val(path);
41620 var derivationPath = DOM.bip44path.val();
41621 console.log("Using derivation path from BIP44 tab: " + derivationPath);
41622 return derivationPath;
41623 }
41624 else if (bip32TabSelected()) {
41625 var derivationPath = DOM.bip32path.val();
41626 console.log("Using derivation path from BIP32 tab: " + derivationPath);
41627 return derivationPath;
41628 }
41629 else {
41630 console.log("Unknown derivation path");
41631 }
41632 }
41633
41634 function findDerivationPathErrors(path) {
41635 // TODO is not perfect but is better than nothing
41636 // Inspired by
41637 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors
41638 // and
41639 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys
41640 var maxDepth = 255; // TODO verify this!!
41641 var maxIndexValue = Math.pow(2, 31); // TODO verify this!!
41642 if (path[0] != "m") {
41643 return "First character must be 'm'";
41644 }
41645 if (path.length > 1) {
41646 if (path[1] != "/") {
41647 return "Separator must be '/'";
41648 }
41649 var indexes = path.split("/");
41650 if (indexes.length > maxDepth) {
41651 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
41652 }
41653 for (var depth = 1; depth<indexes.length; depth++) {
41654 var index = indexes[depth];
41655 var invalidChars = index.replace(/^[0-9]+'?$/g, "")
41656 if (invalidChars.length > 0) {
41657 return "Invalid characters " + invalidChars + " found at depth " + depth;
41658 }
41659 var indexValue = parseInt(index.replace("'", ""));
41660 if (isNaN(depth)) {
41661 return "Invalid number at depth " + depth;
41662 }
41663 if (indexValue > maxIndexValue) {
41664 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
41665 }
41666 }
41667 }
41668 // Check root key exists or else derivation path is useless!
41669 if (!bip32RootKey) {
41670 return "No root key";
41671 }
41672 // Check no hardened derivation path when using xpub keys
41673 var hardened = path.indexOf("'") > -1;
41674 var isXpubkey = !("privKey" in bip32RootKey);
41675 if (hardened && isXpubkey) {
41676 return "Hardened derivation path is invalid with xpub key";
41677 }
41678 return false;
41679 }
41680
41681 function displayBip44Info() {
41682 // Get the derivation path for the account
41683 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
41684 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
41685 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
41686 var path = "m/";
41687 path += purpose + "'/";
41688 path += coin + "'/";
41689 path += account + "'/";
41690 // Calculate the account extended keys
41691 var accountExtendedKey = calcBip32ExtendedKey(path);
41692 var accountXprv = accountExtendedKey.toBase58();
41693 var accountXpub = accountExtendedKey.toBase58(false);
41694 // Display the extended keys
41695 DOM.bip44accountXprv.val(accountXprv);
41696 DOM.bip44accountXpub.val(accountXpub);
41697 }
41698
41699 function displayBip32Info() {
41700 // Display the key
41701 DOM.seed.val(seed);
41702 var rootKey = bip32RootKey.toBase58();
41703 DOM.rootKey.val(rootKey);
41704 var xprvkeyB58 = "NA";
41705 if (bip32ExtendedKey.privKey) {
41706 xprvkeyB58 = bip32ExtendedKey.toBase58();
41707 }
41708 var extendedPrivKey = xprvkeyB58;
41709 DOM.extendedPrivKey.val(extendedPrivKey);
41710 var extendedPubKey = bip32ExtendedKey.toBase58(false);
41711 DOM.extendedPubKey.val(extendedPubKey);
41712 // Display the addresses and privkeys
41713 clearAddressesList();
41714 displayAddresses(0, 20);
41715 }
41716
41717 function displayAddresses(start, total) {
41718 generationProcesses.push(new (function() {
41719
41720 var rows = [];
41721
41722 this.stop = function() {
41723 for (var i=0; i<rows.length; i++) {
41724 rows[i].shouldGenerate = false;
41725 }
41726 }
41727
41728 for (var i=0; i<total; i++) {
41729 var index = i + start;
41730 rows.push(new TableRow(index));
41731 }
41732
41733 })());
41734 }
41735
41736 function TableRow(index) {
41737
41738 var self = this;
41739 this.shouldGenerate = true;
41740 var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
41741
41742 function init() {
41743 calculateValues();
41744 }
41745
41746 function calculateValues() {
41747 setTimeout(function() {
41748 if (!self.shouldGenerate) {
41749 return;
41750 }
41751 var key = "";
41752 if (useHardenedAddresses) {
41753 key = bip32ExtendedKey.deriveHardened(index);
41754 }
41755 else {
41756 key = bip32ExtendedKey.derive(index);
41757 }
41758 var address = key.getAddress().toString();
41759 var privkey = "NA";
41760 if (key.privKey) {
41761 privkey = key.privKey.toWIF(network);
41762 }
41763 var pubkey = key.pubKey.toHex();
41764 var indexText = getDerivationPath() + "/" + index;
41765 if (useHardenedAddresses) {
41766 indexText = indexText + "'";
41767 }
41768 // Ethereum values are different
41769 if (networks[DOM.network.val()].name == "Ethereum") {
41770 var privKeyBuffer = key.privKey.d.toBuffer();
41771 privkey = privKeyBuffer.toString('hex');
41772 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
41773 var hexAddress = addressBuffer.toString('hex');
41774 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
41775 address = ethUtil.addHexPrefix(checksumAddress);
41776 }
41777 addAddressToList(indexText, address, pubkey, privkey);
41778 }, 50)
41779 }
41780
41781 init();
41782
41783 }
41784
41785 function showMore() {
41786 var start = DOM.addresses.children().length;
41787 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
41788 if (isNaN(rowsToAdd)) {
41789 rowsToAdd = 20;
41790 DOM.rowsToAdd.val("20");
41791 }
41792 if (rowsToAdd > 200) {
41793 var msg = "Generating " + rowsToAdd + " rows could take a while. ";
41794 msg += "Do you want to continue?";
41795 if (!confirm(msg)) {
41796 return;
41797 }
41798 }
41799 displayAddresses(start, rowsToAdd);
41800 }
41801
41802 function clearDisplay() {
41803 clearAddressesList();
41804 clearKey();
41805 hideValidationError();
41806 }
41807
41808 function clearAddressesList() {
41809 DOM.addresses.empty();
41810 stopGenerating();
41811 }
41812
41813 function stopGenerating() {
41814 while (generationProcesses.length > 0) {
41815 var generation = generationProcesses.shift();
41816 generation.stop();
41817 }
41818 }
41819
41820 function clearKey() {
41821 DOM.rootKey.val("");
41822 DOM.extendedPrivKey.val("");
41823 DOM.extendedPubKey.val("");
41824 }
41825
41826 function addAddressToList(indexText, address, pubkey, privkey) {
41827 var row = $(addressRowTemplate.html());
41828 // Elements
41829 var indexCell = row.find(".index span");
41830 var addressCell = row.find(".address span");
41831 var pubkeyCell = row.find(".pubkey span");
41832 var privkeyCell = row.find(".privkey span");
41833 // Content
41834 indexCell.text(indexText);
41835 addressCell.text(address);
41836 pubkeyCell.text(pubkey);
41837 privkeyCell.text(privkey);
41838 // Visibility
41839 if (!showIndex) {
41840 indexCell.addClass("invisible");
41841 }
41842 if (!showAddress) {
41843 addressCell.addClass("invisible");
41844 }
41845 if (!showPubKey) {
41846 pubkeyCell.addClass("invisible");
41847 }
41848 if (!showPrivKey) {
41849 privkeyCell.addClass("invisible");
41850 }
41851 DOM.addresses.append(row);
41852 var rowShowQrEls = row.find("[data-show-qr]");
41853 setQrEvents(rowShowQrEls);
41854 }
41855
41856 function hasStrongRandom() {
41857 return 'crypto' in window && window['crypto'] !== null;
41858 }
41859
41860 function disableForms() {
41861 $("form").on("submit", function(e) {
41862 e.preventDefault();
41863 });
41864 }
41865
41866 function parseIntNoNaN(val, defaultVal) {
41867 var v = parseInt(val);
41868 if (isNaN(v)) {
41869 return defaultVal;
41870 }
41871 return v;
41872 }
41873
41874 function showPending() {
41875 DOM.feedback
41876 .text("Calculating...")
41877 .show();
41878 }
41879
41880 function findNearestWord(word) {
41881 var language = getLanguage();
41882 var words = WORDLISTS[language];
41883 var minDistance = 99;
41884 var closestWord = words[0];
41885 for (var i=0; i<words.length; i++) {
41886 var comparedTo = words[i];
41887 if (comparedTo.indexOf(word) == 0) {
41888 return comparedTo;
41889 }
41890 var distance = Levenshtein.get(word, comparedTo);
41891 if (distance < minDistance) {
41892 closestWord = comparedTo;
41893 minDistance = distance;
41894 }
41895 }
41896 return closestWord;
41897 }
41898
41899 function hidePending() {
41900 DOM.feedback
41901 .text("")
41902 .hide();
41903 }
41904
41905 function populateNetworkSelect() {
41906 for (var i=0; i<networks.length; i++) {
41907 var network = networks[i];
41908 var option = $("<option>");
41909 option.attr("value", i);
41910 option.text(network.name);
41911 DOM.phraseNetwork.append(option);
41912 }
41913 }
41914
41915 function getLanguage() {
41916 var defaultLanguage = "english";
41917 // Try to get from existing phrase
41918 var language = getLanguageFromPhrase();
41919 // Try to get from url if not from phrase
41920 if (language.length == 0) {
41921 language = getLanguageFromUrl();
41922 }
41923 // Default to English if no other option
41924 if (language.length == 0) {
41925 language = defaultLanguage;
41926 }
41927 return language;
41928 }
41929
41930 function getLanguageFromPhrase(phrase) {
41931 // Check if how many words from existing phrase match a language.
41932 var language = "";
41933 if (!phrase) {
41934 phrase = DOM.phrase.val();
41935 }
41936 if (phrase.length > 0) {
41937 var words = phraseToWordArray(phrase);
41938 var languageMatches = {};
41939 for (l in WORDLISTS) {
41940 // Track how many words match in this language
41941 languageMatches[l] = 0;
41942 for (var i=0; i<words.length; i++) {
41943 var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1;
41944 if (wordInLanguage) {
41945 languageMatches[l]++;
41946 }
41947 }
41948 // Find languages with most word matches.
41949 // This is made difficult due to commonalities between Chinese
41950 // simplified vs traditional.
41951 var mostMatches = 0;
41952 var mostMatchedLanguages = [];
41953 for (var l in languageMatches) {
41954 var numMatches = languageMatches[l];
41955 if (numMatches > mostMatches) {
41956 mostMatches = numMatches;
41957 mostMatchedLanguages = [l];
41958 }
41959 else if (numMatches == mostMatches) {
41960 mostMatchedLanguages.push(l);
41961 }
41962 }
41963 }
41964 if (mostMatchedLanguages.length > 0) {
41965 // Use first language and warn if multiple detected
41966 language = mostMatchedLanguages[0];
41967 if (mostMatchedLanguages.length > 1) {
41968 console.warn("Multiple possible languages");
41969 console.warn(mostMatchedLanguages);
41970 }
41971 }
41972 }
41973 return language;
41974 }
41975
41976 function getLanguageFromUrl() {
41977 for (var language in WORDLISTS) {
41978 if (window.location.hash.indexOf(language) > -1) {
41979 return language;
41980 }
41981 }
41982 return "";
41983 }
41984
41985 function setMnemonicLanguage() {
41986 var language = getLanguage();
41987 // Load the bip39 mnemonic generator for this language if required
41988 if (!(language in mnemonics)) {
41989 mnemonics[language] = new Mnemonic(language);
41990 }
41991 mnemonic = mnemonics[language];
41992 }
41993
41994 function convertPhraseToNewLanguage() {
41995 var oldLanguage = getLanguageFromPhrase();
41996 var newLanguage = getLanguageFromUrl();
41997 var oldPhrase = DOM.phrase.val();
41998 var oldWords = phraseToWordArray(oldPhrase);
41999 var newWords = [];
42000 for (var i=0; i<oldWords.length; i++) {
42001 var oldWord = oldWords[i];
42002 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
42003 var newWord = WORDLISTS[newLanguage][index];
42004 newWords.push(newWord);
42005 }
42006 newPhrase = wordArrayToPhrase(newWords);
42007 return newPhrase;
42008 }
42009
42010 // TODO look at jsbip39 - mnemonic.splitWords
42011 function phraseToWordArray(phrase) {
42012 var words = phrase.split(/\s/g);
42013 var noBlanks = [];
42014 for (var i=0; i<words.length; i++) {
42015 var word = words[i];
42016 if (word.length > 0) {
42017 noBlanks.push(word);
42018 }
42019 }
42020 return noBlanks;
42021 }
42022
42023 // TODO look at jsbip39 - mnemonic.joinWords
42024 function wordArrayToPhrase(words) {
42025 var phrase = words.join(" ");
42026 var language = getLanguageFromPhrase(phrase);
42027 if (language == "japanese") {
42028 phrase = words.join("\u3000");
42029 }
42030 return phrase;
42031 }
42032
42033 function isUsingOwnEntropy() {
42034 return DOM.useEntropy.prop("checked");
42035 }
42036
42037 function setMnemonicFromEntropy() {
42038 clearEntropyFeedback();
42039 // Get entropy value
42040 var entropyStr = DOM.entropy.val();
42041 // Work out minimum base for entropy
42042 var entropy = Entropy.fromString(entropyStr);
42043 if (entropy.binaryStr.length == 0) {
42044 return;
42045 }
42046 // Show entropy details
42047 showEntropyFeedback(entropy);
42048 // Use entropy hash if not using raw entropy
42049 var bits = entropy.binaryStr;
42050 var mnemonicLength = DOM.entropyMnemonicLength.val();
42051 if (mnemonicLength != "raw") {
42052 // Get bits by hashing entropy with SHA256
42053 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
42054 var hex = sjcl.codec.hex.fromBits(hash);
42055 bits = BigInteger.parse(hex, 16).toString(2);
42056 while (bits.length % 256 != 0) {
42057 bits = "0" + bits;
42058 }
42059 // Truncate hash to suit number of words
42060 mnemonicLength = parseInt(mnemonicLength);
42061 var numberOfBits = 32 * mnemonicLength / 3;
42062 bits = bits.substring(0, numberOfBits);
42063 }
42064 // Discard trailing entropy
42065 var bitsToUse = Math.floor(bits.length / 32) * 32;
42066 var start = bits.length - bitsToUse;
42067 var binaryStr = bits.substring(start);
42068 // Convert entropy string to numeric array
42069 var entropyArr = [];
42070 for (var i=0; i<binaryStr.length / 8; i++) {
42071 var byteAsBits = binaryStr.substring(i*8, i*8+8);
42072 var entropyByte = parseInt(byteAsBits, 2);
42073 entropyArr.push(entropyByte)
42074 }
42075 // Convert entropy array to mnemonic
42076 var phrase = mnemonic.toMnemonic(entropyArr);
42077 // Set the mnemonic in the UI
42078 DOM.phrase.val(phrase);
42079 }
42080
42081 function clearEntropyFeedback() {
42082 DOM.entropyStrength.text("...");
42083 DOM.entropyType.text("");
42084 DOM.entropyWordCount.text("0");
42085 DOM.entropyEventCount.text("0");
42086 DOM.entropyBitsPerEvent.text("0");
42087 DOM.entropyBits.text("0");
42088 DOM.entropyFiltered.html("&nbsp;");
42089 DOM.entropyBinary.html("&nbsp;");
42090 }
42091
42092 function showEntropyFeedback(entropy) {
42093 var numberOfBits = entropy.binaryStr.length;
42094 var strength = "extremely weak";
42095 if (numberOfBits >= 64) {
42096 strength = "very weak";
42097 }
42098 if (numberOfBits >= 96) {
42099 strength = "weak";
42100 }
42101 if (numberOfBits >= 128) {
42102 strength = "strong";
42103 }
42104 if (numberOfBits >= 160) {
42105 strength = "very strong";
42106 }
42107 if (numberOfBits >= 192) {
42108 strength = "extremely strong";
42109 }
42110 // If time to crack is less than one day, and password is considered
42111 // strong or better based on the number of bits, rename strength to
42112 // 'easily cracked'.
42113 try {
42114 var z = zxcvbn(entropy.base.parts.join(""));
42115 var timeToCrack = z.crack_times_seconds.offline_fast_hashing_1e10_per_second;
42116 if (timeToCrack < 86400 && entropy.binaryStr.length >= 128) {
42117 strength = "easily cracked";
42118 if (z.feedback.warning != "") {
42119 strength = strength + " - " + z.feedback.warning;
42120 };
42121 }
42122 }
42123 catch (e) {
42124 strength = "unknown";
42125 console.log("Error detecting entropy strength with zxcvbn:");
42126 console.log(e);
42127 }
42128 var entropyTypeStr = getEntropyTypeStr(entropy);
42129 var wordCount = Math.floor(numberOfBits / 32) * 3;
42130 var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
42131 DOM.entropyFiltered.html(entropy.cleanHtml);
42132 DOM.entropyType.text(entropyTypeStr);
42133 DOM.entropyStrength.text(strength);
42134 DOM.entropyEventCount.text(entropy.base.ints.length);
42135 DOM.entropyBits.text(numberOfBits);
42136 DOM.entropyWordCount.text(wordCount);
42137 DOM.entropyBinary.text(entropy.binaryStr);
42138 DOM.entropyBitsPerEvent.text(bitsPerEvent);
42139 }
42140
42141 function getEntropyTypeStr(entropy) {
42142 var typeStr = entropy.base.str;
42143 // Add some detail if these are cards
42144 if (entropy.base.asInt == 52) {
42145 var cardDetail = []; // array of message strings
42146 // Detect duplicates
42147 var dupes = [];
42148 var dupeTracker = {};
42149 for (var i=0; i<entropy.base.parts.length; i++) {
42150 var card = entropy.base.parts[i];
42151 var cardUpper = card.toUpperCase();
42152 if (cardUpper in dupeTracker) {
42153 dupes.push(card);
42154 }
42155 dupeTracker[cardUpper] = true;
42156 }
42157 if (dupes.length > 0) {
42158 var dupeWord = "duplicates";
42159 if (dupes.length == 1) {
42160 dupeWord = "duplicate";
42161 }
42162 var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" ");
42163 if (dupes.length > 3) {
42164 msg += "...";
42165 }
42166 cardDetail.push(msg);
42167 }
42168 // Detect full deck
42169 var uniqueCards = [];
42170 for (var uniqueCard in dupeTracker) {
42171 uniqueCards.push(uniqueCard);
42172 }
42173 if (uniqueCards.length == 52) {
42174 cardDetail.unshift("full deck");
42175 }
42176 // Detect missing cards
42177 var values = "A23456789TJQK";
42178 var suits = "CDHS";
42179 var missingCards = [];
42180 for (var i=0; i<suits.length; i++) {
42181 for (var j=0; j<values.length; j++) {
42182 var card = values[j] + suits[i];
42183 if (!(card in dupeTracker)) {
42184 missingCards.push(card);
42185 }
42186 }
42187 }
42188 // Display missing cards if six or less, ie clearly going for full deck
42189 if (missingCards.length > 0 && missingCards.length <= 6) {
42190 var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" ");
42191 if (missingCards.length > 3) {
42192 msg += "...";
42193 }
42194 cardDetail.push(msg);
42195 }
42196 // Add card details to typeStr
42197 if (cardDetail.length > 0) {
42198 typeStr += " (" + cardDetail.join(", ") + ")";
42199 }
42200 }
42201 return typeStr;
42202 }
42203
42204 function setQrEvents(els) {
42205 els.on("mouseenter", createQr);
42206 els.on("mouseleave", destroyQr);
42207 els.on("click", toggleQr);
42208 }
42209
42210 function createQr(e) {
42211 var content = e.target.textContent || e.target.value;
42212 if (content) {
42213 var size = 130;
42214 DOM.qrImage.qrcode({width: size, height: size, text: content});
42215 if (!showQr) {
42216 DOM.qrHider.addClass("hidden");
42217 }
42218 else {
42219 DOM.qrHider.removeClass("hidden");
42220 }
42221 DOM.qrContainer.removeClass("hidden");
42222 }
42223 }
42224
42225 function destroyQr() {
42226 DOM.qrImage.text("");
42227 DOM.qrContainer.addClass("hidden");
42228 }
42229
42230 function toggleQr() {
42231 showQr = !showQr;
42232 DOM.qrHider.toggleClass("hidden");
42233 DOM.qrHint.toggleClass("hidden");
42234 }
42235
42236 function bip44TabSelected() {
42237 return DOM.bip44tab.hasClass("active");
42238 }
42239
42240 function bip32TabSelected() {
42241 return DOM.bip32tab.hasClass("active");
42242 }
42243
42244 var networks = [
42245 {
42246 name: "Bitcoin",
42247 onSelect: function() {
42248 network = bitcoin.networks.bitcoin;
42249 DOM.bip44coin.val(0);
42250 },
42251 },
42252 {
42253 name: "Bitcoin Testnet",
42254 onSelect: function() {
42255 network = bitcoin.networks.testnet;
42256 DOM.bip44coin.val(1);
42257 },
42258 },
42259 {
42260 name: "Litecoin",
42261 onSelect: function() {
42262 network = bitcoin.networks.litecoin;
42263 DOM.bip44coin.val(2);
42264 },
42265 },
42266 {
42267 name: "Dogecoin",
42268 onSelect: function() {
42269 network = bitcoin.networks.dogecoin;
42270 DOM.bip44coin.val(3);
42271 },
42272 },
42273 {
42274 name: "ShadowCash",
42275 onSelect: function() {
42276 network = bitcoin.networks.shadow;
42277 DOM.bip44coin.val(35);
42278 },
42279 },
42280 {
42281 name: "ShadowCash Testnet",
42282 onSelect: function() {
42283 network = bitcoin.networks.shadowtn;
42284 DOM.bip44coin.val(1);
42285 },
42286 },
42287 {
42288 name: "Viacoin",
42289 onSelect: function() {
42290 network = bitcoin.networks.viacoin;
42291 DOM.bip44coin.val(14);
42292 },
42293 },
42294 {
42295 name: "Viacoin Testnet",
42296 onSelect: function() {
42297 network = bitcoin.networks.viacointestnet;
42298 DOM.bip44coin.val(1);
42299 },
42300 },
42301 {
42302 name: "Jumbucks",
42303 onSelect: function() {
42304 network = bitcoin.networks.jumbucks;
42305 DOM.bip44coin.val(26);
42306 },
42307 },
42308 {
42309 name: "CLAM",
42310 onSelect: function() {
42311 network = bitcoin.networks.clam;
42312 DOM.bip44coin.val(23);
42313 },
42314 },
42315 {
42316 name: "DASH",
42317 onSelect: function() {
42318 network = bitcoin.networks.dash;
42319 DOM.bip44coin.val(5);
42320 },
42321 },
42322 {
42323 name: "Namecoin",
42324 onSelect: function() {
42325 network = bitcoin.networks.namecoin;
42326 DOM.bip44coin.val(7);
42327 },
42328 },
42329 {
42330 name: "Peercoin",
42331 onSelect: function() {
42332 network = bitcoin.networks.peercoin;
42333 DOM.bip44coin.val(6);
42334 },
42335 },
42336 {
42337 name: "Ethereum",
42338 onSelect: function() {
42339 network = bitcoin.networks.bitcoin;
42340 DOM.bip44coin.val(60);
42341 },
42342 },
42343 ]
42344
42345 init();
42346
42347 })();
42348 </script>
42349 </body>
42350 </html>